]> git.openstreetmap.org Git - rails.git/blob - vendor/assets/iD/iD.js
Vagrant: Virtualbox: increase RAM and put 2 CPUs
[rails.git] / vendor / assets / iD / iD.js
1 (function(exports) {
2
3   var bootstrap = (typeof exports.bootstrap === "object") ?
4     exports.bootstrap :
5     (exports.bootstrap = {});
6
7   bootstrap.tooltip = function() {
8
9     var tooltip = function(selection) {
10         selection.each(setup);
11       },
12       animation = d3.functor(false),
13       html = d3.functor(false),
14       title = function() {
15         var title = this.getAttribute("data-original-title");
16         if (title) {
17           return title;
18         } else {
19           title = this.getAttribute("title");
20           this.removeAttribute("title");
21           this.setAttribute("data-original-title", title);
22         }
23         return title;
24       },
25       over = "mouseenter.tooltip",
26       out = "mouseleave.tooltip",
27       placements = "top left bottom right".split(" "),
28       placement = d3.functor("top");
29
30     tooltip.title = function(_) {
31       if (arguments.length) {
32         title = d3.functor(_);
33         return tooltip;
34       } else {
35         return title;
36       }
37     };
38
39     tooltip.html = function(_) {
40       if (arguments.length) {
41         html = d3.functor(_);
42         return tooltip;
43       } else {
44         return html;
45       }
46     };
47
48     tooltip.placement = function(_) {
49       if (arguments.length) {
50         placement = d3.functor(_);
51         return tooltip;
52       } else {
53         return placement;
54       }
55     };
56
57     tooltip.show = function(selection) {
58       selection.each(show);
59     };
60
61     tooltip.hide = function(selection) {
62       selection.each(hide);
63     };
64
65     tooltip.toggle = function(selection) {
66       selection.each(toggle);
67     };
68
69     tooltip.destroy = function(selection) {
70       selection
71         .on(over, null)
72         .on(out, null)
73         .attr("title", function() {
74           return this.getAttribute("data-original-title") || this.getAttribute("title");
75         })
76         .attr("data-original-title", null)
77         .select(".tooltip")
78         .remove();
79     };
80
81     function setup() {
82       var root = d3.select(this),
83           animate = animation.apply(this, arguments),
84           tip = root.append("div")
85             .attr("class", "tooltip");
86
87       if (animate) {
88         tip.classed("fade", true);
89       }
90
91       // TODO "inside" checks?
92
93       tip.append("div")
94         .attr("class", "tooltip-arrow");
95       tip.append("div")
96         .attr("class", "tooltip-inner");
97
98       var place = placement.apply(this, arguments);
99       tip.classed(place, true);
100
101       root.on(over, show);
102       root.on(out, hide);
103     }
104
105     function show() {
106       var root = d3.select(this),
107           content = title.apply(this, arguments),
108           tip = root.select(".tooltip")
109             .classed("in", true),
110           markup = html.apply(this, arguments),
111           innercontent = tip.select(".tooltip-inner")[markup ? "html" : "text"](content),
112           place = placement.apply(this, arguments),
113           outer = getPosition(root.node()),
114           inner = getPosition(tip.node()),
115           pos;
116
117       switch (place) {
118         case "top":
119           pos = {x: outer.x + (outer.w - inner.w) / 2, y: outer.y - inner.h};
120           break;
121         case "right":
122           pos = {x: outer.x + outer.w, y: outer.y + (outer.h - inner.h) / 2};
123           break;
124         case "left":
125           pos = {x: outer.x - inner.w, y: outer.y + (outer.h - inner.h) / 2};
126           break;
127         case "bottom":
128           pos = {x: Math.max(0, outer.x + (outer.w - inner.w) / 2), y: outer.y + outer.h};
129           break;
130       }
131
132       tip.style(pos ?
133         {left: ~~pos.x + "px", top: ~~pos.y + "px"} :
134         {left: null, top: null});
135
136       this.tooltipVisible = true;
137     }
138
139     function hide() {
140       d3.select(this).select(".tooltip")
141         .classed("in", false);
142
143       this.tooltipVisible = false;
144     }
145
146     function toggle() {
147       if (this.tooltipVisible) {
148         hide.apply(this, arguments);
149       } else {
150         show.apply(this, arguments);
151       }
152     }
153
154     return tooltip;
155   };
156
157   function getPosition(node) {
158     var mode = d3.select(node).style('position');
159     if (mode === 'absolute' || mode === 'static') {
160       return {
161         x: node.offsetLeft,
162         y: node.offsetTop,
163         w: node.offsetWidth,
164         h: node.offsetHeight
165       };
166     } else {
167       return {
168         x: 0,
169         y: 0,
170         w: node.offsetWidth,
171         h: node.offsetHeight
172       };
173     }
174   }
175
176 })(this);
177 !function(){
178   var d3 = {version: "3.5.5"}; // semver
179 d3.ascending = d3_ascending;
180
181 function d3_ascending(a, b) {
182   return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
183 }
184 d3.descending = function(a, b) {
185   return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
186 };
187 d3.min = function(array, f) {
188   var i = -1,
189       n = array.length,
190       a,
191       b;
192   if (arguments.length === 1) {
193     while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
194     while (++i < n) if ((b = array[i]) != null && a > b) a = b;
195   } else {
196     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
197     while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
198   }
199   return a;
200 };
201 d3.max = function(array, f) {
202   var i = -1,
203       n = array.length,
204       a,
205       b;
206   if (arguments.length === 1) {
207     while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
208     while (++i < n) if ((b = array[i]) != null && b > a) a = b;
209   } else {
210     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
211     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
212   }
213   return a;
214 };
215 d3.extent = function(array, f) {
216   var i = -1,
217       n = array.length,
218       a,
219       b,
220       c;
221   if (arguments.length === 1) {
222     while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }
223     while (++i < n) if ((b = array[i]) != null) {
224       if (a > b) a = b;
225       if (c < b) c = b;
226     }
227   } else {
228     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = c = b; break; }
229     while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
230       if (a > b) a = b;
231       if (c < b) c = b;
232     }
233   }
234   return [a, c];
235 };
236 function d3_number(x) {
237   return x === null ? NaN : +x;
238 }
239
240 function d3_numeric(x) {
241   return !isNaN(x);
242 }
243
244 d3.sum = function(array, f) {
245   var s = 0,
246       n = array.length,
247       a,
248       i = -1;
249   if (arguments.length === 1) {
250     while (++i < n) if (d3_numeric(a = +array[i])) s += a; // zero and null are equivalent
251   } else {
252     while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
253   }
254   return s;
255 };
256
257 d3.mean = function(array, f) {
258   var s = 0,
259       n = array.length,
260       a,
261       i = -1,
262       j = n;
263   if (arguments.length === 1) {
264     while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
265   } else {
266     while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
267   }
268   if (j) return s / j;
269 };
270 // R-7 per <http://en.wikipedia.org/wiki/Quantile>
271 d3.quantile = function(values, p) {
272   var H = (values.length - 1) * p + 1,
273       h = Math.floor(H),
274       v = +values[h - 1],
275       e = H - h;
276   return e ? v + e * (values[h] - v) : v;
277 };
278
279 d3.median = function(array, f) {
280   var numbers = [],
281       n = array.length,
282       a,
283       i = -1;
284   if (arguments.length === 1) {
285     while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
286   } else {
287     while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
288   }
289   if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
290 };
291
292 d3.variance = function(array, f) {
293   var n = array.length,
294       m = 0,
295       a,
296       d,
297       s = 0,
298       i = -1,
299       j = 0;
300   if (arguments.length === 1) {
301     while (++i < n) {
302       if (d3_numeric(a = d3_number(array[i]))) {
303         d = a - m;
304         m += d / ++j;
305         s += d * (a - m);
306       }
307     }
308   } else {
309     while (++i < n) {
310       if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {
311         d = a - m;
312         m += d / ++j;
313         s += d * (a - m);
314       }
315     }
316   }
317   if (j > 1) return s / (j - 1);
318 };
319
320 d3.deviation = function() {
321   var v = d3.variance.apply(this, arguments);
322   return v ? Math.sqrt(v) : v;
323 };
324
325 function d3_bisector(compare) {
326   return {
327     left: function(a, x, lo, hi) {
328       if (arguments.length < 3) lo = 0;
329       if (arguments.length < 4) hi = a.length;
330       while (lo < hi) {
331         var mid = lo + hi >>> 1;
332         if (compare(a[mid], x) < 0) lo = mid + 1;
333         else hi = mid;
334       }
335       return lo;
336     },
337     right: function(a, x, lo, hi) {
338       if (arguments.length < 3) lo = 0;
339       if (arguments.length < 4) hi = a.length;
340       while (lo < hi) {
341         var mid = lo + hi >>> 1;
342         if (compare(a[mid], x) > 0) hi = mid;
343         else lo = mid + 1;
344       }
345       return lo;
346     }
347   };
348 }
349
350 var d3_bisect = d3_bisector(d3_ascending);
351 d3.bisectLeft = d3_bisect.left;
352 d3.bisect = d3.bisectRight = d3_bisect.right;
353
354 d3.bisector = function(f) {
355   return d3_bisector(f.length === 1
356       ? function(d, x) { return d3_ascending(f(d), x); }
357       : f);
358 };
359 d3.shuffle = function(array, i0, i1) {
360   if ((m = arguments.length) < 3) { i1 = array.length; if (m < 2) i0 = 0; }
361   var m = i1 - i0, t, i;
362   while (m) {
363     i = Math.random() * m-- | 0;
364     t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
365   }
366   return array;
367 };
368 d3.permute = function(array, indexes) {
369   var i = indexes.length, permutes = new Array(i);
370   while (i--) permutes[i] = array[indexes[i]];
371   return permutes;
372 };
373 d3.pairs = function(array) {
374   var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
375   while (i < n) pairs[i] = [p0 = p1, p1 = array[++i]];
376   return pairs;
377 };
378
379 d3.zip = function() {
380   if (!(n = arguments.length)) return [];
381   for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {
382     for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n;) {
383       zip[j] = arguments[j][i];
384     }
385   }
386   return zips;
387 };
388
389 function d3_zipLength(d) {
390   return d.length;
391 }
392
393 d3.transpose = function(matrix) {
394   return d3.zip.apply(d3, matrix);
395 };
396 d3.keys = function(map) {
397   var keys = [];
398   for (var key in map) keys.push(key);
399   return keys;
400 };
401 d3.values = function(map) {
402   var values = [];
403   for (var key in map) values.push(map[key]);
404   return values;
405 };
406 d3.entries = function(map) {
407   var entries = [];
408   for (var key in map) entries.push({key: key, value: map[key]});
409   return entries;
410 };
411 d3.merge = function(arrays) {
412   var n = arrays.length,
413       m,
414       i = -1,
415       j = 0,
416       merged,
417       array;
418
419   while (++i < n) j += arrays[i].length;
420   merged = new Array(j);
421
422   while (--n >= 0) {
423     array = arrays[n];
424     m = array.length;
425     while (--m >= 0) {
426       merged[--j] = array[m];
427     }
428   }
429
430   return merged;
431 };
432 var abs = Math.abs;
433
434 d3.range = function(start, stop, step) {
435   if (arguments.length < 3) {
436     step = 1;
437     if (arguments.length < 2) {
438       stop = start;
439       start = 0;
440     }
441   }
442   if ((stop - start) / step === Infinity) throw new Error("infinite range");
443   var range = [],
444        k = d3_range_integerScale(abs(step)),
445        i = -1,
446        j;
447   start *= k, stop *= k, step *= k;
448   if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k);
449   else while ((j = start + step * ++i) < stop) range.push(j / k);
450   return range;
451 };
452
453 function d3_range_integerScale(x) {
454   var k = 1;
455   while (x * k % 1) k *= 10;
456   return k;
457 }
458 function d3_class(ctor, properties) {
459   for (var key in properties) {
460     Object.defineProperty(ctor.prototype, key, {
461       value: properties[key],
462       enumerable: false
463     });
464   }
465 }
466
467 d3.map = function(object, f) {
468   var map = new d3_Map;
469   if (object instanceof d3_Map) {
470     object.forEach(function(key, value) { map.set(key, value); });
471   } else if (Array.isArray(object)) {
472     var i = -1,
473         n = object.length,
474         o;
475     if (arguments.length === 1) while (++i < n) map.set(i, object[i]);
476     else while (++i < n) map.set(f.call(object, o = object[i], i), o);
477   } else {
478     for (var key in object) map.set(key, object[key]);
479   }
480   return map;
481 };
482
483 function d3_Map() {
484   this._ = Object.create(null);
485 }
486
487 var d3_map_proto = "__proto__",
488     d3_map_zero = "\0";
489
490 d3_class(d3_Map, {
491   has: d3_map_has,
492   get: function(key) {
493     return this._[d3_map_escape(key)];
494   },
495   set: function(key, value) {
496     return this._[d3_map_escape(key)] = value;
497   },
498   remove: d3_map_remove,
499   keys: d3_map_keys,
500   values: function() {
501     var values = [];
502     for (var key in this._) values.push(this._[key]);
503     return values;
504   },
505   entries: function() {
506     var entries = [];
507     for (var key in this._) entries.push({key: d3_map_unescape(key), value: this._[key]});
508     return entries;
509   },
510   size: d3_map_size,
511   empty: d3_map_empty,
512   forEach: function(f) {
513     for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
514   }
515 });
516
517 function d3_map_escape(key) {
518   return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
519 }
520
521 function d3_map_unescape(key) {
522   return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
523 }
524
525 function d3_map_has(key) {
526   return d3_map_escape(key) in this._;
527 }
528
529 function d3_map_remove(key) {
530   return (key = d3_map_escape(key)) in this._ && delete this._[key];
531 }
532
533 function d3_map_keys() {
534   var keys = [];
535   for (var key in this._) keys.push(d3_map_unescape(key));
536   return keys;
537 }
538
539 function d3_map_size() {
540   var size = 0;
541   for (var key in this._) ++size;
542   return size;
543 }
544
545 function d3_map_empty() {
546   for (var key in this._) return false;
547   return true;
548 }
549
550 d3.nest = function() {
551   var nest = {},
552       keys = [],
553       sortKeys = [],
554       sortValues,
555       rollup;
556
557   function map(mapType, array, depth) {
558     if (depth >= keys.length) return rollup
559         ? rollup.call(nest, array) : (sortValues
560         ? array.sort(sortValues)
561         : array);
562
563     var i = -1,
564         n = array.length,
565         key = keys[depth++],
566         keyValue,
567         object,
568         setter,
569         valuesByKey = new d3_Map,
570         values;
571
572     while (++i < n) {
573       if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
574         values.push(object);
575       } else {
576         valuesByKey.set(keyValue, [object]);
577       }
578     }
579
580     if (mapType) {
581       object = mapType();
582       setter = function(keyValue, values) {
583         object.set(keyValue, map(mapType, values, depth));
584       };
585     } else {
586       object = {};
587       setter = function(keyValue, values) {
588         object[keyValue] = map(mapType, values, depth);
589       };
590     }
591
592     valuesByKey.forEach(setter);
593     return object;
594   }
595
596   function entries(map, depth) {
597     if (depth >= keys.length) return map;
598
599     var array = [],
600         sortKey = sortKeys[depth++];
601
602     map.forEach(function(key, keyMap) {
603       array.push({key: key, values: entries(keyMap, depth)});
604     });
605
606     return sortKey
607         ? array.sort(function(a, b) { return sortKey(a.key, b.key); })
608         : array;
609   }
610
611   nest.map = function(array, mapType) {
612     return map(mapType, array, 0);
613   };
614
615   nest.entries = function(array) {
616     return entries(map(d3.map, array, 0), 0);
617   };
618
619   nest.key = function(d) {
620     keys.push(d);
621     return nest;
622   };
623
624   // Specifies the order for the most-recently specified key.
625   // Note: only applies to entries. Map keys are unordered!
626   nest.sortKeys = function(order) {
627     sortKeys[keys.length - 1] = order;
628     return nest;
629   };
630
631   // Specifies the order for leaf values.
632   // Applies to both maps and entries array.
633   nest.sortValues = function(order) {
634     sortValues = order;
635     return nest;
636   };
637
638   nest.rollup = function(f) {
639     rollup = f;
640     return nest;
641   };
642
643   return nest;
644 };
645
646 d3.set = function(array) {
647   var set = new d3_Set;
648   if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
649   return set;
650 };
651
652 function d3_Set() {
653   this._ = Object.create(null);
654 }
655
656 d3_class(d3_Set, {
657   has: d3_map_has,
658   add: function(key) {
659     this._[d3_map_escape(key += "")] = true;
660     return key;
661   },
662   remove: d3_map_remove,
663   values: d3_map_keys,
664   size: d3_map_size,
665   empty: d3_map_empty,
666   forEach: function(f) {
667     for (var key in this._) f.call(this, d3_map_unescape(key));
668   }
669 });
670 d3.behavior = {};
671 var d3_document = this.document;
672
673 function d3_documentElement(node) {
674   return node
675       && (node.ownerDocument // node is a Node
676       || node.document // node is a Window
677       || node).documentElement; // node is a Document
678 }
679
680 function d3_window(node) {
681   return node
682       && ((node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
683         || (node.document && node) // node is a Window
684         || node.defaultView); // node is a Document
685 }
686 // Copies a variable number of methods from source to target.
687 d3.rebind = function(target, source) {
688   var i = 1, n = arguments.length, method;
689   while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
690   return target;
691 };
692
693 // Method is assumed to be a standard D3 getter-setter:
694 // If passed with no arguments, gets the value.
695 // If passed with arguments, sets the value and returns the target.
696 function d3_rebind(target, source, method) {
697   return function() {
698     var value = method.apply(source, arguments);
699     return value === source ? target : value;
700   };
701 }
702 function d3_vendorSymbol(object, name) {
703   if (name in object) return name;
704   name = name.charAt(0).toUpperCase() + name.slice(1);
705   for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
706     var prefixName = d3_vendorPrefixes[i] + name;
707     if (prefixName in object) return prefixName;
708   }
709 }
710
711 var d3_vendorPrefixes = ["webkit", "ms", "moz", "Moz", "o", "O"];
712 var d3_arraySlice = [].slice,
713     d3_array = function(list) { return d3_arraySlice.call(list); }; // conversion for NodeLists
714 function d3_noop() {}
715
716 d3.dispatch = function() {
717   var dispatch = new d3_dispatch,
718       i = -1,
719       n = arguments.length;
720   while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
721   return dispatch;
722 };
723
724 function d3_dispatch() {}
725
726 d3_dispatch.prototype.on = function(type, listener) {
727   var i = type.indexOf("."),
728       name = "";
729
730   // Extract optional namespace, e.g., "click.foo"
731   if (i >= 0) {
732     name = type.slice(i + 1);
733     type = type.slice(0, i);
734   }
735
736   if (type) return arguments.length < 2
737       ? this[type].on(name)
738       : this[type].on(name, listener);
739
740   if (arguments.length === 2) {
741     if (listener == null) for (type in this) {
742       if (this.hasOwnProperty(type)) this[type].on(name, null);
743     }
744     return this;
745   }
746 };
747
748 function d3_dispatch_event(dispatch) {
749   var listeners = [],
750       listenerByName = new d3_Map;
751
752   function event() {
753     var z = listeners, // defensive reference
754         i = -1,
755         n = z.length,
756         l;
757     while (++i < n) if (l = z[i].on) l.apply(this, arguments);
758     return dispatch;
759   }
760
761   event.on = function(name, listener) {
762     var l = listenerByName.get(name),
763         i;
764
765     // return the current listener, if any
766     if (arguments.length < 2) return l && l.on;
767
768     // remove the old listener, if any (with copy-on-write)
769     if (l) {
770       l.on = null;
771       listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
772       listenerByName.remove(name);
773     }
774
775     // add the new listener, if any
776     if (listener) listeners.push(listenerByName.set(name, {on: listener}));
777
778     return dispatch;
779   };
780
781   return event;
782 }
783
784 d3.event = null;
785
786 function d3_eventPreventDefault() {
787   d3.event.preventDefault();
788 }
789
790 function d3_eventCancel() {
791   d3.event.preventDefault();
792   d3.event.stopPropagation();
793 }
794
795 function d3_eventSource() {
796   var e = d3.event, s;
797   while (s = e.sourceEvent) e = s;
798   return e;
799 }
800
801 // Like d3.dispatch, but for custom events abstracting native UI events. These
802 // events have a target component (such as a brush), a target element (such as
803 // the svg:g element containing the brush) and the standard arguments `d` (the
804 // target element's data) and `i` (the selection index of the target element).
805 function d3_eventDispatch(target) {
806   var dispatch = new d3_dispatch,
807       i = 0,
808       n = arguments.length;
809
810   while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
811
812   // Creates a dispatch context for the specified `thiz` (typically, the target
813   // DOM element that received the source event) and `argumentz` (typically, the
814   // data `d` and index `i` of the target element). The returned function can be
815   // used to dispatch an event to any registered listeners; the function takes a
816   // single argument as input, being the event to dispatch. The event must have
817   // a "type" attribute which corresponds to a type registered in the
818   // constructor. This context will automatically populate the "sourceEvent" and
819   // "target" attributes of the event, as well as setting the `d3.event` global
820   // for the duration of the notification.
821   dispatch.of = function(thiz, argumentz) {
822     return function(e1) {
823       try {
824         var e0 =
825         e1.sourceEvent = d3.event;
826         e1.target = target;
827         d3.event = e1;
828         dispatch[e1.type].apply(thiz, argumentz);
829       } finally {
830         d3.event = e0;
831       }
832     };
833   };
834
835   return dispatch;
836 }
837 d3.requote = function(s) {
838   return s.replace(d3_requote_re, "\\$&");
839 };
840
841 var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
842 var d3_subclass = {}.__proto__?
843
844 // Until ECMAScript supports array subclassing, prototype injection works well.
845 function(object, prototype) {
846   object.__proto__ = prototype;
847 }:
848
849 // And if your browser doesn't support __proto__, we'll use direct extension.
850 function(object, prototype) {
851   for (var property in prototype) object[property] = prototype[property];
852 };
853
854 function d3_selection(groups) {
855   d3_subclass(groups, d3_selectionPrototype);
856   return groups;
857 }
858
859 var d3_select = function(s, n) { return n.querySelector(s); },
860     d3_selectAll = function(s, n) { return n.querySelectorAll(s); },
861     d3_selectMatches = function(n, s) {
862       var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, "matchesSelector")];
863       d3_selectMatches = function(n, s) {
864         return d3_selectMatcher.call(n, s);
865       };
866       return d3_selectMatches(n, s);
867     };
868
869 // Prefer Sizzle, if available.
870 if (typeof Sizzle === "function") {
871   d3_select = function(s, n) { return Sizzle(s, n)[0] || null; };
872   d3_selectAll = Sizzle;
873   d3_selectMatches = Sizzle.matchesSelector;
874 }
875
876 d3.selection = function() {
877   return d3.select(d3_document.documentElement);
878 };
879
880 var d3_selectionPrototype = d3.selection.prototype = [];
881
882
883 d3_selectionPrototype.select = function(selector) {
884   var subgroups = [],
885       subgroup,
886       subnode,
887       group,
888       node;
889
890   selector = d3_selection_selector(selector);
891
892   for (var j = -1, m = this.length; ++j < m;) {
893     subgroups.push(subgroup = []);
894     subgroup.parentNode = (group = this[j]).parentNode;
895     for (var i = -1, n = group.length; ++i < n;) {
896       if (node = group[i]) {
897         subgroup.push(subnode = selector.call(node, node.__data__, i, j));
898         if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
899       } else {
900         subgroup.push(null);
901       }
902     }
903   }
904
905   return d3_selection(subgroups);
906 };
907
908 function d3_selection_selector(selector) {
909   return typeof selector === "function" ? selector : function() {
910     return d3_select(selector, this);
911   };
912 }
913
914 d3_selectionPrototype.selectAll = function(selector) {
915   var subgroups = [],
916       subgroup,
917       node;
918
919   selector = d3_selection_selectorAll(selector);
920
921   for (var j = -1, m = this.length; ++j < m;) {
922     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
923       if (node = group[i]) {
924         subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
925         subgroup.parentNode = node;
926       }
927     }
928   }
929
930   return d3_selection(subgroups);
931 };
932
933 function d3_selection_selectorAll(selector) {
934   return typeof selector === "function" ? selector : function() {
935     return d3_selectAll(selector, this);
936   };
937 }
938 var d3_nsPrefix = {
939   svg: "http://www.w3.org/2000/svg",
940   xhtml: "http://www.w3.org/1999/xhtml",
941   xlink: "http://www.w3.org/1999/xlink",
942   xml: "http://www.w3.org/XML/1998/namespace",
943   xmlns: "http://www.w3.org/2000/xmlns/"
944 };
945
946 d3.ns = {
947   prefix: d3_nsPrefix,
948   qualify: function(name) {
949     var i = name.indexOf(":"),
950         prefix = name;
951     if (i >= 0) {
952       prefix = name.slice(0, i);
953       name = name.slice(i + 1);
954     }
955     return d3_nsPrefix.hasOwnProperty(prefix)
956         ? {space: d3_nsPrefix[prefix], local: name}
957         : name;
958   }
959 };
960
961 d3_selectionPrototype.attr = function(name, value) {
962   if (arguments.length < 2) {
963
964     // For attr(string), return the attribute value for the first node.
965     if (typeof name === "string") {
966       var node = this.node();
967       name = d3.ns.qualify(name);
968       return name.local
969           ? node.getAttributeNS(name.space, name.local)
970           : node.getAttribute(name);
971     }
972
973     // For attr(object), the object specifies the names and values of the
974     // attributes to set or remove. The values may be functions that are
975     // evaluated for each element.
976     for (value in name) this.each(d3_selection_attr(value, name[value]));
977     return this;
978   }
979
980   return this.each(d3_selection_attr(name, value));
981 };
982
983 function d3_selection_attr(name, value) {
984   name = d3.ns.qualify(name);
985
986   // For attr(string, null), remove the attribute with the specified name.
987   function attrNull() {
988     this.removeAttribute(name);
989   }
990   function attrNullNS() {
991     this.removeAttributeNS(name.space, name.local);
992   }
993
994   // For attr(string, string), set the attribute with the specified name.
995   function attrConstant() {
996     this.setAttribute(name, value);
997   }
998   function attrConstantNS() {
999     this.setAttributeNS(name.space, name.local, value);
1000   }
1001
1002   // For attr(string, function), evaluate the function for each element, and set
1003   // or remove the attribute as appropriate.
1004   function attrFunction() {
1005     var x = value.apply(this, arguments);
1006     if (x == null) this.removeAttribute(name);
1007     else this.setAttribute(name, x);
1008   }
1009   function attrFunctionNS() {
1010     var x = value.apply(this, arguments);
1011     if (x == null) this.removeAttributeNS(name.space, name.local);
1012     else this.setAttributeNS(name.space, name.local, x);
1013   }
1014
1015   return value == null
1016       ? (name.local ? attrNullNS : attrNull) : (typeof value === "function"
1017       ? (name.local ? attrFunctionNS : attrFunction)
1018       : (name.local ? attrConstantNS : attrConstant));
1019 }
1020 function d3_collapse(s) {
1021   return s.trim().replace(/\s+/g, " ");
1022 }
1023
1024 d3_selectionPrototype.classed = function(name, value) {
1025   if (arguments.length < 2) {
1026
1027     // For classed(string), return true only if the first node has the specified
1028     // class or classes. Note that even if the browser supports DOMTokenList, it
1029     // probably doesn't support it on SVG elements (which can be animated).
1030     if (typeof name === "string") {
1031       var node = this.node(),
1032           n = (name = d3_selection_classes(name)).length,
1033           i = -1;
1034       if (value = node.classList) {
1035         while (++i < n) if (!value.contains(name[i])) return false;
1036       } else {
1037         value = node.getAttribute("class");
1038         while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
1039       }
1040       return true;
1041     }
1042
1043     // For classed(object), the object specifies the names of classes to add or
1044     // remove. The values may be functions that are evaluated for each element.
1045     for (value in name) this.each(d3_selection_classed(value, name[value]));
1046     return this;
1047   }
1048
1049   // Otherwise, both a name and a value are specified, and are handled as below.
1050   return this.each(d3_selection_classed(name, value));
1051 };
1052
1053 function d3_selection_classedRe(name) {
1054   return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
1055 }
1056
1057 function d3_selection_classes(name) {
1058   return (name + "").trim().split(/^|\s+/);
1059 }
1060
1061 // Multiple class names are allowed (e.g., "foo bar").
1062 function d3_selection_classed(name, value) {
1063   name = d3_selection_classes(name).map(d3_selection_classedName);
1064   var n = name.length;
1065
1066   function classedConstant() {
1067     var i = -1;
1068     while (++i < n) name[i](this, value);
1069   }
1070
1071   // When the value is a function, the function is still evaluated only once per
1072   // element even if there are multiple class names.
1073   function classedFunction() {
1074     var i = -1, x = value.apply(this, arguments);
1075     while (++i < n) name[i](this, x);
1076   }
1077
1078   return typeof value === "function"
1079       ? classedFunction
1080       : classedConstant;
1081 }
1082
1083 function d3_selection_classedName(name) {
1084   var re = d3_selection_classedRe(name);
1085   return function(node, value) {
1086     if (c = node.classList) return value ? c.add(name) : c.remove(name);
1087     var c = node.getAttribute("class") || "";
1088     if (value) {
1089       re.lastIndex = 0;
1090       if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
1091     } else {
1092       node.setAttribute("class", d3_collapse(c.replace(re, " ")));
1093     }
1094   };
1095 }
1096
1097 d3_selectionPrototype.style = function(name, value, priority) {
1098   var n = arguments.length;
1099   if (n < 3) {
1100
1101     // For style(object) or style(object, string), the object specifies the
1102     // names and values of the attributes to set or remove. The values may be
1103     // functions that are evaluated for each element. The optional string
1104     // specifies the priority.
1105     if (typeof name !== "string") {
1106       if (n < 2) value = "";
1107       for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
1108       return this;
1109     }
1110
1111     // For style(string), return the computed style value for the first node.
1112     if (n < 2) {
1113       var node = this.node();
1114       return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);
1115     }
1116
1117     // For style(string, string) or style(string, function), use the default
1118     // priority. The priority is ignored for style(string, null).
1119     priority = "";
1120   }
1121
1122   // Otherwise, a name, value and priority are specified, and handled as below.
1123   return this.each(d3_selection_style(name, value, priority));
1124 };
1125
1126 function d3_selection_style(name, value, priority) {
1127
1128   // For style(name, null) or style(name, null, priority), remove the style
1129   // property with the specified name. The priority is ignored.
1130   function styleNull() {
1131     this.style.removeProperty(name);
1132   }
1133
1134   // For style(name, string) or style(name, string, priority), set the style
1135   // property with the specified name, using the specified priority.
1136   function styleConstant() {
1137     this.style.setProperty(name, value, priority);
1138   }
1139
1140   // For style(name, function) or style(name, function, priority), evaluate the
1141   // function for each element, and set or remove the style property as
1142   // appropriate. When setting, use the specified priority.
1143   function styleFunction() {
1144     var x = value.apply(this, arguments);
1145     if (x == null) this.style.removeProperty(name);
1146     else this.style.setProperty(name, x, priority);
1147   }
1148
1149   return value == null
1150       ? styleNull : (typeof value === "function"
1151       ? styleFunction : styleConstant);
1152 }
1153
1154 d3_selectionPrototype.property = function(name, value) {
1155   if (arguments.length < 2) {
1156
1157     // For property(string), return the property value for the first node.
1158     if (typeof name === "string") return this.node()[name];
1159
1160     // For property(object), the object specifies the names and values of the
1161     // properties to set or remove. The values may be functions that are
1162     // evaluated for each element.
1163     for (value in name) this.each(d3_selection_property(value, name[value]));
1164     return this;
1165   }
1166
1167   // Otherwise, both a name and a value are specified, and are handled as below.
1168   return this.each(d3_selection_property(name, value));
1169 };
1170
1171 function d3_selection_property(name, value) {
1172
1173   // For property(name, null), remove the property with the specified name.
1174   function propertyNull() {
1175     delete this[name];
1176   }
1177
1178   // For property(name, string), set the property with the specified name.
1179   function propertyConstant() {
1180     this[name] = value;
1181   }
1182
1183   // For property(name, function), evaluate the function for each element, and
1184   // set or remove the property as appropriate.
1185   function propertyFunction() {
1186     var x = value.apply(this, arguments);
1187     if (x == null) delete this[name];
1188     else this[name] = x;
1189   }
1190
1191   return value == null
1192       ? propertyNull : (typeof value === "function"
1193       ? propertyFunction : propertyConstant);
1194 }
1195
1196 d3_selectionPrototype.text = function(value) {
1197   return arguments.length
1198       ? this.each(typeof value === "function"
1199       ? function() { var v = value.apply(this, arguments); this.textContent = v == null ? "" : v; } : value == null
1200       ? function() { if (this.textContent !== "") this.textContent = ""; }
1201       : function() { if (this.textContent !== value) this.textContent = value; })
1202       : this.node().textContent;
1203 };
1204
1205 d3_selectionPrototype.html = function(value) {
1206   return arguments.length
1207       ? this.each(typeof value === "function"
1208       ? function() { var v = value.apply(this, arguments); this.innerHTML = v == null ? "" : v; } : value == null
1209       ? function() { this.innerHTML = ""; }
1210       : function() { this.innerHTML = value; })
1211       : this.node().innerHTML;
1212 };
1213
1214 d3_selectionPrototype.append = function(name) {
1215   name = d3_selection_creator(name);
1216   return this.select(function() {
1217     return this.appendChild(name.apply(this, arguments));
1218   });
1219 };
1220
1221 function d3_selection_creator(name) {
1222
1223   function create() {
1224     var document = this.ownerDocument,
1225         namespace = this.namespaceURI;
1226     return namespace
1227         ? document.createElementNS(namespace, name)
1228         : document.createElement(name);
1229   }
1230
1231   function createNS() {
1232     return this.ownerDocument.createElementNS(name.space, name.local);
1233   }
1234
1235   return typeof name === "function" ? name
1236       : (name = d3.ns.qualify(name)).local ? createNS
1237       : create;
1238 }
1239
1240 d3_selectionPrototype.insert = function(name, before) {
1241   name = d3_selection_creator(name);
1242   before = d3_selection_selector(before);
1243   return this.select(function() {
1244     return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
1245   });
1246 };
1247
1248 // TODO remove(selector)?
1249 // TODO remove(node)?
1250 // TODO remove(function)?
1251 d3_selectionPrototype.remove = function() {
1252   return this.each(d3_selectionRemove);
1253 };
1254
1255 function d3_selectionRemove() {
1256   var parent = this.parentNode;
1257   if (parent) parent.removeChild(this);
1258 }
1259
1260 d3_selectionPrototype.data = function(value, key) {
1261   var i = -1,
1262       n = this.length,
1263       group,
1264       node;
1265
1266   // If no value is specified, return the first value.
1267   if (!arguments.length) {
1268     value = new Array(n = (group = this[0]).length);
1269     while (++i < n) {
1270       if (node = group[i]) {
1271         value[i] = node.__data__;
1272       }
1273     }
1274     return value;
1275   }
1276
1277   function bind(group, groupData) {
1278     var i,
1279         n = group.length,
1280         m = groupData.length,
1281         n0 = Math.min(n, m),
1282         updateNodes = new Array(m),
1283         enterNodes = new Array(m),
1284         exitNodes = new Array(n),
1285         node,
1286         nodeData;
1287
1288     if (key) {
1289       var nodeByKeyValue = new d3_Map,
1290           keyValues = new Array(n),
1291           keyValue;
1292
1293       for (i = -1; ++i < n;) {
1294         if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
1295           exitNodes[i] = node; // duplicate selection key
1296         } else {
1297           nodeByKeyValue.set(keyValue, node);
1298         }
1299         keyValues[i] = keyValue;
1300       }
1301
1302       for (i = -1; ++i < m;) {
1303         if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
1304           enterNodes[i] = d3_selection_dataNode(nodeData);
1305         } else if (node !== true) { // no duplicate data key
1306           updateNodes[i] = node;
1307           node.__data__ = nodeData;
1308         }
1309         nodeByKeyValue.set(keyValue, true);
1310       }
1311
1312       for (i = -1; ++i < n;) {
1313         if (nodeByKeyValue.get(keyValues[i]) !== true) {
1314           exitNodes[i] = group[i];
1315         }
1316       }
1317     } else {
1318       for (i = -1; ++i < n0;) {
1319         node = group[i];
1320         nodeData = groupData[i];
1321         if (node) {
1322           node.__data__ = nodeData;
1323           updateNodes[i] = node;
1324         } else {
1325           enterNodes[i] = d3_selection_dataNode(nodeData);
1326         }
1327       }
1328       for (; i < m; ++i) {
1329         enterNodes[i] = d3_selection_dataNode(groupData[i]);
1330       }
1331       for (; i < n; ++i) {
1332         exitNodes[i] = group[i];
1333       }
1334     }
1335
1336     enterNodes.update
1337         = updateNodes;
1338
1339     enterNodes.parentNode
1340         = updateNodes.parentNode
1341         = exitNodes.parentNode
1342         = group.parentNode;
1343
1344     enter.push(enterNodes);
1345     update.push(updateNodes);
1346     exit.push(exitNodes);
1347   }
1348
1349   var enter = d3_selection_enter([]),
1350       update = d3_selection([]),
1351       exit = d3_selection([]);
1352
1353   if (typeof value === "function") {
1354     while (++i < n) {
1355       bind(group = this[i], value.call(group, group.parentNode.__data__, i));
1356     }
1357   } else {
1358     while (++i < n) {
1359       bind(group = this[i], value);
1360     }
1361   }
1362
1363   update.enter = function() { return enter; };
1364   update.exit = function() { return exit; };
1365   return update;
1366 };
1367
1368 function d3_selection_dataNode(data) {
1369   return {__data__: data};
1370 }
1371
1372 d3_selectionPrototype.datum = function(value) {
1373   return arguments.length
1374       ? this.property("__data__", value)
1375       : this.property("__data__");
1376 };
1377
1378 d3_selectionPrototype.filter = function(filter) {
1379   var subgroups = [],
1380       subgroup,
1381       group,
1382       node;
1383
1384   if (typeof filter !== "function") filter = d3_selection_filter(filter);
1385
1386   for (var j = 0, m = this.length; j < m; j++) {
1387     subgroups.push(subgroup = []);
1388     subgroup.parentNode = (group = this[j]).parentNode;
1389     for (var i = 0, n = group.length; i < n; i++) {
1390       if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
1391         subgroup.push(node);
1392       }
1393     }
1394   }
1395
1396   return d3_selection(subgroups);
1397 };
1398
1399 function d3_selection_filter(selector) {
1400   return function() {
1401     return d3_selectMatches(this, selector);
1402   };
1403 }
1404
1405 d3_selectionPrototype.order = function() {
1406   for (var j = -1, m = this.length; ++j < m;) {
1407     for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
1408       if (node = group[i]) {
1409         if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
1410         next = node;
1411       }
1412     }
1413   }
1414   return this;
1415 };
1416
1417 d3_selectionPrototype.sort = function(comparator) {
1418   comparator = d3_selection_sortComparator.apply(this, arguments);
1419   for (var j = -1, m = this.length; ++j < m;) this[j].sort(comparator);
1420   return this.order();
1421 };
1422
1423 function d3_selection_sortComparator(comparator) {
1424   if (!arguments.length) comparator = d3_ascending;
1425   return function(a, b) {
1426     return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
1427   };
1428 }
1429
1430 d3_selectionPrototype.each = function(callback) {
1431   return d3_selection_each(this, function(node, i, j) {
1432     callback.call(node, node.__data__, i, j);
1433   });
1434 };
1435
1436 function d3_selection_each(groups, callback) {
1437   for (var j = 0, m = groups.length; j < m; j++) {
1438     for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
1439       if (node = group[i]) callback(node, i, j);
1440     }
1441   }
1442   return groups;
1443 }
1444
1445 d3_selectionPrototype.call = function(callback) {
1446   var args = d3_array(arguments);
1447   callback.apply(args[0] = this, args);
1448   return this;
1449 };
1450
1451 d3_selectionPrototype.empty = function() {
1452   return !this.node();
1453 };
1454
1455 d3_selectionPrototype.node = function() {
1456   for (var j = 0, m = this.length; j < m; j++) {
1457     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
1458       var node = group[i];
1459       if (node) return node;
1460     }
1461   }
1462   return null;
1463 };
1464
1465 d3_selectionPrototype.size = function() {
1466   var n = 0;
1467   d3_selection_each(this, function() { ++n; });
1468   return n;
1469 };
1470
1471 function d3_selection_enter(selection) {
1472   d3_subclass(selection, d3_selection_enterPrototype);
1473   return selection;
1474 }
1475
1476 var d3_selection_enterPrototype = [];
1477
1478 d3.selection.enter = d3_selection_enter;
1479 d3.selection.enter.prototype = d3_selection_enterPrototype;
1480
1481 d3_selection_enterPrototype.append = d3_selectionPrototype.append;
1482 d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
1483 d3_selection_enterPrototype.node = d3_selectionPrototype.node;
1484 d3_selection_enterPrototype.call = d3_selectionPrototype.call;
1485 d3_selection_enterPrototype.size = d3_selectionPrototype.size;
1486
1487
1488 d3_selection_enterPrototype.select = function(selector) {
1489   var subgroups = [],
1490       subgroup,
1491       subnode,
1492       upgroup,
1493       group,
1494       node;
1495
1496   for (var j = -1, m = this.length; ++j < m;) {
1497     upgroup = (group = this[j]).update;
1498     subgroups.push(subgroup = []);
1499     subgroup.parentNode = group.parentNode;
1500     for (var i = -1, n = group.length; ++i < n;) {
1501       if (node = group[i]) {
1502         subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));
1503         subnode.__data__ = node.__data__;
1504       } else {
1505         subgroup.push(null);
1506       }
1507     }
1508   }
1509
1510   return d3_selection(subgroups);
1511 };
1512
1513 d3_selection_enterPrototype.insert = function(name, before) {
1514   if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);
1515   return d3_selectionPrototype.insert.call(this, name, before);
1516 };
1517
1518 function d3_selection_enterInsertBefore(enter) {
1519   var i0, j0;
1520   return function(d, i, j) {
1521     var group = enter[j].update,
1522         n = group.length,
1523         node;
1524     if (j != j0) j0 = j, i0 = 0;
1525     if (i >= i0) i0 = i + 1;
1526     while (!(node = group[i0]) && ++i0 < n);
1527     return node;
1528   };
1529 }
1530
1531 // TODO fast singleton implementation?
1532 d3.select = function(node) {
1533   var group;
1534   if (typeof node === "string") {
1535     group = [d3_select(node, d3_document)];
1536     group.parentNode = d3_document.documentElement;
1537   } else {
1538     group = [node];
1539     group.parentNode = d3_documentElement(node);
1540   }
1541   return d3_selection([group]);
1542 };
1543
1544 d3.selectAll = function(nodes) {
1545   var group;
1546   if (typeof nodes === "string") {
1547     group = d3_array(d3_selectAll(nodes, d3_document));
1548     group.parentNode = d3_document.documentElement;
1549   } else {
1550     group = nodes;
1551     group.parentNode = null;
1552   }
1553   return d3_selection([group]);
1554 };
1555
1556 d3_selectionPrototype.on = function(type, listener, capture) {
1557   var n = arguments.length;
1558   if (n < 3) {
1559
1560     // For on(object) or on(object, boolean), the object specifies the event
1561     // types and listeners to add or remove. The optional boolean specifies
1562     // whether the listener captures events.
1563     if (typeof type !== "string") {
1564       if (n < 2) listener = false;
1565       for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
1566       return this;
1567     }
1568
1569     // For on(string), return the listener for the first node.
1570     if (n < 2) return (n = this.node()["__on" + type]) && n._;
1571
1572     // For on(string, function), use the default capture.
1573     capture = false;
1574   }
1575
1576   // Otherwise, a type, listener and capture are specified, and handled as below.
1577   return this.each(d3_selection_on(type, listener, capture));
1578 };
1579
1580 function d3_selection_on(type, listener, capture) {
1581   var name = "__on" + type,
1582       i = type.indexOf("."),
1583       wrap = d3_selection_onListener;
1584
1585   if (i > 0) type = type.slice(0, i);
1586   var filter = d3_selection_onFilters.get(type);
1587   if (filter) type = filter, wrap = d3_selection_onFilter;
1588
1589   function onRemove() {
1590     var l = this[name];
1591     if (l) {
1592       this.removeEventListener(type, l, l.$);
1593       delete this[name];
1594     }
1595   }
1596
1597   function onAdd() {
1598     var l = wrap(listener, d3_array(arguments));
1599     if (typeof Raven !== 'undefined') l = Raven.wrap(l);
1600     onRemove.call(this);
1601     this.addEventListener(type, this[name] = l, l.$ = capture);
1602     l._ = listener;
1603   }
1604
1605   function removeAll() {
1606     var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"),
1607         match;
1608     for (var name in this) {
1609       if (match = name.match(re)) {
1610         var l = this[name];
1611         this.removeEventListener(match[1], l, l.$);
1612         delete this[name];
1613       }
1614     }
1615   }
1616
1617   return i
1618       ? listener ? onAdd : onRemove
1619       : listener ? d3_noop : removeAll;
1620 }
1621
1622 var d3_selection_onFilters = d3.map({
1623   mouseenter: "mouseover",
1624   mouseleave: "mouseout"
1625 });
1626
1627 if (d3_document) {
1628   d3_selection_onFilters.forEach(function(k) {
1629     if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
1630   });
1631 }
1632
1633 function d3_selection_onListener(listener, argumentz) {
1634   return function(e) {
1635     var o = d3.event; // Events can be reentrant (e.g., focus).
1636     d3.event = e;
1637     argumentz[0] = this.__data__;
1638     try {
1639       listener.apply(this, argumentz);
1640     } finally {
1641       d3.event = o;
1642     }
1643   };
1644 }
1645
1646 function d3_selection_onFilter(listener, argumentz) {
1647   var l = d3_selection_onListener(listener, argumentz);
1648   return function(e) {
1649     var target = this, related = e.relatedTarget;
1650     if (!related || (related !== target && !(related.compareDocumentPosition(target) & 8))) {
1651       l.call(target, e);
1652     }
1653   };
1654 }
1655
1656 var d3_event_dragSelect,
1657     d3_event_dragId = 0;
1658
1659 function d3_event_dragSuppress(node) {
1660   var name = ".dragsuppress-" + ++d3_event_dragId,
1661       click = "click" + name,
1662       w = d3.select(d3_window(node))
1663           .on("touchmove" + name, d3_eventPreventDefault)
1664           .on("dragstart" + name, d3_eventPreventDefault)
1665           .on("selectstart" + name, d3_eventPreventDefault);
1666
1667   if (d3_event_dragSelect == null) {
1668     d3_event_dragSelect = "onselectstart" in node ? false
1669         : d3_vendorSymbol(node.style, "userSelect");
1670   }
1671
1672   if (d3_event_dragSelect) {
1673     var style = d3_documentElement(node).style,
1674         select = style[d3_event_dragSelect];
1675     style[d3_event_dragSelect] = "none";
1676   }
1677
1678   return function(suppressClick) {
1679     w.on(name, null);
1680     if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
1681     if (suppressClick) { // suppress the next click, but only if it’s immediate
1682       var off = function() { w.on(click, null); };
1683       w.on(click, function() { d3_eventCancel(); off(); }, true);
1684       setTimeout(off, 0);
1685     }
1686   };
1687 }
1688
1689 d3.mouse = function(container) {
1690   return d3_mousePoint(container, d3_eventSource());
1691 };
1692
1693 // https://bugs.webkit.org/show_bug.cgi?id=44083
1694 var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
1695
1696 function d3_mousePoint(container, e) {
1697   if (e.changedTouches) e = e.changedTouches[0];
1698   var svg = container.ownerSVGElement || container;
1699   if (svg.createSVGPoint) {
1700     var point = svg.createSVGPoint();
1701     if (d3_mouse_bug44083 < 0) {
1702       var window = d3_window(container);
1703       if (window.scrollX || window.scrollY) {
1704         svg = d3.select("body").append("svg").style({
1705           position: "absolute",
1706           top: 0,
1707           left: 0,
1708           margin: 0,
1709           padding: 0,
1710           border: "none"
1711         }, "important");
1712         var ctm = svg[0][0].getScreenCTM();
1713         d3_mouse_bug44083 = !(ctm.f || ctm.e);
1714         svg.remove();
1715       }
1716     }
1717     if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;
1718     else point.x = e.clientX, point.y = e.clientY;
1719     point = point.matrixTransform(container.getScreenCTM().inverse());
1720     return [point.x, point.y];
1721   }
1722   var rect = container.getBoundingClientRect();
1723   return [e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop];
1724 };
1725
1726 d3.touches = function(container, touches) {
1727   if (arguments.length < 2) touches = d3_eventSource().touches;
1728   return touches ? d3_array(touches).map(function(touch) {
1729     var point = d3_mousePoint(container, touch);
1730     point.identifier = touch.identifier;
1731     return point;
1732   }) : [];
1733 };
1734 var ε = 1e-6,
1735     ε2 = ε * ε,
1736     π = Math.PI,
1737     τ = 2 * π,
1738     τε = τ - ε,
1739     halfπ = π / 2,
1740     d3_radians = π / 180,
1741     d3_degrees = 180 / π;
1742
1743 function d3_sgn(x) {
1744   return x > 0 ? 1 : x < 0 ? -1 : 0;
1745 }
1746
1747 // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
1748 // the 3D cross product in a quadrant I Cartesian coordinate system (+x is
1749 // right, +y is up). Returns a positive value if ABC is counter-clockwise,
1750 // negative if clockwise, and zero if the points are collinear.
1751 function d3_cross2d(a, b, c) {
1752   return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
1753 }
1754
1755 function d3_acos(x) {
1756   return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
1757 }
1758
1759 function d3_asin(x) {
1760   return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);
1761 }
1762
1763 function d3_sinh(x) {
1764   return ((x = Math.exp(x)) - 1 / x) / 2;
1765 }
1766
1767 function d3_cosh(x) {
1768   return ((x = Math.exp(x)) + 1 / x) / 2;
1769 }
1770
1771 function d3_tanh(x) {
1772   return ((x = Math.exp(2 * x)) - 1) / (x + 1);
1773 }
1774
1775 function d3_haversin(x) {
1776   return (x = Math.sin(x / 2)) * x;
1777 }
1778
1779 var ρ = Math.SQRT2,
1780     ρ2 = 2,
1781     ρ4 = 4;
1782
1783 // p0 = [ux0, uy0, w0]
1784 // p1 = [ux1, uy1, w1]
1785 d3.interpolateZoom = function(p0, p1) {
1786   var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
1787       ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
1788
1789   var dx = ux1 - ux0,
1790       dy = uy1 - uy0,
1791       d2 = dx * dx + dy * dy,
1792       d1 = Math.sqrt(d2),
1793       b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1),
1794       b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1),
1795       r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
1796       r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1),
1797       dr = r1 - r0,
1798       S = (dr || Math.log(w1 / w0)) / ρ;
1799
1800   function interpolate(t) {
1801     var s = t * S;
1802     if (dr) {
1803       // General case.
1804       var coshr0 = d3_cosh(r0),
1805           u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
1806       return [
1807         ux0 + u * dx,
1808         uy0 + u * dy,
1809         w0 * coshr0 / d3_cosh(ρ * s + r0)
1810       ];
1811     }
1812     // Special case for u0 ~= u1.
1813     return [
1814       ux0 + t * dx,
1815       uy0 + t * dy,
1816       w0 * Math.exp(ρ * s)
1817     ];
1818   }
1819
1820   interpolate.duration = S * 1000;
1821
1822   return interpolate;
1823 };
1824
1825 d3.behavior.zoom = function() {
1826   var view = {x: 0, y: 0, k: 1},
1827       translate0, // translate when we started zooming (to avoid drift)
1828       center0, // implicit desired position of translate0 after zooming
1829       center, // explicit desired position of translate0 after zooming
1830       size = [960, 500], // viewport size; required for zoom interpolation
1831       scaleExtent = d3_behavior_zoomInfinity,
1832       duration = 250,
1833       zooming = 0,
1834       mousedown = "mousedown.zoom",
1835       mousemove = "mousemove.zoom",
1836       mouseup = "mouseup.zoom",
1837       mousewheelTimer,
1838       touchstart = "touchstart.zoom",
1839       touchtime, // time of last touchstart (to detect double-tap)
1840       event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"),
1841       x0,
1842       x1,
1843       y0,
1844       y1;
1845
1846   // Lazily determine the DOM’s support for Wheel events.
1847   // https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel
1848   if (!d3_behavior_zoomWheel) {
1849     d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); }, "wheel")
1850         : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { return d3.event.wheelDelta; }, "mousewheel")
1851         : (d3_behavior_zoomDelta = function() { return -d3.event.detail; }, "MozMousePixelScroll");
1852   }
1853
1854   function zoom(g) {
1855     g   .on(mousedown, mousedowned)
1856         .on(d3_behavior_zoomWheel + ".zoom", mousewheeled)
1857         .on("dblclick.zoom", dblclicked)
1858         .on(touchstart, touchstarted);
1859   }
1860
1861   zoom.event = function(g) {
1862     g.each(function() {
1863       var dispatch = event.of(this, arguments),
1864           view1 = view;
1865       if (d3_transitionInheritId) {
1866         d3.select(this).transition()
1867             .each("start.zoom", function() {
1868               view = this.__chart__ || {x: 0, y: 0, k: 1}; // pre-transition state
1869               zoomstarted(dispatch);
1870             })
1871             .tween("zoom:zoom", function() {
1872               var dx = size[0],
1873                   dy = size[1],
1874                   cx = center0 ? center0[0] : dx / 2,
1875                   cy = center0 ? center0[1] : dy / 2,
1876                   i = d3.interpolateZoom(
1877                     [(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k],
1878                     [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]
1879                   );
1880               return function(t) {
1881                 var l = i(t), k = dx / l[2];
1882                 this.__chart__ = view = {x: cx - l[0] * k, y: cy - l[1] * k, k: k};
1883                 zoomed(dispatch);
1884               };
1885             })
1886             .each("interrupt.zoom", function() {
1887               zoomended(dispatch);
1888             })
1889             .each("end.zoom", function() {
1890               zoomended(dispatch);
1891             });
1892       } else {
1893         this.__chart__ = view;
1894         zoomstarted(dispatch);
1895         zoomed(dispatch);
1896         zoomended(dispatch);
1897       }
1898     });
1899   }
1900
1901   zoom.translate = function(_) {
1902     if (!arguments.length) return [view.x, view.y];
1903     view = {x: +_[0], y: +_[1], k: view.k}; // copy-on-write
1904     rescale();
1905     return zoom;
1906   };
1907
1908   zoom.scale = function(_) {
1909     if (!arguments.length) return view.k;
1910     view = {x: view.x, y: view.y, k: +_}; // copy-on-write
1911     rescale();
1912     return zoom;
1913   };
1914
1915   zoom.scaleExtent = function(_) {
1916     if (!arguments.length) return scaleExtent;
1917     scaleExtent = _ == null ? d3_behavior_zoomInfinity : [+_[0], +_[1]];
1918     return zoom;
1919   };
1920
1921   zoom.center = function(_) {
1922     if (!arguments.length) return center;
1923     center = _ && [+_[0], +_[1]];
1924     return zoom;
1925   };
1926
1927   zoom.size = function(_) {
1928     if (!arguments.length) return size;
1929     size = _ && [+_[0], +_[1]];
1930     return zoom;
1931   };
1932
1933   zoom.duration = function(_) {
1934     if (!arguments.length) return duration;
1935     duration = +_; // TODO function based on interpolateZoom distance?
1936     return zoom;
1937   };
1938
1939   zoom.x = function(z) {
1940     if (!arguments.length) return x1;
1941     x1 = z;
1942     x0 = z.copy();
1943     view = {x: 0, y: 0, k: 1}; // copy-on-write
1944     return zoom;
1945   };
1946
1947   zoom.y = function(z) {
1948     if (!arguments.length) return y1;
1949     y1 = z;
1950     y0 = z.copy();
1951     view = {x: 0, y: 0, k: 1}; // copy-on-write
1952     return zoom;
1953   };
1954
1955   function location(p) {
1956     return [(p[0] - view.x) / view.k, (p[1] - view.y) / view.k];
1957   }
1958
1959   function point(l) {
1960     return [l[0] * view.k + view.x, l[1] * view.k + view.y];
1961   }
1962
1963   function scaleTo(s) {
1964     view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
1965   }
1966
1967   function translateTo(p, l) {
1968     l = point(l);
1969     view.x += p[0] - l[0];
1970     view.y += p[1] - l[1];
1971   }
1972
1973   function zoomTo(that, p, l, k) {
1974     that.__chart__ = {x: view.x, y: view.y, k: view.k};
1975
1976     scaleTo(Math.pow(2, k));
1977     translateTo(center0 = p, l);
1978
1979     that = d3.select(that);
1980     if (duration > 0) that = that.transition().duration(duration);
1981     that.call(zoom.event);
1982   }
1983
1984   function rescale() {
1985     if (x1) x1.domain(x0.range().map(function(x) { return (x - view.x) / view.k; }).map(x0.invert));
1986     if (y1) y1.domain(y0.range().map(function(y) { return (y - view.y) / view.k; }).map(y0.invert));
1987   }
1988
1989   function zoomstarted(dispatch) {
1990     if (!zooming++) dispatch({type: "zoomstart"});
1991   }
1992
1993   function zoomed(dispatch) {
1994     rescale();
1995     dispatch({type: "zoom", scale: view.k, translate: [view.x, view.y]});
1996   }
1997
1998   function zoomended(dispatch) {
1999     if (!--zooming) dispatch({type: "zoomend"});
2000     center0 = null;
2001   }
2002
2003   function mousedowned() {
2004     var that = this,
2005         target = d3.event.target,
2006         dispatch = event.of(that, arguments),
2007         dragged = 0,
2008         subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended),
2009         location0 = location(d3.mouse(that)),
2010         dragRestore = d3_event_dragSuppress(that);
2011
2012     d3_selection_interrupt.call(that);
2013     zoomstarted(dispatch);
2014
2015     function moved() {
2016       dragged = 1;
2017       translateTo(d3.mouse(that), location0);
2018       zoomed(dispatch);
2019     }
2020
2021     function ended() {
2022       subject.on(mousemove, null).on(mouseup, null);
2023       dragRestore(dragged && d3.event.target === target);
2024       zoomended(dispatch);
2025     }
2026   }
2027
2028   // These closures persist for as long as at least one touch is active.
2029   function touchstarted() {
2030     var that = this,
2031         dispatch = event.of(that, arguments),
2032         locations0 = {}, // touchstart locations
2033         distance0 = 0, // distance² between initial touches
2034         scale0, // scale when we started touching
2035         zoomName = ".zoom-" + d3.event.changedTouches[0].identifier,
2036         touchmove = "touchmove" + zoomName,
2037         touchend = "touchend" + zoomName,
2038         targets = [],
2039         subject = d3.select(that),
2040         dragRestore = d3_event_dragSuppress(that);
2041
2042     started();
2043     zoomstarted(dispatch);
2044
2045     // Workaround for Chrome issue 412723: the touchstart listener must be set
2046     // after the touchmove listener.
2047     subject.on(mousedown, null).on(touchstart, started); // prevent duplicate events
2048
2049     // Updates locations of any touches in locations0.
2050     function relocate() {
2051       var touches = d3.touches(that);
2052       scale0 = view.k;
2053       touches.forEach(function(t) {
2054         if (t.identifier in locations0) locations0[t.identifier] = location(t);
2055       });
2056       return touches;
2057     }
2058
2059     // Temporarily override touchstart while gesture is active.
2060     function started() {
2061
2062       // Listen for touchmove and touchend on the target of touchstart.
2063       var target = d3.event.target;
2064       d3.select(target).on(touchmove, moved).on(touchend, ended);
2065       targets.push(target);
2066
2067       // Only track touches started on the same subject element.
2068       var changed = d3.event.changedTouches;
2069       for (var i = 0, n = changed.length; i < n; ++i) {
2070         locations0[changed[i].identifier] = null;
2071       }
2072
2073       var touches = relocate(),
2074           now = Date.now();
2075
2076       if (touches.length === 1) {
2077         if (now - touchtime < 500) { // dbltap
2078           var p = touches[0];
2079           zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
2080           d3_eventPreventDefault();
2081         }
2082         touchtime = now;
2083       } else if (touches.length > 1) {
2084         var p = touches[0], q = touches[1],
2085             dx = p[0] - q[0], dy = p[1] - q[1];
2086         distance0 = dx * dx + dy * dy;
2087       }
2088     }
2089
2090     function moved() {
2091       var touches = d3.touches(that),
2092           p0, l0,
2093           p1, l1;
2094
2095       d3_selection_interrupt.call(that);
2096
2097       for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
2098         p1 = touches[i];
2099         if (l1 = locations0[p1.identifier]) {
2100           if (l0) break;
2101           p0 = p1, l0 = l1;
2102         }
2103       }
2104
2105       if (l1) {
2106         var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1,
2107             scale1 = distance0 && Math.sqrt(distance1 / distance0);
2108         p0 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
2109         l0 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
2110         scaleTo(scale1 * scale0);
2111       }
2112
2113       touchtime = null;
2114       translateTo(p0, l0);
2115       zoomed(dispatch);
2116     }
2117
2118     function ended() {
2119       // If there are any globally-active touches remaining, remove the ended
2120       // touches from locations0.
2121       if (d3.event.touches.length) {
2122         var changed = d3.event.changedTouches;
2123         for (var i = 0, n = changed.length; i < n; ++i) {
2124           delete locations0[changed[i].identifier];
2125         }
2126         // If locations0 is not empty, then relocate and continue listening for
2127         // touchmove and touchend.
2128         for (var identifier in locations0) {
2129           return void relocate(); // locations may have detached due to rotation
2130         }
2131       }
2132       // Otherwise, remove touchmove and touchend listeners.
2133       d3.selectAll(targets).on(zoomName, null);
2134       subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
2135       dragRestore();
2136       zoomended(dispatch);
2137     }
2138   }
2139
2140   function mousewheeled() {
2141     var dispatch = event.of(this, arguments);
2142     if (mousewheelTimer) clearTimeout(mousewheelTimer);
2143     else translate0 = location(center0 = center || d3.mouse(this)), d3_selection_interrupt.call(this), zoomstarted(dispatch);
2144     mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(dispatch); }, 50);
2145     d3_eventPreventDefault();
2146     scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
2147     translateTo(center0, translate0);
2148     zoomed(dispatch);
2149   }
2150
2151   function dblclicked() {
2152     var p = d3.mouse(this),
2153         k = Math.log(view.k) / Math.LN2;
2154
2155     zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
2156   }
2157
2158   return d3.rebind(zoom, event, "on");
2159 };
2160
2161 var d3_behavior_zoomInfinity = [0, Infinity], // default scale extent
2162     d3_behavior_zoomDelta, // initialized lazily
2163     d3_behavior_zoomWheel;
2164 function d3_functor(v) {
2165   return typeof v === "function" ? v : function() { return v; };
2166 }
2167
2168 d3.functor = d3_functor;
2169
2170 d3.touch = function(container, touches, identifier) {
2171   if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
2172   if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
2173     if ((touch = touches[i]).identifier === identifier) {
2174       return d3_mousePoint(container, touch);
2175     }
2176   }
2177 };
2178
2179 var d3_timer_queueHead,
2180     d3_timer_queueTail,
2181     d3_timer_interval, // is an interval (or frame) active?
2182     d3_timer_timeout, // is a timeout active?
2183     d3_timer_active, // active timer object
2184     d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); };
2185
2186 // The timer will continue to fire until callback returns true.
2187 d3.timer = function(callback, delay, then) {
2188   var n = arguments.length;
2189   if (n < 2) delay = 0;
2190   if (n < 3) then = Date.now();
2191
2192   // Add the callback to the tail of the queue.
2193   var time = then + delay, timer = {c: callback, t: time, f: false, n: null};
2194   if (d3_timer_queueTail) d3_timer_queueTail.n = timer;
2195   else d3_timer_queueHead = timer;
2196   d3_timer_queueTail = timer;
2197
2198   // Start animatin'!
2199   if (!d3_timer_interval) {
2200     d3_timer_timeout = clearTimeout(d3_timer_timeout);
2201     d3_timer_interval = 1;
2202     d3_timer_frame(d3_timer_step);
2203   }
2204 };
2205
2206 function d3_timer_step() {
2207   var now = d3_timer_mark(),
2208       delay = d3_timer_sweep() - now;
2209   if (delay > 24) {
2210     if (isFinite(delay)) {
2211       clearTimeout(d3_timer_timeout);
2212       d3_timer_timeout = setTimeout(d3_timer_step, delay);
2213     }
2214     d3_timer_interval = 0;
2215   } else {
2216     d3_timer_interval = 1;
2217     d3_timer_frame(d3_timer_step);
2218   }
2219 }
2220
2221 d3.timer.flush = function() {
2222   d3_timer_mark();
2223   d3_timer_sweep();
2224 };
2225
2226 function d3_timer_mark() {
2227   var now = Date.now();
2228   d3_timer_active = d3_timer_queueHead;
2229   while (d3_timer_active) {
2230     if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
2231     d3_timer_active = d3_timer_active.n;
2232   }
2233   return now;
2234 }
2235
2236 // Flush after callbacks to avoid concurrent queue modification.
2237 // Returns the time of the earliest active timer, post-sweep.
2238 function d3_timer_sweep() {
2239   var t0,
2240       t1 = d3_timer_queueHead,
2241       time = Infinity;
2242   while (t1) {
2243     if (t1.f) {
2244       t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
2245     } else {
2246       if (t1.t < time) time = t1.t;
2247       t1 = (t0 = t1).n;
2248     }
2249   }
2250   d3_timer_queueTail = t0;
2251   return time;
2252 }
2253 d3.geo = {};
2254
2255 d3.geo.stream = function(object, listener) {
2256   if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
2257     d3_geo_streamObjectType[object.type](object, listener);
2258   } else {
2259     d3_geo_streamGeometry(object, listener);
2260   }
2261 };
2262
2263 function d3_geo_streamGeometry(geometry, listener) {
2264   if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
2265     d3_geo_streamGeometryType[geometry.type](geometry, listener);
2266   }
2267 }
2268
2269 var d3_geo_streamObjectType = {
2270   Feature: function(feature, listener) {
2271     d3_geo_streamGeometry(feature.geometry, listener);
2272   },
2273   FeatureCollection: function(object, listener) {
2274     var features = object.features, i = -1, n = features.length;
2275     while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
2276   }
2277 };
2278
2279 var d3_geo_streamGeometryType = {
2280   Sphere: function(object, listener) {
2281     listener.sphere();
2282   },
2283   Point: function(object, listener) {
2284     object = object.coordinates;
2285     listener.point(object[0], object[1], object[2]);
2286   },
2287   MultiPoint: function(object, listener) {
2288     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2289     while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
2290   },
2291   LineString: function(object, listener) {
2292     d3_geo_streamLine(object.coordinates, listener, 0);
2293   },
2294   MultiLineString: function(object, listener) {
2295     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2296     while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
2297   },
2298   Polygon: function(object, listener) {
2299     d3_geo_streamPolygon(object.coordinates, listener);
2300   },
2301   MultiPolygon: function(object, listener) {
2302     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2303     while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
2304   },
2305   GeometryCollection: function(object, listener) {
2306     var geometries = object.geometries, i = -1, n = geometries.length;
2307     while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
2308   }
2309 };
2310
2311 function d3_geo_streamLine(coordinates, listener, closed) {
2312   var i = -1, n = coordinates.length - closed, coordinate;
2313   listener.lineStart();
2314   while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
2315   listener.lineEnd();
2316 }
2317
2318 function d3_geo_streamPolygon(coordinates, listener) {
2319   var i = -1, n = coordinates.length;
2320   listener.polygonStart();
2321   while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
2322   listener.polygonEnd();
2323 }
2324
2325 d3.geo.length = function(object) {
2326   d3_geo_lengthSum = 0;
2327   d3.geo.stream(object, d3_geo_length);
2328   return d3_geo_lengthSum;
2329 };
2330
2331 var d3_geo_lengthSum;
2332
2333 var d3_geo_length = {
2334   sphere: d3_noop,
2335   point: d3_noop,
2336   lineStart: d3_geo_lengthLineStart,
2337   lineEnd: d3_noop,
2338   polygonStart: d3_noop,
2339   polygonEnd: d3_noop
2340 };
2341
2342 function d3_geo_lengthLineStart() {
2343   var λ0, sinφ0, cosφ0;
2344
2345   d3_geo_length.point = function(λ, φ) {
2346     λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
2347     d3_geo_length.point = nextPoint;
2348   };
2349
2350   d3_geo_length.lineEnd = function() {
2351     d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
2352   };
2353
2354   function nextPoint(λ, φ) {
2355     var sinφ = Math.sin(φ *= d3_radians),
2356         cosφ = Math.cos(φ),
2357         t = abs((λ *= d3_radians) - λ0),
2358         cosΔλ = Math.cos(t);
2359     d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
2360     λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
2361   }
2362 }
2363 function d3_identity(d) {
2364   return d;
2365 }
2366 function d3_true() {
2367   return true;
2368 }
2369
2370 function d3_geo_spherical(cartesian) {
2371   return [
2372     Math.atan2(cartesian[1], cartesian[0]),
2373     d3_asin(cartesian[2])
2374   ];
2375 }
2376
2377 function d3_geo_sphericalEqual(a, b) {
2378   return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
2379 }
2380
2381 // General spherical polygon clipping algorithm: takes a polygon, cuts it into
2382 // visible line segments and rejoins the segments by interpolating along the
2383 // clip edge.
2384 function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
2385   var subject = [],
2386       clip = [];
2387
2388   segments.forEach(function(segment) {
2389     if ((n = segment.length - 1) <= 0) return;
2390     var n, p0 = segment[0], p1 = segment[n];
2391
2392     // If the first and last points of a segment are coincident, then treat as
2393     // a closed ring.
2394     // TODO if all rings are closed, then the winding order of the exterior
2395     // ring should be checked.
2396     if (d3_geo_sphericalEqual(p0, p1)) {
2397       listener.lineStart();
2398       for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
2399       listener.lineEnd();
2400       return;
2401     }
2402
2403     var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true),
2404         b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
2405     a.o = b;
2406     subject.push(a);
2407     clip.push(b);
2408     a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
2409     b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
2410     a.o = b;
2411     subject.push(a);
2412     clip.push(b);
2413   });
2414   clip.sort(compare);
2415   d3_geo_clipPolygonLinkCircular(subject);
2416   d3_geo_clipPolygonLinkCircular(clip);
2417   if (!subject.length) return;
2418
2419   for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
2420     clip[i].e = entry = !entry;
2421   }
2422
2423   var start = subject[0],
2424       points,
2425       point;
2426   while (1) {
2427     // Find first unvisited intersection.
2428     var current = start,
2429         isSubject = true;
2430     while (current.v) if ((current = current.n) === start) return;
2431     points = current.z;
2432     listener.lineStart();
2433     do {
2434       current.v = current.o.v = true;
2435       if (current.e) {
2436         if (isSubject) {
2437           for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
2438         } else {
2439           interpolate(current.x, current.n.x, 1, listener);
2440         }
2441         current = current.n;
2442       } else {
2443         if (isSubject) {
2444           points = current.p.z;
2445           for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
2446         } else {
2447           interpolate(current.x, current.p.x, -1, listener);
2448         }
2449         current = current.p;
2450       }
2451       current = current.o;
2452       points = current.z;
2453       isSubject = !isSubject;
2454     } while (!current.v);
2455     listener.lineEnd();
2456   }
2457 }
2458
2459 function d3_geo_clipPolygonLinkCircular(array) {
2460   if (!(n = array.length)) return;
2461   var n,
2462       i = 0,
2463       a = array[0],
2464       b;
2465   while (++i < n) {
2466     a.n = b = array[i];
2467     b.p = a;
2468     a = b;
2469   }
2470   a.n = b = array[0];
2471   b.p = a;
2472 }
2473
2474 function d3_geo_clipPolygonIntersection(point, points, other, entry) {
2475   this.x = point;
2476   this.z = points;
2477   this.o = other; // another intersection
2478   this.e = entry; // is an entry?
2479   this.v = false; // visited
2480   this.n = this.p = null; // next & previous
2481 }
2482
2483 function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
2484   return function(rotate, listener) {
2485     var line = clipLine(listener),
2486         rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
2487
2488     var clip = {
2489       point: point,
2490       lineStart: lineStart,
2491       lineEnd: lineEnd,
2492       polygonStart: function() {
2493         clip.point = pointRing;
2494         clip.lineStart = ringStart;
2495         clip.lineEnd = ringEnd;
2496         segments = [];
2497         polygon = [];
2498       },
2499       polygonEnd: function() {
2500         clip.point = point;
2501         clip.lineStart = lineStart;
2502         clip.lineEnd = lineEnd;
2503
2504         segments = d3.merge(segments);
2505         var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
2506         if (segments.length) {
2507           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2508           d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
2509         } else if (clipStartInside) {
2510           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2511           listener.lineStart();
2512           interpolate(null, null, 1, listener);
2513           listener.lineEnd();
2514         }
2515         if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
2516         segments = polygon = null;
2517       },
2518       sphere: function() {
2519         listener.polygonStart();
2520         listener.lineStart();
2521         interpolate(null, null, 1, listener);
2522         listener.lineEnd();
2523         listener.polygonEnd();
2524       }
2525     };
2526
2527     function point(λ, φ) {
2528       var point = rotate(λ, φ);
2529       if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
2530     }
2531     function pointLine(λ, φ) {
2532       var point = rotate(λ, φ);
2533       line.point(point[0], point[1]);
2534     }
2535     function lineStart() { clip.point = pointLine; line.lineStart(); }
2536     function lineEnd() { clip.point = point; line.lineEnd(); }
2537
2538     var segments;
2539
2540     var buffer = d3_geo_clipBufferListener(),
2541         ringListener = clipLine(buffer),
2542         polygonStarted = false,
2543         polygon,
2544         ring;
2545
2546     function pointRing(λ, φ) {
2547       ring.push([λ, φ]);
2548       var point = rotate(λ, φ);
2549       ringListener.point(point[0], point[1]);
2550     }
2551
2552     function ringStart() {
2553       ringListener.lineStart();
2554       ring = [];
2555     }
2556
2557     function ringEnd() {
2558       pointRing(ring[0][0], ring[0][1]);
2559       ringListener.lineEnd();
2560
2561       var clean = ringListener.clean(),
2562           ringSegments = buffer.buffer(),
2563           segment,
2564           n = ringSegments.length;
2565
2566       ring.pop();
2567       polygon.push(ring);
2568       ring = null;
2569
2570       if (!n) return;
2571
2572       // No intersections.
2573       if (clean & 1) {
2574         segment = ringSegments[0];
2575         var n = segment.length - 1,
2576             i = -1,
2577             point;
2578         if (n > 0) {
2579           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2580           listener.lineStart();
2581           while (++i < n) listener.point((point = segment[i])[0], point[1]);
2582           listener.lineEnd();
2583         }
2584         return;
2585       }
2586
2587       // Rejoin connected segments.
2588       // TODO reuse bufferListener.rejoin()?
2589       if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
2590
2591       segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
2592     }
2593
2594     return clip;
2595   };
2596 }
2597
2598 function d3_geo_clipSegmentLength1(segment) {
2599   return segment.length > 1;
2600 }
2601
2602 function d3_geo_clipBufferListener() {
2603   var lines = [],
2604       line;
2605   return {
2606     lineStart: function() { lines.push(line = []); },
2607     point: function(λ, φ) { line.push([λ, φ]); },
2608     lineEnd: d3_noop,
2609     buffer: function() {
2610       var buffer = lines;
2611       lines = [];
2612       line = null;
2613       return buffer;
2614     },
2615     rejoin: function() {
2616       if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
2617     }
2618   };
2619 }
2620
2621 // Intersection points are sorted along the clip edge. For both antimeridian
2622 // cutting and circle clipping, the same comparison is used.
2623 function d3_geo_clipSort(a, b) {
2624   return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1])
2625        - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
2626 }
2627
2628 var d3_geo_clipAntimeridian = d3_geo_clip(
2629     d3_true,
2630     d3_geo_clipAntimeridianLine,
2631     d3_geo_clipAntimeridianInterpolate,
2632     [-π, -π / 2]);
2633
2634 // Takes a line and cuts into visible segments. Return values:
2635 //   0: there were intersections or the line was empty.
2636 //   1: no intersections.
2637 //   2: there were intersections, and the first and last segments should be
2638 //      rejoined.
2639 function d3_geo_clipAntimeridianLine(listener) {
2640   var λ0 = NaN,
2641       φ0 = NaN,
2642       sλ0 = NaN,
2643       clean; // no intersections
2644
2645   return {
2646     lineStart: function() {
2647       listener.lineStart();
2648       clean = 1;
2649     },
2650     point: function(λ1, φ1) {
2651       var sλ1 = λ1 > 0 ? π : -π,
2652           dλ = abs(λ1 - λ0);
2653       if (abs(dλ - π) < ε) { // line crosses a pole
2654         listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);
2655         listener.point(sλ0, φ0);
2656         listener.lineEnd();
2657         listener.lineStart();
2658         listener.point(sλ1, φ0);
2659         listener.point(λ1, φ0);
2660         clean = 0;
2661       } else if (sλ0 !== sλ1 && dλ >= π) { // line crosses antimeridian
2662         // handle degeneracies
2663         if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
2664         if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
2665         φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
2666         listener.point(sλ0, φ0);
2667         listener.lineEnd();
2668         listener.lineStart();
2669         listener.point(sλ1, φ0);
2670         clean = 0;
2671       }
2672       listener.point(λ0 = λ1, φ0 = φ1);
2673       sλ0 = sλ1;
2674     },
2675     lineEnd: function() {
2676       listener.lineEnd();
2677       λ0 = φ0 = NaN;
2678     },
2679     // if there are intersections, we always rejoin the first and last segments.
2680     clean: function() { return 2 - clean; }
2681   };
2682 }
2683
2684 function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
2685   var cosφ0,
2686       cosφ1,
2687       sinλ0_λ1 = Math.sin(λ0 - λ1);
2688   return abs(sinλ0_λ1) > ε
2689       ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1)
2690                  - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0))
2691                  / (cosφ0 * cosφ1 * sinλ0_λ1))
2692       : (φ0 + φ1) / 2;
2693 }
2694
2695 function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
2696   var φ;
2697   if (from == null) {
2698     φ = direction * halfπ;
2699     listener.point(-π,  φ);
2700     listener.point( 0,  φ);
2701     listener.point( π,  φ);
2702     listener.point( π,  0);
2703     listener.point( π, -φ);
2704     listener.point( 0, -φ);
2705     listener.point(-π, -φ);
2706     listener.point(-π,  0);
2707     listener.point(-π,  φ);
2708   } else if (abs(from[0] - to[0]) > ε) {
2709     var s = from[0] < to[0] ? π : -π;
2710     φ = direction * s / 2;
2711     listener.point(-s, φ);
2712     listener.point( 0, φ);
2713     listener.point( s, φ);
2714   } else {
2715     listener.point(to[0], to[1]);
2716   }
2717 }
2718 // TODO
2719 // cross and scale return new vectors,
2720 // whereas add and normalize operate in-place
2721
2722 function d3_geo_cartesian(spherical) {
2723   var λ = spherical[0],
2724       φ = spherical[1],
2725       cosφ = Math.cos(φ);
2726   return [
2727     cosφ * Math.cos(λ),
2728     cosφ * Math.sin(λ),
2729     Math.sin(φ)
2730   ];
2731 }
2732
2733 function d3_geo_cartesianDot(a, b) {
2734   return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
2735 }
2736
2737 function d3_geo_cartesianCross(a, b) {
2738   return [
2739     a[1] * b[2] - a[2] * b[1],
2740     a[2] * b[0] - a[0] * b[2],
2741     a[0] * b[1] - a[1] * b[0]
2742   ];
2743 }
2744
2745 function d3_geo_cartesianAdd(a, b) {
2746   a[0] += b[0];
2747   a[1] += b[1];
2748   a[2] += b[2];
2749 }
2750
2751 function d3_geo_cartesianScale(vector, k) {
2752   return [
2753     vector[0] * k,
2754     vector[1] * k,
2755     vector[2] * k
2756   ];
2757 }
2758
2759 function d3_geo_cartesianNormalize(d) {
2760   var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
2761   d[0] /= l;
2762   d[1] /= l;
2763   d[2] /= l;
2764 }
2765 function d3_geo_compose(a, b) {
2766
2767   function compose(x, y) {
2768     return x = a(x, y), b(x[0], x[1]);
2769   }
2770
2771   if (a.invert && b.invert) compose.invert = function(x, y) {
2772     return x = b.invert(x, y), x && a.invert(x[0], x[1]);
2773   };
2774
2775   return compose;
2776 }
2777
2778 function d3_geo_equirectangular(λ, φ) {
2779   return [λ, φ];
2780 }
2781
2782 (d3.geo.equirectangular = function() {
2783   return d3_geo_projection(d3_geo_equirectangular);
2784 }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
2785
2786 d3.geo.rotation = function(rotate) {
2787   rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
2788
2789   function forward(coordinates) {
2790     coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
2791     return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
2792   }
2793
2794   forward.invert = function(coordinates) {
2795     coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
2796     return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
2797   };
2798
2799   return forward;
2800 };
2801
2802 function d3_geo_identityRotation(λ, φ) {
2803   return [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];
2804 }
2805
2806 d3_geo_identityRotation.invert = d3_geo_equirectangular;
2807
2808 // Note: |δλ| must be < 2π
2809 function d3_geo_rotation(δλ, δφ, δγ) {
2810   return δλ ? (δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ))
2811     : d3_geo_rotationλ(δλ))
2812     : (δφ || δγ ? d3_geo_rotationφγ(δφ, δγ)
2813     : d3_geo_identityRotation);
2814 }
2815
2816 function d3_geo_forwardRotationλ(δλ) {
2817   return function(λ, φ) {
2818     return λ += δλ, [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];
2819   };
2820 }
2821
2822 function d3_geo_rotationλ(δλ) {
2823   var rotation = d3_geo_forwardRotationλ(δλ);
2824   rotation.invert = d3_geo_forwardRotationλ(-δλ);
2825   return rotation;
2826 }
2827
2828 function d3_geo_rotationφγ(δφ, δγ) {
2829   var cosδφ = Math.cos(δφ),
2830       sinδφ = Math.sin(δφ),
2831       cosδγ = Math.cos(δγ),
2832       sinδγ = Math.sin(δγ);
2833
2834   function rotation(λ, φ) {
2835     var cosφ = Math.cos(φ),
2836         x = Math.cos(λ) * cosφ,
2837         y = Math.sin(λ) * cosφ,
2838         z = Math.sin(φ),
2839         k = z * cosδφ + x * sinδφ;
2840     return [
2841       Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ),
2842       d3_asin(k * cosδγ + y * sinδγ)
2843     ];
2844   }
2845
2846   rotation.invert = function(λ, φ) {
2847     var cosφ = Math.cos(φ),
2848         x = Math.cos(λ) * cosφ,
2849         y = Math.sin(λ) * cosφ,
2850         z = Math.sin(φ),
2851         k = z * cosδγ - y * sinδγ;
2852     return [
2853       Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ),
2854       d3_asin(k * cosδφ - x * sinδφ)
2855     ];
2856   };
2857
2858   return rotation;
2859 }
2860
2861 d3.geo.circle = function() {
2862   var origin = [0, 0],
2863       angle,
2864       precision = 6,
2865       interpolate;
2866
2867   function circle() {
2868     var center = typeof origin === "function" ? origin.apply(this, arguments) : origin,
2869         rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert,
2870         ring = [];
2871
2872     interpolate(null, null, 1, {
2873       point: function(x, y) {
2874         ring.push(x = rotate(x, y));
2875         x[0] *= d3_degrees, x[1] *= d3_degrees;
2876       }
2877     });
2878
2879     return {type: "Polygon", coordinates: [ring]};
2880   }
2881
2882   circle.origin = function(x) {
2883     if (!arguments.length) return origin;
2884     origin = x;
2885     return circle;
2886   };
2887
2888   circle.angle = function(x) {
2889     if (!arguments.length) return angle;
2890     interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
2891     return circle;
2892   };
2893
2894   circle.precision = function(_) {
2895     if (!arguments.length) return precision;
2896     interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
2897     return circle;
2898   };
2899
2900   return circle.angle(90);
2901 };
2902
2903 // Interpolates along a circle centered at [0°, 0°], with a given radius and
2904 // precision.
2905 function d3_geo_circleInterpolate(radius, precision) {
2906   var cr = Math.cos(radius),
2907       sr = Math.sin(radius);
2908   return function(from, to, direction, listener) {
2909     var step = direction * precision;
2910     if (from != null) {
2911       from = d3_geo_circleAngle(cr, from);
2912       to = d3_geo_circleAngle(cr, to);
2913       if (direction > 0 ? from < to: from > to) from += direction * τ;
2914     } else {
2915       from = radius + direction * τ;
2916       to = radius - .5 * step;
2917     }
2918     for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {
2919       listener.point((point = d3_geo_spherical([
2920         cr,
2921         -sr * Math.cos(t),
2922         -sr * Math.sin(t)
2923       ]))[0], point[1]);
2924     }
2925   };
2926 }
2927
2928 // Signed angle of a cartesian point relative to [cr, 0, 0].
2929 function d3_geo_circleAngle(cr, point) {
2930   var a = d3_geo_cartesian(point);
2931   a[0] -= cr;
2932   d3_geo_cartesianNormalize(a);
2933   var angle = d3_acos(-a[1]);
2934   return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
2935 }
2936 // Adds floating point numbers with twice the normal precision.
2937 // Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
2938 // Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
2939 // 305–363 (1997).
2940 // Code adapted from GeographicLib by Charles F. F. Karney,
2941 // http://geographiclib.sourceforge.net/
2942 // See lib/geographiclib/LICENSE for details.
2943
2944 function d3_adder() {}
2945
2946 d3_adder.prototype = {
2947   s: 0, // rounded value
2948   t: 0, // exact error
2949   add: function(y) {
2950     d3_adderSum(y, this.t, d3_adderTemp);
2951     d3_adderSum(d3_adderTemp.s, this.s, this);
2952     if (this.s) this.t += d3_adderTemp.t;
2953     else this.s = d3_adderTemp.t;
2954   },
2955   reset: function() {
2956     this.s = this.t = 0;
2957   },
2958   valueOf: function() {
2959     return this.s;
2960   }
2961 };
2962
2963 var d3_adderTemp = new d3_adder;
2964
2965 function d3_adderSum(a, b, o) {
2966   var x = o.s = a + b, // a + b
2967       bv = x - a, av = x - bv; // b_virtual & a_virtual
2968   o.t = (a - av) + (b - bv); // a_roundoff + b_roundoff
2969 }
2970
2971 d3.geo.area = function(object) {
2972   d3_geo_areaSum = 0;
2973   d3.geo.stream(object, d3_geo_area);
2974   return d3_geo_areaSum;
2975 };
2976
2977 var d3_geo_areaSum,
2978     d3_geo_areaRingSum = new d3_adder;
2979
2980 var d3_geo_area = {
2981   sphere: function() { d3_geo_areaSum += 4 * π; },
2982   point: d3_noop,
2983   lineStart: d3_noop,
2984   lineEnd: d3_noop,
2985
2986   // Only count area for polygon rings.
2987   polygonStart: function() {
2988     d3_geo_areaRingSum.reset();
2989     d3_geo_area.lineStart = d3_geo_areaRingStart;
2990   },
2991   polygonEnd: function() {
2992     var area = 2 * d3_geo_areaRingSum;
2993     d3_geo_areaSum += area < 0 ? 4 * π + area : area;
2994     d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
2995   }
2996 };
2997
2998 function d3_geo_areaRingStart() {
2999   var λ00, φ00, λ0, cosφ0, sinφ0; // start point and previous point
3000
3001   // For the first point, …
3002   d3_geo_area.point = function(λ, φ) {
3003     d3_geo_area.point = nextPoint;
3004     λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ);
3005   };
3006
3007   // For subsequent points, …
3008   function nextPoint(λ, φ) {
3009     λ *= d3_radians;
3010     φ = φ * d3_radians / 2 + π / 4; // half the angular distance from south pole
3011
3012     // Spherical excess E for a spherical triangle with vertices: south pole,
3013     // previous point, current point.  Uses a formula derived from Cagnoli’s
3014     // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
3015     var dλ = λ - λ0,
3016         sdλ = dλ >= 0 ? 1 : -1,
3017         adλ = sdλ * dλ,
3018         cosφ = Math.cos(φ),
3019         sinφ = Math.sin(φ),
3020         k = sinφ0 * sinφ,
3021         u = cosφ0 * cosφ + k * Math.cos(adλ),
3022         v = k * sdλ * Math.sin(adλ);
3023     d3_geo_areaRingSum.add(Math.atan2(v, u));
3024
3025     // Advance the previous points.
3026     λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
3027   }
3028
3029   // For the last point, return to the start.
3030   d3_geo_area.lineEnd = function() {
3031     nextPoint(λ00, φ00);
3032   };
3033 }
3034
3035 function d3_geo_pointInPolygon(point, polygon) {
3036   var meridian = point[0],
3037       parallel = point[1],
3038       meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0],
3039       polarAngle = 0,
3040       winding = 0;
3041   d3_geo_areaRingSum.reset();
3042
3043   for (var i = 0, n = polygon.length; i < n; ++i) {
3044     var ring = polygon[i],
3045         m = ring.length;
3046     if (!m) continue;
3047     var point0 = ring[0],
3048         λ0 = point0[0],
3049         φ0 = point0[1] / 2 + π / 4,
3050         sinφ0 = Math.sin(φ0),
3051         cosφ0 = Math.cos(φ0),
3052         j = 1;
3053
3054     while (true) {
3055       if (j === m) j = 0;
3056       point = ring[j];
3057       var λ = point[0],
3058           φ = point[1] / 2 + π / 4,
3059           sinφ = Math.sin(φ),
3060           cosφ = Math.cos(φ),
3061           dλ = λ - λ0,
3062           sdλ = dλ >= 0 ? 1 : -1,
3063           adλ = sdλ * dλ,
3064           antimeridian = adλ > π,
3065           k = sinφ0 * sinφ;
3066       d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
3067
3068       polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
3069
3070       // Are the longitudes either side of the point's meridian, and are the
3071       // latitudes smaller than the parallel?
3072       if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
3073         var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
3074         d3_geo_cartesianNormalize(arc);
3075         var intersection = d3_geo_cartesianCross(meridianNormal, arc);
3076         d3_geo_cartesianNormalize(intersection);
3077         var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
3078         if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
3079           winding += antimeridian ^ dλ >= 0 ? 1 : -1;
3080         }
3081       }
3082       if (!j++) break;
3083       λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
3084     }
3085   }
3086
3087   // First, determine whether the South pole is inside or outside:
3088   //
3089   // It is inside if:
3090   // * the polygon winds around it in a clockwise direction.
3091   // * the polygon does not (cumulatively) wind around it, but has a negative
3092   //   (counter-clockwise) area.
3093   //
3094   // Second, count the (signed) number of times a segment crosses a meridian
3095   // from the point to the South pole.  If it is zero, then the point is the
3096   // same side as the South pole.
3097
3098   return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ (winding & 1);
3099 }
3100
3101 // Clip features against a small circle centered at [0°, 0°].
3102 function d3_geo_clipCircle(radius) {
3103   var cr = Math.cos(radius),
3104       smallRadius = cr > 0,
3105       notHemisphere = abs(cr) > ε, // TODO optimise for this common case
3106       interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
3107
3108   return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-π, radius - π]);
3109
3110   function visible(λ, φ) {
3111     return Math.cos(λ) * Math.cos(φ) > cr;
3112   }
3113
3114   // Takes a line and cuts into visible segments. Return values used for
3115   // polygon clipping:
3116   //   0: there were intersections or the line was empty.
3117   //   1: no intersections.
3118   //   2: there were intersections, and the first and last segments should be
3119   //      rejoined.
3120   function clipLine(listener) {
3121     var point0, // previous point
3122         c0, // code for previous point
3123         v0, // visibility of previous point
3124         v00, // visibility of first point
3125         clean; // no intersections
3126     return {
3127       lineStart: function() {
3128         v00 = v0 = false;
3129         clean = 1;
3130       },
3131       point: function(λ, φ) {
3132         var point1 = [λ, φ],
3133             point2,
3134             v = visible(λ, φ),
3135             c = smallRadius
3136               ? v ? 0 : code(λ, φ)
3137               : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
3138         if (!point0 && (v00 = v0 = v)) listener.lineStart();
3139         // Handle degeneracies.
3140         // TODO ignore if not clipping polygons.
3141         if (v !== v0) {
3142           point2 = intersect(point0, point1);
3143           if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
3144             point1[0] += ε;
3145             point1[1] += ε;
3146             v = visible(point1[0], point1[1]);
3147           }
3148         }
3149         if (v !== v0) {
3150           clean = 0;
3151           if (v) {
3152             // outside going in
3153             listener.lineStart();
3154             point2 = intersect(point1, point0);
3155             listener.point(point2[0], point2[1]);
3156           } else {
3157             // inside going out
3158             point2 = intersect(point0, point1);
3159             listener.point(point2[0], point2[1]);
3160             listener.lineEnd();
3161           }
3162           point0 = point2;
3163         } else if (notHemisphere && point0 && smallRadius ^ v) {
3164           var t;
3165           // If the codes for two points are different, or are both zero,
3166           // and there this segment intersects with the small circle.
3167           if (!(c & c0) && (t = intersect(point1, point0, true))) {
3168             clean = 0;
3169             if (smallRadius) {
3170               listener.lineStart();
3171               listener.point(t[0][0], t[0][1]);
3172               listener.point(t[1][0], t[1][1]);
3173               listener.lineEnd();
3174             } else {
3175               listener.point(t[1][0], t[1][1]);
3176               listener.lineEnd();
3177               listener.lineStart();
3178               listener.point(t[0][0], t[0][1]);
3179             }
3180           }
3181         }
3182         if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
3183           listener.point(point1[0], point1[1]);
3184         }
3185         point0 = point1, v0 = v, c0 = c;
3186       },
3187       lineEnd: function() {
3188         if (v0) listener.lineEnd();
3189         point0 = null;
3190       },
3191       // Rejoin first and last segments if there were intersections and the first
3192       // and last points were visible.
3193       clean: function() { return clean | ((v00 && v0) << 1); }
3194     };
3195   }
3196
3197   // Intersects the great circle between a and b with the clip circle.
3198   function intersect(a, b, two) {
3199     var pa = d3_geo_cartesian(a),
3200         pb = d3_geo_cartesian(b);
3201
3202     // We have two planes, n1.p = d1 and n2.p = d2.
3203     // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
3204     var n1 = [1, 0, 0], // normal
3205         n2 = d3_geo_cartesianCross(pa, pb),
3206         n2n2 = d3_geo_cartesianDot(n2, n2),
3207         n1n2 = n2[0], // d3_geo_cartesianDot(n1, n2),
3208         determinant = n2n2 - n1n2 * n1n2;
3209
3210     // Two polar points.
3211     if (!determinant) return !two && a;
3212
3213     var c1 =  cr * n2n2 / determinant,
3214         c2 = -cr * n1n2 / determinant,
3215         n1xn2 = d3_geo_cartesianCross(n1, n2),
3216         A = d3_geo_cartesianScale(n1, c1),
3217         B = d3_geo_cartesianScale(n2, c2);
3218     d3_geo_cartesianAdd(A, B);
3219
3220     // Solve |p(t)|^2 = 1.
3221     var u = n1xn2,
3222         w = d3_geo_cartesianDot(A, u),
3223         uu = d3_geo_cartesianDot(u, u),
3224         t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
3225
3226     if (t2 < 0) return;
3227
3228     var t = Math.sqrt(t2),
3229         q = d3_geo_cartesianScale(u, (-w - t) / uu);
3230     d3_geo_cartesianAdd(q, A);
3231     q = d3_geo_spherical(q);
3232     if (!two) return q;
3233
3234     // Two intersection points.
3235     var λ0 = a[0],
3236         λ1 = b[0],
3237         φ0 = a[1],
3238         φ1 = b[1],
3239         z;
3240     if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
3241     var δλ = λ1 - λ0,
3242         polar = abs(δλ - π) < ε,
3243         meridian = polar || δλ < ε;
3244
3245     if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
3246
3247     // Check that the first point is between a and b.
3248     if (meridian
3249         ? polar
3250           ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1)
3251           : φ0 <= q[1] && q[1] <= φ1
3252         : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
3253       var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
3254       d3_geo_cartesianAdd(q1, A);
3255       return [q, d3_geo_spherical(q1)];
3256     }
3257   }
3258
3259   // Generates a 4-bit vector representing the location of a point relative to
3260   // the small circle's bounding box.
3261   function code(λ, φ) {
3262     var r = smallRadius ? radius : π - radius,
3263         code = 0;
3264     if (λ < -r) code |= 1; // left
3265     else if (λ > r) code |= 2; // right
3266     if (φ < -r) code |= 4; // below
3267     else if (φ > r) code |= 8; // above
3268     return code;
3269   }
3270 }
3271
3272 // Liang–Barsky line clipping.
3273 function d3_geom_clipLine(x0, y0, x1, y1) {
3274   return function(line) {
3275     var a = line.a,
3276         b = line.b,
3277         ax = a.x,
3278         ay = a.y,
3279         bx = b.x,
3280         by = b.y,
3281         t0 = 0,
3282         t1 = 1,
3283         dx = bx - ax,
3284         dy = by - ay,
3285         r;
3286
3287     r = x0 - ax;
3288     if (!dx && r > 0) return;
3289     r /= dx;
3290     if (dx < 0) {
3291       if (r < t0) return;
3292       if (r < t1) t1 = r;
3293     } else if (dx > 0) {
3294       if (r > t1) return;
3295       if (r > t0) t0 = r;
3296     }
3297
3298     r = x1 - ax;
3299     if (!dx && r < 0) return;
3300     r /= dx;
3301     if (dx < 0) {
3302       if (r > t1) return;
3303       if (r > t0) t0 = r;
3304     } else if (dx > 0) {
3305       if (r < t0) return;
3306       if (r < t1) t1 = r;
3307     }
3308
3309     r = y0 - ay;
3310     if (!dy && r > 0) return;
3311     r /= dy;
3312     if (dy < 0) {
3313       if (r < t0) return;
3314       if (r < t1) t1 = r;
3315     } else if (dy > 0) {
3316       if (r > t1) return;
3317       if (r > t0) t0 = r;
3318     }
3319
3320     r = y1 - ay;
3321     if (!dy && r < 0) return;
3322     r /= dy;
3323     if (dy < 0) {
3324       if (r > t1) return;
3325       if (r > t0) t0 = r;
3326     } else if (dy > 0) {
3327       if (r < t0) return;
3328       if (r < t1) t1 = r;
3329     }
3330
3331     if (t0 > 0) line.a = {x: ax + t0 * dx, y: ay + t0 * dy};
3332     if (t1 < 1) line.b = {x: ax + t1 * dx, y: ay + t1 * dy};
3333     return line;
3334   };
3335 }
3336
3337 var d3_geo_clipExtentMAX = 1e9;
3338
3339 d3.geo.clipExtent = function() {
3340   var x0, y0, x1, y1,
3341       stream,
3342       clip,
3343       clipExtent = {
3344         stream: function(output) {
3345           if (stream) stream.valid = false;
3346           stream = clip(output);
3347           stream.valid = true; // allow caching by d3.geo.path
3348           return stream;
3349         },
3350         extent: function(_) {
3351           if (!arguments.length) return [[x0, y0], [x1, y1]];
3352           clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
3353           if (stream) stream.valid = false, stream = null;
3354           return clipExtent;
3355         }
3356       };
3357   return clipExtent.extent([[0, 0], [960, 500]]);
3358 };
3359
3360 function d3_geo_clipExtent(x0, y0, x1, y1) {
3361   return function(listener) {
3362     var listener_ = listener,
3363         bufferListener = d3_geo_clipBufferListener(),
3364         clipLine = d3_geom_clipLine(x0, y0, x1, y1),
3365         segments,
3366         polygon,
3367         ring;
3368
3369     var clip = {
3370       point: point,
3371       lineStart: lineStart,
3372       lineEnd: lineEnd,
3373       polygonStart: function() {
3374         listener = bufferListener;
3375         segments = [];
3376         polygon = [];
3377         clean = true;
3378       },
3379       polygonEnd: function() {
3380         listener = listener_;
3381         segments = d3.merge(segments);
3382         var clipStartInside = insidePolygon([x0, y1]),
3383             inside = clean && clipStartInside,
3384             visible = segments.length;
3385         if (inside || visible) {
3386           listener.polygonStart();
3387           if (inside) {
3388             listener.lineStart();
3389             interpolate(null, null, 1, listener);
3390             listener.lineEnd();
3391           }
3392           if (visible) {
3393             d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);
3394           }
3395           listener.polygonEnd();
3396         }
3397         segments = polygon = ring = null;
3398       }
3399     };
3400
3401     function insidePolygon(p) {
3402       var wn = 0, // the winding number counter
3403           n = polygon.length,
3404           y = p[1];
3405
3406       for (var i = 0; i < n; ++i) {
3407         for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
3408           b = v[j];
3409           if (a[1] <= y) {
3410             if (b[1] >  y && d3_cross2d(a, b, p) > 0) ++wn;
3411           } else {
3412             if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;
3413           }
3414           a = b;
3415         }
3416       }
3417       return wn !== 0;
3418     }
3419
3420     function interpolate(from, to, direction, listener) {
3421       var a = 0, a1 = 0;
3422       if (from == null ||
3423           (a = corner(from, direction)) !== (a1 = corner(to, direction)) ||
3424           comparePoints(from, to) < 0 ^ direction > 0) {
3425         do {
3426           listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
3427         } while ((a = (a + direction + 4) % 4) !== a1);
3428       } else {
3429         listener.point(to[0], to[1]);
3430       }
3431     }
3432
3433     function pointVisible(x, y) {
3434       return x0 <= x && x <= x1 && y0 <= y && y <= y1;
3435     }
3436
3437     function point(x, y) {
3438       if (pointVisible(x, y)) listener.point(x, y);
3439     }
3440
3441     var x__, y__, v__, // first point
3442         x_, y_, v_, // previous point
3443         first,
3444         clean;
3445
3446     function lineStart() {
3447       clip.point = linePoint;
3448       if (polygon) polygon.push(ring = []);
3449       first = true;
3450       v_ = false;
3451       x_ = y_ = NaN;
3452     }
3453
3454     function lineEnd() {
3455       // TODO rather than special-case polygons, simply handle them separately.
3456       // Ideally, coincident intersection points should be jittered to avoid
3457       // clipping issues.
3458       if (segments) {
3459         linePoint(x__, y__);
3460         if (v__ && v_) bufferListener.rejoin();
3461         segments.push(bufferListener.buffer());
3462       }
3463       clip.point = point;
3464       if (v_) listener.lineEnd();
3465     }
3466
3467     function linePoint(x, y) {
3468       x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
3469       y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
3470       var v = pointVisible(x, y);
3471       if (polygon) ring.push([x, y]);
3472       if (first) {
3473         x__ = x, y__ = y, v__ = v;
3474         first = false;
3475         if (v) {
3476           listener.lineStart();
3477           listener.point(x, y);
3478         }
3479       } else {
3480         if (v && v_) listener.point(x, y);
3481         else {
3482           var l = {a: {x: x_, y: y_}, b: {x: x, y: y}};
3483           if (clipLine(l)) {
3484             if (!v_) {
3485               listener.lineStart();
3486               listener.point(l.a.x, l.a.y);
3487             }
3488             listener.point(l.b.x, l.b.y);
3489             if (!v) listener.lineEnd();
3490             clean = false;
3491           } else if (v) {
3492             listener.lineStart();
3493             listener.point(x, y);
3494             clean = false;
3495           }
3496         }
3497       }
3498       x_ = x, y_ = y, v_ = v;
3499     }
3500
3501     return clip;
3502   };
3503
3504   function corner(p, direction) {
3505     return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3
3506         : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1
3507         : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0
3508         : direction > 0 ? 3 : 2; // abs(p[1] - y1) < ε
3509   }
3510
3511   function compare(a, b) {
3512     return comparePoints(a.x, b.x);
3513   }
3514
3515   function comparePoints(a, b) {
3516     var ca = corner(a, 1),
3517         cb = corner(b, 1);
3518     return ca !== cb ? ca - cb
3519         : ca === 0 ? b[1] - a[1]
3520         : ca === 1 ? a[0] - b[0]
3521         : ca === 2 ? a[1] - b[1]
3522         : b[0] - a[0];
3523   }
3524 }
3525
3526 function d3_geo_conic(projectAt) {
3527   var φ0 = 0,
3528       φ1 = π / 3,
3529       m = d3_geo_projectionMutator(projectAt),
3530       p = m(φ0, φ1);
3531
3532   p.parallels = function(_) {
3533     if (!arguments.length) return [φ0 / π * 180, φ1 / π * 180];
3534     return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
3535   };
3536
3537   return p;
3538 }
3539
3540 function d3_geo_conicEqualArea(φ0, φ1) {
3541   var sinφ0 = Math.sin(φ0),
3542       n = (sinφ0 + Math.sin(φ1)) / 2,
3543       C = 1 + sinφ0 * (2 * n - sinφ0),
3544       ρ0 = Math.sqrt(C) / n;
3545
3546   function forward(λ, φ) {
3547     var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
3548     return [
3549       ρ * Math.sin(λ *= n),
3550       ρ0 - ρ * Math.cos(λ)
3551     ];
3552   }
3553
3554   forward.invert = function(x, y) {
3555     var ρ0_y = ρ0 - y;
3556     return [
3557       Math.atan2(x, ρ0_y) / n,
3558       d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n))
3559     ];
3560   };
3561
3562   return forward;
3563 }
3564
3565 (d3.geo.conicEqualArea = function() {
3566   return d3_geo_conic(d3_geo_conicEqualArea);
3567 }).raw = d3_geo_conicEqualArea;
3568
3569 // ESRI:102003
3570 d3.geo.albers = function() {
3571   return d3.geo.conicEqualArea()
3572       .rotate([96, 0])
3573       .center([-.6, 38.7])
3574       .parallels([29.5, 45.5])
3575       .scale(1070);
3576 };
3577
3578 // A composite projection for the United States, configured by default for
3579 // 960×500. Also works quite well at 960×600 with scale 1285. The set of
3580 // standard parallels for each region comes from USGS, which is published here:
3581 // http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
3582 d3.geo.albersUsa = function() {
3583   var lower48 = d3.geo.albers();
3584
3585   // EPSG:3338
3586   var alaska = d3.geo.conicEqualArea()
3587       .rotate([154, 0])
3588       .center([-2, 58.5])
3589       .parallels([55, 65]);
3590
3591   // ESRI:102007
3592   var hawaii = d3.geo.conicEqualArea()
3593       .rotate([157, 0])
3594       .center([-3, 19.9])
3595       .parallels([8, 18]);
3596
3597   var point,
3598       pointStream = {point: function(x, y) { point = [x, y]; }},
3599       lower48Point,
3600       alaskaPoint,
3601       hawaiiPoint;
3602
3603   function albersUsa(coordinates) {
3604     var x = coordinates[0], y = coordinates[1];
3605     point = null;
3606     (lower48Point(x, y), point)
3607         || (alaskaPoint(x, y), point)
3608         || hawaiiPoint(x, y);
3609     return point;
3610   }
3611
3612   albersUsa.invert = function(coordinates) {
3613     var k = lower48.scale(),
3614         t = lower48.translate(),
3615         x = (coordinates[0] - t[0]) / k,
3616         y = (coordinates[1] - t[1]) / k;
3617     return (y >= .120 && y < .234 && x >= -.425 && x < -.214 ? alaska
3618         : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii
3619         : lower48).invert(coordinates);
3620   };
3621
3622   // A naïve multi-projection stream.
3623   // The projections must have mutually exclusive clip regions on the sphere,
3624   // as this will avoid emitting interleaving lines and polygons.
3625   albersUsa.stream = function(stream) {
3626     var lower48Stream = lower48.stream(stream),
3627         alaskaStream = alaska.stream(stream),
3628         hawaiiStream = hawaii.stream(stream);
3629     return {
3630       point: function(x, y) {
3631         lower48Stream.point(x, y);
3632         alaskaStream.point(x, y);
3633         hawaiiStream.point(x, y);
3634       },
3635       sphere: function() {
3636         lower48Stream.sphere();
3637         alaskaStream.sphere();
3638         hawaiiStream.sphere();
3639       },
3640       lineStart: function() {
3641         lower48Stream.lineStart();
3642         alaskaStream.lineStart();
3643         hawaiiStream.lineStart();
3644       },
3645       lineEnd: function() {
3646         lower48Stream.lineEnd();
3647         alaskaStream.lineEnd();
3648         hawaiiStream.lineEnd();
3649       },
3650       polygonStart: function() {
3651         lower48Stream.polygonStart();
3652         alaskaStream.polygonStart();
3653         hawaiiStream.polygonStart();
3654       },
3655       polygonEnd: function() {
3656         lower48Stream.polygonEnd();
3657         alaskaStream.polygonEnd();
3658         hawaiiStream.polygonEnd();
3659       }
3660     };
3661   };
3662
3663   albersUsa.precision = function(_) {
3664     if (!arguments.length) return lower48.precision();
3665     lower48.precision(_);
3666     alaska.precision(_);
3667     hawaii.precision(_);
3668     return albersUsa;
3669   };
3670
3671   albersUsa.scale = function(_) {
3672     if (!arguments.length) return lower48.scale();
3673     lower48.scale(_);
3674     alaska.scale(_ * .35);
3675     hawaii.scale(_);
3676     return albersUsa.translate(lower48.translate());
3677   };
3678
3679   albersUsa.translate = function(_) {
3680     if (!arguments.length) return lower48.translate();
3681     var k = lower48.scale(), x = +_[0], y = +_[1];
3682
3683     lower48Point = lower48
3684         .translate(_)
3685         .clipExtent([[x - .455 * k, y - .238 * k], [x + .455 * k, y + .238 * k]])
3686         .stream(pointStream).point;
3687
3688     alaskaPoint = alaska
3689         .translate([x - .307 * k, y + .201 * k])
3690         .clipExtent([[x - .425 * k + ε, y + .120 * k + ε], [x - .214 * k - ε, y + .234 * k - ε]])
3691         .stream(pointStream).point;
3692
3693     hawaiiPoint = hawaii
3694         .translate([x - .205 * k, y + .212 * k])
3695         .clipExtent([[x - .214 * k + ε, y + .166 * k + ε], [x - .115 * k - ε, y + .234 * k - ε]])
3696         .stream(pointStream).point;
3697
3698     return albersUsa;
3699   };
3700
3701   return albersUsa.scale(1070);
3702 };
3703
3704 d3.geo.bounds = (function() {
3705   var λ0, φ0, λ1, φ1, // bounds
3706       λ_, // previous λ-coordinate
3707       λ__, φ__, // first point
3708       p0, // previous 3D point
3709       dλSum,
3710       ranges,
3711       range;
3712
3713   var bound = {
3714     point: point,
3715     lineStart: lineStart,
3716     lineEnd: lineEnd,
3717
3718     polygonStart: function() {
3719       bound.point = ringPoint;
3720       bound.lineStart = ringStart;
3721       bound.lineEnd = ringEnd;
3722       dλSum = 0;
3723       d3_geo_area.polygonStart();
3724     },
3725     polygonEnd: function() {
3726       d3_geo_area.polygonEnd();
3727       bound.point = point;
3728       bound.lineStart = lineStart;
3729       bound.lineEnd = lineEnd;
3730       if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90);
3731       else if (dλSum > ε) φ1 = 90;
3732       else if (dλSum < -ε) φ0 = -90;
3733       range[0] = λ0, range[1] = λ1;
3734     }
3735   };
3736
3737   function point(λ, φ) {
3738     ranges.push(range = [λ0 = λ, λ1 = λ]);
3739     if (φ < φ0) φ0 = φ;
3740     if (φ > φ1) φ1 = φ;
3741   }
3742
3743   function linePoint(λ, φ) {
3744     var p = d3_geo_cartesian([λ * d3_radians, φ * d3_radians]);
3745     if (p0) {
3746       var normal = d3_geo_cartesianCross(p0, p),
3747           equatorial = [normal[1], -normal[0], 0],
3748           inflection = d3_geo_cartesianCross(equatorial, normal);
3749       d3_geo_cartesianNormalize(inflection);
3750       inflection = d3_geo_spherical(inflection);
3751       var dλ = λ - λ_,
3752           s = dλ > 0 ? 1 : -1,
3753           λi = inflection[0] * d3_degrees * s,
3754           antimeridian = abs(dλ) > 180;
3755       if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
3756         var φi = inflection[1] * d3_degrees;
3757         if (φi > φ1) φ1 = φi;
3758       } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
3759         var φi = -inflection[1] * d3_degrees;
3760         if (φi < φ0) φ0 = φi;
3761       } else {
3762         if (φ < φ0) φ0 = φ;
3763         if (φ > φ1) φ1 = φ;
3764       }
3765       if (antimeridian) {
3766         if (λ < λ_) {
3767           if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
3768         } else {
3769           if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
3770         }
3771       } else {
3772         if (λ1 >= λ0) {
3773           if (λ < λ0) λ0 = λ;
3774           if (λ > λ1) λ1 = λ;
3775         } else {
3776           if (λ > λ_) {
3777             if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
3778           } else {
3779             if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
3780           }
3781         }
3782       }
3783     } else {
3784       point(λ, φ);
3785     }
3786     p0 = p, λ_ = λ;
3787   }
3788
3789   function lineStart() { bound.point = linePoint; }
3790   function lineEnd() {
3791     range[0] = λ0, range[1] = λ1;
3792     bound.point = point;
3793     p0 = null;
3794   }
3795
3796   function ringPoint(λ, φ) {
3797     if (p0) {
3798       var dλ = λ - λ_;
3799       dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;
3800     } else λ__ = λ, φ__ = φ;
3801     d3_geo_area.point(λ, φ);
3802     linePoint(λ, φ);
3803   }
3804
3805   function ringStart() {
3806     d3_geo_area.lineStart();
3807   }
3808
3809   function ringEnd() {
3810     ringPoint(λ__, φ__);
3811     d3_geo_area.lineEnd();
3812     if (abs(dλSum) > ε) λ0 = -(λ1 = 180);
3813     range[0] = λ0, range[1] = λ1;
3814     p0 = null;
3815   }
3816
3817   // Finds the left-right distance between two longitudes.
3818   // This is almost the same as (λ1 - λ0 + 360°) % 360°, except that we want
3819   // the distance between ±180° to be 360°.
3820   function angle(λ0, λ1) { return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; }
3821
3822   function compareRanges(a, b) { return a[0] - b[0]; }
3823
3824   function withinRange(x, range) {
3825     return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
3826   }
3827
3828   return function(feature) {
3829     φ1 = λ1 = -(λ0 = φ0 = Infinity);
3830     ranges = [];
3831
3832     d3.geo.stream(feature, bound);
3833
3834     var n = ranges.length;
3835     if (n) {
3836       // First, sort ranges by their minimum longitudes.
3837       ranges.sort(compareRanges);
3838
3839       // Then, merge any ranges that overlap.
3840       for (var i = 1, a = ranges[0], b, merged = [a]; i < n; ++i) {
3841         b = ranges[i];
3842         if (withinRange(b[0], a) || withinRange(b[1], a)) {
3843           if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
3844           if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
3845         } else {
3846           merged.push(a = b);
3847         }
3848       }
3849
3850       // Finally, find the largest gap between the merged ranges.
3851       // The final bounding box will be the inverse of this gap.
3852       var best = -Infinity, dλ;
3853       for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
3854         b = merged[i];
3855         if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
3856       }
3857     }
3858     ranges = range = null;
3859
3860     return λ0 === Infinity || φ0 === Infinity
3861         ? [[NaN, NaN], [NaN, NaN]]
3862         : [[λ0, φ0], [λ1, φ1]];
3863   };
3864 })();
3865
3866 d3.geo.centroid = function(object) {
3867   d3_geo_centroidW0 = d3_geo_centroidW1 =
3868   d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 =
3869   d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
3870   d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
3871   d3.geo.stream(object, d3_geo_centroid);
3872
3873   var x = d3_geo_centroidX2,
3874       y = d3_geo_centroidY2,
3875       z = d3_geo_centroidZ2,
3876       m = x * x + y * y + z * z;
3877
3878   // If the area-weighted centroid is undefined, fall back to length-weighted centroid.
3879   if (m < ε2) {
3880     x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
3881     // If the feature has zero length, fall back to arithmetic mean of point vectors.
3882     if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;
3883     m = x * x + y * y + z * z;
3884     // If the feature still has an undefined centroid, then return.
3885     if (m < ε2) return [NaN, NaN];
3886   }
3887
3888   return [Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees];
3889 };
3890
3891 var d3_geo_centroidW0,
3892     d3_geo_centroidW1,
3893     d3_geo_centroidX0,
3894     d3_geo_centroidY0,
3895     d3_geo_centroidZ0,
3896     d3_geo_centroidX1,
3897     d3_geo_centroidY1,
3898     d3_geo_centroidZ1,
3899     d3_geo_centroidX2,
3900     d3_geo_centroidY2,
3901     d3_geo_centroidZ2;
3902
3903 var d3_geo_centroid = {
3904   sphere: d3_noop,
3905   point: d3_geo_centroidPoint,
3906   lineStart: d3_geo_centroidLineStart,
3907   lineEnd: d3_geo_centroidLineEnd,
3908   polygonStart: function() {
3909     d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
3910   },
3911   polygonEnd: function() {
3912     d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
3913   }
3914 };
3915
3916 // Arithmetic mean of Cartesian vectors.
3917 function d3_geo_centroidPoint(λ, φ) {
3918   λ *= d3_radians;
3919   var cosφ = Math.cos(φ *= d3_radians);
3920   d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
3921 }
3922
3923 function d3_geo_centroidPointXYZ(x, y, z) {
3924   ++d3_geo_centroidW0;
3925   d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
3926   d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
3927   d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
3928 }
3929
3930 function d3_geo_centroidLineStart() {
3931   var x0, y0, z0; // previous point
3932
3933   d3_geo_centroid.point = function(λ, φ) {
3934     λ *= d3_radians;
3935     var cosφ = Math.cos(φ *= d3_radians);
3936     x0 = cosφ * Math.cos(λ);
3937     y0 = cosφ * Math.sin(λ);
3938     z0 = Math.sin(φ);
3939     d3_geo_centroid.point = nextPoint;
3940     d3_geo_centroidPointXYZ(x0, y0, z0);
3941   };
3942
3943   function nextPoint(λ, φ) {
3944     λ *= d3_radians;
3945     var cosφ = Math.cos(φ *= d3_radians),
3946         x = cosφ * Math.cos(λ),
3947         y = cosφ * Math.sin(λ),
3948         z = Math.sin(φ),
3949         w = Math.atan2(
3950           Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w),
3951           x0 * x + y0 * y + z0 * z);
3952     d3_geo_centroidW1 += w;
3953     d3_geo_centroidX1 += w * (x0 + (x0 = x));
3954     d3_geo_centroidY1 += w * (y0 + (y0 = y));
3955     d3_geo_centroidZ1 += w * (z0 + (z0 = z));
3956     d3_geo_centroidPointXYZ(x0, y0, z0);
3957   }
3958 }
3959
3960 function d3_geo_centroidLineEnd() {
3961   d3_geo_centroid.point = d3_geo_centroidPoint;
3962 }
3963
3964 // See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
3965 // J. Applied Mechanics 42, 239 (1975).
3966 function d3_geo_centroidRingStart() {
3967   var λ00, φ00, // first point
3968       x0, y0, z0; // previous point
3969
3970   d3_geo_centroid.point = function(λ, φ) {
3971     λ00 = λ, φ00 = φ;
3972     d3_geo_centroid.point = nextPoint;
3973     λ *= d3_radians;
3974     var cosφ = Math.cos(φ *= d3_radians);
3975     x0 = cosφ * Math.cos(λ);
3976     y0 = cosφ * Math.sin(λ);
3977     z0 = Math.sin(φ);
3978     d3_geo_centroidPointXYZ(x0, y0, z0);
3979   };
3980
3981   d3_geo_centroid.lineEnd = function() {
3982     nextPoint(λ00, φ00);
3983     d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
3984     d3_geo_centroid.point = d3_geo_centroidPoint;
3985   };
3986
3987   function nextPoint(λ, φ) {
3988     λ *= d3_radians;
3989     var cosφ = Math.cos(φ *= d3_radians),
3990         x = cosφ * Math.cos(λ),
3991         y = cosφ * Math.sin(λ),
3992         z = Math.sin(φ),
3993         cx = y0 * z - z0 * y,
3994         cy = z0 * x - x0 * z,
3995         cz = x0 * y - y0 * x,
3996         m = Math.sqrt(cx * cx + cy * cy + cz * cz),
3997         u = x0 * x + y0 * y + z0 * z,
3998         v = m && -d3_acos(u) / m, // area weight
3999         w = Math.atan2(m, u); // line weight
4000     d3_geo_centroidX2 += v * cx;
4001     d3_geo_centroidY2 += v * cy;
4002     d3_geo_centroidZ2 += v * cz;
4003     d3_geo_centroidW1 += w;
4004     d3_geo_centroidX1 += w * (x0 + (x0 = x));
4005     d3_geo_centroidY1 += w * (y0 + (y0 = y));
4006     d3_geo_centroidZ1 += w * (z0 + (z0 = z));
4007     d3_geo_centroidPointXYZ(x0, y0, z0);
4008   }
4009 }
4010
4011 // TODO Unify this code with d3.geom.polygon area?
4012
4013 var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
4014   point: d3_noop,
4015   lineStart: d3_noop,
4016   lineEnd: d3_noop,
4017
4018   // Only count area for polygon rings.
4019   polygonStart: function() {
4020     d3_geo_pathAreaPolygon = 0;
4021     d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
4022   },
4023   polygonEnd: function() {
4024     d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
4025     d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);
4026   }
4027 };
4028
4029 function d3_geo_pathAreaRingStart() {
4030   var x00, y00, x0, y0;
4031
4032   // For the first point, …
4033   d3_geo_pathArea.point = function(x, y) {
4034     d3_geo_pathArea.point = nextPoint;
4035     x00 = x0 = x, y00 = y0 = y;
4036   };
4037
4038   // For subsequent points, …
4039   function nextPoint(x, y) {
4040     d3_geo_pathAreaPolygon += y0 * x - x0 * y;
4041     x0 = x, y0 = y;
4042   }
4043
4044   // For the last point, return to the start.
4045   d3_geo_pathArea.lineEnd = function() {
4046     nextPoint(x00, y00);
4047   };
4048 }
4049
4050 var d3_geo_pathBoundsX0,
4051     d3_geo_pathBoundsY0,
4052     d3_geo_pathBoundsX1,
4053     d3_geo_pathBoundsY1;
4054
4055 var d3_geo_pathBounds = {
4056   point: d3_geo_pathBoundsPoint,
4057   lineStart: d3_noop,
4058   lineEnd: d3_noop,
4059   polygonStart: d3_noop,
4060   polygonEnd: d3_noop
4061 };
4062
4063 function d3_geo_pathBoundsPoint(x, y) {
4064   if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
4065   if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
4066   if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
4067   if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
4068 }
4069 function d3_geo_pathBuffer() {
4070   var pointCircle = d3_geo_pathBufferCircle(4.5),
4071       buffer = [];
4072
4073   var stream = {
4074     point: point,
4075
4076     // While inside a line, override point to moveTo then lineTo.
4077     lineStart: function() { stream.point = pointLineStart; },
4078     lineEnd: lineEnd,
4079
4080     // While inside a polygon, override lineEnd to closePath.
4081     polygonStart: function() { stream.lineEnd = lineEndPolygon; },
4082     polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },
4083
4084     pointRadius: function(_) {
4085       pointCircle = d3_geo_pathBufferCircle(_);
4086       return stream;
4087     },
4088
4089     result: function() {
4090       if (buffer.length) {
4091         var result = buffer.join("");
4092         buffer = [];
4093         return result;
4094       }
4095     }
4096   };
4097
4098   function point(x, y) {
4099     buffer.push("M", x, ",", y, pointCircle);
4100   }
4101
4102   function pointLineStart(x, y) {
4103     buffer.push("M", x, ",", y);
4104     stream.point = pointLine;
4105   }
4106
4107   function pointLine(x, y) {
4108     buffer.push("L", x, ",", y);
4109   }
4110
4111   function lineEnd() {
4112     stream.point = point;
4113   }
4114
4115   function lineEndPolygon() {
4116     buffer.push("Z");
4117   }
4118
4119   return stream;
4120 }
4121
4122 function d3_geo_pathBufferCircle(radius) {
4123   return "m0," + radius
4124       + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
4125       + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
4126       + "z";
4127 }
4128
4129 // TODO Unify this code with d3.geom.polygon centroid?
4130 // TODO Enforce positive area for exterior, negative area for interior?
4131
4132 var d3_geo_pathCentroid = {
4133   point: d3_geo_pathCentroidPoint,
4134
4135   // For lines, weight by length.
4136   lineStart: d3_geo_pathCentroidLineStart,
4137   lineEnd: d3_geo_pathCentroidLineEnd,
4138
4139   // For polygons, weight by area.
4140   polygonStart: function() {
4141     d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
4142   },
4143   polygonEnd: function() {
4144     d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
4145     d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
4146     d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
4147   }
4148 };
4149
4150 function d3_geo_pathCentroidPoint(x, y) {
4151   d3_geo_centroidX0 += x;
4152   d3_geo_centroidY0 += y;
4153   ++d3_geo_centroidZ0;
4154 }
4155
4156 function d3_geo_pathCentroidLineStart() {
4157   var x0, y0;
4158
4159   d3_geo_pathCentroid.point = function(x, y) {
4160     d3_geo_pathCentroid.point = nextPoint;
4161     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4162   };
4163
4164   function nextPoint(x, y) {
4165     var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
4166     d3_geo_centroidX1 += z * (x0 + x) / 2;
4167     d3_geo_centroidY1 += z * (y0 + y) / 2;
4168     d3_geo_centroidZ1 += z;
4169     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4170   }
4171 }
4172
4173 function d3_geo_pathCentroidLineEnd() {
4174   d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
4175 }
4176
4177 function d3_geo_pathCentroidRingStart() {
4178   var x00, y00, x0, y0;
4179
4180   // For the first point, …
4181   d3_geo_pathCentroid.point = function(x, y) {
4182     d3_geo_pathCentroid.point = nextPoint;
4183     d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
4184   };
4185
4186   // For subsequent points, …
4187   function nextPoint(x, y) {
4188     var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
4189     d3_geo_centroidX1 += z * (x0 + x) / 2;
4190     d3_geo_centroidY1 += z * (y0 + y) / 2;
4191     d3_geo_centroidZ1 += z;
4192
4193     z = y0 * x - x0 * y;
4194     d3_geo_centroidX2 += z * (x0 + x);
4195     d3_geo_centroidY2 += z * (y0 + y);
4196     d3_geo_centroidZ2 += z * 3;
4197     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4198   }
4199
4200   // For the last point, return to the start.
4201   d3_geo_pathCentroid.lineEnd = function() {
4202     nextPoint(x00, y00);
4203   };
4204 }
4205
4206 function d3_geo_pathContext(context) {
4207   var pointRadius = 4.5;
4208
4209   var stream = {
4210     point: point,
4211
4212     // While inside a line, override point to moveTo then lineTo.
4213     lineStart: function() { stream.point = pointLineStart; },
4214     lineEnd: lineEnd,
4215
4216     // While inside a polygon, override lineEnd to closePath.
4217     polygonStart: function() { stream.lineEnd = lineEndPolygon; },
4218     polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },
4219
4220     pointRadius: function(_) {
4221       pointRadius = _;
4222       return stream;
4223     },
4224
4225     result: d3_noop
4226   };
4227
4228   function point(x, y) {
4229     context.moveTo(x + pointRadius, y);
4230     context.arc(x, y, pointRadius, 0, τ);
4231   }
4232
4233   function pointLineStart(x, y) {
4234     context.moveTo(x, y);
4235     stream.point = pointLine;
4236   }
4237
4238   function pointLine(x, y) {
4239     context.lineTo(x, y);
4240   }
4241
4242   function lineEnd() {
4243     stream.point = point;
4244   }
4245
4246   function lineEndPolygon() {
4247     context.closePath();
4248   }
4249
4250   return stream;
4251 }
4252
4253 function d3_geo_resample(project) {
4254   var δ2 = .5, // precision, px²
4255       cosMinDistance = Math.cos(30 * d3_radians), // cos(minimum angular distance)
4256       maxDepth = 16;
4257
4258   function resample(stream) {
4259     return (maxDepth ? resampleRecursive : resampleNone)(stream);
4260   }
4261
4262   function resampleNone(stream) {
4263     return d3_geo_transformPoint(stream, function(x, y) {
4264       x = project(x, y);
4265       stream.point(x[0], x[1]);
4266     });
4267   }
4268
4269   function resampleRecursive(stream) {
4270     var λ00, φ00, x00, y00, a00, b00, c00, // first point
4271         λ0, x0, y0, a0, b0, c0; // previous point
4272
4273     var resample = {
4274       point: point,
4275       lineStart: lineStart,
4276       lineEnd: lineEnd,
4277       polygonStart: function() { stream.polygonStart(); resample.lineStart = ringStart; },
4278       polygonEnd: function() { stream.polygonEnd(); resample.lineStart = lineStart; }
4279     };
4280
4281     function point(x, y) {
4282       x = project(x, y);
4283       stream.point(x[0], x[1]);
4284     }
4285
4286     function lineStart() {
4287       x0 = NaN;
4288       resample.point = linePoint;
4289       stream.lineStart();
4290     }
4291
4292     function linePoint(λ, φ) {
4293       var c = d3_geo_cartesian([λ, φ]), p = project(λ, φ);
4294       resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
4295       stream.point(x0, y0);
4296     }
4297
4298     function lineEnd() {
4299       resample.point = point;
4300       stream.lineEnd();
4301     }
4302
4303     function ringStart() {
4304       lineStart();
4305       resample.point = ringPoint;
4306       resample.lineEnd = ringEnd;
4307     }
4308
4309     function ringPoint(λ, φ) {
4310       linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
4311       resample.point = linePoint;
4312     }
4313
4314     function ringEnd() {
4315       resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
4316       resample.lineEnd = lineEnd;
4317       lineEnd();
4318     }
4319
4320     return resample;
4321   }
4322
4323   function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
4324     var dx = x1 - x0,
4325         dy = y1 - y0,
4326         d2 = dx * dx + dy * dy;
4327     if (d2 > 4 * δ2 && depth--) {
4328       var a = a0 + a1,
4329           b = b0 + b1,
4330           c = c0 + c1,
4331           m = Math.sqrt(a * a + b * b + c * c),
4332           φ2 = Math.asin(c /= m),
4333           λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a),
4334           p = project(λ2, φ2),
4335           x2 = p[0],
4336           y2 = p[1],
4337           dx2 = x2 - x0,
4338           dy2 = y2 - y0,
4339           dz = dy * dx2 - dx * dy2;
4340       if (dz * dz / d2 > δ2 // perpendicular projected distance
4341           || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 // midpoint close to an end
4342           || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
4343         resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
4344         stream.point(x2, y2);
4345         resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
4346       }
4347     }
4348   }
4349
4350   resample.precision = function(_) {
4351     if (!arguments.length) return Math.sqrt(δ2);
4352     maxDepth = (δ2 = _ * _) > 0 && 16;
4353     return resample;
4354   };
4355
4356   return resample;
4357 }
4358
4359 d3.geo.path = function() {
4360   var pointRadius = 4.5,
4361       projection,
4362       context,
4363       projectStream,
4364       contextStream,
4365       cacheStream;
4366
4367   function path(object) {
4368     if (object) {
4369       if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
4370       if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);
4371       d3.geo.stream(object, cacheStream);
4372     }
4373     return contextStream.result();
4374   }
4375
4376   path.area = function(object) {
4377     d3_geo_pathAreaSum = 0;
4378     d3.geo.stream(object, projectStream(d3_geo_pathArea));
4379     return d3_geo_pathAreaSum;
4380   };
4381
4382   path.centroid = function(object) {
4383     d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 =
4384     d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
4385     d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
4386     d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
4387     return d3_geo_centroidZ2 ? [d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2]
4388         : d3_geo_centroidZ1 ? [d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1]
4389         : d3_geo_centroidZ0 ? [d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0]
4390         : [NaN, NaN];
4391   };
4392
4393   path.bounds = function(object) {
4394     d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);
4395     d3.geo.stream(object, projectStream(d3_geo_pathBounds));
4396     return [[d3_geo_pathBoundsX0, d3_geo_pathBoundsY0], [d3_geo_pathBoundsX1, d3_geo_pathBoundsY1]];
4397   };
4398
4399   path.projection = function(_) {
4400     if (!arguments.length) return projection;
4401     projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
4402     return reset();
4403   };
4404
4405   path.context = function(_) {
4406     if (!arguments.length) return context;
4407     contextStream = (context = _) == null ? new d3_geo_pathBuffer : new d3_geo_pathContext(_);
4408     if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
4409     return reset();
4410   };
4411
4412   path.pointRadius = function(_) {
4413     if (!arguments.length) return pointRadius;
4414     pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
4415     return path;
4416   };
4417
4418   function reset() {
4419     cacheStream = null;
4420     return path;
4421   }
4422
4423   return path.projection(d3.geo.albersUsa()).context(null);
4424 };
4425
4426 function d3_geo_pathProjectStream(project) {
4427   var resample = d3_geo_resample(function(x, y) { return project([x * d3_degrees, y * d3_degrees]); });
4428   return function(stream) { return d3_geo_projectionRadians(resample(stream)); };
4429 }
4430
4431 d3.geo.transform = function(methods) {
4432   return {
4433     stream: function(stream) {
4434       var transform = new d3_geo_transform(stream);
4435       for (var k in methods) transform[k] = methods[k];
4436       return transform;
4437     }
4438   };
4439 };
4440
4441 function d3_geo_transform(stream) {
4442   this.stream = stream;
4443 }
4444
4445 d3_geo_transform.prototype = {
4446   point: function(x, y) { this.stream.point(x, y); },
4447   sphere: function() { this.stream.sphere(); },
4448   lineStart: function() { this.stream.lineStart(); },
4449   lineEnd: function() { this.stream.lineEnd(); },
4450   polygonStart: function() { this.stream.polygonStart(); },
4451   polygonEnd: function() { this.stream.polygonEnd(); }
4452 };
4453
4454 function d3_geo_transformPoint(stream, point) {
4455   return {
4456     point: point,
4457     sphere: function() { stream.sphere(); },
4458     lineStart: function() { stream.lineStart(); },
4459     lineEnd: function() { stream.lineEnd(); },
4460     polygonStart: function() { stream.polygonStart(); },
4461     polygonEnd: function() { stream.polygonEnd(); },
4462   };
4463 }
4464
4465 d3.geo.projection = d3_geo_projection;
4466 d3.geo.projectionMutator = d3_geo_projectionMutator;
4467
4468 function d3_geo_projection(project) {
4469   return d3_geo_projectionMutator(function() { return project; })();
4470 }
4471
4472 function d3_geo_projectionMutator(projectAt) {
4473   var project,
4474       rotate,
4475       projectRotate,
4476       projectResample = d3_geo_resample(function(x, y) { x = project(x, y); return [x[0] * k + δx, δy - x[1] * k]; }),
4477       k = 150, // scale
4478       x = 480, y = 250, // translate
4479       λ = 0, φ = 0, // center
4480       δλ = 0, δφ = 0, δγ = 0, // rotate
4481       δx, δy, // center
4482       preclip = d3_geo_clipAntimeridian,
4483       postclip = d3_identity,
4484       clipAngle = null,
4485       clipExtent = null,
4486       stream;
4487
4488   function projection(point) {
4489     point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
4490     return [point[0] * k + δx, δy - point[1] * k];
4491   }
4492
4493   function invert(point) {
4494     point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
4495     return point && [point[0] * d3_degrees, point[1] * d3_degrees];
4496   }
4497
4498   projection.stream = function(output) {
4499     if (stream) stream.valid = false;
4500     stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));
4501     stream.valid = true; // allow caching by d3.geo.path
4502     return stream;
4503   };
4504
4505   projection.clipAngle = function(_) {
4506     if (!arguments.length) return clipAngle;
4507     preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
4508     return invalidate();
4509   };
4510
4511   projection.clipExtent = function(_) {
4512     if (!arguments.length) return clipExtent;
4513     clipExtent = _;
4514     postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
4515     return invalidate();
4516   };
4517
4518   projection.scale = function(_) {
4519     if (!arguments.length) return k;
4520     k = +_;
4521     return reset();
4522   };
4523
4524   projection.translate = function(_) {
4525     if (!arguments.length) return [x, y];
4526     x = +_[0];
4527     y = +_[1];
4528     return reset();
4529   };
4530
4531   projection.center = function(_) {
4532     if (!arguments.length) return [λ * d3_degrees, φ * d3_degrees];
4533     λ = _[0] % 360 * d3_radians;
4534     φ = _[1] % 360 * d3_radians;
4535     return reset();
4536   };
4537
4538   projection.rotate = function(_) {
4539     if (!arguments.length) return [δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees];
4540     δλ = _[0] % 360 * d3_radians;
4541     δφ = _[1] % 360 * d3_radians;
4542     δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
4543     return reset();
4544   };
4545
4546   d3.rebind(projection, projectResample, "precision");
4547
4548   function reset() {
4549     projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
4550     var center = project(λ, φ);
4551     δx = x - center[0] * k;
4552     δy = y + center[1] * k;
4553     return invalidate();
4554   }
4555
4556   function invalidate() {
4557     if (stream) stream.valid = false, stream = null;
4558     return projection;
4559   }
4560
4561   return function() {
4562     project = projectAt.apply(this, arguments);
4563     projection.invert = project.invert && invert;
4564     return reset();
4565   };
4566 }
4567
4568 function d3_geo_projectionRadians(stream) {
4569   return d3_geo_transformPoint(stream, function(x, y) {
4570     stream.point(x * d3_radians, y * d3_radians);
4571   });
4572 }
4573
4574 function d3_geo_mercator(λ, φ) {
4575   return [λ, Math.log(Math.tan(π / 4 + φ / 2))];
4576 }
4577
4578 d3_geo_mercator.invert = function(x, y) {
4579   return [x, 2 * Math.atan(Math.exp(y)) - halfπ];
4580 };
4581
4582 function d3_geo_mercatorProjection(project) {
4583   var m = d3_geo_projection(project),
4584       scale = m.scale,
4585       translate = m.translate,
4586       clipExtent = m.clipExtent,
4587       clipAuto;
4588
4589   m.scale = function() {
4590     var v = scale.apply(m, arguments);
4591     return v === m ? (clipAuto ? m.clipExtent(null) : m) : v;
4592   };
4593
4594   m.translate = function() {
4595     var v = translate.apply(m, arguments);
4596     return v === m ? (clipAuto ? m.clipExtent(null) : m) : v;
4597   };
4598
4599   m.clipExtent = function(_) {
4600     var v = clipExtent.apply(m, arguments);
4601     if (v === m) {
4602       if (clipAuto = _ == null) {
4603         var k = π * scale(), t = translate();
4604         clipExtent([[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]]);
4605       }
4606     } else if (clipAuto) {
4607       v = null;
4608     }
4609     return v;
4610   };
4611
4612   return m.clipExtent(null);
4613 }
4614
4615 (d3.geo.mercator = function() {
4616   return d3_geo_mercatorProjection(d3_geo_mercator);
4617 }).raw = d3_geo_mercator;
4618 d3.geom = {};
4619
4620 d3.geom.polygon = function(coordinates) {
4621   d3_subclass(coordinates, d3_geom_polygonPrototype);
4622   return coordinates;
4623 };
4624
4625 var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];
4626
4627 d3_geom_polygonPrototype.area = function() {
4628   var i = -1,
4629       n = this.length,
4630       a,
4631       b = this[n - 1],
4632       area = 0;
4633
4634   while (++i < n) {
4635     a = b;
4636     b = this[i];
4637     area += a[1] * b[0] - a[0] * b[1];
4638   }
4639
4640   return area * .5;
4641 };
4642
4643 d3_geom_polygonPrototype.centroid = function(k) {
4644   var i = -1,
4645       n = this.length,
4646       x = 0,
4647       y = 0,
4648       a,
4649       b = this[n - 1],
4650       c;
4651
4652   if (!arguments.length) k = -1 / (6 * this.area());
4653
4654   while (++i < n) {
4655     a = b;
4656     b = this[i];
4657     c = a[0] * b[1] - b[0] * a[1];
4658     x += (a[0] + b[0]) * c;
4659     y += (a[1] + b[1]) * c;
4660   }
4661
4662   return [x * k, y * k];
4663 };
4664
4665 // The Sutherland-Hodgman clipping algorithm.
4666 // Note: requires the clip polygon to be counterclockwise and convex.
4667 d3_geom_polygonPrototype.clip = function(subject) {
4668   var input,
4669       closed = d3_geom_polygonClosed(subject),
4670       i = -1,
4671       n = this.length - d3_geom_polygonClosed(this),
4672       j,
4673       m,
4674       a = this[n - 1],
4675       b,
4676       c,
4677       d;
4678
4679   while (++i < n) {
4680     input = subject.slice();
4681     subject.length = 0;
4682     b = this[i];
4683     c = input[(m = input.length - closed) - 1];
4684     j = -1;
4685     while (++j < m) {
4686       d = input[j];
4687       if (d3_geom_polygonInside(d, a, b)) {
4688         if (!d3_geom_polygonInside(c, a, b)) {
4689           subject.push(d3_geom_polygonIntersect(c, d, a, b));
4690         }
4691         subject.push(d);
4692       } else if (d3_geom_polygonInside(c, a, b)) {
4693         subject.push(d3_geom_polygonIntersect(c, d, a, b));
4694       }
4695       c = d;
4696     }
4697     if (closed) subject.push(subject[0]);
4698     a = b;
4699   }
4700
4701   return subject;
4702 };
4703
4704 function d3_geom_polygonInside(p, a, b) {
4705   return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
4706 }
4707
4708 // Intersect two infinite lines cd and ab.
4709 function d3_geom_polygonIntersect(c, d, a, b) {
4710   var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3,
4711       y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3,
4712       ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
4713   return [x1 + ua * x21, y1 + ua * y21];
4714 }
4715
4716 // Returns true if the polygon is closed.
4717 function d3_geom_polygonClosed(coordinates) {
4718   var a = coordinates[0],
4719       b = coordinates[coordinates.length - 1];
4720   return !(a[0] - b[0] || a[1] - b[1]);
4721 }
4722 function d3_geom_pointX(d) {
4723   return d[0];
4724 }
4725
4726 function d3_geom_pointY(d) {
4727   return d[1];
4728 }
4729
4730 /**
4731  * Computes the 2D convex hull of a set of points using the monotone chain
4732  * algorithm:
4733  * http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain)
4734  *
4735  * The runtime of this algorithm is O(n log n), where n is the number of input
4736  * points. However in practice it outperforms other O(n log n) hulls.
4737  *
4738  * @param vertices [[x1, y1], [x2, y2], ...]
4739  * @returns polygon [[x1, y1], [x2, y2], ...]
4740  */
4741 d3.geom.hull = function(vertices) {
4742   var x = d3_geom_pointX,
4743       y = d3_geom_pointY;
4744
4745   if (arguments.length) return hull(vertices);
4746
4747   function hull(data) {
4748     // Hull of < 3 points is not well-defined
4749     if (data.length < 3) return [];
4750
4751     var fx = d3_functor(x),
4752         fy = d3_functor(y),
4753         i,
4754         n = data.length,
4755         points = [], // of the form [[x0, y0, 0], ..., [xn, yn, n]]
4756         flippedPoints = [];
4757
4758     for (i = 0 ; i < n; i++) {
4759       points.push([+fx.call(this, data[i], i), +fy.call(this, data[i], i), i]);
4760     }
4761
4762     // sort ascending by x-coord first, y-coord second
4763     points.sort(d3_geom_hullOrder);
4764
4765     // we flip bottommost points across y axis so we can use the upper hull routine on both
4766     for (i = 0; i < n; i++) flippedPoints.push([points[i][0], -points[i][1]]);
4767
4768     var upper = d3_geom_hullUpper(points),
4769         lower = d3_geom_hullUpper(flippedPoints);
4770
4771     // construct the polygon, removing possible duplicate endpoints
4772     var skipLeft = lower[0] === upper[0],
4773         skipRight  = lower[lower.length - 1] === upper[upper.length - 1],
4774         polygon = [];
4775
4776     // add upper hull in r->l order
4777     // then add lower hull in l->r order
4778     for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);
4779     for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);
4780
4781     return polygon;
4782   }
4783
4784   hull.x = function(_) {
4785     return arguments.length ? (x = _, hull) : x;
4786   };
4787
4788   hull.y = function(_) {
4789     return arguments.length ? (y = _, hull) : y;
4790   };
4791
4792   return hull;
4793 };
4794
4795 // finds the 'upper convex hull' (see wiki link above)
4796 // assumes points arg has >=3 elements, is sorted by x, unique in y
4797 // returns array of indices into points in left to right order
4798 function d3_geom_hullUpper(points) {
4799   var n = points.length,
4800       hull = [0, 1],
4801       hs = 2; // hull size
4802
4803   for (var i = 2; i < n; i++) {
4804     while (hs > 1 && d3_cross2d(points[hull[hs-2]], points[hull[hs-1]], points[i]) <= 0) --hs;
4805     hull[hs++] = i;
4806   }
4807
4808   // we slice to make sure that the points we 'popped' from hull don't stay behind
4809   return hull.slice(0, hs);
4810 }
4811
4812 // comparator for ascending sort by x-coord first, y-coord second
4813 function d3_geom_hullOrder(a, b) {
4814   return a[0] - b[0] || a[1] - b[1];
4815 }
4816 // import "../transition/transition";
4817
4818 d3_selectionPrototype.transition = function(name) {
4819   var id = d3_transitionInheritId || ++d3_transitionId,
4820       ns = d3_transitionNamespace(name),
4821       subgroups = [],
4822       subgroup,
4823       node,
4824       transition = d3_transitionInherit || {time: Date.now(), ease: d3_ease_cubicInOut, delay: 0, duration: 250};
4825
4826   for (var j = -1, m = this.length; ++j < m;) {
4827     subgroups.push(subgroup = []);
4828     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4829       if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
4830       subgroup.push(node);
4831     }
4832   }
4833
4834   return d3_transition(subgroups, ns, id);
4835 };
4836 // import "../transition/transition";
4837
4838 // TODO Interrupt transitions for all namespaces?
4839 d3_selectionPrototype.interrupt = function(name) {
4840   return this.each(name == null
4841       ? d3_selection_interrupt
4842       : d3_selection_interruptNS(d3_transitionNamespace(name)));
4843 };
4844
4845 var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());
4846
4847 function d3_selection_interruptNS(ns) {
4848   return function() {
4849     var lock, active;
4850     if ((lock = this[ns]) && (active = lock[lock.active])) {
4851       if (--lock.count) delete lock[lock.active];
4852       else delete this[ns];
4853       lock.active += .5;
4854       active.event && active.event.interrupt.call(this, this.__data__, active.index);
4855     }
4856   };
4857 }
4858
4859 function d3_transition(groups, ns, id) {
4860   d3_subclass(groups, d3_transitionPrototype);
4861
4862   // Note: read-only!
4863   groups.namespace = ns;
4864   groups.id = id;
4865
4866   return groups;
4867 }
4868
4869 var d3_transitionPrototype = [],
4870     d3_transitionId = 0,
4871     d3_transitionInheritId,
4872     d3_transitionInherit;
4873
4874 d3_transitionPrototype.call = d3_selectionPrototype.call;
4875 d3_transitionPrototype.empty = d3_selectionPrototype.empty;
4876 d3_transitionPrototype.node = d3_selectionPrototype.node;
4877 d3_transitionPrototype.size = d3_selectionPrototype.size;
4878
4879 d3.transition = function(selection, name) {
4880   return selection && selection.transition
4881       ? (d3_transitionInheritId ? selection.transition(name) : selection)
4882       : d3.selection().transition(selection);
4883 };
4884
4885 d3.transition.prototype = d3_transitionPrototype;
4886
4887
4888 d3_transitionPrototype.select = function(selector) {
4889   var id = this.id,
4890       ns = this.namespace,
4891       subgroups = [],
4892       subgroup,
4893       subnode,
4894       node;
4895
4896   selector = d3_selection_selector(selector);
4897
4898   for (var j = -1, m = this.length; ++j < m;) {
4899     subgroups.push(subgroup = []);
4900     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4901       if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
4902         if ("__data__" in node) subnode.__data__ = node.__data__;
4903         d3_transitionNode(subnode, i, ns, id, node[ns][id]);
4904         subgroup.push(subnode);
4905       } else {
4906         subgroup.push(null);
4907       }
4908     }
4909   }
4910
4911   return d3_transition(subgroups, ns, id);
4912 };
4913
4914 d3_transitionPrototype.selectAll = function(selector) {
4915   var id = this.id,
4916       ns = this.namespace,
4917       subgroups = [],
4918       subgroup,
4919       subnodes,
4920       node,
4921       subnode,
4922       transition;
4923
4924   selector = d3_selection_selectorAll(selector);
4925
4926   for (var j = -1, m = this.length; ++j < m;) {
4927     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4928       if (node = group[i]) {
4929         transition = node[ns][id];
4930         subnodes = selector.call(node, node.__data__, i, j);
4931         subgroups.push(subgroup = []);
4932         for (var k = -1, o = subnodes.length; ++k < o;) {
4933           if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
4934           subgroup.push(subnode);
4935         }
4936       }
4937     }
4938   }
4939
4940   return d3_transition(subgroups, ns, id);
4941 };
4942
4943 d3_transitionPrototype.filter = function(filter) {
4944   var subgroups = [],
4945       subgroup,
4946       group,
4947       node;
4948
4949   if (typeof filter !== "function") filter = d3_selection_filter(filter);
4950
4951   for (var j = 0, m = this.length; j < m; j++) {
4952     subgroups.push(subgroup = []);
4953     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
4954       if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
4955         subgroup.push(node);
4956       }
4957     }
4958   }
4959
4960   return d3_transition(subgroups, this.namespace, this.id);
4961 };
4962 d3.color = d3_color;
4963
4964 function d3_color() {}
4965
4966 d3_color.prototype.toString = function() {
4967   return this.rgb() + "";
4968 };
4969
4970 d3.hsl = d3_hsl;
4971
4972 function d3_hsl(h, s, l) {
4973   return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l)
4974       : arguments.length < 2 ? (h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l)
4975       : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
4976       : new d3_hsl(h, s, l);
4977 }
4978
4979 var d3_hslPrototype = d3_hsl.prototype = new d3_color;
4980
4981 d3_hslPrototype.brighter = function(k) {
4982   k = Math.pow(0.7, arguments.length ? k : 1);
4983   return new d3_hsl(this.h, this.s, this.l / k);
4984 };
4985
4986 d3_hslPrototype.darker = function(k) {
4987   k = Math.pow(0.7, arguments.length ? k : 1);
4988   return new d3_hsl(this.h, this.s, k * this.l);
4989 };
4990
4991 d3_hslPrototype.rgb = function() {
4992   return d3_hsl_rgb(this.h, this.s, this.l);
4993 };
4994
4995 function d3_hsl_rgb(h, s, l) {
4996   var m1,
4997       m2;
4998
4999   /* Some simple corrections for h, s and l. */
5000   h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
5001   s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
5002   l = l < 0 ? 0 : l > 1 ? 1 : l;
5003
5004   /* From FvD 13.37, CSS Color Module Level 3 */
5005   m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
5006   m1 = 2 * l - m2;
5007
5008   function v(h) {
5009     if (h > 360) h -= 360;
5010     else if (h < 0) h += 360;
5011     if (h < 60) return m1 + (m2 - m1) * h / 60;
5012     if (h < 180) return m2;
5013     if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
5014     return m1;
5015   }
5016
5017   function vv(h) {
5018     return Math.round(v(h) * 255);
5019   }
5020
5021   return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
5022 }
5023
5024 d3.hcl = d3_hcl;
5025
5026 function d3_hcl(h, c, l) {
5027   return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l)
5028       : arguments.length < 2 ? (h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l)
5029       : (h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b)
5030       : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
5031       : new d3_hcl(h, c, l);
5032 }
5033
5034 var d3_hclPrototype = d3_hcl.prototype = new d3_color;
5035
5036 d3_hclPrototype.brighter = function(k) {
5037   return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
5038 };
5039
5040 d3_hclPrototype.darker = function(k) {
5041   return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
5042 };
5043
5044 d3_hclPrototype.rgb = function() {
5045   return d3_hcl_lab(this.h, this.c, this.l).rgb();
5046 };
5047
5048 function d3_hcl_lab(h, c, l) {
5049   if (isNaN(h)) h = 0;
5050   if (isNaN(c)) c = 0;
5051   return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
5052 }
5053
5054 d3.lab = d3_lab;
5055
5056 function d3_lab(l, a, b) {
5057   return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b)
5058       : arguments.length < 2 ? (l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b)
5059       : (l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l)
5060       : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b)))
5061       : new d3_lab(l, a, b);
5062 }
5063
5064 // Corresponds roughly to RGB brighter/darker
5065 var d3_lab_K = 18;
5066
5067 // D65 standard referent
5068 var d3_lab_X = 0.950470,
5069     d3_lab_Y = 1,
5070     d3_lab_Z = 1.088830;
5071
5072 var d3_labPrototype = d3_lab.prototype = new d3_color;
5073
5074 d3_labPrototype.brighter = function(k) {
5075   return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
5076 };
5077
5078 d3_labPrototype.darker = function(k) {
5079   return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
5080 };
5081
5082 d3_labPrototype.rgb = function() {
5083   return d3_lab_rgb(this.l, this.a, this.b);
5084 };
5085
5086 function d3_lab_rgb(l, a, b) {
5087   var y = (l + 16) / 116,
5088       x = y + a / 500,
5089       z = y - b / 200;
5090   x = d3_lab_xyz(x) * d3_lab_X;
5091   y = d3_lab_xyz(y) * d3_lab_Y;
5092   z = d3_lab_xyz(z) * d3_lab_Z;
5093   return new d3_rgb(
5094     d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
5095     d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
5096     d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
5097   );
5098 }
5099
5100 function d3_lab_hcl(l, a, b) {
5101   return l > 0
5102       ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
5103       : new d3_hcl(NaN, NaN, l);
5104 }
5105
5106 function d3_lab_xyz(x) {
5107   return x > 0.206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
5108 }
5109 function d3_xyz_lab(x) {
5110   return x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
5111 }
5112
5113 function d3_xyz_rgb(r) {
5114   return Math.round(255 * (r <= 0.00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055));
5115 }
5116
5117 d3.rgb = d3_rgb;
5118
5119 function d3_rgb(r, g, b) {
5120   return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b)
5121       : arguments.length < 2 ? (r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b)
5122       : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
5123       : new d3_rgb(r, g, b);
5124 }
5125
5126 function d3_rgbNumber(value) {
5127   return new d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
5128 }
5129
5130 function d3_rgbString(value) {
5131   return d3_rgbNumber(value) + "";
5132 }
5133
5134 var d3_rgbPrototype = d3_rgb.prototype = new d3_color;
5135
5136 d3_rgbPrototype.brighter = function(k) {
5137   k = Math.pow(0.7, arguments.length ? k : 1);
5138   var r = this.r,
5139       g = this.g,
5140       b = this.b,
5141       i = 30;
5142   if (!r && !g && !b) return new d3_rgb(i, i, i);
5143   if (r && r < i) r = i;
5144   if (g && g < i) g = i;
5145   if (b && b < i) b = i;
5146   return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
5147 };
5148
5149 d3_rgbPrototype.darker = function(k) {
5150   k = Math.pow(0.7, arguments.length ? k : 1);
5151   return new d3_rgb(k * this.r, k * this.g, k * this.b);
5152 };
5153
5154 d3_rgbPrototype.hsl = function() {
5155   return d3_rgb_hsl(this.r, this.g, this.b);
5156 };
5157
5158 d3_rgbPrototype.toString = function() {
5159   return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
5160 };
5161
5162 function d3_rgb_hex(v) {
5163   return v < 0x10
5164       ? "0" + Math.max(0, v).toString(16)
5165       : Math.min(255, v).toString(16);
5166 }
5167
5168 function d3_rgb_parse(format, rgb, hsl) {
5169   var r = 0, // red channel; int in [0, 255]
5170       g = 0, // green channel; int in [0, 255]
5171       b = 0, // blue channel; int in [0, 255]
5172       m1, // CSS color specification match
5173       m2, // CSS color specification type (e.g., rgb)
5174       color;
5175
5176   /* Handle hsl, rgb. */
5177   m1 = /([a-z]+)\((.*)\)/i.exec(format);
5178   if (m1) {
5179     m2 = m1[2].split(",");
5180     switch (m1[1]) {
5181       case "hsl": {
5182         return hsl(
5183           parseFloat(m2[0]), // degrees
5184           parseFloat(m2[1]) / 100, // percentage
5185           parseFloat(m2[2]) / 100 // percentage
5186         );
5187       }
5188       case "rgb": {
5189         return rgb(
5190           d3_rgb_parseNumber(m2[0]),
5191           d3_rgb_parseNumber(m2[1]),
5192           d3_rgb_parseNumber(m2[2])
5193         );
5194       }
5195     }
5196   }
5197
5198   /* Named colors. */
5199   if (color = d3_rgb_names.get(format.toLowerCase())) {
5200     return rgb(color.r, color.g, color.b);
5201   }
5202
5203   /* Hexadecimal colors: #rgb and #rrggbb. */
5204   if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
5205     if (format.length === 4) {
5206       r = (color & 0xf00) >> 4; r = (r >> 4) | r;
5207       g = (color & 0xf0); g = (g >> 4) | g;
5208       b = (color & 0xf); b = (b << 4) | b;
5209     } else if (format.length === 7) {
5210       r = (color & 0xff0000) >> 16;
5211       g = (color & 0xff00) >> 8;
5212       b = (color & 0xff);
5213     }
5214   }
5215
5216   return rgb(r, g, b);
5217 }
5218
5219 function d3_rgb_hsl(r, g, b) {
5220   var min = Math.min(r /= 255, g /= 255, b /= 255),
5221       max = Math.max(r, g, b),
5222       d = max - min,
5223       h,
5224       s,
5225       l = (max + min) / 2;
5226   if (d) {
5227     s = l < .5 ? d / (max + min) : d / (2 - max - min);
5228     if (r == max) h = (g - b) / d + (g < b ? 6 : 0);
5229     else if (g == max) h = (b - r) / d + 2;
5230     else h = (r - g) / d + 4;
5231     h *= 60;
5232   } else {
5233     h = NaN;
5234     s = l > 0 && l < 1 ? 0 : h;
5235   }
5236   return new d3_hsl(h, s, l);
5237 }
5238
5239 function d3_rgb_lab(r, g, b) {
5240   r = d3_rgb_xyz(r);
5241   g = d3_rgb_xyz(g);
5242   b = d3_rgb_xyz(b);
5243   var x = d3_xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / d3_lab_X),
5244       y = d3_xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / d3_lab_Y),
5245       z = d3_xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / d3_lab_Z);
5246   return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
5247 }
5248
5249 function d3_rgb_xyz(r) {
5250   return (r /= 255) <= 0.04045 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
5251 }
5252
5253 function d3_rgb_parseNumber(c) { // either integer or percentage
5254   var f = parseFloat(c);
5255   return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
5256 }
5257
5258 var d3_rgb_names = d3.map({
5259   aliceblue: 0xf0f8ff,
5260   antiquewhite: 0xfaebd7,
5261   aqua: 0x00ffff,
5262   aquamarine: 0x7fffd4,
5263   azure: 0xf0ffff,
5264   beige: 0xf5f5dc,
5265   bisque: 0xffe4c4,
5266   black: 0x000000,
5267   blanchedalmond: 0xffebcd,
5268   blue: 0x0000ff,
5269   blueviolet: 0x8a2be2,
5270   brown: 0xa52a2a,
5271   burlywood: 0xdeb887,
5272   cadetblue: 0x5f9ea0,
5273   chartreuse: 0x7fff00,
5274   chocolate: 0xd2691e,
5275   coral: 0xff7f50,
5276   cornflowerblue: 0x6495ed,
5277   cornsilk: 0xfff8dc,
5278   crimson: 0xdc143c,
5279   cyan: 0x00ffff,
5280   darkblue: 0x00008b,
5281   darkcyan: 0x008b8b,
5282   darkgoldenrod: 0xb8860b,
5283   darkgray: 0xa9a9a9,
5284   darkgreen: 0x006400,
5285   darkgrey: 0xa9a9a9,
5286   darkkhaki: 0xbdb76b,
5287   darkmagenta: 0x8b008b,
5288   darkolivegreen: 0x556b2f,
5289   darkorange: 0xff8c00,
5290   darkorchid: 0x9932cc,
5291   darkred: 0x8b0000,
5292   darksalmon: 0xe9967a,
5293   darkseagreen: 0x8fbc8f,
5294   darkslateblue: 0x483d8b,
5295   darkslategray: 0x2f4f4f,
5296   darkslategrey: 0x2f4f4f,
5297   darkturquoise: 0x00ced1,
5298   darkviolet: 0x9400d3,
5299   deeppink: 0xff1493,
5300   deepskyblue: 0x00bfff,
5301   dimgray: 0x696969,
5302   dimgrey: 0x696969,
5303   dodgerblue: 0x1e90ff,
5304   firebrick: 0xb22222,
5305   floralwhite: 0xfffaf0,
5306   forestgreen: 0x228b22,
5307   fuchsia: 0xff00ff,
5308   gainsboro: 0xdcdcdc,
5309   ghostwhite: 0xf8f8ff,
5310   gold: 0xffd700,
5311   goldenrod: 0xdaa520,
5312   gray: 0x808080,
5313   green: 0x008000,
5314   greenyellow: 0xadff2f,
5315   grey: 0x808080,
5316   honeydew: 0xf0fff0,
5317   hotpink: 0xff69b4,
5318   indianred: 0xcd5c5c,
5319   indigo: 0x4b0082,
5320   ivory: 0xfffff0,
5321   khaki: 0xf0e68c,
5322   lavender: 0xe6e6fa,
5323   lavenderblush: 0xfff0f5,
5324   lawngreen: 0x7cfc00,
5325   lemonchiffon: 0xfffacd,
5326   lightblue: 0xadd8e6,
5327   lightcoral: 0xf08080,
5328   lightcyan: 0xe0ffff,
5329   lightgoldenrodyellow: 0xfafad2,
5330   lightgray: 0xd3d3d3,
5331   lightgreen: 0x90ee90,
5332   lightgrey: 0xd3d3d3,
5333   lightpink: 0xffb6c1,
5334   lightsalmon: 0xffa07a,
5335   lightseagreen: 0x20b2aa,
5336   lightskyblue: 0x87cefa,
5337   lightslategray: 0x778899,
5338   lightslategrey: 0x778899,
5339   lightsteelblue: 0xb0c4de,
5340   lightyellow: 0xffffe0,
5341   lime: 0x00ff00,
5342   limegreen: 0x32cd32,
5343   linen: 0xfaf0e6,
5344   magenta: 0xff00ff,
5345   maroon: 0x800000,
5346   mediumaquamarine: 0x66cdaa,
5347   mediumblue: 0x0000cd,
5348   mediumorchid: 0xba55d3,
5349   mediumpurple: 0x9370db,
5350   mediumseagreen: 0x3cb371,
5351   mediumslateblue: 0x7b68ee,
5352   mediumspringgreen: 0x00fa9a,
5353   mediumturquoise: 0x48d1cc,
5354   mediumvioletred: 0xc71585,
5355   midnightblue: 0x191970,
5356   mintcream: 0xf5fffa,
5357   mistyrose: 0xffe4e1,
5358   moccasin: 0xffe4b5,
5359   navajowhite: 0xffdead,
5360   navy: 0x000080,
5361   oldlace: 0xfdf5e6,
5362   olive: 0x808000,
5363   olivedrab: 0x6b8e23,
5364   orange: 0xffa500,
5365   orangered: 0xff4500,
5366   orchid: 0xda70d6,
5367   palegoldenrod: 0xeee8aa,
5368   palegreen: 0x98fb98,
5369   paleturquoise: 0xafeeee,
5370   palevioletred: 0xdb7093,
5371   papayawhip: 0xffefd5,
5372   peachpuff: 0xffdab9,
5373   peru: 0xcd853f,
5374   pink: 0xffc0cb,
5375   plum: 0xdda0dd,
5376   powderblue: 0xb0e0e6,
5377   purple: 0x800080,
5378   rebeccapurple: 0x663399,
5379   red: 0xff0000,
5380   rosybrown: 0xbc8f8f,
5381   royalblue: 0x4169e1,
5382   saddlebrown: 0x8b4513,
5383   salmon: 0xfa8072,
5384   sandybrown: 0xf4a460,
5385   seagreen: 0x2e8b57,
5386   seashell: 0xfff5ee,
5387   sienna: 0xa0522d,
5388   silver: 0xc0c0c0,
5389   skyblue: 0x87ceeb,
5390   slateblue: 0x6a5acd,
5391   slategray: 0x708090,
5392   slategrey: 0x708090,
5393   snow: 0xfffafa,
5394   springgreen: 0x00ff7f,
5395   steelblue: 0x4682b4,
5396   tan: 0xd2b48c,
5397   teal: 0x008080,
5398   thistle: 0xd8bfd8,
5399   tomato: 0xff6347,
5400   turquoise: 0x40e0d0,
5401   violet: 0xee82ee,
5402   wheat: 0xf5deb3,
5403   white: 0xffffff,
5404   whitesmoke: 0xf5f5f5,
5405   yellow: 0xffff00,
5406   yellowgreen: 0x9acd32
5407 });
5408
5409 d3_rgb_names.forEach(function(key, value) {
5410   d3_rgb_names.set(key, d3_rgbNumber(value));
5411 });
5412
5413 d3.interpolateRgb = d3_interpolateRgb;
5414
5415 function d3_interpolateRgb(a, b) {
5416   a = d3.rgb(a);
5417   b = d3.rgb(b);
5418   var ar = a.r,
5419       ag = a.g,
5420       ab = a.b,
5421       br = b.r - ar,
5422       bg = b.g - ag,
5423       bb = b.b - ab;
5424   return function(t) {
5425     return "#"
5426         + d3_rgb_hex(Math.round(ar + br * t))
5427         + d3_rgb_hex(Math.round(ag + bg * t))
5428         + d3_rgb_hex(Math.round(ab + bb * t));
5429   };
5430 }
5431
5432 d3.interpolateObject = d3_interpolateObject;
5433
5434 function d3_interpolateObject(a, b) {
5435   var i = {},
5436       c = {},
5437       k;
5438   for (k in a) {
5439     if (k in b) {
5440       i[k] = d3_interpolate(a[k], b[k]);
5441     } else {
5442       c[k] = a[k];
5443     }
5444   }
5445   for (k in b) {
5446     if (!(k in a)) {
5447       c[k] = b[k];
5448     }
5449   }
5450   return function(t) {
5451     for (k in i) c[k] = i[k](t);
5452     return c;
5453   };
5454 }
5455
5456 d3.interpolateArray = d3_interpolateArray;
5457
5458 function d3_interpolateArray(a, b) {
5459   var x = [],
5460       c = [],
5461       na = a.length,
5462       nb = b.length,
5463       n0 = Math.min(a.length, b.length),
5464       i;
5465   for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
5466   for (; i < na; ++i) c[i] = a[i];
5467   for (; i < nb; ++i) c[i] = b[i];
5468   return function(t) {
5469     for (i = 0; i < n0; ++i) c[i] = x[i](t);
5470     return c;
5471   };
5472 }
5473 d3.interpolateNumber = d3_interpolateNumber;
5474
5475 function d3_interpolateNumber(a, b) {
5476   a = +a, b = +b;
5477   return function(t) { return a * (1 - t) + b * t; };
5478 }
5479
5480 d3.interpolateString = d3_interpolateString;
5481
5482 function d3_interpolateString(a, b) {
5483   var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, // scan index for next number in b
5484       am, // current match in a
5485       bm, // current match in b
5486       bs, // string preceding current number in b, if any
5487       i = -1, // index in s
5488       s = [], // string constants and placeholders
5489       q = []; // number interpolators
5490
5491   // Coerce inputs to strings.
5492   a = a + "", b = b + "";
5493
5494   // Interpolate pairs of numbers in a & b.
5495   while ((am = d3_interpolate_numberA.exec(a))
5496       && (bm = d3_interpolate_numberB.exec(b))) {
5497     if ((bs = bm.index) > bi) { // a string precedes the next number in b
5498       bs = b.slice(bi, bs);
5499       if (s[i]) s[i] += bs; // coalesce with previous string
5500       else s[++i] = bs;
5501     }
5502     if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
5503       if (s[i]) s[i] += bm; // coalesce with previous string
5504       else s[++i] = bm;
5505     } else { // interpolate non-matching numbers
5506       s[++i] = null;
5507       q.push({i: i, x: d3_interpolateNumber(am, bm)});
5508     }
5509     bi = d3_interpolate_numberB.lastIndex;
5510   }
5511
5512   // Add remains of b.
5513   if (bi < b.length) {
5514     bs = b.slice(bi);
5515     if (s[i]) s[i] += bs; // coalesce with previous string
5516     else s[++i] = bs;
5517   }
5518
5519   // Special optimization for only a single match.
5520   // Otherwise, interpolate each of the numbers and rejoin the string.
5521   return s.length < 2
5522       ? (q[0] ? (b = q[0].x, function(t) { return b(t) + ""; })
5523       : function() { return b; })
5524       : (b = q.length, function(t) {
5525           for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
5526           return s.join("");
5527         });
5528 }
5529
5530 var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
5531     d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
5532
5533 d3.interpolate = d3_interpolate;
5534
5535 function d3_interpolate(a, b) {
5536   var i = d3.interpolators.length, f;
5537   while (--i >= 0 && !(f = d3.interpolators[i](a, b)));
5538   return f;
5539 }
5540
5541 d3.interpolators = [
5542   function(a, b) {
5543     var t = typeof b;
5544     return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
5545         : b instanceof d3_color ? d3_interpolateRgb
5546         : Array.isArray(b) ? d3_interpolateArray
5547         : t === "object" && isNaN(b) ? d3_interpolateObject
5548         : d3_interpolateNumber)(a, b);
5549   }
5550 ];
5551
5552 d3.transform = function(string) {
5553   var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
5554   return (d3.transform = function(string) {
5555     if (string != null) {
5556       g.setAttribute("transform", string);
5557       var t = g.transform.baseVal.consolidate();
5558     }
5559     return new d3_transform(t ? t.matrix : d3_transformIdentity);
5560   })(string);
5561 };
5562
5563 // Compute x-scale and normalize the first row.
5564 // Compute shear and make second row orthogonal to first.
5565 // Compute y-scale and normalize the second row.
5566 // Finally, compute the rotation.
5567 function d3_transform(m) {
5568   var r0 = [m.a, m.b],
5569       r1 = [m.c, m.d],
5570       kx = d3_transformNormalize(r0),
5571       kz = d3_transformDot(r0, r1),
5572       ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
5573   if (r0[0] * r1[1] < r1[0] * r0[1]) {
5574     r0[0] *= -1;
5575     r0[1] *= -1;
5576     kx *= -1;
5577     kz *= -1;
5578   }
5579   this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
5580   this.translate = [m.e, m.f];
5581   this.scale = [kx, ky];
5582   this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
5583 };
5584
5585 d3_transform.prototype.toString = function() {
5586   return "translate(" + this.translate
5587       + ")rotate(" + this.rotate
5588       + ")skewX(" + this.skew
5589       + ")scale(" + this.scale
5590       + ")";
5591 };
5592
5593 function d3_transformDot(a, b) {
5594   return a[0] * b[0] + a[1] * b[1];
5595 }
5596
5597 function d3_transformNormalize(a) {
5598   var k = Math.sqrt(d3_transformDot(a, a));
5599   if (k) {
5600     a[0] /= k;
5601     a[1] /= k;
5602   }
5603   return k;
5604 }
5605
5606 function d3_transformCombine(a, b, k) {
5607   a[0] += k * b[0];
5608   a[1] += k * b[1];
5609   return a;
5610 }
5611
5612 var d3_transformIdentity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0};
5613
5614 d3.interpolateTransform = d3_interpolateTransform;
5615
5616 function d3_interpolateTransform(a, b) {
5617   var s = [], // string constants and placeholders
5618       q = [], // number interpolators
5619       n,
5620       A = d3.transform(a),
5621       B = d3.transform(b),
5622       ta = A.translate,
5623       tb = B.translate,
5624       ra = A.rotate,
5625       rb = B.rotate,
5626       wa = A.skew,
5627       wb = B.skew,
5628       ka = A.scale,
5629       kb = B.scale;
5630
5631   if (ta[0] != tb[0] || ta[1] != tb[1]) {
5632     s.push("translate(", null, ",", null, ")");
5633     q.push({i: 1, x: d3_interpolateNumber(ta[0], tb[0])}, {i: 3, x: d3_interpolateNumber(ta[1], tb[1])});
5634   } else if (tb[0] || tb[1]) {
5635     s.push("translate(" + tb + ")");
5636   } else {
5637     s.push("");
5638   }
5639
5640   if (ra != rb) {
5641     if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; // shortest path
5642     q.push({i: s.push(s.pop() + "rotate(", null, ")") - 2, x: d3_interpolateNumber(ra, rb)});
5643   } else if (rb) {
5644     s.push(s.pop() + "rotate(" + rb + ")");
5645   }
5646
5647   if (wa != wb) {
5648     q.push({i: s.push(s.pop() + "skewX(", null, ")") - 2, x: d3_interpolateNumber(wa, wb)});
5649   } else if (wb) {
5650     s.push(s.pop() + "skewX(" + wb + ")");
5651   }
5652
5653   if (ka[0] != kb[0] || ka[1] != kb[1]) {
5654     n = s.push(s.pop() + "scale(", null, ",", null, ")");
5655     q.push({i: n - 4, x: d3_interpolateNumber(ka[0], kb[0])}, {i: n - 2, x: d3_interpolateNumber(ka[1], kb[1])});
5656   } else if (kb[0] != 1 || kb[1] != 1) {
5657     s.push(s.pop() + "scale(" + kb + ")");
5658   }
5659
5660   n = q.length;
5661   return function(t) {
5662     var i = -1, o;
5663     while (++i < n) s[(o = q[i]).i] = o.x(t);
5664     return s.join("");
5665   };
5666 }
5667
5668 d3_transitionPrototype.tween = function(name, tween) {
5669   var id = this.id, ns = this.namespace;
5670   if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
5671   return d3_selection_each(this, tween == null
5672         ? function(node) { node[ns][id].tween.remove(name); }
5673         : function(node) { node[ns][id].tween.set(name, tween); });
5674 };
5675
5676 function d3_transition_tween(groups, name, value, tween) {
5677   var id = groups.id, ns = groups.namespace;
5678   return d3_selection_each(groups, typeof value === "function"
5679       ? function(node, i, j) { node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j))); }
5680       : (value = tween(value), function(node) { node[ns][id].tween.set(name, value); }));
5681 }
5682
5683 d3_transitionPrototype.attr = function(nameNS, value) {
5684   if (arguments.length < 2) {
5685
5686     // For attr(object), the object specifies the names and values of the
5687     // attributes to transition. The values may be functions that are
5688     // evaluated for each element.
5689     for (value in nameNS) this.attr(value, nameNS[value]);
5690     return this;
5691   }
5692
5693   var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate,
5694       name = d3.ns.qualify(nameNS);
5695
5696   // For attr(string, null), remove the attribute with the specified name.
5697   function attrNull() {
5698     this.removeAttribute(name);
5699   }
5700   function attrNullNS() {
5701     this.removeAttributeNS(name.space, name.local);
5702   }
5703
5704   // For attr(string, string), set the attribute with the specified name.
5705   function attrTween(b) {
5706     return b == null ? attrNull : (b += "", function() {
5707       var a = this.getAttribute(name), i;
5708       return a !== b && (i = interpolate(a, b), function(t) { this.setAttribute(name, i(t)); });
5709     });
5710   }
5711   function attrTweenNS(b) {
5712     return b == null ? attrNullNS : (b += "", function() {
5713       var a = this.getAttributeNS(name.space, name.local), i;
5714       return a !== b && (i = interpolate(a, b), function(t) { this.setAttributeNS(name.space, name.local, i(t)); });
5715     });
5716   }
5717
5718   return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween);
5719 };
5720
5721 d3_transitionPrototype.attrTween = function(nameNS, tween) {
5722   var name = d3.ns.qualify(nameNS);
5723
5724   function attrTween(d, i) {
5725     var f = tween.call(this, d, i, this.getAttribute(name));
5726     return f && function(t) { this.setAttribute(name, f(t)); };
5727   }
5728   function attrTweenNS(d, i) {
5729     var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
5730     return f && function(t) { this.setAttributeNS(name.space, name.local, f(t)); };
5731   }
5732
5733   return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
5734 };
5735
5736 d3_transitionPrototype.style = function(name, value, priority) {
5737   var n = arguments.length;
5738   if (n < 3) {
5739
5740     // For style(object) or style(object, string), the object specifies the
5741     // names and values of the attributes to set or remove. The values may be
5742     // functions that are evaluated for each element. The optional string
5743     // specifies the priority.
5744     if (typeof name !== "string") {
5745       if (n < 2) value = "";
5746       for (priority in name) this.style(priority, name[priority], value);
5747       return this;
5748     }
5749
5750     // For style(string, string) or style(string, function), use the default
5751     // priority. The priority is ignored for style(string, null).
5752     priority = "";
5753   }
5754
5755   // For style(name, null) or style(name, null, priority), remove the style
5756   // property with the specified name. The priority is ignored.
5757   function styleNull() {
5758     this.style.removeProperty(name);
5759   }
5760
5761   // For style(name, string) or style(name, string, priority), set the style
5762   // property with the specified name, using the specified priority.
5763   // Otherwise, a name, value and priority are specified, and handled as below.
5764   function styleString(b) {
5765     return b == null ? styleNull : (b += "", function() {
5766       var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;
5767       return a !== b && (i = d3_interpolate(a, b), function(t) { this.style.setProperty(name, i(t), priority); });
5768     });
5769   }
5770
5771   return d3_transition_tween(this, "style." + name, value, styleString);
5772 };
5773
5774 d3_transitionPrototype.styleTween = function(name, tween, priority) {
5775   if (arguments.length < 3) priority = "";
5776
5777   function styleTween(d, i) {
5778     var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));
5779     return f && function(t) { this.style.setProperty(name, f(t), priority); };
5780   }
5781
5782   return this.tween("style." + name, styleTween);
5783 };
5784
5785 d3_transitionPrototype.text = function(value) {
5786   return d3_transition_tween(this, "text", value, d3_transition_text);
5787 };
5788
5789 function d3_transition_text(b) {
5790   if (b == null) b = "";
5791   return function() { this.textContent = b; };
5792 }
5793
5794 d3_transitionPrototype.remove = function() {
5795   var ns = this.namespace;
5796   return this.each("end.transition", function() {
5797     var p;
5798     if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
5799   });
5800 };
5801
5802 var d3_ease_default = function() { return d3_identity; };
5803
5804 var d3_ease = d3.map({
5805   linear: d3_ease_default,
5806   poly: d3_ease_poly,
5807   quad: function() { return d3_ease_quad; },
5808   cubic: function() { return d3_ease_cubic; },
5809   sin: function() { return d3_ease_sin; },
5810   exp: function() { return d3_ease_exp; },
5811   circle: function() { return d3_ease_circle; },
5812   elastic: d3_ease_elastic,
5813   back: d3_ease_back,
5814   bounce: function() { return d3_ease_bounce; }
5815 });
5816
5817 var d3_ease_mode = d3.map({
5818   "in": d3_identity,
5819   "out": d3_ease_reverse,
5820   "in-out": d3_ease_reflect,
5821   "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
5822 });
5823
5824 d3.ease = function(name) {
5825   var i = name.indexOf("-"),
5826       t = i >= 0 ? name.slice(0, i) : name,
5827       m = i >= 0 ? name.slice(i + 1) : "in";
5828   t = d3_ease.get(t) || d3_ease_default;
5829   m = d3_ease_mode.get(m) || d3_identity;
5830   return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
5831 };
5832
5833 function d3_ease_clamp(f) {
5834   return function(t) {
5835     return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
5836   };
5837 }
5838
5839 function d3_ease_reverse(f) {
5840   return function(t) {
5841     return 1 - f(1 - t);
5842   };
5843 }
5844
5845 function d3_ease_reflect(f) {
5846   return function(t) {
5847     return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
5848   };
5849 }
5850
5851 function d3_ease_quad(t) {
5852   return t * t;
5853 }
5854
5855 function d3_ease_cubic(t) {
5856   return t * t * t;
5857 }
5858
5859 // Optimized clamp(reflect(poly(3))).
5860 function d3_ease_cubicInOut(t) {
5861   if (t <= 0) return 0;
5862   if (t >= 1) return 1;
5863   var t2 = t * t, t3 = t2 * t;
5864   return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
5865 }
5866
5867 function d3_ease_poly(e) {
5868   return function(t) {
5869     return Math.pow(t, e);
5870   };
5871 }
5872
5873 function d3_ease_sin(t) {
5874   return 1 - Math.cos(t * halfπ);
5875 }
5876
5877 function d3_ease_exp(t) {
5878   return Math.pow(2, 10 * (t - 1));
5879 }
5880
5881 function d3_ease_circle(t) {
5882   return 1 - Math.sqrt(1 - t * t);
5883 }
5884
5885 function d3_ease_elastic(a, p) {
5886   var s;
5887   if (arguments.length < 2) p = 0.45;
5888   if (arguments.length) s = p / τ * Math.asin(1 / a);
5889   else a = 1, s = p / 4;
5890   return function(t) {
5891     return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
5892   };
5893 }
5894
5895 function d3_ease_back(s) {
5896   if (!s) s = 1.70158;
5897   return function(t) {
5898     return t * t * ((s + 1) * t - s);
5899   };
5900 }
5901
5902 function d3_ease_bounce(t) {
5903   return t < 1 / 2.75 ? 7.5625 * t * t
5904       : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
5905       : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
5906       : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
5907 }
5908
5909 d3_transitionPrototype.ease = function(value) {
5910   var id = this.id, ns = this.namespace;
5911   if (arguments.length < 1) return this.node()[ns][id].ease;
5912   if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
5913   return d3_selection_each(this, function(node) { node[ns][id].ease = value; });
5914 };
5915
5916 d3_transitionPrototype.delay = function(value) {
5917   var id = this.id, ns = this.namespace;
5918   if (arguments.length < 1) return this.node()[ns][id].delay;
5919   return d3_selection_each(this, typeof value === "function"
5920       ? function(node, i, j) { node[ns][id].delay = +value.call(node, node.__data__, i, j); }
5921       : (value = +value, function(node) { node[ns][id].delay = value; }));
5922 };
5923
5924 d3_transitionPrototype.duration = function(value) {
5925   var id = this.id, ns = this.namespace;
5926   if (arguments.length < 1) return this.node()[ns][id].duration;
5927   return d3_selection_each(this, typeof value === "function"
5928       ? function(node, i, j) { node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j)); }
5929       : (value = Math.max(1, value), function(node) { node[ns][id].duration = value; }));
5930 };
5931
5932 d3_transitionPrototype.each = function(type, listener) {
5933   var id = this.id, ns = this.namespace;
5934   if (arguments.length < 2) {
5935     var inherit = d3_transitionInherit,
5936         inheritId = d3_transitionInheritId;
5937     try {
5938       d3_transitionInheritId = id;
5939       d3_selection_each(this, function(node, i, j) {
5940         d3_transitionInherit = node[ns][id];
5941         type.call(node, node.__data__, i, j);
5942       });
5943     } finally {
5944       d3_transitionInherit = inherit;
5945       d3_transitionInheritId = inheritId;
5946     }
5947   } else {
5948     d3_selection_each(this, function(node) {
5949       var transition = node[ns][id];
5950       (transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
5951     });
5952   }
5953   return this;
5954 };
5955
5956 d3_transitionPrototype.transition = function() {
5957   var id0 = this.id,
5958       id1 = ++d3_transitionId,
5959       ns = this.namespace,
5960       subgroups = [],
5961       subgroup,
5962       group,
5963       node,
5964       transition;
5965
5966   for (var j = 0, m = this.length; j < m; j++) {
5967     subgroups.push(subgroup = []);
5968     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
5969       if (node = group[i]) {
5970         transition = node[ns][id0];
5971         d3_transitionNode(node, i, ns, id1, {time: transition.time, ease: transition.ease, delay: transition.delay + transition.duration, duration: transition.duration});
5972       }
5973       subgroup.push(node);
5974     }
5975   }
5976
5977   return d3_transition(subgroups, ns, id1);
5978 };
5979
5980 function d3_transitionNamespace(name) {
5981   return name == null ? "__transition__" : "__transition_" + name + "__";
5982 }
5983
5984 function d3_transitionNode(node, i, ns, id, inherit) {
5985   var lock = node[ns] || (node[ns] = {active: 0, count: 0}),
5986       transition = lock[id];
5987
5988   if (!transition) {
5989     var time = inherit.time;
5990
5991     transition = lock[id] = {
5992       tween: new d3_Map,
5993       time: time,
5994       delay: inherit.delay,
5995       duration: inherit.duration,
5996       ease: inherit.ease,
5997       index: i
5998     };
5999
6000     inherit = null; // allow gc
6001
6002     ++lock.count;
6003
6004     d3.timer(function(elapsed) {
6005       var delay = transition.delay,
6006           duration,
6007           ease,
6008           timer = d3_timer_active,
6009           tweened = [];
6010
6011       timer.t = delay + time;
6012       if (delay <= elapsed) return start(elapsed - delay);
6013       timer.c = start;
6014
6015       function start(elapsed) {
6016         if (lock.active > id) return stop();
6017
6018         var active = lock[lock.active];
6019         if (active) {
6020           --lock.count;
6021           delete lock[lock.active];
6022           active.event && active.event.interrupt.call(node, node.__data__, active.index);
6023         }
6024
6025         lock.active = id;
6026
6027         transition.event && transition.event.start.call(node, node.__data__, i);
6028
6029         transition.tween.forEach(function(key, value) {
6030           if (value = value.call(node, node.__data__, i)) {
6031             tweened.push(value);
6032           }
6033         });
6034
6035         // Deferred capture to allow tweens to initialize ease & duration.
6036         ease = transition.ease;
6037         duration = transition.duration;
6038
6039         d3.timer(function() { // defer to end of current frame
6040           timer.c = tick(elapsed || 1) ? d3_true : tick;
6041           return 1;
6042         }, 0, time);
6043       }
6044
6045       function tick(elapsed) {
6046         if (lock.active !== id) return 1;
6047
6048         var t = elapsed / duration,
6049             e = ease(t),
6050             n = tweened.length;
6051
6052         while (n > 0) {
6053           tweened[--n].call(node, e);
6054         }
6055
6056         if (t >= 1) {
6057           transition.event && transition.event.end.call(node, node.__data__, i);
6058           return stop();
6059         }
6060       }
6061
6062       function stop() {
6063         if (--lock.count) delete lock[id];
6064         else delete node[ns];
6065         return 1;
6066       }
6067     }, 0, time);
6068   }
6069 }
6070
6071 d3.xhr = d3_xhrType(d3_identity);
6072
6073 function d3_xhrType(response) {
6074   return function(url, mimeType, callback) {
6075     if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, mimeType = null;
6076     return d3_xhr(url, mimeType, response, callback);
6077   };
6078 }
6079
6080 function d3_xhr(url, mimeType, response, callback) {
6081   var xhr = {},
6082       dispatch = d3.dispatch("beforesend", "progress", "load", "error"),
6083       headers = {},
6084       request = new XMLHttpRequest,
6085       responseType = null;
6086
6087   // If IE does not support CORS, use XDomainRequest.
6088   if (this.XDomainRequest
6089       && !("withCredentials" in request)
6090       && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest;
6091
6092   "onload" in request
6093       ? request.onload = request.onerror = respond
6094       : request.onreadystatechange = function() { request.readyState > 3 && respond(); };
6095
6096   function respond() {
6097     var status = request.status, result;
6098     if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
6099       try {
6100         result = response.call(xhr, request);
6101       } catch (e) {
6102         dispatch.error.call(xhr, e);
6103         return;
6104       }
6105       dispatch.load.call(xhr, result);
6106     } else {
6107       dispatch.error.call(xhr, request);
6108     }
6109   }
6110
6111   request.onprogress = function(event) {
6112     var o = d3.event;
6113     d3.event = event;
6114     try { dispatch.progress.call(xhr, request); }
6115     finally { d3.event = o; }
6116   };
6117
6118   xhr.header = function(name, value) {
6119     name = (name + "").toLowerCase();
6120     if (arguments.length < 2) return headers[name];
6121     if (value == null) delete headers[name];
6122     else headers[name] = value + "";
6123     return xhr;
6124   };
6125
6126   // If mimeType is non-null and no Accept header is set, a default is used.
6127   xhr.mimeType = function(value) {
6128     if (!arguments.length) return mimeType;
6129     mimeType = value == null ? null : value + "";
6130     return xhr;
6131   };
6132
6133   // Specifies what type the response value should take;
6134   // for instance, arraybuffer, blob, document, or text.
6135   xhr.responseType = function(value) {
6136     if (!arguments.length) return responseType;
6137     responseType = value;
6138     return xhr;
6139   };
6140
6141   // Specify how to convert the response content to a specific type;
6142   // changes the callback value on "load" events.
6143   xhr.response = function(value) {
6144     response = value;
6145     return xhr;
6146   };
6147
6148   // Convenience methods.
6149   ["get", "post"].forEach(function(method) {
6150     xhr[method] = function() {
6151       return xhr.send.apply(xhr, [method].concat(d3_array(arguments)));
6152     };
6153   });
6154
6155   // If callback is non-null, it will be used for error and load events.
6156   xhr.send = function(method, data, callback) {
6157     if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
6158     request.open(method, url, true);
6159     if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
6160     if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
6161     if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
6162     if (responseType != null) request.responseType = responseType;
6163     if (callback != null) xhr.on("error", callback).on("load", function(request) { callback(null, request); });
6164     dispatch.beforesend.call(xhr, request);
6165     request.send(data == null ? null : data);
6166     return xhr;
6167   };
6168
6169   xhr.abort = function() {
6170     request.abort();
6171     return xhr;
6172   };
6173
6174   d3.rebind(xhr, dispatch, "on");
6175
6176   return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
6177 };
6178
6179 function d3_xhr_fixCallback(callback) {
6180   return callback.length === 1
6181       ? function(error, request) { callback(error == null ? request : null); }
6182       : callback;
6183 }
6184
6185 function d3_xhrHasResponse(request) {
6186   var type = request.responseType;
6187   return type && type !== "text"
6188       ? request.response // null on error
6189       : request.responseText; // "" on error
6190 }
6191
6192 d3.text = d3_xhrType(function(request) {
6193   return request.responseText;
6194 });
6195
6196 d3.json = function(url, callback) {
6197   return d3_xhr(url, "application/json", d3_json, callback);
6198 };
6199
6200 function d3_json(request) {
6201   return JSON.parse(request.responseText);
6202 }
6203
6204 d3.html = function(url, callback) {
6205   return d3_xhr(url, "text/html", d3_html, callback);
6206 };
6207
6208 function d3_html(request) {
6209   var range = d3_document.createRange();
6210   range.selectNode(d3_document.body);
6211   return range.createContextualFragment(request.responseText);
6212 }
6213
6214 d3.xml = d3_xhrType(function(request) {
6215   return request.responseXML;
6216 });
6217   if (typeof define === "function" && define.amd) define(d3);
6218   else if (typeof module === "object" && module.exports) module.exports = d3;
6219   this.d3 = d3;
6220 }();
6221 d3.combobox = function() {
6222     var event = d3.dispatch('accept'),
6223         data = [],
6224         suggestions = [],
6225         minItems = 2;
6226
6227     var fetcher = function(val, cb) {
6228         cb(data.filter(function(d) {
6229             return d.value
6230                 .toString()
6231                 .toLowerCase()
6232                 .indexOf(val.toLowerCase()) !== -1;
6233         }));
6234     };
6235
6236     var combobox = function(input) {
6237         var idx = -1,
6238             container = d3.select(document.body)
6239                 .selectAll('div.combobox')
6240                 .filter(function(d) { return d === input.node(); }),
6241             shown = !container.empty();
6242
6243         input
6244             .classed('combobox-input', true)
6245             .on('focus.typeahead', focus)
6246             .on('blur.typeahead', blur)
6247             .on('keydown.typeahead', keydown)
6248             .on('keyup.typeahead', keyup)
6249             .on('input.typeahead', change)
6250             .each(function() {
6251                 var parent = this.parentNode,
6252                     sibling = this.nextSibling;
6253
6254                 var caret = d3.select(parent).selectAll('.combobox-caret')
6255                     .filter(function(d) { return d === input.node(); })
6256                     .data([input.node()]);
6257
6258                 caret.enter().insert('div', function() { return sibling; })
6259                     .attr('class', 'combobox-caret');
6260
6261                 caret
6262                     .on('mousedown', function () {
6263                         // prevent the form element from blurring. it blurs
6264                         // on mousedown
6265                         d3.event.stopPropagation();
6266                         d3.event.preventDefault();
6267                         if (!shown) {
6268                             input.node().focus();
6269                             fetch('', render);
6270                         } else {
6271                             hide();
6272                         }
6273                     });
6274             });
6275
6276         function focus() {
6277             fetch(value(), render);
6278         }
6279
6280         function blur() {
6281             window.setTimeout(hide, 150);
6282         }
6283
6284         function show() {
6285             if (!shown) {
6286                 container = d3.select(document.body)
6287                     .insert('div', ':first-child')
6288                     .datum(input.node())
6289                     .attr('class', 'combobox')
6290                     .style({
6291                         position: 'absolute',
6292                         display: 'block',
6293                         left: '0px'
6294                     })
6295                     .on('mousedown', function () {
6296                         // prevent moving focus out of the text field
6297                         d3.event.preventDefault();
6298                     });
6299
6300                 d3.select(document.body)
6301                     .on('scroll.combobox', render, true);
6302
6303                 shown = true;
6304             }
6305         }
6306
6307         function hide() {
6308             if (shown) {
6309                 idx = -1;
6310                 container.remove();
6311
6312                 d3.select(document.body)
6313                     .on('scroll.combobox', null);
6314
6315                 shown = false;
6316             }
6317         }
6318
6319         function keydown() {
6320            switch (d3.event.keyCode) {
6321                // backspace, delete
6322                case 8:
6323                case 46:
6324                    input.on('input.typeahead', function() {
6325                        idx = -1;
6326                        render();
6327                        var start = input.property('selectionStart');
6328                        input.node().setSelectionRange(start, start);
6329                        input.on('input.typeahead', change);
6330                    });
6331                    break;
6332                // tab
6333                case 9:
6334                    container.selectAll('a.selected').each(event.accept);
6335                    break;
6336                // return
6337                case 13:
6338                    d3.event.preventDefault();
6339                    break;
6340                // up arrow
6341                case 38:
6342                    nav(-1);
6343                    d3.event.preventDefault();
6344                    break;
6345                // down arrow
6346                case 40:
6347                    nav(+1);
6348                    d3.event.preventDefault();
6349                    break;
6350            }
6351            d3.event.stopPropagation();
6352         }
6353
6354         function keyup() {
6355             switch (d3.event.keyCode) {
6356                 // escape
6357                 case 27:
6358                     hide();
6359                     break;
6360                 // return
6361                 case 13:
6362                     container.selectAll('a.selected').each(event.accept);
6363                     hide();
6364                     break;
6365             }
6366         }
6367
6368         function change() {
6369             fetch(value(), function() {
6370                 autocomplete();
6371                 render();
6372             });
6373         }
6374
6375         function nav(dir) {
6376             idx = Math.max(Math.min(idx + dir, suggestions.length - 1), 0);
6377             input.property('value', suggestions[idx].value);
6378             render();
6379             ensureVisible();
6380         }
6381
6382         function value() {
6383             var value = input.property('value'),
6384                 start = input.property('selectionStart'),
6385                 end = input.property('selectionEnd');
6386
6387             if (start && end) {
6388                 value = value.substring(0, start);
6389             }
6390
6391             return value;
6392         }
6393
6394         function fetch(v, cb) {
6395             fetcher.call(input, v, function(_) {
6396                 suggestions = _;
6397                 cb();
6398             });
6399         }
6400
6401         function autocomplete() {
6402             var v = value();
6403
6404             idx = -1;
6405
6406             if (!v) return;
6407
6408             for (var i = 0; i < suggestions.length; i++) {
6409                 if (suggestions[i].value.toLowerCase().indexOf(v.toLowerCase()) === 0) {
6410                     var completion = suggestions[i].value;
6411                     idx = i;
6412                     input.property('value', completion);
6413                     input.node().setSelectionRange(v.length, completion.length);
6414                     return;
6415                 }
6416             }
6417         }
6418
6419         function render() {
6420             if (suggestions.length >= minItems && document.activeElement === input.node()) {
6421                 show();
6422             } else {
6423                 hide();
6424                 return;
6425             }
6426
6427             var options = container
6428                 .selectAll('a.combobox-option')
6429                 .data(suggestions, function(d) { return d.value; });
6430
6431             options.enter().append('a')
6432                 .attr('class', 'combobox-option')
6433                 .text(function(d) { return d.value; });
6434
6435             options
6436                 .attr('title', function(d) { return d.title; })
6437                 .classed('selected', function(d, i) { return i == idx; })
6438                 .on('mouseover', select)
6439                 .on('click', accept)
6440                 .order();
6441
6442             options.exit()
6443                 .remove();
6444
6445             var rect = input.node().getBoundingClientRect();
6446
6447             container.style({
6448                 'left': rect.left + 'px',
6449                 'width': rect.width + 'px',
6450                 'top': rect.height + rect.top + 'px'
6451             });
6452         }
6453
6454         function select(d, i) {
6455             idx = i;
6456             render();
6457         }
6458
6459         function ensureVisible() {
6460             var node = container.selectAll('a.selected').node();
6461             if (node) node.scrollIntoView();
6462         }
6463
6464         function accept(d) {
6465             if (!shown) return;
6466             input
6467                 .property('value', d.value)
6468                 .trigger('change');
6469             event.accept(d);
6470             hide();
6471         }
6472     };
6473
6474     combobox.fetcher = function(_) {
6475         if (!arguments.length) return fetcher;
6476         fetcher = _;
6477         return combobox;
6478     };
6479
6480     combobox.data = function(_) {
6481         if (!arguments.length) return data;
6482         data = _;
6483         return combobox;
6484     };
6485
6486     combobox.minItems = function(_) {
6487         if (!arguments.length) return minItems;
6488         minItems = _;
6489         return combobox;
6490     };
6491
6492     return d3.rebind(combobox, event, 'on');
6493 };
6494 d3.geo.tile = function() {
6495   var size = [960, 500],
6496       scale = 256,
6497       scaleExtent = [0, 20],
6498       translate = [size[0] / 2, size[1] / 2],
6499       zoomDelta = 0;
6500
6501   function bound(_) {
6502       return Math.min(scaleExtent[1], Math.max(scaleExtent[0], _));
6503   }
6504
6505   function tile() {
6506     var z = Math.max(Math.log(scale) / Math.LN2 - 8, 0),
6507         z0 = bound(Math.round(z + zoomDelta)),
6508         k = Math.pow(2, z - z0 + 8),
6509         origin = [(translate[0] - scale / 2) / k, (translate[1] - scale / 2) / k],
6510         tiles = [],
6511         cols = d3.range(Math.max(0, Math.floor(-origin[0])), Math.max(0, Math.ceil(size[0] / k - origin[0]))),
6512         rows = d3.range(Math.max(0, Math.floor(-origin[1])), Math.max(0, Math.ceil(size[1] / k - origin[1])));
6513
6514     rows.forEach(function(y) {
6515       cols.forEach(function(x) {
6516         tiles.push([x, y, z0]);
6517       });
6518     });
6519
6520     tiles.translate = origin;
6521     tiles.scale = k;
6522
6523     return tiles;
6524   }
6525
6526   tile.scaleExtent = function(_) {
6527     if (!arguments.length) return scaleExtent;
6528     scaleExtent = _;
6529     return tile;
6530   };
6531
6532   tile.size = function(_) {
6533     if (!arguments.length) return size;
6534     size = _;
6535     return tile;
6536   };
6537
6538   tile.scale = function(_) {
6539     if (!arguments.length) return scale;
6540     scale = _;
6541     return tile;
6542   };
6543
6544   tile.translate = function(_) {
6545     if (!arguments.length) return translate;
6546     translate = _;
6547     return tile;
6548   };
6549
6550   tile.zoomDelta = function(_) {
6551     if (!arguments.length) return zoomDelta;
6552     zoomDelta = +_;
6553     return tile;
6554   };
6555
6556   return tile;
6557 };
6558 d3.jsonp = function (url, callback) {
6559   function rand() {
6560     var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
6561       c = '', i = -1;
6562     while (++i < 15) c += chars.charAt(Math.floor(Math.random() * 52));
6563     return c;
6564   }
6565
6566   function create(url) {
6567     var e = url.match(/callback=d3.jsonp.(\w+)/),
6568       c = e ? e[1] : rand();
6569     d3.jsonp[c] = function(data) {
6570       callback(data);
6571       delete d3.jsonp[c];
6572       script.remove();
6573     };
6574     return 'd3.jsonp.' + c;
6575   }
6576
6577   var cb = create(url),
6578     script = d3.select('head')
6579     .append('script')
6580     .attr('type', 'text/javascript')
6581     .attr('src', url.replace(/(\{|%7B)callback(\}|%7D)/, cb));
6582 };
6583 /*
6584  * This code is licensed under the MIT license.
6585  *
6586  * Copyright © 2013, iD authors.
6587  *
6588  * Portions copyright © 2011, Keith Cirkel
6589  * See https://github.com/keithamus/jwerty
6590  *
6591  */
6592 d3.keybinding = function(namespace) {
6593     var bindings = [];
6594
6595     function matches(binding, event) {
6596         for (var p in binding.event) {
6597             if (event[p] != binding.event[p])
6598                 return false;
6599         }
6600
6601         return (!binding.capture) === (event.eventPhase !== Event.CAPTURING_PHASE);
6602     }
6603
6604     function capture() {
6605         for (var i = 0; i < bindings.length; i++) {
6606             var binding = bindings[i];
6607             if (matches(binding, d3.event)) {
6608                 binding.callback();
6609             }
6610         }
6611     }
6612
6613     function bubble() {
6614         var tagName = d3.select(d3.event.target).node().tagName;
6615         if (tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA') {
6616             return;
6617         }
6618         capture();
6619     }
6620
6621     function keybinding(selection) {
6622         selection = selection || d3.select(document);
6623         selection.on('keydown.capture' + namespace, capture, true);
6624         selection.on('keydown.bubble' + namespace, bubble, false);
6625         return keybinding;
6626     }
6627
6628     keybinding.off = function(selection) {
6629         selection = selection || d3.select(document);
6630         selection.on('keydown.capture' + namespace, null);
6631         selection.on('keydown.bubble' + namespace, null);
6632         return keybinding;
6633     };
6634
6635     keybinding.on = function(code, callback, capture) {
6636         var binding = {
6637             event: {
6638                 keyCode: 0,
6639                 shiftKey: false,
6640                 ctrlKey: false,
6641                 altKey: false,
6642                 metaKey: false
6643             },
6644             capture: capture,
6645             callback: callback
6646         };
6647
6648         code = code.toLowerCase().match(/(?:(?:[^+⇧⌃⌥⌘])+|[⇧⌃⌥⌘]|\+\+|^\+$)/g);
6649
6650         for (var i = 0; i < code.length; i++) {
6651             // Normalise matching errors
6652             if (code[i] === '++') code[i] = '+';
6653
6654             if (code[i] in d3.keybinding.modifierCodes) {
6655                 binding.event[d3.keybinding.modifierProperties[d3.keybinding.modifierCodes[code[i]]]] = true;
6656             } else if (code[i] in d3.keybinding.keyCodes) {
6657                 binding.event.keyCode = d3.keybinding.keyCodes[code[i]];
6658             }
6659         }
6660
6661         bindings.push(binding);
6662
6663         return keybinding;
6664     };
6665
6666     return keybinding;
6667 };
6668
6669 (function () {
6670     d3.keybinding.modifierCodes = {
6671         // Shift key, ⇧
6672         '⇧': 16, shift: 16,
6673         // CTRL key, on Mac: ⌃
6674         '⌃': 17, ctrl: 17,
6675         // ALT key, on Mac: ⌥ (Alt)
6676         '⌥': 18, alt: 18, option: 18,
6677         // META, on Mac: ⌘ (CMD), on Windows (Win), on Linux (Super)
6678         '⌘': 91, meta: 91, cmd: 91, 'super': 91, win: 91
6679     };
6680
6681     d3.keybinding.modifierProperties = {
6682         16: 'shiftKey',
6683         17: 'ctrlKey',
6684         18: 'altKey',
6685         91: 'metaKey'
6686     };
6687
6688     d3.keybinding.keyCodes = {
6689         // Backspace key, on Mac: ⌫ (Backspace)
6690         '⌫': 8, backspace: 8,
6691         // Tab Key, on Mac: ⇥ (Tab), on Windows ⇥⇥
6692         '⇥': 9, '⇆': 9, tab: 9,
6693         // Return key, ↩
6694         '↩': 13, 'return': 13, enter: 13, '⌅': 13,
6695         // Pause/Break key
6696         'pause': 19, 'pause-break': 19,
6697         // Caps Lock key, ⇪
6698         '⇪': 20, caps: 20, 'caps-lock': 20,
6699         // Escape key, on Mac: ⎋, on Windows: Esc
6700         '⎋': 27, escape: 27, esc: 27,
6701         // Space key
6702         space: 32,
6703         // Page-Up key, or pgup, on Mac: ↖
6704         '↖': 33, pgup: 33, 'page-up': 33,
6705         // Page-Down key, or pgdown, on Mac: ↘
6706         '↘': 34, pgdown: 34, 'page-down': 34,
6707         // END key, on Mac: ⇟
6708         '⇟': 35, end: 35,
6709         // HOME key, on Mac: ⇞
6710         '⇞': 36, home: 36,
6711         // Insert key, or ins
6712         ins: 45, insert: 45,
6713         // Delete key, on Mac: ⌦ (Delete)
6714         '⌦': 46, del: 46, 'delete': 46,
6715         // Left Arrow Key, or ←
6716         '←': 37, left: 37, 'arrow-left': 37,
6717         // Up Arrow Key, or ↑
6718         '↑': 38, up: 38, 'arrow-up': 38,
6719         // Right Arrow Key, or →
6720         '→': 39, right: 39, 'arrow-right': 39,
6721         // Up Arrow Key, or ↓
6722         '↓': 40, down: 40, 'arrow-down': 40,
6723         // odities, printing characters that come out wrong:
6724         // Firefox Equals
6725         'ffequals': 61,
6726         // Num-Multiply, or *
6727         '*': 106, star: 106, asterisk: 106, multiply: 106,
6728         // Num-Plus or +
6729         '+': 107, 'plus': 107,
6730         // Num-Subtract, or -
6731         '-': 109, subtract: 109,
6732         // Firefox Minus
6733         'ffplus': 171,
6734         // Firefox Minus
6735         'ffminus': 173,
6736         // Semicolon
6737         ';': 186, semicolon: 186,
6738         // = or equals
6739         '=': 187, 'equals': 187,
6740         // Comma, or ,
6741         ',': 188, comma: 188,
6742         'dash': 189, //???
6743         // Period, or ., or full-stop
6744         '.': 190, period: 190, 'full-stop': 190,
6745         // Slash, or /, or forward-slash
6746         '/': 191, slash: 191, 'forward-slash': 191,
6747         // Tick, or `, or back-quote
6748         '`': 192, tick: 192, 'back-quote': 192,
6749         // Open bracket, or [
6750         '[': 219, 'open-bracket': 219,
6751         // Back slash, or \
6752         '\\': 220, 'back-slash': 220,
6753         // Close backet, or ]
6754         ']': 221, 'close-bracket': 221,
6755         // Apostrophe, or Quote, or '
6756         '\'': 222, quote: 222, apostrophe: 222
6757     };
6758
6759     // NUMPAD 0-9
6760     var i = 95, n = 0;
6761     while (++i < 106) {
6762         d3.keybinding.keyCodes['num-' + n] = i;
6763         ++n;
6764     }
6765
6766     // 0-9
6767     i = 47; n = 0;
6768     while (++i < 58) {
6769         d3.keybinding.keyCodes[n] = i;
6770         ++n;
6771     }
6772
6773     // F1-F25
6774     i = 111; n = 1;
6775     while (++i < 136) {
6776         d3.keybinding.keyCodes['f' + n] = i;
6777         ++n;
6778     }
6779
6780     // a-z
6781     i = 64;
6782     while (++i < 91) {
6783         d3.keybinding.keyCodes[String.fromCharCode(i).toLowerCase()] = i;
6784     }
6785 })();
6786 d3.selection.prototype.one = function (type, listener, capture) {
6787     var target = this, typeOnce = type + ".once";
6788     function one() {
6789         target.on(typeOnce, null);
6790         listener.apply(this, arguments);
6791     }
6792     target.on(typeOnce, one, capture);
6793     return this;
6794 };
6795 d3.selection.prototype.dimensions = function (dimensions) {
6796     if (!arguments.length) {
6797         var node = this.node();
6798         return [node.offsetWidth,
6799                 node.offsetHeight];
6800     }
6801     return this.attr({width: dimensions[0], height: dimensions[1]});
6802 };
6803 d3.selection.prototype.trigger = function (type) {
6804     this.each(function() {
6805         var evt = document.createEvent('HTMLEvents');
6806         evt.initEvent(type, true, true);
6807         this.dispatchEvent(evt);
6808     });
6809 };
6810 d3.typeahead = function() {
6811     var event = d3.dispatch('accept'),
6812         autohighlight = false,
6813         data;
6814
6815     var typeahead = function(selection) {
6816         var container,
6817             hidden,
6818             idx = autohighlight ? 0 : -1;
6819
6820         function setup() {
6821             var rect = selection.node().getBoundingClientRect();
6822             container = d3.select(document.body)
6823                 .append('div').attr('class', 'typeahead')
6824                 .style({
6825                     position: 'absolute',
6826                     left: rect.left + 'px',
6827                     top: rect.bottom + 'px'
6828                 });
6829             selection
6830                 .on('keyup.typeahead', key);
6831             hidden = false;
6832         }
6833
6834         function hide() {
6835             container.remove();
6836             idx = autohighlight ? 0 : -1;
6837             hidden = true;
6838         }
6839
6840         function slowHide() {
6841             if (autohighlight) {
6842                 if (container.select('a.selected').node()) {
6843                     select(container.select('a.selected').datum());
6844                     event.accept();
6845                 }
6846             }
6847             window.setTimeout(hide, 150);
6848         }
6849
6850         selection
6851             .on('focus.typeahead', setup)
6852             .on('blur.typeahead', slowHide);
6853
6854         function key() {
6855            var len = container.selectAll('a').data().length;
6856            if (d3.event.keyCode === 40) {
6857                idx = Math.min(idx + 1, len - 1);
6858                return highlight();
6859            } else if (d3.event.keyCode === 38) {
6860                idx = Math.max(idx - 1, 0);
6861                return highlight();
6862            } else if (d3.event.keyCode === 13) {
6863                if (container.select('a.selected').node()) {
6864                    select(container.select('a.selected').datum());
6865                }
6866                event.accept();
6867                hide();
6868            } else {
6869                update();
6870            }
6871         }
6872
6873         function highlight() {
6874             container
6875                 .selectAll('a')
6876                 .classed('selected', function(d, i) { return i == idx; });
6877         }
6878
6879         function update() {
6880             if (hidden) setup();
6881
6882             data(selection, function(data) {
6883                 container.style('display', function() {
6884                     return data.length ? 'block' : 'none';
6885                 });
6886
6887                 var options = container
6888                     .selectAll('a')
6889                     .data(data, function(d) { return d.value; });
6890
6891                 options.enter()
6892                     .append('a')
6893                     .text(function(d) { return d.value; })
6894                     .attr('title', function(d) { return d.title; })
6895                     .on('click', select);
6896
6897                 options.exit().remove();
6898
6899                 options
6900                     .classed('selected', function(d, i) { return i == idx; });
6901             });
6902         }
6903
6904         function select(d) {
6905             selection
6906                 .property('value', d.value)
6907                 .trigger('change');
6908         }
6909
6910     };
6911
6912     typeahead.data = function(_) {
6913         if (!arguments.length) return data;
6914         data = _;
6915         return typeahead;
6916     };
6917
6918     typeahead.autohighlight = function(_) {
6919         if (!arguments.length) return autohighlight;
6920         autohighlight = _;
6921         return typeahead;
6922     };
6923
6924     return d3.rebind(typeahead, event, 'on');
6925 };
6926 // Tooltips and svg mask used to highlight certain features
6927 d3.curtain = function() {
6928
6929     var event = d3.dispatch(),
6930         surface,
6931         tooltip,
6932         darkness;
6933
6934     function curtain(selection) {
6935
6936         surface = selection.append('svg')
6937             .attr('id', 'curtain')
6938             .style({
6939                 'z-index': 1000,
6940                 'pointer-events': 'none',
6941                 'position': 'absolute',
6942                 'top': 0,
6943                 'left': 0
6944             });
6945
6946         darkness = surface.append('path')
6947             .attr({
6948                 x: 0,
6949                 y: 0,
6950                 'class': 'curtain-darkness'
6951             });
6952
6953         d3.select(window).on('resize.curtain', resize);
6954
6955         tooltip = selection.append('div')
6956             .attr('class', 'tooltip')
6957             .style('z-index', 1002);
6958
6959         tooltip.append('div').attr('class', 'tooltip-arrow');
6960         tooltip.append('div').attr('class', 'tooltip-inner');
6961
6962         resize();
6963
6964         function resize() {
6965             surface.attr({
6966                 width: window.innerWidth,
6967                 height: window.innerHeight
6968             });
6969             curtain.cut(darkness.datum());
6970         }
6971     }
6972
6973     curtain.reveal = function(box, text, tooltipclass, duration) {
6974         if (typeof box === 'string') box = d3.select(box).node();
6975         if (box.getBoundingClientRect) box = box.getBoundingClientRect();
6976
6977         curtain.cut(box, duration);
6978
6979         if (text) {
6980             // pseudo markdown bold text hack
6981             var parts = text.split('**');
6982             var html = parts[0] ? '<span>' + parts[0] + '</span>' : '';
6983             if (parts[1]) html += '<span class="bold">' + parts[1] + '</span>';
6984
6985             var dimensions = tooltip.classed('in', true)
6986                 .select('.tooltip-inner')
6987                     .html(html)
6988                     .dimensions();
6989
6990             var pos;
6991
6992             var w = window.innerWidth,
6993                 h = window.innerHeight;
6994
6995             if (box.top + box.height < Math.min(100, box.width + box.left)) {
6996                 side = 'bottom';
6997                 pos = [box.left + box.width / 2 - dimensions[0]/ 2, box.top + box.height];
6998
6999             } else if (box.left + box.width + 300 < window.innerWidth) {
7000                 side = 'right';
7001                 pos = [box.left + box.width, box.top + box.height / 2 - dimensions[1] / 2];
7002
7003             } else if (box.left > 300) {
7004                 side = 'left';
7005                 pos = [box.left - 200, box.top + box.height / 2 - dimensions[1] / 2];
7006             } else {
7007                 side = 'bottom';
7008                 pos = [box.left, box.top + box.height];
7009             }
7010
7011             pos = [
7012                 Math.min(Math.max(10, pos[0]), w - dimensions[0] - 10),
7013                 Math.min(Math.max(10, pos[1]), h - dimensions[1] - 10)
7014             ];
7015
7016
7017             if (duration !== 0 || !tooltip.classed(side)) tooltip.call(iD.ui.Toggle(true));
7018
7019             tooltip
7020                 .style('top', pos[1] + 'px')
7021                 .style('left', pos[0] + 'px')
7022                 .attr('class', 'curtain-tooltip tooltip in ' + side + ' ' + tooltipclass)
7023                 .select('.tooltip-inner')
7024                     .html(html);
7025
7026         } else {
7027             tooltip.call(iD.ui.Toggle(false));
7028         }
7029     };
7030
7031     curtain.cut = function(datum, duration) {
7032         darkness.datum(datum);
7033
7034         (duration === 0 ? darkness : darkness.transition().duration(duration || 600))
7035             .attr('d', function(d) {
7036                 var string = "M 0,0 L 0," + window.innerHeight + " L " +
7037                     window.innerWidth + "," + window.innerHeight + "L" +
7038                     window.innerWidth + ",0 Z";
7039
7040                 if (!d) return string;
7041                 return string + 'M' +
7042                     d.left + ',' + d.top + 'L' +
7043                     d.left + ',' + (d.top + d.height) + 'L' +
7044                     (d.left + d.width) + ',' + (d.top + d.height) + 'L' +
7045                     (d.left + d.width) + ',' + (d.top) + 'Z';
7046
7047             });
7048     };
7049
7050     curtain.remove = function() {
7051         surface.remove();
7052         tooltip.remove();
7053     };
7054
7055     return d3.rebind(curtain, event, 'on');
7056 };
7057 // Like selection.property('value', ...), but avoids no-op value sets,
7058 // which can result in layout/repaint thrashing in some situations.
7059 d3.selection.prototype.value = function(value) {
7060     function d3_selection_value(value) {
7061       function valueNull() {
7062         delete this.value;
7063       }
7064
7065       function valueConstant() {
7066         if (this.value !== value) this.value = value;
7067       }
7068
7069       function valueFunction() {
7070         var x = value.apply(this, arguments);
7071         if (x == null) delete this.value;
7072         else if (this.value !== x) this.value = x;
7073       }
7074
7075       return value == null
7076           ? valueNull : (typeof value === "function"
7077           ? valueFunction : valueConstant);
7078     }
7079
7080     if (!arguments.length) return this.property('value');
7081     return this.each(d3_selection_value(value));
7082 };
7083 // Copyright (c) 2006, 2008 Tony Garnock-Jones <tonyg@lshift.net>
7084 // Copyright (c) 2006, 2008 LShift Ltd. <query@lshift.net>
7085 //
7086 // Permission is hereby granted, free of charge, to any person
7087 // obtaining a copy of this software and associated documentation files
7088 // (the "Software"), to deal in the Software without restriction,
7089 // including without limitation the rights to use, copy, modify, merge,
7090 // publish, distribute, sublicense, and/or sell copies of the Software,
7091 // and to permit persons to whom the Software is furnished to do so,
7092 // subject to the following conditions:
7093 //
7094 // The above copyright notice and this permission notice shall be
7095 // included in all copies or substantial portions of the Software.
7096 //
7097 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
7098 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
7099 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
7100 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
7101 // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7102 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
7103 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
7104 // SOFTWARE.
7105
7106 // source:  https://bitbucket.org/lshift/synchrotron/src
7107
7108 Diff3 = (function() {
7109     'use strict';
7110
7111     var diff3 = {
7112         longest_common_subsequence: function(file1, file2) {
7113             /* Text diff algorithm following Hunt and McIlroy 1976.
7114              * J. W. Hunt and M. D. McIlroy, An algorithm for differential file
7115              * comparison, Bell Telephone Laboratories CSTR #41 (1976)
7116              * http://www.cs.dartmouth.edu/~doug/
7117              *
7118              * Expects two arrays of strings.
7119              */
7120             var equivalenceClasses;
7121             var file2indices;
7122             var newCandidate;
7123             var candidates;
7124             var line;
7125             var c, i, j, jX, r, s;
7126
7127             equivalenceClasses = {};
7128             for (j = 0; j < file2.length; j++) {
7129                 line = file2[j];
7130                 if (equivalenceClasses[line]) {
7131                     equivalenceClasses[line].push(j);
7132                 } else {
7133                     equivalenceClasses[line] = [j];
7134                 }
7135             }
7136
7137             candidates = [{file1index: -1,
7138                            file2index: -1,
7139                            chain: null}];
7140
7141             for (i = 0; i < file1.length; i++) {
7142                 line = file1[i];
7143                 file2indices = equivalenceClasses[line] || [];
7144
7145                 r = 0;
7146                 c = candidates[0];
7147
7148                 for (jX = 0; jX < file2indices.length; jX++) {
7149                     j = file2indices[jX];
7150
7151                     for (s = 0; s < candidates.length; s++) {
7152                         if ((candidates[s].file2index < j) &&
7153                             ((s == candidates.length - 1) ||
7154                              (candidates[s + 1].file2index > j)))
7155                             break;
7156                     }
7157
7158                     if (s < candidates.length) {
7159                         newCandidate = {file1index: i,
7160                                         file2index: j,
7161                                         chain: candidates[s]};
7162                         if (r == candidates.length) {
7163                             candidates.push(c);
7164                         } else {
7165                             candidates[r] = c;
7166                         }
7167                         r = s + 1;
7168                         c = newCandidate;
7169                         if (r == candidates.length) {
7170                             break; // no point in examining further (j)s
7171                         }
7172                     }
7173                 }
7174
7175                 candidates[r] = c;
7176             }
7177
7178             // At this point, we know the LCS: it's in the reverse of the
7179             // linked-list through .chain of
7180             // candidates[candidates.length - 1].
7181
7182             return candidates[candidates.length - 1];
7183         },
7184
7185         diff_comm: function(file1, file2) {
7186             // We apply the LCS to build a "comm"-style picture of the
7187             // differences between file1 and file2.
7188
7189             var result = [];
7190             var tail1 = file1.length;
7191             var tail2 = file2.length;
7192             var common = {common: []};
7193
7194             function processCommon() {
7195                 if (common.common.length) {
7196                     common.common.reverse();
7197                     result.push(common);
7198                     common = {common: []};
7199                 }
7200             }
7201
7202             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7203                  candidate !== null;
7204                  candidate = candidate.chain)
7205             {
7206                 var different = {file1: [], file2: []};
7207
7208                 while (--tail1 > candidate.file1index) {
7209                     different.file1.push(file1[tail1]);
7210                 }
7211
7212                 while (--tail2 > candidate.file2index) {
7213                     different.file2.push(file2[tail2]);
7214                 }
7215
7216                 if (different.file1.length || different.file2.length) {
7217                     processCommon();
7218                     different.file1.reverse();
7219                     different.file2.reverse();
7220                     result.push(different);
7221                 }
7222
7223                 if (tail1 >= 0) {
7224                     common.common.push(file1[tail1]);
7225                 }
7226             }
7227
7228             processCommon();
7229
7230             result.reverse();
7231             return result;
7232         },
7233
7234         diff_patch: function(file1, file2) {
7235             // We apply the LCD to build a JSON representation of a
7236             // diff(1)-style patch.
7237
7238             var result = [];
7239             var tail1 = file1.length;
7240             var tail2 = file2.length;
7241
7242             function chunkDescription(file, offset, length) {
7243                 var chunk = [];
7244                 for (var i = 0; i < length; i++) {
7245                     chunk.push(file[offset + i]);
7246                 }
7247                 return {offset: offset,
7248                         length: length,
7249                         chunk: chunk};
7250             }
7251
7252             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7253                  candidate !== null;
7254                  candidate = candidate.chain)
7255             {
7256                 var mismatchLength1 = tail1 - candidate.file1index - 1;
7257                 var mismatchLength2 = tail2 - candidate.file2index - 1;
7258                 tail1 = candidate.file1index;
7259                 tail2 = candidate.file2index;
7260
7261                 if (mismatchLength1 || mismatchLength2) {
7262                     result.push({file1: chunkDescription(file1,
7263                                                          candidate.file1index + 1,
7264                                                          mismatchLength1),
7265                                  file2: chunkDescription(file2,
7266                                                          candidate.file2index + 1,
7267                                                          mismatchLength2)});
7268                 }
7269             }
7270
7271             result.reverse();
7272             return result;
7273         },
7274
7275         strip_patch: function(patch) {
7276         // Takes the output of Diff3.diff_patch(), and removes
7277         // information from it. It can still be used by patch(),
7278         // below, but can no longer be inverted.
7279         var newpatch = [];
7280         for (var i = 0; i < patch.length; i++) {
7281             var chunk = patch[i];
7282             newpatch.push({file1: {offset: chunk.file1.offset,
7283                        length: chunk.file1.length},
7284                    file2: {chunk: chunk.file2.chunk}});
7285         }
7286         return newpatch;
7287         },
7288
7289         invert_patch: function(patch) {
7290             // Takes the output of Diff3.diff_patch(), and inverts the
7291             // sense of it, so that it can be applied to file2 to give
7292             // file1 rather than the other way around.
7293
7294             for (var i = 0; i < patch.length; i++) {
7295                 var chunk = patch[i];
7296                 var tmp = chunk.file1;
7297                 chunk.file1 = chunk.file2;
7298                 chunk.file2 = tmp;
7299             }
7300         },
7301
7302         patch: function (file, patch) {
7303             // Applies a patch to a file.
7304             //
7305             // Given file1 and file2, Diff3.patch(file1,
7306             // Diff3.diff_patch(file1, file2)) should give file2.
7307
7308             var result = [];
7309             var commonOffset = 0;
7310
7311             function copyCommon(targetOffset) {
7312                 while (commonOffset < targetOffset) {
7313                     result.push(file[commonOffset]);
7314                     commonOffset++;
7315                 }
7316             }
7317
7318             for (var chunkIndex = 0; chunkIndex < patch.length; chunkIndex++) {
7319                 var chunk = patch[chunkIndex];
7320                 copyCommon(chunk.file1.offset);
7321                 for (var lineIndex = 0; lineIndex < chunk.file2.chunk.length; lineIndex++) {
7322                     result.push(chunk.file2.chunk[lineIndex]);
7323                 }
7324                 commonOffset += chunk.file1.length;
7325             }
7326
7327             copyCommon(file.length);
7328             return result;
7329         },
7330
7331         diff_indices: function(file1, file2) {
7332             // We apply the LCS to give a simple representation of the
7333             // offsets and lengths of mismatched chunks in the input
7334             // files. This is used by diff3_merge_indices below.
7335
7336             var result = [];
7337             var tail1 = file1.length;
7338             var tail2 = file2.length;
7339
7340             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7341                  candidate !== null;
7342                  candidate = candidate.chain)
7343             {
7344                 var mismatchLength1 = tail1 - candidate.file1index - 1;
7345                 var mismatchLength2 = tail2 - candidate.file2index - 1;
7346                 tail1 = candidate.file1index;
7347                 tail2 = candidate.file2index;
7348
7349                 if (mismatchLength1 || mismatchLength2) {
7350                     result.push({file1: [tail1 + 1, mismatchLength1],
7351                                  file2: [tail2 + 1, mismatchLength2]});
7352                 }
7353             }
7354
7355             result.reverse();
7356             return result;
7357         },
7358
7359         diff3_merge_indices: function (a, o, b) {
7360             // Given three files, A, O, and B, where both A and B are
7361             // independently derived from O, returns a fairly complicated
7362             // internal representation of merge decisions it's taken. The
7363             // interested reader may wish to consult
7364             //
7365             // Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. "A
7366             // Formal Investigation of Diff3." In Arvind and Prasad,
7367             // editors, Foundations of Software Technology and Theoretical
7368             // Computer Science (FSTTCS), December 2007.
7369             //
7370             // (http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf)
7371             var i;
7372
7373             var m1 = Diff3.diff_indices(o, a);
7374             var m2 = Diff3.diff_indices(o, b);
7375
7376             var hunks = [];
7377             function addHunk(h, side) {
7378                 hunks.push([h.file1[0], side, h.file1[1], h.file2[0], h.file2[1]]);
7379             }
7380             for (i = 0; i < m1.length; i++) { addHunk(m1[i], 0); }
7381             for (i = 0; i < m2.length; i++) { addHunk(m2[i], 2); }
7382             hunks.sort();
7383
7384             var result = [];
7385             var commonOffset = 0;
7386             function copyCommon(targetOffset) {
7387                 if (targetOffset > commonOffset) {
7388                     result.push([1, commonOffset, targetOffset - commonOffset]);
7389                     commonOffset = targetOffset;
7390                 }
7391             }
7392
7393             for (var hunkIndex = 0; hunkIndex < hunks.length; hunkIndex++) {
7394                 var firstHunkIndex = hunkIndex;
7395                 var hunk = hunks[hunkIndex];
7396                 var regionLhs = hunk[0];
7397                 var regionRhs = regionLhs + hunk[2];
7398                 while (hunkIndex < hunks.length - 1) {
7399                     var maybeOverlapping = hunks[hunkIndex + 1];
7400                     var maybeLhs = maybeOverlapping[0];
7401                     if (maybeLhs > regionRhs) break;
7402                     regionRhs = maybeLhs + maybeOverlapping[2];
7403                     hunkIndex++;
7404                 }
7405
7406                 copyCommon(regionLhs);
7407                 if (firstHunkIndex == hunkIndex) {
7408             // The "overlap" was only one hunk long, meaning that
7409             // there's no conflict here. Either a and o were the
7410             // same, or b and o were the same.
7411                     if (hunk[4] > 0) {
7412                         result.push([hunk[1], hunk[3], hunk[4]]);
7413                     }
7414                 } else {
7415             // A proper conflict. Determine the extents of the
7416             // regions involved from a, o and b. Effectively merge
7417             // all the hunks on the left into one giant hunk, and
7418             // do the same for the right; then, correct for skew
7419             // in the regions of o that each side changed, and
7420             // report appropriate spans for the three sides.
7421             var regions = {
7422                 0: [a.length, -1, o.length, -1],
7423                 2: [b.length, -1, o.length, -1]
7424             };
7425                     for (i = firstHunkIndex; i <= hunkIndex; i++) {
7426                 hunk = hunks[i];
7427                         var side = hunk[1];
7428                 var r = regions[side];
7429                 var oLhs = hunk[0];
7430                 var oRhs = oLhs + hunk[2];
7431                         var abLhs = hunk[3];
7432                         var abRhs = abLhs + hunk[4];
7433                 r[0] = Math.min(abLhs, r[0]);
7434                 r[1] = Math.max(abRhs, r[1]);
7435                 r[2] = Math.min(oLhs, r[2]);
7436                 r[3] = Math.max(oRhs, r[3]);
7437                     }
7438             var aLhs = regions[0][0] + (regionLhs - regions[0][2]);
7439             var aRhs = regions[0][1] + (regionRhs - regions[0][3]);
7440             var bLhs = regions[2][0] + (regionLhs - regions[2][2]);
7441             var bRhs = regions[2][1] + (regionRhs - regions[2][3]);
7442                     result.push([-1,
7443                      aLhs,      aRhs      - aLhs,
7444                      regionLhs, regionRhs - regionLhs,
7445                      bLhs,      bRhs      - bLhs]);
7446                 }
7447                 commonOffset = regionRhs;
7448             }
7449
7450             copyCommon(o.length);
7451             return result;
7452         },
7453
7454         diff3_merge: function (a, o, b, excludeFalseConflicts) {
7455             // Applies the output of Diff3.diff3_merge_indices to actually
7456             // construct the merged file; the returned result alternates
7457             // between "ok" and "conflict" blocks.
7458
7459             var result = [];
7460             var files = [a, o, b];
7461             var indices = Diff3.diff3_merge_indices(a, o, b);
7462
7463             var okLines = [];
7464             function flushOk() {
7465                 if (okLines.length) {
7466                     result.push({ok: okLines});
7467                 }
7468                 okLines = [];
7469             }
7470             function pushOk(xs) {
7471                 for (var j = 0; j < xs.length; j++) {
7472                     okLines.push(xs[j]);
7473                 }
7474             }
7475
7476             function isTrueConflict(rec) {
7477                 if (rec[2] != rec[6]) return true;
7478                 var aoff = rec[1];
7479                 var boff = rec[5];
7480                 for (var j = 0; j < rec[2]; j++) {
7481                     if (a[j + aoff] != b[j + boff]) return true;
7482                 }
7483                 return false;
7484             }
7485
7486             for (var i = 0; i < indices.length; i++) {
7487                 var x = indices[i];
7488                 var side = x[0];
7489                 if (side == -1) {
7490                     if (excludeFalseConflicts && !isTrueConflict(x)) {
7491                         pushOk(files[0].slice(x[1], x[1] + x[2]));
7492                     } else {
7493                         flushOk();
7494                         result.push({conflict: {a: a.slice(x[1], x[1] + x[2]),
7495                                                 aIndex: x[1],
7496                                                 o: o.slice(x[3], x[3] + x[4]),
7497                                                 oIndex: x[3],
7498                                                 b: b.slice(x[5], x[5] + x[6]),
7499                                                 bIndex: x[5]}});
7500                     }
7501                 } else {
7502                     pushOk(files[side].slice(x[1], x[1] + x[2]));
7503                 }
7504             }
7505
7506             flushOk();
7507             return result;
7508         }
7509     };
7510     return diff3;
7511 })();
7512
7513 if (typeof module !== 'undefined') module.exports = Diff3;
7514 var JXON = new (function () {
7515   var
7516     sValueProp = "keyValue", sAttributesProp = "keyAttributes", sAttrPref = "@", /* you can customize these values */
7517     aCache = [], rIsNull = /^\s*$/, rIsBool = /^(?:true|false)$/i;
7518
7519   function parseText (sValue) {
7520     if (rIsNull.test(sValue)) { return null; }
7521     if (rIsBool.test(sValue)) { return sValue.toLowerCase() === "true"; }
7522     if (isFinite(sValue)) { return parseFloat(sValue); }
7523     if (isFinite(Date.parse(sValue))) { return new Date(sValue); }
7524     return sValue;
7525   }
7526
7527   function EmptyTree () { }
7528   EmptyTree.prototype.toString = function () { return "null"; };
7529   EmptyTree.prototype.valueOf = function () { return null; };
7530
7531   function objectify (vValue) {
7532     return vValue === null ? new EmptyTree() : vValue instanceof Object ? vValue : new vValue.constructor(vValue);
7533   }
7534
7535   function createObjTree (oParentNode, nVerb, bFreeze, bNesteAttr) {
7536     var
7537       nLevelStart = aCache.length, bChildren = oParentNode.hasChildNodes(),
7538       bAttributes = oParentNode.hasAttributes(), bHighVerb = Boolean(nVerb & 2);
7539
7540     var
7541       sProp, vContent, nLength = 0, sCollectedTxt = "",
7542       vResult = bHighVerb ? {} : /* put here the default value for empty nodes: */ true;
7543
7544     if (bChildren) {
7545       for (var oNode, nItem = 0; nItem < oParentNode.childNodes.length; nItem++) {
7546         oNode = oParentNode.childNodes.item(nItem);
7547         if (oNode.nodeType === 4) { sCollectedTxt += oNode.nodeValue; } /* nodeType is "CDATASection" (4) */
7548         else if (oNode.nodeType === 3) { sCollectedTxt += oNode.nodeValue.trim(); } /* nodeType is "Text" (3) */
7549         else if (oNode.nodeType === 1 && !oNode.prefix) { aCache.push(oNode); } /* nodeType is "Element" (1) */
7550       }
7551     }
7552
7553     var nLevelEnd = aCache.length, vBuiltVal = parseText(sCollectedTxt);
7554
7555     if (!bHighVerb && (bChildren || bAttributes)) { vResult = nVerb === 0 ? objectify(vBuiltVal) : {}; }
7556
7557     for (var nElId = nLevelStart; nElId < nLevelEnd; nElId++) {
7558       sProp = aCache[nElId].nodeName.toLowerCase();
7559       vContent = createObjTree(aCache[nElId], nVerb, bFreeze, bNesteAttr);
7560       if (vResult.hasOwnProperty(sProp)) {
7561         if (vResult[sProp].constructor !== Array) { vResult[sProp] = [vResult[sProp]]; }
7562         vResult[sProp].push(vContent);
7563       } else {
7564         vResult[sProp] = vContent;
7565         nLength++;
7566       }
7567     }
7568
7569     if (bAttributes) {
7570       var
7571         nAttrLen = oParentNode.attributes.length,
7572         sAPrefix = bNesteAttr ? "" : sAttrPref, oAttrParent = bNesteAttr ? {} : vResult;
7573
7574       for (var oAttrib, nAttrib = 0; nAttrib < nAttrLen; nLength++, nAttrib++) {
7575         oAttrib = oParentNode.attributes.item(nAttrib);
7576         oAttrParent[sAPrefix + oAttrib.name.toLowerCase()] = parseText(oAttrib.value.trim());
7577       }
7578
7579       if (bNesteAttr) {
7580         if (bFreeze) { Object.freeze(oAttrParent); }
7581         vResult[sAttributesProp] = oAttrParent;
7582         nLength -= nAttrLen - 1;
7583       }
7584     }
7585
7586     if (nVerb === 3 || (nVerb === 2 || nVerb === 1 && nLength > 0) && sCollectedTxt) {
7587       vResult[sValueProp] = vBuiltVal;
7588     } else if (!bHighVerb && nLength === 0 && sCollectedTxt) {
7589       vResult = vBuiltVal;
7590     }
7591
7592     if (bFreeze && (bHighVerb || nLength > 0)) { Object.freeze(vResult); }
7593
7594     aCache.length = nLevelStart;
7595
7596     return vResult;
7597   }
7598
7599   function loadObjTree (oXMLDoc, oParentEl, oParentObj) {
7600     var vValue, oChild;
7601
7602     if (oParentObj instanceof String || oParentObj instanceof Number || oParentObj instanceof Boolean) {
7603       oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toString())); /* verbosity level is 0 */
7604     } else if (oParentObj.constructor === Date) {
7605       oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toGMTString()));    
7606     }
7607
7608     for (var sName in oParentObj) {
7609       vValue = oParentObj[sName];
7610       if (isFinite(sName) || vValue instanceof Function) { continue; } /* verbosity level is 0 */
7611       if (sName === sValueProp) {
7612         if (vValue !== null && vValue !== true) { oParentEl.appendChild(oXMLDoc.createTextNode(vValue.constructor === Date ? vValue.toGMTString() : String(vValue))); }
7613       } else if (sName === sAttributesProp) { /* verbosity level is 3 */
7614         for (var sAttrib in vValue) { oParentEl.setAttribute(sAttrib, vValue[sAttrib]); }
7615       } else if (sName.charAt(0) === sAttrPref) {
7616         oParentEl.setAttribute(sName.slice(1), vValue);
7617       } else if (vValue.constructor === Array) {
7618         for (var nItem = 0; nItem < vValue.length; nItem++) {
7619           oChild = oXMLDoc.createElement(sName);
7620           loadObjTree(oXMLDoc, oChild, vValue[nItem]);
7621           oParentEl.appendChild(oChild);
7622         }
7623       } else {
7624         oChild = oXMLDoc.createElement(sName);
7625         if (vValue instanceof Object) {
7626           loadObjTree(oXMLDoc, oChild, vValue);
7627         } else if (vValue !== null && vValue !== true) {
7628           oChild.appendChild(oXMLDoc.createTextNode(vValue.toString()));
7629         }
7630         oParentEl.appendChild(oChild);
7631      }
7632    }
7633   }
7634
7635   this.build = function (oXMLParent, nVerbosity /* optional */, bFreeze /* optional */, bNesteAttributes /* optional */) {
7636     var _nVerb = arguments.length > 1 && typeof nVerbosity === "number" ? nVerbosity & 3 : /* put here the default verbosity level: */ 1;
7637     return createObjTree(oXMLParent, _nVerb, bFreeze || false, arguments.length > 3 ? bNesteAttributes : _nVerb === 3);    
7638   };
7639
7640   this.unbuild = function (oObjTree) {    
7641     var oNewDoc = document.implementation.createDocument("", "", null);
7642     loadObjTree(oNewDoc, oNewDoc, oObjTree);
7643     return oNewDoc;
7644   };
7645
7646   this.stringify = function (oObjTree) {
7647     return (new XMLSerializer()).serializeToString(JXON.unbuild(oObjTree));
7648   };
7649 })();
7650 // var myObject = JXON.build(doc);
7651 // we got our javascript object! try: alert(JSON.stringify(myObject));
7652
7653 // var newDoc = JXON.unbuild(myObject);
7654 // we got our Document instance! try: alert((new XMLSerializer()).serializeToString(newDoc));
7655 /**
7656  * @license
7657  * lodash 3.9.3 (Custom Build) <https://lodash.com/>
7658  * Build: `lodash --development --output js/lib/lodash.js include="any,assign,bind,chunk,clone,compact,contains,debounce,difference,each,every,extend,filter,find,first,forEach,forOwn,groupBy,indexOf,intersection,isEmpty,isEqual,isFunction,keys,last,map,omit,pairs,pluck,reject,some,throttle,union,uniq,unique,values,without,flatten,value,chain,cloneDeep,merge,pick,reduce" exports="global,node"`
7659  * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
7660  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
7661  * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7662  * Available under MIT license <https://lodash.com/license>
7663  */
7664 ;(function() {
7665
7666   /** Used as a safe reference for `undefined` in pre-ES5 environments. */
7667   var undefined;
7668
7669   /** Used as the semantic version number. */
7670   var VERSION = '3.9.3';
7671
7672   /** Used to compose bitmasks for wrapper metadata. */
7673   var BIND_FLAG = 1,
7674       BIND_KEY_FLAG = 2,
7675       CURRY_BOUND_FLAG = 4,
7676       CURRY_FLAG = 8,
7677       CURRY_RIGHT_FLAG = 16,
7678       PARTIAL_FLAG = 32,
7679       PARTIAL_RIGHT_FLAG = 64,
7680       ARY_FLAG = 128,
7681       REARG_FLAG = 256;
7682
7683   /** Used to detect when a function becomes hot. */
7684   var HOT_COUNT = 150,
7685       HOT_SPAN = 16;
7686
7687   /** Used to indicate the type of lazy iteratees. */
7688   var LAZY_DROP_WHILE_FLAG = 0,
7689       LAZY_FILTER_FLAG = 1,
7690       LAZY_MAP_FLAG = 2;
7691
7692   /** Used as the `TypeError` message for "Functions" methods. */
7693   var FUNC_ERROR_TEXT = 'Expected a function';
7694
7695   /** Used as the internal argument placeholder. */
7696   var PLACEHOLDER = '__lodash_placeholder__';
7697
7698   /** `Object#toString` result references. */
7699   var argsTag = '[object Arguments]',
7700       arrayTag = '[object Array]',
7701       boolTag = '[object Boolean]',
7702       dateTag = '[object Date]',
7703       errorTag = '[object Error]',
7704       funcTag = '[object Function]',
7705       mapTag = '[object Map]',
7706       numberTag = '[object Number]',
7707       objectTag = '[object Object]',
7708       regexpTag = '[object RegExp]',
7709       setTag = '[object Set]',
7710       stringTag = '[object String]',
7711       weakMapTag = '[object WeakMap]';
7712
7713   var arrayBufferTag = '[object ArrayBuffer]',
7714       float32Tag = '[object Float32Array]',
7715       float64Tag = '[object Float64Array]',
7716       int8Tag = '[object Int8Array]',
7717       int16Tag = '[object Int16Array]',
7718       int32Tag = '[object Int32Array]',
7719       uint8Tag = '[object Uint8Array]',
7720       uint8ClampedTag = '[object Uint8ClampedArray]',
7721       uint16Tag = '[object Uint16Array]',
7722       uint32Tag = '[object Uint32Array]';
7723
7724   /** Used to match property names within property paths. */
7725   var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
7726       reIsPlainProp = /^\w*$/,
7727       rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
7728
7729   /**
7730    * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
7731    * In addition to special characters the forward slash is escaped to allow for
7732    * easier `eval` use and `Function` compilation.
7733    */
7734   var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
7735       reHasRegExpChars = RegExp(reRegExpChars.source);
7736
7737   /** Used to match backslashes in property paths. */
7738   var reEscapeChar = /\\(\\)?/g;
7739
7740   /** Used to match `RegExp` flags from their coerced string values. */
7741   var reFlags = /\w*$/;
7742
7743   /** Used to detect host constructors (Safari > 5). */
7744   var reIsHostCtor = /^\[object .+?Constructor\]$/;
7745
7746   /** Used to detect unsigned integer values. */
7747   var reIsUint = /^\d+$/;
7748
7749   /** Used to fix the JScript `[[DontEnum]]` bug. */
7750   var shadowProps = [
7751     'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',
7752     'toLocaleString', 'toString', 'valueOf'
7753   ];
7754
7755   /** Used to identify `toStringTag` values of typed arrays. */
7756   var typedArrayTags = {};
7757   typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
7758   typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
7759   typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
7760   typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
7761   typedArrayTags[uint32Tag] = true;
7762   typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
7763   typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
7764   typedArrayTags[dateTag] = typedArrayTags[errorTag] =
7765   typedArrayTags[funcTag] = typedArrayTags[mapTag] =
7766   typedArrayTags[numberTag] = typedArrayTags[objectTag] =
7767   typedArrayTags[regexpTag] = typedArrayTags[setTag] =
7768   typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
7769
7770   /** Used to identify `toStringTag` values supported by `_.clone`. */
7771   var cloneableTags = {};
7772   cloneableTags[argsTag] = cloneableTags[arrayTag] =
7773   cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
7774   cloneableTags[dateTag] = cloneableTags[float32Tag] =
7775   cloneableTags[float64Tag] = cloneableTags[int8Tag] =
7776   cloneableTags[int16Tag] = cloneableTags[int32Tag] =
7777   cloneableTags[numberTag] = cloneableTags[objectTag] =
7778   cloneableTags[regexpTag] = cloneableTags[stringTag] =
7779   cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
7780   cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
7781   cloneableTags[errorTag] = cloneableTags[funcTag] =
7782   cloneableTags[mapTag] = cloneableTags[setTag] =
7783   cloneableTags[weakMapTag] = false;
7784
7785   /** Used as an internal `_.debounce` options object by `_.throttle`. */
7786   var debounceOptions = {
7787     'leading': false,
7788     'maxWait': 0,
7789     'trailing': false
7790   };
7791
7792   /** Used to determine if values are of the language type `Object`. */
7793   var objectTypes = {
7794     'function': true,
7795     'object': true
7796   };
7797
7798   /** Detect free variable `exports`. */
7799   var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
7800
7801   /** Detect free variable `module`. */
7802   var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
7803
7804   /** Detect free variable `global` from Node.js. */
7805   var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
7806
7807   /** Detect free variable `self`. */
7808   var freeSelf = objectTypes[typeof self] && self && self.Object && self;
7809
7810   /** Detect free variable `window`. */
7811   var freeWindow = objectTypes[typeof window] && window && window.Object && window;
7812
7813   /** Detect the popular CommonJS extension `module.exports`. */
7814   var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;
7815
7816   /**
7817    * Used as a reference to the global object.
7818    *
7819    * The `this` value is used if it's the global object to avoid Greasemonkey's
7820    * restricted `window` object, otherwise the `window` object is used.
7821    */
7822   var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
7823
7824   /*--------------------------------------------------------------------------*/
7825
7826   /**
7827    * The base implementation of `_.findIndex` and `_.findLastIndex` without
7828    * support for callback shorthands and `this` binding.
7829    *
7830    * @private
7831    * @param {Array} array The array to search.
7832    * @param {Function} predicate The function invoked per iteration.
7833    * @param {boolean} [fromRight] Specify iterating from right to left.
7834    * @returns {number} Returns the index of the matched value, else `-1`.
7835    */
7836   function baseFindIndex(array, predicate, fromRight) {
7837     var length = array.length,
7838         index = fromRight ? length : -1;
7839
7840     while ((fromRight ? index-- : ++index < length)) {
7841       if (predicate(array[index], index, array)) {
7842         return index;
7843       }
7844     }
7845     return -1;
7846   }
7847
7848   /**
7849    * The base implementation of `_.indexOf` without support for binary searches.
7850    *
7851    * @private
7852    * @param {Array} array The array to search.
7853    * @param {*} value The value to search for.
7854    * @param {number} fromIndex The index to search from.
7855    * @returns {number} Returns the index of the matched value, else `-1`.
7856    */
7857   function baseIndexOf(array, value, fromIndex) {
7858     if (value !== value) {
7859       return indexOfNaN(array, fromIndex);
7860     }
7861     var index = fromIndex - 1,
7862         length = array.length;
7863
7864     while (++index < length) {
7865       if (array[index] === value) {
7866         return index;
7867       }
7868     }
7869     return -1;
7870   }
7871
7872   /**
7873    * The base implementation of `_.isFunction` without support for environments
7874    * with incorrect `typeof` results.
7875    *
7876    * @private
7877    * @param {*} value The value to check.
7878    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
7879    */
7880   function baseIsFunction(value) {
7881     // Avoid a Chakra JIT bug in compatibility modes of IE 11.
7882     // See https://github.com/jashkenas/underscore/issues/1621 for more details.
7883     return typeof value == 'function' || false;
7884   }
7885
7886   /**
7887    * Converts `value` to a string if it's not one. An empty string is returned
7888    * for `null` or `undefined` values.
7889    *
7890    * @private
7891    * @param {*} value The value to process.
7892    * @returns {string} Returns the string.
7893    */
7894   function baseToString(value) {
7895     if (typeof value == 'string') {
7896       return value;
7897     }
7898     return value == null ? '' : (value + '');
7899   }
7900
7901   /**
7902    * Gets the index at which the first occurrence of `NaN` is found in `array`.
7903    *
7904    * @private
7905    * @param {Array} array The array to search.
7906    * @param {number} fromIndex The index to search from.
7907    * @param {boolean} [fromRight] Specify iterating from right to left.
7908    * @returns {number} Returns the index of the matched `NaN`, else `-1`.
7909    */
7910   function indexOfNaN(array, fromIndex, fromRight) {
7911     var length = array.length,
7912         index = fromIndex + (fromRight ? 0 : -1);
7913
7914     while ((fromRight ? index-- : ++index < length)) {
7915       var other = array[index];
7916       if (other !== other) {
7917         return index;
7918       }
7919     }
7920     return -1;
7921   }
7922
7923   /**
7924    * Checks if `value` is a host object in IE < 9.
7925    *
7926    * @private
7927    * @param {*} value The value to check.
7928    * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
7929    */
7930   var isHostObject = (function() {
7931     try {
7932       Object({ 'toString': 0 } + '');
7933     } catch(e) {
7934       return function() { return false; };
7935     }
7936     return function(value) {
7937       // IE < 9 presents many host objects as `Object` objects that can coerce
7938       // to strings despite having improperly defined `toString` methods.
7939       return typeof value.toString != 'function' && typeof (value + '') == 'string';
7940     };
7941   }());
7942
7943   /**
7944    * Checks if `value` is object-like.
7945    *
7946    * @private
7947    * @param {*} value The value to check.
7948    * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
7949    */
7950   function isObjectLike(value) {
7951     return !!value && typeof value == 'object';
7952   }
7953
7954   /**
7955    * Replaces all `placeholder` elements in `array` with an internal placeholder
7956    * and returns an array of their indexes.
7957    *
7958    * @private
7959    * @param {Array} array The array to modify.
7960    * @param {*} placeholder The placeholder to replace.
7961    * @returns {Array} Returns the new array of placeholder indexes.
7962    */
7963   function replaceHolders(array, placeholder) {
7964     var index = -1,
7965         length = array.length,
7966         resIndex = -1,
7967         result = [];
7968
7969     while (++index < length) {
7970       if (array[index] === placeholder) {
7971         array[index] = PLACEHOLDER;
7972         result[++resIndex] = index;
7973       }
7974     }
7975     return result;
7976   }
7977
7978   /**
7979    * An implementation of `_.uniq` optimized for sorted arrays without support
7980    * for callback shorthands and `this` binding.
7981    *
7982    * @private
7983    * @param {Array} array The array to inspect.
7984    * @param {Function} [iteratee] The function invoked per iteration.
7985    * @returns {Array} Returns the new duplicate-value-free array.
7986    */
7987   function sortedUniq(array, iteratee) {
7988     var seen,
7989         index = -1,
7990         length = array.length,
7991         resIndex = -1,
7992         result = [];
7993
7994     while (++index < length) {
7995       var value = array[index],
7996           computed = iteratee ? iteratee(value, index, array) : value;
7997
7998       if (!index || seen !== computed) {
7999         seen = computed;
8000         result[++resIndex] = value;
8001       }
8002     }
8003     return result;
8004   }
8005
8006   /*--------------------------------------------------------------------------*/
8007
8008   /** Used for native method references. */
8009   var arrayProto = Array.prototype,
8010       errorProto = Error.prototype,
8011       objectProto = Object.prototype,
8012       stringProto = String.prototype;
8013
8014   /** Used to resolve the decompiled source of functions. */
8015   var fnToString = Function.prototype.toString;
8016
8017   /** Used to check objects for own properties. */
8018   var hasOwnProperty = objectProto.hasOwnProperty;
8019
8020   /**
8021    * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
8022    * of values.
8023    */
8024   var objToString = objectProto.toString;
8025
8026   /** Used to detect if a method is native. */
8027   var reIsNative = RegExp('^' +
8028     escapeRegExp(fnToString.call(hasOwnProperty))
8029     .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
8030   );
8031
8032   /** Native method references. */
8033   var ArrayBuffer = getNative(root, 'ArrayBuffer'),
8034       bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),
8035       ceil = Math.ceil,
8036       floor = Math.floor,
8037       getPrototypeOf = getNative(Object, 'getPrototypeOf'),
8038       push = arrayProto.push,
8039       propertyIsEnumerable = objectProto.propertyIsEnumerable,
8040       Set = getNative(root, 'Set'),
8041       splice = arrayProto.splice,
8042       Uint8Array = getNative(root, 'Uint8Array'),
8043       WeakMap = getNative(root, 'WeakMap');
8044
8045   /** Used to clone array buffers. */
8046   var Float64Array = (function() {
8047     // Safari 5 errors when using an array buffer to initialize a typed array
8048     // where the array buffer's `byteLength` is not a multiple of the typed
8049     // array's `BYTES_PER_ELEMENT`.
8050     try {
8051       var func = getNative(root, 'Float64Array'),
8052           result = new func(new ArrayBuffer(10), 0, 1) && func;
8053     } catch(e) {}
8054     return result || null;
8055   }());
8056
8057   /* Native method references for those with the same name as other `lodash` methods. */
8058   var nativeCreate = getNative(Object, 'create'),
8059       nativeIsArray = getNative(Array, 'isArray'),
8060       nativeKeys = getNative(Object, 'keys'),
8061       nativeMax = Math.max,
8062       nativeMin = Math.min,
8063       nativeNow = getNative(Date, 'now');
8064
8065   /** Used as references for `-Infinity` and `Infinity`. */
8066   var POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
8067
8068   /** Used as references for the maximum length and index of an array. */
8069   var MAX_ARRAY_LENGTH = 4294967295,
8070       MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
8071       HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
8072
8073   /** Used as the size, in bytes, of each `Float64Array` element. */
8074   var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
8075
8076   /**
8077    * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
8078    * of an array-like value.
8079    */
8080   var MAX_SAFE_INTEGER = 9007199254740991;
8081
8082   /** Used to store function metadata. */
8083   var metaMap = WeakMap && new WeakMap;
8084
8085   /** Used to lookup unminified function names. */
8086   var realNames = {};
8087
8088   /** Used to lookup a type array constructors by `toStringTag`. */
8089   var ctorByTag = {};
8090   ctorByTag[float32Tag] = root.Float32Array;
8091   ctorByTag[float64Tag] = root.Float64Array;
8092   ctorByTag[int8Tag] = root.Int8Array;
8093   ctorByTag[int16Tag] = root.Int16Array;
8094   ctorByTag[int32Tag] = root.Int32Array;
8095   ctorByTag[uint8Tag] = root.Uint8Array;
8096   ctorByTag[uint8ClampedTag] = root.Uint8ClampedArray;
8097   ctorByTag[uint16Tag] = root.Uint16Array;
8098   ctorByTag[uint32Tag] = root.Uint32Array;
8099
8100   /** Used to avoid iterating over non-enumerable properties in IE < 9. */
8101   var nonEnumProps = {};
8102   nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };
8103   nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };
8104   nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };
8105   nonEnumProps[objectTag] = { 'constructor': true };
8106
8107   arrayEach(shadowProps, function(key) {
8108     for (var tag in nonEnumProps) {
8109       if (hasOwnProperty.call(nonEnumProps, tag)) {
8110         var props = nonEnumProps[tag];
8111         props[key] = hasOwnProperty.call(props, key);
8112       }
8113     }
8114   });
8115
8116   /*------------------------------------------------------------------------*/
8117
8118   /**
8119    * Creates a `lodash` object which wraps `value` to enable implicit chaining.
8120    * Methods that operate on and return arrays, collections, and functions can
8121    * be chained together. Methods that return a boolean or single value will
8122    * automatically end the chain returning the unwrapped value. Explicit chaining
8123    * may be enabled using `_.chain`. The execution of chained methods is lazy,
8124    * that is, execution is deferred until `_#value` is implicitly or explicitly
8125    * called.
8126    *
8127    * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
8128    * fusion is an optimization that merges iteratees to avoid creating intermediate
8129    * arrays and reduce the number of iteratee executions.
8130    *
8131    * Chaining is supported in custom builds as long as the `_#value` method is
8132    * directly or indirectly included in the build.
8133    *
8134    * In addition to lodash methods, wrappers have `Array` and `String` methods.
8135    *
8136    * The wrapper `Array` methods are:
8137    * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
8138    * `splice`, and `unshift`
8139    *
8140    * The wrapper `String` methods are:
8141    * `replace` and `split`
8142    *
8143    * The wrapper methods that support shortcut fusion are:
8144    * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
8145    * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
8146    * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
8147    * and `where`
8148    *
8149    * The chainable wrapper methods are:
8150    * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
8151    * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
8152    * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
8153    * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
8154    * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
8155    * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
8156    * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
8157    * `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
8158    * `memoize`, `merge`, `method`, `methodOf`, `mixin`, `negate`, `omit`, `once`,
8159    * `pairs`, `partial`, `partialRight`, `partition`, `pick`, `plant`, `pluck`,
8160    * `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`, `rearg`,
8161    * `reject`, `remove`, `rest`, `restParam`, `reverse`, `set`, `shuffle`,
8162    * `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, `spread`,
8163    * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
8164    * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
8165    * `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `where`, `without`,
8166    * `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
8167    *
8168    * The wrapper methods that are **not** chainable by default are:
8169    * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
8170    * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
8171    * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `get`,
8172    * `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, `inRange`, `isArguments`,
8173    * `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
8174    * `isFinite` `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
8175    * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
8176    * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lt`, `lte`,
8177    * `max`, `min`, `noConflict`, `noop`, `now`, `pad`, `padLeft`, `padRight`,
8178    * `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`,
8179    * `runInContext`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
8180    * `sortedLastIndex`, `startCase`, `startsWith`, `sum`, `template`, `trim`,
8181    * `trimLeft`, `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`
8182    *
8183    * The wrapper method `sample` will return a wrapped value when `n` is provided,
8184    * otherwise an unwrapped value is returned.
8185    *
8186    * @name _
8187    * @constructor
8188    * @category Chain
8189    * @param {*} value The value to wrap in a `lodash` instance.
8190    * @returns {Object} Returns the new `lodash` wrapper instance.
8191    * @example
8192    *
8193    * var wrapped = _([1, 2, 3]);
8194    *
8195    * // returns an unwrapped value
8196    * wrapped.reduce(function(total, n) {
8197    *   return total + n;
8198    * });
8199    * // => 6
8200    *
8201    * // returns a wrapped value
8202    * var squares = wrapped.map(function(n) {
8203    *   return n * n;
8204    * });
8205    *
8206    * _.isArray(squares);
8207    * // => false
8208    *
8209    * _.isArray(squares.value());
8210    * // => true
8211    */
8212   function lodash(value) {
8213     if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
8214       if (value instanceof LodashWrapper) {
8215         return value;
8216       }
8217       if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
8218         return wrapperClone(value);
8219       }
8220     }
8221     return new LodashWrapper(value);
8222   }
8223
8224   /**
8225    * The function whose prototype all chaining wrappers inherit from.
8226    *
8227    * @private
8228    */
8229   function baseLodash() {
8230     // No operation performed.
8231   }
8232
8233   /**
8234    * The base constructor for creating `lodash` wrapper objects.
8235    *
8236    * @private
8237    * @param {*} value The value to wrap.
8238    * @param {boolean} [chainAll] Enable chaining for all wrapper methods.
8239    * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.
8240    */
8241   function LodashWrapper(value, chainAll, actions) {
8242     this.__wrapped__ = value;
8243     this.__actions__ = actions || [];
8244     this.__chain__ = !!chainAll;
8245   }
8246
8247   /**
8248    * An object environment feature flags.
8249    *
8250    * @static
8251    * @memberOf _
8252    * @type Object
8253    */
8254   var support = lodash.support = {};
8255
8256   (function(x) {
8257     var Ctor = function() { this.x = x; },
8258         object = { '0': x, 'length': x },
8259         props = [];
8260
8261     Ctor.prototype = { 'valueOf': x, 'y': x };
8262     for (var key in new Ctor) { props.push(key); }
8263
8264     /**
8265      * Detect if the `toStringTag` of `arguments` objects is resolvable
8266      * (all but Firefox < 4, IE < 9).
8267      *
8268      * @memberOf _.support
8269      * @type boolean
8270      */
8271     support.argsTag = objToString.call(arguments) == argsTag;
8272
8273     /**
8274      * Detect if `name` or `message` properties of `Error.prototype` are
8275      * enumerable by default (IE < 9, Safari < 5.1).
8276      *
8277      * @memberOf _.support
8278      * @type boolean
8279      */
8280     support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||
8281       propertyIsEnumerable.call(errorProto, 'name');
8282
8283     /**
8284      * Detect if `prototype` properties are enumerable by default.
8285      *
8286      * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1
8287      * (if the prototype or a property on the prototype has been set)
8288      * incorrectly set the `[[Enumerable]]` value of a function's `prototype`
8289      * property to `true`.
8290      *
8291      * @memberOf _.support
8292      * @type boolean
8293      */
8294     support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');
8295
8296     /**
8297      * Detect if properties shadowing those on `Object.prototype` are non-enumerable.
8298      *
8299      * In IE < 9 an object's own properties, shadowing non-enumerable ones,
8300      * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).
8301      *
8302      * @memberOf _.support
8303      * @type boolean
8304      */
8305     support.nonEnumShadows = !/valueOf/.test(props);
8306
8307     /**
8308      * Detect if own properties are iterated after inherited properties (IE < 9).
8309      *
8310      * @memberOf _.support
8311      * @type boolean
8312      */
8313     support.ownLast = props[0] != 'x';
8314
8315     /**
8316      * Detect if `Array#shift` and `Array#splice` augment array-like objects
8317      * correctly.
8318      *
8319      * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array
8320      * `shift()` and `splice()` functions that fail to remove the last element,
8321      * `value[0]`, of array-like objects even though the "length" property is
8322      * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,
8323      * while `splice()` is buggy regardless of mode in IE < 9.
8324      *
8325      * @memberOf _.support
8326      * @type boolean
8327      */
8328     support.spliceObjects = (splice.call(object, 0, 1), !object[0]);
8329
8330     /**
8331      * Detect lack of support for accessing string characters by index.
8332      *
8333      * IE < 8 can't access characters by index. IE 8 can only access characters
8334      * by index on string literals, not string objects.
8335      *
8336      * @memberOf _.support
8337      * @type boolean
8338      */
8339     support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';
8340   }(1, 0));
8341
8342   /*------------------------------------------------------------------------*/
8343
8344   /**
8345    * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
8346    *
8347    * @private
8348    * @param {*} value The value to wrap.
8349    */
8350   function LazyWrapper(value) {
8351     this.__wrapped__ = value;
8352     this.__actions__ = null;
8353     this.__dir__ = 1;
8354     this.__dropCount__ = 0;
8355     this.__filtered__ = false;
8356     this.__iteratees__ = null;
8357     this.__takeCount__ = POSITIVE_INFINITY;
8358     this.__views__ = null;
8359   }
8360
8361   /**
8362    * Creates a clone of the lazy wrapper object.
8363    *
8364    * @private
8365    * @name clone
8366    * @memberOf LazyWrapper
8367    * @returns {Object} Returns the cloned `LazyWrapper` object.
8368    */
8369   function lazyClone() {
8370     var actions = this.__actions__,
8371         iteratees = this.__iteratees__,
8372         views = this.__views__,
8373         result = new LazyWrapper(this.__wrapped__);
8374
8375     result.__actions__ = actions ? arrayCopy(actions) : null;
8376     result.__dir__ = this.__dir__;
8377     result.__filtered__ = this.__filtered__;
8378     result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
8379     result.__takeCount__ = this.__takeCount__;
8380     result.__views__ = views ? arrayCopy(views) : null;
8381     return result;
8382   }
8383
8384   /**
8385    * Reverses the direction of lazy iteration.
8386    *
8387    * @private
8388    * @name reverse
8389    * @memberOf LazyWrapper
8390    * @returns {Object} Returns the new reversed `LazyWrapper` object.
8391    */
8392   function lazyReverse() {
8393     if (this.__filtered__) {
8394       var result = new LazyWrapper(this);
8395       result.__dir__ = -1;
8396       result.__filtered__ = true;
8397     } else {
8398       result = this.clone();
8399       result.__dir__ *= -1;
8400     }
8401     return result;
8402   }
8403
8404   /**
8405    * Extracts the unwrapped value from its lazy wrapper.
8406    *
8407    * @private
8408    * @name value
8409    * @memberOf LazyWrapper
8410    * @returns {*} Returns the unwrapped value.
8411    */
8412   function lazyValue() {
8413     var array = this.__wrapped__.value();
8414     if (!isArray(array)) {
8415       return baseWrapperValue(array, this.__actions__);
8416     }
8417     var dir = this.__dir__,
8418         isRight = dir < 0,
8419         view = getView(0, array.length, this.__views__),
8420         start = view.start,
8421         end = view.end,
8422         length = end - start,
8423         index = isRight ? end : (start - 1),
8424         takeCount = nativeMin(length, this.__takeCount__),
8425         iteratees = this.__iteratees__,
8426         iterLength = iteratees ? iteratees.length : 0,
8427         resIndex = 0,
8428         result = [];
8429
8430     outer:
8431     while (length-- && resIndex < takeCount) {
8432       index += dir;
8433
8434       var iterIndex = -1,
8435           value = array[index];
8436
8437       while (++iterIndex < iterLength) {
8438         var data = iteratees[iterIndex],
8439             iteratee = data.iteratee,
8440             type = data.type;
8441
8442         if (type == LAZY_DROP_WHILE_FLAG) {
8443           if (data.done && (isRight ? (index > data.index) : (index < data.index))) {
8444             data.count = 0;
8445             data.done = false;
8446           }
8447           data.index = index;
8448           if (!data.done) {
8449             var limit = data.limit;
8450             if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) {
8451               continue outer;
8452             }
8453           }
8454         } else {
8455           var computed = iteratee(value);
8456           if (type == LAZY_MAP_FLAG) {
8457             value = computed;
8458           } else if (!computed) {
8459             if (type == LAZY_FILTER_FLAG) {
8460               continue outer;
8461             } else {
8462               break outer;
8463             }
8464           }
8465         }
8466       }
8467       result[resIndex++] = value;
8468     }
8469     return result;
8470   }
8471
8472   /*------------------------------------------------------------------------*/
8473
8474   /**
8475    *
8476    * Creates a cache object to store unique values.
8477    *
8478    * @private
8479    * @param {Array} [values] The values to cache.
8480    */
8481   function SetCache(values) {
8482     var length = values ? values.length : 0;
8483
8484     this.data = { 'hash': nativeCreate(null), 'set': new Set };
8485     while (length--) {
8486       this.push(values[length]);
8487     }
8488   }
8489
8490   /**
8491    * Checks if `value` is in `cache` mimicking the return signature of
8492    * `_.indexOf` by returning `0` if the value is found, else `-1`.
8493    *
8494    * @private
8495    * @param {Object} cache The cache to search.
8496    * @param {*} value The value to search for.
8497    * @returns {number} Returns `0` if `value` is found, else `-1`.
8498    */
8499   function cacheIndexOf(cache, value) {
8500     var data = cache.data,
8501         result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
8502
8503     return result ? 0 : -1;
8504   }
8505
8506   /**
8507    * Adds `value` to the cache.
8508    *
8509    * @private
8510    * @name push
8511    * @memberOf SetCache
8512    * @param {*} value The value to cache.
8513    */
8514   function cachePush(value) {
8515     var data = this.data;
8516     if (typeof value == 'string' || isObject(value)) {
8517       data.set.add(value);
8518     } else {
8519       data.hash[value] = true;
8520     }
8521   }
8522
8523   /*------------------------------------------------------------------------*/
8524
8525   /**
8526    * Copies the values of `source` to `array`.
8527    *
8528    * @private
8529    * @param {Array} source The array to copy values from.
8530    * @param {Array} [array=[]] The array to copy values to.
8531    * @returns {Array} Returns `array`.
8532    */
8533   function arrayCopy(source, array) {
8534     var index = -1,
8535         length = source.length;
8536
8537     array || (array = Array(length));
8538     while (++index < length) {
8539       array[index] = source[index];
8540     }
8541     return array;
8542   }
8543
8544   /**
8545    * A specialized version of `_.forEach` for arrays without support for callback
8546    * shorthands and `this` binding.
8547    *
8548    * @private
8549    * @param {Array} array The array to iterate over.
8550    * @param {Function} iteratee The function invoked per iteration.
8551    * @returns {Array} Returns `array`.
8552    */
8553   function arrayEach(array, iteratee) {
8554     var index = -1,
8555         length = array.length;
8556
8557     while (++index < length) {
8558       if (iteratee(array[index], index, array) === false) {
8559         break;
8560       }
8561     }
8562     return array;
8563   }
8564
8565   /**
8566    * A specialized version of `_.every` for arrays without support for callback
8567    * shorthands and `this` binding.
8568    *
8569    * @private
8570    * @param {Array} array The array to iterate over.
8571    * @param {Function} predicate The function invoked per iteration.
8572    * @returns {boolean} Returns `true` if all elements pass the predicate check,
8573    *  else `false`.
8574    */
8575   function arrayEvery(array, predicate) {
8576     var index = -1,
8577         length = array.length;
8578
8579     while (++index < length) {
8580       if (!predicate(array[index], index, array)) {
8581         return false;
8582       }
8583     }
8584     return true;
8585   }
8586
8587   /**
8588    * A specialized version of `_.filter` for arrays without support for callback
8589    * shorthands and `this` binding.
8590    *
8591    * @private
8592    * @param {Array} array The array to iterate over.
8593    * @param {Function} predicate The function invoked per iteration.
8594    * @returns {Array} Returns the new filtered array.
8595    */
8596   function arrayFilter(array, predicate) {
8597     var index = -1,
8598         length = array.length,
8599         resIndex = -1,
8600         result = [];
8601
8602     while (++index < length) {
8603       var value = array[index];
8604       if (predicate(value, index, array)) {
8605         result[++resIndex] = value;
8606       }
8607     }
8608     return result;
8609   }
8610
8611   /**
8612    * A specialized version of `_.map` for arrays without support for callback
8613    * shorthands and `this` binding.
8614    *
8615    * @private
8616    * @param {Array} array The array to iterate over.
8617    * @param {Function} iteratee The function invoked per iteration.
8618    * @returns {Array} Returns the new mapped array.
8619    */
8620   function arrayMap(array, iteratee) {
8621     var index = -1,
8622         length = array.length,
8623         result = Array(length);
8624
8625     while (++index < length) {
8626       result[index] = iteratee(array[index], index, array);
8627     }
8628     return result;
8629   }
8630
8631   /**
8632    * A specialized version of `_.reduce` for arrays without support for callback
8633    * shorthands and `this` binding.
8634    *
8635    * @private
8636    * @param {Array} array The array to iterate over.
8637    * @param {Function} iteratee The function invoked per iteration.
8638    * @param {*} [accumulator] The initial value.
8639    * @param {boolean} [initFromArray] Specify using the first element of `array`
8640    *  as the initial value.
8641    * @returns {*} Returns the accumulated value.
8642    */
8643   function arrayReduce(array, iteratee, accumulator, initFromArray) {
8644     var index = -1,
8645         length = array.length;
8646
8647     if (initFromArray && length) {
8648       accumulator = array[++index];
8649     }
8650     while (++index < length) {
8651       accumulator = iteratee(accumulator, array[index], index, array);
8652     }
8653     return accumulator;
8654   }
8655
8656   /**
8657    * A specialized version of `_.some` for arrays without support for callback
8658    * shorthands and `this` binding.
8659    *
8660    * @private
8661    * @param {Array} array The array to iterate over.
8662    * @param {Function} predicate The function invoked per iteration.
8663    * @returns {boolean} Returns `true` if any element passes the predicate check,
8664    *  else `false`.
8665    */
8666   function arraySome(array, predicate) {
8667     var index = -1,
8668         length = array.length;
8669
8670     while (++index < length) {
8671       if (predicate(array[index], index, array)) {
8672         return true;
8673       }
8674     }
8675     return false;
8676   }
8677
8678   /**
8679    * A specialized version of `_.assign` for customizing assigned values without
8680    * support for argument juggling, multiple sources, and `this` binding `customizer`
8681    * functions.
8682    *
8683    * @private
8684    * @param {Object} object The destination object.
8685    * @param {Object} source The source object.
8686    * @param {Function} customizer The function to customize assigned values.
8687    * @returns {Object} Returns `object`.
8688    */
8689   function assignWith(object, source, customizer) {
8690     var index = -1,
8691         props = keys(source),
8692         length = props.length;
8693
8694     while (++index < length) {
8695       var key = props[index],
8696           value = object[key],
8697           result = customizer(value, source[key], key, object, source);
8698
8699       if ((result === result ? (result !== value) : (value === value)) ||
8700           (value === undefined && !(key in object))) {
8701         object[key] = result;
8702       }
8703     }
8704     return object;
8705   }
8706
8707   /**
8708    * The base implementation of `_.assign` without support for argument juggling,
8709    * multiple sources, and `customizer` functions.
8710    *
8711    * @private
8712    * @param {Object} object The destination object.
8713    * @param {Object} source The source object.
8714    * @returns {Object} Returns `object`.
8715    */
8716   function baseAssign(object, source) {
8717     return source == null
8718       ? object
8719       : baseCopy(source, keys(source), object);
8720   }
8721
8722   /**
8723    * Copies properties of `source` to `object`.
8724    *
8725    * @private
8726    * @param {Object} source The object to copy properties from.
8727    * @param {Array} props The property names to copy.
8728    * @param {Object} [object={}] The object to copy properties to.
8729    * @returns {Object} Returns `object`.
8730    */
8731   function baseCopy(source, props, object) {
8732     object || (object = {});
8733
8734     var index = -1,
8735         length = props.length;
8736
8737     while (++index < length) {
8738       var key = props[index];
8739       object[key] = source[key];
8740     }
8741     return object;
8742   }
8743
8744   /**
8745    * The base implementation of `_.callback` which supports specifying the
8746    * number of arguments to provide to `func`.
8747    *
8748    * @private
8749    * @param {*} [func=_.identity] The value to convert to a callback.
8750    * @param {*} [thisArg] The `this` binding of `func`.
8751    * @param {number} [argCount] The number of arguments to provide to `func`.
8752    * @returns {Function} Returns the callback.
8753    */
8754   function baseCallback(func, thisArg, argCount) {
8755     var type = typeof func;
8756     if (type == 'function') {
8757       return thisArg === undefined
8758         ? func
8759         : bindCallback(func, thisArg, argCount);
8760     }
8761     if (func == null) {
8762       return identity;
8763     }
8764     if (type == 'object') {
8765       return baseMatches(func);
8766     }
8767     return thisArg === undefined
8768       ? property(func)
8769       : baseMatchesProperty(func, thisArg);
8770   }
8771
8772   /**
8773    * The base implementation of `_.clone` without support for argument juggling
8774    * and `this` binding `customizer` functions.
8775    *
8776    * @private
8777    * @param {*} value The value to clone.
8778    * @param {boolean} [isDeep] Specify a deep clone.
8779    * @param {Function} [customizer] The function to customize cloning values.
8780    * @param {string} [key] The key of `value`.
8781    * @param {Object} [object] The object `value` belongs to.
8782    * @param {Array} [stackA=[]] Tracks traversed source objects.
8783    * @param {Array} [stackB=[]] Associates clones with source counterparts.
8784    * @returns {*} Returns the cloned value.
8785    */
8786   function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
8787     var result;
8788     if (customizer) {
8789       result = object ? customizer(value, key, object) : customizer(value);
8790     }
8791     if (result !== undefined) {
8792       return result;
8793     }
8794     if (!isObject(value)) {
8795       return value;
8796     }
8797     var isArr = isArray(value);
8798     if (isArr) {
8799       result = initCloneArray(value);
8800       if (!isDeep) {
8801         return arrayCopy(value, result);
8802       }
8803     } else {
8804       var tag = objToString.call(value),
8805           isFunc = tag == funcTag;
8806
8807       if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
8808         if (isHostObject(value)) {
8809           return object ? value : {};
8810         }
8811         result = initCloneObject(isFunc ? {} : value);
8812         if (!isDeep) {
8813           return baseAssign(result, value);
8814         }
8815       } else {
8816         return cloneableTags[tag]
8817           ? initCloneByTag(value, tag, isDeep)
8818           : (object ? value : {});
8819       }
8820     }
8821     // Check for circular references and return corresponding clone.
8822     stackA || (stackA = []);
8823     stackB || (stackB = []);
8824
8825     var length = stackA.length;
8826     while (length--) {
8827       if (stackA[length] == value) {
8828         return stackB[length];
8829       }
8830     }
8831     // Add the source value to the stack of traversed objects and associate it with its clone.
8832     stackA.push(value);
8833     stackB.push(result);
8834
8835     // Recursively populate clone (susceptible to call stack limits).
8836     (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
8837       result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
8838     });
8839     return result;
8840   }
8841
8842   /**
8843    * The base implementation of `_.create` without support for assigning
8844    * properties to the created object.
8845    *
8846    * @private
8847    * @param {Object} prototype The object to inherit from.
8848    * @returns {Object} Returns the new object.
8849    */
8850   var baseCreate = (function() {
8851     function object() {}
8852     return function(prototype) {
8853       if (isObject(prototype)) {
8854         object.prototype = prototype;
8855         var result = new object;
8856         object.prototype = null;
8857       }
8858       return result || {};
8859     };
8860   }());
8861
8862   /**
8863    * The base implementation of `_.difference` which accepts a single array
8864    * of values to exclude.
8865    *
8866    * @private
8867    * @param {Array} array The array to inspect.
8868    * @param {Array} values The values to exclude.
8869    * @returns {Array} Returns the new array of filtered values.
8870    */
8871   function baseDifference(array, values) {
8872     var length = array ? array.length : 0,
8873         result = [];
8874
8875     if (!length) {
8876       return result;
8877     }
8878     var index = -1,
8879         indexOf = getIndexOf(),
8880         isCommon = indexOf == baseIndexOf,
8881         cache = (isCommon && values.length >= 200) ? createCache(values) : null,
8882         valuesLength = values.length;
8883
8884     if (cache) {
8885       indexOf = cacheIndexOf;
8886       isCommon = false;
8887       values = cache;
8888     }
8889     outer:
8890     while (++index < length) {
8891       var value = array[index];
8892
8893       if (isCommon && value === value) {
8894         var valuesIndex = valuesLength;
8895         while (valuesIndex--) {
8896           if (values[valuesIndex] === value) {
8897             continue outer;
8898           }
8899         }
8900         result.push(value);
8901       }
8902       else if (indexOf(values, value, 0) < 0) {
8903         result.push(value);
8904       }
8905     }
8906     return result;
8907   }
8908
8909   /**
8910    * The base implementation of `_.forEach` without support for callback
8911    * shorthands and `this` binding.
8912    *
8913    * @private
8914    * @param {Array|Object|string} collection The collection to iterate over.
8915    * @param {Function} iteratee The function invoked per iteration.
8916    * @returns {Array|Object|string} Returns `collection`.
8917    */
8918   var baseEach = createBaseEach(baseForOwn);
8919
8920   /**
8921    * The base implementation of `_.every` without support for callback
8922    * shorthands and `this` binding.
8923    *
8924    * @private
8925    * @param {Array|Object|string} collection The collection to iterate over.
8926    * @param {Function} predicate The function invoked per iteration.
8927    * @returns {boolean} Returns `true` if all elements pass the predicate check,
8928    *  else `false`
8929    */
8930   function baseEvery(collection, predicate) {
8931     var result = true;
8932     baseEach(collection, function(value, index, collection) {
8933       result = !!predicate(value, index, collection);
8934       return result;
8935     });
8936     return result;
8937   }
8938
8939   /**
8940    * The base implementation of `_.filter` without support for callback
8941    * shorthands and `this` binding.
8942    *
8943    * @private
8944    * @param {Array|Object|string} collection The collection to iterate over.
8945    * @param {Function} predicate The function invoked per iteration.
8946    * @returns {Array} Returns the new filtered array.
8947    */
8948   function baseFilter(collection, predicate) {
8949     var result = [];
8950     baseEach(collection, function(value, index, collection) {
8951       if (predicate(value, index, collection)) {
8952         result.push(value);
8953       }
8954     });
8955     return result;
8956   }
8957
8958   /**
8959    * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
8960    * without support for callback shorthands and `this` binding, which iterates
8961    * over `collection` using the provided `eachFunc`.
8962    *
8963    * @private
8964    * @param {Array|Object|string} collection The collection to search.
8965    * @param {Function} predicate The function invoked per iteration.
8966    * @param {Function} eachFunc The function to iterate over `collection`.
8967    * @param {boolean} [retKey] Specify returning the key of the found element
8968    *  instead of the element itself.
8969    * @returns {*} Returns the found element or its key, else `undefined`.
8970    */
8971   function baseFind(collection, predicate, eachFunc, retKey) {
8972     var result;
8973     eachFunc(collection, function(value, key, collection) {
8974       if (predicate(value, key, collection)) {
8975         result = retKey ? key : value;
8976         return false;
8977       }
8978     });
8979     return result;
8980   }
8981
8982   /**
8983    * The base implementation of `_.flatten` with added support for restricting
8984    * flattening and specifying the start index.
8985    *
8986    * @private
8987    * @param {Array} array The array to flatten.
8988    * @param {boolean} [isDeep] Specify a deep flatten.
8989    * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.
8990    * @returns {Array} Returns the new flattened array.
8991    */
8992   function baseFlatten(array, isDeep, isStrict) {
8993     var index = -1,
8994         length = array.length,
8995         resIndex = -1,
8996         result = [];
8997
8998     while (++index < length) {
8999       var value = array[index];
9000       if (isObjectLike(value) && isArrayLike(value) &&
9001           (isStrict || isArray(value) || isArguments(value))) {
9002         if (isDeep) {
9003           // Recursively flatten arrays (susceptible to call stack limits).
9004           value = baseFlatten(value, isDeep, isStrict);
9005         }
9006         var valIndex = -1,
9007             valLength = value.length;
9008
9009         while (++valIndex < valLength) {
9010           result[++resIndex] = value[valIndex];
9011         }
9012       } else if (!isStrict) {
9013         result[++resIndex] = value;
9014       }
9015     }
9016     return result;
9017   }
9018
9019   /**
9020    * The base implementation of `baseForIn` and `baseForOwn` which iterates
9021    * over `object` properties returned by `keysFunc` invoking `iteratee` for
9022    * each property. Iteratee functions may exit iteration early by explicitly
9023    * returning `false`.
9024    *
9025    * @private
9026    * @param {Object} object The object to iterate over.
9027    * @param {Function} iteratee The function invoked per iteration.
9028    * @param {Function} keysFunc The function to get the keys of `object`.
9029    * @returns {Object} Returns `object`.
9030    */
9031   var baseFor = createBaseFor();
9032
9033   /**
9034    * The base implementation of `_.forIn` without support for callback
9035    * shorthands and `this` binding.
9036    *
9037    * @private
9038    * @param {Object} object The object to iterate over.
9039    * @param {Function} iteratee The function invoked per iteration.
9040    * @returns {Object} Returns `object`.
9041    */
9042   function baseForIn(object, iteratee) {
9043     return baseFor(object, iteratee, keysIn);
9044   }
9045
9046   /**
9047    * The base implementation of `_.forOwn` without support for callback
9048    * shorthands and `this` binding.
9049    *
9050    * @private
9051    * @param {Object} object The object to iterate over.
9052    * @param {Function} iteratee The function invoked per iteration.
9053    * @returns {Object} Returns `object`.
9054    */
9055   function baseForOwn(object, iteratee) {
9056     return baseFor(object, iteratee, keys);
9057   }
9058
9059   /**
9060    * The base implementation of `_.functions` which creates an array of
9061    * `object` function property names filtered from those provided.
9062    *
9063    * @private
9064    * @param {Object} object The object to inspect.
9065    * @param {Array} props The property names to filter.
9066    * @returns {Array} Returns the new array of filtered property names.
9067    */
9068   function baseFunctions(object, props) {
9069     var index = -1,
9070         length = props.length,
9071         resIndex = -1,
9072         result = [];
9073
9074     while (++index < length) {
9075       var key = props[index];
9076       if (isFunction(object[key])) {
9077         result[++resIndex] = key;
9078       }
9079     }
9080     return result;
9081   }
9082
9083   /**
9084    * The base implementation of `get` without support for string paths
9085    * and default values.
9086    *
9087    * @private
9088    * @param {Object} object The object to query.
9089    * @param {Array} path The path of the property to get.
9090    * @param {string} [pathKey] The key representation of path.
9091    * @returns {*} Returns the resolved value.
9092    */
9093   function baseGet(object, path, pathKey) {
9094     if (object == null) {
9095       return;
9096     }
9097     object = toObject(object);
9098     if (pathKey !== undefined && pathKey in object) {
9099       path = [pathKey];
9100     }
9101     var index = 0,
9102         length = path.length;
9103
9104     while (object != null && index < length) {
9105       object = toObject(object)[path[index++]];
9106     }
9107     return (index && index == length) ? object : undefined;
9108   }
9109
9110   /**
9111    * The base implementation of `_.isEqual` without support for `this` binding
9112    * `customizer` functions.
9113    *
9114    * @private
9115    * @param {*} value The value to compare.
9116    * @param {*} other The other value to compare.
9117    * @param {Function} [customizer] The function to customize comparing values.
9118    * @param {boolean} [isLoose] Specify performing partial comparisons.
9119    * @param {Array} [stackA] Tracks traversed `value` objects.
9120    * @param {Array} [stackB] Tracks traversed `other` objects.
9121    * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
9122    */
9123   function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
9124     if (value === other) {
9125       return true;
9126     }
9127     if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
9128       return value !== value && other !== other;
9129     }
9130     return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
9131   }
9132
9133   /**
9134    * A specialized version of `baseIsEqual` for arrays and objects which performs
9135    * deep comparisons and tracks traversed objects enabling objects with circular
9136    * references to be compared.
9137    *
9138    * @private
9139    * @param {Object} object The object to compare.
9140    * @param {Object} other The other object to compare.
9141    * @param {Function} equalFunc The function to determine equivalents of values.
9142    * @param {Function} [customizer] The function to customize comparing objects.
9143    * @param {boolean} [isLoose] Specify performing partial comparisons.
9144    * @param {Array} [stackA=[]] Tracks traversed `value` objects.
9145    * @param {Array} [stackB=[]] Tracks traversed `other` objects.
9146    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9147    */
9148   function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
9149     var objIsArr = isArray(object),
9150         othIsArr = isArray(other),
9151         objTag = arrayTag,
9152         othTag = arrayTag;
9153
9154     if (!objIsArr) {
9155       objTag = objToString.call(object);
9156       if (objTag == argsTag) {
9157         objTag = objectTag;
9158       } else if (objTag != objectTag) {
9159         objIsArr = isTypedArray(object);
9160       }
9161     }
9162     if (!othIsArr) {
9163       othTag = objToString.call(other);
9164       if (othTag == argsTag) {
9165         othTag = objectTag;
9166       } else if (othTag != objectTag) {
9167         othIsArr = isTypedArray(other);
9168       }
9169     }
9170     var objIsObj = objTag == objectTag && !isHostObject(object),
9171         othIsObj = othTag == objectTag && !isHostObject(other),
9172         isSameTag = objTag == othTag;
9173
9174     if (isSameTag && !(objIsArr || objIsObj)) {
9175       return equalByTag(object, other, objTag);
9176     }
9177     if (!isLoose) {
9178       var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
9179           othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
9180
9181       if (objIsWrapped || othIsWrapped) {
9182         return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
9183       }
9184     }
9185     if (!isSameTag) {
9186       return false;
9187     }
9188     // Assume cyclic values are equal.
9189     // For more information on detecting circular references see https://es5.github.io/#JO.
9190     stackA || (stackA = []);
9191     stackB || (stackB = []);
9192
9193     var length = stackA.length;
9194     while (length--) {
9195       if (stackA[length] == object) {
9196         return stackB[length] == other;
9197       }
9198     }
9199     // Add `object` and `other` to the stack of traversed objects.
9200     stackA.push(object);
9201     stackB.push(other);
9202
9203     var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
9204
9205     stackA.pop();
9206     stackB.pop();
9207
9208     return result;
9209   }
9210
9211   /**
9212    * The base implementation of `_.isMatch` without support for callback
9213    * shorthands and `this` binding.
9214    *
9215    * @private
9216    * @param {Object} object The object to inspect.
9217    * @param {Array} matchData The propery names, values, and compare flags to match.
9218    * @param {Function} [customizer] The function to customize comparing objects.
9219    * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9220    */
9221   function baseIsMatch(object, matchData, customizer) {
9222     var index = matchData.length,
9223         length = index,
9224         noCustomizer = !customizer;
9225
9226     if (object == null) {
9227       return !length;
9228     }
9229     object = toObject(object);
9230     while (index--) {
9231       var data = matchData[index];
9232       if ((noCustomizer && data[2])
9233             ? data[1] !== object[data[0]]
9234             : !(data[0] in object)
9235           ) {
9236         return false;
9237       }
9238     }
9239     while (++index < length) {
9240       data = matchData[index];
9241       var key = data[0],
9242           objValue = object[key],
9243           srcValue = data[1];
9244
9245       if (noCustomizer && data[2]) {
9246         if (objValue === undefined && !(key in object)) {
9247           return false;
9248         }
9249       } else {
9250         var result = customizer ? customizer(objValue, srcValue, key) : undefined;
9251         if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
9252           return false;
9253         }
9254       }
9255     }
9256     return true;
9257   }
9258
9259   /**
9260    * The base implementation of `_.map` without support for callback shorthands
9261    * and `this` binding.
9262    *
9263    * @private
9264    * @param {Array|Object|string} collection The collection to iterate over.
9265    * @param {Function} iteratee The function invoked per iteration.
9266    * @returns {Array} Returns the new mapped array.
9267    */
9268   function baseMap(collection, iteratee) {
9269     var index = -1,
9270         result = isArrayLike(collection) ? Array(collection.length) : [];
9271
9272     baseEach(collection, function(value, key, collection) {
9273       result[++index] = iteratee(value, key, collection);
9274     });
9275     return result;
9276   }
9277
9278   /**
9279    * The base implementation of `_.matches` which does not clone `source`.
9280    *
9281    * @private
9282    * @param {Object} source The object of property values to match.
9283    * @returns {Function} Returns the new function.
9284    */
9285   function baseMatches(source) {
9286     var matchData = getMatchData(source);
9287     if (matchData.length == 1 && matchData[0][2]) {
9288       var key = matchData[0][0],
9289           value = matchData[0][1];
9290
9291       return function(object) {
9292         if (object == null) {
9293           return false;
9294         }
9295         object = toObject(object);
9296         return object[key] === value && (value !== undefined || (key in object));
9297       };
9298     }
9299     return function(object) {
9300       return baseIsMatch(object, matchData);
9301     };
9302   }
9303
9304   /**
9305    * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
9306    *
9307    * @private
9308    * @param {string} path The path of the property to get.
9309    * @param {*} srcValue The value to compare.
9310    * @returns {Function} Returns the new function.
9311    */
9312   function baseMatchesProperty(path, srcValue) {
9313     var isArr = isArray(path),
9314         isCommon = isKey(path) && isStrictComparable(srcValue),
9315         pathKey = (path + '');
9316
9317     path = toPath(path);
9318     return function(object) {
9319       if (object == null) {
9320         return false;
9321       }
9322       var key = pathKey;
9323       object = toObject(object);
9324       if ((isArr || !isCommon) && !(key in object)) {
9325         object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
9326         if (object == null) {
9327           return false;
9328         }
9329         key = last(path);
9330         object = toObject(object);
9331       }
9332       return object[key] === srcValue
9333         ? (srcValue !== undefined || (key in object))
9334         : baseIsEqual(srcValue, object[key], undefined, true);
9335     };
9336   }
9337
9338   /**
9339    * The base implementation of `_.merge` without support for argument juggling,
9340    * multiple sources, and `this` binding `customizer` functions.
9341    *
9342    * @private
9343    * @param {Object} object The destination object.
9344    * @param {Object} source The source object.
9345    * @param {Function} [customizer] The function to customize merging properties.
9346    * @param {Array} [stackA=[]] Tracks traversed source objects.
9347    * @param {Array} [stackB=[]] Associates values with source counterparts.
9348    * @returns {Object} Returns `object`.
9349    */
9350   function baseMerge(object, source, customizer, stackA, stackB) {
9351     if (!isObject(object)) {
9352       return object;
9353     }
9354     var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),
9355         props = isSrcArr ? null : keys(source);
9356
9357     arrayEach(props || source, function(srcValue, key) {
9358       if (props) {
9359         key = srcValue;
9360         srcValue = source[key];
9361       }
9362       if (isObjectLike(srcValue)) {
9363         stackA || (stackA = []);
9364         stackB || (stackB = []);
9365         baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
9366       }
9367       else {
9368         var value = object[key],
9369             result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
9370             isCommon = result === undefined;
9371
9372         if (isCommon) {
9373           result = srcValue;
9374         }
9375         if ((result !== undefined || (isSrcArr && !(key in object))) &&
9376             (isCommon || (result === result ? (result !== value) : (value === value)))) {
9377           object[key] = result;
9378         }
9379       }
9380     });
9381     return object;
9382   }
9383
9384   /**
9385    * A specialized version of `baseMerge` for arrays and objects which performs
9386    * deep merges and tracks traversed objects enabling objects with circular
9387    * references to be merged.
9388    *
9389    * @private
9390    * @param {Object} object The destination object.
9391    * @param {Object} source The source object.
9392    * @param {string} key The key of the value to merge.
9393    * @param {Function} mergeFunc The function to merge values.
9394    * @param {Function} [customizer] The function to customize merging properties.
9395    * @param {Array} [stackA=[]] Tracks traversed source objects.
9396    * @param {Array} [stackB=[]] Associates values with source counterparts.
9397    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9398    */
9399   function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
9400     var length = stackA.length,
9401         srcValue = source[key];
9402
9403     while (length--) {
9404       if (stackA[length] == srcValue) {
9405         object[key] = stackB[length];
9406         return;
9407       }
9408     }
9409     var value = object[key],
9410         result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
9411         isCommon = result === undefined;
9412
9413     if (isCommon) {
9414       result = srcValue;
9415       if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {
9416         result = isArray(value)
9417           ? value
9418           : (isArrayLike(value) ? arrayCopy(value) : []);
9419       }
9420       else if (isPlainObject(srcValue) || isArguments(srcValue)) {
9421         result = isArguments(value)
9422           ? toPlainObject(value)
9423           : (isPlainObject(value) ? value : {});
9424       }
9425       else {
9426         isCommon = false;
9427       }
9428     }
9429     // Add the source value to the stack of traversed objects and associate
9430     // it with its merged value.
9431     stackA.push(srcValue);
9432     stackB.push(result);
9433
9434     if (isCommon) {
9435       // Recursively merge objects and arrays (susceptible to call stack limits).
9436       object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);
9437     } else if (result === result ? (result !== value) : (value === value)) {
9438       object[key] = result;
9439     }
9440   }
9441
9442   /**
9443    * The base implementation of `_.property` without support for deep paths.
9444    *
9445    * @private
9446    * @param {string} key The key of the property to get.
9447    * @returns {Function} Returns the new function.
9448    */
9449   function baseProperty(key) {
9450     return function(object) {
9451       return object == null ? undefined : toObject(object)[key];
9452     };
9453   }
9454
9455   /**
9456    * A specialized version of `baseProperty` which supports deep paths.
9457    *
9458    * @private
9459    * @param {Array|string} path The path of the property to get.
9460    * @returns {Function} Returns the new function.
9461    */
9462   function basePropertyDeep(path) {
9463     var pathKey = (path + '');
9464     path = toPath(path);
9465     return function(object) {
9466       return baseGet(object, path, pathKey);
9467     };
9468   }
9469
9470   /**
9471    * The base implementation of `_.reduce` and `_.reduceRight` without support
9472    * for callback shorthands and `this` binding, which iterates over `collection`
9473    * using the provided `eachFunc`.
9474    *
9475    * @private
9476    * @param {Array|Object|string} collection The collection to iterate over.
9477    * @param {Function} iteratee The function invoked per iteration.
9478    * @param {*} accumulator The initial value.
9479    * @param {boolean} initFromCollection Specify using the first or last element
9480    *  of `collection` as the initial value.
9481    * @param {Function} eachFunc The function to iterate over `collection`.
9482    * @returns {*} Returns the accumulated value.
9483    */
9484   function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
9485     eachFunc(collection, function(value, index, collection) {
9486       accumulator = initFromCollection
9487         ? (initFromCollection = false, value)
9488         : iteratee(accumulator, value, index, collection);
9489     });
9490     return accumulator;
9491   }
9492
9493   /**
9494    * The base implementation of `setData` without support for hot loop detection.
9495    *
9496    * @private
9497    * @param {Function} func The function to associate metadata with.
9498    * @param {*} data The metadata.
9499    * @returns {Function} Returns `func`.
9500    */
9501   var baseSetData = !metaMap ? identity : function(func, data) {
9502     metaMap.set(func, data);
9503     return func;
9504   };
9505
9506   /**
9507    * The base implementation of `_.slice` without an iteratee call guard.
9508    *
9509    * @private
9510    * @param {Array} array The array to slice.
9511    * @param {number} [start=0] The start position.
9512    * @param {number} [end=array.length] The end position.
9513    * @returns {Array} Returns the slice of `array`.
9514    */
9515   function baseSlice(array, start, end) {
9516     var index = -1,
9517         length = array.length;
9518
9519     start = start == null ? 0 : (+start || 0);
9520     if (start < 0) {
9521       start = -start > length ? 0 : (length + start);
9522     }
9523     end = (end === undefined || end > length) ? length : (+end || 0);
9524     if (end < 0) {
9525       end += length;
9526     }
9527     length = start > end ? 0 : ((end - start) >>> 0);
9528     start >>>= 0;
9529
9530     var result = Array(length);
9531     while (++index < length) {
9532       result[index] = array[index + start];
9533     }
9534     return result;
9535   }
9536
9537   /**
9538    * The base implementation of `_.some` without support for callback shorthands
9539    * and `this` binding.
9540    *
9541    * @private
9542    * @param {Array|Object|string} collection The collection to iterate over.
9543    * @param {Function} predicate The function invoked per iteration.
9544    * @returns {boolean} Returns `true` if any element passes the predicate check,
9545    *  else `false`.
9546    */
9547   function baseSome(collection, predicate) {
9548     var result;
9549
9550     baseEach(collection, function(value, index, collection) {
9551       result = predicate(value, index, collection);
9552       return !result;
9553     });
9554     return !!result;
9555   }
9556
9557   /**
9558    * The base implementation of `_.uniq` without support for callback shorthands
9559    * and `this` binding.
9560    *
9561    * @private
9562    * @param {Array} array The array to inspect.
9563    * @param {Function} [iteratee] The function invoked per iteration.
9564    * @returns {Array} Returns the new duplicate-value-free array.
9565    */
9566   function baseUniq(array, iteratee) {
9567     var index = -1,
9568         indexOf = getIndexOf(),
9569         length = array.length,
9570         isCommon = indexOf == baseIndexOf,
9571         isLarge = isCommon && length >= 200,
9572         seen = isLarge ? createCache() : null,
9573         result = [];
9574
9575     if (seen) {
9576       indexOf = cacheIndexOf;
9577       isCommon = false;
9578     } else {
9579       isLarge = false;
9580       seen = iteratee ? [] : result;
9581     }
9582     outer:
9583     while (++index < length) {
9584       var value = array[index],
9585           computed = iteratee ? iteratee(value, index, array) : value;
9586
9587       if (isCommon && value === value) {
9588         var seenIndex = seen.length;
9589         while (seenIndex--) {
9590           if (seen[seenIndex] === computed) {
9591             continue outer;
9592           }
9593         }
9594         if (iteratee) {
9595           seen.push(computed);
9596         }
9597         result.push(value);
9598       }
9599       else if (indexOf(seen, computed, 0) < 0) {
9600         if (iteratee || isLarge) {
9601           seen.push(computed);
9602         }
9603         result.push(value);
9604       }
9605     }
9606     return result;
9607   }
9608
9609   /**
9610    * The base implementation of `_.values` and `_.valuesIn` which creates an
9611    * array of `object` property values corresponding to the property names
9612    * of `props`.
9613    *
9614    * @private
9615    * @param {Object} object The object to query.
9616    * @param {Array} props The property names to get values for.
9617    * @returns {Object} Returns the array of property values.
9618    */
9619   function baseValues(object, props) {
9620     var index = -1,
9621         length = props.length,
9622         result = Array(length);
9623
9624     while (++index < length) {
9625       result[index] = object[props[index]];
9626     }
9627     return result;
9628   }
9629
9630   /**
9631    * The base implementation of `wrapperValue` which returns the result of
9632    * performing a sequence of actions on the unwrapped `value`, where each
9633    * successive action is supplied the return value of the previous.
9634    *
9635    * @private
9636    * @param {*} value The unwrapped value.
9637    * @param {Array} actions Actions to peform to resolve the unwrapped value.
9638    * @returns {*} Returns the resolved value.
9639    */
9640   function baseWrapperValue(value, actions) {
9641     var result = value;
9642     if (result instanceof LazyWrapper) {
9643       result = result.value();
9644     }
9645     var index = -1,
9646         length = actions.length;
9647
9648     while (++index < length) {
9649       var args = [result],
9650           action = actions[index];
9651
9652       push.apply(args, action.args);
9653       result = action.func.apply(action.thisArg, args);
9654     }
9655     return result;
9656   }
9657
9658   /**
9659    * Performs a binary search of `array` to determine the index at which `value`
9660    * should be inserted into `array` in order to maintain its sort order.
9661    *
9662    * @private
9663    * @param {Array} array The sorted array to inspect.
9664    * @param {*} value The value to evaluate.
9665    * @param {boolean} [retHighest] Specify returning the highest qualified index.
9666    * @returns {number} Returns the index at which `value` should be inserted
9667    *  into `array`.
9668    */
9669   function binaryIndex(array, value, retHighest) {
9670     var low = 0,
9671         high = array ? array.length : low;
9672
9673     if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
9674       while (low < high) {
9675         var mid = (low + high) >>> 1,
9676             computed = array[mid];
9677
9678         if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {
9679           low = mid + 1;
9680         } else {
9681           high = mid;
9682         }
9683       }
9684       return high;
9685     }
9686     return binaryIndexBy(array, value, identity, retHighest);
9687   }
9688
9689   /**
9690    * This function is like `binaryIndex` except that it invokes `iteratee` for
9691    * `value` and each element of `array` to compute their sort ranking. The
9692    * iteratee is invoked with one argument; (value).
9693    *
9694    * @private
9695    * @param {Array} array The sorted array to inspect.
9696    * @param {*} value The value to evaluate.
9697    * @param {Function} iteratee The function invoked per iteration.
9698    * @param {boolean} [retHighest] Specify returning the highest qualified index.
9699    * @returns {number} Returns the index at which `value` should be inserted
9700    *  into `array`.
9701    */
9702   function binaryIndexBy(array, value, iteratee, retHighest) {
9703     value = iteratee(value);
9704
9705     var low = 0,
9706         high = array ? array.length : 0,
9707         valIsNaN = value !== value,
9708         valIsNull = value === null,
9709         valIsUndef = value === undefined;
9710
9711     while (low < high) {
9712       var mid = floor((low + high) / 2),
9713           computed = iteratee(array[mid]),
9714           isDef = computed !== undefined,
9715           isReflexive = computed === computed;
9716
9717       if (valIsNaN) {
9718         var setLow = isReflexive || retHighest;
9719       } else if (valIsNull) {
9720         setLow = isReflexive && isDef && (retHighest || computed != null);
9721       } else if (valIsUndef) {
9722         setLow = isReflexive && (retHighest || isDef);
9723       } else if (computed == null) {
9724         setLow = false;
9725       } else {
9726         setLow = retHighest ? (computed <= value) : (computed < value);
9727       }
9728       if (setLow) {
9729         low = mid + 1;
9730       } else {
9731         high = mid;
9732       }
9733     }
9734     return nativeMin(high, MAX_ARRAY_INDEX);
9735   }
9736
9737   /**
9738    * A specialized version of `baseCallback` which only supports `this` binding
9739    * and specifying the number of arguments to provide to `func`.
9740    *
9741    * @private
9742    * @param {Function} func The function to bind.
9743    * @param {*} thisArg The `this` binding of `func`.
9744    * @param {number} [argCount] The number of arguments to provide to `func`.
9745    * @returns {Function} Returns the callback.
9746    */
9747   function bindCallback(func, thisArg, argCount) {
9748     if (typeof func != 'function') {
9749       return identity;
9750     }
9751     if (thisArg === undefined) {
9752       return func;
9753     }
9754     switch (argCount) {
9755       case 1: return function(value) {
9756         return func.call(thisArg, value);
9757       };
9758       case 3: return function(value, index, collection) {
9759         return func.call(thisArg, value, index, collection);
9760       };
9761       case 4: return function(accumulator, value, index, collection) {
9762         return func.call(thisArg, accumulator, value, index, collection);
9763       };
9764       case 5: return function(value, other, key, object, source) {
9765         return func.call(thisArg, value, other, key, object, source);
9766       };
9767     }
9768     return function() {
9769       return func.apply(thisArg, arguments);
9770     };
9771   }
9772
9773   /**
9774    * Creates a clone of the given array buffer.
9775    *
9776    * @private
9777    * @param {ArrayBuffer} buffer The array buffer to clone.
9778    * @returns {ArrayBuffer} Returns the cloned array buffer.
9779    */
9780   function bufferClone(buffer) {
9781     return bufferSlice.call(buffer, 0);
9782   }
9783   if (!bufferSlice) {
9784     // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
9785     bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
9786       var byteLength = buffer.byteLength,
9787           floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
9788           offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
9789           result = new ArrayBuffer(byteLength);
9790
9791       if (floatLength) {
9792         var view = new Float64Array(result, 0, floatLength);
9793         view.set(new Float64Array(buffer, 0, floatLength));
9794       }
9795       if (byteLength != offset) {
9796         view = new Uint8Array(result, offset);
9797         view.set(new Uint8Array(buffer, offset));
9798       }
9799       return result;
9800     };
9801   }
9802
9803   /**
9804    * Creates an array that is the composition of partially applied arguments,
9805    * placeholders, and provided arguments into a single array of arguments.
9806    *
9807    * @private
9808    * @param {Array|Object} args The provided arguments.
9809    * @param {Array} partials The arguments to prepend to those provided.
9810    * @param {Array} holders The `partials` placeholder indexes.
9811    * @returns {Array} Returns the new array of composed arguments.
9812    */
9813   function composeArgs(args, partials, holders) {
9814     var holdersLength = holders.length,
9815         argsIndex = -1,
9816         argsLength = nativeMax(args.length - holdersLength, 0),
9817         leftIndex = -1,
9818         leftLength = partials.length,
9819         result = Array(argsLength + leftLength);
9820
9821     while (++leftIndex < leftLength) {
9822       result[leftIndex] = partials[leftIndex];
9823     }
9824     while (++argsIndex < holdersLength) {
9825       result[holders[argsIndex]] = args[argsIndex];
9826     }
9827     while (argsLength--) {
9828       result[leftIndex++] = args[argsIndex++];
9829     }
9830     return result;
9831   }
9832
9833   /**
9834    * This function is like `composeArgs` except that the arguments composition
9835    * is tailored for `_.partialRight`.
9836    *
9837    * @private
9838    * @param {Array|Object} args The provided arguments.
9839    * @param {Array} partials The arguments to append to those provided.
9840    * @param {Array} holders The `partials` placeholder indexes.
9841    * @returns {Array} Returns the new array of composed arguments.
9842    */
9843   function composeArgsRight(args, partials, holders) {
9844     var holdersIndex = -1,
9845         holdersLength = holders.length,
9846         argsIndex = -1,
9847         argsLength = nativeMax(args.length - holdersLength, 0),
9848         rightIndex = -1,
9849         rightLength = partials.length,
9850         result = Array(argsLength + rightLength);
9851
9852     while (++argsIndex < argsLength) {
9853       result[argsIndex] = args[argsIndex];
9854     }
9855     var offset = argsIndex;
9856     while (++rightIndex < rightLength) {
9857       result[offset + rightIndex] = partials[rightIndex];
9858     }
9859     while (++holdersIndex < holdersLength) {
9860       result[offset + holders[holdersIndex]] = args[argsIndex++];
9861     }
9862     return result;
9863   }
9864
9865   /**
9866    * Creates a function that aggregates a collection, creating an accumulator
9867    * object composed from the results of running each element in the collection
9868    * through an iteratee.
9869    *
9870    * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`,
9871    * and `_.partition`.
9872    *
9873    * @private
9874    * @param {Function} setter The function to set keys and values of the accumulator object.
9875    * @param {Function} [initializer] The function to initialize the accumulator object.
9876    * @returns {Function} Returns the new aggregator function.
9877    */
9878   function createAggregator(setter, initializer) {
9879     return function(collection, iteratee, thisArg) {
9880       var result = initializer ? initializer() : {};
9881       iteratee = getCallback(iteratee, thisArg, 3);
9882
9883       if (isArray(collection)) {
9884         var index = -1,
9885             length = collection.length;
9886
9887         while (++index < length) {
9888           var value = collection[index];
9889           setter(result, value, iteratee(value, index, collection), collection);
9890         }
9891       } else {
9892         baseEach(collection, function(value, key, collection) {
9893           setter(result, value, iteratee(value, key, collection), collection);
9894         });
9895       }
9896       return result;
9897     };
9898   }
9899
9900   /**
9901    * Creates a function that assigns properties of source object(s) to a given
9902    * destination object.
9903    *
9904    * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.
9905    *
9906    * @private
9907    * @param {Function} assigner The function to assign values.
9908    * @returns {Function} Returns the new assigner function.
9909    */
9910   function createAssigner(assigner) {
9911     return restParam(function(object, sources) {
9912       var index = -1,
9913           length = object == null ? 0 : sources.length,
9914           customizer = length > 2 ? sources[length - 2] : undefined,
9915           guard = length > 2 ? sources[2] : undefined,
9916           thisArg = length > 1 ? sources[length - 1] : undefined;
9917
9918       if (typeof customizer == 'function') {
9919         customizer = bindCallback(customizer, thisArg, 5);
9920         length -= 2;
9921       } else {
9922         customizer = typeof thisArg == 'function' ? thisArg : undefined;
9923         length -= (customizer ? 1 : 0);
9924       }
9925       if (guard && isIterateeCall(sources[0], sources[1], guard)) {
9926         customizer = length < 3 ? undefined : customizer;
9927         length = 1;
9928       }
9929       while (++index < length) {
9930         var source = sources[index];
9931         if (source) {
9932           assigner(object, source, customizer);
9933         }
9934       }
9935       return object;
9936     });
9937   }
9938
9939   /**
9940    * Creates a `baseEach` or `baseEachRight` function.
9941    *
9942    * @private
9943    * @param {Function} eachFunc The function to iterate over a collection.
9944    * @param {boolean} [fromRight] Specify iterating from right to left.
9945    * @returns {Function} Returns the new base function.
9946    */
9947   function createBaseEach(eachFunc, fromRight) {
9948     return function(collection, iteratee) {
9949       var length = collection ? getLength(collection) : 0;
9950       if (!isLength(length)) {
9951         return eachFunc(collection, iteratee);
9952       }
9953       var index = fromRight ? length : -1,
9954           iterable = toObject(collection);
9955
9956       while ((fromRight ? index-- : ++index < length)) {
9957         if (iteratee(iterable[index], index, iterable) === false) {
9958           break;
9959         }
9960       }
9961       return collection;
9962     };
9963   }
9964
9965   /**
9966    * Creates a base function for `_.forIn` or `_.forInRight`.
9967    *
9968    * @private
9969    * @param {boolean} [fromRight] Specify iterating from right to left.
9970    * @returns {Function} Returns the new base function.
9971    */
9972   function createBaseFor(fromRight) {
9973     return function(object, iteratee, keysFunc) {
9974       var iterable = toObject(object),
9975           props = keysFunc(object),
9976           length = props.length,
9977           index = fromRight ? length : -1;
9978
9979       while ((fromRight ? index-- : ++index < length)) {
9980         var key = props[index];
9981         if (iteratee(iterable[key], key, iterable) === false) {
9982           break;
9983         }
9984       }
9985       return object;
9986     };
9987   }
9988
9989   /**
9990    * Creates a function that wraps `func` and invokes it with the `this`
9991    * binding of `thisArg`.
9992    *
9993    * @private
9994    * @param {Function} func The function to bind.
9995    * @param {*} [thisArg] The `this` binding of `func`.
9996    * @returns {Function} Returns the new bound function.
9997    */
9998   function createBindWrapper(func, thisArg) {
9999     var Ctor = createCtorWrapper(func);
10000
10001     function wrapper() {
10002       var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10003       return fn.apply(thisArg, arguments);
10004     }
10005     return wrapper;
10006   }
10007
10008   /**
10009    * Creates a `Set` cache object to optimize linear searches of large arrays.
10010    *
10011    * @private
10012    * @param {Array} [values] The values to cache.
10013    * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
10014    */
10015   var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
10016     return new SetCache(values);
10017   };
10018
10019   /**
10020    * Creates a function that produces an instance of `Ctor` regardless of
10021    * whether it was invoked as part of a `new` expression or by `call` or `apply`.
10022    *
10023    * @private
10024    * @param {Function} Ctor The constructor to wrap.
10025    * @returns {Function} Returns the new wrapped function.
10026    */
10027   function createCtorWrapper(Ctor) {
10028     return function() {
10029       // Use a `switch` statement to work with class constructors.
10030       // See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-call-thisargument-argumentslist
10031       // for more details.
10032       var args = arguments;
10033       switch (args.length) {
10034         case 0: return new Ctor;
10035         case 1: return new Ctor(args[0]);
10036         case 2: return new Ctor(args[0], args[1]);
10037         case 3: return new Ctor(args[0], args[1], args[2]);
10038         case 4: return new Ctor(args[0], args[1], args[2], args[3]);
10039         case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
10040       }
10041       var thisBinding = baseCreate(Ctor.prototype),
10042           result = Ctor.apply(thisBinding, args);
10043
10044       // Mimic the constructor's `return` behavior.
10045       // See https://es5.github.io/#x13.2.2 for more details.
10046       return isObject(result) ? result : thisBinding;
10047     };
10048   }
10049
10050   /**
10051    * Creates a `_.find` or `_.findLast` function.
10052    *
10053    * @private
10054    * @param {Function} eachFunc The function to iterate over a collection.
10055    * @param {boolean} [fromRight] Specify iterating from right to left.
10056    * @returns {Function} Returns the new find function.
10057    */
10058   function createFind(eachFunc, fromRight) {
10059     return function(collection, predicate, thisArg) {
10060       predicate = getCallback(predicate, thisArg, 3);
10061       if (isArray(collection)) {
10062         var index = baseFindIndex(collection, predicate, fromRight);
10063         return index > -1 ? collection[index] : undefined;
10064       }
10065       return baseFind(collection, predicate, eachFunc);
10066     };
10067   }
10068
10069   /**
10070    * Creates a function for `_.forEach` or `_.forEachRight`.
10071    *
10072    * @private
10073    * @param {Function} arrayFunc The function to iterate over an array.
10074    * @param {Function} eachFunc The function to iterate over a collection.
10075    * @returns {Function} Returns the new each function.
10076    */
10077   function createForEach(arrayFunc, eachFunc) {
10078     return function(collection, iteratee, thisArg) {
10079       return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
10080         ? arrayFunc(collection, iteratee)
10081         : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
10082     };
10083   }
10084
10085   /**
10086    * Creates a function for `_.forOwn` or `_.forOwnRight`.
10087    *
10088    * @private
10089    * @param {Function} objectFunc The function to iterate over an object.
10090    * @returns {Function} Returns the new each function.
10091    */
10092   function createForOwn(objectFunc) {
10093     return function(object, iteratee, thisArg) {
10094       if (typeof iteratee != 'function' || thisArg !== undefined) {
10095         iteratee = bindCallback(iteratee, thisArg, 3);
10096       }
10097       return objectFunc(object, iteratee);
10098     };
10099   }
10100
10101   /**
10102    * Creates a function for `_.reduce` or `_.reduceRight`.
10103    *
10104    * @private
10105    * @param {Function} arrayFunc The function to iterate over an array.
10106    * @param {Function} eachFunc The function to iterate over a collection.
10107    * @returns {Function} Returns the new each function.
10108    */
10109   function createReduce(arrayFunc, eachFunc) {
10110     return function(collection, iteratee, accumulator, thisArg) {
10111       var initFromArray = arguments.length < 3;
10112       return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
10113         ? arrayFunc(collection, iteratee, accumulator, initFromArray)
10114         : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
10115     };
10116   }
10117
10118   /**
10119    * Creates a function that wraps `func` and invokes it with optional `this`
10120    * binding of, partial application, and currying.
10121    *
10122    * @private
10123    * @param {Function|string} func The function or method name to reference.
10124    * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
10125    * @param {*} [thisArg] The `this` binding of `func`.
10126    * @param {Array} [partials] The arguments to prepend to those provided to the new function.
10127    * @param {Array} [holders] The `partials` placeholder indexes.
10128    * @param {Array} [partialsRight] The arguments to append to those provided to the new function.
10129    * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
10130    * @param {Array} [argPos] The argument positions of the new function.
10131    * @param {number} [ary] The arity cap of `func`.
10132    * @param {number} [arity] The arity of `func`.
10133    * @returns {Function} Returns the new wrapped function.
10134    */
10135   function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
10136     var isAry = bitmask & ARY_FLAG,
10137         isBind = bitmask & BIND_FLAG,
10138         isBindKey = bitmask & BIND_KEY_FLAG,
10139         isCurry = bitmask & CURRY_FLAG,
10140         isCurryBound = bitmask & CURRY_BOUND_FLAG,
10141         isCurryRight = bitmask & CURRY_RIGHT_FLAG,
10142         Ctor = isBindKey ? null : createCtorWrapper(func);
10143
10144     function wrapper() {
10145       // Avoid `arguments` object use disqualifying optimizations by
10146       // converting it to an array before providing it to other functions.
10147       var length = arguments.length,
10148           index = length,
10149           args = Array(length);
10150
10151       while (index--) {
10152         args[index] = arguments[index];
10153       }
10154       if (partials) {
10155         args = composeArgs(args, partials, holders);
10156       }
10157       if (partialsRight) {
10158         args = composeArgsRight(args, partialsRight, holdersRight);
10159       }
10160       if (isCurry || isCurryRight) {
10161         var placeholder = wrapper.placeholder,
10162             argsHolders = replaceHolders(args, placeholder);
10163
10164         length -= argsHolders.length;
10165         if (length < arity) {
10166           var newArgPos = argPos ? arrayCopy(argPos) : null,
10167               newArity = nativeMax(arity - length, 0),
10168               newsHolders = isCurry ? argsHolders : null,
10169               newHoldersRight = isCurry ? null : argsHolders,
10170               newPartials = isCurry ? args : null,
10171               newPartialsRight = isCurry ? null : args;
10172
10173           bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
10174           bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
10175
10176           if (!isCurryBound) {
10177             bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
10178           }
10179           var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],
10180               result = createHybridWrapper.apply(undefined, newData);
10181
10182           if (isLaziable(func)) {
10183             setData(result, newData);
10184           }
10185           result.placeholder = placeholder;
10186           return result;
10187         }
10188       }
10189       var thisBinding = isBind ? thisArg : this,
10190           fn = isBindKey ? thisBinding[func] : func;
10191
10192       if (argPos) {
10193         args = reorder(args, argPos);
10194       }
10195       if (isAry && ary < args.length) {
10196         args.length = ary;
10197       }
10198       if (this && this !== root && this instanceof wrapper) {
10199         fn = Ctor || createCtorWrapper(func);
10200       }
10201       return fn.apply(thisBinding, args);
10202     }
10203     return wrapper;
10204   }
10205
10206   /**
10207    * Creates a function that wraps `func` and invokes it with the optional `this`
10208    * binding of `thisArg` and the `partials` prepended to those provided to
10209    * the wrapper.
10210    *
10211    * @private
10212    * @param {Function} func The function to partially apply arguments to.
10213    * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
10214    * @param {*} thisArg The `this` binding of `func`.
10215    * @param {Array} partials The arguments to prepend to those provided to the new function.
10216    * @returns {Function} Returns the new bound function.
10217    */
10218   function createPartialWrapper(func, bitmask, thisArg, partials) {
10219     var isBind = bitmask & BIND_FLAG,
10220         Ctor = createCtorWrapper(func);
10221
10222     function wrapper() {
10223       // Avoid `arguments` object use disqualifying optimizations by
10224       // converting it to an array before providing it `func`.
10225       var argsIndex = -1,
10226           argsLength = arguments.length,
10227           leftIndex = -1,
10228           leftLength = partials.length,
10229           args = Array(argsLength + leftLength);
10230
10231       while (++leftIndex < leftLength) {
10232         args[leftIndex] = partials[leftIndex];
10233       }
10234       while (argsLength--) {
10235         args[leftIndex++] = arguments[++argsIndex];
10236       }
10237       var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10238       return fn.apply(isBind ? thisArg : this, args);
10239     }
10240     return wrapper;
10241   }
10242
10243   /**
10244    * Creates a function that either curries or invokes `func` with optional
10245    * `this` binding and partially applied arguments.
10246    *
10247    * @private
10248    * @param {Function|string} func The function or method name to reference.
10249    * @param {number} bitmask The bitmask of flags.
10250    *  The bitmask may be composed of the following flags:
10251    *     1 - `_.bind`
10252    *     2 - `_.bindKey`
10253    *     4 - `_.curry` or `_.curryRight` of a bound function
10254    *     8 - `_.curry`
10255    *    16 - `_.curryRight`
10256    *    32 - `_.partial`
10257    *    64 - `_.partialRight`
10258    *   128 - `_.rearg`
10259    *   256 - `_.ary`
10260    * @param {*} [thisArg] The `this` binding of `func`.
10261    * @param {Array} [partials] The arguments to be partially applied.
10262    * @param {Array} [holders] The `partials` placeholder indexes.
10263    * @param {Array} [argPos] The argument positions of the new function.
10264    * @param {number} [ary] The arity cap of `func`.
10265    * @param {number} [arity] The arity of `func`.
10266    * @returns {Function} Returns the new wrapped function.
10267    */
10268   function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
10269     var isBindKey = bitmask & BIND_KEY_FLAG;
10270     if (!isBindKey && typeof func != 'function') {
10271       throw new TypeError(FUNC_ERROR_TEXT);
10272     }
10273     var length = partials ? partials.length : 0;
10274     if (!length) {
10275       bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
10276       partials = holders = null;
10277     }
10278     length -= (holders ? holders.length : 0);
10279     if (bitmask & PARTIAL_RIGHT_FLAG) {
10280       var partialsRight = partials,
10281           holdersRight = holders;
10282
10283       partials = holders = null;
10284     }
10285     var data = isBindKey ? null : getData(func),
10286         newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
10287
10288     if (data) {
10289       mergeData(newData, data);
10290       bitmask = newData[1];
10291       arity = newData[9];
10292     }
10293     newData[9] = arity == null
10294       ? (isBindKey ? 0 : func.length)
10295       : (nativeMax(arity - length, 0) || 0);
10296
10297     if (bitmask == BIND_FLAG) {
10298       var result = createBindWrapper(newData[0], newData[2]);
10299     } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {
10300       result = createPartialWrapper.apply(undefined, newData);
10301     } else {
10302       result = createHybridWrapper.apply(undefined, newData);
10303     }
10304     var setter = data ? baseSetData : setData;
10305     return setter(result, newData);
10306   }
10307
10308   /**
10309    * A specialized version of `baseIsEqualDeep` for arrays with support for
10310    * partial deep comparisons.
10311    *
10312    * @private
10313    * @param {Array} array The array to compare.
10314    * @param {Array} other The other array to compare.
10315    * @param {Function} equalFunc The function to determine equivalents of values.
10316    * @param {Function} [customizer] The function to customize comparing arrays.
10317    * @param {boolean} [isLoose] Specify performing partial comparisons.
10318    * @param {Array} [stackA] Tracks traversed `value` objects.
10319    * @param {Array} [stackB] Tracks traversed `other` objects.
10320    * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
10321    */
10322   function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
10323     var index = -1,
10324         arrLength = array.length,
10325         othLength = other.length;
10326
10327     if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
10328       return false;
10329     }
10330     // Ignore non-index properties.
10331     while (++index < arrLength) {
10332       var arrValue = array[index],
10333           othValue = other[index],
10334           result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
10335
10336       if (result !== undefined) {
10337         if (result) {
10338           continue;
10339         }
10340         return false;
10341       }
10342       // Recursively compare arrays (susceptible to call stack limits).
10343       if (isLoose) {
10344         if (!arraySome(other, function(othValue) {
10345               return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
10346             })) {
10347           return false;
10348         }
10349       } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
10350         return false;
10351       }
10352     }
10353     return true;
10354   }
10355
10356   /**
10357    * A specialized version of `baseIsEqualDeep` for comparing objects of
10358    * the same `toStringTag`.
10359    *
10360    * **Note:** This function only supports comparing values with tags of
10361    * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10362    *
10363    * @private
10364    * @param {Object} value The object to compare.
10365    * @param {Object} other The other object to compare.
10366    * @param {string} tag The `toStringTag` of the objects to compare.
10367    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10368    */
10369   function equalByTag(object, other, tag) {
10370     switch (tag) {
10371       case boolTag:
10372       case dateTag:
10373         // Coerce dates and booleans to numbers, dates to milliseconds and booleans
10374         // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
10375         return +object == +other;
10376
10377       case errorTag:
10378         return object.name == other.name && object.message == other.message;
10379
10380       case numberTag:
10381         // Treat `NaN` vs. `NaN` as equal.
10382         return (object != +object)
10383           ? other != +other
10384           : object == +other;
10385
10386       case regexpTag:
10387       case stringTag:
10388         // Coerce regexes to strings and treat strings primitives and string
10389         // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
10390         return object == (other + '');
10391     }
10392     return false;
10393   }
10394
10395   /**
10396    * A specialized version of `baseIsEqualDeep` for objects with support for
10397    * partial deep comparisons.
10398    *
10399    * @private
10400    * @param {Object} object The object to compare.
10401    * @param {Object} other The other object to compare.
10402    * @param {Function} equalFunc The function to determine equivalents of values.
10403    * @param {Function} [customizer] The function to customize comparing values.
10404    * @param {boolean} [isLoose] Specify performing partial comparisons.
10405    * @param {Array} [stackA] Tracks traversed `value` objects.
10406    * @param {Array} [stackB] Tracks traversed `other` objects.
10407    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10408    */
10409   function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
10410     var objProps = keys(object),
10411         objLength = objProps.length,
10412         othProps = keys(other),
10413         othLength = othProps.length;
10414
10415     if (objLength != othLength && !isLoose) {
10416       return false;
10417     }
10418     var index = objLength;
10419     while (index--) {
10420       var key = objProps[index];
10421       if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
10422         return false;
10423       }
10424     }
10425     var skipCtor = isLoose;
10426     while (++index < objLength) {
10427       key = objProps[index];
10428       var objValue = object[key],
10429           othValue = other[key],
10430           result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
10431
10432       // Recursively compare objects (susceptible to call stack limits).
10433       if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
10434         return false;
10435       }
10436       skipCtor || (skipCtor = key == 'constructor');
10437     }
10438     if (!skipCtor) {
10439       var objCtor = object.constructor,
10440           othCtor = other.constructor;
10441
10442       // Non `Object` object instances with different constructors are not equal.
10443       if (objCtor != othCtor &&
10444           ('constructor' in object && 'constructor' in other) &&
10445           !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
10446             typeof othCtor == 'function' && othCtor instanceof othCtor)) {
10447         return false;
10448       }
10449     }
10450     return true;
10451   }
10452
10453   /**
10454    * Gets the appropriate "callback" function. If the `_.callback` method is
10455    * customized this function returns the custom method, otherwise it returns
10456    * the `baseCallback` function. If arguments are provided the chosen function
10457    * is invoked with them and its result is returned.
10458    *
10459    * @private
10460    * @returns {Function} Returns the chosen function or its result.
10461    */
10462   function getCallback(func, thisArg, argCount) {
10463     var result = lodash.callback || callback;
10464     result = result === callback ? baseCallback : result;
10465     return argCount ? result(func, thisArg, argCount) : result;
10466   }
10467
10468   /**
10469    * Gets metadata for `func`.
10470    *
10471    * @private
10472    * @param {Function} func The function to query.
10473    * @returns {*} Returns the metadata for `func`.
10474    */
10475   var getData = !metaMap ? noop : function(func) {
10476     return metaMap.get(func);
10477   };
10478
10479   /**
10480    * Gets the name of `func`.
10481    *
10482    * @private
10483    * @param {Function} func The function to query.
10484    * @returns {string} Returns the function name.
10485    */
10486   function getFuncName(func) {
10487     var result = func.name,
10488         array = realNames[result],
10489         length = array ? array.length : 0;
10490
10491     while (length--) {
10492       var data = array[length],
10493           otherFunc = data.func;
10494       if (otherFunc == null || otherFunc == func) {
10495         return data.name;
10496       }
10497     }
10498     return result;
10499   }
10500
10501   /**
10502    * Gets the appropriate "indexOf" function. If the `_.indexOf` method is
10503    * customized this function returns the custom method, otherwise it returns
10504    * the `baseIndexOf` function. If arguments are provided the chosen function
10505    * is invoked with them and its result is returned.
10506    *
10507    * @private
10508    * @returns {Function|number} Returns the chosen function or its result.
10509    */
10510   function getIndexOf(collection, target, fromIndex) {
10511     var result = lodash.indexOf || indexOf;
10512     result = result === indexOf ? baseIndexOf : result;
10513     return collection ? result(collection, target, fromIndex) : result;
10514   }
10515
10516   /**
10517    * Gets the "length" property value of `object`.
10518    *
10519    * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
10520    * that affects Safari on at least iOS 8.1-8.3 ARM64.
10521    *
10522    * @private
10523    * @param {Object} object The object to query.
10524    * @returns {*} Returns the "length" value.
10525    */
10526   var getLength = baseProperty('length');
10527
10528   /**
10529    * Gets the propery names, values, and compare flags of `object`.
10530    *
10531    * @private
10532    * @param {Object} object The object to query.
10533    * @returns {Array} Returns the match data of `object`.
10534    */
10535   function getMatchData(object) {
10536     var result = pairs(object),
10537         length = result.length;
10538
10539     while (length--) {
10540       result[length][2] = isStrictComparable(result[length][1]);
10541     }
10542     return result;
10543   }
10544
10545   /**
10546    * Gets the native function at `key` of `object`.
10547    *
10548    * @private
10549    * @param {Object} object The object to query.
10550    * @param {string} key The key of the method to get.
10551    * @returns {*} Returns the function if it's native, else `undefined`.
10552    */
10553   function getNative(object, key) {
10554     var value = object == null ? undefined : object[key];
10555     return isNative(value) ? value : undefined;
10556   }
10557
10558   /**
10559    * Gets the view, applying any `transforms` to the `start` and `end` positions.
10560    *
10561    * @private
10562    * @param {number} start The start of the view.
10563    * @param {number} end The end of the view.
10564    * @param {Array} [transforms] The transformations to apply to the view.
10565    * @returns {Object} Returns an object containing the `start` and `end`
10566    *  positions of the view.
10567    */
10568   function getView(start, end, transforms) {
10569     var index = -1,
10570         length = transforms ? transforms.length : 0;
10571
10572     while (++index < length) {
10573       var data = transforms[index],
10574           size = data.size;
10575
10576       switch (data.type) {
10577         case 'drop':      start += size; break;
10578         case 'dropRight': end -= size; break;
10579         case 'take':      end = nativeMin(end, start + size); break;
10580         case 'takeRight': start = nativeMax(start, end - size); break;
10581       }
10582     }
10583     return { 'start': start, 'end': end };
10584   }
10585
10586   /**
10587    * Initializes an array clone.
10588    *
10589    * @private
10590    * @param {Array} array The array to clone.
10591    * @returns {Array} Returns the initialized clone.
10592    */
10593   function initCloneArray(array) {
10594     var length = array.length,
10595         result = new array.constructor(length);
10596
10597     // Add array properties assigned by `RegExp#exec`.
10598     if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
10599       result.index = array.index;
10600       result.input = array.input;
10601     }
10602     return result;
10603   }
10604
10605   /**
10606    * Initializes an object clone.
10607    *
10608    * @private
10609    * @param {Object} object The object to clone.
10610    * @returns {Object} Returns the initialized clone.
10611    */
10612   function initCloneObject(object) {
10613     var Ctor = object.constructor;
10614     if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
10615       Ctor = Object;
10616     }
10617     return new Ctor;
10618   }
10619
10620   /**
10621    * Initializes an object clone based on its `toStringTag`.
10622    *
10623    * **Note:** This function only supports cloning values with tags of
10624    * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10625    *
10626    * @private
10627    * @param {Object} object The object to clone.
10628    * @param {string} tag The `toStringTag` of the object to clone.
10629    * @param {boolean} [isDeep] Specify a deep clone.
10630    * @returns {Object} Returns the initialized clone.
10631    */
10632   function initCloneByTag(object, tag, isDeep) {
10633     var Ctor = object.constructor;
10634     switch (tag) {
10635       case arrayBufferTag:
10636         return bufferClone(object);
10637
10638       case boolTag:
10639       case dateTag:
10640         return new Ctor(+object);
10641
10642       case float32Tag: case float64Tag:
10643       case int8Tag: case int16Tag: case int32Tag:
10644       case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
10645         // Safari 5 mobile incorrectly has `Object` as the constructor of typed arrays.
10646         if (Ctor instanceof Ctor) {
10647           Ctor = ctorByTag[tag];
10648         }
10649         var buffer = object.buffer;
10650         return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
10651
10652       case numberTag:
10653       case stringTag:
10654         return new Ctor(object);
10655
10656       case regexpTag:
10657         var result = new Ctor(object.source, reFlags.exec(object));
10658         result.lastIndex = object.lastIndex;
10659     }
10660     return result;
10661   }
10662
10663   /**
10664    * Checks if `value` is array-like.
10665    *
10666    * @private
10667    * @param {*} value The value to check.
10668    * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
10669    */
10670   function isArrayLike(value) {
10671     return value != null && isLength(getLength(value));
10672   }
10673
10674   /**
10675    * Checks if `value` is a valid array-like index.
10676    *
10677    * @private
10678    * @param {*} value The value to check.
10679    * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
10680    * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
10681    */
10682   function isIndex(value, length) {
10683     value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
10684     length = length == null ? MAX_SAFE_INTEGER : length;
10685     return value > -1 && value % 1 == 0 && value < length;
10686   }
10687
10688   /**
10689    * Checks if the provided arguments are from an iteratee call.
10690    *
10691    * @private
10692    * @param {*} value The potential iteratee value argument.
10693    * @param {*} index The potential iteratee index or key argument.
10694    * @param {*} object The potential iteratee object argument.
10695    * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
10696    */
10697   function isIterateeCall(value, index, object) {
10698     if (!isObject(object)) {
10699       return false;
10700     }
10701     var type = typeof index;
10702     if (type == 'number'
10703         ? (isArrayLike(object) && isIndex(index, object.length))
10704         : (type == 'string' && index in object)) {
10705       var other = object[index];
10706       return value === value ? (value === other) : (other !== other);
10707     }
10708     return false;
10709   }
10710
10711   /**
10712    * Checks if `value` is a property name and not a property path.
10713    *
10714    * @private
10715    * @param {*} value The value to check.
10716    * @param {Object} [object] The object to query keys on.
10717    * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
10718    */
10719   function isKey(value, object) {
10720     var type = typeof value;
10721     if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
10722       return true;
10723     }
10724     if (isArray(value)) {
10725       return false;
10726     }
10727     var result = !reIsDeepProp.test(value);
10728     return result || (object != null && value in toObject(object));
10729   }
10730
10731   /**
10732    * Checks if `func` has a lazy counterpart.
10733    *
10734    * @private
10735    * @param {Function} func The function to check.
10736    * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.
10737    */
10738   function isLaziable(func) {
10739     var funcName = getFuncName(func);
10740     if (!(funcName in LazyWrapper.prototype)) {
10741       return false;
10742     }
10743     var other = lodash[funcName];
10744     if (func === other) {
10745       return true;
10746     }
10747     var data = getData(other);
10748     return !!data && func === data[0];
10749   }
10750
10751   /**
10752    * Checks if `value` is a valid array-like length.
10753    *
10754    * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
10755    *
10756    * @private
10757    * @param {*} value The value to check.
10758    * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
10759    */
10760   function isLength(value) {
10761     return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
10762   }
10763
10764   /**
10765    * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
10766    *
10767    * @private
10768    * @param {*} value The value to check.
10769    * @returns {boolean} Returns `true` if `value` if suitable for strict
10770    *  equality comparisons, else `false`.
10771    */
10772   function isStrictComparable(value) {
10773     return value === value && !isObject(value);
10774   }
10775
10776   /**
10777    * Merges the function metadata of `source` into `data`.
10778    *
10779    * Merging metadata reduces the number of wrappers required to invoke a function.
10780    * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
10781    * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`
10782    * augment function arguments, making the order in which they are executed important,
10783    * preventing the merging of metadata. However, we make an exception for a safe
10784    * common case where curried functions have `_.ary` and or `_.rearg` applied.
10785    *
10786    * @private
10787    * @param {Array} data The destination metadata.
10788    * @param {Array} source The source metadata.
10789    * @returns {Array} Returns `data`.
10790    */
10791   function mergeData(data, source) {
10792     var bitmask = data[1],
10793         srcBitmask = source[1],
10794         newBitmask = bitmask | srcBitmask,
10795         isCommon = newBitmask < ARY_FLAG;
10796
10797     var isCombo =
10798       (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||
10799       (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||
10800       (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);
10801
10802     // Exit early if metadata can't be merged.
10803     if (!(isCommon || isCombo)) {
10804       return data;
10805     }
10806     // Use source `thisArg` if available.
10807     if (srcBitmask & BIND_FLAG) {
10808       data[2] = source[2];
10809       // Set when currying a bound function.
10810       newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;
10811     }
10812     // Compose partial arguments.
10813     var value = source[3];
10814     if (value) {
10815       var partials = data[3];
10816       data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);
10817       data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);
10818     }
10819     // Compose partial right arguments.
10820     value = source[5];
10821     if (value) {
10822       partials = data[5];
10823       data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);
10824       data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);
10825     }
10826     // Use source `argPos` if available.
10827     value = source[7];
10828     if (value) {
10829       data[7] = arrayCopy(value);
10830     }
10831     // Use source `ary` if it's smaller.
10832     if (srcBitmask & ARY_FLAG) {
10833       data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
10834     }
10835     // Use source `arity` if one is not provided.
10836     if (data[9] == null) {
10837       data[9] = source[9];
10838     }
10839     // Use source `func` and merge bitmasks.
10840     data[0] = source[0];
10841     data[1] = newBitmask;
10842
10843     return data;
10844   }
10845
10846   /**
10847    * A specialized version of `_.pick` which picks `object` properties specified
10848    * by `props`.
10849    *
10850    * @private
10851    * @param {Object} object The source object.
10852    * @param {string[]} props The property names to pick.
10853    * @returns {Object} Returns the new object.
10854    */
10855   function pickByArray(object, props) {
10856     object = toObject(object);
10857
10858     var index = -1,
10859         length = props.length,
10860         result = {};
10861
10862     while (++index < length) {
10863       var key = props[index];
10864       if (key in object) {
10865         result[key] = object[key];
10866       }
10867     }
10868     return result;
10869   }
10870
10871   /**
10872    * A specialized version of `_.pick` which picks `object` properties `predicate`
10873    * returns truthy for.
10874    *
10875    * @private
10876    * @param {Object} object The source object.
10877    * @param {Function} predicate The function invoked per iteration.
10878    * @returns {Object} Returns the new object.
10879    */
10880   function pickByCallback(object, predicate) {
10881     var result = {};
10882     baseForIn(object, function(value, key, object) {
10883       if (predicate(value, key, object)) {
10884         result[key] = value;
10885       }
10886     });
10887     return result;
10888   }
10889
10890   /**
10891    * Reorder `array` according to the specified indexes where the element at
10892    * the first index is assigned as the first element, the element at
10893    * the second index is assigned as the second element, and so on.
10894    *
10895    * @private
10896    * @param {Array} array The array to reorder.
10897    * @param {Array} indexes The arranged array indexes.
10898    * @returns {Array} Returns `array`.
10899    */
10900   function reorder(array, indexes) {
10901     var arrLength = array.length,
10902         length = nativeMin(indexes.length, arrLength),
10903         oldArray = arrayCopy(array);
10904
10905     while (length--) {
10906       var index = indexes[length];
10907       array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
10908     }
10909     return array;
10910   }
10911
10912   /**
10913    * Sets metadata for `func`.
10914    *
10915    * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
10916    * period of time, it will trip its breaker and transition to an identity function
10917    * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)
10918    * for more details.
10919    *
10920    * @private
10921    * @param {Function} func The function to associate metadata with.
10922    * @param {*} data The metadata.
10923    * @returns {Function} Returns `func`.
10924    */
10925   var setData = (function() {
10926     var count = 0,
10927         lastCalled = 0;
10928
10929     return function(key, value) {
10930       var stamp = now(),
10931           remaining = HOT_SPAN - (stamp - lastCalled);
10932
10933       lastCalled = stamp;
10934       if (remaining > 0) {
10935         if (++count >= HOT_COUNT) {
10936           return key;
10937         }
10938       } else {
10939         count = 0;
10940       }
10941       return baseSetData(key, value);
10942     };
10943   }());
10944
10945   /**
10946    * A fallback implementation of `_.isPlainObject` which checks if `value`
10947    * is an object created by the `Object` constructor or has a `[[Prototype]]`
10948    * of `null`.
10949    *
10950    * @private
10951    * @param {*} value The value to check.
10952    * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
10953    */
10954   function shimIsPlainObject(value) {
10955     var Ctor,
10956         support = lodash.support;
10957
10958     // Exit early for non `Object` objects.
10959     if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||
10960         (!hasOwnProperty.call(value, 'constructor') &&
10961           (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||
10962         (!support.argsTag && isArguments(value))) {
10963       return false;
10964     }
10965     // IE < 9 iterates inherited properties before own properties. If the first
10966     // iterated property is an object's own property then there are no inherited
10967     // enumerable properties.
10968     var result;
10969     if (support.ownLast) {
10970       baseForIn(value, function(subValue, key, object) {
10971         result = hasOwnProperty.call(object, key);
10972         return false;
10973       });
10974       return result !== false;
10975     }
10976     // In most environments an object's own properties are iterated before
10977     // its inherited properties. If the last iterated property is an object's
10978     // own property then there are no inherited enumerable properties.
10979     baseForIn(value, function(subValue, key) {
10980       result = key;
10981     });
10982     return result === undefined || hasOwnProperty.call(value, result);
10983   }
10984
10985   /**
10986    * A fallback implementation of `Object.keys` which creates an array of the
10987    * own enumerable property names of `object`.
10988    *
10989    * @private
10990    * @param {Object} object The object to query.
10991    * @returns {Array} Returns the array of property names.
10992    */
10993   function shimKeys(object) {
10994     var props = keysIn(object),
10995         propsLength = props.length,
10996         length = propsLength && object.length;
10997
10998     var allowIndexes = !!length && isLength(length) &&
10999       (isArray(object) || isArguments(object) || isString(object));
11000
11001     var index = -1,
11002         result = [];
11003
11004     while (++index < propsLength) {
11005       var key = props[index];
11006       if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
11007         result.push(key);
11008       }
11009     }
11010     return result;
11011   }
11012
11013   /**
11014    * Converts `value` to an object if it's not one.
11015    *
11016    * @private
11017    * @param {*} value The value to process.
11018    * @returns {Object} Returns the object.
11019    */
11020   function toObject(value) {
11021     if (lodash.support.unindexedChars && isString(value)) {
11022       var index = -1,
11023           length = value.length,
11024           result = Object(value);
11025
11026       while (++index < length) {
11027         result[index] = value.charAt(index);
11028       }
11029       return result;
11030     }
11031     return isObject(value) ? value : Object(value);
11032   }
11033
11034   /**
11035    * Converts `value` to property path array if it's not one.
11036    *
11037    * @private
11038    * @param {*} value The value to process.
11039    * @returns {Array} Returns the property path array.
11040    */
11041   function toPath(value) {
11042     if (isArray(value)) {
11043       return value;
11044     }
11045     var result = [];
11046     baseToString(value).replace(rePropName, function(match, number, quote, string) {
11047       result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
11048     });
11049     return result;
11050   }
11051
11052   /**
11053    * Creates a clone of `wrapper`.
11054    *
11055    * @private
11056    * @param {Object} wrapper The wrapper to clone.
11057    * @returns {Object} Returns the cloned wrapper.
11058    */
11059   function wrapperClone(wrapper) {
11060     return wrapper instanceof LazyWrapper
11061       ? wrapper.clone()
11062       : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
11063   }
11064
11065   /*------------------------------------------------------------------------*/
11066
11067   /**
11068    * Creates an array of elements split into groups the length of `size`.
11069    * If `collection` can't be split evenly, the final chunk will be the remaining
11070    * elements.
11071    *
11072    * @static
11073    * @memberOf _
11074    * @category Array
11075    * @param {Array} array The array to process.
11076    * @param {number} [size=1] The length of each chunk.
11077    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
11078    * @returns {Array} Returns the new array containing chunks.
11079    * @example
11080    *
11081    * _.chunk(['a', 'b', 'c', 'd'], 2);
11082    * // => [['a', 'b'], ['c', 'd']]
11083    *
11084    * _.chunk(['a', 'b', 'c', 'd'], 3);
11085    * // => [['a', 'b', 'c'], ['d']]
11086    */
11087   function chunk(array, size, guard) {
11088     if (guard ? isIterateeCall(array, size, guard) : size == null) {
11089       size = 1;
11090     } else {
11091       size = nativeMax(+size || 1, 1);
11092     }
11093     var index = 0,
11094         length = array ? array.length : 0,
11095         resIndex = -1,
11096         result = Array(ceil(length / size));
11097
11098     while (index < length) {
11099       result[++resIndex] = baseSlice(array, index, (index += size));
11100     }
11101     return result;
11102   }
11103
11104   /**
11105    * Creates an array with all falsey values removed. The values `false`, `null`,
11106    * `0`, `""`, `undefined`, and `NaN` are falsey.
11107    *
11108    * @static
11109    * @memberOf _
11110    * @category Array
11111    * @param {Array} array The array to compact.
11112    * @returns {Array} Returns the new array of filtered values.
11113    * @example
11114    *
11115    * _.compact([0, 1, false, 2, '', 3]);
11116    * // => [1, 2, 3]
11117    */
11118   function compact(array) {
11119     var index = -1,
11120         length = array ? array.length : 0,
11121         resIndex = -1,
11122         result = [];
11123
11124     while (++index < length) {
11125       var value = array[index];
11126       if (value) {
11127         result[++resIndex] = value;
11128       }
11129     }
11130     return result;
11131   }
11132
11133   /**
11134    * Creates an array of unique `array` values not included in the other
11135    * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11136    * for equality comparisons.
11137    *
11138    * @static
11139    * @memberOf _
11140    * @category Array
11141    * @param {Array} array The array to inspect.
11142    * @param {...Array} [values] The arrays of values to exclude.
11143    * @returns {Array} Returns the new array of filtered values.
11144    * @example
11145    *
11146    * _.difference([1, 2, 3], [4, 2]);
11147    * // => [1, 3]
11148    */
11149   var difference = restParam(function(array, values) {
11150     return isArrayLike(array)
11151       ? baseDifference(array, baseFlatten(values, false, true))
11152       : [];
11153   });
11154
11155   /**
11156    * Gets the first element of `array`.
11157    *
11158    * @static
11159    * @memberOf _
11160    * @alias head
11161    * @category Array
11162    * @param {Array} array The array to query.
11163    * @returns {*} Returns the first element of `array`.
11164    * @example
11165    *
11166    * _.first([1, 2, 3]);
11167    * // => 1
11168    *
11169    * _.first([]);
11170    * // => undefined
11171    */
11172   function first(array) {
11173     return array ? array[0] : undefined;
11174   }
11175
11176   /**
11177    * Flattens a nested array. If `isDeep` is `true` the array is recursively
11178    * flattened, otherwise it is only flattened a single level.
11179    *
11180    * @static
11181    * @memberOf _
11182    * @category Array
11183    * @param {Array} array The array to flatten.
11184    * @param {boolean} [isDeep] Specify a deep flatten.
11185    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
11186    * @returns {Array} Returns the new flattened array.
11187    * @example
11188    *
11189    * _.flatten([1, [2, 3, [4]]]);
11190    * // => [1, 2, 3, [4]]
11191    *
11192    * // using `isDeep`
11193    * _.flatten([1, [2, 3, [4]]], true);
11194    * // => [1, 2, 3, 4]
11195    */
11196   function flatten(array, isDeep, guard) {
11197     var length = array ? array.length : 0;
11198     if (guard && isIterateeCall(array, isDeep, guard)) {
11199       isDeep = false;
11200     }
11201     return length ? baseFlatten(array, isDeep) : [];
11202   }
11203
11204   /**
11205    * Gets the index at which the first occurrence of `value` is found in `array`
11206    * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11207    * for equality comparisons. If `fromIndex` is negative, it is used as the offset
11208    * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
11209    * performs a faster binary search.
11210    *
11211    * @static
11212    * @memberOf _
11213    * @category Array
11214    * @param {Array} array The array to search.
11215    * @param {*} value The value to search for.
11216    * @param {boolean|number} [fromIndex=0] The index to search from or `true`
11217    *  to perform a binary search on a sorted array.
11218    * @returns {number} Returns the index of the matched value, else `-1`.
11219    * @example
11220    *
11221    * _.indexOf([1, 2, 1, 2], 2);
11222    * // => 1
11223    *
11224    * // using `fromIndex`
11225    * _.indexOf([1, 2, 1, 2], 2, 2);
11226    * // => 3
11227    *
11228    * // performing a binary search
11229    * _.indexOf([1, 1, 2, 2], 2, true);
11230    * // => 2
11231    */
11232   function indexOf(array, value, fromIndex) {
11233     var length = array ? array.length : 0;
11234     if (!length) {
11235       return -1;
11236     }
11237     if (typeof fromIndex == 'number') {
11238       fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
11239     } else if (fromIndex) {
11240       var index = binaryIndex(array, value),
11241           other = array[index];
11242
11243       if (value === value ? (value === other) : (other !== other)) {
11244         return index;
11245       }
11246       return -1;
11247     }
11248     return baseIndexOf(array, value, fromIndex || 0);
11249   }
11250
11251   /**
11252    * Creates an array of unique values that are included in all of the provided
11253    * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11254    * for equality comparisons.
11255    *
11256    * @static
11257    * @memberOf _
11258    * @category Array
11259    * @param {...Array} [arrays] The arrays to inspect.
11260    * @returns {Array} Returns the new array of shared values.
11261    * @example
11262    * _.intersection([1, 2], [4, 2], [2, 1]);
11263    * // => [2]
11264    */
11265   var intersection = restParam(function(arrays) {
11266     var othLength = arrays.length,
11267         othIndex = othLength,
11268         caches = Array(length),
11269         indexOf = getIndexOf(),
11270         isCommon = indexOf == baseIndexOf,
11271         result = [];
11272
11273     while (othIndex--) {
11274       var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
11275       caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
11276     }
11277     var array = arrays[0],
11278         index = -1,
11279         length = array ? array.length : 0,
11280         seen = caches[0];
11281
11282     outer:
11283     while (++index < length) {
11284       value = array[index];
11285       if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
11286         var othIndex = othLength;
11287         while (--othIndex) {
11288           var cache = caches[othIndex];
11289           if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
11290             continue outer;
11291           }
11292         }
11293         if (seen) {
11294           seen.push(value);
11295         }
11296         result.push(value);
11297       }
11298     }
11299     return result;
11300   });
11301
11302   /**
11303    * Gets the last element of `array`.
11304    *
11305    * @static
11306    * @memberOf _
11307    * @category Array
11308    * @param {Array} array The array to query.
11309    * @returns {*} Returns the last element of `array`.
11310    * @example
11311    *
11312    * _.last([1, 2, 3]);
11313    * // => 3
11314    */
11315   function last(array) {
11316     var length = array ? array.length : 0;
11317     return length ? array[length - 1] : undefined;
11318   }
11319
11320   /**
11321    * Creates an array of unique values, in order, from all of the provided arrays
11322    * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11323    * for equality comparisons.
11324    *
11325    * @static
11326    * @memberOf _
11327    * @category Array
11328    * @param {...Array} [arrays] The arrays to inspect.
11329    * @returns {Array} Returns the new array of combined values.
11330    * @example
11331    *
11332    * _.union([1, 2], [4, 2], [2, 1]);
11333    * // => [1, 2, 4]
11334    */
11335   var union = restParam(function(arrays) {
11336     return baseUniq(baseFlatten(arrays, false, true));
11337   });
11338
11339   /**
11340    * Creates a duplicate-free version of an array, using
11341    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11342    * for equality comparisons, in which only the first occurence of each element
11343    * is kept. Providing `true` for `isSorted` performs a faster search algorithm
11344    * for sorted arrays. If an iteratee function is provided it is invoked for
11345    * each element in the array to generate the criterion by which uniqueness
11346    * is computed. The `iteratee` is bound to `thisArg` and invoked with three
11347    * arguments: (value, index, array).
11348    *
11349    * If a property name is provided for `iteratee` the created `_.property`
11350    * style callback returns the property value of the given element.
11351    *
11352    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11353    * style callback returns `true` for elements that have a matching property
11354    * value, else `false`.
11355    *
11356    * If an object is provided for `iteratee` the created `_.matches` style
11357    * callback returns `true` for elements that have the properties of the given
11358    * object, else `false`.
11359    *
11360    * @static
11361    * @memberOf _
11362    * @alias unique
11363    * @category Array
11364    * @param {Array} array The array to inspect.
11365    * @param {boolean} [isSorted] Specify the array is sorted.
11366    * @param {Function|Object|string} [iteratee] The function invoked per iteration.
11367    * @param {*} [thisArg] The `this` binding of `iteratee`.
11368    * @returns {Array} Returns the new duplicate-value-free array.
11369    * @example
11370    *
11371    * _.uniq([2, 1, 2]);
11372    * // => [2, 1]
11373    *
11374    * // using `isSorted`
11375    * _.uniq([1, 1, 2], true);
11376    * // => [1, 2]
11377    *
11378    * // using an iteratee function
11379    * _.uniq([1, 2.5, 1.5, 2], function(n) {
11380    *   return this.floor(n);
11381    * }, Math);
11382    * // => [1, 2.5]
11383    *
11384    * // using the `_.property` callback shorthand
11385    * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
11386    * // => [{ 'x': 1 }, { 'x': 2 }]
11387    */
11388   function uniq(array, isSorted, iteratee, thisArg) {
11389     var length = array ? array.length : 0;
11390     if (!length) {
11391       return [];
11392     }
11393     if (isSorted != null && typeof isSorted != 'boolean') {
11394       thisArg = iteratee;
11395       iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
11396       isSorted = false;
11397     }
11398     var callback = getCallback();
11399     if (!(iteratee == null && callback === baseCallback)) {
11400       iteratee = callback(iteratee, thisArg, 3);
11401     }
11402     return (isSorted && getIndexOf() == baseIndexOf)
11403       ? sortedUniq(array, iteratee)
11404       : baseUniq(array, iteratee);
11405   }
11406
11407   /**
11408    * Creates an array excluding all provided values using
11409    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11410    * for equality comparisons.
11411    *
11412    * @static
11413    * @memberOf _
11414    * @category Array
11415    * @param {Array} array The array to filter.
11416    * @param {...*} [values] The values to exclude.
11417    * @returns {Array} Returns the new array of filtered values.
11418    * @example
11419    *
11420    * _.without([1, 2, 1, 3], 1, 2);
11421    * // => [3]
11422    */
11423   var without = restParam(function(array, values) {
11424     return isArrayLike(array)
11425       ? baseDifference(array, values)
11426       : [];
11427   });
11428
11429   /*------------------------------------------------------------------------*/
11430
11431   /**
11432    * Creates a `lodash` object that wraps `value` with explicit method
11433    * chaining enabled.
11434    *
11435    * @static
11436    * @memberOf _
11437    * @category Chain
11438    * @param {*} value The value to wrap.
11439    * @returns {Object} Returns the new `lodash` wrapper instance.
11440    * @example
11441    *
11442    * var users = [
11443    *   { 'user': 'barney',  'age': 36 },
11444    *   { 'user': 'fred',    'age': 40 },
11445    *   { 'user': 'pebbles', 'age': 1 }
11446    * ];
11447    *
11448    * var youngest = _.chain(users)
11449    *   .sortBy('age')
11450    *   .map(function(chr) {
11451    *     return chr.user + ' is ' + chr.age;
11452    *   })
11453    *   .first()
11454    *   .value();
11455    * // => 'pebbles is 1'
11456    */
11457   function chain(value) {
11458     var result = lodash(value);
11459     result.__chain__ = true;
11460     return result;
11461   }
11462
11463   /**
11464    * This method invokes `interceptor` and returns `value`. The interceptor is
11465    * bound to `thisArg` and invoked with one argument; (value). The purpose of
11466    * this method is to "tap into" a method chain in order to perform operations
11467    * on intermediate results within the chain.
11468    *
11469    * @static
11470    * @memberOf _
11471    * @category Chain
11472    * @param {*} value The value to provide to `interceptor`.
11473    * @param {Function} interceptor The function to invoke.
11474    * @param {*} [thisArg] The `this` binding of `interceptor`.
11475    * @returns {*} Returns `value`.
11476    * @example
11477    *
11478    * _([1, 2, 3])
11479    *  .tap(function(array) {
11480    *    array.pop();
11481    *  })
11482    *  .reverse()
11483    *  .value();
11484    * // => [2, 1]
11485    */
11486   function tap(value, interceptor, thisArg) {
11487     interceptor.call(thisArg, value);
11488     return value;
11489   }
11490
11491   /**
11492    * This method is like `_.tap` except that it returns the result of `interceptor`.
11493    *
11494    * @static
11495    * @memberOf _
11496    * @category Chain
11497    * @param {*} value The value to provide to `interceptor`.
11498    * @param {Function} interceptor The function to invoke.
11499    * @param {*} [thisArg] The `this` binding of `interceptor`.
11500    * @returns {*} Returns the result of `interceptor`.
11501    * @example
11502    *
11503    * _('  abc  ')
11504    *  .chain()
11505    *  .trim()
11506    *  .thru(function(value) {
11507    *    return [value];
11508    *  })
11509    *  .value();
11510    * // => ['abc']
11511    */
11512   function thru(value, interceptor, thisArg) {
11513     return interceptor.call(thisArg, value);
11514   }
11515
11516   /**
11517    * Enables explicit method chaining on the wrapper object.
11518    *
11519    * @name chain
11520    * @memberOf _
11521    * @category Chain
11522    * @returns {Object} Returns the new `lodash` wrapper instance.
11523    * @example
11524    *
11525    * var users = [
11526    *   { 'user': 'barney', 'age': 36 },
11527    *   { 'user': 'fred',   'age': 40 }
11528    * ];
11529    *
11530    * // without explicit chaining
11531    * _(users).first();
11532    * // => { 'user': 'barney', 'age': 36 }
11533    *
11534    * // with explicit chaining
11535    * _(users).chain()
11536    *   .first()
11537    *   .pick('user')
11538    *   .value();
11539    * // => { 'user': 'barney' }
11540    */
11541   function wrapperChain() {
11542     return chain(this);
11543   }
11544
11545   /**
11546    * Executes the chained sequence and returns the wrapped result.
11547    *
11548    * @name commit
11549    * @memberOf _
11550    * @category Chain
11551    * @returns {Object} Returns the new `lodash` wrapper instance.
11552    * @example
11553    *
11554    * var array = [1, 2];
11555    * var wrapper = _(array).push(3);
11556    *
11557    * console.log(array);
11558    * // => [1, 2]
11559    *
11560    * wrapper = wrapper.commit();
11561    * console.log(array);
11562    * // => [1, 2, 3]
11563    *
11564    * wrapper.last();
11565    * // => 3
11566    *
11567    * console.log(array);
11568    * // => [1, 2, 3]
11569    */
11570   function wrapperCommit() {
11571     return new LodashWrapper(this.value(), this.__chain__);
11572   }
11573
11574   /**
11575    * Creates a clone of the chained sequence planting `value` as the wrapped value.
11576    *
11577    * @name plant
11578    * @memberOf _
11579    * @category Chain
11580    * @returns {Object} Returns the new `lodash` wrapper instance.
11581    * @example
11582    *
11583    * var array = [1, 2];
11584    * var wrapper = _(array).map(function(value) {
11585    *   return Math.pow(value, 2);
11586    * });
11587    *
11588    * var other = [3, 4];
11589    * var otherWrapper = wrapper.plant(other);
11590    *
11591    * otherWrapper.value();
11592    * // => [9, 16]
11593    *
11594    * wrapper.value();
11595    * // => [1, 4]
11596    */
11597   function wrapperPlant(value) {
11598     var result,
11599         parent = this;
11600
11601     while (parent instanceof baseLodash) {
11602       var clone = wrapperClone(parent);
11603       if (result) {
11604         previous.__wrapped__ = clone;
11605       } else {
11606         result = clone;
11607       }
11608       var previous = clone;
11609       parent = parent.__wrapped__;
11610     }
11611     previous.__wrapped__ = value;
11612     return result;
11613   }
11614
11615   /**
11616    * Reverses the wrapped array so the first element becomes the last, the
11617    * second element becomes the second to last, and so on.
11618    *
11619    * **Note:** This method mutates the wrapped array.
11620    *
11621    * @name reverse
11622    * @memberOf _
11623    * @category Chain
11624    * @returns {Object} Returns the new reversed `lodash` wrapper instance.
11625    * @example
11626    *
11627    * var array = [1, 2, 3];
11628    *
11629    * _(array).reverse().value()
11630    * // => [3, 2, 1]
11631    *
11632    * console.log(array);
11633    * // => [3, 2, 1]
11634    */
11635   function wrapperReverse() {
11636     var value = this.__wrapped__;
11637     if (value instanceof LazyWrapper) {
11638       if (this.__actions__.length) {
11639         value = new LazyWrapper(this);
11640       }
11641       return new LodashWrapper(value.reverse(), this.__chain__);
11642     }
11643     return this.thru(function(value) {
11644       return value.reverse();
11645     });
11646   }
11647
11648   /**
11649    * Produces the result of coercing the unwrapped value to a string.
11650    *
11651    * @name toString
11652    * @memberOf _
11653    * @category Chain
11654    * @returns {string} Returns the coerced string value.
11655    * @example
11656    *
11657    * _([1, 2, 3]).toString();
11658    * // => '1,2,3'
11659    */
11660   function wrapperToString() {
11661     return (this.value() + '');
11662   }
11663
11664   /**
11665    * Executes the chained sequence to extract the unwrapped value.
11666    *
11667    * @name value
11668    * @memberOf _
11669    * @alias run, toJSON, valueOf
11670    * @category Chain
11671    * @returns {*} Returns the resolved unwrapped value.
11672    * @example
11673    *
11674    * _([1, 2, 3]).value();
11675    * // => [1, 2, 3]
11676    */
11677   function wrapperValue() {
11678     return baseWrapperValue(this.__wrapped__, this.__actions__);
11679   }
11680
11681   /*------------------------------------------------------------------------*/
11682
11683   /**
11684    * Checks if `predicate` returns truthy for **all** elements of `collection`.
11685    * The predicate is bound to `thisArg` and invoked with three arguments:
11686    * (value, index|key, collection).
11687    *
11688    * If a property name is provided for `predicate` the created `_.property`
11689    * style callback returns the property value of the given element.
11690    *
11691    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11692    * style callback returns `true` for elements that have a matching property
11693    * value, else `false`.
11694    *
11695    * If an object is provided for `predicate` the created `_.matches` style
11696    * callback returns `true` for elements that have the properties of the given
11697    * object, else `false`.
11698    *
11699    * @static
11700    * @memberOf _
11701    * @alias all
11702    * @category Collection
11703    * @param {Array|Object|string} collection The collection to iterate over.
11704    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11705    *  per iteration.
11706    * @param {*} [thisArg] The `this` binding of `predicate`.
11707    * @returns {boolean} Returns `true` if all elements pass the predicate check,
11708    *  else `false`.
11709    * @example
11710    *
11711    * _.every([true, 1, null, 'yes'], Boolean);
11712    * // => false
11713    *
11714    * var users = [
11715    *   { 'user': 'barney', 'active': false },
11716    *   { 'user': 'fred',   'active': false }
11717    * ];
11718    *
11719    * // using the `_.matches` callback shorthand
11720    * _.every(users, { 'user': 'barney', 'active': false });
11721    * // => false
11722    *
11723    * // using the `_.matchesProperty` callback shorthand
11724    * _.every(users, 'active', false);
11725    * // => true
11726    *
11727    * // using the `_.property` callback shorthand
11728    * _.every(users, 'active');
11729    * // => false
11730    */
11731   function every(collection, predicate, thisArg) {
11732     var func = isArray(collection) ? arrayEvery : baseEvery;
11733     if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
11734       predicate = null;
11735     }
11736     if (typeof predicate != 'function' || thisArg !== undefined) {
11737       predicate = getCallback(predicate, thisArg, 3);
11738     }
11739     return func(collection, predicate);
11740   }
11741
11742   /**
11743    * Iterates over elements of `collection`, returning an array of all elements
11744    * `predicate` returns truthy for. The predicate is bound to `thisArg` and
11745    * invoked with three arguments: (value, index|key, collection).
11746    *
11747    * If a property name is provided for `predicate` the created `_.property`
11748    * style callback returns the property value of the given element.
11749    *
11750    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11751    * style callback returns `true` for elements that have a matching property
11752    * value, else `false`.
11753    *
11754    * If an object is provided for `predicate` the created `_.matches` style
11755    * callback returns `true` for elements that have the properties of the given
11756    * object, else `false`.
11757    *
11758    * @static
11759    * @memberOf _
11760    * @alias select
11761    * @category Collection
11762    * @param {Array|Object|string} collection The collection to iterate over.
11763    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11764    *  per iteration.
11765    * @param {*} [thisArg] The `this` binding of `predicate`.
11766    * @returns {Array} Returns the new filtered array.
11767    * @example
11768    *
11769    * _.filter([4, 5, 6], function(n) {
11770    *   return n % 2 == 0;
11771    * });
11772    * // => [4, 6]
11773    *
11774    * var users = [
11775    *   { 'user': 'barney', 'age': 36, 'active': true },
11776    *   { 'user': 'fred',   'age': 40, 'active': false }
11777    * ];
11778    *
11779    * // using the `_.matches` callback shorthand
11780    * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
11781    * // => ['barney']
11782    *
11783    * // using the `_.matchesProperty` callback shorthand
11784    * _.pluck(_.filter(users, 'active', false), 'user');
11785    * // => ['fred']
11786    *
11787    * // using the `_.property` callback shorthand
11788    * _.pluck(_.filter(users, 'active'), 'user');
11789    * // => ['barney']
11790    */
11791   function filter(collection, predicate, thisArg) {
11792     var func = isArray(collection) ? arrayFilter : baseFilter;
11793     predicate = getCallback(predicate, thisArg, 3);
11794     return func(collection, predicate);
11795   }
11796
11797   /**
11798    * Iterates over elements of `collection`, returning the first element
11799    * `predicate` returns truthy for. The predicate is bound to `thisArg` and
11800    * invoked with three arguments: (value, index|key, collection).
11801    *
11802    * If a property name is provided for `predicate` the created `_.property`
11803    * style callback returns the property value of the given element.
11804    *
11805    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11806    * style callback returns `true` for elements that have a matching property
11807    * value, else `false`.
11808    *
11809    * If an object is provided for `predicate` the created `_.matches` style
11810    * callback returns `true` for elements that have the properties of the given
11811    * object, else `false`.
11812    *
11813    * @static
11814    * @memberOf _
11815    * @alias detect
11816    * @category Collection
11817    * @param {Array|Object|string} collection The collection to search.
11818    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11819    *  per iteration.
11820    * @param {*} [thisArg] The `this` binding of `predicate`.
11821    * @returns {*} Returns the matched element, else `undefined`.
11822    * @example
11823    *
11824    * var users = [
11825    *   { 'user': 'barney',  'age': 36, 'active': true },
11826    *   { 'user': 'fred',    'age': 40, 'active': false },
11827    *   { 'user': 'pebbles', 'age': 1,  'active': true }
11828    * ];
11829    *
11830    * _.result(_.find(users, function(chr) {
11831    *   return chr.age < 40;
11832    * }), 'user');
11833    * // => 'barney'
11834    *
11835    * // using the `_.matches` callback shorthand
11836    * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
11837    * // => 'pebbles'
11838    *
11839    * // using the `_.matchesProperty` callback shorthand
11840    * _.result(_.find(users, 'active', false), 'user');
11841    * // => 'fred'
11842    *
11843    * // using the `_.property` callback shorthand
11844    * _.result(_.find(users, 'active'), 'user');
11845    * // => 'barney'
11846    */
11847   var find = createFind(baseEach);
11848
11849   /**
11850    * Iterates over elements of `collection` invoking `iteratee` for each element.
11851    * The `iteratee` is bound to `thisArg` and invoked with three arguments:
11852    * (value, index|key, collection). Iteratee functions may exit iteration early
11853    * by explicitly returning `false`.
11854    *
11855    * **Note:** As with other "Collections" methods, objects with a "length" property
11856    * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
11857    * may be used for object iteration.
11858    *
11859    * @static
11860    * @memberOf _
11861    * @alias each
11862    * @category Collection
11863    * @param {Array|Object|string} collection The collection to iterate over.
11864    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
11865    * @param {*} [thisArg] The `this` binding of `iteratee`.
11866    * @returns {Array|Object|string} Returns `collection`.
11867    * @example
11868    *
11869    * _([1, 2]).forEach(function(n) {
11870    *   console.log(n);
11871    * }).value();
11872    * // => logs each value from left to right and returns the array
11873    *
11874    * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
11875    *   console.log(n, key);
11876    * });
11877    * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
11878    */
11879   var forEach = createForEach(arrayEach, baseEach);
11880
11881   /**
11882    * Creates an object composed of keys generated from the results of running
11883    * each element of `collection` through `iteratee`. The corresponding value
11884    * of each key is an array of the elements responsible for generating the key.
11885    * The `iteratee` is bound to `thisArg` and invoked with three arguments:
11886    * (value, index|key, collection).
11887    *
11888    * If a property name is provided for `iteratee` the created `_.property`
11889    * style callback returns the property value of the given element.
11890    *
11891    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11892    * style callback returns `true` for elements that have a matching property
11893    * value, else `false`.
11894    *
11895    * If an object is provided for `iteratee` the created `_.matches` style
11896    * callback returns `true` for elements that have the properties of the given
11897    * object, else `false`.
11898    *
11899    * @static
11900    * @memberOf _
11901    * @category Collection
11902    * @param {Array|Object|string} collection The collection to iterate over.
11903    * @param {Function|Object|string} [iteratee=_.identity] The function invoked
11904    *  per iteration.
11905    * @param {*} [thisArg] The `this` binding of `iteratee`.
11906    * @returns {Object} Returns the composed aggregate object.
11907    * @example
11908    *
11909    * _.groupBy([4.2, 6.1, 6.4], function(n) {
11910    *   return Math.floor(n);
11911    * });
11912    * // => { '4': [4.2], '6': [6.1, 6.4] }
11913    *
11914    * _.groupBy([4.2, 6.1, 6.4], function(n) {
11915    *   return this.floor(n);
11916    * }, Math);
11917    * // => { '4': [4.2], '6': [6.1, 6.4] }
11918    *
11919    * // using the `_.property` callback shorthand
11920    * _.groupBy(['one', 'two', 'three'], 'length');
11921    * // => { '3': ['one', 'two'], '5': ['three'] }
11922    */
11923   var groupBy = createAggregator(function(result, value, key) {
11924     if (hasOwnProperty.call(result, key)) {
11925       result[key].push(value);
11926     } else {
11927       result[key] = [value];
11928     }
11929   });
11930
11931   /**
11932    * Checks if `value` is in `collection` using
11933    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11934    * for equality comparisons. If `fromIndex` is negative, it is used as the offset
11935    * from the end of `collection`.
11936    *
11937    * @static
11938    * @memberOf _
11939    * @alias contains, include
11940    * @category Collection
11941    * @param {Array|Object|string} collection The collection to search.
11942    * @param {*} target The value to search for.
11943    * @param {number} [fromIndex=0] The index to search from.
11944    * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
11945    * @returns {boolean} Returns `true` if a matching element is found, else `false`.
11946    * @example
11947    *
11948    * _.includes([1, 2, 3], 1);
11949    * // => true
11950    *
11951    * _.includes([1, 2, 3], 1, 2);
11952    * // => false
11953    *
11954    * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
11955    * // => true
11956    *
11957    * _.includes('pebbles', 'eb');
11958    * // => true
11959    */
11960   function includes(collection, target, fromIndex, guard) {
11961     var length = collection ? getLength(collection) : 0;
11962     if (!isLength(length)) {
11963       collection = values(collection);
11964       length = collection.length;
11965     }
11966     if (!length) {
11967       return false;
11968     }
11969     if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {
11970       fromIndex = 0;
11971     } else {
11972       fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
11973     }
11974     return (typeof collection == 'string' || !isArray(collection) && isString(collection))
11975       ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
11976       : (getIndexOf(collection, target, fromIndex) > -1);
11977   }
11978
11979   /**
11980    * Creates an array of values by running each element in `collection` through
11981    * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
11982    * arguments: (value, index|key, collection).
11983    *
11984    * If a property name is provided for `iteratee` the created `_.property`
11985    * style callback returns the property value of the given element.
11986    *
11987    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11988    * style callback returns `true` for elements that have a matching property
11989    * value, else `false`.
11990    *
11991    * If an object is provided for `iteratee` the created `_.matches` style
11992    * callback returns `true` for elements that have the properties of the given
11993    * object, else `false`.
11994    *
11995    * Many lodash methods are guarded to work as iteratees for methods like
11996    * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
11997    *
11998    * The guarded methods are:
11999    * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
12000    * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
12001    * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
12002    * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
12003    * `sum`, `uniq`, and `words`
12004    *
12005    * @static
12006    * @memberOf _
12007    * @alias collect
12008    * @category Collection
12009    * @param {Array|Object|string} collection The collection to iterate over.
12010    * @param {Function|Object|string} [iteratee=_.identity] The function invoked
12011    *  per iteration.
12012    * @param {*} [thisArg] The `this` binding of `iteratee`.
12013    * @returns {Array} Returns the new mapped array.
12014    * @example
12015    *
12016    * function timesThree(n) {
12017    *   return n * 3;
12018    * }
12019    *
12020    * _.map([1, 2], timesThree);
12021    * // => [3, 6]
12022    *
12023    * _.map({ 'a': 1, 'b': 2 }, timesThree);
12024    * // => [3, 6] (iteration order is not guaranteed)
12025    *
12026    * var users = [
12027    *   { 'user': 'barney' },
12028    *   { 'user': 'fred' }
12029    * ];
12030    *
12031    * // using the `_.property` callback shorthand
12032    * _.map(users, 'user');
12033    * // => ['barney', 'fred']
12034    */
12035   function map(collection, iteratee, thisArg) {
12036     var func = isArray(collection) ? arrayMap : baseMap;
12037     iteratee = getCallback(iteratee, thisArg, 3);
12038     return func(collection, iteratee);
12039   }
12040
12041   /**
12042    * Gets the property value of `path` from all elements in `collection`.
12043    *
12044    * @static
12045    * @memberOf _
12046    * @category Collection
12047    * @param {Array|Object|string} collection The collection to iterate over.
12048    * @param {Array|string} path The path of the property to pluck.
12049    * @returns {Array} Returns the property values.
12050    * @example
12051    *
12052    * var users = [
12053    *   { 'user': 'barney', 'age': 36 },
12054    *   { 'user': 'fred',   'age': 40 }
12055    * ];
12056    *
12057    * _.pluck(users, 'user');
12058    * // => ['barney', 'fred']
12059    *
12060    * var userIndex = _.indexBy(users, 'user');
12061    * _.pluck(userIndex, 'age');
12062    * // => [36, 40] (iteration order is not guaranteed)
12063    */
12064   function pluck(collection, path) {
12065     return map(collection, property(path));
12066   }
12067
12068   /**
12069    * Reduces `collection` to a value which is the accumulated result of running
12070    * each element in `collection` through `iteratee`, where each successive
12071    * invocation is supplied the return value of the previous. If `accumulator`
12072    * is not provided the first element of `collection` is used as the initial
12073    * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
12074    * (accumulator, value, index|key, collection).
12075    *
12076    * Many lodash methods are guarded to work as iteratees for methods like
12077    * `_.reduce`, `_.reduceRight`, and `_.transform`.
12078    *
12079    * The guarded methods are:
12080    * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
12081    *
12082    * @static
12083    * @memberOf _
12084    * @alias foldl, inject
12085    * @category Collection
12086    * @param {Array|Object|string} collection The collection to iterate over.
12087    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
12088    * @param {*} [accumulator] The initial value.
12089    * @param {*} [thisArg] The `this` binding of `iteratee`.
12090    * @returns {*} Returns the accumulated value.
12091    * @example
12092    *
12093    * _.reduce([1, 2], function(total, n) {
12094    *   return total + n;
12095    * });
12096    * // => 3
12097    *
12098    * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
12099    *   result[key] = n * 3;
12100    *   return result;
12101    * }, {});
12102    * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
12103    */
12104   var reduce = createReduce(arrayReduce, baseEach);
12105
12106   /**
12107    * The opposite of `_.filter`; this method returns the elements of `collection`
12108    * that `predicate` does **not** return truthy for.
12109    *
12110    * @static
12111    * @memberOf _
12112    * @category Collection
12113    * @param {Array|Object|string} collection The collection to iterate over.
12114    * @param {Function|Object|string} [predicate=_.identity] The function invoked
12115    *  per iteration.
12116    * @param {*} [thisArg] The `this` binding of `predicate`.
12117    * @returns {Array} Returns the new filtered array.
12118    * @example
12119    *
12120    * _.reject([1, 2, 3, 4], function(n) {
12121    *   return n % 2 == 0;
12122    * });
12123    * // => [1, 3]
12124    *
12125    * var users = [
12126    *   { 'user': 'barney', 'age': 36, 'active': false },
12127    *   { 'user': 'fred',   'age': 40, 'active': true }
12128    * ];
12129    *
12130    * // using the `_.matches` callback shorthand
12131    * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
12132    * // => ['barney']
12133    *
12134    * // using the `_.matchesProperty` callback shorthand
12135    * _.pluck(_.reject(users, 'active', false), 'user');
12136    * // => ['fred']
12137    *
12138    * // using the `_.property` callback shorthand
12139    * _.pluck(_.reject(users, 'active'), 'user');
12140    * // => ['barney']
12141    */
12142   function reject(collection, predicate, thisArg) {
12143     var func = isArray(collection) ? arrayFilter : baseFilter;
12144     predicate = getCallback(predicate, thisArg, 3);
12145     return func(collection, function(value, index, collection) {
12146       return !predicate(value, index, collection);
12147     });
12148   }
12149
12150   /**
12151    * Checks if `predicate` returns truthy for **any** element of `collection`.
12152    * The function returns as soon as it finds a passing value and does not iterate
12153    * over the entire collection. The predicate is bound to `thisArg` and invoked
12154    * with three arguments: (value, index|key, collection).
12155    *
12156    * If a property name is provided for `predicate` the created `_.property`
12157    * style callback returns the property value of the given element.
12158    *
12159    * If a value is also provided for `thisArg` the created `_.matchesProperty`
12160    * style callback returns `true` for elements that have a matching property
12161    * value, else `false`.
12162    *
12163    * If an object is provided for `predicate` the created `_.matches` style
12164    * callback returns `true` for elements that have the properties of the given
12165    * object, else `false`.
12166    *
12167    * @static
12168    * @memberOf _
12169    * @alias any
12170    * @category Collection
12171    * @param {Array|Object|string} collection The collection to iterate over.
12172    * @param {Function|Object|string} [predicate=_.identity] The function invoked
12173    *  per iteration.
12174    * @param {*} [thisArg] The `this` binding of `predicate`.
12175    * @returns {boolean} Returns `true` if any element passes the predicate check,
12176    *  else `false`.
12177    * @example
12178    *
12179    * _.some([null, 0, 'yes', false], Boolean);
12180    * // => true
12181    *
12182    * var users = [
12183    *   { 'user': 'barney', 'active': true },
12184    *   { 'user': 'fred',   'active': false }
12185    * ];
12186    *
12187    * // using the `_.matches` callback shorthand
12188    * _.some(users, { 'user': 'barney', 'active': false });
12189    * // => false
12190    *
12191    * // using the `_.matchesProperty` callback shorthand
12192    * _.some(users, 'active', false);
12193    * // => true
12194    *
12195    * // using the `_.property` callback shorthand
12196    * _.some(users, 'active');
12197    * // => true
12198    */
12199   function some(collection, predicate, thisArg) {
12200     var func = isArray(collection) ? arraySome : baseSome;
12201     if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
12202       predicate = null;
12203     }
12204     if (typeof predicate != 'function' || thisArg !== undefined) {
12205       predicate = getCallback(predicate, thisArg, 3);
12206     }
12207     return func(collection, predicate);
12208   }
12209
12210   /*------------------------------------------------------------------------*/
12211
12212   /**
12213    * Gets the number of milliseconds that have elapsed since the Unix epoch
12214    * (1 January 1970 00:00:00 UTC).
12215    *
12216    * @static
12217    * @memberOf _
12218    * @category Date
12219    * @example
12220    *
12221    * _.defer(function(stamp) {
12222    *   console.log(_.now() - stamp);
12223    * }, _.now());
12224    * // => logs the number of milliseconds it took for the deferred function to be invoked
12225    */
12226   var now = nativeNow || function() {
12227     return new Date().getTime();
12228   };
12229
12230   /*------------------------------------------------------------------------*/
12231
12232   /**
12233    * Creates a function that invokes `func` with the `this` binding of `thisArg`
12234    * and prepends any additional `_.bind` arguments to those provided to the
12235    * bound function.
12236    *
12237    * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
12238    * may be used as a placeholder for partially applied arguments.
12239    *
12240    * **Note:** Unlike native `Function#bind` this method does not set the "length"
12241    * property of bound functions.
12242    *
12243    * @static
12244    * @memberOf _
12245    * @category Function
12246    * @param {Function} func The function to bind.
12247    * @param {*} thisArg The `this` binding of `func`.
12248    * @param {...*} [partials] The arguments to be partially applied.
12249    * @returns {Function} Returns the new bound function.
12250    * @example
12251    *
12252    * var greet = function(greeting, punctuation) {
12253    *   return greeting + ' ' + this.user + punctuation;
12254    * };
12255    *
12256    * var object = { 'user': 'fred' };
12257    *
12258    * var bound = _.bind(greet, object, 'hi');
12259    * bound('!');
12260    * // => 'hi fred!'
12261    *
12262    * // using placeholders
12263    * var bound = _.bind(greet, object, _, '!');
12264    * bound('hi');
12265    * // => 'hi fred!'
12266    */
12267   var bind = restParam(function(func, thisArg, partials) {
12268     var bitmask = BIND_FLAG;
12269     if (partials.length) {
12270       var holders = replaceHolders(partials, bind.placeholder);
12271       bitmask |= PARTIAL_FLAG;
12272     }
12273     return createWrapper(func, bitmask, thisArg, partials, holders);
12274   });
12275
12276   /**
12277    * Creates a debounced function that delays invoking `func` until after `wait`
12278    * milliseconds have elapsed since the last time the debounced function was
12279    * invoked. The debounced function comes with a `cancel` method to cancel
12280    * delayed invocations. Provide an options object to indicate that `func`
12281    * should be invoked on the leading and/or trailing edge of the `wait` timeout.
12282    * Subsequent calls to the debounced function return the result of the last
12283    * `func` invocation.
12284    *
12285    * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
12286    * on the trailing edge of the timeout only if the the debounced function is
12287    * invoked more than once during the `wait` timeout.
12288    *
12289    * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
12290    * for details over the differences between `_.debounce` and `_.throttle`.
12291    *
12292    * @static
12293    * @memberOf _
12294    * @category Function
12295    * @param {Function} func The function to debounce.
12296    * @param {number} [wait=0] The number of milliseconds to delay.
12297    * @param {Object} [options] The options object.
12298    * @param {boolean} [options.leading=false] Specify invoking on the leading
12299    *  edge of the timeout.
12300    * @param {number} [options.maxWait] The maximum time `func` is allowed to be
12301    *  delayed before it is invoked.
12302    * @param {boolean} [options.trailing=true] Specify invoking on the trailing
12303    *  edge of the timeout.
12304    * @returns {Function} Returns the new debounced function.
12305    * @example
12306    *
12307    * // avoid costly calculations while the window size is in flux
12308    * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
12309    *
12310    * // invoke `sendMail` when the click event is fired, debouncing subsequent calls
12311    * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
12312    *   'leading': true,
12313    *   'trailing': false
12314    * }));
12315    *
12316    * // ensure `batchLog` is invoked once after 1 second of debounced calls
12317    * var source = new EventSource('/stream');
12318    * jQuery(source).on('message', _.debounce(batchLog, 250, {
12319    *   'maxWait': 1000
12320    * }));
12321    *
12322    * // cancel a debounced call
12323    * var todoChanges = _.debounce(batchLog, 1000);
12324    * Object.observe(models.todo, todoChanges);
12325    *
12326    * Object.observe(models, function(changes) {
12327    *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
12328    *     todoChanges.cancel();
12329    *   }
12330    * }, ['delete']);
12331    *
12332    * // ...at some point `models.todo` is changed
12333    * models.todo.completed = true;
12334    *
12335    * // ...before 1 second has passed `models.todo` is deleted
12336    * // which cancels the debounced `todoChanges` call
12337    * delete models.todo;
12338    */
12339   function debounce(func, wait, options) {
12340     var args,
12341         maxTimeoutId,
12342         result,
12343         stamp,
12344         thisArg,
12345         timeoutId,
12346         trailingCall,
12347         lastCalled = 0,
12348         maxWait = false,
12349         trailing = true;
12350
12351     if (typeof func != 'function') {
12352       throw new TypeError(FUNC_ERROR_TEXT);
12353     }
12354     wait = wait < 0 ? 0 : (+wait || 0);
12355     if (options === true) {
12356       var leading = true;
12357       trailing = false;
12358     } else if (isObject(options)) {
12359       leading = options.leading;
12360       maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
12361       trailing = 'trailing' in options ? options.trailing : trailing;
12362     }
12363
12364     function cancel() {
12365       if (timeoutId) {
12366         clearTimeout(timeoutId);
12367       }
12368       if (maxTimeoutId) {
12369         clearTimeout(maxTimeoutId);
12370       }
12371       maxTimeoutId = timeoutId = trailingCall = undefined;
12372     }
12373
12374     function delayed() {
12375       var remaining = wait - (now() - stamp);
12376       if (remaining <= 0 || remaining > wait) {
12377         if (maxTimeoutId) {
12378           clearTimeout(maxTimeoutId);
12379         }
12380         var isCalled = trailingCall;
12381         maxTimeoutId = timeoutId = trailingCall = undefined;
12382         if (isCalled) {
12383           lastCalled = now();
12384           result = func.apply(thisArg, args);
12385           if (!timeoutId && !maxTimeoutId) {
12386             args = thisArg = null;
12387           }
12388         }
12389       } else {
12390         timeoutId = setTimeout(delayed, remaining);
12391       }
12392     }
12393
12394     function maxDelayed() {
12395       if (timeoutId) {
12396         clearTimeout(timeoutId);
12397       }
12398       maxTimeoutId = timeoutId = trailingCall = undefined;
12399       if (trailing || (maxWait !== wait)) {
12400         lastCalled = now();
12401         result = func.apply(thisArg, args);
12402         if (!timeoutId && !maxTimeoutId) {
12403           args = thisArg = null;
12404         }
12405       }
12406     }
12407
12408     function debounced() {
12409       args = arguments;
12410       stamp = now();
12411       thisArg = this;
12412       trailingCall = trailing && (timeoutId || !leading);
12413
12414       if (maxWait === false) {
12415         var leadingCall = leading && !timeoutId;
12416       } else {
12417         if (!maxTimeoutId && !leading) {
12418           lastCalled = stamp;
12419         }
12420         var remaining = maxWait - (stamp - lastCalled),
12421             isCalled = remaining <= 0 || remaining > maxWait;
12422
12423         if (isCalled) {
12424           if (maxTimeoutId) {
12425             maxTimeoutId = clearTimeout(maxTimeoutId);
12426           }
12427           lastCalled = stamp;
12428           result = func.apply(thisArg, args);
12429         }
12430         else if (!maxTimeoutId) {
12431           maxTimeoutId = setTimeout(maxDelayed, remaining);
12432         }
12433       }
12434       if (isCalled && timeoutId) {
12435         timeoutId = clearTimeout(timeoutId);
12436       }
12437       else if (!timeoutId && wait !== maxWait) {
12438         timeoutId = setTimeout(delayed, wait);
12439       }
12440       if (leadingCall) {
12441         isCalled = true;
12442         result = func.apply(thisArg, args);
12443       }
12444       if (isCalled && !timeoutId && !maxTimeoutId) {
12445         args = thisArg = null;
12446       }
12447       return result;
12448     }
12449     debounced.cancel = cancel;
12450     return debounced;
12451   }
12452
12453   /**
12454    * Creates a function that invokes `func` with the `this` binding of the
12455    * created function and arguments from `start` and beyond provided as an array.
12456    *
12457    * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).
12458    *
12459    * @static
12460    * @memberOf _
12461    * @category Function
12462    * @param {Function} func The function to apply a rest parameter to.
12463    * @param {number} [start=func.length-1] The start position of the rest parameter.
12464    * @returns {Function} Returns the new function.
12465    * @example
12466    *
12467    * var say = _.restParam(function(what, names) {
12468    *   return what + ' ' + _.initial(names).join(', ') +
12469    *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
12470    * });
12471    *
12472    * say('hello', 'fred', 'barney', 'pebbles');
12473    * // => 'hello fred, barney, & pebbles'
12474    */
12475   function restParam(func, start) {
12476     if (typeof func != 'function') {
12477       throw new TypeError(FUNC_ERROR_TEXT);
12478     }
12479     start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
12480     return function() {
12481       var args = arguments,
12482           index = -1,
12483           length = nativeMax(args.length - start, 0),
12484           rest = Array(length);
12485
12486       while (++index < length) {
12487         rest[index] = args[start + index];
12488       }
12489       switch (start) {
12490         case 0: return func.call(this, rest);
12491         case 1: return func.call(this, args[0], rest);
12492         case 2: return func.call(this, args[0], args[1], rest);
12493       }
12494       var otherArgs = Array(start + 1);
12495       index = -1;
12496       while (++index < start) {
12497         otherArgs[index] = args[index];
12498       }
12499       otherArgs[start] = rest;
12500       return func.apply(this, otherArgs);
12501     };
12502   }
12503
12504   /**
12505    * Creates a throttled function that only invokes `func` at most once per
12506    * every `wait` milliseconds. The throttled function comes with a `cancel`
12507    * method to cancel delayed invocations. Provide an options object to indicate
12508    * that `func` should be invoked on the leading and/or trailing edge of the
12509    * `wait` timeout. Subsequent calls to the throttled function return the
12510    * result of the last `func` call.
12511    *
12512    * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
12513    * on the trailing edge of the timeout only if the the throttled function is
12514    * invoked more than once during the `wait` timeout.
12515    *
12516    * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
12517    * for details over the differences between `_.throttle` and `_.debounce`.
12518    *
12519    * @static
12520    * @memberOf _
12521    * @category Function
12522    * @param {Function} func The function to throttle.
12523    * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
12524    * @param {Object} [options] The options object.
12525    * @param {boolean} [options.leading=true] Specify invoking on the leading
12526    *  edge of the timeout.
12527    * @param {boolean} [options.trailing=true] Specify invoking on the trailing
12528    *  edge of the timeout.
12529    * @returns {Function} Returns the new throttled function.
12530    * @example
12531    *
12532    * // avoid excessively updating the position while scrolling
12533    * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
12534    *
12535    * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
12536    * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
12537    *   'trailing': false
12538    * }));
12539    *
12540    * // cancel a trailing throttled call
12541    * jQuery(window).on('popstate', throttled.cancel);
12542    */
12543   function throttle(func, wait, options) {
12544     var leading = true,
12545         trailing = true;
12546
12547     if (typeof func != 'function') {
12548       throw new TypeError(FUNC_ERROR_TEXT);
12549     }
12550     if (options === false) {
12551       leading = false;
12552     } else if (isObject(options)) {
12553       leading = 'leading' in options ? !!options.leading : leading;
12554       trailing = 'trailing' in options ? !!options.trailing : trailing;
12555     }
12556     debounceOptions.leading = leading;
12557     debounceOptions.maxWait = +wait;
12558     debounceOptions.trailing = trailing;
12559     return debounce(func, wait, debounceOptions);
12560   }
12561
12562   /*------------------------------------------------------------------------*/
12563
12564   /**
12565    * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
12566    * otherwise they are assigned by reference. If `customizer` is provided it is
12567    * invoked to produce the cloned values. If `customizer` returns `undefined`
12568    * cloning is handled by the method instead. The `customizer` is bound to
12569    * `thisArg` and invoked with two argument; (value [, index|key, object]).
12570    *
12571    * **Note:** This method is loosely based on the
12572    * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
12573    * The enumerable properties of `arguments` objects and objects created by
12574    * constructors other than `Object` are cloned to plain `Object` objects. An
12575    * empty object is returned for uncloneable values such as functions, DOM nodes,
12576    * Maps, Sets, and WeakMaps.
12577    *
12578    * @static
12579    * @memberOf _
12580    * @category Lang
12581    * @param {*} value The value to clone.
12582    * @param {boolean} [isDeep] Specify a deep clone.
12583    * @param {Function} [customizer] The function to customize cloning values.
12584    * @param {*} [thisArg] The `this` binding of `customizer`.
12585    * @returns {*} Returns the cloned value.
12586    * @example
12587    *
12588    * var users = [
12589    *   { 'user': 'barney' },
12590    *   { 'user': 'fred' }
12591    * ];
12592    *
12593    * var shallow = _.clone(users);
12594    * shallow[0] === users[0];
12595    * // => true
12596    *
12597    * var deep = _.clone(users, true);
12598    * deep[0] === users[0];
12599    * // => false
12600    *
12601    * // using a customizer callback
12602    * var el = _.clone(document.body, function(value) {
12603    *   if (_.isElement(value)) {
12604    *     return value.cloneNode(false);
12605    *   }
12606    * });
12607    *
12608    * el === document.body
12609    * // => false
12610    * el.nodeName
12611    * // => BODY
12612    * el.childNodes.length;
12613    * // => 0
12614    */
12615   function clone(value, isDeep, customizer, thisArg) {
12616     if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
12617       isDeep = false;
12618     }
12619     else if (typeof isDeep == 'function') {
12620       thisArg = customizer;
12621       customizer = isDeep;
12622       isDeep = false;
12623     }
12624     return typeof customizer == 'function'
12625       ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))
12626       : baseClone(value, isDeep);
12627   }
12628
12629   /**
12630    * Creates a deep clone of `value`. If `customizer` is provided it is invoked
12631    * to produce the cloned values. If `customizer` returns `undefined` cloning
12632    * is handled by the method instead. The `customizer` is bound to `thisArg`
12633    * and invoked with two argument; (value [, index|key, object]).
12634    *
12635    * **Note:** This method is loosely based on the
12636    * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
12637    * The enumerable properties of `arguments` objects and objects created by
12638    * constructors other than `Object` are cloned to plain `Object` objects. An
12639    * empty object is returned for uncloneable values such as functions, DOM nodes,
12640    * Maps, Sets, and WeakMaps.
12641    *
12642    * @static
12643    * @memberOf _
12644    * @category Lang
12645    * @param {*} value The value to deep clone.
12646    * @param {Function} [customizer] The function to customize cloning values.
12647    * @param {*} [thisArg] The `this` binding of `customizer`.
12648    * @returns {*} Returns the deep cloned value.
12649    * @example
12650    *
12651    * var users = [
12652    *   { 'user': 'barney' },
12653    *   { 'user': 'fred' }
12654    * ];
12655    *
12656    * var deep = _.cloneDeep(users);
12657    * deep[0] === users[0];
12658    * // => false
12659    *
12660    * // using a customizer callback
12661    * var el = _.cloneDeep(document.body, function(value) {
12662    *   if (_.isElement(value)) {
12663    *     return value.cloneNode(true);
12664    *   }
12665    * });
12666    *
12667    * el === document.body
12668    * // => false
12669    * el.nodeName
12670    * // => BODY
12671    * el.childNodes.length;
12672    * // => 20
12673    */
12674   function cloneDeep(value, customizer, thisArg) {
12675     return typeof customizer == 'function'
12676       ? baseClone(value, true, bindCallback(customizer, thisArg, 1))
12677       : baseClone(value, true);
12678   }
12679
12680   /**
12681    * Checks if `value` is classified as an `arguments` object.
12682    *
12683    * @static
12684    * @memberOf _
12685    * @category Lang
12686    * @param {*} value The value to check.
12687    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12688    * @example
12689    *
12690    * _.isArguments(function() { return arguments; }());
12691    * // => true
12692    *
12693    * _.isArguments([1, 2, 3]);
12694    * // => false
12695    */
12696   function isArguments(value) {
12697     return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
12698   }
12699   // Fallback for environments without a `toStringTag` for `arguments` objects.
12700   if (!support.argsTag) {
12701     isArguments = function(value) {
12702       return isObjectLike(value) && isArrayLike(value) &&
12703         hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
12704     };
12705   }
12706
12707   /**
12708    * Checks if `value` is classified as an `Array` object.
12709    *
12710    * @static
12711    * @memberOf _
12712    * @category Lang
12713    * @param {*} value The value to check.
12714    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12715    * @example
12716    *
12717    * _.isArray([1, 2, 3]);
12718    * // => true
12719    *
12720    * _.isArray(function() { return arguments; }());
12721    * // => false
12722    */
12723   var isArray = nativeIsArray || function(value) {
12724     return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
12725   };
12726
12727   /**
12728    * Checks if `value` is empty. A value is considered empty unless it is an
12729    * `arguments` object, array, string, or jQuery-like collection with a length
12730    * greater than `0` or an object with own enumerable properties.
12731    *
12732    * @static
12733    * @memberOf _
12734    * @category Lang
12735    * @param {Array|Object|string} value The value to inspect.
12736    * @returns {boolean} Returns `true` if `value` is empty, else `false`.
12737    * @example
12738    *
12739    * _.isEmpty(null);
12740    * // => true
12741    *
12742    * _.isEmpty(true);
12743    * // => true
12744    *
12745    * _.isEmpty(1);
12746    * // => true
12747    *
12748    * _.isEmpty([1, 2, 3]);
12749    * // => false
12750    *
12751    * _.isEmpty({ 'a': 1 });
12752    * // => false
12753    */
12754   function isEmpty(value) {
12755     if (value == null) {
12756       return true;
12757     }
12758     if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||
12759         (isObjectLike(value) && isFunction(value.splice)))) {
12760       return !value.length;
12761     }
12762     return !keys(value).length;
12763   }
12764
12765   /**
12766    * Performs a deep comparison between two values to determine if they are
12767    * equivalent. If `customizer` is provided it is invoked to compare values.
12768    * If `customizer` returns `undefined` comparisons are handled by the method
12769    * instead. The `customizer` is bound to `thisArg` and invoked with three
12770    * arguments: (value, other [, index|key]).
12771    *
12772    * **Note:** This method supports comparing arrays, booleans, `Date` objects,
12773    * numbers, `Object` objects, regexes, and strings. Objects are compared by
12774    * their own, not inherited, enumerable properties. Functions and DOM nodes
12775    * are **not** supported. Provide a customizer function to extend support
12776    * for comparing other values.
12777    *
12778    * @static
12779    * @memberOf _
12780    * @alias eq
12781    * @category Lang
12782    * @param {*} value The value to compare.
12783    * @param {*} other The other value to compare.
12784    * @param {Function} [customizer] The function to customize value comparisons.
12785    * @param {*} [thisArg] The `this` binding of `customizer`.
12786    * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
12787    * @example
12788    *
12789    * var object = { 'user': 'fred' };
12790    * var other = { 'user': 'fred' };
12791    *
12792    * object == other;
12793    * // => false
12794    *
12795    * _.isEqual(object, other);
12796    * // => true
12797    *
12798    * // using a customizer callback
12799    * var array = ['hello', 'goodbye'];
12800    * var other = ['hi', 'goodbye'];
12801    *
12802    * _.isEqual(array, other, function(value, other) {
12803    *   if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
12804    *     return true;
12805    *   }
12806    * });
12807    * // => true
12808    */
12809   function isEqual(value, other, customizer, thisArg) {
12810     customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;
12811     var result = customizer ? customizer(value, other) : undefined;
12812     return  result === undefined ? baseIsEqual(value, other, customizer) : !!result;
12813   }
12814
12815   /**
12816    * Checks if `value` is classified as a `Function` object.
12817    *
12818    * @static
12819    * @memberOf _
12820    * @category Lang
12821    * @param {*} value The value to check.
12822    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12823    * @example
12824    *
12825    * _.isFunction(_);
12826    * // => true
12827    *
12828    * _.isFunction(/abc/);
12829    * // => false
12830    */
12831   var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
12832     // The use of `Object#toString` avoids issues with the `typeof` operator
12833     // in older versions of Chrome and Safari which return 'function' for regexes
12834     // and Safari 8 equivalents which return 'object' for typed array constructors.
12835     return objToString.call(value) == funcTag;
12836   };
12837
12838   /**
12839    * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
12840    * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
12841    *
12842    * @static
12843    * @memberOf _
12844    * @category Lang
12845    * @param {*} value The value to check.
12846    * @returns {boolean} Returns `true` if `value` is an object, else `false`.
12847    * @example
12848    *
12849    * _.isObject({});
12850    * // => true
12851    *
12852    * _.isObject([1, 2, 3]);
12853    * // => true
12854    *
12855    * _.isObject(1);
12856    * // => false
12857    */
12858   function isObject(value) {
12859     // Avoid a V8 JIT bug in Chrome 19-20.
12860     // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
12861     var type = typeof value;
12862     return !!value && (type == 'object' || type == 'function');
12863   }
12864
12865   /**
12866    * Checks if `value` is a native function.
12867    *
12868    * @static
12869    * @memberOf _
12870    * @category Lang
12871    * @param {*} value The value to check.
12872    * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
12873    * @example
12874    *
12875    * _.isNative(Array.prototype.push);
12876    * // => true
12877    *
12878    * _.isNative(_);
12879    * // => false
12880    */
12881   function isNative(value) {
12882     if (value == null) {
12883       return false;
12884     }
12885     if (objToString.call(value) == funcTag) {
12886       return reIsNative.test(fnToString.call(value));
12887     }
12888     return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
12889   }
12890
12891   /**
12892    * Checks if `value` is a plain object, that is, an object created by the
12893    * `Object` constructor or one with a `[[Prototype]]` of `null`.
12894    *
12895    * **Note:** This method assumes objects created by the `Object` constructor
12896    * have no inherited enumerable properties.
12897    *
12898    * @static
12899    * @memberOf _
12900    * @category Lang
12901    * @param {*} value The value to check.
12902    * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
12903    * @example
12904    *
12905    * function Foo() {
12906    *   this.a = 1;
12907    * }
12908    *
12909    * _.isPlainObject(new Foo);
12910    * // => false
12911    *
12912    * _.isPlainObject([1, 2, 3]);
12913    * // => false
12914    *
12915    * _.isPlainObject({ 'x': 0, 'y': 0 });
12916    * // => true
12917    *
12918    * _.isPlainObject(Object.create(null));
12919    * // => true
12920    */
12921   var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
12922     if (!(value && objToString.call(value) == objectTag) || (!lodash.support.argsTag && isArguments(value))) {
12923       return false;
12924     }
12925     var valueOf = getNative(value, 'valueOf'),
12926         objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
12927
12928     return objProto
12929       ? (value == objProto || getPrototypeOf(value) == objProto)
12930       : shimIsPlainObject(value);
12931   };
12932
12933   /**
12934    * Checks if `value` is classified as a `String` primitive or object.
12935    *
12936    * @static
12937    * @memberOf _
12938    * @category Lang
12939    * @param {*} value The value to check.
12940    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12941    * @example
12942    *
12943    * _.isString('abc');
12944    * // => true
12945    *
12946    * _.isString(1);
12947    * // => false
12948    */
12949   function isString(value) {
12950     return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);
12951   }
12952
12953   /**
12954    * Checks if `value` is classified as a typed array.
12955    *
12956    * @static
12957    * @memberOf _
12958    * @category Lang
12959    * @param {*} value The value to check.
12960    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12961    * @example
12962    *
12963    * _.isTypedArray(new Uint8Array);
12964    * // => true
12965    *
12966    * _.isTypedArray([]);
12967    * // => false
12968    */
12969   function isTypedArray(value) {
12970     return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
12971   }
12972
12973   /**
12974    * Converts `value` to a plain object flattening inherited enumerable
12975    * properties of `value` to own properties of the plain object.
12976    *
12977    * @static
12978    * @memberOf _
12979    * @category Lang
12980    * @param {*} value The value to convert.
12981    * @returns {Object} Returns the converted plain object.
12982    * @example
12983    *
12984    * function Foo() {
12985    *   this.b = 2;
12986    * }
12987    *
12988    * Foo.prototype.c = 3;
12989    *
12990    * _.assign({ 'a': 1 }, new Foo);
12991    * // => { 'a': 1, 'b': 2 }
12992    *
12993    * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
12994    * // => { 'a': 1, 'b': 2, 'c': 3 }
12995    */
12996   function toPlainObject(value) {
12997     return baseCopy(value, keysIn(value));
12998   }
12999
13000   /*------------------------------------------------------------------------*/
13001
13002   /**
13003    * Assigns own enumerable properties of source object(s) to the destination
13004    * object. Subsequent sources overwrite property assignments of previous sources.
13005    * If `customizer` is provided it is invoked to produce the assigned values.
13006    * The `customizer` is bound to `thisArg` and invoked with five arguments:
13007    * (objectValue, sourceValue, key, object, source).
13008    *
13009    * **Note:** This method mutates `object` and is based on
13010    * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
13011    *
13012    * @static
13013    * @memberOf _
13014    * @alias extend
13015    * @category Object
13016    * @param {Object} object The destination object.
13017    * @param {...Object} [sources] The source objects.
13018    * @param {Function} [customizer] The function to customize assigned values.
13019    * @param {*} [thisArg] The `this` binding of `customizer`.
13020    * @returns {Object} Returns `object`.
13021    * @example
13022    *
13023    * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
13024    * // => { 'user': 'fred', 'age': 40 }
13025    *
13026    * // using a customizer callback
13027    * var defaults = _.partialRight(_.assign, function(value, other) {
13028    *   return _.isUndefined(value) ? other : value;
13029    * });
13030    *
13031    * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
13032    * // => { 'user': 'barney', 'age': 36 }
13033    */
13034   var assign = createAssigner(function(object, source, customizer) {
13035     return customizer
13036       ? assignWith(object, source, customizer)
13037       : baseAssign(object, source);
13038   });
13039
13040   /**
13041    * Iterates over own enumerable properties of an object invoking `iteratee`
13042    * for each property. The `iteratee` is bound to `thisArg` and invoked with
13043    * three arguments: (value, key, object). Iteratee functions may exit iteration
13044    * early by explicitly returning `false`.
13045    *
13046    * @static
13047    * @memberOf _
13048    * @category Object
13049    * @param {Object} object The object to iterate over.
13050    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
13051    * @param {*} [thisArg] The `this` binding of `iteratee`.
13052    * @returns {Object} Returns `object`.
13053    * @example
13054    *
13055    * function Foo() {
13056    *   this.a = 1;
13057    *   this.b = 2;
13058    * }
13059    *
13060    * Foo.prototype.c = 3;
13061    *
13062    * _.forOwn(new Foo, function(value, key) {
13063    *   console.log(key);
13064    * });
13065    * // => logs 'a' and 'b' (iteration order is not guaranteed)
13066    */
13067   var forOwn = createForOwn(baseForOwn);
13068
13069   /**
13070    * Creates an array of the own enumerable property names of `object`.
13071    *
13072    * **Note:** Non-object values are coerced to objects. See the
13073    * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
13074    * for more details.
13075    *
13076    * @static
13077    * @memberOf _
13078    * @category Object
13079    * @param {Object} object The object to query.
13080    * @returns {Array} Returns the array of property names.
13081    * @example
13082    *
13083    * function Foo() {
13084    *   this.a = 1;
13085    *   this.b = 2;
13086    * }
13087    *
13088    * Foo.prototype.c = 3;
13089    *
13090    * _.keys(new Foo);
13091    * // => ['a', 'b'] (iteration order is not guaranteed)
13092    *
13093    * _.keys('hi');
13094    * // => ['0', '1']
13095    */
13096   var keys = !nativeKeys ? shimKeys : function(object) {
13097     var Ctor = object == null ? null : object.constructor;
13098     if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
13099         (typeof object == 'function' ? lodash.support.enumPrototypes : isArrayLike(object))) {
13100       return shimKeys(object);
13101     }
13102     return isObject(object) ? nativeKeys(object) : [];
13103   };
13104
13105   /**
13106    * Creates an array of the own and inherited enumerable property names of `object`.
13107    *
13108    * **Note:** Non-object values are coerced to objects.
13109    *
13110    * @static
13111    * @memberOf _
13112    * @category Object
13113    * @param {Object} object The object to query.
13114    * @returns {Array} Returns the array of property names.
13115    * @example
13116    *
13117    * function Foo() {
13118    *   this.a = 1;
13119    *   this.b = 2;
13120    * }
13121    *
13122    * Foo.prototype.c = 3;
13123    *
13124    * _.keysIn(new Foo);
13125    * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
13126    */
13127   function keysIn(object) {
13128     if (object == null) {
13129       return [];
13130     }
13131     if (!isObject(object)) {
13132       object = Object(object);
13133     }
13134     var length = object.length,
13135         support = lodash.support;
13136
13137     length = (length && isLength(length) &&
13138       (isArray(object) || isArguments(object) || isString(object)) && length) || 0;
13139
13140     var Ctor = object.constructor,
13141         index = -1,
13142         proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,
13143         isProto = proto === object,
13144         result = Array(length),
13145         skipIndexes = length > 0,
13146         skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),
13147         skipProto = support.enumPrototypes && isFunction(object);
13148
13149     while (++index < length) {
13150       result[index] = (index + '');
13151     }
13152     // lodash skips the `constructor` property when it infers it is iterating
13153     // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`
13154     // attribute of an existing property and the `constructor` property of a
13155     // prototype defaults to non-enumerable.
13156     for (var key in object) {
13157       if (!(skipProto && key == 'prototype') &&
13158           !(skipErrorProps && (key == 'message' || key == 'name')) &&
13159           !(skipIndexes && isIndex(key, length)) &&
13160           !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
13161         result.push(key);
13162       }
13163     }
13164     if (support.nonEnumShadows && object !== objectProto) {
13165       var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),
13166           nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];
13167
13168       if (tag == objectTag) {
13169         proto = objectProto;
13170       }
13171       length = shadowProps.length;
13172       while (length--) {
13173         key = shadowProps[length];
13174         var nonEnum = nonEnums[key];
13175         if (!(isProto && nonEnum) &&
13176             (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {
13177           result.push(key);
13178         }
13179       }
13180     }
13181     return result;
13182   }
13183
13184   /**
13185    * Recursively merges own enumerable properties of the source object(s), that
13186    * don't resolve to `undefined` into the destination object. Subsequent sources
13187    * overwrite property assignments of previous sources. If `customizer` is
13188    * provided it is invoked to produce the merged values of the destination and
13189    * source properties. If `customizer` returns `undefined` merging is handled
13190    * by the method instead. The `customizer` is bound to `thisArg` and invoked
13191    * with five arguments: (objectValue, sourceValue, key, object, source).
13192    *
13193    * @static
13194    * @memberOf _
13195    * @category Object
13196    * @param {Object} object The destination object.
13197    * @param {...Object} [sources] The source objects.
13198    * @param {Function} [customizer] The function to customize assigned values.
13199    * @param {*} [thisArg] The `this` binding of `customizer`.
13200    * @returns {Object} Returns `object`.
13201    * @example
13202    *
13203    * var users = {
13204    *   'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
13205    * };
13206    *
13207    * var ages = {
13208    *   'data': [{ 'age': 36 }, { 'age': 40 }]
13209    * };
13210    *
13211    * _.merge(users, ages);
13212    * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
13213    *
13214    * // using a customizer callback
13215    * var object = {
13216    *   'fruits': ['apple'],
13217    *   'vegetables': ['beet']
13218    * };
13219    *
13220    * var other = {
13221    *   'fruits': ['banana'],
13222    *   'vegetables': ['carrot']
13223    * };
13224    *
13225    * _.merge(object, other, function(a, b) {
13226    *   if (_.isArray(a)) {
13227    *     return a.concat(b);
13228    *   }
13229    * });
13230    * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
13231    */
13232   var merge = createAssigner(baseMerge);
13233
13234   /**
13235    * The opposite of `_.pick`; this method creates an object composed of the
13236    * own and inherited enumerable properties of `object` that are not omitted.
13237    *
13238    * @static
13239    * @memberOf _
13240    * @category Object
13241    * @param {Object} object The source object.
13242    * @param {Function|...(string|string[])} [predicate] The function invoked per
13243    *  iteration or property names to omit, specified as individual property
13244    *  names or arrays of property names.
13245    * @param {*} [thisArg] The `this` binding of `predicate`.
13246    * @returns {Object} Returns the new object.
13247    * @example
13248    *
13249    * var object = { 'user': 'fred', 'age': 40 };
13250    *
13251    * _.omit(object, 'age');
13252    * // => { 'user': 'fred' }
13253    *
13254    * _.omit(object, _.isNumber);
13255    * // => { 'user': 'fred' }
13256    */
13257   var omit = restParam(function(object, props) {
13258     if (object == null) {
13259       return {};
13260     }
13261     if (typeof props[0] != 'function') {
13262       var props = arrayMap(baseFlatten(props), String);
13263       return pickByArray(object, baseDifference(keysIn(object), props));
13264     }
13265     var predicate = bindCallback(props[0], props[1], 3);
13266     return pickByCallback(object, function(value, key, object) {
13267       return !predicate(value, key, object);
13268     });
13269   });
13270
13271   /**
13272    * Creates a two dimensional array of the key-value pairs for `object`,
13273    * e.g. `[[key1, value1], [key2, value2]]`.
13274    *
13275    * @static
13276    * @memberOf _
13277    * @category Object
13278    * @param {Object} object The object to query.
13279    * @returns {Array} Returns the new array of key-value pairs.
13280    * @example
13281    *
13282    * _.pairs({ 'barney': 36, 'fred': 40 });
13283    * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
13284    */
13285   function pairs(object) {
13286     object = toObject(object);
13287
13288     var index = -1,
13289         props = keys(object),
13290         length = props.length,
13291         result = Array(length);
13292
13293     while (++index < length) {
13294       var key = props[index];
13295       result[index] = [key, object[key]];
13296     }
13297     return result;
13298   }
13299
13300   /**
13301    * Creates an object composed of the picked `object` properties. Property
13302    * names may be specified as individual arguments or as arrays of property
13303    * names. If `predicate` is provided it is invoked for each property of `object`
13304    * picking the properties `predicate` returns truthy for. The predicate is
13305    * bound to `thisArg` and invoked with three arguments: (value, key, object).
13306    *
13307    * @static
13308    * @memberOf _
13309    * @category Object
13310    * @param {Object} object The source object.
13311    * @param {Function|...(string|string[])} [predicate] The function invoked per
13312    *  iteration or property names to pick, specified as individual property
13313    *  names or arrays of property names.
13314    * @param {*} [thisArg] The `this` binding of `predicate`.
13315    * @returns {Object} Returns the new object.
13316    * @example
13317    *
13318    * var object = { 'user': 'fred', 'age': 40 };
13319    *
13320    * _.pick(object, 'user');
13321    * // => { 'user': 'fred' }
13322    *
13323    * _.pick(object, _.isString);
13324    * // => { 'user': 'fred' }
13325    */
13326   var pick = restParam(function(object, props) {
13327     if (object == null) {
13328       return {};
13329     }
13330     return typeof props[0] == 'function'
13331       ? pickByCallback(object, bindCallback(props[0], props[1], 3))
13332       : pickByArray(object, baseFlatten(props));
13333   });
13334
13335   /**
13336    * Creates an array of the own enumerable property values of `object`.
13337    *
13338    * **Note:** Non-object values are coerced to objects.
13339    *
13340    * @static
13341    * @memberOf _
13342    * @category Object
13343    * @param {Object} object The object to query.
13344    * @returns {Array} Returns the array of property values.
13345    * @example
13346    *
13347    * function Foo() {
13348    *   this.a = 1;
13349    *   this.b = 2;
13350    * }
13351    *
13352    * Foo.prototype.c = 3;
13353    *
13354    * _.values(new Foo);
13355    * // => [1, 2] (iteration order is not guaranteed)
13356    *
13357    * _.values('hi');
13358    * // => ['h', 'i']
13359    */
13360   function values(object) {
13361     return baseValues(object, keys(object));
13362   }
13363
13364   /*------------------------------------------------------------------------*/
13365
13366   /**
13367    * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
13368    * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
13369    *
13370    * @static
13371    * @memberOf _
13372    * @category String
13373    * @param {string} [string=''] The string to escape.
13374    * @returns {string} Returns the escaped string.
13375    * @example
13376    *
13377    * _.escapeRegExp('[lodash](https://lodash.com/)');
13378    * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
13379    */
13380   function escapeRegExp(string) {
13381     string = baseToString(string);
13382     return (string && reHasRegExpChars.test(string))
13383       ? string.replace(reRegExpChars, '\\$&')
13384       : string;
13385   }
13386
13387   /*------------------------------------------------------------------------*/
13388
13389   /**
13390    * Creates a function that invokes `func` with the `this` binding of `thisArg`
13391    * and arguments of the created function. If `func` is a property name the
13392    * created callback returns the property value for a given element. If `func`
13393    * is an object the created callback returns `true` for elements that contain
13394    * the equivalent object properties, otherwise it returns `false`.
13395    *
13396    * @static
13397    * @memberOf _
13398    * @alias iteratee
13399    * @category Utility
13400    * @param {*} [func=_.identity] The value to convert to a callback.
13401    * @param {*} [thisArg] The `this` binding of `func`.
13402    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
13403    * @returns {Function} Returns the callback.
13404    * @example
13405    *
13406    * var users = [
13407    *   { 'user': 'barney', 'age': 36 },
13408    *   { 'user': 'fred',   'age': 40 }
13409    * ];
13410    *
13411    * // wrap to create custom callback shorthands
13412    * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {
13413    *   var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
13414    *   if (!match) {
13415    *     return callback(func, thisArg);
13416    *   }
13417    *   return function(object) {
13418    *     return match[2] == 'gt'
13419    *       ? object[match[1]] > match[3]
13420    *       : object[match[1]] < match[3];
13421    *   };
13422    * });
13423    *
13424    * _.filter(users, 'age__gt36');
13425    * // => [{ 'user': 'fred', 'age': 40 }]
13426    */
13427   function callback(func, thisArg, guard) {
13428     if (guard && isIterateeCall(func, thisArg, guard)) {
13429       thisArg = null;
13430     }
13431     return isObjectLike(func)
13432       ? matches(func)
13433       : baseCallback(func, thisArg);
13434   }
13435
13436   /**
13437    * Creates a function that returns `value`.
13438    *
13439    * @static
13440    * @memberOf _
13441    * @category Utility
13442    * @param {*} value The value to return from the new function.
13443    * @returns {Function} Returns the new function.
13444    * @example
13445    *
13446    * var object = { 'user': 'fred' };
13447    * var getter = _.constant(object);
13448    *
13449    * getter() === object;
13450    * // => true
13451    */
13452   function constant(value) {
13453     return function() {
13454       return value;
13455     };
13456   }
13457
13458   /**
13459    * This method returns the first argument provided to it.
13460    *
13461    * @static
13462    * @memberOf _
13463    * @category Utility
13464    * @param {*} value Any value.
13465    * @returns {*} Returns `value`.
13466    * @example
13467    *
13468    * var object = { 'user': 'fred' };
13469    *
13470    * _.identity(object) === object;
13471    * // => true
13472    */
13473   function identity(value) {
13474     return value;
13475   }
13476
13477   /**
13478    * Creates a function that performs a deep comparison between a given object
13479    * and `source`, returning `true` if the given object has equivalent property
13480    * values, else `false`.
13481    *
13482    * **Note:** This method supports comparing arrays, booleans, `Date` objects,
13483    * numbers, `Object` objects, regexes, and strings. Objects are compared by
13484    * their own, not inherited, enumerable properties. For comparing a single
13485    * own or inherited property value see `_.matchesProperty`.
13486    *
13487    * @static
13488    * @memberOf _
13489    * @category Utility
13490    * @param {Object} source The object of property values to match.
13491    * @returns {Function} Returns the new function.
13492    * @example
13493    *
13494    * var users = [
13495    *   { 'user': 'barney', 'age': 36, 'active': true },
13496    *   { 'user': 'fred',   'age': 40, 'active': false }
13497    * ];
13498    *
13499    * _.filter(users, _.matches({ 'age': 40, 'active': false }));
13500    * // => [{ 'user': 'fred', 'age': 40, 'active': false }]
13501    */
13502   function matches(source) {
13503     return baseMatches(baseClone(source, true));
13504   }
13505
13506   /**
13507    * Adds all own enumerable function properties of a source object to the
13508    * destination object. If `object` is a function then methods are added to
13509    * its prototype as well.
13510    *
13511    * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
13512    * avoid conflicts caused by modifying the original.
13513    *
13514    * @static
13515    * @memberOf _
13516    * @category Utility
13517    * @param {Function|Object} [object=lodash] The destination object.
13518    * @param {Object} source The object of functions to add.
13519    * @param {Object} [options] The options object.
13520    * @param {boolean} [options.chain=true] Specify whether the functions added
13521    *  are chainable.
13522    * @returns {Function|Object} Returns `object`.
13523    * @example
13524    *
13525    * function vowels(string) {
13526    *   return _.filter(string, function(v) {
13527    *     return /[aeiou]/i.test(v);
13528    *   });
13529    * }
13530    *
13531    * _.mixin({ 'vowels': vowels });
13532    * _.vowels('fred');
13533    * // => ['e']
13534    *
13535    * _('fred').vowels().value();
13536    * // => ['e']
13537    *
13538    * _.mixin({ 'vowels': vowels }, { 'chain': false });
13539    * _('fred').vowels();
13540    * // => ['e']
13541    */
13542   function mixin(object, source, options) {
13543     if (options == null) {
13544       var isObj = isObject(source),
13545           props = isObj ? keys(source) : null,
13546           methodNames = (props && props.length) ? baseFunctions(source, props) : null;
13547
13548       if (!(methodNames ? methodNames.length : isObj)) {
13549         methodNames = false;
13550         options = source;
13551         source = object;
13552         object = this;
13553       }
13554     }
13555     if (!methodNames) {
13556       methodNames = baseFunctions(source, keys(source));
13557     }
13558     var chain = true,
13559         index = -1,
13560         isFunc = isFunction(object),
13561         length = methodNames.length;
13562
13563     if (options === false) {
13564       chain = false;
13565     } else if (isObject(options) && 'chain' in options) {
13566       chain = options.chain;
13567     }
13568     while (++index < length) {
13569       var methodName = methodNames[index],
13570           func = source[methodName];
13571
13572       object[methodName] = func;
13573       if (isFunc) {
13574         object.prototype[methodName] = (function(func) {
13575           return function() {
13576             var chainAll = this.__chain__;
13577             if (chain || chainAll) {
13578               var result = object(this.__wrapped__),
13579                   actions = result.__actions__ = arrayCopy(this.__actions__);
13580
13581               actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
13582               result.__chain__ = chainAll;
13583               return result;
13584             }
13585             var args = [this.value()];
13586             push.apply(args, arguments);
13587             return func.apply(object, args);
13588           };
13589         }(func));
13590       }
13591     }
13592     return object;
13593   }
13594
13595   /**
13596    * A no-operation function that returns `undefined` regardless of the
13597    * arguments it receives.
13598    *
13599    * @static
13600    * @memberOf _
13601    * @category Utility
13602    * @example
13603    *
13604    * var object = { 'user': 'fred' };
13605    *
13606    * _.noop(object) === undefined;
13607    * // => true
13608    */
13609   function noop() {
13610     // No operation performed.
13611   }
13612
13613   /**
13614    * Creates a function that returns the property value at `path` on a
13615    * given object.
13616    *
13617    * @static
13618    * @memberOf _
13619    * @category Utility
13620    * @param {Array|string} path The path of the property to get.
13621    * @returns {Function} Returns the new function.
13622    * @example
13623    *
13624    * var objects = [
13625    *   { 'a': { 'b': { 'c': 2 } } },
13626    *   { 'a': { 'b': { 'c': 1 } } }
13627    * ];
13628    *
13629    * _.map(objects, _.property('a.b.c'));
13630    * // => [2, 1]
13631    *
13632    * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
13633    * // => [1, 2]
13634    */
13635   function property(path) {
13636     return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
13637   }
13638
13639   /*------------------------------------------------------------------------*/
13640
13641   // Ensure wrappers are instances of `baseLodash`.
13642   lodash.prototype = baseLodash.prototype;
13643
13644   LodashWrapper.prototype = baseCreate(baseLodash.prototype);
13645   LodashWrapper.prototype.constructor = LodashWrapper;
13646
13647   LazyWrapper.prototype = baseCreate(baseLodash.prototype);
13648   LazyWrapper.prototype.constructor = LazyWrapper;
13649
13650   // Add functions to the `Set` cache.
13651   SetCache.prototype.push = cachePush;
13652
13653   // Add functions that return wrapped values when chaining.
13654   lodash.assign = assign;
13655   lodash.bind = bind;
13656   lodash.callback = callback;
13657   lodash.chain = chain;
13658   lodash.chunk = chunk;
13659   lodash.compact = compact;
13660   lodash.constant = constant;
13661   lodash.debounce = debounce;
13662   lodash.difference = difference;
13663   lodash.filter = filter;
13664   lodash.flatten = flatten;
13665   lodash.forEach = forEach;
13666   lodash.forOwn = forOwn;
13667   lodash.groupBy = groupBy;
13668   lodash.intersection = intersection;
13669   lodash.keys = keys;
13670   lodash.keysIn = keysIn;
13671   lodash.map = map;
13672   lodash.matches = matches;
13673   lodash.merge = merge;
13674   lodash.mixin = mixin;
13675   lodash.omit = omit;
13676   lodash.pairs = pairs;
13677   lodash.pick = pick;
13678   lodash.pluck = pluck;
13679   lodash.property = property;
13680   lodash.reject = reject;
13681   lodash.restParam = restParam;
13682   lodash.tap = tap;
13683   lodash.throttle = throttle;
13684   lodash.thru = thru;
13685   lodash.toPlainObject = toPlainObject;
13686   lodash.union = union;
13687   lodash.uniq = uniq;
13688   lodash.values = values;
13689   lodash.without = without;
13690
13691   // Add aliases.
13692   lodash.collect = map;
13693   lodash.each = forEach;
13694   lodash.extend = assign;
13695   lodash.iteratee = callback;
13696   lodash.select = filter;
13697   lodash.unique = uniq;
13698
13699   // Add functions to `lodash.prototype`.
13700   mixin(lodash, lodash);
13701
13702   /*------------------------------------------------------------------------*/
13703
13704   // Add functions that return unwrapped values when chaining.
13705   lodash.clone = clone;
13706   lodash.cloneDeep = cloneDeep;
13707   lodash.escapeRegExp = escapeRegExp;
13708   lodash.every = every;
13709   lodash.find = find;
13710   lodash.first = first;
13711   lodash.identity = identity;
13712   lodash.includes = includes;
13713   lodash.indexOf = indexOf;
13714   lodash.isArguments = isArguments;
13715   lodash.isArray = isArray;
13716   lodash.isEmpty = isEmpty;
13717   lodash.isEqual = isEqual;
13718   lodash.isFunction = isFunction;
13719   lodash.isNative = isNative;
13720   lodash.isObject = isObject;
13721   lodash.isPlainObject = isPlainObject;
13722   lodash.isString = isString;
13723   lodash.isTypedArray = isTypedArray;
13724   lodash.last = last;
13725   lodash.noop = noop;
13726   lodash.now = now;
13727   lodash.reduce = reduce;
13728   lodash.some = some;
13729
13730   // Add aliases.
13731   lodash.all = every;
13732   lodash.any = some;
13733   lodash.contains = includes;
13734   lodash.eq = isEqual;
13735   lodash.detect = find;
13736   lodash.foldl = reduce;
13737   lodash.head = first;
13738   lodash.include = includes;
13739   lodash.inject = reduce;
13740
13741   mixin(lodash, (function() {
13742     var source = {};
13743     baseForOwn(lodash, function(func, methodName) {
13744       if (!lodash.prototype[methodName]) {
13745         source[methodName] = func;
13746       }
13747     });
13748     return source;
13749   }()), false);
13750
13751   /*------------------------------------------------------------------------*/
13752
13753   lodash.prototype.sample = function(n) {
13754     if (!this.__chain__ && n == null) {
13755       return sample(this.value());
13756     }
13757     return this.thru(function(value) {
13758       return sample(value, n);
13759     });
13760   };
13761
13762   /*------------------------------------------------------------------------*/
13763
13764   /**
13765    * The semantic version number.
13766    *
13767    * @static
13768    * @memberOf _
13769    * @type string
13770    */
13771   lodash.VERSION = VERSION;
13772
13773   // Assign default placeholders.
13774   bind.placeholder = lodash;
13775
13776   // Add `LazyWrapper` methods that accept an `iteratee` value.
13777   arrayEach(['dropWhile', 'filter', 'map', 'takeWhile'], function(methodName, type) {
13778     var isFilter = type != LAZY_MAP_FLAG,
13779         isDropWhile = type == LAZY_DROP_WHILE_FLAG;
13780
13781     LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
13782       var filtered = this.__filtered__,
13783           result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(),
13784           iteratees = result.__iteratees__ || (result.__iteratees__ = []);
13785
13786       iteratees.push({
13787         'done': false,
13788         'count': 0,
13789         'index': 0,
13790         'iteratee': getCallback(iteratee, thisArg, 1),
13791         'limit': -1,
13792         'type': type
13793       });
13794
13795       result.__filtered__ = filtered || isFilter;
13796       return result;
13797     };
13798   });
13799
13800   // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
13801   arrayEach(['drop', 'take'], function(methodName, index) {
13802     var whileName = methodName + 'While';
13803
13804     LazyWrapper.prototype[methodName] = function(n) {
13805       var filtered = this.__filtered__,
13806           result = (filtered && !index) ? this.dropWhile() : this.clone();
13807
13808       n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
13809       if (filtered) {
13810         if (index) {
13811           result.__takeCount__ = nativeMin(result.__takeCount__, n);
13812         } else {
13813           last(result.__iteratees__).limit = n;
13814         }
13815       } else {
13816         var views = result.__views__ || (result.__views__ = []);
13817         views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
13818       }
13819       return result;
13820     };
13821
13822     LazyWrapper.prototype[methodName + 'Right'] = function(n) {
13823       return this.reverse()[methodName](n).reverse();
13824     };
13825
13826     LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
13827       return this.reverse()[whileName](predicate, thisArg).reverse();
13828     };
13829   });
13830
13831   // Add `LazyWrapper` methods for `_.first` and `_.last`.
13832   arrayEach(['first', 'last'], function(methodName, index) {
13833     var takeName = 'take' + (index ? 'Right' : '');
13834
13835     LazyWrapper.prototype[methodName] = function() {
13836       return this[takeName](1).value()[0];
13837     };
13838   });
13839
13840   // Add `LazyWrapper` methods for `_.initial` and `_.rest`.
13841   arrayEach(['initial', 'rest'], function(methodName, index) {
13842     var dropName = 'drop' + (index ? '' : 'Right');
13843
13844     LazyWrapper.prototype[methodName] = function() {
13845       return this[dropName](1);
13846     };
13847   });
13848
13849   // Add `LazyWrapper` methods for `_.pluck` and `_.where`.
13850   arrayEach(['pluck', 'where'], function(methodName, index) {
13851     var operationName = index ? 'filter' : 'map',
13852         createCallback = index ? baseMatches : property;
13853
13854     LazyWrapper.prototype[methodName] = function(value) {
13855       return this[operationName](createCallback(value));
13856     };
13857   });
13858
13859   LazyWrapper.prototype.compact = function() {
13860     return this.filter(identity);
13861   };
13862
13863   LazyWrapper.prototype.reject = function(predicate, thisArg) {
13864     predicate = getCallback(predicate, thisArg, 1);
13865     return this.filter(function(value) {
13866       return !predicate(value);
13867     });
13868   };
13869
13870   LazyWrapper.prototype.slice = function(start, end) {
13871     start = start == null ? 0 : (+start || 0);
13872
13873     var result = this;
13874     if (start < 0) {
13875       result = this.takeRight(-start);
13876     } else if (start) {
13877       result = this.drop(start);
13878     }
13879     if (end !== undefined) {
13880       end = (+end || 0);
13881       result = end < 0 ? result.dropRight(-end) : result.take(end - start);
13882     }
13883     return result;
13884   };
13885
13886   LazyWrapper.prototype.toArray = function() {
13887     return this.drop(0);
13888   };
13889
13890   // Add `LazyWrapper` methods to `lodash.prototype`.
13891   baseForOwn(LazyWrapper.prototype, function(func, methodName) {
13892     var lodashFunc = lodash[methodName];
13893     if (!lodashFunc) {
13894       return;
13895     }
13896     var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName),
13897         retUnwrapped = /^(?:first|last)$/.test(methodName);
13898
13899     lodash.prototype[methodName] = function() {
13900       var args = arguments,
13901           chainAll = this.__chain__,
13902           value = this.__wrapped__,
13903           isHybrid = !!this.__actions__.length,
13904           isLazy = value instanceof LazyWrapper,
13905           iteratee = args[0],
13906           useLazy = isLazy || isArray(value);
13907
13908       if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
13909         // avoid lazy use if the iteratee has a "length" value other than `1`
13910         isLazy = useLazy = false;
13911       }
13912       var onlyLazy = isLazy && !isHybrid;
13913       if (retUnwrapped && !chainAll) {
13914         return onlyLazy
13915           ? func.call(value)
13916           : lodashFunc.call(lodash, this.value());
13917       }
13918       var interceptor = function(value) {
13919         var otherArgs = [value];
13920         push.apply(otherArgs, args);
13921         return lodashFunc.apply(lodash, otherArgs);
13922       };
13923       if (useLazy) {
13924         var wrapper = onlyLazy ? value : new LazyWrapper(this),
13925             result = func.apply(wrapper, args);
13926
13927         if (!retUnwrapped && (isHybrid || result.__actions__)) {
13928           var actions = result.__actions__ || (result.__actions__ = []);
13929           actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
13930         }
13931         return new LodashWrapper(result, chainAll);
13932       }
13933       return this.thru(interceptor);
13934     };
13935   });
13936
13937   // Add `Array` and `String` methods to `lodash.prototype`.
13938   arrayEach(['concat', 'join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
13939     var protoFunc = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
13940         chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
13941         fixObjects = !support.spliceObjects && /^(?:pop|shift|splice)$/.test(methodName),
13942         retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
13943
13944     // Avoid array-like object bugs with `Array#shift` and `Array#splice` in
13945     // IE < 9, Firefox < 10, and RingoJS.
13946     var func = !fixObjects ? protoFunc : function() {
13947       var result = protoFunc.apply(this, arguments);
13948       if (this.length === 0) {
13949         delete this[0];
13950       }
13951       return result;
13952     };
13953
13954     lodash.prototype[methodName] = function() {
13955       var args = arguments;
13956       if (retUnwrapped && !this.__chain__) {
13957         return func.apply(this.value(), args);
13958       }
13959       return this[chainName](function(value) {
13960         return func.apply(value, args);
13961       });
13962     };
13963   });
13964
13965   // Map minified function names to their real names.
13966   baseForOwn(LazyWrapper.prototype, function(func, methodName) {
13967     var lodashFunc = lodash[methodName];
13968     if (lodashFunc) {
13969       var key = lodashFunc.name,
13970           names = realNames[key] || (realNames[key] = []);
13971
13972       names.push({ 'name': methodName, 'func': lodashFunc });
13973     }
13974   });
13975
13976   realNames[createHybridWrapper(null, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': null }];
13977
13978   // Add functions to the lazy wrapper.
13979   LazyWrapper.prototype.clone = lazyClone;
13980   LazyWrapper.prototype.reverse = lazyReverse;
13981   LazyWrapper.prototype.value = lazyValue;
13982
13983   // Add chaining functions to the `lodash` wrapper.
13984   lodash.prototype.chain = wrapperChain;
13985   lodash.prototype.commit = wrapperCommit;
13986   lodash.prototype.plant = wrapperPlant;
13987   lodash.prototype.reverse = wrapperReverse;
13988   lodash.prototype.toString = wrapperToString;
13989   lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
13990
13991   // Add function aliases to the `lodash` wrapper.
13992   lodash.prototype.collect = lodash.prototype.map;
13993   lodash.prototype.head = lodash.prototype.first;
13994   lodash.prototype.select = lodash.prototype.filter;
13995   lodash.prototype.tail = lodash.prototype.rest;
13996
13997   /*--------------------------------------------------------------------------*/
13998
13999   if (freeExports && freeModule) {
14000     // Export for Node.js or RingoJS.
14001     if (moduleExports) {
14002       (freeModule.exports = lodash)._ = lodash;
14003     }
14004   }
14005   else {
14006     // Export for a browser or Rhino.
14007     root._ = lodash;
14008   }
14009 }.call(this));
14010 (function(e){if("function"==typeof bootstrap)bootstrap("osmauth",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeOsmAuth=e}else"undefined"!=typeof window?window.osmAuth=e():global.osmAuth=e()})(function(){var define,ses,bootstrap,module,exports;
14011 return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
14012 'use strict';
14013
14014 var ohauth = require('ohauth'),
14015     xtend = require('xtend'),
14016     store = require('store');
14017
14018 // # osm-auth
14019 //
14020 // This code is only compatible with IE10+ because the [XDomainRequest](http://bit.ly/LfO7xo)
14021 // object, IE<10's idea of [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing),
14022 // does not support custom headers, which this uses everywhere.
14023 module.exports = function(o) {
14024
14025     var oauth = {};
14026
14027     // authenticated users will also have a request token secret, but it's
14028     // not used in transactions with the server
14029     oauth.authenticated = function() {
14030         return !!(token('oauth_token') && token('oauth_token_secret'));
14031     };
14032
14033     oauth.logout = function() {
14034         token('oauth_token', '');
14035         token('oauth_token_secret', '');
14036         token('oauth_request_token_secret', '');
14037         return oauth;
14038     };
14039
14040     // TODO: detect lack of click event
14041     oauth.authenticate = function(callback) {
14042         if (oauth.authenticated()) return callback();
14043
14044         oauth.logout();
14045
14046         // ## Getting a request token
14047         var params = timenonce(getAuth(o)),
14048             url = o.url + '/oauth/request_token',
14049             timer;
14050
14051         params.oauth_signature = ohauth.signature(
14052             o.oauth_secret, '',
14053             ohauth.baseString('POST', url, params));
14054
14055         if (!o.singlepage) {
14056             // Create a 600x550 popup window in the center of the screen
14057             var w = 600, h = 550,
14058                 settings = [
14059                     ['width', w], ['height', h],
14060                     ['left', screen.width / 2 - w / 2],
14061                     ['top', screen.height / 2 - h / 2]].map(function(x) {
14062                         return x.join('=');
14063                     }).join(','),
14064                 popup = window.open('about:blank', 'oauth_window', settings);
14065
14066
14067             timer = setInterval(function() {
14068                 if (popup.closed) {
14069                     o.done();
14070                     clearInterval(timer);
14071                     callback('not authenticated', null);
14072                 }
14073             }, 100);
14074         }
14075
14076         // Request a request token. When this is complete, the popup
14077         // window is redirected to OSM's authorization page.
14078         ohauth.xhr('POST', url, params, null, {}, reqTokenDone);
14079         o.loading();
14080
14081         function reqTokenDone(err, xhr) {
14082             o.done();
14083             if (err) {
14084                 if (timer) clearInterval(timer);
14085                 return callback(err);
14086             }
14087             var resp = ohauth.stringQs(xhr.response);
14088             token('oauth_request_token_secret', resp.oauth_token_secret);
14089             var authorize_url = o.url + '/oauth/authorize?' + ohauth.qsString({
14090                 oauth_token: resp.oauth_token,
14091                 oauth_callback: location.href.replace('index.html', '')
14092                     .replace(/#.*/, '') + o.landing
14093             });
14094
14095             if (o.singlepage) {
14096                 location.href = authorize_url;
14097             } else {
14098                 popup.location = authorize_url;
14099             }
14100         }
14101
14102         // Called by a function in a landing page, in the popup window. The
14103         // window closes itself.
14104         window.authComplete = function(token) {
14105             if (timer) clearInterval(timer);
14106             var oauth_token = ohauth.stringQs(token.split('?')[1]);
14107             get_access_token(oauth_token.oauth_token);
14108             delete window.authComplete;
14109         };
14110
14111         // ## Getting an request token
14112         //
14113         // At this point we have an `oauth_token`, brought in from a function
14114         // call on a landing page popup.
14115         function get_access_token(oauth_token) {
14116             var url = o.url + '/oauth/access_token',
14117                 params = timenonce(getAuth(o)),
14118                 request_token_secret = token('oauth_request_token_secret');
14119             params.oauth_token = oauth_token;
14120             params.oauth_signature = ohauth.signature(
14121                 o.oauth_secret,
14122                 request_token_secret,
14123                 ohauth.baseString('POST', url, params));
14124
14125             // ## Getting an access token
14126             //
14127             // The final token required for authentication. At this point
14128             // we have a `request token secret`
14129             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14130             o.loading();
14131         }
14132
14133         function accessTokenDone(err, xhr) {
14134             o.done();
14135             if (timer) clearInterval(timer);
14136             if (err) return callback(err);
14137             var access_token = ohauth.stringQs(xhr.response);
14138             token('oauth_token', access_token.oauth_token);
14139             token('oauth_token_secret', access_token.oauth_token_secret);
14140             callback(null, oauth);
14141         }
14142     };
14143
14144     oauth.bootstrapToken = function(oauth_token, callback) {
14145         // ## Getting an request token
14146         // At this point we have an `oauth_token`, brought in from a function
14147         // call on a landing page popup.
14148         function get_access_token(oauth_token) {
14149             var url = o.url + '/oauth/access_token',
14150                 params = timenonce(getAuth(o)),
14151                 request_token_secret = token('oauth_request_token_secret');
14152             params.oauth_token = oauth_token;
14153             params.oauth_signature = ohauth.signature(
14154                 o.oauth_secret,
14155                 request_token_secret,
14156                 ohauth.baseString('POST', url, params));
14157
14158             // ## Getting an access token
14159             // The final token required for authentication. At this point
14160             // we have a `request token secret`
14161             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14162             o.loading();
14163         }
14164
14165         function accessTokenDone(err, xhr) {
14166             o.done();
14167             if (err) return callback(err);
14168             var access_token = ohauth.stringQs(xhr.response);
14169             token('oauth_token', access_token.oauth_token);
14170             token('oauth_token_secret', access_token.oauth_token_secret);
14171             callback(null, oauth);
14172         }
14173
14174         get_access_token(oauth_token);
14175     };
14176
14177     // # xhr
14178     //
14179     // A single XMLHttpRequest wrapper that does authenticated calls if the
14180     // user has logged in.
14181     oauth.xhr = function(options, callback) {
14182         if (!oauth.authenticated()) {
14183             if (o.auto) return oauth.authenticate(run);
14184             else return callback('not authenticated', null);
14185         } else return run();
14186
14187         function run() {
14188             var params = timenonce(getAuth(o)),
14189                 url = o.url + options.path,
14190                 oauth_token_secret = token('oauth_token_secret');
14191
14192             // https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1
14193             if ((!options.options || !options.options.header ||
14194                 options.options.header['Content-Type'] === 'application/x-www-form-urlencoded') &&
14195                 options.content) {
14196                 params = xtend(params, ohauth.stringQs(options.content));
14197             }
14198
14199             params.oauth_token = token('oauth_token');
14200             params.oauth_signature = ohauth.signature(
14201                 o.oauth_secret,
14202                 oauth_token_secret,
14203                 ohauth.baseString(options.method, url, params));
14204
14205             ohauth.xhr(options.method,
14206                 url, params, options.content, options.options, done);
14207         }
14208
14209         function done(err, xhr) {
14210             if (err) return callback(err);
14211             else if (xhr.responseXML) return callback(err, xhr.responseXML);
14212             else return callback(err, xhr.response);
14213         }
14214     };
14215
14216     // pre-authorize this object, if we can just get a token and token_secret
14217     // from the start
14218     oauth.preauth = function(c) {
14219         if (!c) return;
14220         if (c.oauth_token) token('oauth_token', c.oauth_token);
14221         if (c.oauth_token_secret) token('oauth_token_secret', c.oauth_token_secret);
14222         return oauth;
14223     };
14224
14225     oauth.options = function(_) {
14226         if (!arguments.length) return o;
14227
14228         o = _;
14229
14230         o.url = o.url || 'http://www.openstreetmap.org';
14231         o.landing = o.landing || 'land.html';
14232
14233         o.singlepage = o.singlepage || false;
14234
14235         // Optional loading and loading-done functions for nice UI feedback.
14236         // by default, no-ops
14237         o.loading = o.loading || function() {};
14238         o.done = o.done || function() {};
14239
14240         return oauth.preauth(o);
14241     };
14242
14243     // 'stamp' an authentication object from `getAuth()`
14244     // with a [nonce](http://en.wikipedia.org/wiki/Cryptographic_nonce)
14245     // and timestamp
14246     function timenonce(o) {
14247         o.oauth_timestamp = ohauth.timestamp();
14248         o.oauth_nonce = ohauth.nonce();
14249         return o;
14250     }
14251
14252     // get/set tokens. These are prefixed with the base URL so that `osm-auth`
14253     // can be used with multiple APIs and the keys in `localStorage`
14254     // will not clash
14255     var token;
14256
14257     if (store.enabled) {
14258         token = function (x, y) {
14259             if (arguments.length === 1) return store.get(o.url + x);
14260             else if (arguments.length === 2) return store.set(o.url + x, y);
14261         };
14262     } else {
14263         var storage = {};
14264         token = function (x, y) {
14265             if (arguments.length === 1) return storage[o.url + x];
14266             else if (arguments.length === 2) return storage[o.url + x] = y;
14267         };
14268     }
14269
14270     // Get an authentication object. If you just add and remove properties
14271     // from a single object, you'll need to use `delete` to make sure that
14272     // it doesn't contain undesired properties for authentication
14273     function getAuth(o) {
14274         return {
14275             oauth_consumer_key: o.oauth_consumer_key,
14276             oauth_signature_method: "HMAC-SHA1"
14277         };
14278     }
14279
14280     // potentially pre-authorize
14281     oauth.options(o);
14282
14283     return oauth;
14284 };
14285
14286 },{"ohauth":2,"store":3,"xtend":4}],3:[function(require,module,exports){
14287 (function(global){;(function(win){
14288         var store = {},
14289                 doc = win.document,
14290                 localStorageName = 'localStorage',
14291                 storage
14292
14293         store.disabled = false
14294         store.set = function(key, value) {}
14295         store.get = function(key) {}
14296         store.remove = function(key) {}
14297         store.clear = function() {}
14298         store.transact = function(key, defaultVal, transactionFn) {
14299                 var val = store.get(key)
14300                 if (transactionFn == null) {
14301                         transactionFn = defaultVal
14302                         defaultVal = null
14303                 }
14304                 if (typeof val == 'undefined') { val = defaultVal || {} }
14305                 transactionFn(val)
14306                 store.set(key, val)
14307         }
14308         store.getAll = function() {}
14309         store.forEach = function() {}
14310
14311         store.serialize = function(value) {
14312                 return JSON.stringify(value)
14313         }
14314         store.deserialize = function(value) {
14315                 if (typeof value != 'string') { return undefined }
14316                 try { return JSON.parse(value) }
14317                 catch(e) { return value || undefined }
14318         }
14319
14320         // Functions to encapsulate questionable FireFox 3.6.13 behavior
14321         // when about.config::dom.storage.enabled === false
14322         // See https://github.com/marcuswestin/store.js/issues#issue/13
14323         function isLocalStorageNameSupported() {
14324                 try { return (localStorageName in win && win[localStorageName]) }
14325                 catch(err) { return false }
14326         }
14327
14328         if (isLocalStorageNameSupported()) {
14329                 storage = win[localStorageName]
14330                 store.set = function(key, val) {
14331                         if (val === undefined) { return store.remove(key) }
14332                         storage.setItem(key, store.serialize(val))
14333                         return val
14334                 }
14335                 store.get = function(key) { return store.deserialize(storage.getItem(key)) }
14336                 store.remove = function(key) { storage.removeItem(key) }
14337                 store.clear = function() { storage.clear() }
14338                 store.getAll = function() {
14339                         var ret = {}
14340                         store.forEach(function(key, val) {
14341                                 ret[key] = val
14342                         })
14343                         return ret
14344                 }
14345                 store.forEach = function(callback) {
14346                         for (var i=0; i<storage.length; i++) {
14347                                 var key = storage.key(i)
14348                                 callback(key, store.get(key))
14349                         }
14350                 }
14351         } else if (doc.documentElement.addBehavior) {
14352                 var storageOwner,
14353                         storageContainer
14354                 // Since #userData storage applies only to specific paths, we need to
14355                 // somehow link our data to a specific path.  We choose /favicon.ico
14356                 // as a pretty safe option, since all browsers already make a request to
14357                 // this URL anyway and being a 404 will not hurt us here.  We wrap an
14358                 // iframe pointing to the favicon in an ActiveXObject(htmlfile) object
14359                 // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)
14360                 // since the iframe access rules appear to allow direct access and
14361                 // manipulation of the document element, even for a 404 page.  This
14362                 // document can be used instead of the current document (which would
14363                 // have been limited to the current path) to perform #userData storage.
14364                 try {
14365                         storageContainer = new ActiveXObject('htmlfile')
14366                         storageContainer.open()
14367                         storageContainer.write('<s' + 'cript>document.w=window</s' + 'cript><iframe src="/favicon.ico"></iframe>')
14368                         storageContainer.close()
14369                         storageOwner = storageContainer.w.frames[0].document
14370                         storage = storageOwner.createElement('div')
14371                 } catch(e) {
14372                         // somehow ActiveXObject instantiation failed (perhaps some special
14373                         // security settings or otherwse), fall back to per-path storage
14374                         storage = doc.createElement('div')
14375                         storageOwner = doc.body
14376                 }
14377                 function withIEStorage(storeFunction) {
14378                         return function() {
14379                                 var args = Array.prototype.slice.call(arguments, 0)
14380                                 args.unshift(storage)
14381                                 // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
14382                                 // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
14383                                 storageOwner.appendChild(storage)
14384                                 storage.addBehavior('#default#userData')
14385                                 storage.load(localStorageName)
14386                                 var result = storeFunction.apply(store, args)
14387                                 storageOwner.removeChild(storage)
14388                                 return result
14389                         }
14390                 }
14391
14392                 // In IE7, keys may not contain special chars. See all of https://github.com/marcuswestin/store.js/issues/40
14393                 var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g")
14394                 function ieKeyFix(key) {
14395                         return key.replace(forbiddenCharsRegex, '___')
14396                 }
14397                 store.set = withIEStorage(function(storage, key, val) {
14398                         key = ieKeyFix(key)
14399                         if (val === undefined) { return store.remove(key) }
14400                         storage.setAttribute(key, store.serialize(val))
14401                         storage.save(localStorageName)
14402                         return val
14403                 })
14404                 store.get = withIEStorage(function(storage, key) {
14405                         key = ieKeyFix(key)
14406                         return store.deserialize(storage.getAttribute(key))
14407                 })
14408                 store.remove = withIEStorage(function(storage, key) {
14409                         key = ieKeyFix(key)
14410                         storage.removeAttribute(key)
14411                         storage.save(localStorageName)
14412                 })
14413                 store.clear = withIEStorage(function(storage) {
14414                         var attributes = storage.XMLDocument.documentElement.attributes
14415                         storage.load(localStorageName)
14416                         for (var i=0, attr; attr=attributes[i]; i++) {
14417                                 storage.removeAttribute(attr.name)
14418                         }
14419                         storage.save(localStorageName)
14420                 })
14421                 store.getAll = function(storage) {
14422                         var ret = {}
14423                         store.forEach(function(key, val) {
14424                                 ret[key] = val
14425                         })
14426                         return ret
14427                 }
14428                 store.forEach = withIEStorage(function(storage, callback) {
14429                         var attributes = storage.XMLDocument.documentElement.attributes
14430                         for (var i=0, attr; attr=attributes[i]; ++i) {
14431                                 callback(attr.name, store.deserialize(storage.getAttribute(attr.name)))
14432                         }
14433                 })
14434         }
14435
14436         try {
14437                 var testKey = '__storejs__'
14438                 store.set(testKey, testKey)
14439                 if (store.get(testKey) != testKey) { store.disabled = true }
14440                 store.remove(testKey)
14441         } catch(e) {
14442                 store.disabled = true
14443         }
14444         store.enabled = !store.disabled
14445
14446         if (typeof module != 'undefined' && module.exports) { module.exports = store }
14447         else if (typeof define === 'function' && define.amd) { define(store) }
14448         else { win.store = store }
14449
14450 })(this.window || global);
14451
14452 })(window)
14453 },{}],5:[function(require,module,exports){
14454 module.exports = hasKeys
14455
14456 function hasKeys(source) {
14457     return source !== null &&
14458         (typeof source === "object" ||
14459         typeof source === "function")
14460 }
14461
14462 },{}],4:[function(require,module,exports){
14463 var Keys = require("object-keys")
14464 var hasKeys = require("./has-keys")
14465
14466 module.exports = extend
14467
14468 function extend() {
14469     var target = {}
14470
14471     for (var i = 0; i < arguments.length; i++) {
14472         var source = arguments[i]
14473
14474         if (!hasKeys(source)) {
14475             continue
14476         }
14477
14478         var keys = Keys(source)
14479
14480         for (var j = 0; j < keys.length; j++) {
14481             var name = keys[j]
14482             target[name] = source[name]
14483         }
14484     }
14485
14486     return target
14487 }
14488
14489 },{"./has-keys":5,"object-keys":6}],7:[function(require,module,exports){
14490 (function(global){/**
14491  * jsHashes - A fast and independent hashing library pure JavaScript implemented (ES3 compliant) for both server and client side
14492  *
14493  * @class Hashes
14494  * @author Tomas Aparicio <tomas@rijndael-project.com>
14495  * @license New BSD (see LICENSE file)
14496  * @version 1.0.4
14497  *
14498  * Algorithms specification:
14499  *
14500  * MD5 <http://www.ietf.org/rfc/rfc1321.txt>
14501  * RIPEMD-160 <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
14502  * SHA1   <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14503  * SHA256 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14504  * SHA512 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14505  * HMAC <http://www.ietf.org/rfc/rfc2104.txt>
14506  *
14507  */
14508 (function(){
14509   var Hashes;
14510
14511   // private helper methods
14512   function utf8Encode(str) {
14513     var  x, y, output = '', i = -1, l;
14514
14515     if (str && str.length) {
14516       l = str.length;
14517       while ((i+=1) < l) {
14518         /* Decode utf-16 surrogate pairs */
14519         x = str.charCodeAt(i);
14520         y = i + 1 < l ? str.charCodeAt(i + 1) : 0;
14521         if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
14522             x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
14523             i += 1;
14524         }
14525         /* Encode output as utf-8 */
14526         if (x <= 0x7F) {
14527             output += String.fromCharCode(x);
14528         } else if (x <= 0x7FF) {
14529             output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
14530                         0x80 | ( x & 0x3F));
14531         } else if (x <= 0xFFFF) {
14532             output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
14533                         0x80 | ((x >>> 6 ) & 0x3F),
14534                         0x80 | ( x & 0x3F));
14535         } else if (x <= 0x1FFFFF) {
14536             output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
14537                         0x80 | ((x >>> 12) & 0x3F),
14538                         0x80 | ((x >>> 6 ) & 0x3F),
14539                         0x80 | ( x & 0x3F));
14540         }
14541       }
14542     }
14543     return output;
14544   }
14545
14546   function utf8Decode(str) {
14547     var i, ac, c1, c2, c3, arr = [], l;
14548     i = ac = c1 = c2 = c3 = 0;
14549
14550     if (str && str.length) {
14551       l = str.length;
14552       str += '';
14553
14554       while (i < l) {
14555           c1 = str.charCodeAt(i);
14556           ac += 1;
14557           if (c1 < 128) {
14558               arr[ac] = String.fromCharCode(c1);
14559               i+=1;
14560           } else if (c1 > 191 && c1 < 224) {
14561               c2 = str.charCodeAt(i + 1);
14562               arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
14563               i += 2;
14564           } else {
14565               c2 = str.charCodeAt(i + 1);
14566               c3 = str.charCodeAt(i + 2);
14567               arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
14568               i += 3;
14569           }
14570       }
14571     }
14572     return arr.join('');
14573   }
14574
14575   /**
14576    * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14577    * to work around bugs in some JS interpreters.
14578    */
14579   function safe_add(x, y) {
14580     var lsw = (x & 0xFFFF) + (y & 0xFFFF),
14581         msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14582     return (msw << 16) | (lsw & 0xFFFF);
14583   }
14584
14585   /**
14586    * Bitwise rotate a 32-bit number to the left.
14587    */
14588   function bit_rol(num, cnt) {
14589     return (num << cnt) | (num >>> (32 - cnt));
14590   }
14591
14592   /**
14593    * Convert a raw string to a hex string
14594    */
14595   function rstr2hex(input, hexcase) {
14596     var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',
14597         output = '', x, i = 0, l = input.length;
14598     for (; i < l; i+=1) {
14599       x = input.charCodeAt(i);
14600       output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);
14601     }
14602     return output;
14603   }
14604
14605   /**
14606    * Encode a string as utf-16
14607    */
14608   function str2rstr_utf16le(input) {
14609     var i, l = input.length, output = '';
14610     for (i = 0; i < l; i+=1) {
14611       output += String.fromCharCode( input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);
14612     }
14613     return output;
14614   }
14615
14616   function str2rstr_utf16be(input) {
14617     var i, l = input.length, output = '';
14618     for (i = 0; i < l; i+=1) {
14619       output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);
14620     }
14621     return output;
14622   }
14623
14624   /**
14625    * Convert an array of big-endian words to a string
14626    */
14627   function binb2rstr(input) {
14628     var i, l = input.length * 32, output = '';
14629     for (i = 0; i < l; i += 8) {
14630         output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);
14631     }
14632     return output;
14633   }
14634
14635   /**
14636    * Convert an array of little-endian words to a string
14637    */
14638   function binl2rstr(input) {
14639     var i, l = input.length * 32, output = '';
14640     for (i = 0;i < l; i += 8) {
14641       output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
14642     }
14643     return output;
14644   }
14645
14646   /**
14647    * Convert a raw string to an array of little-endian words
14648    * Characters >255 have their high-byte silently ignored.
14649    */
14650   function rstr2binl(input) {
14651     var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14652     for (i = 0; i < lo; i+=1) {
14653       output[i] = 0;
14654     }
14655     for (i = 0; i < l; i += 8) {
14656       output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
14657     }
14658     return output;
14659   }
14660
14661   /**
14662    * Convert a raw string to an array of big-endian words
14663    * Characters >255 have their high-byte silently ignored.
14664    */
14665    function rstr2binb(input) {
14666       var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14667       for (i = 0; i < lo; i+=1) {
14668             output[i] = 0;
14669         }
14670       for (i = 0; i < l; i += 8) {
14671             output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
14672         }
14673       return output;
14674    }
14675
14676   /**
14677    * Convert a raw string to an arbitrary string encoding
14678    */
14679   function rstr2any(input, encoding) {
14680     var divisor = encoding.length,
14681         remainders = Array(),
14682         i, q, x, ld, quotient, dividend, output, full_length;
14683
14684     /* Convert to an array of 16-bit big-endian values, forming the dividend */
14685     dividend = Array(Math.ceil(input.length / 2));
14686     ld = dividend.length;
14687     for (i = 0; i < ld; i+=1) {
14688       dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
14689     }
14690
14691     /**
14692      * Repeatedly perform a long division. The binary array forms the dividend,
14693      * the length of the encoding is the divisor. Once computed, the quotient
14694      * forms the dividend for the next step. We stop when the dividend is zerHashes.
14695      * All remainders are stored for later use.
14696      */
14697     while(dividend.length > 0) {
14698       quotient = Array();
14699       x = 0;
14700       for (i = 0; i < dividend.length; i+=1) {
14701         x = (x << 16) + dividend[i];
14702         q = Math.floor(x / divisor);
14703         x -= q * divisor;
14704         if (quotient.length > 0 || q > 0) {
14705           quotient[quotient.length] = q;
14706         }
14707       }
14708       remainders[remainders.length] = x;
14709       dividend = quotient;
14710     }
14711
14712     /* Convert the remainders to the output string */
14713     output = '';
14714     for (i = remainders.length - 1; i >= 0; i--) {
14715       output += encoding.charAt(remainders[i]);
14716     }
14717
14718     /* Append leading zero equivalents */
14719     full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
14720     for (i = output.length; i < full_length; i+=1) {
14721       output = encoding[0] + output;
14722     }
14723     return output;
14724   }
14725
14726   /**
14727    * Convert a raw string to a base-64 string
14728    */
14729   function rstr2b64(input, b64pad) {
14730     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14731         output = '',
14732         len = input.length, i, j, triplet;
14733     b64pad= b64pad || '=';
14734     for (i = 0; i < len; i += 3) {
14735       triplet = (input.charCodeAt(i) << 16)
14736             | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14737             | (i + 2 < len ? input.charCodeAt(i+2)      : 0);
14738       for (j = 0; j < 4; j+=1) {
14739         if (i * 8 + j * 6 > input.length * 8) {
14740           output += b64pad;
14741         } else {
14742           output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
14743         }
14744        }
14745     }
14746     return output;
14747   }
14748
14749   Hashes = {
14750   /**
14751    * @property {String} version
14752    * @readonly
14753    */
14754   VERSION : '1.0.3',
14755   /**
14756    * @member Hashes
14757    * @class Base64
14758    * @constructor
14759    */
14760   Base64 : function () {
14761     // private properties
14762     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14763         pad = '=', // default pad according with the RFC standard
14764         url = false, // URL encoding support @todo
14765         utf8 = true; // by default enable UTF-8 support encoding
14766
14767     // public method for encoding
14768     this.encode = function (input) {
14769       var i, j, triplet,
14770           output = '',
14771           len = input.length;
14772
14773       pad = pad || '=';
14774       input = (utf8) ? utf8Encode(input) : input;
14775
14776       for (i = 0; i < len; i += 3) {
14777         triplet = (input.charCodeAt(i) << 16)
14778               | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14779               | (i + 2 < len ? input.charCodeAt(i+2) : 0);
14780         for (j = 0; j < 4; j+=1) {
14781           if (i * 8 + j * 6 > len * 8) {
14782               output += pad;
14783           } else {
14784               output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
14785           }
14786         }
14787       }
14788       return output;
14789     };
14790
14791     // public method for decoding
14792     this.decode = function (input) {
14793       // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
14794       var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,
14795         dec = '',
14796         arr = [];
14797       if (!input) { return input; }
14798
14799       i = ac = 0;
14800       input = input.replace(new RegExp('\\'+pad,'gi'),''); // use '='
14801       //input += '';
14802
14803       do { // unpack four hexets into three octets using index points in b64
14804         h1 = tab.indexOf(input.charAt(i+=1));
14805         h2 = tab.indexOf(input.charAt(i+=1));
14806         h3 = tab.indexOf(input.charAt(i+=1));
14807         h4 = tab.indexOf(input.charAt(i+=1));
14808
14809         bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
14810
14811         o1 = bits >> 16 & 0xff;
14812         o2 = bits >> 8 & 0xff;
14813         o3 = bits & 0xff;
14814         ac += 1;
14815
14816         if (h3 === 64) {
14817           arr[ac] = String.fromCharCode(o1);
14818         } else if (h4 === 64) {
14819           arr[ac] = String.fromCharCode(o1, o2);
14820         } else {
14821           arr[ac] = String.fromCharCode(o1, o2, o3);
14822         }
14823       } while (i < input.length);
14824
14825       dec = arr.join('');
14826       dec = (utf8) ? utf8Decode(dec) : dec;
14827
14828       return dec;
14829     };
14830
14831     // set custom pad string
14832     this.setPad = function (str) {
14833         pad = str || pad;
14834         return this;
14835     };
14836     // set custom tab string characters
14837     this.setTab = function (str) {
14838         tab = str || tab;
14839         return this;
14840     };
14841     this.setUTF8 = function (bool) {
14842         if (typeof bool === 'boolean') {
14843           utf8 = bool;
14844         }
14845         return this;
14846     };
14847   },
14848
14849   /**
14850    * CRC-32 calculation
14851    * @member Hashes
14852    * @method CRC32
14853    * @static
14854    * @param {String} str Input String
14855    * @return {String}
14856    */
14857   CRC32 : function (str) {
14858     var crc = 0, x = 0, y = 0, table, i, iTop;
14859     str = utf8Encode(str);
14860
14861     table = [
14862         '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',
14863         '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',
14864         '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',
14865         '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',
14866         'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',
14867         '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',
14868         'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',
14869         '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',
14870         'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',
14871         '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',
14872         'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',
14873         '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',
14874         'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',
14875         '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',
14876         '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',
14877         '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',
14878         '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',
14879         'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ',
14880         '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',
14881         'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',
14882         '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',
14883         'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',
14884         '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',
14885         'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',
14886         '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',
14887         'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'
14888     ].join('');
14889
14890     crc = crc ^ (-1);
14891     for (i = 0, iTop = str.length; i < iTop; i+=1 ) {
14892         y = ( crc ^ str.charCodeAt( i ) ) & 0xFF;
14893         x = '0x' + table.substr( y * 9, 8 );
14894         crc = ( crc >>> 8 ) ^ x;
14895     }
14896     // always return a positive number (that's what >>> 0 does)
14897     return (crc ^ (-1)) >>> 0;
14898   },
14899   /**
14900    * @member Hashes
14901    * @class MD5
14902    * @constructor
14903    * @param {Object} [config]
14904    *
14905    * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14906    * Digest Algorithm, as defined in RFC 1321.
14907    * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
14908    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14909    * See <http://pajhome.org.uk/crypt/md5> for more infHashes.
14910    */
14911   MD5 : function (options) {
14912     /**
14913      * Private config properties. You may need to tweak these to be compatible with
14914      * the server-side, but the defaults work in most cases.
14915      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
14916      */
14917     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
14918         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
14919         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
14920
14921     // privileged (public) methods
14922     this.hex = function (s) {
14923       return rstr2hex(rstr(s, utf8), hexcase);
14924     };
14925     this.b64 = function (s) {
14926       return rstr2b64(rstr(s), b64pad);
14927     };
14928     this.any = function(s, e) {
14929       return rstr2any(rstr(s, utf8), e);
14930     };
14931     this.hex_hmac = function (k, d) {
14932       return rstr2hex(rstr_hmac(k, d), hexcase);
14933     };
14934     this.b64_hmac = function (k, d) {
14935       return rstr2b64(rstr_hmac(k,d), b64pad);
14936     };
14937     this.any_hmac = function (k, d, e) {
14938       return rstr2any(rstr_hmac(k, d), e);
14939     };
14940     /**
14941      * Perform a simple self-test to see if the VM is working
14942      * @return {String} Hexadecimal hash sample
14943      */
14944     this.vm_test = function () {
14945       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
14946     };
14947     /**
14948      * Enable/disable uppercase hexadecimal returned string
14949      * @param {Boolean}
14950      * @return {Object} this
14951      */
14952     this.setUpperCase = function (a) {
14953       if (typeof a === 'boolean' ) {
14954         hexcase = a;
14955       }
14956       return this;
14957     };
14958     /**
14959      * Defines a base64 pad string
14960      * @param {String} Pad
14961      * @return {Object} this
14962      */
14963     this.setPad = function (a) {
14964       b64pad = a || b64pad;
14965       return this;
14966     };
14967     /**
14968      * Defines a base64 pad string
14969      * @param {Boolean}
14970      * @return {Object} [this]
14971      */
14972     this.setUTF8 = function (a) {
14973       if (typeof a === 'boolean') {
14974         utf8 = a;
14975       }
14976       return this;
14977     };
14978
14979     // private methods
14980
14981     /**
14982      * Calculate the MD5 of a raw string
14983      */
14984     function rstr(s) {
14985       s = (utf8) ? utf8Encode(s): s;
14986       return binl2rstr(binl(rstr2binl(s), s.length * 8));
14987     }
14988
14989     /**
14990      * Calculate the HMAC-MD5, of a key and some data (raw strings)
14991      */
14992     function rstr_hmac(key, data) {
14993       var bkey, ipad, opad, hash, i;
14994
14995       key = (utf8) ? utf8Encode(key) : key;
14996       data = (utf8) ? utf8Encode(data) : data;
14997       bkey = rstr2binl(key);
14998       if (bkey.length > 16) {
14999         bkey = binl(bkey, key.length * 8);
15000       }
15001
15002       ipad = Array(16), opad = Array(16);
15003       for (i = 0; i < 16; i+=1) {
15004           ipad[i] = bkey[i] ^ 0x36363636;
15005           opad[i] = bkey[i] ^ 0x5C5C5C5C;
15006       }
15007       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
15008       return binl2rstr(binl(opad.concat(hash), 512 + 128));
15009     }
15010
15011     /**
15012      * Calculate the MD5 of an array of little-endian words, and a bit length.
15013      */
15014     function binl(x, len) {
15015       var i, olda, oldb, oldc, oldd,
15016           a =  1732584193,
15017           b = -271733879,
15018           c = -1732584194,
15019           d =  271733878;
15020
15021       /* append padding */
15022       x[len >> 5] |= 0x80 << ((len) % 32);
15023       x[(((len + 64) >>> 9) << 4) + 14] = len;
15024
15025       for (i = 0; i < x.length; i += 16) {
15026         olda = a;
15027         oldb = b;
15028         oldc = c;
15029         oldd = d;
15030
15031         a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
15032         d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
15033         c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
15034         b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
15035         a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
15036         d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
15037         c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
15038         b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
15039         a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
15040         d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
15041         c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
15042         b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
15043         a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
15044         d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
15045         c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
15046         b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
15047
15048         a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
15049         d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
15050         c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
15051         b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
15052         a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
15053         d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
15054         c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
15055         b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
15056         a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
15057         d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
15058         c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
15059         b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
15060         a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
15061         d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
15062         c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
15063         b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
15064
15065         a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
15066         d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
15067         c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
15068         b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
15069         a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
15070         d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
15071         c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
15072         b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
15073         a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
15074         d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
15075         c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
15076         b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
15077         a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
15078         d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
15079         c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
15080         b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
15081
15082         a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
15083         d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
15084         c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
15085         b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
15086         a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
15087         d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
15088         c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
15089         b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
15090         a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
15091         d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
15092         c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
15093         b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
15094         a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
15095         d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
15096         c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
15097         b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
15098
15099         a = safe_add(a, olda);
15100         b = safe_add(b, oldb);
15101         c = safe_add(c, oldc);
15102         d = safe_add(d, oldd);
15103       }
15104       return Array(a, b, c, d);
15105     }
15106
15107     /**
15108      * These functions implement the four basic operations the algorithm uses.
15109      */
15110     function md5_cmn(q, a, b, x, s, t) {
15111       return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
15112     }
15113     function md5_ff(a, b, c, d, x, s, t) {
15114       return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
15115     }
15116     function md5_gg(a, b, c, d, x, s, t) {
15117       return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
15118     }
15119     function md5_hh(a, b, c, d, x, s, t) {
15120       return md5_cmn(b ^ c ^ d, a, b, x, s, t);
15121     }
15122     function md5_ii(a, b, c, d, x, s, t) {
15123       return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
15124     }
15125   },
15126   /**
15127    * @member Hashes
15128    * @class Hashes.SHA1
15129    * @param {Object} [config]
15130    * @constructor
15131    *
15132    * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1
15133    * Version 2.2 Copyright Paul Johnston 2000 - 2009.
15134    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15135    * See http://pajhome.org.uk/crypt/md5 for details.
15136    */
15137   SHA1 : function (options) {
15138    /**
15139      * Private config properties. You may need to tweak these to be compatible with
15140      * the server-side, but the defaults work in most cases.
15141      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
15142      */
15143     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
15144         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
15145         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
15146
15147     // public methods
15148     this.hex = function (s) {
15149         return rstr2hex(rstr(s, utf8), hexcase);
15150     };
15151     this.b64 = function (s) {
15152         return rstr2b64(rstr(s, utf8), b64pad);
15153     };
15154     this.any = function (s, e) {
15155         return rstr2any(rstr(s, utf8), e);
15156     };
15157     this.hex_hmac = function (k, d) {
15158         return rstr2hex(rstr_hmac(k, d));
15159     };
15160     this.b64_hmac = function (k, d) {
15161         return rstr2b64(rstr_hmac(k, d), b64pad);
15162     };
15163     this.any_hmac = function (k, d, e) {
15164         return rstr2any(rstr_hmac(k, d), e);
15165     };
15166     /**
15167      * Perform a simple self-test to see if the VM is working
15168      * @return {String} Hexadecimal hash sample
15169      * @public
15170      */
15171     this.vm_test = function () {
15172       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15173     };
15174     /**
15175      * @description Enable/disable uppercase hexadecimal returned string
15176      * @param {boolean}
15177      * @return {Object} this
15178      * @public
15179      */
15180     this.setUpperCase = function (a) {
15181         if (typeof a === 'boolean') {
15182         hexcase = a;
15183       }
15184         return this;
15185     };
15186     /**
15187      * @description Defines a base64 pad string
15188      * @param {string} Pad
15189      * @return {Object} this
15190      * @public
15191      */
15192     this.setPad = function (a) {
15193       b64pad = a || b64pad;
15194         return this;
15195     };
15196     /**
15197      * @description Defines a base64 pad string
15198      * @param {boolean}
15199      * @return {Object} this
15200      * @public
15201      */
15202     this.setUTF8 = function (a) {
15203         if (typeof a === 'boolean') {
15204         utf8 = a;
15205       }
15206         return this;
15207     };
15208
15209     // private methods
15210
15211     /**
15212          * Calculate the SHA-512 of a raw string
15213          */
15214         function rstr(s) {
15215       s = (utf8) ? utf8Encode(s) : s;
15216       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15217         }
15218
15219     /**
15220      * Calculate the HMAC-SHA1 of a key and some data (raw strings)
15221      */
15222     function rstr_hmac(key, data) {
15223         var bkey, ipad, opad, i, hash;
15224         key = (utf8) ? utf8Encode(key) : key;
15225         data = (utf8) ? utf8Encode(data) : data;
15226         bkey = rstr2binb(key);
15227
15228         if (bkey.length > 16) {
15229         bkey = binb(bkey, key.length * 8);
15230       }
15231         ipad = Array(16), opad = Array(16);
15232         for (i = 0; i < 16; i+=1) {
15233                 ipad[i] = bkey[i] ^ 0x36363636;
15234                 opad[i] = bkey[i] ^ 0x5C5C5C5C;
15235         }
15236         hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15237         return binb2rstr(binb(opad.concat(hash), 512 + 160));
15238     }
15239
15240     /**
15241      * Calculate the SHA-1 of an array of big-endian words, and a bit length
15242      */
15243     function binb(x, len) {
15244       var i, j, t, olda, oldb, oldc, oldd, olde,
15245           w = Array(80),
15246           a =  1732584193,
15247           b = -271733879,
15248           c = -1732584194,
15249           d =  271733878,
15250           e = -1009589776;
15251
15252       /* append padding */
15253       x[len >> 5] |= 0x80 << (24 - len % 32);
15254       x[((len + 64 >> 9) << 4) + 15] = len;
15255
15256       for (i = 0; i < x.length; i += 16) {
15257         olda = a,
15258         oldb = b;
15259         oldc = c;
15260         oldd = d;
15261         olde = e;
15262
15263         for (j = 0; j < 80; j+=1)       {
15264           if (j < 16) {
15265             w[j] = x[i + j];
15266           } else {
15267             w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
15268           }
15269           t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),
15270                                            safe_add(safe_add(e, w[j]), sha1_kt(j)));
15271           e = d;
15272           d = c;
15273           c = bit_rol(b, 30);
15274           b = a;
15275           a = t;
15276         }
15277
15278         a = safe_add(a, olda);
15279         b = safe_add(b, oldb);
15280         c = safe_add(c, oldc);
15281         d = safe_add(d, oldd);
15282         e = safe_add(e, olde);
15283       }
15284       return Array(a, b, c, d, e);
15285     }
15286
15287     /**
15288      * Perform the appropriate triplet combination function for the current
15289      * iteration
15290      */
15291     function sha1_ft(t, b, c, d) {
15292       if (t < 20) { return (b & c) | ((~b) & d); }
15293       if (t < 40) { return b ^ c ^ d; }
15294       if (t < 60) { return (b & c) | (b & d) | (c & d); }
15295       return b ^ c ^ d;
15296     }
15297
15298     /**
15299      * Determine the appropriate additive constant for the current iteration
15300      */
15301     function sha1_kt(t) {
15302       return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
15303                  (t < 60) ? -1894007588 : -899497514;
15304     }
15305   },
15306   /**
15307    * @class Hashes.SHA256
15308    * @param {config}
15309    *
15310    * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2
15311    * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.
15312    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15313    * See http://pajhome.org.uk/crypt/md5 for details.
15314    * Also http://anmar.eu.org/projects/jssha2/
15315    */
15316   SHA256 : function (options) {
15317     /**
15318      * Private properties configuration variables. You may need to tweak these to be compatible with
15319      * the server-side, but the defaults work in most cases.
15320      * @see this.setUpperCase() method
15321      * @see this.setPad() method
15322      */
15323     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase  */
15324               b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', /* base-64 pad character. Default '=' for strict RFC compliance   */
15325               utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15326               sha256_K;
15327
15328     /* privileged (public) methods */
15329     this.hex = function (s) {
15330       return rstr2hex(rstr(s, utf8));
15331     };
15332     this.b64 = function (s) {
15333       return rstr2b64(rstr(s, utf8), b64pad);
15334     };
15335     this.any = function (s, e) {
15336       return rstr2any(rstr(s, utf8), e);
15337     };
15338     this.hex_hmac = function (k, d) {
15339       return rstr2hex(rstr_hmac(k, d));
15340     };
15341     this.b64_hmac = function (k, d) {
15342       return rstr2b64(rstr_hmac(k, d), b64pad);
15343     };
15344     this.any_hmac = function (k, d, e) {
15345       return rstr2any(rstr_hmac(k, d), e);
15346     };
15347     /**
15348      * Perform a simple self-test to see if the VM is working
15349      * @return {String} Hexadecimal hash sample
15350      * @public
15351      */
15352     this.vm_test = function () {
15353       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15354     };
15355     /**
15356      * Enable/disable uppercase hexadecimal returned string
15357      * @param {boolean}
15358      * @return {Object} this
15359      * @public
15360      */
15361     this.setUpperCase = function (a) {
15362       if (typeof a === 'boolean') {
15363         hexcase = a;
15364       }
15365       return this;
15366     };
15367     /**
15368      * @description Defines a base64 pad string
15369      * @param {string} Pad
15370      * @return {Object} this
15371      * @public
15372      */
15373     this.setPad = function (a) {
15374       b64pad = a || b64pad;
15375       return this;
15376     };
15377     /**
15378      * Defines a base64 pad string
15379      * @param {boolean}
15380      * @return {Object} this
15381      * @public
15382      */
15383     this.setUTF8 = function (a) {
15384       if (typeof a === 'boolean') {
15385         utf8 = a;
15386       }
15387       return this;
15388     };
15389
15390     // private methods
15391
15392     /**
15393      * Calculate the SHA-512 of a raw string
15394      */
15395     function rstr(s, utf8) {
15396       s = (utf8) ? utf8Encode(s) : s;
15397       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15398     }
15399
15400     /**
15401      * Calculate the HMAC-sha256 of a key and some data (raw strings)
15402      */
15403     function rstr_hmac(key, data) {
15404       key = (utf8) ? utf8Encode(key) : key;
15405       data = (utf8) ? utf8Encode(data) : data;
15406       var hash, i = 0,
15407           bkey = rstr2binb(key),
15408           ipad = Array(16),
15409           opad = Array(16);
15410
15411       if (bkey.length > 16) { bkey = binb(bkey, key.length * 8); }
15412
15413       for (; i < 16; i+=1) {
15414         ipad[i] = bkey[i] ^ 0x36363636;
15415         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15416       }
15417
15418       hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15419       return binb2rstr(binb(opad.concat(hash), 512 + 256));
15420     }
15421
15422     /*
15423      * Main sha256 function, with its support functions
15424      */
15425     function sha256_S (X, n) {return ( X >>> n ) | (X << (32 - n));}
15426     function sha256_R (X, n) {return ( X >>> n );}
15427     function sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
15428     function sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
15429     function sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}
15430     function sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}
15431     function sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}
15432     function sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}
15433     function sha256_Sigma0512(x) {return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));}
15434     function sha256_Sigma1512(x) {return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));}
15435     function sha256_Gamma0512(x) {return (sha256_S(x, 1)  ^ sha256_S(x, 8) ^ sha256_R(x, 7));}
15436     function sha256_Gamma1512(x) {return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));}
15437
15438     sha256_K = [
15439       1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,
15440       -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,
15441       1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,
15442       264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,
15443       -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,
15444       113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,
15445       1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,
15446       -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,
15447       430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,
15448       1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,
15449       -1866530822, -1538233109, -1090935817, -965641998
15450     ];
15451
15452     function binb(m, l) {
15453       var HASH = [1779033703, -1150833019, 1013904242, -1521486534,
15454                  1359893119, -1694144372, 528734635, 1541459225];
15455       var W = new Array(64);
15456       var a, b, c, d, e, f, g, h;
15457       var i, j, T1, T2;
15458
15459       /* append padding */
15460       m[l >> 5] |= 0x80 << (24 - l % 32);
15461       m[((l + 64 >> 9) << 4) + 15] = l;
15462
15463       for (i = 0; i < m.length; i += 16)
15464       {
15465       a = HASH[0];
15466       b = HASH[1];
15467       c = HASH[2];
15468       d = HASH[3];
15469       e = HASH[4];
15470       f = HASH[5];
15471       g = HASH[6];
15472       h = HASH[7];
15473
15474       for (j = 0; j < 64; j+=1)
15475       {
15476         if (j < 16) {
15477           W[j] = m[j + i];
15478         } else {
15479           W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),
15480                           sha256_Gamma0256(W[j - 15])), W[j - 16]);
15481         }
15482
15483         T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),
15484                                   sha256_K[j]), W[j]);
15485         T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));
15486         h = g;
15487         g = f;
15488         f = e;
15489         e = safe_add(d, T1);
15490         d = c;
15491         c = b;
15492         b = a;
15493         a = safe_add(T1, T2);
15494       }
15495
15496       HASH[0] = safe_add(a, HASH[0]);
15497       HASH[1] = safe_add(b, HASH[1]);
15498       HASH[2] = safe_add(c, HASH[2]);
15499       HASH[3] = safe_add(d, HASH[3]);
15500       HASH[4] = safe_add(e, HASH[4]);
15501       HASH[5] = safe_add(f, HASH[5]);
15502       HASH[6] = safe_add(g, HASH[6]);
15503       HASH[7] = safe_add(h, HASH[7]);
15504       }
15505       return HASH;
15506     }
15507
15508   },
15509
15510   /**
15511    * @class Hashes.SHA512
15512    * @param {config}
15513    *
15514    * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2
15515    * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.
15516    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15517    * See http://pajhome.org.uk/crypt/md5 for details.
15518    */
15519   SHA512 : function (options) {
15520     /**
15521      * Private properties configuration variables. You may need to tweak these to be compatible with
15522      * the server-side, but the defaults work in most cases.
15523      * @see this.setUpperCase() method
15524      * @see this.setPad() method
15525      */
15526     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false , /* hexadecimal output case format. false - lowercase; true - uppercase  */
15527         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15528         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15529         sha512_k;
15530
15531     /* privileged (public) methods */
15532     this.hex = function (s) {
15533       return rstr2hex(rstr(s));
15534     };
15535     this.b64 = function (s) {
15536       return rstr2b64(rstr(s), b64pad);
15537     };
15538     this.any = function (s, e) {
15539       return rstr2any(rstr(s), e);
15540     };
15541     this.hex_hmac = function (k, d) {
15542       return rstr2hex(rstr_hmac(k, d));
15543     };
15544     this.b64_hmac = function (k, d) {
15545       return rstr2b64(rstr_hmac(k, d), b64pad);
15546     };
15547     this.any_hmac = function (k, d, e) {
15548       return rstr2any(rstr_hmac(k, d), e);
15549     };
15550     /**
15551      * Perform a simple self-test to see if the VM is working
15552      * @return {String} Hexadecimal hash sample
15553      * @public
15554      */
15555     this.vm_test = function () {
15556       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15557     };
15558     /**
15559      * @description Enable/disable uppercase hexadecimal returned string
15560      * @param {boolean}
15561      * @return {Object} this
15562      * @public
15563      */
15564     this.setUpperCase = function (a) {
15565       if (typeof a === 'boolean') {
15566         hexcase = a;
15567       }
15568       return this;
15569     };
15570     /**
15571      * @description Defines a base64 pad string
15572      * @param {string} Pad
15573      * @return {Object} this
15574      * @public
15575      */
15576     this.setPad = function (a) {
15577       b64pad = a || b64pad;
15578       return this;
15579     };
15580     /**
15581      * @description Defines a base64 pad string
15582      * @param {boolean}
15583      * @return {Object} this
15584      * @public
15585      */
15586     this.setUTF8 = function (a) {
15587       if (typeof a === 'boolean') {
15588         utf8 = a;
15589       }
15590       return this;
15591     };
15592
15593     /* private methods */
15594
15595     /**
15596      * Calculate the SHA-512 of a raw string
15597      */
15598     function rstr(s) {
15599       s = (utf8) ? utf8Encode(s) : s;
15600       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15601     }
15602     /*
15603      * Calculate the HMAC-SHA-512 of a key and some data (raw strings)
15604      */
15605     function rstr_hmac(key, data) {
15606       key = (utf8) ? utf8Encode(key) : key;
15607       data = (utf8) ? utf8Encode(data) : data;
15608
15609       var hash, i = 0,
15610           bkey = rstr2binb(key),
15611           ipad = Array(32), opad = Array(32);
15612
15613       if (bkey.length > 32) { bkey = binb(bkey, key.length * 8); }
15614
15615       for (; i < 32; i+=1) {
15616         ipad[i] = bkey[i] ^ 0x36363636;
15617         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15618       }
15619
15620       hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);
15621       return binb2rstr(binb(opad.concat(hash), 1024 + 512));
15622     }
15623
15624     /**
15625      * Calculate the SHA-512 of an array of big-endian dwords, and a bit length
15626      */
15627     function binb(x, len) {
15628       var j, i, l,
15629           W = new Array(80),
15630           hash = new Array(16),
15631           //Initial hash values
15632           H = [
15633             new int64(0x6a09e667, -205731576),
15634             new int64(-1150833019, -2067093701),
15635             new int64(0x3c6ef372, -23791573),
15636             new int64(-1521486534, 0x5f1d36f1),
15637             new int64(0x510e527f, -1377402159),
15638             new int64(-1694144372, 0x2b3e6c1f),
15639             new int64(0x1f83d9ab, -79577749),
15640             new int64(0x5be0cd19, 0x137e2179)
15641           ],
15642           T1 = new int64(0, 0),
15643           T2 = new int64(0, 0),
15644           a = new int64(0,0),
15645           b = new int64(0,0),
15646           c = new int64(0,0),
15647           d = new int64(0,0),
15648           e = new int64(0,0),
15649           f = new int64(0,0),
15650           g = new int64(0,0),
15651           h = new int64(0,0),
15652           //Temporary variables not specified by the document
15653           s0 = new int64(0, 0),
15654           s1 = new int64(0, 0),
15655           Ch = new int64(0, 0),
15656           Maj = new int64(0, 0),
15657           r1 = new int64(0, 0),
15658           r2 = new int64(0, 0),
15659           r3 = new int64(0, 0);
15660
15661       if (sha512_k === undefined) {
15662           //SHA512 constants
15663           sha512_k = [
15664             new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),
15665             new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),
15666             new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),
15667             new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),
15668             new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),
15669             new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),
15670             new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),
15671             new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),
15672             new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),
15673             new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),
15674             new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),
15675             new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),
15676             new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),
15677             new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),
15678             new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),
15679             new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),
15680             new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),
15681             new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),
15682             new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),
15683             new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),
15684             new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),
15685             new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),
15686             new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),
15687             new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),
15688             new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),
15689             new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),
15690             new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),
15691             new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),
15692             new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),
15693             new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),
15694             new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),
15695             new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),
15696             new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),
15697             new int64(-354779690, -840897762), new int64(-176337025, -294727304),
15698             new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),
15699             new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),
15700             new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),
15701             new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),
15702             new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),
15703             new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)
15704           ];
15705       }
15706
15707       for (i=0; i<80; i+=1) {
15708         W[i] = new int64(0, 0);
15709       }
15710
15711       // append padding to the source string. The format is described in the FIPS.
15712       x[len >> 5] |= 0x80 << (24 - (len & 0x1f));
15713       x[((len + 128 >> 10)<< 5) + 31] = len;
15714       l = x.length;
15715       for (i = 0; i<l; i+=32) { //32 dwords is the block size
15716         int64copy(a, H[0]);
15717         int64copy(b, H[1]);
15718         int64copy(c, H[2]);
15719         int64copy(d, H[3]);
15720         int64copy(e, H[4]);
15721         int64copy(f, H[5]);
15722         int64copy(g, H[6]);
15723         int64copy(h, H[7]);
15724
15725         for (j=0; j<16; j+=1) {
15726           W[j].h = x[i + 2*j];
15727           W[j].l = x[i + 2*j + 1];
15728         }
15729
15730         for (j=16; j<80; j+=1) {
15731           //sigma1
15732           int64rrot(r1, W[j-2], 19);
15733           int64revrrot(r2, W[j-2], 29);
15734           int64shr(r3, W[j-2], 6);
15735           s1.l = r1.l ^ r2.l ^ r3.l;
15736           s1.h = r1.h ^ r2.h ^ r3.h;
15737           //sigma0
15738           int64rrot(r1, W[j-15], 1);
15739           int64rrot(r2, W[j-15], 8);
15740           int64shr(r3, W[j-15], 7);
15741           s0.l = r1.l ^ r2.l ^ r3.l;
15742           s0.h = r1.h ^ r2.h ^ r3.h;
15743
15744           int64add4(W[j], s1, W[j-7], s0, W[j-16]);
15745         }
15746
15747         for (j = 0; j < 80; j+=1) {
15748           //Ch
15749           Ch.l = (e.l & f.l) ^ (~e.l & g.l);
15750           Ch.h = (e.h & f.h) ^ (~e.h & g.h);
15751
15752           //Sigma1
15753           int64rrot(r1, e, 14);
15754           int64rrot(r2, e, 18);
15755           int64revrrot(r3, e, 9);
15756           s1.l = r1.l ^ r2.l ^ r3.l;
15757           s1.h = r1.h ^ r2.h ^ r3.h;
15758
15759           //Sigma0
15760           int64rrot(r1, a, 28);
15761           int64revrrot(r2, a, 2);
15762           int64revrrot(r3, a, 7);
15763           s0.l = r1.l ^ r2.l ^ r3.l;
15764           s0.h = r1.h ^ r2.h ^ r3.h;
15765
15766           //Maj
15767           Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);
15768           Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);
15769
15770           int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);
15771           int64add(T2, s0, Maj);
15772
15773           int64copy(h, g);
15774           int64copy(g, f);
15775           int64copy(f, e);
15776           int64add(e, d, T1);
15777           int64copy(d, c);
15778           int64copy(c, b);
15779           int64copy(b, a);
15780           int64add(a, T1, T2);
15781         }
15782         int64add(H[0], H[0], a);
15783         int64add(H[1], H[1], b);
15784         int64add(H[2], H[2], c);
15785         int64add(H[3], H[3], d);
15786         int64add(H[4], H[4], e);
15787         int64add(H[5], H[5], f);
15788         int64add(H[6], H[6], g);
15789         int64add(H[7], H[7], h);
15790       }
15791
15792       //represent the hash as an array of 32-bit dwords
15793       for (i=0; i<8; i+=1) {
15794         hash[2*i] = H[i].h;
15795         hash[2*i + 1] = H[i].l;
15796       }
15797       return hash;
15798     }
15799
15800     //A constructor for 64-bit numbers
15801     function int64(h, l) {
15802       this.h = h;
15803       this.l = l;
15804       //this.toString = int64toString;
15805     }
15806
15807     //Copies src into dst, assuming both are 64-bit numbers
15808     function int64copy(dst, src) {
15809       dst.h = src.h;
15810       dst.l = src.l;
15811     }
15812
15813     //Right-rotates a 64-bit number by shift
15814     //Won't handle cases of shift>=32
15815     //The function revrrot() is for that
15816     function int64rrot(dst, x, shift) {
15817       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15818       dst.h = (x.h >>> shift) | (x.l << (32-shift));
15819     }
15820
15821     //Reverses the dwords of the source and then rotates right by shift.
15822     //This is equivalent to rotation by 32+shift
15823     function int64revrrot(dst, x, shift) {
15824       dst.l = (x.h >>> shift) | (x.l << (32-shift));
15825       dst.h = (x.l >>> shift) | (x.h << (32-shift));
15826     }
15827
15828     //Bitwise-shifts right a 64-bit number by shift
15829     //Won't handle shift>=32, but it's never needed in SHA512
15830     function int64shr(dst, x, shift) {
15831       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15832       dst.h = (x.h >>> shift);
15833     }
15834
15835     //Adds two 64-bit numbers
15836     //Like the original implementation, does not rely on 32-bit operations
15837     function int64add(dst, x, y) {
15838        var w0 = (x.l & 0xffff) + (y.l & 0xffff);
15839        var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);
15840        var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);
15841        var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);
15842        dst.l = (w0 & 0xffff) | (w1 << 16);
15843        dst.h = (w2 & 0xffff) | (w3 << 16);
15844     }
15845
15846     //Same, except with 4 addends. Works faster than adding them one by one.
15847     function int64add4(dst, a, b, c, d) {
15848        var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);
15849        var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);
15850        var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);
15851        var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);
15852        dst.l = (w0 & 0xffff) | (w1 << 16);
15853        dst.h = (w2 & 0xffff) | (w3 << 16);
15854     }
15855
15856     //Same, except with 5 addends
15857     function int64add5(dst, a, b, c, d, e) {
15858       var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),
15859           w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),
15860           w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),
15861           w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);
15862        dst.l = (w0 & 0xffff) | (w1 << 16);
15863        dst.h = (w2 & 0xffff) | (w3 << 16);
15864     }
15865   },
15866   /**
15867    * @class Hashes.RMD160
15868    * @constructor
15869    * @param {Object} [config]
15870    *
15871    * A JavaScript implementation of the RIPEMD-160 Algorithm
15872    * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.
15873    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15874    * See http://pajhome.org.uk/crypt/md5 for details.
15875    * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/
15876    */
15877   RMD160 : function (options) {
15878     /**
15879      * Private properties configuration variables. You may need to tweak these to be compatible with
15880      * the server-side, but the defaults work in most cases.
15881      * @see this.setUpperCase() method
15882      * @see this.setPad() method
15883      */
15884     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,   /* hexadecimal output case format. false - lowercase; true - uppercase  */
15885         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15886         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15887         rmd160_r1 = [
15888            0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
15889            7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,
15890            3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,
15891            1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,
15892            4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13
15893         ],
15894         rmd160_r2 = [
15895            5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,
15896            6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,
15897           15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,
15898            8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,
15899           12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11
15900         ],
15901         rmd160_s1 = [
15902           11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,
15903            7,  6,  8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,
15904           11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,
15905           11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,
15906            9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6
15907         ],
15908         rmd160_s2 = [
15909            8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,
15910            9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,
15911            9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,
15912           15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,
15913            8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11
15914         ];
15915
15916     /* privileged (public) methods */
15917     this.hex = function (s) {
15918       return rstr2hex(rstr(s, utf8));
15919     };
15920     this.b64 = function (s) {
15921       return rstr2b64(rstr(s, utf8), b64pad);
15922     };
15923     this.any = function (s, e) {
15924       return rstr2any(rstr(s, utf8), e);
15925     };
15926     this.hex_hmac = function (k, d) {
15927       return rstr2hex(rstr_hmac(k, d));
15928     };
15929     this.b64_hmac = function (k, d) {
15930       return rstr2b64(rstr_hmac(k, d), b64pad);
15931     };
15932     this.any_hmac = function (k, d, e) {
15933       return rstr2any(rstr_hmac(k, d), e);
15934     };
15935     /**
15936      * Perform a simple self-test to see if the VM is working
15937      * @return {String} Hexadecimal hash sample
15938      * @public
15939      */
15940     this.vm_test = function () {
15941       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15942     };
15943     /**
15944      * @description Enable/disable uppercase hexadecimal returned string
15945      * @param {boolean}
15946      * @return {Object} this
15947      * @public
15948      */
15949     this.setUpperCase = function (a) {
15950       if (typeof a === 'boolean' ) { hexcase = a; }
15951       return this;
15952     };
15953     /**
15954      * @description Defines a base64 pad string
15955      * @param {string} Pad
15956      * @return {Object} this
15957      * @public
15958      */
15959     this.setPad = function (a) {
15960       if (typeof a !== 'undefined' ) { b64pad = a; }
15961       return this;
15962     };
15963     /**
15964      * @description Defines a base64 pad string
15965      * @param {boolean}
15966      * @return {Object} this
15967      * @public
15968      */
15969     this.setUTF8 = function (a) {
15970       if (typeof a === 'boolean') { utf8 = a; }
15971       return this;
15972     };
15973
15974     /* private methods */
15975
15976     /**
15977      * Calculate the rmd160 of a raw string
15978      */
15979     function rstr(s) {
15980       s = (utf8) ? utf8Encode(s) : s;
15981       return binl2rstr(binl(rstr2binl(s), s.length * 8));
15982     }
15983
15984     /**
15985      * Calculate the HMAC-rmd160 of a key and some data (raw strings)
15986      */
15987     function rstr_hmac(key, data) {
15988       key = (utf8) ? utf8Encode(key) : key;
15989       data = (utf8) ? utf8Encode(data) : data;
15990       var i, hash,
15991           bkey = rstr2binl(key),
15992           ipad = Array(16), opad = Array(16);
15993
15994       if (bkey.length > 16) {
15995         bkey = binl(bkey, key.length * 8);
15996       }
15997
15998       for (i = 0; i < 16; i+=1) {
15999         ipad[i] = bkey[i] ^ 0x36363636;
16000         opad[i] = bkey[i] ^ 0x5C5C5C5C;
16001       }
16002       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
16003       return binl2rstr(binl(opad.concat(hash), 512 + 160));
16004     }
16005
16006     /**
16007      * Convert an array of little-endian words to a string
16008      */
16009     function binl2rstr(input) {
16010       var i, output = '', l = input.length * 32;
16011       for (i = 0; i < l; i += 8) {
16012         output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
16013       }
16014       return output;
16015     }
16016
16017     /**
16018      * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.
16019      */
16020     function binl(x, len) {
16021       var T, j, i, l,
16022           h0 = 0x67452301,
16023           h1 = 0xefcdab89,
16024           h2 = 0x98badcfe,
16025           h3 = 0x10325476,
16026           h4 = 0xc3d2e1f0,
16027           A1, B1, C1, D1, E1,
16028           A2, B2, C2, D2, E2;
16029
16030       /* append padding */
16031       x[len >> 5] |= 0x80 << (len % 32);
16032       x[(((len + 64) >>> 9) << 4) + 14] = len;
16033       l = x.length;
16034
16035       for (i = 0; i < l; i+=16) {
16036         A1 = A2 = h0; B1 = B2 = h1; C1 = C2 = h2; D1 = D2 = h3; E1 = E2 = h4;
16037         for (j = 0; j <= 79; j+=1) {
16038           T = safe_add(A1, rmd160_f(j, B1, C1, D1));
16039           T = safe_add(T, x[i + rmd160_r1[j]]);
16040           T = safe_add(T, rmd160_K1(j));
16041           T = safe_add(bit_rol(T, rmd160_s1[j]), E1);
16042           A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T;
16043           T = safe_add(A2, rmd160_f(79-j, B2, C2, D2));
16044           T = safe_add(T, x[i + rmd160_r2[j]]);
16045           T = safe_add(T, rmd160_K2(j));
16046           T = safe_add(bit_rol(T, rmd160_s2[j]), E2);
16047           A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T;
16048         }
16049
16050         T = safe_add(h1, safe_add(C1, D2));
16051         h1 = safe_add(h2, safe_add(D1, E2));
16052         h2 = safe_add(h3, safe_add(E1, A2));
16053         h3 = safe_add(h4, safe_add(A1, B2));
16054         h4 = safe_add(h0, safe_add(B1, C2));
16055         h0 = T;
16056       }
16057       return [h0, h1, h2, h3, h4];
16058     }
16059
16060     // specific algorithm methods
16061     function rmd160_f(j, x, y, z) {
16062       return ( 0 <= j && j <= 15) ? (x ^ y ^ z) :
16063          (16 <= j && j <= 31) ? (x & y) | (~x & z) :
16064          (32 <= j && j <= 47) ? (x | ~y) ^ z :
16065          (48 <= j && j <= 63) ? (x & z) | (y & ~z) :
16066          (64 <= j && j <= 79) ? x ^ (y | ~z) :
16067          'rmd160_f: j out of range';
16068     }
16069
16070     function rmd160_K1(j) {
16071       return ( 0 <= j && j <= 15) ? 0x00000000 :
16072          (16 <= j && j <= 31) ? 0x5a827999 :
16073          (32 <= j && j <= 47) ? 0x6ed9eba1 :
16074          (48 <= j && j <= 63) ? 0x8f1bbcdc :
16075          (64 <= j && j <= 79) ? 0xa953fd4e :
16076          'rmd160_K1: j out of range';
16077     }
16078
16079     function rmd160_K2(j){
16080       return ( 0 <= j && j <= 15) ? 0x50a28be6 :
16081          (16 <= j && j <= 31) ? 0x5c4dd124 :
16082          (32 <= j && j <= 47) ? 0x6d703ef3 :
16083          (48 <= j && j <= 63) ? 0x7a6d76e9 :
16084          (64 <= j && j <= 79) ? 0x00000000 :
16085          'rmd160_K2: j out of range';
16086     }
16087   }
16088 };
16089
16090   // exposes Hashes
16091   (function( window, undefined ) {
16092     var freeExports = false;
16093     if (typeof exports === 'object' ) {
16094       freeExports = exports;
16095       if (exports && typeof global === 'object' && global && global === global.global ) { window = global; }
16096     }
16097
16098     if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
16099       // define as an anonymous module, so, through path mapping, it can be aliased
16100       define(function () { return Hashes; });
16101     }
16102     else if ( freeExports ) {
16103       // in Node.js or RingoJS v0.8.0+
16104       if ( typeof module === 'object' && module && module.exports === freeExports ) {
16105         module.exports = Hashes;
16106       }
16107       // in Narwhal or RingoJS v0.7.0-
16108       else {
16109         freeExports.Hashes = Hashes;
16110       }
16111     }
16112     else {
16113       // in a browser or Rhino
16114       window.Hashes = Hashes;
16115     }
16116   }( this ));
16117 }()); // IIFE
16118
16119 })(window)
16120 },{}],2:[function(require,module,exports){
16121 'use strict';
16122
16123 var hashes = require('jshashes'),
16124     xtend = require('xtend'),
16125     sha1 = new hashes.SHA1();
16126
16127 var ohauth = {};
16128
16129 ohauth.qsString = function(obj) {
16130     return Object.keys(obj).sort().map(function(key) {
16131         return ohauth.percentEncode(key) + '=' +
16132             ohauth.percentEncode(obj[key]);
16133     }).join('&');
16134 };
16135
16136 ohauth.stringQs = function(str) {
16137     return str.split('&').reduce(function(obj, pair){
16138         var parts = pair.split('=');
16139         obj[decodeURIComponent(parts[0])] = (null === parts[1]) ?
16140             '' : decodeURIComponent(parts[1]);
16141         return obj;
16142     }, {});
16143 };
16144
16145 ohauth.rawxhr = function(method, url, data, headers, callback) {
16146     var xhr = new XMLHttpRequest(),
16147         twoHundred = /^20\d$/;
16148     xhr.onreadystatechange = function() {
16149         if (4 == xhr.readyState && 0 !== xhr.status) {
16150             if (twoHundred.test(xhr.status)) callback(null, xhr);
16151             else return callback(xhr, null);
16152         }
16153     };
16154     xhr.onerror = function(e) { return callback(e, null); };
16155     xhr.open(method, url, true);
16156     for (var h in headers) xhr.setRequestHeader(h, headers[h]);
16157     xhr.send(data);
16158 };
16159
16160 ohauth.xhr = function(method, url, auth, data, options, callback) {
16161     var headers = (options && options.header) || {
16162         'Content-Type': 'application/x-www-form-urlencoded'
16163     };
16164     headers.Authorization = 'OAuth ' + ohauth.authHeader(auth);
16165     ohauth.rawxhr(method, url, data, headers, callback);
16166 };
16167
16168 ohauth.nonce = function() {
16169     for (var o = ''; o.length < 6;) {
16170         o += '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'[Math.floor(Math.random() * 61)];
16171     }
16172     return o;
16173 };
16174
16175 ohauth.authHeader = function(obj) {
16176     return Object.keys(obj).sort().map(function(key) {
16177         return encodeURIComponent(key) + '="' + encodeURIComponent(obj[key]) + '"';
16178     }).join(', ');
16179 };
16180
16181 ohauth.timestamp = function() { return ~~((+new Date()) / 1000); };
16182
16183 ohauth.percentEncode = function(s) {
16184     return encodeURIComponent(s)
16185         .replace(/\!/g, '%21').replace(/\'/g, '%27')
16186         .replace(/\*/g, '%2A').replace(/\(/g, '%28').replace(/\)/g, '%29');
16187 };
16188
16189 ohauth.baseString = function(method, url, params) {
16190     if (params.oauth_signature) delete params.oauth_signature;
16191     return [
16192         method,
16193         ohauth.percentEncode(url),
16194         ohauth.percentEncode(ohauth.qsString(params))].join('&');
16195 };
16196
16197 ohauth.signature = function(oauth_secret, token_secret, baseString) {
16198     return sha1.b64_hmac(
16199         ohauth.percentEncode(oauth_secret) + '&' +
16200         ohauth.percentEncode(token_secret),
16201         baseString);
16202 };
16203
16204 /**
16205  * Takes an options object for configuration (consumer_key,
16206  * consumer_secret, version, signature_method, token) and returns a
16207  * function that generates the Authorization header for given data.
16208  *
16209  * The returned function takes these parameters:
16210  * - method: GET/POST/...
16211  * - uri: full URI with protocol, port, path and query string
16212  * - extra_params: any extra parameters (that are passed in the POST data),
16213  *   can be an object or a from-urlencoded string.
16214  *
16215  * Returned function returns full OAuth header with "OAuth" string in it.
16216  */
16217
16218 ohauth.headerGenerator = function(options) {
16219     options = options || {};
16220     var consumer_key = options.consumer_key || '',
16221         consumer_secret = options.consumer_secret || '',
16222         signature_method = options.signature_method || 'HMAC-SHA1',
16223         version = options.version || '1.0',
16224         token = options.token || '';
16225
16226     return function(method, uri, extra_params) {
16227         method = method.toUpperCase();
16228         if (typeof extra_params === 'string' && extra_params.length > 0) {
16229             extra_params = ohauth.stringQs(extra_params);
16230         }
16231
16232         var uri_parts = uri.split('?', 2),
16233         base_uri = uri_parts[0];
16234
16235         var query_params = uri_parts.length === 2 ?
16236             ohauth.stringQs(uri_parts[1]) : {};
16237
16238         var oauth_params = {
16239             oauth_consumer_key: consumer_key,
16240             oauth_signature_method: signature_method,
16241             oauth_version: version,
16242             oauth_timestamp: ohauth.timestamp(),
16243             oauth_nonce: ohauth.nonce()
16244         };
16245
16246         if (token) oauth_params.oauth_token = token;
16247
16248         var all_params = xtend({}, oauth_params, query_params, extra_params),
16249             base_str = ohauth.baseString(method, base_uri, all_params);
16250
16251         oauth_params.oauth_signature = ohauth.signature(consumer_secret, token, base_str);
16252
16253         return 'OAuth ' + ohauth.authHeader(oauth_params);
16254     };
16255 };
16256
16257 module.exports = ohauth;
16258
16259 },{"jshashes":7,"xtend":4}],6:[function(require,module,exports){
16260 module.exports = Object.keys || require('./shim');
16261
16262
16263 },{"./shim":8}],8:[function(require,module,exports){
16264 (function () {
16265         "use strict";
16266
16267         // modified from https://github.com/kriskowal/es5-shim
16268         var has = Object.prototype.hasOwnProperty,
16269                 is = require('is'),
16270                 forEach = require('foreach'),
16271                 hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
16272                 dontEnums = [
16273                         "toString",
16274                         "toLocaleString",
16275                         "valueOf",
16276                         "hasOwnProperty",
16277                         "isPrototypeOf",
16278                         "propertyIsEnumerable",
16279                         "constructor"
16280                 ],
16281                 keysShim;
16282
16283         keysShim = function keys(object) {
16284                 if (!is.object(object) && !is.array(object)) {
16285                         throw new TypeError("Object.keys called on a non-object");
16286                 }
16287
16288                 var name, theKeys = [];
16289                 for (name in object) {
16290                         if (has.call(object, name)) {
16291                                 theKeys.push(name);
16292                         }
16293                 }
16294
16295                 if (hasDontEnumBug) {
16296                         forEach(dontEnums, function (dontEnum) {
16297                                 if (has.call(object, dontEnum)) {
16298                                         theKeys.push(dontEnum);
16299                                 }
16300                         });
16301                 }
16302                 return theKeys;
16303         };
16304
16305         module.exports = keysShim;
16306 }());
16307
16308
16309 },{"is":9,"foreach":10}],9:[function(require,module,exports){
16310
16311 /**!
16312  * is
16313  * the definitive JavaScript type testing library
16314  *
16315  * @copyright 2013 Enrico Marino
16316  * @license MIT
16317  */
16318
16319 var objProto = Object.prototype;
16320 var owns = objProto.hasOwnProperty;
16321 var toString = objProto.toString;
16322 var isActualNaN = function (value) {
16323   return value !== value;
16324 };
16325 var NON_HOST_TYPES = {
16326   "boolean": 1,
16327   "number": 1,
16328   "string": 1,
16329   "undefined": 1
16330 };
16331
16332 /**
16333  * Expose `is`
16334  */
16335
16336 var is = module.exports = {};
16337
16338 /**
16339  * Test general.
16340  */
16341
16342 /**
16343  * is.type
16344  * Test if `value` is a type of `type`.
16345  *
16346  * @param {Mixed} value value to test
16347  * @param {String} type type
16348  * @return {Boolean} true if `value` is a type of `type`, false otherwise
16349  * @api public
16350  */
16351
16352 is.a =
16353 is.type = function (value, type) {
16354   return typeof value === type;
16355 };
16356
16357 /**
16358  * is.defined
16359  * Test if `value` is defined.
16360  *
16361  * @param {Mixed} value value to test
16362  * @return {Boolean} true if 'value' is defined, false otherwise
16363  * @api public
16364  */
16365
16366 is.defined = function (value) {
16367   return value !== undefined;
16368 };
16369
16370 /**
16371  * is.empty
16372  * Test if `value` is empty.
16373  *
16374  * @param {Mixed} value value to test
16375  * @return {Boolean} true if `value` is empty, false otherwise
16376  * @api public
16377  */
16378
16379 is.empty = function (value) {
16380   var type = toString.call(value);
16381   var key;
16382
16383   if ('[object Array]' === type || '[object Arguments]' === type) {
16384     return value.length === 0;
16385   }
16386
16387   if ('[object Object]' === type) {
16388     for (key in value) if (owns.call(value, key)) return false;
16389     return true;
16390   }
16391
16392   if ('[object String]' === type) {
16393     return '' === value;
16394   }
16395
16396   return false;
16397 };
16398
16399 /**
16400  * is.equal
16401  * Test if `value` is equal to `other`.
16402  *
16403  * @param {Mixed} value value to test
16404  * @param {Mixed} other value to compare with
16405  * @return {Boolean} true if `value` is equal to `other`, false otherwise
16406  */
16407
16408 is.equal = function (value, other) {
16409   var type = toString.call(value)
16410   var key;
16411
16412   if (type !== toString.call(other)) {
16413     return false;
16414   }
16415
16416   if ('[object Object]' === type) {
16417     for (key in value) {
16418       if (!is.equal(value[key], other[key])) {
16419         return false;
16420       }
16421     }
16422     return true;
16423   }
16424
16425   if ('[object Array]' === type) {
16426     key = value.length;
16427     if (key !== other.length) {
16428       return false;
16429     }
16430     while (--key) {
16431       if (!is.equal(value[key], other[key])) {
16432         return false;
16433       }
16434     }
16435     return true;
16436   }
16437
16438   if ('[object Function]' === type) {
16439     return value.prototype === other.prototype;
16440   }
16441
16442   if ('[object Date]' === type) {
16443     return value.getTime() === other.getTime();
16444   }
16445
16446   return value === other;
16447 };
16448
16449 /**
16450  * is.hosted
16451  * Test if `value` is hosted by `host`.
16452  *
16453  * @param {Mixed} value to test
16454  * @param {Mixed} host host to test with
16455  * @return {Boolean} true if `value` is hosted by `host`, false otherwise
16456  * @api public
16457  */
16458
16459 is.hosted = function (value, host) {
16460   var type = typeof host[value];
16461   return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type];
16462 };
16463
16464 /**
16465  * is.instance
16466  * Test if `value` is an instance of `constructor`.
16467  *
16468  * @param {Mixed} value value to test
16469  * @return {Boolean} true if `value` is an instance of `constructor`
16470  * @api public
16471  */
16472
16473 is.instance = is['instanceof'] = function (value, constructor) {
16474   return value instanceof constructor;
16475 };
16476
16477 /**
16478  * is.null
16479  * Test if `value` is null.
16480  *
16481  * @param {Mixed} value value to test
16482  * @return {Boolean} true if `value` is null, false otherwise
16483  * @api public
16484  */
16485
16486 is['null'] = function (value) {
16487   return value === null;
16488 };
16489
16490 /**
16491  * is.undefined
16492  * Test if `value` is undefined.
16493  *
16494  * @param {Mixed} value value to test
16495  * @return {Boolean} true if `value` is undefined, false otherwise
16496  * @api public
16497  */
16498
16499 is.undefined = function (value) {
16500   return value === undefined;
16501 };
16502
16503 /**
16504  * Test arguments.
16505  */
16506
16507 /**
16508  * is.arguments
16509  * Test if `value` is an arguments object.
16510  *
16511  * @param {Mixed} value value to test
16512  * @return {Boolean} true if `value` is an arguments object, false otherwise
16513  * @api public
16514  */
16515
16516 is.arguments = function (value) {
16517   var isStandardArguments = '[object Arguments]' === toString.call(value);
16518   var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);
16519   return isStandardArguments || isOldArguments;
16520 };
16521
16522 /**
16523  * Test array.
16524  */
16525
16526 /**
16527  * is.array
16528  * Test if 'value' is an array.
16529  *
16530  * @param {Mixed} value value to test
16531  * @return {Boolean} true if `value` is an array, false otherwise
16532  * @api public
16533  */
16534
16535 is.array = function (value) {
16536   return '[object Array]' === toString.call(value);
16537 };
16538
16539 /**
16540  * is.arguments.empty
16541  * Test if `value` is an empty arguments object.
16542  *
16543  * @param {Mixed} value value to test
16544  * @return {Boolean} true if `value` is an empty arguments object, false otherwise
16545  * @api public
16546  */
16547 is.arguments.empty = function (value) {
16548   return is.arguments(value) && value.length === 0;
16549 };
16550
16551 /**
16552  * is.array.empty
16553  * Test if `value` is an empty array.
16554  *
16555  * @param {Mixed} value value to test
16556  * @return {Boolean} true if `value` is an empty array, false otherwise
16557  * @api public
16558  */
16559 is.array.empty = function (value) {
16560   return is.array(value) && value.length === 0;
16561 };
16562
16563 /**
16564  * is.arraylike
16565  * Test if `value` is an arraylike object.
16566  *
16567  * @param {Mixed} value value to test
16568  * @return {Boolean} true if `value` is an arguments object, false otherwise
16569  * @api public
16570  */
16571
16572 is.arraylike = function (value) {
16573   return !!value && !is.boolean(value)
16574     && owns.call(value, 'length')
16575     && isFinite(value.length)
16576     && is.number(value.length)
16577     && value.length >= 0;
16578 };
16579
16580 /**
16581  * Test boolean.
16582  */
16583
16584 /**
16585  * is.boolean
16586  * Test if `value` is a boolean.
16587  *
16588  * @param {Mixed} value value to test
16589  * @return {Boolean} true if `value` is a boolean, false otherwise
16590  * @api public
16591  */
16592
16593 is.boolean = function (value) {
16594   return '[object Boolean]' === toString.call(value);
16595 };
16596
16597 /**
16598  * is.false
16599  * Test if `value` is false.
16600  *
16601  * @param {Mixed} value value to test
16602  * @return {Boolean} true if `value` is false, false otherwise
16603  * @api public
16604  */
16605
16606 is['false'] = function (value) {
16607   return is.boolean(value) && (value === false || value.valueOf() === false);
16608 };
16609
16610 /**
16611  * is.true
16612  * Test if `value` is true.
16613  *
16614  * @param {Mixed} value value to test
16615  * @return {Boolean} true if `value` is true, false otherwise
16616  * @api public
16617  */
16618
16619 is['true'] = function (value) {
16620   return is.boolean(value) && (value === true || value.valueOf() === true);
16621 };
16622
16623 /**
16624  * Test date.
16625  */
16626
16627 /**
16628  * is.date
16629  * Test if `value` is a date.
16630  *
16631  * @param {Mixed} value value to test
16632  * @return {Boolean} true if `value` is a date, false otherwise
16633  * @api public
16634  */
16635
16636 is.date = function (value) {
16637   return '[object Date]' === toString.call(value);
16638 };
16639
16640 /**
16641  * Test element.
16642  */
16643
16644 /**
16645  * is.element
16646  * Test if `value` is an html element.
16647  *
16648  * @param {Mixed} value value to test
16649  * @return {Boolean} true if `value` is an HTML Element, false otherwise
16650  * @api public
16651  */
16652
16653 is.element = function (value) {
16654   return value !== undefined
16655     && typeof HTMLElement !== 'undefined'
16656     && value instanceof HTMLElement
16657     && value.nodeType === 1;
16658 };
16659
16660 /**
16661  * Test error.
16662  */
16663
16664 /**
16665  * is.error
16666  * Test if `value` is an error object.
16667  *
16668  * @param {Mixed} value value to test
16669  * @return {Boolean} true if `value` is an error object, false otherwise
16670  * @api public
16671  */
16672
16673 is.error = function (value) {
16674   return '[object Error]' === toString.call(value);
16675 };
16676
16677 /**
16678  * Test function.
16679  */
16680
16681 /**
16682  * is.fn / is.function (deprecated)
16683  * Test if `value` is a function.
16684  *
16685  * @param {Mixed} value value to test
16686  * @return {Boolean} true if `value` is a function, false otherwise
16687  * @api public
16688  */
16689
16690 is.fn = is['function'] = function (value) {
16691   var isAlert = typeof window !== 'undefined' && value === window.alert;
16692   return isAlert || '[object Function]' === toString.call(value);
16693 };
16694
16695 /**
16696  * Test number.
16697  */
16698
16699 /**
16700  * is.number
16701  * Test if `value` is a number.
16702  *
16703  * @param {Mixed} value value to test
16704  * @return {Boolean} true if `value` is a number, false otherwise
16705  * @api public
16706  */
16707
16708 is.number = function (value) {
16709   return '[object Number]' === toString.call(value);
16710 };
16711
16712 /**
16713  * is.infinite
16714  * Test if `value` is positive or negative infinity.
16715  *
16716  * @param {Mixed} value value to test
16717  * @return {Boolean} true if `value` is positive or negative Infinity, false otherwise
16718  * @api public
16719  */
16720 is.infinite = function (value) {
16721   return value === Infinity || value === -Infinity;
16722 };
16723
16724 /**
16725  * is.decimal
16726  * Test if `value` is a decimal number.
16727  *
16728  * @param {Mixed} value value to test
16729  * @return {Boolean} true if `value` is a decimal number, false otherwise
16730  * @api public
16731  */
16732
16733 is.decimal = function (value) {
16734   return is.number(value) && !isActualNaN(value) && value % 1 !== 0;
16735 };
16736
16737 /**
16738  * is.divisibleBy
16739  * Test if `value` is divisible by `n`.
16740  *
16741  * @param {Number} value value to test
16742  * @param {Number} n dividend
16743  * @return {Boolean} true if `value` is divisible by `n`, false otherwise
16744  * @api public
16745  */
16746
16747 is.divisibleBy = function (value, n) {
16748   var isDividendInfinite = is.infinite(value);
16749   var isDivisorInfinite = is.infinite(n);
16750   var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;
16751   return isDividendInfinite || isDivisorInfinite || (isNonZeroNumber && value % n === 0);
16752 };
16753
16754 /**
16755  * is.int
16756  * Test if `value` is an integer.
16757  *
16758  * @param value to test
16759  * @return {Boolean} true if `value` is an integer, false otherwise
16760  * @api public
16761  */
16762
16763 is.int = function (value) {
16764   return is.number(value) && !isActualNaN(value) && value % 1 === 0;
16765 };
16766
16767 /**
16768  * is.maximum
16769  * Test if `value` is greater than 'others' values.
16770  *
16771  * @param {Number} value value to test
16772  * @param {Array} others values to compare with
16773  * @return {Boolean} true if `value` is greater than `others` values
16774  * @api public
16775  */
16776
16777 is.maximum = function (value, others) {
16778   if (isActualNaN(value)) {
16779     throw new TypeError('NaN is not a valid value');
16780   } else if (!is.arraylike(others)) {
16781     throw new TypeError('second argument must be array-like');
16782   }
16783   var len = others.length;
16784
16785   while (--len >= 0) {
16786     if (value < others[len]) {
16787       return false;
16788     }
16789   }
16790
16791   return true;
16792 };
16793
16794 /**
16795  * is.minimum
16796  * Test if `value` is less than `others` values.
16797  *
16798  * @param {Number} value value to test
16799  * @param {Array} others values to compare with
16800  * @return {Boolean} true if `value` is less than `others` values
16801  * @api public
16802  */
16803
16804 is.minimum = function (value, others) {
16805   if (isActualNaN(value)) {
16806     throw new TypeError('NaN is not a valid value');
16807   } else if (!is.arraylike(others)) {
16808     throw new TypeError('second argument must be array-like');
16809   }
16810   var len = others.length;
16811
16812   while (--len >= 0) {
16813     if (value > others[len]) {
16814       return false;
16815     }
16816   }
16817
16818   return true;
16819 };
16820
16821 /**
16822  * is.nan
16823  * Test if `value` is not a number.
16824  *
16825  * @param {Mixed} value value to test
16826  * @return {Boolean} true if `value` is not a number, false otherwise
16827  * @api public
16828  */
16829
16830 is.nan = function (value) {
16831   return !is.number(value) || value !== value;
16832 };
16833
16834 /**
16835  * is.even
16836  * Test if `value` is an even number.
16837  *
16838  * @param {Number} value value to test
16839  * @return {Boolean} true if `value` is an even number, false otherwise
16840  * @api public
16841  */
16842
16843 is.even = function (value) {
16844   return is.infinite(value) || (is.number(value) && value === value && value % 2 === 0);
16845 };
16846
16847 /**
16848  * is.odd
16849  * Test if `value` is an odd number.
16850  *
16851  * @param {Number} value value to test
16852  * @return {Boolean} true if `value` is an odd number, false otherwise
16853  * @api public
16854  */
16855
16856 is.odd = function (value) {
16857   return is.infinite(value) || (is.number(value) && value === value && value % 2 !== 0);
16858 };
16859
16860 /**
16861  * is.ge
16862  * Test if `value` is greater than or equal to `other`.
16863  *
16864  * @param {Number} value value to test
16865  * @param {Number} other value to compare with
16866  * @return {Boolean}
16867  * @api public
16868  */
16869
16870 is.ge = function (value, other) {
16871   if (isActualNaN(value) || isActualNaN(other)) {
16872     throw new TypeError('NaN is not a valid value');
16873   }
16874   return !is.infinite(value) && !is.infinite(other) && value >= other;
16875 };
16876
16877 /**
16878  * is.gt
16879  * Test if `value` is greater than `other`.
16880  *
16881  * @param {Number} value value to test
16882  * @param {Number} other value to compare with
16883  * @return {Boolean}
16884  * @api public
16885  */
16886
16887 is.gt = function (value, other) {
16888   if (isActualNaN(value) || isActualNaN(other)) {
16889     throw new TypeError('NaN is not a valid value');
16890   }
16891   return !is.infinite(value) && !is.infinite(other) && value > other;
16892 };
16893
16894 /**
16895  * is.le
16896  * Test if `value` is less than or equal to `other`.
16897  *
16898  * @param {Number} value value to test
16899  * @param {Number} other value to compare with
16900  * @return {Boolean} if 'value' is less than or equal to 'other'
16901  * @api public
16902  */
16903
16904 is.le = function (value, other) {
16905   if (isActualNaN(value) || isActualNaN(other)) {
16906     throw new TypeError('NaN is not a valid value');
16907   }
16908   return !is.infinite(value) && !is.infinite(other) && value <= other;
16909 };
16910
16911 /**
16912  * is.lt
16913  * Test if `value` is less than `other`.
16914  *
16915  * @param {Number} value value to test
16916  * @param {Number} other value to compare with
16917  * @return {Boolean} if `value` is less than `other`
16918  * @api public
16919  */
16920
16921 is.lt = function (value, other) {
16922   if (isActualNaN(value) || isActualNaN(other)) {
16923     throw new TypeError('NaN is not a valid value');
16924   }
16925   return !is.infinite(value) && !is.infinite(other) && value < other;
16926 };
16927
16928 /**
16929  * is.within
16930  * Test if `value` is within `start` and `finish`.
16931  *
16932  * @param {Number} value value to test
16933  * @param {Number} start lower bound
16934  * @param {Number} finish upper bound
16935  * @return {Boolean} true if 'value' is is within 'start' and 'finish'
16936  * @api public
16937  */
16938 is.within = function (value, start, finish) {
16939   if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {
16940     throw new TypeError('NaN is not a valid value');
16941   } else if (!is.number(value) || !is.number(start) || !is.number(finish)) {
16942     throw new TypeError('all arguments must be numbers');
16943   }
16944   var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);
16945   return isAnyInfinite || (value >= start && value <= finish);
16946 };
16947
16948 /**
16949  * Test object.
16950  */
16951
16952 /**
16953  * is.object
16954  * Test if `value` is an object.
16955  *
16956  * @param {Mixed} value value to test
16957  * @return {Boolean} true if `value` is an object, false otherwise
16958  * @api public
16959  */
16960
16961 is.object = function (value) {
16962   return value && '[object Object]' === toString.call(value);
16963 };
16964
16965 /**
16966  * is.hash
16967  * Test if `value` is a hash - a plain object literal.
16968  *
16969  * @param {Mixed} value value to test
16970  * @return {Boolean} true if `value` is a hash, false otherwise
16971  * @api public
16972  */
16973
16974 is.hash = function (value) {
16975   return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval;
16976 };
16977
16978 /**
16979  * Test regexp.
16980  */
16981
16982 /**
16983  * is.regexp
16984  * Test if `value` is a regular expression.
16985  *
16986  * @param {Mixed} value value to test
16987  * @return {Boolean} true if `value` is a regexp, false otherwise
16988  * @api public
16989  */
16990
16991 is.regexp = function (value) {
16992   return '[object RegExp]' === toString.call(value);
16993 };
16994
16995 /**
16996  * Test string.
16997  */
16998
16999 /**
17000  * is.string
17001  * Test if `value` is a string.
17002  *
17003  * @param {Mixed} value value to test
17004  * @return {Boolean} true if 'value' is a string, false otherwise
17005  * @api public
17006  */
17007
17008 is.string = function (value) {
17009   return '[object String]' === toString.call(value);
17010 };
17011
17012
17013 },{}],10:[function(require,module,exports){
17014
17015 var hasOwn = Object.prototype.hasOwnProperty;
17016 var toString = Object.prototype.toString;
17017
17018 module.exports = function forEach (obj, fn, ctx) {
17019     if (toString.call(fn) !== '[object Function]') {
17020         throw new TypeError('iterator must be a function');
17021     }
17022     var l = obj.length;
17023     if (l === +l) {
17024         for (var i = 0; i < l; i++) {
17025             fn.call(ctx, obj[i], i, obj);
17026         }
17027     } else {
17028         for (var k in obj) {
17029             if (hasOwn.call(obj, k)) {
17030                 fn.call(ctx, obj[k], k, obj);
17031             }
17032         }
17033     }
17034 };
17035
17036
17037 },{}]},{},[1])(1)
17038 });
17039 ;
17040 /*
17041  (c) 2013, Vladimir Agafonkin
17042  RBush, a JavaScript library for high-performance 2D spatial indexing of points and rectangles.
17043  https://github.com/mourner/rbush
17044 */
17045
17046 (function () { 'use strict';
17047
17048 function rbush(maxEntries, format) {
17049
17050     // jshint newcap: false, validthis: true
17051     if (!(this instanceof rbush)) return new rbush(maxEntries, format);
17052
17053     // max entries in a node is 9 by default; min node fill is 40% for best performance
17054     this._maxEntries = Math.max(4, maxEntries || 9);
17055     this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));
17056
17057     if (format) {
17058         this._initFormat(format);
17059     }
17060
17061     this.clear();
17062 }
17063
17064 rbush.prototype = {
17065
17066     all: function () {
17067         return this._all(this.data, []);
17068     },
17069
17070     search: function (bbox) {
17071
17072         var node = this.data,
17073             result = [],
17074             toBBox = this.toBBox;
17075
17076         if (!intersects(bbox, node.bbox)) return result;
17077
17078         var nodesToSearch = [],
17079             i, len, child, childBBox;
17080
17081         while (node) {
17082             for (i = 0, len = node.children.length; i < len; i++) {
17083
17084                 child = node.children[i];
17085                 childBBox = node.leaf ? toBBox(child) : child.bbox;
17086
17087                 if (intersects(bbox, childBBox)) {
17088                     if (node.leaf) result.push(child);
17089                     else if (contains(bbox, childBBox)) this._all(child, result);
17090                     else nodesToSearch.push(child);
17091                 }
17092             }
17093             node = nodesToSearch.pop();
17094         }
17095
17096         return result;
17097     },
17098
17099     load: function (data) {
17100         if (!(data && data.length)) return this;
17101
17102         if (data.length < this._minEntries) {
17103             for (var i = 0, len = data.length; i < len; i++) {
17104                 this.insert(data[i]);
17105             }
17106             return this;
17107         }
17108
17109         // recursively build the tree with the given data from stratch using OMT algorithm
17110         var node = this._build(data.slice(), 0, data.length - 1, 0);
17111
17112         if (!this.data.children.length) {
17113             // save as is if tree is empty
17114             this.data = node;
17115
17116         } else if (this.data.height === node.height) {
17117             // split root if trees have the same height
17118             this._splitRoot(this.data, node);
17119
17120         } else {
17121             if (this.data.height < node.height) {
17122                 // swap trees if inserted one is bigger
17123                 var tmpNode = this.data;
17124                 this.data = node;
17125                 node = tmpNode;
17126             }
17127
17128             // insert the small tree into the large tree at appropriate level
17129             this._insert(node, this.data.height - node.height - 1, true);
17130         }
17131
17132         return this;
17133     },
17134
17135     insert: function (item) {
17136         if (item) this._insert(item, this.data.height - 1);
17137         return this;
17138     },
17139
17140     clear: function () {
17141         this.data = {
17142             children: [],
17143             height: 1,
17144             bbox: empty(),
17145             leaf: true
17146         };
17147         return this;
17148     },
17149
17150     remove: function (item) {
17151         if (!item) return this;
17152
17153         var node = this.data,
17154             bbox = this.toBBox(item),
17155             path = [],
17156             indexes = [],
17157             i, parent, index, goingUp;
17158
17159         // depth-first iterative tree traversal
17160         while (node || path.length) {
17161
17162             if (!node) { // go up
17163                 node = path.pop();
17164                 parent = path[path.length - 1];
17165                 i = indexes.pop();
17166                 goingUp = true;
17167             }
17168
17169             if (node.leaf) { // check current node
17170                 index = node.children.indexOf(item);
17171
17172                 if (index !== -1) {
17173                     // item found, remove the item and condense tree upwards
17174                     node.children.splice(index, 1);
17175                     path.push(node);
17176                     this._condense(path);
17177                     return this;
17178                 }
17179             }
17180
17181             if (!goingUp && !node.leaf && contains(node.bbox, bbox)) { // go down
17182                 path.push(node);
17183                 indexes.push(i);
17184                 i = 0;
17185                 parent = node;
17186                 node = node.children[0];
17187
17188             } else if (parent) { // go right
17189                 i++;
17190                 node = parent.children[i];
17191                 goingUp = false;
17192
17193             } else node = null; // nothing found
17194         }
17195
17196         return this;
17197     },
17198
17199     toBBox: function (item) { return item; },
17200
17201     compareMinX: function (a, b) { return a[0] - b[0]; },
17202     compareMinY: function (a, b) { return a[1] - b[1]; },
17203
17204     toJSON: function () { return this.data; },
17205
17206     fromJSON: function (data) {
17207         this.data = data;
17208         return this;
17209     },
17210
17211     _all: function (node, result) {
17212         var nodesToSearch = [];
17213         while (node) {
17214             if (node.leaf) result.push.apply(result, node.children);
17215             else nodesToSearch.push.apply(nodesToSearch, node.children);
17216
17217             node = nodesToSearch.pop();
17218         }
17219         return result;
17220     },
17221
17222     _build: function (items, left, right, level, height) {
17223
17224         var N = right - left + 1,
17225             M = this._maxEntries,
17226             node;
17227
17228         if (N <= M) {
17229             node = {
17230                 children: items.slice(left, right + 1),
17231                 height: 1,
17232                 bbox: null,
17233                 leaf: true
17234             };
17235             calcBBox(node, this.toBBox);
17236             return node;
17237         }
17238
17239         if (!level) {
17240             // target height of the bulk-loaded tree
17241             height = Math.ceil(Math.log(N) / Math.log(M));
17242
17243             // target number of root entries to maximize storage utilization
17244             M = Math.ceil(N / Math.pow(M, height - 1));
17245         }
17246
17247         // TODO eliminate recursion?
17248
17249         node = {
17250             children: [],
17251             height: height,
17252             bbox: null
17253         };
17254
17255         var N2 = Math.ceil(N / M),
17256             N1 = N2 * Math.ceil(Math.sqrt(M)),
17257             i, j, right2, childNode;
17258
17259         // split the items into M mostly square tiles
17260         for (i = left; i <= right; i += N1) {
17261
17262             if (i + N1 <= right) partitionSort(items, i, right, i + N1, this.compareMinX);
17263             right2 = Math.min(i + N1 - 1, right);
17264
17265             for (j = i; j <= right2; j += N2) {
17266
17267                 if (j + N2 <= right2) partitionSort(items, j, right2, j + N2, this.compareMinY);
17268
17269                 // pack each entry recursively
17270                 childNode = this._build(items, j, Math.min(j + N2 - 1, right2), level + 1, height - 1);
17271                 node.children.push(childNode);
17272             }
17273         }
17274
17275         calcBBox(node, this.toBBox);
17276
17277         return node;
17278     },
17279
17280     _chooseSubtree: function (bbox, node, level, path) {
17281
17282         var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;
17283
17284         while (true) {
17285             path.push(node);
17286
17287             if (node.leaf || path.length - 1 === level) break;
17288
17289             minArea = minEnlargement = Infinity;
17290
17291             for (i = 0, len = node.children.length; i < len; i++) {
17292                 child = node.children[i];
17293                 area = bboxArea(child.bbox);
17294                 enlargement = enlargedArea(bbox, child.bbox) - area;
17295
17296                 // choose entry with the least area enlargement
17297                 if (enlargement < minEnlargement) {
17298                     minEnlargement = enlargement;
17299                     minArea = area < minArea ? area : minArea;
17300                     targetNode = child;
17301
17302                 } else if (enlargement === minEnlargement) {
17303                     // otherwise choose one with the smallest area
17304                     if (area < minArea) {
17305                         minArea = area;
17306                         targetNode = child;
17307                     }
17308                 }
17309             }
17310
17311             node = targetNode;
17312         }
17313
17314         return node;
17315     },
17316
17317     _insert: function (item, level, isNode) {
17318
17319         var toBBox = this.toBBox,
17320             bbox = isNode ? item.bbox : toBBox(item),
17321             insertPath = [];
17322
17323         // find the best node for accommodating the item, saving all nodes along the path too
17324         var node = this._chooseSubtree(bbox, this.data, level, insertPath);
17325
17326         // put the item into the node
17327         node.children.push(item);
17328         extend(node.bbox, bbox);
17329
17330         // split on node overflow; propagate upwards if necessary
17331         while (level >= 0) {
17332             if (insertPath[level].children.length > this._maxEntries) {
17333                 this._split(insertPath, level);
17334                 level--;
17335             } else break;
17336         }
17337
17338         // adjust bboxes along the insertion path
17339         this._adjustParentBBoxes(bbox, insertPath, level);
17340     },
17341
17342     // split overflowed node into two
17343     _split: function (insertPath, level) {
17344
17345         var node = insertPath[level],
17346             M = node.children.length,
17347             m = this._minEntries;
17348
17349         this._chooseSplitAxis(node, m, M);
17350
17351         var newNode = {
17352             children: node.children.splice(this._chooseSplitIndex(node, m, M)),
17353             height: node.height
17354         };
17355
17356         if (node.leaf) newNode.leaf = true;
17357
17358         calcBBox(node, this.toBBox);
17359         calcBBox(newNode, this.toBBox);
17360
17361         if (level) insertPath[level - 1].children.push(newNode);
17362         else this._splitRoot(node, newNode);
17363     },
17364
17365     _splitRoot: function (node, newNode) {
17366         // split root node
17367         this.data = {
17368             children: [node, newNode],
17369             height: node.height + 1
17370         };
17371         calcBBox(this.data, this.toBBox);
17372     },
17373
17374     _chooseSplitIndex: function (node, m, M) {
17375
17376         var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;
17377
17378         minOverlap = minArea = Infinity;
17379
17380         for (i = m; i <= M - m; i++) {
17381             bbox1 = distBBox(node, 0, i, this.toBBox);
17382             bbox2 = distBBox(node, i, M, this.toBBox);
17383
17384             overlap = intersectionArea(bbox1, bbox2);
17385             area = bboxArea(bbox1) + bboxArea(bbox2);
17386
17387             // choose distribution with minimum overlap
17388             if (overlap < minOverlap) {
17389                 minOverlap = overlap;
17390                 index = i;
17391
17392                 minArea = area < minArea ? area : minArea;
17393
17394             } else if (overlap === minOverlap) {
17395                 // otherwise choose distribution with minimum area
17396                 if (area < minArea) {
17397                     minArea = area;
17398                     index = i;
17399                 }
17400             }
17401         }
17402
17403         return index;
17404     },
17405
17406     // sorts node children by the best axis for split
17407     _chooseSplitAxis: function (node, m, M) {
17408
17409         var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,
17410             compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,
17411             xMargin = this._allDistMargin(node, m, M, compareMinX),
17412             yMargin = this._allDistMargin(node, m, M, compareMinY);
17413
17414         // if total distributions margin value is minimal for x, sort by minX,
17415         // otherwise it's already sorted by minY
17416         if (xMargin < yMargin) node.children.sort(compareMinX);
17417     },
17418
17419     // total margin of all possible split distributions where each node is at least m full
17420     _allDistMargin: function (node, m, M, compare) {
17421
17422         node.children.sort(compare);
17423
17424         var toBBox = this.toBBox,
17425             leftBBox = distBBox(node, 0, m, toBBox),
17426             rightBBox = distBBox(node, M - m, M, toBBox),
17427             margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),
17428             i, child;
17429
17430         for (i = m; i < M - m; i++) {
17431             child = node.children[i];
17432             extend(leftBBox, node.leaf ? toBBox(child) : child.bbox);
17433             margin += bboxMargin(leftBBox);
17434         }
17435
17436         for (i = M - m - 1; i >= m; i--) {
17437             child = node.children[i];
17438             extend(rightBBox, node.leaf ? toBBox(child) : child.bbox);
17439             margin += bboxMargin(rightBBox);
17440         }
17441
17442         return margin;
17443     },
17444
17445     _adjustParentBBoxes: function (bbox, path, level) {
17446         // adjust bboxes along the given tree path
17447         for (var i = level; i >= 0; i--) {
17448             extend(path[i].bbox, bbox);
17449         }
17450     },
17451
17452     _condense: function (path) {
17453         // go through the path, removing empty nodes and updating bboxes
17454         for (var i = path.length - 1, siblings; i >= 0; i--) {
17455             if (path[i].children.length === 0) {
17456                 if (i > 0) {
17457                     siblings = path[i - 1].children;
17458                     siblings.splice(siblings.indexOf(path[i]), 1);
17459
17460                 } else this.clear();
17461
17462             } else calcBBox(path[i], this.toBBox);
17463         }
17464     },
17465
17466     _initFormat: function (format) {
17467         // data format (minX, minY, maxX, maxY accessors)
17468
17469         // uses eval-type function compilation instead of just accepting a toBBox function
17470         // because the algorithms are very sensitive to sorting functions performance,
17471         // so they should be dead simple and without inner calls
17472
17473         // jshint evil: true
17474
17475         var compareArr = ['return a', ' - b', ';'];
17476
17477         this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));
17478         this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));
17479
17480         this.toBBox = new Function('a', 'return [a' + format.join(', a') + '];');
17481     }
17482 };
17483
17484 // calculate node's bbox from bboxes of its children
17485 function calcBBox(node, toBBox) {
17486     node.bbox = distBBox(node, 0, node.children.length, toBBox);
17487 }
17488
17489 // min bounding rectangle of node children from k to p-1
17490 function distBBox(node, k, p, toBBox) {
17491     var bbox = empty();
17492
17493     for (var i = k, child; i < p; i++) {
17494         child = node.children[i];
17495         extend(bbox, node.leaf ? toBBox(child) : child.bbox);
17496     }
17497
17498     return bbox;
17499 }
17500
17501
17502 function empty() { return [Infinity, Infinity, -Infinity, -Infinity]; }
17503
17504 function extend(a, b) {
17505     a[0] = Math.min(a[0], b[0]);
17506     a[1] = Math.min(a[1], b[1]);
17507     a[2] = Math.max(a[2], b[2]);
17508     a[3] = Math.max(a[3], b[3]);
17509     return a;
17510 }
17511
17512 function compareNodeMinX(a, b) { return a.bbox[0] - b.bbox[0]; }
17513 function compareNodeMinY(a, b) { return a.bbox[1] - b.bbox[1]; }
17514
17515 function bboxArea(a)   { return (a[2] - a[0]) * (a[3] - a[1]); }
17516 function bboxMargin(a) { return (a[2] - a[0]) + (a[3] - a[1]); }
17517
17518 function enlargedArea(a, b) {
17519     return (Math.max(b[2], a[2]) - Math.min(b[0], a[0])) *
17520            (Math.max(b[3], a[3]) - Math.min(b[1], a[1]));
17521 }
17522
17523 function intersectionArea (a, b) {
17524     var minX = Math.max(a[0], b[0]),
17525         minY = Math.max(a[1], b[1]),
17526         maxX = Math.min(a[2], b[2]),
17527         maxY = Math.min(a[3], b[3]);
17528
17529     return Math.max(0, maxX - minX) *
17530            Math.max(0, maxY - minY);
17531 }
17532
17533 function contains(a, b) {
17534     return a[0] <= b[0] &&
17535            a[1] <= b[1] &&
17536            b[2] <= a[2] &&
17537            b[3] <= a[3];
17538 }
17539
17540 function intersects (a, b) {
17541     return b[0] <= a[2] &&
17542            b[1] <= a[3] &&
17543            b[2] >= a[0] &&
17544            b[3] >= a[1];
17545 }
17546
17547
17548 function partitionSort(arr, left, right, k, compare) {
17549     var pivot;
17550
17551     while (true) {
17552         pivot = Math.floor((left + right) / 2);
17553         pivot = partition(arr, left, right, pivot, compare);
17554
17555         if (k === pivot) break;
17556         else if (k < pivot) right = pivot - 1;
17557         else left = pivot + 1;
17558     }
17559
17560     partition(arr, left, right, k, compare);
17561 }
17562
17563 function partition(arr, left, right, pivot, compare) {
17564     var k = left,
17565         value = arr[pivot];
17566
17567     swap(arr, pivot, right);
17568
17569     for (var i = left; i < right; i++) {
17570         if (compare(arr[i], value) < 0) {
17571             swap(arr, k, i);
17572             k++;
17573         }
17574     }
17575     swap(arr, right, k);
17576
17577     return k;
17578 }
17579
17580 function swap(arr, i, j) {
17581     var tmp = arr[i];
17582     arr[i] = arr[j];
17583     arr[j] = tmp;
17584 }
17585
17586
17587 // export as AMD/CommonJS module or global variable
17588 if (typeof define === 'function' && define.amd) define(function() { return rbush; });
17589 else if (typeof module !== 'undefined') module.exports = rbush;
17590 else if (typeof self !== 'undefined') self.rbush = rbush;
17591 else window.rbush = rbush;
17592
17593 })();(function(e){if("function"==typeof bootstrap)bootstrap("sexagesimal",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeSexagesimal=e}else"undefined"!=typeof window?window.sexagesimal=e():global.sexagesimal=e()})(function(){var define,ses,bootstrap,module,exports;
17594 return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
17595 module.exports = element;
17596 module.exports.pair = pair;
17597 module.exports.format = format;
17598 module.exports.formatPair = formatPair;
17599
17600 function element(x, dims) {
17601     return search(x, dims).val;
17602 }
17603
17604 function formatPair(x) {
17605     return format(x.lat, 'lat') + ' ' + format(x.lon, 'lon');
17606 }
17607
17608 // Is 0 North or South?
17609 function format(x, dim) {
17610     var dirs = {
17611             lat: ['N', 'S'],
17612             lon: ['E', 'W']
17613         }[dim] || '',
17614         dir = dirs[x >= 0 ? 0 : 1],
17615         abs = Math.abs(x),
17616         whole = Math.floor(abs),
17617         fraction = abs - whole,
17618         fractionMinutes = fraction * 60,
17619         minutes = Math.floor(fractionMinutes),
17620         seconds = Math.floor((fractionMinutes - minutes) * 60);
17621
17622     return whole + '° ' +
17623         (minutes ? minutes + "' " : '') +
17624         (seconds ? seconds + '" ' : '') + dir;
17625 }
17626
17627 function search(x, dims, r) {
17628     if (!dims) dims = 'NSEW';
17629     if (typeof x !== 'string') return { val: null, regex: r };
17630     r = r || /[\s\,]*([\-|\—|\―]?[0-9.]+)°? *(?:([0-9.]+)['’′‘] *)?(?:([0-9.]+)(?:''|"|”|″) *)?([NSEW])?/gi;
17631     var m = r.exec(x);
17632     if (!m) return { val: null, regex: r };
17633     else if (m[4] && dims.indexOf(m[4]) === -1) return { val: null, regex: r };
17634     else return {
17635         val: (((m[1]) ? parseFloat(m[1]) : 0) +
17636             ((m[2] ? parseFloat(m[2]) / 60 : 0)) +
17637             ((m[3] ? parseFloat(m[3]) / 3600 : 0))) *
17638             ((m[4] && m[4] === 'S' || m[4] === 'W') ? -1 : 1),
17639         regex: r,
17640         raw: m[0],
17641         dim: m[4]
17642     };
17643 }
17644
17645 function pair(x, dims) {
17646     x = x.trim();
17647     var one = search(x, dims);
17648     if (one.val === null) return null;
17649     var two = search(x, dims, one.regex);
17650     if (two.val === null) return null;
17651     // null if one/two are not contiguous.
17652     if (one.raw + two.raw !== x) return null;
17653     if (one.dim) return swapdim(one.val, two.val, one.dim);
17654     else return [one.val, two.val];
17655 }
17656
17657 function swapdim(a, b, dim) {
17658     if (dim == 'N' || dim == 'S') return [a, b];
17659     if (dim == 'W' || dim == 'E') return [b, a];
17660 }
17661
17662 },{}]},{},[1])
17663 (1)
17664 });
17665 ;toGeoJSON = (function() {
17666     'use strict';
17667
17668     var removeSpace = (/\s*/g),
17669         trimSpace = (/^\s*|\s*$/g),
17670         splitSpace = (/\s+/);
17671     // generate a short, numeric hash of a string
17672     function okhash(x) {
17673         if (!x || !x.length) return 0;
17674         for (var i = 0, h = 0; i < x.length; i++) {
17675             h = ((h << 5) - h) + x.charCodeAt(i) | 0;
17676         } return h;
17677     }
17678     // all Y children of X
17679     function get(x, y) { return x.getElementsByTagName(y); }
17680     function attr(x, y) { return x.getAttribute(y); }
17681     function attrf(x, y) { return parseFloat(attr(x, y)); }
17682     // one Y child of X, if any, otherwise null
17683     function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
17684     // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
17685     function norm(el) { if (el.normalize) { el.normalize(); } return el; }
17686     // cast array x into numbers
17687     function numarray(x) {
17688         for (var j = 0, o = []; j < x.length; j++) o[j] = parseFloat(x[j]);
17689         return o;
17690     }
17691     function clean(x) {
17692         var o = {};
17693         for (var i in x) if (x[i]) o[i] = x[i];
17694         return o;
17695     }
17696     // get the content of a text node, if any
17697     function nodeVal(x) { if (x) {norm(x);} return x && x.firstChild && x.firstChild.nodeValue; }
17698     // get one coordinate from a coordinate array, if any
17699     function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
17700     // get all coordinates from a coordinate array as [[],[]]
17701     function coord(v) {
17702         var coords = v.replace(trimSpace, '').split(splitSpace),
17703             o = [];
17704         for (var i = 0; i < coords.length; i++) {
17705             o.push(coord1(coords[i]));
17706         }
17707         return o;
17708     }
17709     function coordPair(x) { return [attrf(x, 'lon'), attrf(x, 'lat')]; }
17710
17711     // create a new feature collection parent object
17712     function fc() {
17713         return {
17714             type: 'FeatureCollection',
17715             features: []
17716         };
17717     }
17718
17719     var styleSupport = false;
17720     if (typeof XMLSerializer !== 'undefined') {
17721         var serializer = new XMLSerializer();
17722         styleSupport = true;
17723     }
17724     function xml2str(str) { return serializer.serializeToString(str); }
17725
17726     var t = {
17727         kml: function(doc, o) {
17728             o = o || {};
17729
17730             var gj = fc(),
17731                 // styleindex keeps track of hashed styles in order to match features
17732                 styleIndex = {},
17733                 // atomic geospatial types supported by KML - MultiGeometry is
17734                 // handled separately
17735                 geotypes = ['Polygon', 'LineString', 'Point', 'Track'],
17736                 // all root placemarks in the file
17737                 placemarks = get(doc, 'Placemark'),
17738                 styles = get(doc, 'Style');
17739
17740             if (styleSupport) for (var k = 0; k < styles.length; k++) {
17741                 styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
17742             }
17743             for (var j = 0; j < placemarks.length; j++) {
17744                 gj.features = gj.features.concat(getPlacemark(placemarks[j]));
17745             }
17746             function gxCoord(v) { return numarray(v.split(' ')); }
17747             function gxCoords(root) {
17748                 var elems = get(root, 'coord', 'gx'), coords = [];
17749                 for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
17750                 return coords;
17751             }
17752             function getGeometry(root) {
17753                 var geomNode, geomNodes, i, j, k, geoms = [];
17754                 if (get1(root, 'MultiGeometry')) return getGeometry(get1(root, 'MultiGeometry'));
17755                 if (get1(root, 'MultiTrack')) return getGeometry(get1(root, 'MultiTrack'));
17756                 for (i = 0; i < geotypes.length; i++) {
17757                     geomNodes = get(root, geotypes[i]);
17758                     if (geomNodes) {
17759                         for (j = 0; j < geomNodes.length; j++) {
17760                             geomNode = geomNodes[j];
17761                             if (geotypes[i] == 'Point') {
17762                                 geoms.push({
17763                                     type: 'Point',
17764                                     coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
17765                                 });
17766                             } else if (geotypes[i] == 'LineString') {
17767                                 geoms.push({
17768                                     type: 'LineString',
17769                                     coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
17770                                 });
17771                             } else if (geotypes[i] == 'Polygon') {
17772                                 var rings = get(geomNode, 'LinearRing'),
17773                                     coords = [];
17774                                 for (k = 0; k < rings.length; k++) {
17775                                     coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
17776                                 }
17777                                 geoms.push({
17778                                     type: 'Polygon',
17779                                     coordinates: coords
17780                                 });
17781                             } else if (geotypes[i] == 'Track') {
17782                                 geoms.push({
17783                                     type: 'LineString',
17784                                     coordinates: gxCoords(geomNode)
17785                                 });
17786                             }
17787                         }
17788                     }
17789                 }
17790                 return geoms;
17791             }
17792             function getPlacemark(root) {
17793                 var geoms = getGeometry(root), i, properties = {},
17794                     name = nodeVal(get1(root, 'name')),
17795                     styleUrl = nodeVal(get1(root, 'styleUrl')),
17796                     description = nodeVal(get1(root, 'description')),
17797                     extendedData = get1(root, 'ExtendedData');
17798
17799                 if (!geoms.length) return [];
17800                 if (name) properties.name = name;
17801                 if (styleUrl && styleIndex[styleUrl]) {
17802                     properties.styleUrl = styleUrl;
17803                     properties.styleHash = styleIndex[styleUrl];
17804                 }
17805                 if (description) properties.description = description;
17806                 if (extendedData) {
17807                     var datas = get(extendedData, 'Data'),
17808                         simpleDatas = get(extendedData, 'SimpleData');
17809
17810                     for (i = 0; i < datas.length; i++) {
17811                         properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
17812                     }
17813                     for (i = 0; i < simpleDatas.length; i++) {
17814                         properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
17815                     }
17816                 }
17817                 return [{
17818                     type: 'Feature',
17819                     geometry: (geoms.length === 1) ? geoms[0] : {
17820                         type: 'GeometryCollection',
17821                         geometries: geoms
17822                     },
17823                     properties: properties
17824                 }];
17825             }
17826             return gj;
17827         },
17828         gpx: function(doc, o) {
17829             var i,
17830                 tracks = get(doc, 'trk'),
17831                 routes = get(doc, 'rte'),
17832                 waypoints = get(doc, 'wpt'),
17833                 // a feature collection
17834                 gj = fc();
17835             for (i = 0; i < tracks.length; i++) {
17836                 gj.features.push(getLinestring(tracks[i], 'trkpt'));
17837             }
17838             for (i = 0; i < routes.length; i++) {
17839                 gj.features.push(getLinestring(routes[i], 'rtept'));
17840             }
17841             for (i = 0; i < waypoints.length; i++) {
17842                 gj.features.push(getPoint(waypoints[i]));
17843             }
17844             function getLinestring(node, pointname) {
17845                 var j, pts = get(node, pointname), line = [];
17846                 for (j = 0; j < pts.length; j++) {
17847                     line.push(coordPair(pts[j]));
17848                 }
17849                 return {
17850                     type: 'Feature',
17851                     properties: getProperties(node),
17852                     geometry: {
17853                         type: 'LineString',
17854                         coordinates: line
17855                     }
17856                 };
17857             }
17858             function getPoint(node) {
17859                 var prop = getProperties(node);
17860                 prop.ele = nodeVal(get1(node, 'ele'));
17861                 prop.sym = nodeVal(get1(node, 'sym'));
17862                 return {
17863                     type: 'Feature',
17864                     properties: prop,
17865                     geometry: {
17866                         type: 'Point',
17867                         coordinates: coordPair(node)
17868                     }
17869                 };
17870             }
17871             function getProperties(node) {
17872                 var meta = ['name', 'desc', 'author', 'copyright', 'link',
17873                             'time', 'keywords'],
17874                     prop = {},
17875                     k;
17876                 for (k = 0; k < meta.length; k++) {
17877                     prop[meta[k]] = nodeVal(get1(node, meta[k]));
17878                 }
17879                 return clean(prop);
17880             }
17881             return gj;
17882         }
17883     };
17884     return t;
17885 })();
17886
17887 if (typeof module !== 'undefined') module.exports = toGeoJSON;
17888 /**
17889  * marked - a markdown parser
17890  * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed)
17891  * https://github.com/chjj/marked
17892  */
17893
17894 ;(function() {
17895
17896 /**
17897  * Block-Level Grammar
17898  */
17899
17900 var block = {
17901   newline: /^\n+/,
17902   code: /^( {4}[^\n]+\n*)+/,
17903   fences: noop,
17904   hr: /^( *[-*_]){3,} *(?:\n+|$)/,
17905   heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
17906   nptable: noop,
17907   lheading: /^([^\n]+)\n *(=|-){3,} *\n*/,
17908   blockquote: /^( *>[^\n]+(\n[^\n]+)*\n*)+/,
17909   list: /^( *)(bull) [\s\S]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
17910   html: /^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,
17911   def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
17912   table: noop,
17913   paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
17914   text: /^[^\n]+/
17915 };
17916
17917 block.bullet = /(?:[*+-]|\d+\.)/;
17918 block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
17919 block.item = replace(block.item, 'gm')
17920   (/bull/g, block.bullet)
17921   ();
17922
17923 block.list = replace(block.list)
17924   (/bull/g, block.bullet)
17925   ('hr', /\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)
17926   ();
17927
17928 block._tag = '(?!(?:'
17929   + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
17930   + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
17931   + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b';
17932
17933 block.html = replace(block.html)
17934   ('comment', /<!--[\s\S]*?-->/)
17935   ('closed', /<(tag)[\s\S]+?<\/\1>/)
17936   ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
17937   (/tag/g, block._tag)
17938   ();
17939
17940 block.paragraph = replace(block.paragraph)
17941   ('hr', block.hr)
17942   ('heading', block.heading)
17943   ('lheading', block.lheading)
17944   ('blockquote', block.blockquote)
17945   ('tag', '<' + block._tag)
17946   ('def', block.def)
17947   ();
17948
17949 /**
17950  * Normal Block Grammar
17951  */
17952
17953 block.normal = merge({}, block);
17954
17955 /**
17956  * GFM Block Grammar
17957  */
17958
17959 block.gfm = merge({}, block.normal, {
17960   fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,
17961   paragraph: /^/
17962 });
17963
17964 block.gfm.paragraph = replace(block.paragraph)
17965   ('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|')
17966   ();
17967
17968 /**
17969  * GFM + Tables Block Grammar
17970  */
17971
17972 block.tables = merge({}, block.gfm, {
17973   nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
17974   table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
17975 });
17976
17977 /**
17978  * Block Lexer
17979  */
17980
17981 function Lexer(options) {
17982   this.tokens = [];
17983   this.tokens.links = {};
17984   this.options = options || marked.defaults;
17985   this.rules = block.normal;
17986
17987   if (this.options.gfm) {
17988     if (this.options.tables) {
17989       this.rules = block.tables;
17990     } else {
17991       this.rules = block.gfm;
17992     }
17993   }
17994 }
17995
17996 /**
17997  * Expose Block Rules
17998  */
17999
18000 Lexer.rules = block;
18001
18002 /**
18003  * Static Lex Method
18004  */
18005
18006 Lexer.lex = function(src, options) {
18007   var lexer = new Lexer(options);
18008   return lexer.lex(src);
18009 };
18010
18011 /**
18012  * Preprocessing
18013  */
18014
18015 Lexer.prototype.lex = function(src) {
18016   src = src
18017     .replace(/\r\n|\r/g, '\n')
18018     .replace(/\t/g, '    ')
18019     .replace(/\u00a0/g, ' ')
18020     .replace(/\u2424/g, '\n');
18021
18022   return this.token(src, true);
18023 };
18024
18025 /**
18026  * Lexing
18027  */
18028
18029 Lexer.prototype.token = function(src, top) {
18030   var src = src.replace(/^ +$/gm, '')
18031     , next
18032     , loose
18033     , cap
18034     , bull
18035     , b
18036     , item
18037     , space
18038     , i
18039     , l;
18040
18041   while (src) {
18042     // newline
18043     if (cap = this.rules.newline.exec(src)) {
18044       src = src.substring(cap[0].length);
18045       if (cap[0].length > 1) {
18046         this.tokens.push({
18047           type: 'space'
18048         });
18049       }
18050     }
18051
18052     // code
18053     if (cap = this.rules.code.exec(src)) {
18054       src = src.substring(cap[0].length);
18055       cap = cap[0].replace(/^ {4}/gm, '');
18056       this.tokens.push({
18057         type: 'code',
18058         text: !this.options.pedantic
18059           ? cap.replace(/\n+$/, '')
18060           : cap
18061       });
18062       continue;
18063     }
18064
18065     // fences (gfm)
18066     if (cap = this.rules.fences.exec(src)) {
18067       src = src.substring(cap[0].length);
18068       this.tokens.push({
18069         type: 'code',
18070         lang: cap[2],
18071         text: cap[3]
18072       });
18073       continue;
18074     }
18075
18076     // heading
18077     if (cap = this.rules.heading.exec(src)) {
18078       src = src.substring(cap[0].length);
18079       this.tokens.push({
18080         type: 'heading',
18081         depth: cap[1].length,
18082         text: cap[2]
18083       });
18084       continue;
18085     }
18086
18087     // table no leading pipe (gfm)
18088     if (top && (cap = this.rules.nptable.exec(src))) {
18089       src = src.substring(cap[0].length);
18090
18091       item = {
18092         type: 'table',
18093         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18094         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18095         cells: cap[3].replace(/\n$/, '').split('\n')
18096       };
18097
18098       for (i = 0; i < item.align.length; i++) {
18099         if (/^ *-+: *$/.test(item.align[i])) {
18100           item.align[i] = 'right';
18101         } else if (/^ *:-+: *$/.test(item.align[i])) {
18102           item.align[i] = 'center';
18103         } else if (/^ *:-+ *$/.test(item.align[i])) {
18104           item.align[i] = 'left';
18105         } else {
18106           item.align[i] = null;
18107         }
18108       }
18109
18110       for (i = 0; i < item.cells.length; i++) {
18111         item.cells[i] = item.cells[i].split(/ *\| */);
18112       }
18113
18114       this.tokens.push(item);
18115
18116       continue;
18117     }
18118
18119     // lheading
18120     if (cap = this.rules.lheading.exec(src)) {
18121       src = src.substring(cap[0].length);
18122       this.tokens.push({
18123         type: 'heading',
18124         depth: cap[2] === '=' ? 1 : 2,
18125         text: cap[1]
18126       });
18127       continue;
18128     }
18129
18130     // hr
18131     if (cap = this.rules.hr.exec(src)) {
18132       src = src.substring(cap[0].length);
18133       this.tokens.push({
18134         type: 'hr'
18135       });
18136       continue;
18137     }
18138
18139     // blockquote
18140     if (cap = this.rules.blockquote.exec(src)) {
18141       src = src.substring(cap[0].length);
18142
18143       this.tokens.push({
18144         type: 'blockquote_start'
18145       });
18146
18147       cap = cap[0].replace(/^ *> ?/gm, '');
18148
18149       // Pass `top` to keep the current
18150       // "toplevel" state. This is exactly
18151       // how markdown.pl works.
18152       this.token(cap, top);
18153
18154       this.tokens.push({
18155         type: 'blockquote_end'
18156       });
18157
18158       continue;
18159     }
18160
18161     // list
18162     if (cap = this.rules.list.exec(src)) {
18163       src = src.substring(cap[0].length);
18164       bull = cap[2];
18165
18166       this.tokens.push({
18167         type: 'list_start',
18168         ordered: bull.length > 1
18169       });
18170
18171       // Get each top-level item.
18172       cap = cap[0].match(this.rules.item);
18173
18174       next = false;
18175       l = cap.length;
18176       i = 0;
18177
18178       for (; i < l; i++) {
18179         item = cap[i];
18180
18181         // Remove the list item's bullet
18182         // so it is seen as the next token.
18183         space = item.length;
18184         item = item.replace(/^ *([*+-]|\d+\.) +/, '');
18185
18186         // Outdent whatever the
18187         // list item contains. Hacky.
18188         if (~item.indexOf('\n ')) {
18189           space -= item.length;
18190           item = !this.options.pedantic
18191             ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
18192             : item.replace(/^ {1,4}/gm, '');
18193         }
18194
18195         // Determine whether the next list item belongs here.
18196         // Backpedal if it does not belong in this list.
18197         if (this.options.smartLists && i !== l - 1) {
18198           b = block.bullet.exec(cap[i+1])[0];
18199           if (bull !== b && !(bull.length > 1 && b.length > 1)) {
18200             src = cap.slice(i + 1).join('\n') + src;
18201             i = l - 1;
18202           }
18203         }
18204
18205         // Determine whether item is loose or not.
18206         // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
18207         // for discount behavior.
18208         loose = next || /\n\n(?!\s*$)/.test(item);
18209         if (i !== l - 1) {
18210           next = item[item.length-1] === '\n';
18211           if (!loose) loose = next;
18212         }
18213
18214         this.tokens.push({
18215           type: loose
18216             ? 'loose_item_start'
18217             : 'list_item_start'
18218         });
18219
18220         // Recurse.
18221         this.token(item, false);
18222
18223         this.tokens.push({
18224           type: 'list_item_end'
18225         });
18226       }
18227
18228       this.tokens.push({
18229         type: 'list_end'
18230       });
18231
18232       continue;
18233     }
18234
18235     // html
18236     if (cap = this.rules.html.exec(src)) {
18237       src = src.substring(cap[0].length);
18238       this.tokens.push({
18239         type: this.options.sanitize
18240           ? 'paragraph'
18241           : 'html',
18242         pre: cap[1] === 'pre' || cap[1] === 'script',
18243         text: cap[0]
18244       });
18245       continue;
18246     }
18247
18248     // def
18249     if (top && (cap = this.rules.def.exec(src))) {
18250       src = src.substring(cap[0].length);
18251       this.tokens.links[cap[1].toLowerCase()] = {
18252         href: cap[2],
18253         title: cap[3]
18254       };
18255       continue;
18256     }
18257
18258     // table (gfm)
18259     if (top && (cap = this.rules.table.exec(src))) {
18260       src = src.substring(cap[0].length);
18261
18262       item = {
18263         type: 'table',
18264         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18265         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18266         cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
18267       };
18268
18269       for (i = 0; i < item.align.length; i++) {
18270         if (/^ *-+: *$/.test(item.align[i])) {
18271           item.align[i] = 'right';
18272         } else if (/^ *:-+: *$/.test(item.align[i])) {
18273           item.align[i] = 'center';
18274         } else if (/^ *:-+ *$/.test(item.align[i])) {
18275           item.align[i] = 'left';
18276         } else {
18277           item.align[i] = null;
18278         }
18279       }
18280
18281       for (i = 0; i < item.cells.length; i++) {
18282         item.cells[i] = item.cells[i]
18283           .replace(/^ *\| *| *\| *$/g, '')
18284           .split(/ *\| */);
18285       }
18286
18287       this.tokens.push(item);
18288
18289       continue;
18290     }
18291
18292     // top-level paragraph
18293     if (top && (cap = this.rules.paragraph.exec(src))) {
18294       src = src.substring(cap[0].length);
18295       this.tokens.push({
18296         type: 'paragraph',
18297         text: cap[1][cap[1].length-1] === '\n'
18298           ? cap[1].slice(0, -1)
18299           : cap[1]
18300       });
18301       continue;
18302     }
18303
18304     // text
18305     if (cap = this.rules.text.exec(src)) {
18306       // Top-level should never reach here.
18307       src = src.substring(cap[0].length);
18308       this.tokens.push({
18309         type: 'text',
18310         text: cap[0]
18311       });
18312       continue;
18313     }
18314
18315     if (src) {
18316       throw new
18317         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18318     }
18319   }
18320
18321   return this.tokens;
18322 };
18323
18324 /**
18325  * Inline-Level Grammar
18326  */
18327
18328 var inline = {
18329   escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
18330   autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
18331   url: noop,
18332   tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
18333   link: /^!?\[(inside)\]\(href\)/,
18334   reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
18335   nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
18336   strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
18337   em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
18338   code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
18339   br: /^ {2,}\n(?!\s*$)/,
18340   del: noop,
18341   text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
18342 };
18343
18344 inline._inside = /(?:\[[^\]]*\]|[^\]]|\](?=[^\[]*\]))*/;
18345 inline._href = /\s*<?([^\s]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
18346
18347 inline.link = replace(inline.link)
18348   ('inside', inline._inside)
18349   ('href', inline._href)
18350   ();
18351
18352 inline.reflink = replace(inline.reflink)
18353   ('inside', inline._inside)
18354   ();
18355
18356 /**
18357  * Normal Inline Grammar
18358  */
18359
18360 inline.normal = merge({}, inline);
18361
18362 /**
18363  * Pedantic Inline Grammar
18364  */
18365
18366 inline.pedantic = merge({}, inline.normal, {
18367   strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
18368   em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
18369 });
18370
18371 /**
18372  * GFM Inline Grammar
18373  */
18374
18375 inline.gfm = merge({}, inline.normal, {
18376   escape: replace(inline.escape)('])', '~|])')(),
18377   url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
18378   del: /^~~(?=\S)([\s\S]*?\S)~~/,
18379   text: replace(inline.text)
18380     (']|', '~]|')
18381     ('|', '|https?://|')
18382     ()
18383 });
18384
18385 /**
18386  * GFM + Line Breaks Inline Grammar
18387  */
18388
18389 inline.breaks = merge({}, inline.gfm, {
18390   br: replace(inline.br)('{2,}', '*')(),
18391   text: replace(inline.gfm.text)('{2,}', '*')()
18392 });
18393
18394 /**
18395  * Inline Lexer & Compiler
18396  */
18397
18398 function InlineLexer(links, options) {
18399   this.options = options || marked.defaults;
18400   this.links = links;
18401   this.rules = inline.normal;
18402
18403   if (!this.links) {
18404     throw new
18405       Error('Tokens array requires a `links` property.');
18406   }
18407
18408   if (this.options.gfm) {
18409     if (this.options.breaks) {
18410       this.rules = inline.breaks;
18411     } else {
18412       this.rules = inline.gfm;
18413     }
18414   } else if (this.options.pedantic) {
18415     this.rules = inline.pedantic;
18416   }
18417 }
18418
18419 /**
18420  * Expose Inline Rules
18421  */
18422
18423 InlineLexer.rules = inline;
18424
18425 /**
18426  * Static Lexing/Compiling Method
18427  */
18428
18429 InlineLexer.output = function(src, links, options) {
18430   var inline = new InlineLexer(links, options);
18431   return inline.output(src);
18432 };
18433
18434 /**
18435  * Lexing/Compiling
18436  */
18437
18438 InlineLexer.prototype.output = function(src) {
18439   var out = ''
18440     , link
18441     , text
18442     , href
18443     , cap;
18444
18445   while (src) {
18446     // escape
18447     if (cap = this.rules.escape.exec(src)) {
18448       src = src.substring(cap[0].length);
18449       out += cap[1];
18450       continue;
18451     }
18452
18453     // autolink
18454     if (cap = this.rules.autolink.exec(src)) {
18455       src = src.substring(cap[0].length);
18456       if (cap[2] === '@') {
18457         text = cap[1][6] === ':'
18458           ? this.mangle(cap[1].substring(7))
18459           : this.mangle(cap[1]);
18460         href = this.mangle('mailto:') + text;
18461       } else {
18462         text = escape(cap[1]);
18463         href = text;
18464       }
18465       out += '<a href="'
18466         + href
18467         + '">'
18468         + text
18469         + '</a>';
18470       continue;
18471     }
18472
18473     // url (gfm)
18474     if (cap = this.rules.url.exec(src)) {
18475       src = src.substring(cap[0].length);
18476       text = escape(cap[1]);
18477       href = text;
18478       out += '<a href="'
18479         + href
18480         + '">'
18481         + text
18482         + '</a>';
18483       continue;
18484     }
18485
18486     // tag
18487     if (cap = this.rules.tag.exec(src)) {
18488       src = src.substring(cap[0].length);
18489       out += this.options.sanitize
18490         ? escape(cap[0])
18491         : cap[0];
18492       continue;
18493     }
18494
18495     // link
18496     if (cap = this.rules.link.exec(src)) {
18497       src = src.substring(cap[0].length);
18498       out += this.outputLink(cap, {
18499         href: cap[2],
18500         title: cap[3]
18501       });
18502       continue;
18503     }
18504
18505     // reflink, nolink
18506     if ((cap = this.rules.reflink.exec(src))
18507         || (cap = this.rules.nolink.exec(src))) {
18508       src = src.substring(cap[0].length);
18509       link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
18510       link = this.links[link.toLowerCase()];
18511       if (!link || !link.href) {
18512         out += cap[0][0];
18513         src = cap[0].substring(1) + src;
18514         continue;
18515       }
18516       out += this.outputLink(cap, link);
18517       continue;
18518     }
18519
18520     // strong
18521     if (cap = this.rules.strong.exec(src)) {
18522       src = src.substring(cap[0].length);
18523       out += '<strong>'
18524         + this.output(cap[2] || cap[1])
18525         + '</strong>';
18526       continue;
18527     }
18528
18529     // em
18530     if (cap = this.rules.em.exec(src)) {
18531       src = src.substring(cap[0].length);
18532       out += '<em>'
18533         + this.output(cap[2] || cap[1])
18534         + '</em>';
18535       continue;
18536     }
18537
18538     // code
18539     if (cap = this.rules.code.exec(src)) {
18540       src = src.substring(cap[0].length);
18541       out += '<code>'
18542         + escape(cap[2], true)
18543         + '</code>';
18544       continue;
18545     }
18546
18547     // br
18548     if (cap = this.rules.br.exec(src)) {
18549       src = src.substring(cap[0].length);
18550       out += '<br>';
18551       continue;
18552     }
18553
18554     // del (gfm)
18555     if (cap = this.rules.del.exec(src)) {
18556       src = src.substring(cap[0].length);
18557       out += '<del>'
18558         + this.output(cap[1])
18559         + '</del>';
18560       continue;
18561     }
18562
18563     // text
18564     if (cap = this.rules.text.exec(src)) {
18565       src = src.substring(cap[0].length);
18566       out += escape(cap[0]);
18567       continue;
18568     }
18569
18570     if (src) {
18571       throw new
18572         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18573     }
18574   }
18575
18576   return out;
18577 };
18578
18579 /**
18580  * Compile Link
18581  */
18582
18583 InlineLexer.prototype.outputLink = function(cap, link) {
18584   if (cap[0][0] !== '!') {
18585     return '<a href="'
18586       + escape(link.href)
18587       + '"'
18588       + (link.title
18589       ? ' title="'
18590       + escape(link.title)
18591       + '"'
18592       : '')
18593       + '>'
18594       + this.output(cap[1])
18595       + '</a>';
18596   } else {
18597     return '<img src="'
18598       + escape(link.href)
18599       + '" alt="'
18600       + escape(cap[1])
18601       + '"'
18602       + (link.title
18603       ? ' title="'
18604       + escape(link.title)
18605       + '"'
18606       : '')
18607       + '>';
18608   }
18609 };
18610
18611 /**
18612  * Smartypants Transformations
18613  */
18614
18615 InlineLexer.prototype.smartypants = function(text) {
18616   if (!this.options.smartypants) return text;
18617   return text
18618     .replace(/--/g, '—')
18619     .replace(/'([^']*)'/g, '‘$1’')
18620     .replace(/"([^"]*)"/g, '“$1”')
18621     .replace(/\.{3}/g, '…');
18622 };
18623
18624 /**
18625  * Mangle Links
18626  */
18627
18628 InlineLexer.prototype.mangle = function(text) {
18629   var out = ''
18630     , l = text.length
18631     , i = 0
18632     , ch;
18633
18634   for (; i < l; i++) {
18635     ch = text.charCodeAt(i);
18636     if (Math.random() > 0.5) {
18637       ch = 'x' + ch.toString(16);
18638     }
18639     out += '&#' + ch + ';';
18640   }
18641
18642   return out;
18643 };
18644
18645 /**
18646  * Parsing & Compiling
18647  */
18648
18649 function Parser(options) {
18650   this.tokens = [];
18651   this.token = null;
18652   this.options = options || marked.defaults;
18653 }
18654
18655 /**
18656  * Static Parse Method
18657  */
18658
18659 Parser.parse = function(src, options) {
18660   var parser = new Parser(options);
18661   return parser.parse(src);
18662 };
18663
18664 /**
18665  * Parse Loop
18666  */
18667
18668 Parser.prototype.parse = function(src) {
18669   this.inline = new InlineLexer(src.links, this.options);
18670   this.tokens = src.reverse();
18671
18672   var out = '';
18673   while (this.next()) {
18674     out += this.tok();
18675   }
18676
18677   return out;
18678 };
18679
18680 /**
18681  * Next Token
18682  */
18683
18684 Parser.prototype.next = function() {
18685   return this.token = this.tokens.pop();
18686 };
18687
18688 /**
18689  * Preview Next Token
18690  */
18691
18692 Parser.prototype.peek = function() {
18693   return this.tokens[this.tokens.length-1] || 0;
18694 };
18695
18696 /**
18697  * Parse Text Tokens
18698  */
18699
18700 Parser.prototype.parseText = function() {
18701   var body = this.token.text;
18702
18703   while (this.peek().type === 'text') {
18704     body += '\n' + this.next().text;
18705   }
18706
18707   return this.inline.output(body);
18708 };
18709
18710 /**
18711  * Parse Current Token
18712  */
18713
18714 Parser.prototype.tok = function() {
18715   switch (this.token.type) {
18716     case 'space': {
18717       return '';
18718     }
18719     case 'hr': {
18720       return '<hr>\n';
18721     }
18722     case 'heading': {
18723       return '<h'
18724         + this.token.depth
18725         + '>'
18726         + this.inline.output(this.token.text)
18727         + '</h'
18728         + this.token.depth
18729         + '>\n';
18730     }
18731     case 'code': {
18732       if (this.options.highlight) {
18733         var code = this.options.highlight(this.token.text, this.token.lang);
18734         if (code != null && code !== this.token.text) {
18735           this.token.escaped = true;
18736           this.token.text = code;
18737         }
18738       }
18739
18740       if (!this.token.escaped) {
18741         this.token.text = escape(this.token.text, true);
18742       }
18743
18744       return '<pre><code'
18745         + (this.token.lang
18746         ? ' class="'
18747         + this.options.langPrefix
18748         + this.token.lang
18749         + '"'
18750         : '')
18751         + '>'
18752         + this.token.text
18753         + '</code></pre>\n';
18754     }
18755     case 'table': {
18756       var body = ''
18757         , heading
18758         , i
18759         , row
18760         , cell
18761         , j;
18762
18763       // header
18764       body += '<thead>\n<tr>\n';
18765       for (i = 0; i < this.token.header.length; i++) {
18766         heading = this.inline.output(this.token.header[i]);
18767         body += this.token.align[i]
18768           ? '<th align="' + this.token.align[i] + '">' + heading + '</th>\n'
18769           : '<th>' + heading + '</th>\n';
18770       }
18771       body += '</tr>\n</thead>\n';
18772
18773       // body
18774       body += '<tbody>\n'
18775       for (i = 0; i < this.token.cells.length; i++) {
18776         row = this.token.cells[i];
18777         body += '<tr>\n';
18778         for (j = 0; j < row.length; j++) {
18779           cell = this.inline.output(row[j]);
18780           body += this.token.align[j]
18781             ? '<td align="' + this.token.align[j] + '">' + cell + '</td>\n'
18782             : '<td>' + cell + '</td>\n';
18783         }
18784         body += '</tr>\n';
18785       }
18786       body += '</tbody>\n';
18787
18788       return '<table>\n'
18789         + body
18790         + '</table>\n';
18791     }
18792     case 'blockquote_start': {
18793       var body = '';
18794
18795       while (this.next().type !== 'blockquote_end') {
18796         body += this.tok();
18797       }
18798
18799       return '<blockquote>\n'
18800         + body
18801         + '</blockquote>\n';
18802     }
18803     case 'list_start': {
18804       var type = this.token.ordered ? 'ol' : 'ul'
18805         , body = '';
18806
18807       while (this.next().type !== 'list_end') {
18808         body += this.tok();
18809       }
18810
18811       return '<'
18812         + type
18813         + '>\n'
18814         + body
18815         + '</'
18816         + type
18817         + '>\n';
18818     }
18819     case 'list_item_start': {
18820       var body = '';
18821
18822       while (this.next().type !== 'list_item_end') {
18823         body += this.token.type === 'text'
18824           ? this.parseText()
18825           : this.tok();
18826       }
18827
18828       return '<li>'
18829         + body
18830         + '</li>\n';
18831     }
18832     case 'loose_item_start': {
18833       var body = '';
18834
18835       while (this.next().type !== 'list_item_end') {
18836         body += this.tok();
18837       }
18838
18839       return '<li>'
18840         + body
18841         + '</li>\n';
18842     }
18843     case 'html': {
18844       return !this.token.pre && !this.options.pedantic
18845         ? this.inline.output(this.token.text)
18846         : this.token.text;
18847     }
18848     case 'paragraph': {
18849       return '<p>'
18850         + this.inline.output(this.token.text)
18851         + '</p>\n';
18852     }
18853     case 'text': {
18854       return '<p>'
18855         + this.parseText()
18856         + '</p>\n';
18857     }
18858   }
18859 };
18860
18861 /**
18862  * Helpers
18863  */
18864
18865 function escape(html, encode) {
18866   return html
18867     .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
18868     .replace(/</g, '&lt;')
18869     .replace(/>/g, '&gt;')
18870     .replace(/"/g, '&quot;')
18871     .replace(/'/g, '&#39;');
18872 }
18873
18874 function replace(regex, opt) {
18875   regex = regex.source;
18876   opt = opt || '';
18877   return function self(name, val) {
18878     if (!name) return new RegExp(regex, opt);
18879     val = val.source || val;
18880     val = val.replace(/(^|[^\[])\^/g, '$1');
18881     regex = regex.replace(name, val);
18882     return self;
18883   };
18884 }
18885
18886 function noop() {}
18887 noop.exec = noop;
18888
18889 function merge(obj) {
18890   var i = 1
18891     , target
18892     , key;
18893
18894   for (; i < arguments.length; i++) {
18895     target = arguments[i];
18896     for (key in target) {
18897       if (Object.prototype.hasOwnProperty.call(target, key)) {
18898         obj[key] = target[key];
18899       }
18900     }
18901   }
18902
18903   return obj;
18904 }
18905
18906 /**
18907  * Marked
18908  */
18909
18910 function marked(src, opt, callback) {
18911   if (callback || typeof opt === 'function') {
18912     if (!callback) {
18913       callback = opt;
18914       opt = null;
18915     }
18916
18917     if (opt) opt = merge({}, marked.defaults, opt);
18918
18919     var tokens = Lexer.lex(tokens, opt)
18920       , highlight = opt.highlight
18921       , pending = 0
18922       , l = tokens.length
18923       , i = 0;
18924
18925     if (!highlight || highlight.length < 3) {
18926       return callback(null, Parser.parse(tokens, opt));
18927     }
18928
18929     var done = function() {
18930       delete opt.highlight;
18931       var out = Parser.parse(tokens, opt);
18932       opt.highlight = highlight;
18933       return callback(null, out);
18934     };
18935
18936     for (; i < l; i++) {
18937       (function(token) {
18938         if (token.type !== 'code') return;
18939         pending++;
18940         return highlight(token.text, token.lang, function(err, code) {
18941           if (code == null || code === token.text) {
18942             return --pending || done();
18943           }
18944           token.text = code;
18945           token.escaped = true;
18946           --pending || done();
18947         });
18948       })(tokens[i]);
18949     }
18950
18951     return;
18952   }
18953   try {
18954     if (opt) opt = merge({}, marked.defaults, opt);
18955     return Parser.parse(Lexer.lex(src, opt), opt);
18956   } catch (e) {
18957     e.message += '\nPlease report this to https://github.com/chjj/marked.';
18958     if ((opt || marked.defaults).silent) {
18959       return '<p>An error occured:</p><pre>'
18960         + escape(e.message + '', true)
18961         + '</pre>';
18962     }
18963     throw e;
18964   }
18965 }
18966
18967 /**
18968  * Options
18969  */
18970
18971 marked.options =
18972 marked.setOptions = function(opt) {
18973   merge(marked.defaults, opt);
18974   return marked;
18975 };
18976
18977 marked.defaults = {
18978   gfm: true,
18979   tables: true,
18980   breaks: false,
18981   pedantic: false,
18982   sanitize: false,
18983   smartLists: false,
18984   silent: false,
18985   highlight: null,
18986   langPrefix: 'lang-'
18987 };
18988
18989 /**
18990  * Expose
18991  */
18992
18993 marked.Parser = Parser;
18994 marked.parser = Parser.parse;
18995
18996 marked.Lexer = Lexer;
18997 marked.lexer = Lexer.lex;
18998
18999 marked.InlineLexer = InlineLexer;
19000 marked.inlineLexer = InlineLexer.output;
19001
19002 marked.parse = marked;
19003
19004 if (typeof exports === 'object') {
19005   module.exports = marked;
19006 } else if (typeof define === 'function' && define.amd) {
19007   define(function() { return marked; });
19008 } else {
19009   this.marked = marked;
19010 }
19011
19012 }).call(function() {
19013   return this || (typeof window !== 'undefined' ? window : global);
19014 }());
19015 (function () {
19016 'use strict';
19017 window.iD = function () {
19018     window.locale.en = iD.data.en;
19019     window.locale.current('en');
19020
19021     var context = {},
19022         storage;
19023
19024     // https://github.com/openstreetmap/iD/issues/772
19025     // http://mathiasbynens.be/notes/localstorage-pattern#comment-9
19026     try { storage = localStorage; } catch (e) {}  // eslint-disable-line no-empty
19027     storage = storage || (function() {
19028         var s = {};
19029         return {
19030             getItem: function(k) { return s[k]; },
19031             setItem: function(k, v) { s[k] = v; },
19032             removeItem: function(k) { delete s[k]; }
19033         };
19034     })();
19035
19036     context.storage = function(k, v) {
19037         try {
19038             if (arguments.length === 1) return storage.getItem(k);
19039             else if (v === null) storage.removeItem(k);
19040             else storage.setItem(k, v);
19041         } catch(e) {
19042             // localstorage quota exceeded
19043             /* eslint-disable no-console */
19044             if (typeof console !== 'undefined') console.error('localStorage quota exceeded');
19045             /* eslint-enable no-console */
19046         }
19047     };
19048
19049     /* Accessor for setting minimum zoom for editing features. */
19050
19051     var minEditableZoom = 16;
19052     context.minEditableZoom = function(_) {
19053         if (!arguments.length) return minEditableZoom;
19054         minEditableZoom = _;
19055         connection.tileZoom(_);
19056         return context;
19057     };
19058
19059     var history = iD.History(context),
19060         dispatch = d3.dispatch('enter', 'exit'),
19061         mode,
19062         container,
19063         ui = iD.ui(context),
19064         connection = iD.Connection(),
19065         locale = iD.detect().locale,
19066         localePath;
19067
19068     if (locale && iD.data.locales.indexOf(locale) === -1) {
19069         locale = locale.split('-')[0];
19070     }
19071
19072     context.preauth = function(options) {
19073         connection.switch(options);
19074         return context;
19075     };
19076
19077     context.locale = function(loc, path) {
19078         locale = loc;
19079         localePath = path;
19080
19081         // Also set iD.detect().locale (unless we detected 'en-us' and openstreetmap wants 'en')..
19082         if (!(loc.toLowerCase() === 'en' && iD.detect().locale.toLowerCase() === 'en-us')) {
19083             iD.detect().locale = loc;
19084         }
19085
19086         return context;
19087     };
19088
19089     context.loadLocale = function(cb) {
19090         if (locale && locale !== 'en' && iD.data.locales.indexOf(locale) !== -1) {
19091             localePath = localePath || context.assetPath() + 'locales/' + locale + '.json';
19092             d3.json(localePath, function(err, result) {
19093                 window.locale[locale] = result;
19094                 window.locale.current(locale);
19095                 cb();
19096             });
19097         } else {
19098             cb();
19099         }
19100     };
19101
19102     /* Straight accessors. Avoid using these if you can. */
19103     context.ui = function() { return ui; };
19104     context.connection = function() { return connection; };
19105     context.history = function() { return history; };
19106
19107     /* Connection */
19108     function entitiesLoaded(err, result) {
19109         if (!err) history.merge(result.data, result.extent);
19110     }
19111
19112     context.loadTiles = function(projection, dimensions, callback) {
19113         function done(err, result) {
19114             entitiesLoaded(err, result);
19115             if (callback) callback(err, result);
19116         }
19117         connection.loadTiles(projection, dimensions, done);
19118     };
19119
19120     context.loadEntity = function(id, callback) {
19121         function done(err, result) {
19122             entitiesLoaded(err, result);
19123             if (callback) callback(err, result);
19124         }
19125         connection.loadEntity(id, done);
19126     };
19127
19128     context.zoomToEntity = function(id, zoomTo) {
19129         if (zoomTo !== false) {
19130             this.loadEntity(id, function(err, result) {
19131                 if (err) return;
19132                 var entity = _.find(result.data, function(e) { return e.id === id; });
19133                 if (entity) { map.zoomTo(entity); }
19134             });
19135         }
19136
19137         map.on('drawn.zoomToEntity', function() {
19138             if (!context.hasEntity(id)) return;
19139             map.on('drawn.zoomToEntity', null);
19140             context.on('enter.zoomToEntity', null);
19141             context.enter(iD.modes.Select(context, [id]));
19142         });
19143
19144         context.on('enter.zoomToEntity', function() {
19145             if (mode.id !== 'browse') {
19146                 map.on('drawn.zoomToEntity', null);
19147                 context.on('enter.zoomToEntity', null);
19148             }
19149         });
19150     };
19151
19152     /* History */
19153     context.graph = history.graph;
19154     context.changes = history.changes;
19155     context.intersects = history.intersects;
19156
19157     var inIntro = false;
19158
19159     context.inIntro = function(_) {
19160         if (!arguments.length) return inIntro;
19161         inIntro = _;
19162         return context;
19163     };
19164
19165     context.save = function() {
19166         if (inIntro || (mode && mode.id === 'save')) return;
19167         history.save();
19168         if (history.hasChanges()) return t('save.unsaved_changes');
19169     };
19170
19171     context.flush = function() {
19172         connection.flush();
19173         features.reset();
19174         history.reset();
19175         return context;
19176     };
19177
19178     // Debounce save, since it's a synchronous localStorage write,
19179     // and history changes can happen frequently (e.g. when dragging).
19180     var debouncedSave = _.debounce(context.save, 350);
19181     function withDebouncedSave(fn) {
19182         return function() {
19183             var result = fn.apply(history, arguments);
19184             debouncedSave();
19185             return result;
19186         };
19187     }
19188
19189     context.perform = withDebouncedSave(history.perform);
19190     context.replace = withDebouncedSave(history.replace);
19191     context.pop = withDebouncedSave(history.pop);
19192     context.overwrite = withDebouncedSave(history.overwrite);
19193     context.undo = withDebouncedSave(history.undo);
19194     context.redo = withDebouncedSave(history.redo);
19195
19196     /* Graph */
19197     context.hasEntity = function(id) {
19198         return history.graph().hasEntity(id);
19199     };
19200
19201     context.entity = function(id) {
19202         return history.graph().entity(id);
19203     };
19204
19205     context.childNodes = function(way) {
19206         return history.graph().childNodes(way);
19207     };
19208
19209     context.geometry = function(id) {
19210         return context.entity(id).geometry(history.graph());
19211     };
19212
19213     /* Modes */
19214     context.enter = function(newMode) {
19215         if (mode) {
19216             mode.exit();
19217             dispatch.exit(mode);
19218         }
19219
19220         mode = newMode;
19221         mode.enter();
19222         dispatch.enter(mode);
19223     };
19224
19225     context.mode = function() {
19226         return mode;
19227     };
19228
19229     context.selectedIDs = function() {
19230         if (mode && mode.selectedIDs) {
19231             return mode.selectedIDs();
19232         } else {
19233             return [];
19234         }
19235     };
19236
19237     /* Behaviors */
19238     context.install = function(behavior) {
19239         context.surface().call(behavior);
19240     };
19241
19242     context.uninstall = function(behavior) {
19243         context.surface().call(behavior.off);
19244     };
19245
19246     /* Copy/Paste */
19247     var copyIDs = [], copyGraph;
19248     context.copyGraph = function() { return copyGraph; };
19249     context.copyIDs = function(_) {
19250         if (!arguments.length) return copyIDs;
19251         copyIDs = _;
19252         copyGraph = history.graph();
19253         return context;
19254     };
19255
19256     /* Projection */
19257     context.projection = iD.geo.RawMercator();
19258
19259     /* Background */
19260     var background = iD.Background(context);
19261     context.background = function() { return background; };
19262
19263     /* Features */
19264     var features = iD.Features(context);
19265     context.features = function() { return features; };
19266     context.hasHiddenConnections = function(id) {
19267         var graph = history.graph(),
19268             entity = graph.entity(id);
19269         return features.hasHiddenConnections(entity, graph);
19270     };
19271
19272     /* Map */
19273     var map = iD.Map(context);
19274     context.map = function() { return map; };
19275     context.layers = function() { return map.layers; };
19276     context.surface = function() { return map.surface; };
19277     context.editable = function() { return map.editable(); };
19278     context.mouse = map.mouse;
19279     context.extent = map.extent;
19280     context.pan = map.pan;
19281     context.zoomIn = map.zoomIn;
19282     context.zoomOut = map.zoomOut;
19283     context.zoomInFurther = map.zoomInFurther;
19284     context.zoomOutFurther = map.zoomOutFurther;
19285
19286     context.surfaceRect = function() {
19287         // Work around a bug in Firefox.
19288         //   http://stackoverflow.com/questions/18153989/
19289         //   https://bugzilla.mozilla.org/show_bug.cgi?id=530985
19290         return context.surface().node().parentNode.getBoundingClientRect();
19291     };
19292
19293     /* Presets */
19294     var presets = iD.presets();
19295
19296     context.presets = function(_) {
19297         if (!arguments.length) return presets;
19298         presets.load(_);
19299         iD.areaKeys = presets.areaKeys();
19300         return context;
19301     };
19302
19303     context.imagery = function(_) {
19304         background.load(_);
19305         return context;
19306     };
19307
19308     context.container = function(_) {
19309         if (!arguments.length) return container;
19310         container = _;
19311         container.classed('id-container', true);
19312         return context;
19313     };
19314
19315     /* Taginfo */
19316     var taginfo;
19317     context.taginfo = function(_) {
19318         if (!arguments.length) return taginfo;
19319         taginfo = _;
19320         return context;
19321     };
19322
19323     var embed = false;
19324     context.embed = function(_) {
19325         if (!arguments.length) return embed;
19326         embed = _;
19327         return context;
19328     };
19329
19330     var assetPath = '';
19331     context.assetPath = function(_) {
19332         if (!arguments.length) return assetPath;
19333         assetPath = _;
19334         return context;
19335     };
19336
19337     var assetMap = {};
19338     context.assetMap = function(_) {
19339         if (!arguments.length) return assetMap;
19340         assetMap = _;
19341         return context;
19342     };
19343
19344     context.imagePath = function(_) {
19345         var asset = 'img/' + _;
19346         return assetMap[asset] || assetPath + asset;
19347     };
19348
19349     return d3.rebind(context, dispatch, 'on');
19350 };
19351
19352 iD.version = '1.8.3';
19353
19354 (function() {
19355     var detected = {};
19356
19357     var ua = navigator.userAgent,
19358         m = null;
19359
19360     m = ua.match(/(edge)\/?\s*(\.?\d+(\.\d+)*)/i);   // Edge
19361     if (m !== null) {
19362         detected.browser = m[1];
19363         detected.version = m[2];
19364     }
19365     if (!detected.browser) {
19366         m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i);   // IE11
19367         if (m !== null) {
19368             detected.browser = 'msie';
19369             detected.version = m[1];
19370         }
19371     }
19372     if (!detected.browser) {
19373         m = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i);   // Opera 15+
19374         if (m !== null) {
19375             detected.browser = 'Opera';
19376             detected.version = m[2];
19377         }
19378     }
19379     if (!detected.browser) {
19380         m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
19381         if (m !== null) {
19382             detected.browser = m[1];
19383             detected.version = m[2];
19384             m = ua.match(/version\/([\.\d]+)/i);
19385             if (m !== null) detected.version = m[1];
19386         }
19387     }
19388     if (!detected.browser) {
19389         detected.browser = navigator.appName;
19390         detected.version = navigator.appVersion;
19391     }
19392
19393     // keep major.minor version only..
19394     detected.version = detected.version.split(/\W/).slice(0,2).join('.');
19395
19396     if (detected.browser.toLowerCase() === 'msie') {
19397         detected.ie = true;
19398         detected.browser = 'Internet Explorer';
19399         detected.support = parseFloat(detected.version) >= 11;
19400     } else {
19401         detected.ie = false;
19402         detected.support = true;
19403     }
19404
19405     // Added due to incomplete svg style support. See #715
19406     detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 );
19407
19408     detected.locale = (navigator.languages && navigator.languages.length)
19409         ? navigator.languages[0] : (navigator.language || navigator.userLanguage || 'en-US');
19410
19411     detected.filedrop = (window.FileReader && 'ondrop' in window);
19412
19413     function nav(x) {
19414         return navigator.userAgent.indexOf(x) !== -1;
19415     }
19416
19417     if (nav('Win')) {
19418         detected.os = 'win';
19419         detected.platform = 'Windows';
19420     }
19421     else if (nav('Mac')) {
19422         detected.os = 'mac';
19423         detected.platform = 'Macintosh';
19424     }
19425     else if (nav('X11') || nav('Linux')) {
19426         detected.os = 'linux';
19427         detected.platform = 'Linux';
19428     }
19429     else {
19430         detected.os = 'win';
19431         detected.platform = 'Unknown';
19432     }
19433
19434     iD.detect = function() { return detected; };
19435 })();
19436 iD.countryCode  = function() {
19437     var countryCode = {},
19438         endpoint = 'https://nominatim.openstreetmap.org/reverse?';
19439
19440     if (!iD.countryCode.cache) {
19441         iD.countryCode.cache = rbush();
19442     }
19443
19444     var cache = iD.countryCode.cache;
19445
19446     countryCode.search = function(location, callback) {
19447         var countryCodes = cache.search([location[0], location[1], location[0], location[1]]);
19448
19449         if (countryCodes.length > 0)
19450             return callback(null, countryCodes[0][4]);
19451
19452         d3.json(endpoint +
19453             iD.util.qsString({
19454                 format: 'json',
19455                 addressdetails: 1,
19456                 lat: location[1],
19457                 lon: location[0]
19458             }), function(err, result) {
19459                 if (err)
19460                     return callback(err);
19461                 else if (result && result.error)
19462                     return callback(result.error);
19463
19464                 var extent = iD.geo.Extent(location).padByMeters(1000);
19465
19466                 cache.insert([extent[0][0], extent[0][1], extent[1][0], extent[1][1], result.address.country_code]);
19467
19468                 callback(null, result.address.country_code);
19469             });
19470     };
19471
19472     return countryCode;
19473 };
19474 iD.taginfo = function() {
19475     var taginfo = {},
19476         endpoint = 'https://taginfo.openstreetmap.org/api/4/',
19477         tag_sorts = {
19478             point: 'count_nodes',
19479             vertex: 'count_nodes',
19480             area: 'count_ways',
19481             line: 'count_ways'
19482         },
19483         tag_filters = {
19484             point: 'nodes',
19485             vertex: 'nodes',
19486             area: 'ways',
19487             line: 'ways'
19488         };
19489
19490     if (!iD.taginfo.cache) {
19491         iD.taginfo.cache = {};
19492     }
19493
19494     var cache = iD.taginfo.cache;
19495
19496     function sets(parameters, n, o) {
19497         if (parameters.geometry && o[parameters.geometry]) {
19498             parameters[n] = o[parameters.geometry];
19499         }
19500         return parameters;
19501     }
19502
19503     function setFilter(parameters) {
19504         return sets(parameters, 'filter', tag_filters);
19505     }
19506
19507     function setSort(parameters) {
19508         return sets(parameters, 'sortname', tag_sorts);
19509     }
19510
19511     function clean(parameters) {
19512         return _.omit(parameters, 'geometry', 'debounce');
19513     }
19514
19515     function popularKeys(parameters) {
19516         var pop_field = 'count_all';
19517         if (parameters.filter) pop_field = 'count_' + parameters.filter;
19518         return function(d) { return parseFloat(d[pop_field]) > 5000 || d.in_wiki; };
19519     }
19520
19521     function popularValues() {
19522         return function(d) { return parseFloat(d.fraction) > 0.01 || d.in_wiki; };
19523     }
19524
19525     function valKey(d) { return { value: d.key }; }
19526
19527     function valKeyDescription(d) {
19528         return {
19529             value: d.value,
19530             title: d.description
19531         };
19532     }
19533
19534     var debounced = _.debounce(d3.json, 100, true);
19535
19536     function request(url, debounce, callback) {
19537         if (cache[url]) {
19538             callback(null, cache[url]);
19539         } else if (debounce) {
19540             debounced(url, done);
19541         } else {
19542             d3.json(url, done);
19543         }
19544
19545         function done(err, data) {
19546             if (!err) cache[url] = data;
19547             callback(err, data);
19548         }
19549     }
19550
19551     taginfo.keys = function(parameters, callback) {
19552         var debounce = parameters.debounce;
19553         parameters = clean(setSort(parameters));
19554         request(endpoint + 'keys/all?' +
19555             iD.util.qsString(_.extend({
19556                 rp: 10,
19557                 sortname: 'count_all',
19558                 sortorder: 'desc',
19559                 page: 1
19560             }, parameters)), debounce, function(err, d) {
19561                 if (err) return callback(err);
19562                 callback(null, d.data.filter(popularKeys(parameters)).map(valKey));
19563             });
19564     };
19565
19566     taginfo.values = function(parameters, callback) {
19567         var debounce = parameters.debounce;
19568         parameters = clean(setSort(setFilter(parameters)));
19569         request(endpoint + 'key/values?' +
19570             iD.util.qsString(_.extend({
19571                 rp: 25,
19572                 sortname: 'count_all',
19573                 sortorder: 'desc',
19574                 page: 1
19575             }, parameters)), debounce, function(err, d) {
19576                 if (err) return callback(err);
19577                 callback(null, d.data.filter(popularValues()).map(valKeyDescription), parameters);
19578             });
19579     };
19580
19581     taginfo.docs = function(parameters, callback) {
19582         var debounce = parameters.debounce;
19583         parameters = clean(setSort(parameters));
19584
19585         var path = 'key/wiki_pages?';
19586         if (parameters.value) path = 'tag/wiki_pages?';
19587         else if (parameters.rtype) path = 'relation/wiki_pages?';
19588
19589         request(endpoint + path + iD.util.qsString(parameters), debounce, function(err, d) {
19590             if (err) return callback(err);
19591             callback(null, d.data);
19592         });
19593     };
19594
19595     taginfo.endpoint = function(_) {
19596         if (!arguments.length) return endpoint;
19597         endpoint = _;
19598         return taginfo;
19599     };
19600
19601     return taginfo;
19602 };
19603 iD.wikipedia  = function() {
19604     var wiki = {},
19605         endpoint = 'https://en.wikipedia.org/w/api.php?';
19606
19607     wiki.search = function(lang, query, callback) {
19608         lang = lang || 'en';
19609         d3.jsonp(endpoint.replace('en', lang) +
19610             iD.util.qsString({
19611                 action: 'query',
19612                 list: 'search',
19613                 srlimit: '10',
19614                 srinfo: 'suggestion',
19615                 format: 'json',
19616                 callback: '{callback}',
19617                 srsearch: query
19618             }), function(data) {
19619                 if (!data.query) return;
19620                 callback(query, data.query.search.map(function(d) {
19621                     return d.title;
19622                 }));
19623             });
19624     };
19625
19626     wiki.suggestions = function(lang, query, callback) {
19627         lang = lang || 'en';
19628         d3.jsonp(endpoint.replace('en', lang) +
19629             iD.util.qsString({
19630                 action: 'opensearch',
19631                 namespace: 0,
19632                 suggest: '',
19633                 format: 'json',
19634                 callback: '{callback}',
19635                 search: query
19636             }), function(d) {
19637                 callback(d[0], d[1]);
19638             });
19639     };
19640
19641     wiki.translations = function(lang, title, callback) {
19642         d3.jsonp(endpoint.replace('en', lang) +
19643             iD.util.qsString({
19644                 action: 'query',
19645                 prop: 'langlinks',
19646                 format: 'json',
19647                 callback: '{callback}',
19648                 lllimit: 500,
19649                 titles: title
19650             }), function(d) {
19651                 var list = d.query.pages[Object.keys(d.query.pages)[0]],
19652                     translations = {};
19653                 if (list && list.langlinks) {
19654                     list.langlinks.forEach(function(d) {
19655                         translations[d.lang] = d['*'];
19656                     });
19657                     callback(translations);
19658                 }
19659             });
19660     };
19661
19662     return wiki;
19663 };
19664 iD.util = {};
19665
19666 iD.util.tagText = function(entity) {
19667     return d3.entries(entity.tags).map(function(e) {
19668         return e.key + '=' + e.value;
19669     }).join(', ');
19670 };
19671
19672 iD.util.entitySelector = function(ids) {
19673     return ids.length ? '.' + ids.join(',.') : 'nothing';
19674 };
19675
19676 iD.util.entityOrMemberSelector = function(ids, graph) {
19677     var s = iD.util.entitySelector(ids);
19678
19679     ids.forEach(function(id) {
19680         var entity = graph.hasEntity(id);
19681         if (entity && entity.type === 'relation') {
19682             entity.members.forEach(function(member) {
19683                 s += ',.' + member.id;
19684             });
19685         }
19686     });
19687
19688     return s;
19689 };
19690
19691 iD.util.displayName = function(entity) {
19692     var localeName = 'name:' + iD.detect().locale.toLowerCase().split('-')[0];
19693     return entity.tags[localeName] || entity.tags.name || entity.tags.ref;
19694 };
19695
19696 iD.util.displayType = function(id) {
19697     return {
19698         n: t('inspector.node'),
19699         w: t('inspector.way'),
19700         r: t('inspector.relation')
19701     }[id.charAt(0)];
19702 };
19703
19704 iD.util.stringQs = function(str) {
19705     return str.split('&').reduce(function(obj, pair){
19706         var parts = pair.split('=');
19707         if (parts.length === 2) {
19708             obj[parts[0]] = (null === parts[1]) ? '' : decodeURIComponent(parts[1]);
19709         }
19710         return obj;
19711     }, {});
19712 };
19713
19714 iD.util.qsString = function(obj, noencode) {
19715     function softEncode(s) {
19716       // encode everything except special characters used in certain hash parameters:
19717       // "/" in map states, ":", ",", {" and "}" in background
19718       return encodeURIComponent(s).replace(/(%2F|%3A|%2C|%7B|%7D)/g, decodeURIComponent);
19719     }
19720     return Object.keys(obj).sort().map(function(key) {
19721         return encodeURIComponent(key) + '=' + (
19722             noencode ? softEncode(obj[key]) : encodeURIComponent(obj[key]));
19723     }).join('&');
19724 };
19725
19726 iD.util.prefixDOMProperty = function(property) {
19727     var prefixes = ['webkit', 'ms', 'moz', 'o'],
19728         i = -1,
19729         n = prefixes.length,
19730         s = document.body;
19731
19732     if (property in s)
19733         return property;
19734
19735     property = property.substr(0, 1).toUpperCase() + property.substr(1);
19736
19737     while (++i < n)
19738         if (prefixes[i] + property in s)
19739             return prefixes[i] + property;
19740
19741     return false;
19742 };
19743
19744 iD.util.prefixCSSProperty = function(property) {
19745     var prefixes = ['webkit', 'ms', 'Moz', 'O'],
19746         i = -1,
19747         n = prefixes.length,
19748         s = document.body.style;
19749
19750     if (property.toLowerCase() in s)
19751         return property.toLowerCase();
19752
19753     while (++i < n)
19754         if (prefixes[i] + property in s)
19755             return '-' + prefixes[i].toLowerCase() + property.replace(/([A-Z])/g, '-$1').toLowerCase();
19756
19757     return false;
19758 };
19759
19760
19761 iD.util.setTransform = function(el, x, y, scale) {
19762     var prop = iD.util.transformProperty = iD.util.transformProperty || iD.util.prefixCSSProperty('Transform'),
19763         translate = iD.detect().opera ?
19764             'translate('   + x + 'px,' + y + 'px)' :
19765             'translate3d(' + x + 'px,' + y + 'px,0)';
19766     return el.style(prop, translate + (scale ? ' scale(' + scale + ')' : ''));
19767 };
19768
19769 iD.util.getStyle = function(selector) {
19770     for (var i = 0; i < document.styleSheets.length; i++) {
19771         var rules = document.styleSheets[i].rules || document.styleSheets[i].cssRules || [];
19772         for (var k = 0; k < rules.length; k++) {
19773             var selectorText = rules[k].selectorText && rules[k].selectorText.split(', ');
19774             if (_.contains(selectorText, selector)) {
19775                 return rules[k];
19776             }
19777         }
19778     }
19779 };
19780
19781 iD.util.editDistance = function(a, b) {
19782     if (a.length === 0) return b.length;
19783     if (b.length === 0) return a.length;
19784     var matrix = [];
19785     for (var i = 0; i <= b.length; i++) { matrix[i] = [i]; }
19786     for (var j = 0; j <= a.length; j++) { matrix[0][j] = j; }
19787     for (i = 1; i <= b.length; i++) {
19788         for (j = 1; j <= a.length; j++) {
19789             if (b.charAt(i-1) === a.charAt(j-1)) {
19790                 matrix[i][j] = matrix[i-1][j-1];
19791             } else {
19792                 matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution
19793                     Math.min(matrix[i][j-1] + 1, // insertion
19794                     matrix[i-1][j] + 1)); // deletion
19795             }
19796         }
19797     }
19798     return matrix[b.length][a.length];
19799 };
19800
19801 // a d3.mouse-alike which
19802 // 1. Only works on HTML elements, not SVG
19803 // 2. Does not cause style recalculation
19804 iD.util.fastMouse = function(container) {
19805     var rect = container.getBoundingClientRect(),
19806         rectLeft = rect.left,
19807         rectTop = rect.top,
19808         clientLeft = +container.clientLeft,
19809         clientTop = +container.clientTop;
19810     return function(e) {
19811         return [
19812             e.clientX - rectLeft - clientLeft,
19813             e.clientY - rectTop - clientTop];
19814     };
19815 };
19816
19817 /* eslint-disable no-proto */
19818 iD.util.getPrototypeOf = Object.getPrototypeOf || function(obj) { return obj.__proto__; };
19819 /* eslint-enable no-proto */
19820
19821 iD.util.asyncMap = function(inputs, func, callback) {
19822     var remaining = inputs.length,
19823         results = [],
19824         errors = [];
19825
19826     inputs.forEach(function(d, i) {
19827         func(d, function done(err, data) {
19828             errors[i] = err;
19829             results[i] = data;
19830             remaining--;
19831             if (!remaining) callback(errors, results);
19832         });
19833     });
19834 };
19835
19836 // wraps an index to an interval [0..length-1]
19837 iD.util.wrap = function(index, length) {
19838     if (index < 0)
19839         index += Math.ceil(-index/length)*length;
19840     return index % length;
19841 };
19842 // A per-domain session mutex backed by a cookie and dead man's
19843 // switch. If the session crashes, the mutex will auto-release
19844 // after 5 seconds.
19845
19846 iD.util.SessionMutex = function(name) {
19847     var mutex = {},
19848         intervalID;
19849
19850     function renew() {
19851         var expires = new Date();
19852         expires.setSeconds(expires.getSeconds() + 5);
19853         document.cookie = name + '=1; expires=' + expires.toUTCString();
19854     }
19855
19856     mutex.lock = function() {
19857         if (intervalID) return true;
19858         var cookie = document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + name + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1');
19859         if (cookie) return false;
19860         renew();
19861         intervalID = window.setInterval(renew, 4000);
19862         return true;
19863     };
19864
19865     mutex.unlock = function() {
19866         if (!intervalID) return;
19867         document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
19868         clearInterval(intervalID);
19869         intervalID = null;
19870     };
19871
19872     mutex.locked = function() {
19873         return !!intervalID;
19874     };
19875
19876     return mutex;
19877 };
19878 iD.util.SuggestNames = function(preset, suggestions) {
19879     preset = preset.id.split('/', 2);
19880     var k = preset[0],
19881         v = preset[1];
19882
19883     return function(value, callback) {
19884         var result = [];
19885         if (value && value.length > 2) {
19886             if (suggestions[k] && suggestions[k][v]) {
19887                 for (var sugg in suggestions[k][v]) {
19888                     var dist = iD.util.editDistance(value, sugg.substring(0, value.length));
19889                     if (dist < 3) {
19890                         result.push({
19891                             title: sugg,
19892                             value: sugg,
19893                             dist: dist
19894                         });
19895                     }
19896                 }
19897             }
19898             result.sort(function(a, b) {
19899                 return a.dist - b.dist;
19900             });
19901         }
19902         result = result.slice(0,3);
19903         callback(result);
19904     };
19905 };
19906 iD.geo = {};
19907
19908 iD.geo.roundCoords = function(c) {
19909     return [Math.floor(c[0]), Math.floor(c[1])];
19910 };
19911
19912 iD.geo.interp = function(p1, p2, t) {
19913     return [p1[0] + (p2[0] - p1[0]) * t,
19914             p1[1] + (p2[1] - p1[1]) * t];
19915 };
19916
19917 // 2D cross product of OA and OB vectors, i.e. z-component of their 3D cross product.
19918 // Returns a positive value, if OAB makes a counter-clockwise turn,
19919 // negative for clockwise turn, and zero if the points are collinear.
19920 iD.geo.cross = function(o, a, b) {
19921     return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
19922 };
19923
19924 // http://jsperf.com/id-dist-optimization
19925 iD.geo.euclideanDistance = function(a, b) {
19926     var x = a[0] - b[0], y = a[1] - b[1];
19927     return Math.sqrt((x * x) + (y * y));
19928 };
19929
19930 // using WGS84 polar radius (6356752.314245179 m)
19931 // const = 2 * PI * r / 360
19932 iD.geo.latToMeters = function(dLat) {
19933     return dLat * 110946.257617;
19934 };
19935
19936 // using WGS84 equatorial radius (6378137.0 m)
19937 // const = 2 * PI * r / 360
19938 iD.geo.lonToMeters = function(dLon, atLat) {
19939     return Math.abs(atLat) >= 90 ? 0 :
19940         dLon * 111319.490793 * Math.abs(Math.cos(atLat * (Math.PI/180)));
19941 };
19942
19943 // using WGS84 polar radius (6356752.314245179 m)
19944 // const = 2 * PI * r / 360
19945 iD.geo.metersToLat = function(m) {
19946     return m / 110946.257617;
19947 };
19948
19949 // using WGS84 equatorial radius (6378137.0 m)
19950 // const = 2 * PI * r / 360
19951 iD.geo.metersToLon = function(m, atLat) {
19952     return Math.abs(atLat) >= 90 ? 0 :
19953         m / 111319.490793 / Math.abs(Math.cos(atLat * (Math.PI/180)));
19954 };
19955
19956 // Equirectangular approximation of spherical distances on Earth
19957 iD.geo.sphericalDistance = function(a, b) {
19958     var x = iD.geo.lonToMeters(a[0] - b[0], (a[1] + b[1]) / 2),
19959         y = iD.geo.latToMeters(a[1] - b[1]);
19960     return Math.sqrt((x * x) + (y * y));
19961 };
19962
19963 iD.geo.edgeEqual = function(a, b) {
19964     return (a[0] === b[0] && a[1] === b[1]) ||
19965         (a[0] === b[1] && a[1] === b[0]);
19966 };
19967
19968 // Return the counterclockwise angle in the range (-pi, pi)
19969 // between the positive X axis and the line intersecting a and b.
19970 iD.geo.angle = function(a, b, projection) {
19971     a = projection(a.loc);
19972     b = projection(b.loc);
19973     return Math.atan2(b[1] - a[1], b[0] - a[0]);
19974 };
19975
19976 // Choose the edge with the minimal distance from `point` to its orthogonal
19977 // projection onto that edge, if such a projection exists, or the distance to
19978 // the closest vertex on that edge. Returns an object with the `index` of the
19979 // chosen edge, the chosen `loc` on that edge, and the `distance` to to it.
19980 iD.geo.chooseEdge = function(nodes, point, projection) {
19981     var dist = iD.geo.euclideanDistance,
19982         points = nodes.map(function(n) { return projection(n.loc); }),
19983         min = Infinity,
19984         idx, loc;
19985
19986     function dot(p, q) {
19987         return p[0] * q[0] + p[1] * q[1];
19988     }
19989
19990     for (var i = 0; i < points.length - 1; i++) {
19991         var o = points[i],
19992             s = [points[i + 1][0] - o[0],
19993                  points[i + 1][1] - o[1]],
19994             v = [point[0] - o[0],
19995                  point[1] - o[1]],
19996             proj = dot(v, s) / dot(s, s),
19997             p;
19998
19999         if (proj < 0) {
20000             p = o;
20001         } else if (proj > 1) {
20002             p = points[i + 1];
20003         } else {
20004             p = [o[0] + proj * s[0], o[1] + proj * s[1]];
20005         }
20006
20007         var d = dist(p, point);
20008         if (d < min) {
20009             min = d;
20010             idx = i + 1;
20011             loc = projection.invert(p);
20012         }
20013     }
20014
20015     return {
20016         index: idx,
20017         distance: min,
20018         loc: loc
20019     };
20020 };
20021
20022 // Return the intersection point of 2 line segments.
20023 // From https://github.com/pgkelley4/line-segments-intersect
20024 // This uses the vector cross product approach described below:
20025 //  http://stackoverflow.com/a/565282/786339
20026 iD.geo.lineIntersection = function(a, b) {
20027     function subtractPoints(point1, point2) {
20028         return [point1[0] - point2[0], point1[1] - point2[1]];
20029     }
20030     function crossProduct(point1, point2) {
20031         return point1[0] * point2[1] - point1[1] * point2[0];
20032     }
20033
20034     var p = [a[0][0], a[0][1]],
20035         p2 = [a[1][0], a[1][1]],
20036         q = [b[0][0], b[0][1]],
20037         q2 = [b[1][0], b[1][1]],
20038         r = subtractPoints(p2, p),
20039         s = subtractPoints(q2, q),
20040         uNumerator = crossProduct(subtractPoints(q, p), r),
20041         denominator = crossProduct(r, s);
20042
20043     if (uNumerator && denominator) {
20044         var u = uNumerator / denominator,
20045             t = crossProduct(subtractPoints(q, p), s) / denominator;
20046
20047         if ((t >= 0) && (t <= 1) && (u >= 0) && (u <= 1)) {
20048             return iD.geo.interp(p, p2, t);
20049         }
20050     }
20051
20052     return null;
20053 };
20054
20055 iD.geo.pathIntersections = function(path1, path2) {
20056     var intersections = [];
20057     for (var i = 0; i < path1.length - 1; i++) {
20058         for (var j = 0; j < path2.length - 1; j++) {
20059             var a = [ path1[i], path1[i+1] ],
20060                 b = [ path2[j], path2[j+1] ],
20061                 hit = iD.geo.lineIntersection(a, b);
20062             if (hit) intersections.push(hit);
20063         }
20064     }
20065     return intersections;
20066 };
20067
20068 // Return whether point is contained in polygon.
20069 //
20070 // `point` should be a 2-item array of coordinates.
20071 // `polygon` should be an array of 2-item arrays of coordinates.
20072 //
20073 // From https://github.com/substack/point-in-polygon.
20074 // ray-casting algorithm based on
20075 // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
20076 //
20077 iD.geo.pointInPolygon = function(point, polygon) {
20078     var x = point[0],
20079         y = point[1],
20080         inside = false;
20081
20082     for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
20083         var xi = polygon[i][0], yi = polygon[i][1];
20084         var xj = polygon[j][0], yj = polygon[j][1];
20085
20086         var intersect = ((yi > y) !== (yj > y)) &&
20087             (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
20088         if (intersect) inside = !inside;
20089     }
20090
20091     return inside;
20092 };
20093
20094 iD.geo.polygonContainsPolygon = function(outer, inner) {
20095     return _.every(inner, function(point) {
20096         return iD.geo.pointInPolygon(point, outer);
20097     });
20098 };
20099
20100 iD.geo.polygonIntersectsPolygon = function(outer, inner, checkSegments) {
20101     function testSegments(outer, inner) {
20102         for (var i = 0; i < outer.length - 1; i++) {
20103             for (var j = 0; j < inner.length - 1; j++) {
20104                 var a = [ outer[i], outer[i+1] ],
20105                     b = [ inner[j], inner[j+1] ];
20106                 if (iD.geo.lineIntersection(a, b)) return true;
20107             }
20108         }
20109         return false;
20110     }
20111
20112     function testPoints(outer, inner) {
20113         return _.some(inner, function(point) {
20114             return iD.geo.pointInPolygon(point, outer);
20115         });
20116     }
20117
20118    return testPoints(outer, inner) || (!!checkSegments && testSegments(outer, inner));
20119 };
20120
20121 iD.geo.pathLength = function(path) {
20122     var length = 0,
20123         dx, dy;
20124     for (var i = 0; i < path.length - 1; i++) {
20125         dx = path[i][0] - path[i + 1][0];
20126         dy = path[i][1] - path[i + 1][1];
20127         length += Math.sqrt(dx * dx + dy * dy);
20128     }
20129     return length;
20130 };
20131 iD.geo.Extent = function geoExtent(min, max) {
20132     if (!(this instanceof iD.geo.Extent)) return new iD.geo.Extent(min, max);
20133     if (min instanceof iD.geo.Extent) {
20134         return min;
20135     } else if (min && min.length === 2 && min[0].length === 2 && min[1].length === 2) {
20136         this[0] = min[0];
20137         this[1] = min[1];
20138     } else {
20139         this[0] = min        || [ Infinity,  Infinity];
20140         this[1] = max || min || [-Infinity, -Infinity];
20141     }
20142 };
20143
20144 iD.geo.Extent.prototype = new Array(2);
20145
20146 _.extend(iD.geo.Extent.prototype, {
20147     equals: function (obj) {
20148         return this[0][0] === obj[0][0] &&
20149             this[0][1] === obj[0][1] &&
20150             this[1][0] === obj[1][0] &&
20151             this[1][1] === obj[1][1];
20152     },
20153
20154     extend: function(obj) {
20155         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20156         return iD.geo.Extent([Math.min(obj[0][0], this[0][0]),
20157                               Math.min(obj[0][1], this[0][1])],
20158                              [Math.max(obj[1][0], this[1][0]),
20159                               Math.max(obj[1][1], this[1][1])]);
20160     },
20161
20162     _extend: function(extent) {
20163         this[0][0] = Math.min(extent[0][0], this[0][0]);
20164         this[0][1] = Math.min(extent[0][1], this[0][1]);
20165         this[1][0] = Math.max(extent[1][0], this[1][0]);
20166         this[1][1] = Math.max(extent[1][1], this[1][1]);
20167     },
20168
20169     area: function() {
20170         return Math.abs((this[1][0] - this[0][0]) * (this[1][1] - this[0][1]));
20171     },
20172
20173     center: function() {
20174         return [(this[0][0] + this[1][0]) / 2,
20175                 (this[0][1] + this[1][1]) / 2];
20176     },
20177
20178     polygon: function() {
20179         return [
20180             [this[0][0], this[0][1]],
20181             [this[0][0], this[1][1]],
20182             [this[1][0], this[1][1]],
20183             [this[1][0], this[0][1]],
20184             [this[0][0], this[0][1]]
20185         ];
20186     },
20187
20188     contains: function(obj) {
20189         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20190         return obj[0][0] >= this[0][0] &&
20191                obj[0][1] >= this[0][1] &&
20192                obj[1][0] <= this[1][0] &&
20193                obj[1][1] <= this[1][1];
20194     },
20195
20196     intersects: function(obj) {
20197         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20198         return obj[0][0] <= this[1][0] &&
20199                obj[0][1] <= this[1][1] &&
20200                obj[1][0] >= this[0][0] &&
20201                obj[1][1] >= this[0][1];
20202     },
20203
20204     intersection: function(obj) {
20205         if (!this.intersects(obj)) return new iD.geo.Extent();
20206         return new iD.geo.Extent([Math.max(obj[0][0], this[0][0]),
20207                                   Math.max(obj[0][1], this[0][1])],
20208                                  [Math.min(obj[1][0], this[1][0]),
20209                                   Math.min(obj[1][1], this[1][1])]);
20210     },
20211
20212     percentContainedIn: function(obj) {
20213         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20214         var a1 = this.intersection(obj).area(),
20215             a2 = this.area();
20216
20217         if (a1 === Infinity || a2 === Infinity || a1 === 0 || a2 === 0) {
20218             return 0;
20219         } else {
20220             return a1 / a2;
20221         }
20222     },
20223
20224     padByMeters: function(meters) {
20225         var dLat = iD.geo.metersToLat(meters),
20226             dLon = iD.geo.metersToLon(meters, this.center()[1]);
20227         return iD.geo.Extent(
20228                 [this[0][0] - dLon, this[0][1] - dLat],
20229                 [this[1][0] + dLon, this[1][1] + dLat]);
20230     },
20231
20232     toParam: function() {
20233         return [this[0][0], this[0][1], this[1][0], this[1][1]].join(',');
20234     }
20235
20236 });
20237 iD.geo.Turn = function(turn) {
20238     if (!(this instanceof iD.geo.Turn))
20239         return new iD.geo.Turn(turn);
20240     _.extend(this, turn);
20241 };
20242
20243 iD.geo.Intersection = function(graph, vertexId) {
20244     var vertex = graph.entity(vertexId),
20245         parentWays = graph.parentWays(vertex),
20246         coincident = [],
20247         highways = {};
20248
20249     function addHighway(way, adjacentNodeId) {
20250         if (highways[adjacentNodeId]) {
20251             coincident.push(adjacentNodeId);
20252         } else {
20253             highways[adjacentNodeId] = way;
20254         }
20255     }
20256
20257     // Pre-split ways that would need to be split in
20258     // order to add a restriction. The real split will
20259     // happen when the restriction is added.
20260     parentWays.forEach(function(way) {
20261         if (!way.tags.highway || way.isArea() || way.isDegenerate())
20262             return;
20263
20264         var isFirst = (vertexId === way.first()),
20265             isLast = (vertexId === way.last()),
20266             isAffix = (isFirst || isLast),
20267             isClosingNode = (isFirst && isLast);
20268
20269         if (isAffix && !isClosingNode) {
20270             var index = (isFirst ? 1 : way.nodes.length - 2);
20271             addHighway(way, way.nodes[index]);
20272
20273         } else {
20274             var splitIndex, wayA, wayB, indexA, indexB;
20275             if (isClosingNode) {
20276                 splitIndex = Math.ceil(way.nodes.length / 2);  // split at midpoint
20277                 wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, splitIndex)});
20278                 wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(splitIndex)});
20279                 indexA = 1;
20280                 indexB = way.nodes.length - 2;
20281             } else {
20282                 splitIndex = _.indexOf(way.nodes, vertex.id, 1);  // split at vertexid
20283                 wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, splitIndex + 1)});
20284                 wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(splitIndex)});
20285                 indexA = splitIndex - 1;
20286                 indexB = splitIndex + 1;
20287             }
20288             graph = graph.replace(wayA).replace(wayB);
20289             addHighway(wayA, way.nodes[indexA]);
20290             addHighway(wayB, way.nodes[indexB]);
20291         }
20292     });
20293
20294     // remove any ways from this intersection that are coincident
20295     // (i.e. any adjacent node used by more than one intersecting way)
20296     coincident.forEach(function (n) {
20297         delete highways[n];
20298     });
20299
20300
20301     var intersection = {
20302         highways: highways,
20303         ways: _.values(highways),
20304         graph: graph
20305     };
20306
20307     intersection.adjacentNodeId = function(fromWayId) {
20308         return _.find(_.keys(highways), function(k) {
20309             return highways[k].id === fromWayId;
20310         });
20311     };
20312
20313     intersection.turns = function(fromNodeId) {
20314         var start = highways[fromNodeId];
20315         if (!start)
20316             return [];
20317
20318         if (start.first() === vertex.id && start.tags.oneway === 'yes')
20319             return [];
20320         if (start.last() === vertex.id && start.tags.oneway === '-1')
20321             return [];
20322
20323         function withRestriction(turn) {
20324             graph.parentRelations(graph.entity(turn.from.way)).forEach(function(relation) {
20325                 if (relation.tags.type !== 'restriction')
20326                     return;
20327
20328                 var f = relation.memberByRole('from'),
20329                     t = relation.memberByRole('to'),
20330                     v = relation.memberByRole('via');
20331
20332                 if (f && f.id === turn.from.way &&
20333                     v && v.id === turn.via.node &&
20334                     t && t.id === turn.to.way) {
20335                     turn.restriction = relation.id;
20336                 } else if (/^only_/.test(relation.tags.restriction) &&
20337                     f && f.id === turn.from.way &&
20338                     v && v.id === turn.via.node &&
20339                     t && t.id !== turn.to.way) {
20340                     turn.restriction = relation.id;
20341                     turn.indirect_restriction = true;
20342                 }
20343             });
20344
20345             return iD.geo.Turn(turn);
20346         }
20347
20348         var from = {
20349                 node: fromNodeId,
20350                 way: start.id.split(/-(a|b)/)[0]
20351             },
20352             via = { node: vertex.id },
20353             turns = [];
20354
20355         _.each(highways, function(end, adjacentNodeId) {
20356             if (end === start)
20357                 return;
20358
20359             // backward
20360             if (end.first() !== vertex.id && end.tags.oneway !== 'yes') {
20361                 turns.push(withRestriction({
20362                     from: from,
20363                     via: via,
20364                     to: {
20365                         node: adjacentNodeId,
20366                         way: end.id.split(/-(a|b)/)[0]
20367                     }
20368                 }));
20369             }
20370
20371             // forward
20372             if (end.last() !== vertex.id && end.tags.oneway !== '-1') {
20373                 turns.push(withRestriction({
20374                     from: from,
20375                     via: via,
20376                     to: {
20377                         node: adjacentNodeId,
20378                         way: end.id.split(/-(a|b)/)[0]
20379                     }
20380                 }));
20381             }
20382
20383         });
20384
20385         // U-turn
20386         if (start.tags.oneway !== 'yes' && start.tags.oneway !== '-1') {
20387             turns.push(withRestriction({
20388                 from: from,
20389                 via: via,
20390                 to: from,
20391                 u: true
20392             }));
20393         }
20394
20395         return turns;
20396     };
20397
20398     return intersection;
20399 };
20400
20401
20402 iD.geo.inferRestriction = function(graph, from, via, to, projection) {
20403     var fromWay = graph.entity(from.way),
20404         fromNode = graph.entity(from.node),
20405         toWay = graph.entity(to.way),
20406         toNode = graph.entity(to.node),
20407         viaNode = graph.entity(via.node),
20408         fromOneWay = (fromWay.tags.oneway === 'yes' && fromWay.last() === via.node) ||
20409             (fromWay.tags.oneway === '-1' && fromWay.first() === via.node),
20410         toOneWay = (toWay.tags.oneway === 'yes' && toWay.first() === via.node) ||
20411             (toWay.tags.oneway === '-1' && toWay.last() === via.node),
20412         angle = iD.geo.angle(viaNode, fromNode, projection) -
20413                 iD.geo.angle(viaNode, toNode, projection);
20414
20415     angle = angle * 180 / Math.PI;
20416
20417     while (angle < 0)
20418         angle += 360;
20419
20420     if (fromNode === toNode)
20421         return 'no_u_turn';
20422     if ((angle < 23 || angle > 336) && fromOneWay && toOneWay)
20423         return 'no_u_turn';
20424     if (angle < 158)
20425         return 'no_right_turn';
20426     if (angle > 202)
20427         return 'no_left_turn';
20428
20429     return 'no_straight_on';
20430 };
20431 // For fixing up rendering of multipolygons with tags on the outer member.
20432 // https://github.com/openstreetmap/iD/issues/613
20433 iD.geo.isSimpleMultipolygonOuterMember = function(entity, graph) {
20434     if (entity.type !== 'way')
20435         return false;
20436
20437     var parents = graph.parentRelations(entity);
20438     if (parents.length !== 1)
20439         return false;
20440
20441     var parent = parents[0];
20442     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20443         return false;
20444
20445     var members = parent.members, member;
20446     for (var i = 0; i < members.length; i++) {
20447         member = members[i];
20448         if (member.id === entity.id && member.role && member.role !== 'outer')
20449             return false; // Not outer member
20450         if (member.id !== entity.id && (!member.role || member.role === 'outer'))
20451             return false; // Not a simple multipolygon
20452     }
20453
20454     return parent;
20455 };
20456
20457 iD.geo.simpleMultipolygonOuterMember = function(entity, graph) {
20458     if (entity.type !== 'way')
20459         return false;
20460
20461     var parents = graph.parentRelations(entity);
20462     if (parents.length !== 1)
20463         return false;
20464
20465     var parent = parents[0];
20466     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20467         return false;
20468
20469     var members = parent.members, member, outerMember;
20470     for (var i = 0; i < members.length; i++) {
20471         member = members[i];
20472         if (!member.role || member.role === 'outer') {
20473             if (outerMember)
20474                 return false; // Not a simple multipolygon
20475             outerMember = member;
20476         }
20477     }
20478
20479     return outerMember && graph.hasEntity(outerMember.id);
20480 };
20481
20482 // Join `array` into sequences of connecting ways.
20483 //
20484 // Segments which share identical start/end nodes will, as much as possible,
20485 // be connected with each other.
20486 //
20487 // The return value is a nested array. Each constituent array contains elements
20488 // of `array` which have been determined to connect. Each consitituent array
20489 // also has a `nodes` property whose value is an ordered array of member nodes,
20490 // with appropriate order reversal and start/end coordinate de-duplication.
20491 //
20492 // Members of `array` must have, at minimum, `type` and `id` properties.
20493 // Thus either an array of `iD.Way`s or a relation member array may be
20494 // used.
20495 //
20496 // If an member has a `tags` property, its tags will be reversed via
20497 // `iD.actions.Reverse` in the output.
20498 //
20499 // Incomplete members (those for which `graph.hasEntity(element.id)` returns
20500 // false) and non-way members are ignored.
20501 //
20502 iD.geo.joinWays = function(array, graph) {
20503     var joined = [], member, current, nodes, first, last, i, how, what;
20504
20505     array = array.filter(function(member) {
20506         return member.type === 'way' && graph.hasEntity(member.id);
20507     });
20508
20509     function resolve(member) {
20510         return graph.childNodes(graph.entity(member.id));
20511     }
20512
20513     function reverse(member) {
20514         return member.tags ? iD.actions.Reverse(member.id, {reverseOneway: true})(graph).entity(member.id) : member;
20515     }
20516
20517     while (array.length) {
20518         member = array.shift();
20519         current = [member];
20520         current.nodes = nodes = resolve(member).slice();
20521         joined.push(current);
20522
20523         while (array.length && _.first(nodes) !== _.last(nodes)) {
20524             first = _.first(nodes);
20525             last  = _.last(nodes);
20526
20527             for (i = 0; i < array.length; i++) {
20528                 member = array[i];
20529                 what = resolve(member);
20530
20531                 if (last === _.first(what)) {
20532                     how  = nodes.push;
20533                     what = what.slice(1);
20534                     break;
20535                 } else if (last === _.last(what)) {
20536                     how  = nodes.push;
20537                     what = what.slice(0, -1).reverse();
20538                     member = reverse(member);
20539                     break;
20540                 } else if (first === _.last(what)) {
20541                     how  = nodes.unshift;
20542                     what = what.slice(0, -1);
20543                     break;
20544                 } else if (first === _.first(what)) {
20545                     how  = nodes.unshift;
20546                     what = what.slice(1).reverse();
20547                     member = reverse(member);
20548                     break;
20549                 } else {
20550                     what = how = null;
20551                 }
20552             }
20553
20554             if (!what)
20555                 break; // No more joinable ways.
20556
20557             how.apply(current, [member]);
20558             how.apply(nodes, what);
20559
20560             array.splice(i, 1);
20561         }
20562     }
20563
20564     return joined;
20565 };
20566 /*
20567     Bypasses features of D3's default projection stream pipeline that are unnecessary:
20568     * Antimeridian clipping
20569     * Spherical rotation
20570     * Resampling
20571 */
20572 iD.geo.RawMercator = function () {
20573     var project = d3.geo.mercator.raw,
20574         k = 512 / Math.PI, // scale
20575         x = 0, y = 0, // translate
20576         clipExtent = [[0, 0], [0, 0]];
20577
20578     function projection(point) {
20579         point = project(point[0] * Math.PI / 180, point[1] * Math.PI / 180);
20580         return [point[0] * k + x, y - point[1] * k];
20581     }
20582
20583     projection.invert = function(point) {
20584         point = project.invert((point[0] - x) / k, (y - point[1]) / k);
20585         return point && [point[0] * 180 / Math.PI, point[1] * 180 / Math.PI];
20586     };
20587
20588     projection.scale = function(_) {
20589         if (!arguments.length) return k;
20590         k = +_;
20591         return projection;
20592     };
20593
20594     projection.translate = function(_) {
20595         if (!arguments.length) return [x, y];
20596         x = +_[0];
20597         y = +_[1];
20598         return projection;
20599     };
20600
20601     projection.clipExtent = function(_) {
20602         if (!arguments.length) return clipExtent;
20603         clipExtent = _;
20604         return projection;
20605     };
20606
20607     projection.stream = d3.geo.transform({
20608         point: function(x, y) {
20609             x = projection([x, y]);
20610             this.stream.point(x[0], x[1]);
20611         }
20612     }).stream;
20613
20614     return projection;
20615 };
20616 iD.actions = {};
20617 iD.actions.AddEntity = function(way) {
20618     return function(graph) {
20619         return graph.replace(way);
20620     };
20621 };
20622 iD.actions.AddMember = function(relationId, member, memberIndex) {
20623     return function(graph) {
20624         var relation = graph.entity(relationId);
20625
20626         if (isNaN(memberIndex) && member.type === 'way') {
20627             var members = relation.indexedMembers();
20628             members.push(member);
20629
20630             var joined = iD.geo.joinWays(members, graph);
20631             for (var i = 0; i < joined.length; i++) {
20632                 var segment = joined[i];
20633                 for (var j = 0; j < segment.length && segment.length >= 2; j++) {
20634                     if (segment[j] !== member)
20635                         continue;
20636
20637                     if (j === 0) {
20638                         memberIndex = segment[j + 1].index;
20639                     } else if (j === segment.length - 1) {
20640                         memberIndex = segment[j - 1].index + 1;
20641                     } else {
20642                         memberIndex = Math.min(segment[j - 1].index + 1, segment[j + 1].index + 1);
20643                     }
20644                 }
20645             }
20646         }
20647
20648         return graph.replace(relation.addMember(member, memberIndex));
20649     };
20650 };
20651 iD.actions.AddMidpoint = function(midpoint, node) {
20652     return function(graph) {
20653         graph = graph.replace(node.move(midpoint.loc));
20654
20655         var parents = _.intersection(
20656             graph.parentWays(graph.entity(midpoint.edge[0])),
20657             graph.parentWays(graph.entity(midpoint.edge[1])));
20658
20659         parents.forEach(function(way) {
20660             for (var i = 0; i < way.nodes.length - 1; i++) {
20661                 if (iD.geo.edgeEqual([way.nodes[i], way.nodes[i + 1]], midpoint.edge)) {
20662                     graph = graph.replace(graph.entity(way.id).addNode(node.id, i + 1));
20663
20664                     // Add only one midpoint on doubled-back segments,
20665                     // turning them into self-intersections.
20666                     return;
20667                 }
20668             }
20669         });
20670
20671         return graph;
20672     };
20673 };
20674 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/AddNodeToWayAction.as
20675 iD.actions.AddVertex = function(wayId, nodeId, index) {
20676     return function(graph) {
20677         return graph.replace(graph.entity(wayId).addNode(nodeId, index));
20678     };
20679 };
20680 iD.actions.ChangeMember = function(relationId, member, memberIndex) {
20681     return function(graph) {
20682         return graph.replace(graph.entity(relationId).updateMember(member, memberIndex));
20683     };
20684 };
20685 iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) {
20686     return function(graph) {
20687         var entity = graph.entity(entityId),
20688             geometry = entity.geometry(graph),
20689             tags = entity.tags;
20690
20691         if (oldPreset) tags = oldPreset.removeTags(tags, geometry);
20692         if (newPreset) tags = newPreset.applyTags(tags, geometry);
20693
20694         return graph.replace(entity.update({tags: tags}));
20695     };
20696 };
20697 iD.actions.ChangeTags = function(entityId, tags) {
20698     return function(graph) {
20699         var entity = graph.entity(entityId);
20700         return graph.replace(entity.update({tags: tags}));
20701     };
20702 };
20703 iD.actions.Circularize = function(wayId, projection, maxAngle) {
20704     maxAngle = (maxAngle || 20) * Math.PI / 180;
20705
20706     var action = function(graph) {
20707         var way = graph.entity(wayId);
20708
20709         if (!way.isConvex(graph)) {
20710             graph = action.makeConvex(graph);
20711         }
20712
20713         var nodes = _.uniq(graph.childNodes(way)),
20714             keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length !== 1; }),
20715             points = nodes.map(function(n) { return projection(n.loc); }),
20716             keyPoints = keyNodes.map(function(n) { return projection(n.loc); }),
20717             centroid = (points.length === 2) ? iD.geo.interp(points[0], points[1], 0.5) : d3.geom.polygon(points).centroid(),
20718             radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }),
20719             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20720             ids;
20721
20722         // we need atleast two key nodes for the algorithm to work
20723         if (!keyNodes.length) {
20724             keyNodes = [nodes[0]];
20725             keyPoints = [points[0]];
20726         }
20727
20728         if (keyNodes.length === 1) {
20729             var index = nodes.indexOf(keyNodes[0]),
20730                 oppositeIndex = Math.floor((index + nodes.length / 2) % nodes.length);
20731
20732             keyNodes.push(nodes[oppositeIndex]);
20733             keyPoints.push(points[oppositeIndex]);
20734         }
20735
20736         // key points and nodes are those connected to the ways,
20737         // they are projected onto the circle, inbetween nodes are moved
20738         // to constant intervals between key nodes, extra inbetween nodes are
20739         // added if necessary.
20740         for (var i = 0; i < keyPoints.length; i++) {
20741             var nextKeyNodeIndex = (i + 1) % keyNodes.length,
20742                 startNode = keyNodes[i],
20743                 endNode = keyNodes[nextKeyNodeIndex],
20744                 startNodeIndex = nodes.indexOf(startNode),
20745                 endNodeIndex = nodes.indexOf(endNode),
20746                 numberNewPoints = -1,
20747                 indexRange = endNodeIndex - startNodeIndex,
20748                 distance, totalAngle, eachAngle, startAngle, endAngle,
20749                 angle, loc, node, j,
20750                 inBetweenNodes = [];
20751
20752             if (indexRange < 0) {
20753                 indexRange += nodes.length;
20754             }
20755
20756             // position this key node
20757             distance = iD.geo.euclideanDistance(centroid, keyPoints[i]);
20758             if (distance === 0) { distance = 1e-4; }
20759             keyPoints[i] = [
20760                 centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius,
20761                 centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius];
20762             graph = graph.replace(keyNodes[i].move(projection.invert(keyPoints[i])));
20763
20764             // figure out the between delta angle we want to match to
20765             startAngle = Math.atan2(keyPoints[i][1] - centroid[1], keyPoints[i][0] - centroid[0]);
20766             endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]);
20767             totalAngle = endAngle - startAngle;
20768
20769             // detects looping around -pi/pi
20770             if (totalAngle * sign > 0) {
20771                 totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle));
20772             }
20773
20774             do {
20775                 numberNewPoints++;
20776                 eachAngle = totalAngle / (indexRange + numberNewPoints);
20777             } while (Math.abs(eachAngle) > maxAngle);
20778
20779             // move existing points
20780             for (j = 1; j < indexRange; j++) {
20781                 angle = startAngle + j * eachAngle;
20782                 loc = projection.invert([
20783                     centroid[0] + Math.cos(angle)*radius,
20784                     centroid[1] + Math.sin(angle)*radius]);
20785
20786                 node = nodes[(j + startNodeIndex) % nodes.length].move(loc);
20787                 graph = graph.replace(node);
20788             }
20789
20790             // add new inbetween nodes if necessary
20791             for (j = 0; j < numberNewPoints; j++) {
20792                 angle = startAngle + (indexRange + j) * eachAngle;
20793                 loc = projection.invert([
20794                     centroid[0] + Math.cos(angle) * radius,
20795                     centroid[1] + Math.sin(angle) * radius]);
20796
20797                 node = iD.Node({loc: loc});
20798                 graph = graph.replace(node);
20799
20800                 nodes.splice(endNodeIndex + j, 0, node);
20801                 inBetweenNodes.push(node.id);
20802             }
20803
20804             // Check for other ways that share these keyNodes..
20805             // If keyNodes are adjacent in both ways,
20806             // we can add inBetween nodes to that shared way too..
20807             if (indexRange === 1 && inBetweenNodes.length) {
20808                 var startIndex1 = way.nodes.lastIndexOf(startNode.id),
20809                     endIndex1 = way.nodes.lastIndexOf(endNode.id),
20810                     wayDirection1 = (endIndex1 - startIndex1);
20811                 if (wayDirection1 < -1) { wayDirection1 = 1; }
20812
20813                 /* eslint-disable no-loop-func */
20814                 _.each(_.without(graph.parentWays(keyNodes[i]), way), function(sharedWay) {
20815                     if (sharedWay.areAdjacent(startNode.id, endNode.id)) {
20816                         var startIndex2 = sharedWay.nodes.lastIndexOf(startNode.id),
20817                             endIndex2 = sharedWay.nodes.lastIndexOf(endNode.id),
20818                             wayDirection2 = (endIndex2 - startIndex2),
20819                             insertAt = endIndex2;
20820                         if (wayDirection2 < -1) { wayDirection2 = 1; }
20821
20822                         if (wayDirection1 !== wayDirection2) {
20823                             inBetweenNodes.reverse();
20824                             insertAt = startIndex2;
20825                         }
20826                         for (j = 0; j < inBetweenNodes.length; j++) {
20827                             sharedWay = sharedWay.addNode(inBetweenNodes[j], insertAt + j);
20828                         }
20829                         graph = graph.replace(sharedWay);
20830                     }
20831                 });
20832                 /* eslint-enable no-loop-func */
20833             }
20834
20835         }
20836
20837         // update the way to have all the new nodes
20838         ids = nodes.map(function(n) { return n.id; });
20839         ids.push(ids[0]);
20840
20841         way = way.update({nodes: ids});
20842         graph = graph.replace(way);
20843
20844         return graph;
20845     };
20846
20847     action.makeConvex = function(graph) {
20848         var way = graph.entity(wayId),
20849             nodes = _.uniq(graph.childNodes(way)),
20850             points = nodes.map(function(n) { return projection(n.loc); }),
20851             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20852             hull = d3.geom.hull(points);
20853
20854         // D3 convex hulls go counterclockwise..
20855         if (sign === -1) {
20856             nodes.reverse();
20857             points.reverse();
20858         }
20859
20860         for (var i = 0; i < hull.length - 1; i++) {
20861             var startIndex = points.indexOf(hull[i]),
20862                 endIndex = points.indexOf(hull[i+1]),
20863                 indexRange = (endIndex - startIndex);
20864
20865             if (indexRange < 0) {
20866                 indexRange += nodes.length;
20867             }
20868
20869             // move interior nodes to the surface of the convex hull..
20870             for (var j = 1; j < indexRange; j++) {
20871                 var point = iD.geo.interp(hull[i], hull[i+1], j / indexRange),
20872                     node = nodes[(j + startIndex) % nodes.length].move(projection.invert(point));
20873                 graph = graph.replace(node);
20874             }
20875         }
20876         return graph;
20877     };
20878
20879     action.disabled = function(graph) {
20880         if (!graph.entity(wayId).isClosed())
20881             return 'not_closed';
20882     };
20883
20884     return action;
20885 };
20886 // Connect the ways at the given nodes.
20887 //
20888 // The last node will survive. All other nodes will be replaced with
20889 // the surviving node in parent ways, and then removed.
20890 //
20891 // Tags and relation memberships of of non-surviving nodes are merged
20892 // to the survivor.
20893 //
20894 // This is the inverse of `iD.actions.Disconnect`.
20895 //
20896 // Reference:
20897 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeNodesAction.as
20898 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/MergeNodesAction.java
20899 //
20900 iD.actions.Connect = function(nodeIds) {
20901     return function(graph) {
20902         var survivor = graph.entity(_.last(nodeIds));
20903
20904         for (var i = 0; i < nodeIds.length - 1; i++) {
20905             var node = graph.entity(nodeIds[i]);
20906
20907             /* eslint-disable no-loop-func */
20908             graph.parentWays(node).forEach(function(parent) {
20909                 if (!parent.areAdjacent(node.id, survivor.id)) {
20910                     graph = graph.replace(parent.replaceNode(node.id, survivor.id));
20911                 }
20912             });
20913
20914             graph.parentRelations(node).forEach(function(parent) {
20915                 graph = graph.replace(parent.replaceMember(node, survivor));
20916             });
20917             /* eslint-enable no-loop-func */
20918
20919             survivor = survivor.mergeTags(node.tags);
20920             graph = iD.actions.DeleteNode(node.id)(graph);
20921         }
20922
20923         graph = graph.replace(survivor);
20924
20925         return graph;
20926     };
20927 };
20928 iD.actions.CopyEntity = function(id, fromGraph, deep) {
20929     var newEntities = [];
20930
20931     var action = function(graph) {
20932         var entity = fromGraph.entity(id);
20933
20934         newEntities = entity.copy(deep, fromGraph);
20935
20936         for (var i = 0; i < newEntities.length; i++) {
20937             graph = graph.replace(newEntities[i]);
20938         }
20939
20940         return graph;
20941     };
20942
20943     action.newEntities = function() {
20944         return newEntities;
20945     };
20946
20947     return action;
20948 };
20949 iD.actions.DeleteMember = function(relationId, memberIndex) {
20950     return function(graph) {
20951         var relation = graph.entity(relationId)
20952             .removeMember(memberIndex);
20953
20954         graph = graph.replace(relation);
20955
20956         if (relation.isDegenerate())
20957             graph = iD.actions.DeleteRelation(relation.id)(graph);
20958
20959         return graph;
20960     };
20961 };
20962 iD.actions.DeleteMultiple = function(ids) {
20963     var actions = {
20964         way: iD.actions.DeleteWay,
20965         node: iD.actions.DeleteNode,
20966         relation: iD.actions.DeleteRelation
20967     };
20968
20969     var action = function(graph) {
20970         ids.forEach(function(id) {
20971             if (graph.hasEntity(id)) { // It may have been deleted aready.
20972                 graph = actions[graph.entity(id).type](id)(graph);
20973             }
20974         });
20975
20976         return graph;
20977     };
20978
20979     action.disabled = function(graph) {
20980         for (var i = 0; i < ids.length; i++) {
20981             var id = ids[i],
20982                 disabled = actions[graph.entity(id).type](id).disabled(graph);
20983             if (disabled) return disabled;
20984         }
20985     };
20986
20987     return action;
20988 };
20989 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteNodeAction.as
20990 iD.actions.DeleteNode = function(nodeId) {
20991     var action = function(graph) {
20992         var node = graph.entity(nodeId);
20993
20994         graph.parentWays(node)
20995             .forEach(function(parent) {
20996                 parent = parent.removeNode(nodeId);
20997                 graph = graph.replace(parent);
20998
20999                 if (parent.isDegenerate()) {
21000                     graph = iD.actions.DeleteWay(parent.id)(graph);
21001                 }
21002             });
21003
21004         graph.parentRelations(node)
21005             .forEach(function(parent) {
21006                 parent = parent.removeMembersWithID(nodeId);
21007                 graph = graph.replace(parent);
21008
21009                 if (parent.isDegenerate()) {
21010                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21011                 }
21012             });
21013
21014         return graph.remove(node);
21015     };
21016
21017     action.disabled = function() {
21018         return false;
21019     };
21020
21021     return action;
21022 };
21023 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteRelationAction.as
21024 iD.actions.DeleteRelation = function(relationId) {
21025     function deleteEntity(entity, graph) {
21026         return !graph.parentWays(entity).length &&
21027             !graph.parentRelations(entity).length &&
21028             !entity.hasInterestingTags();
21029     }
21030
21031     var action = function(graph) {
21032         var relation = graph.entity(relationId);
21033
21034         graph.parentRelations(relation)
21035             .forEach(function(parent) {
21036                 parent = parent.removeMembersWithID(relationId);
21037                 graph = graph.replace(parent);
21038
21039                 if (parent.isDegenerate()) {
21040                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21041                 }
21042             });
21043
21044         _.uniq(_.pluck(relation.members, 'id')).forEach(function(memberId) {
21045             graph = graph.replace(relation.removeMembersWithID(memberId));
21046
21047             var entity = graph.entity(memberId);
21048             if (deleteEntity(entity, graph)) {
21049                 graph = iD.actions.DeleteMultiple([memberId])(graph);
21050             }
21051         });
21052
21053         return graph.remove(relation);
21054     };
21055
21056     action.disabled = function(graph) {
21057         if (!graph.entity(relationId).isComplete(graph))
21058             return 'incomplete_relation';
21059     };
21060
21061     return action;
21062 };
21063 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteWayAction.as
21064 iD.actions.DeleteWay = function(wayId) {
21065     function deleteNode(node, graph) {
21066         return !graph.parentWays(node).length &&
21067             !graph.parentRelations(node).length &&
21068             !node.hasInterestingTags();
21069     }
21070
21071     var action = function(graph) {
21072         var way = graph.entity(wayId);
21073
21074         graph.parentRelations(way)
21075             .forEach(function(parent) {
21076                 parent = parent.removeMembersWithID(wayId);
21077                 graph = graph.replace(parent);
21078
21079                 if (parent.isDegenerate()) {
21080                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21081                 }
21082             });
21083
21084         _.uniq(way.nodes).forEach(function(nodeId) {
21085             graph = graph.replace(way.removeNode(nodeId));
21086
21087             var node = graph.entity(nodeId);
21088             if (deleteNode(node, graph)) {
21089                 graph = graph.remove(node);
21090             }
21091         });
21092
21093         return graph.remove(way);
21094     };
21095
21096     action.disabled = function(graph) {
21097         var disabled = false;
21098
21099         graph.parentRelations(graph.entity(wayId)).forEach(function(parent) {
21100             var type = parent.tags.type,
21101                 role = parent.memberById(wayId).role || 'outer';
21102             if (type === 'route' || type === 'boundary' || (type === 'multipolygon' && role === 'outer')) {
21103                 disabled = 'part_of_relation';
21104             }
21105         });
21106
21107         return disabled;
21108     };
21109
21110     return action;
21111 };
21112 iD.actions.DeprecateTags = function(entityId) {
21113     return function(graph) {
21114         var entity = graph.entity(entityId),
21115             newtags = _.clone(entity.tags),
21116             change = false,
21117             rule;
21118
21119         // This handles deprecated tags with a single condition
21120         for (var i = 0; i < iD.data.deprecated.length; i++) {
21121
21122             rule = iD.data.deprecated[i];
21123             var match = _.pairs(rule.old)[0],
21124                 replacements = rule.replace ? _.pairs(rule.replace) : null;
21125
21126             if (entity.tags[match[0]] && match[1] === '*') {
21127
21128                 var value = entity.tags[match[0]];
21129                 if (replacements && !newtags[replacements[0][0]]) {
21130                     newtags[replacements[0][0]] = value;
21131                 }
21132                 delete newtags[match[0]];
21133                 change = true;
21134
21135             } else if (entity.tags[match[0]] === match[1]) {
21136                 newtags = _.assign({}, rule.replace || {}, _.omit(newtags, match[0]));
21137                 change = true;
21138             }
21139         }
21140
21141         if (change) {
21142             return graph.replace(entity.update({tags: newtags}));
21143         } else {
21144             return graph;
21145         }
21146     };
21147 };
21148 iD.actions.DiscardTags = function(difference) {
21149     return function(graph) {
21150         function discardTags(entity) {
21151             if (!_.isEmpty(entity.tags)) {
21152                 var tags = {};
21153                 _.each(entity.tags, function(v, k) {
21154                     if (v) tags[k] = v;
21155                 });
21156
21157                 graph = graph.replace(entity.update({
21158                     tags: _.omit(tags, iD.data.discarded)
21159                 }));
21160             }
21161         }
21162
21163         difference.modified().forEach(discardTags);
21164         difference.created().forEach(discardTags);
21165
21166         return graph;
21167     };
21168 };
21169 // Disconect the ways at the given node.
21170 //
21171 // Optionally, disconnect only the given ways.
21172 //
21173 // For testing convenience, accepts an ID to assign to the (first) new node.
21174 // Normally, this will be undefined and the way will automatically
21175 // be assigned a new ID.
21176 //
21177 // This is the inverse of `iD.actions.Connect`.
21178 //
21179 // Reference:
21180 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/UnjoinNodeAction.as
21181 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/UnGlueAction.java
21182 //
21183 iD.actions.Disconnect = function(nodeId, newNodeId) {
21184     var wayIds;
21185
21186     var action = function(graph) {
21187         var node = graph.entity(nodeId),
21188             connections = action.connections(graph);
21189
21190         connections.forEach(function(connection) {
21191             var way = graph.entity(connection.wayID),
21192                 newNode = iD.Node({id: newNodeId, loc: node.loc, tags: node.tags});
21193
21194             graph = graph.replace(newNode);
21195             if (connection.index === 0 && way.isArea()) {
21196                 // replace shared node with shared node..
21197                 graph = graph.replace(way.replaceNode(way.nodes[0], newNode.id));
21198             } else {
21199                 // replace shared node with multiple new nodes..
21200                 graph = graph.replace(way.updateNode(newNode.id, connection.index));
21201             }
21202         });
21203
21204         return graph;
21205     };
21206
21207     action.connections = function(graph) {
21208         var candidates = [],
21209             keeping = false,
21210             parentWays = graph.parentWays(graph.entity(nodeId));
21211
21212         parentWays.forEach(function(way) {
21213             if (wayIds && wayIds.indexOf(way.id) === -1) {
21214                 keeping = true;
21215                 return;
21216             }
21217             if (way.isArea() && (way.nodes[0] === nodeId)) {
21218                 candidates.push({wayID: way.id, index: 0});
21219             } else {
21220                 way.nodes.forEach(function(waynode, index) {
21221                     if (waynode === nodeId) {
21222                         candidates.push({wayID: way.id, index: index});
21223                     }
21224                 });
21225             }
21226         });
21227
21228         return keeping ? candidates : candidates.slice(1);
21229     };
21230
21231     action.disabled = function(graph) {
21232         var connections = action.connections(graph);
21233         if (connections.length === 0 || (wayIds && wayIds.length !== connections.length))
21234             return 'not_connected';
21235     };
21236
21237     action.limitWays = function(_) {
21238         if (!arguments.length) return wayIds;
21239         wayIds = _;
21240         return action;
21241     };
21242
21243     return action;
21244 };
21245 // Join ways at the end node they share.
21246 //
21247 // This is the inverse of `iD.actions.Split`.
21248 //
21249 // Reference:
21250 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeWaysAction.as
21251 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/CombineWayAction.java
21252 //
21253 iD.actions.Join = function(ids) {
21254
21255     function groupEntitiesByGeometry(graph) {
21256         var entities = ids.map(function(id) { return graph.entity(id); });
21257         return _.extend({line: []}, _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21258     }
21259
21260     var action = function(graph) {
21261         var ways = ids.map(graph.entity, graph),
21262             survivor = ways[0];
21263
21264         // Prefer to keep an existing way.
21265         for (var i = 0; i < ways.length; i++) {
21266             if (!ways[i].isNew()) {
21267                 survivor = ways[i];
21268                 break;
21269             }
21270         }
21271
21272         var joined = iD.geo.joinWays(ways, graph)[0];
21273
21274         survivor = survivor.update({nodes: _.pluck(joined.nodes, 'id')});
21275         graph = graph.replace(survivor);
21276
21277         joined.forEach(function(way) {
21278             if (way.id === survivor.id)
21279                 return;
21280
21281             graph.parentRelations(way).forEach(function(parent) {
21282                 graph = graph.replace(parent.replaceMember(way, survivor));
21283             });
21284
21285             survivor = survivor.mergeTags(way.tags);
21286
21287             graph = graph.replace(survivor);
21288             graph = iD.actions.DeleteWay(way.id)(graph);
21289         });
21290
21291         return graph;
21292     };
21293
21294     action.disabled = function(graph) {
21295         var geometries = groupEntitiesByGeometry(graph);
21296         if (ids.length < 2 || ids.length !== geometries.line.length)
21297             return 'not_eligible';
21298
21299         var joined = iD.geo.joinWays(ids.map(graph.entity, graph), graph);
21300         if (joined.length > 1)
21301             return 'not_adjacent';
21302
21303         var nodeIds = _.pluck(joined[0].nodes, 'id').slice(1, -1),
21304             relation,
21305             tags = {},
21306             conflicting = false;
21307
21308         joined[0].forEach(function(way) {
21309             var parents = graph.parentRelations(way);
21310             parents.forEach(function(parent) {
21311                 if (parent.isRestriction() && parent.members.some(function(m) { return nodeIds.indexOf(m.id) >= 0; }))
21312                     relation = parent;
21313             });
21314
21315             for (var k in way.tags) {
21316                 if (!(k in tags)) {
21317                     tags[k] = way.tags[k];
21318                 } else if (tags[k] && iD.interestingTag(k) && tags[k] !== way.tags[k]) {
21319                     conflicting = true;
21320                 }
21321             }
21322         });
21323
21324         if (relation)
21325             return 'restriction';
21326
21327         if (conflicting)
21328             return 'conflicting_tags';
21329     };
21330
21331     return action;
21332 };
21333 iD.actions.Merge = function(ids) {
21334     function groupEntitiesByGeometry(graph) {
21335         var entities = ids.map(function(id) { return graph.entity(id); });
21336         return _.extend({point: [], area: [], line: [], relation: []},
21337             _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21338     }
21339
21340     var action = function(graph) {
21341         var geometries = groupEntitiesByGeometry(graph),
21342             target = geometries.area[0] || geometries.line[0],
21343             points = geometries.point;
21344
21345         points.forEach(function(point) {
21346             target = target.mergeTags(point.tags);
21347
21348             graph.parentRelations(point).forEach(function(parent) {
21349                 graph = graph.replace(parent.replaceMember(point, target));
21350             });
21351
21352             graph = graph.remove(point);
21353         });
21354
21355         graph = graph.replace(target);
21356
21357         return graph;
21358     };
21359
21360     action.disabled = function(graph) {
21361         var geometries = groupEntitiesByGeometry(graph);
21362         if (geometries.point.length === 0 ||
21363             (geometries.area.length + geometries.line.length) !== 1 ||
21364             geometries.relation.length !== 0)
21365             return 'not_eligible';
21366     };
21367
21368     return action;
21369 };
21370 iD.actions.MergePolygon = function(ids, newRelationId) {
21371
21372     function groupEntities(graph) {
21373         var entities = ids.map(function (id) { return graph.entity(id); });
21374         return _.extend({
21375                 closedWay: [],
21376                 multipolygon: [],
21377                 other: []
21378             }, _.groupBy(entities, function(entity) {
21379                 if (entity.type === 'way' && entity.isClosed()) {
21380                     return 'closedWay';
21381                 } else if (entity.type === 'relation' && entity.isMultipolygon()) {
21382                     return 'multipolygon';
21383                 } else {
21384                     return 'other';
21385                 }
21386             }));
21387     }
21388
21389     var action = function(graph) {
21390         var entities = groupEntities(graph);
21391
21392         // An array representing all the polygons that are part of the multipolygon.
21393         //
21394         // Each element is itself an array of objects with an id property, and has a
21395         // locs property which is an array of the locations forming the polygon.
21396         var polygons = entities.multipolygon.reduce(function(polygons, m) {
21397             return polygons.concat(iD.geo.joinWays(m.members, graph));
21398         }, []).concat(entities.closedWay.map(function(d) {
21399             var member = [{id: d.id}];
21400             member.nodes = graph.childNodes(d);
21401             return member;
21402         }));
21403
21404         // contained is an array of arrays of boolean values,
21405         // where contained[j][k] is true iff the jth way is
21406         // contained by the kth way.
21407         var contained = polygons.map(function(w, i) {
21408             return polygons.map(function(d, n) {
21409                 if (i === n) return null;
21410                 return iD.geo.polygonContainsPolygon(
21411                     _.pluck(d.nodes, 'loc'),
21412                     _.pluck(w.nodes, 'loc'));
21413             });
21414         });
21415
21416         // Sort all polygons as either outer or inner ways
21417         var members = [],
21418             outer = true;
21419
21420         while (polygons.length) {
21421             extractUncontained(polygons);
21422             polygons = polygons.filter(isContained);
21423             contained = contained.filter(isContained).map(filterContained);
21424         }
21425
21426         function isContained(d, i) {
21427             return _.any(contained[i]);
21428         }
21429
21430         function filterContained(d) {
21431             return d.filter(isContained);
21432         }
21433
21434         function extractUncontained(polygons) {
21435             polygons.forEach(function(d, i) {
21436                 if (!isContained(d, i)) {
21437                     d.forEach(function(member) {
21438                         members.push({
21439                             type: 'way',
21440                             id: member.id,
21441                             role: outer ? 'outer' : 'inner'
21442                         });
21443                     });
21444                 }
21445             });
21446             outer = !outer;
21447         }
21448
21449         // Move all tags to one relation
21450         var relation = entities.multipolygon[0] ||
21451             iD.Relation({ id: newRelationId, tags: { type: 'multipolygon' }});
21452
21453         entities.multipolygon.slice(1).forEach(function(m) {
21454             relation = relation.mergeTags(m.tags);
21455             graph = graph.remove(m);
21456         });
21457
21458         entities.closedWay.forEach(function(way) {
21459             function isThisOuter(m) {
21460                 return m.id === way.id && m.role !== 'inner';
21461             }
21462             if (members.some(isThisOuter)) {
21463                 relation = relation.mergeTags(way.tags);
21464                 graph = graph.replace(way.update({ tags: {} }));
21465             }
21466         });
21467
21468         return graph.replace(relation.update({
21469             members: members,
21470             tags: _.omit(relation.tags, 'area')
21471         }));
21472     };
21473
21474     action.disabled = function(graph) {
21475         var entities = groupEntities(graph);
21476         if (entities.other.length > 0 ||
21477             entities.closedWay.length + entities.multipolygon.length < 2)
21478             return 'not_eligible';
21479         if (!entities.multipolygon.every(function(r) { return r.isComplete(graph); }))
21480             return 'incomplete_relation';
21481     };
21482
21483     return action;
21484 };
21485 iD.actions.MergeRemoteChanges = function(id, localGraph, remoteGraph, formatUser) {
21486     var option = 'safe',  // 'safe', 'force_local', 'force_remote'
21487         conflicts = [];
21488
21489     function user(d) {
21490         return _.isFunction(formatUser) ? formatUser(d) : d;
21491     }
21492
21493
21494     function mergeLocation(remote, target) {
21495         function pointEqual(a, b) {
21496             var epsilon = 1e-6;
21497             return (Math.abs(a[0] - b[0]) < epsilon) && (Math.abs(a[1] - b[1]) < epsilon);
21498         }
21499
21500         if (option === 'force_local' || pointEqual(target.loc, remote.loc)) {
21501             return target;
21502         }
21503         if (option === 'force_remote') {
21504             return target.update({loc: remote.loc});
21505         }
21506
21507         conflicts.push(t('merge_remote_changes.conflict.location', { user: user(remote.user) }));
21508         return target;
21509     }
21510
21511
21512     function mergeNodes(base, remote, target) {
21513         if (option === 'force_local' || _.isEqual(target.nodes, remote.nodes)) {
21514             return target;
21515         }
21516         if (option === 'force_remote') {
21517             return target.update({nodes: remote.nodes});
21518         }
21519
21520         var ccount = conflicts.length,
21521             o = base.nodes || [],
21522             a = target.nodes || [],
21523             b = remote.nodes || [],
21524             nodes = [],
21525             hunks = Diff3.diff3_merge(a, o, b, true);
21526
21527         for (var i = 0; i < hunks.length; i++) {
21528             var hunk = hunks[i];
21529             if (hunk.ok) {
21530                 nodes.push.apply(nodes, hunk.ok);
21531             } else {
21532                 // for all conflicts, we can assume c.a !== c.b
21533                 // because `diff3_merge` called with `true` option to exclude false conflicts..
21534                 var c = hunk.conflict;
21535                 if (_.isEqual(c.o, c.a)) {  // only changed remotely
21536                     nodes.push.apply(nodes, c.b);
21537                 } else if (_.isEqual(c.o, c.b)) {  // only changed locally
21538                     nodes.push.apply(nodes, c.a);
21539                 } else {       // changed both locally and remotely
21540                     conflicts.push(t('merge_remote_changes.conflict.nodelist', { user: user(remote.user) }));
21541                     break;
21542                 }
21543             }
21544         }
21545
21546         return (conflicts.length === ccount) ? target.update({nodes: nodes}) : target;
21547     }
21548
21549
21550     function mergeChildren(targetWay, children, updates, graph) {
21551         function isUsed(node, targetWay) {
21552             var parentWays = _.pluck(graph.parentWays(node), 'id');
21553             return node.hasInterestingTags() ||
21554                 _.without(parentWays, targetWay.id).length > 0 ||
21555                 graph.parentRelations(node).length > 0;
21556         }
21557
21558         var ccount = conflicts.length;
21559
21560         for (var i = 0; i < children.length; i++) {
21561             var id = children[i],
21562                 node = graph.hasEntity(id);
21563
21564             // remove unused childNodes..
21565             if (targetWay.nodes.indexOf(id) === -1) {
21566                 if (node && !isUsed(node, targetWay)) {
21567                     updates.removeIds.push(id);
21568                 }
21569                 continue;
21570             }
21571
21572             // restore used childNodes..
21573             var local = localGraph.hasEntity(id),
21574                 remote = remoteGraph.hasEntity(id),
21575                 target;
21576
21577             if (option === 'force_remote' && remote && remote.visible) {
21578                 updates.replacements.push(remote);
21579
21580             } else if (option === 'force_local' && local) {
21581                 target = iD.Entity(local);
21582                 if (remote) {
21583                     target = target.update({ version: remote.version });
21584                 }
21585                 updates.replacements.push(target);
21586
21587             } else if (option === 'safe' && local && remote && local.version !== remote.version) {
21588                 target = iD.Entity(local, { version: remote.version });
21589                 if (remote.visible) {
21590                     target = mergeLocation(remote, target);
21591                 } else {
21592                     conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21593                 }
21594
21595                 if (conflicts.length !== ccount) break;
21596                 updates.replacements.push(target);
21597             }
21598         }
21599
21600         return targetWay;
21601     }
21602
21603
21604     function updateChildren(updates, graph) {
21605         for (var i = 0; i < updates.replacements.length; i++) {
21606             graph = graph.replace(updates.replacements[i]);
21607         }
21608         if (updates.removeIds.length) {
21609             graph = iD.actions.DeleteMultiple(updates.removeIds)(graph);
21610         }
21611         return graph;
21612     }
21613
21614
21615     function mergeMembers(remote, target) {
21616         if (option === 'force_local' || _.isEqual(target.members, remote.members)) {
21617             return target;
21618         }
21619         if (option === 'force_remote') {
21620             return target.update({members: remote.members});
21621         }
21622
21623         conflicts.push(t('merge_remote_changes.conflict.memberlist', { user: user(remote.user) }));
21624         return target;
21625     }
21626
21627
21628     function mergeTags(base, remote, target) {
21629         function ignoreKey(k) {
21630             return _.contains(iD.data.discarded, k);
21631         }
21632
21633         if (option === 'force_local' || _.isEqual(target.tags, remote.tags)) {
21634             return target;
21635         }
21636         if (option === 'force_remote') {
21637             return target.update({tags: remote.tags});
21638         }
21639
21640         var ccount = conflicts.length,
21641             o = base.tags || {},
21642             a = target.tags || {},
21643             b = remote.tags || {},
21644             keys = _.reject(_.union(_.keys(o), _.keys(a), _.keys(b)), ignoreKey),
21645             tags = _.clone(a),
21646             changed = false;
21647
21648         for (var i = 0; i < keys.length; i++) {
21649             var k = keys[i];
21650
21651             if (o[k] !== b[k] && a[k] !== b[k]) {    // changed remotely..
21652                 if (o[k] !== a[k]) {      // changed locally..
21653                     conflicts.push(t('merge_remote_changes.conflict.tags',
21654                         { tag: k, local: a[k], remote: b[k], user: user(remote.user) }));
21655
21656                 } else {                  // unchanged locally, accept remote change..
21657                     if (b.hasOwnProperty(k)) {
21658                         tags[k] = b[k];
21659                     } else {
21660                         delete tags[k];
21661                     }
21662                     changed = true;
21663                 }
21664             }
21665         }
21666
21667         return (changed && conflicts.length === ccount) ? target.update({tags: tags}) : target;
21668     }
21669
21670
21671     //  `graph.base()` is the common ancestor of the two graphs.
21672     //  `localGraph` contains user's edits up to saving
21673     //  `remoteGraph` contains remote edits to modified nodes
21674     //  `graph` must be a descendent of `localGraph` and may include
21675     //      some conflict resolution actions performed on it.
21676     //
21677     //                  --- ... --- `localGraph` -- ... -- `graph`
21678     //                 /
21679     //  `graph.base()` --- ... --- `remoteGraph`
21680     //
21681     var action = function(graph) {
21682         var updates = { replacements: [], removeIds: [] },
21683             base = graph.base().entities[id],
21684             local = localGraph.entity(id),
21685             remote = remoteGraph.entity(id),
21686             target = iD.Entity(local, { version: remote.version });
21687
21688         // delete/undelete
21689         if (!remote.visible) {
21690             if (option === 'force_remote') {
21691                 return iD.actions.DeleteMultiple([id])(graph);
21692
21693             } else if (option === 'force_local') {
21694                 if (target.type === 'way') {
21695                     target = mergeChildren(target, _.uniq(local.nodes), updates, graph);
21696                     graph = updateChildren(updates, graph);
21697                 }
21698                 return graph.replace(target);
21699
21700             } else {
21701                 conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21702                 return graph;  // do nothing
21703             }
21704         }
21705
21706         // merge
21707         if (target.type === 'node') {
21708             target = mergeLocation(remote, target);
21709
21710         } else if (target.type === 'way') {
21711             // pull in any child nodes that may not be present locally..
21712             graph.rebase(remoteGraph.childNodes(remote), [graph], false);
21713             target = mergeNodes(base, remote, target);
21714             target = mergeChildren(target, _.union(local.nodes, remote.nodes), updates, graph);
21715
21716         } else if (target.type === 'relation') {
21717             target = mergeMembers(remote, target);
21718         }
21719
21720         target = mergeTags(base, remote, target);
21721
21722         if (!conflicts.length) {
21723             graph = updateChildren(updates, graph).replace(target);
21724         }
21725
21726         return graph;
21727     };
21728
21729     action.withOption = function(opt) {
21730         option = opt;
21731         return action;
21732     };
21733
21734     action.conflicts = function() {
21735         return conflicts;
21736     };
21737
21738     return action;
21739 };
21740 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
21741 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
21742 iD.actions.Move = function(moveIds, tryDelta, projection, cache) {
21743     var delta = tryDelta;
21744
21745     function vecAdd(a, b) { return [a[0] + b[0], a[1] + b[1]]; }
21746     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
21747
21748     function setupCache(graph) {
21749         function canMove(nodeId) {
21750             var parents = _.pluck(graph.parentWays(graph.entity(nodeId)), 'id');
21751             if (parents.length < 3) return true;
21752
21753             // Don't move a vertex where >2 ways meet, unless all parentWays are moving too..
21754             var parentsMoving = _.all(parents, function(id) { return cache.moving[id]; });
21755             if (!parentsMoving) delete cache.moving[nodeId];
21756
21757             return parentsMoving;
21758         }
21759
21760         function cacheEntities(ids) {
21761             _.each(ids, function(id) {
21762                 if (cache.moving[id]) return;
21763                 cache.moving[id] = true;
21764
21765                 var entity = graph.hasEntity(id);
21766                 if (!entity) return;
21767
21768                 if (entity.type === 'node') {
21769                     cache.nodes.push(id);
21770                     cache.startLoc[id] = entity.loc;
21771                 } else if (entity.type === 'way') {
21772                     cache.ways.push(id);
21773                     cacheEntities(entity.nodes);
21774                 } else {
21775                     cacheEntities(_.pluck(entity.members, 'id'));
21776                 }
21777             });
21778         }
21779
21780         function cacheIntersections(ids) {
21781             function isEndpoint(way, id) { return !way.isClosed() && !!way.affix(id); }
21782
21783             _.each(ids, function(id) {
21784                 // consider only intersections with 1 moved and 1 unmoved way.
21785                 _.each(graph.childNodes(graph.entity(id)), function(node) {
21786                     var parents = graph.parentWays(node);
21787                     if (parents.length !== 2) return;
21788
21789                     var moved = graph.entity(id),
21790                         unmoved = _.find(parents, function(way) { return !cache.moving[way.id]; });
21791                     if (!unmoved) return;
21792
21793                     // exclude ways that are overly connected..
21794                     if (_.intersection(moved.nodes, unmoved.nodes).length > 2) return;
21795
21796                     if (moved.isArea() || unmoved.isArea()) return;
21797
21798                     cache.intersection[node.id] = {
21799                         nodeId: node.id,
21800                         movedId: moved.id,
21801                         unmovedId: unmoved.id,
21802                         movedIsEP: isEndpoint(moved, node.id),
21803                         unmovedIsEP: isEndpoint(unmoved, node.id)
21804                     };
21805                 });
21806             });
21807         }
21808
21809
21810         if (!cache) {
21811             cache = {};
21812         }
21813         if (!cache.ok) {
21814             cache.moving = {};
21815             cache.intersection = {};
21816             cache.replacedVertex = {};
21817             cache.startLoc = {};
21818             cache.nodes = [];
21819             cache.ways = [];
21820
21821             cacheEntities(moveIds);
21822             cacheIntersections(cache.ways);
21823             cache.nodes = _.filter(cache.nodes, canMove);
21824
21825             cache.ok = true;
21826         }
21827     }
21828
21829
21830     // Place a vertex where the moved vertex used to be, to preserve way shape..
21831     function replaceMovedVertex(nodeId, wayId, graph, delta) {
21832         var way = graph.entity(wayId),
21833             moved = graph.entity(nodeId),
21834             movedIndex = way.nodes.indexOf(nodeId),
21835             len, prevIndex, nextIndex;
21836
21837         if (way.isClosed()) {
21838             len = way.nodes.length - 1;
21839             prevIndex = (movedIndex + len - 1) % len;
21840             nextIndex = (movedIndex + len + 1) % len;
21841         } else {
21842             len = way.nodes.length;
21843             prevIndex = movedIndex - 1;
21844             nextIndex = movedIndex + 1;
21845         }
21846
21847         var prev = graph.hasEntity(way.nodes[prevIndex]),
21848             next = graph.hasEntity(way.nodes[nextIndex]);
21849
21850         // Don't add orig vertex at endpoint..
21851         if (!prev || !next) return graph;
21852
21853         var key = wayId + '_' + nodeId,
21854             orig = cache.replacedVertex[key];
21855         if (!orig) {
21856             orig = iD.Node();
21857             cache.replacedVertex[key] = orig;
21858             cache.startLoc[orig.id] = cache.startLoc[nodeId];
21859         }
21860
21861         var start, end;
21862         if (delta) {
21863             start = projection(cache.startLoc[nodeId]);
21864             end = projection.invert(vecAdd(start, delta));
21865         } else {
21866             end = cache.startLoc[nodeId];
21867         }
21868         orig = orig.move(end);
21869
21870         var angle = Math.abs(iD.geo.angle(orig, prev, projection) -
21871                 iD.geo.angle(orig, next, projection)) * 180 / Math.PI;
21872
21873         // Don't add orig vertex if it would just make a straight line..
21874         if (angle > 175 && angle < 185) return graph;
21875
21876         // Don't add orig vertex if another point is already nearby (within 10m)
21877         if (iD.geo.sphericalDistance(prev.loc, orig.loc) < 10 ||
21878             iD.geo.sphericalDistance(orig.loc, next.loc) < 10) return graph;
21879
21880         // moving forward or backward along way?
21881         var p1 = [prev.loc, orig.loc, moved.loc, next.loc].map(projection),
21882             p2 = [prev.loc, moved.loc, orig.loc, next.loc].map(projection),
21883             d1 = iD.geo.pathLength(p1),
21884             d2 = iD.geo.pathLength(p2),
21885             insertAt = (d1 < d2) ? movedIndex : nextIndex;
21886
21887         // moving around closed loop?
21888         if (way.isClosed() && insertAt === 0) insertAt = len;
21889
21890         way = way.addNode(orig.id, insertAt);
21891         return graph.replace(orig).replace(way);
21892     }
21893
21894     // Reorder nodes around intersections that have moved..
21895     function unZorroIntersection(intersection, graph) {
21896         var vertex = graph.entity(intersection.nodeId),
21897             way1 = graph.entity(intersection.movedId),
21898             way2 = graph.entity(intersection.unmovedId),
21899             isEP1 = intersection.movedIsEP,
21900             isEP2 = intersection.unmovedIsEP;
21901
21902         // don't move the vertex if it is the endpoint of both ways.
21903         if (isEP1 && isEP2) return graph;
21904
21905         var nodes1 = _.without(graph.childNodes(way1), vertex),
21906             nodes2 = _.without(graph.childNodes(way2), vertex);
21907
21908         if (way1.isClosed() && way1.first() === vertex.id) nodes1.push(nodes1[0]);
21909         if (way2.isClosed() && way2.first() === vertex.id) nodes2.push(nodes2[0]);
21910
21911         var edge1 = !isEP1 && iD.geo.chooseEdge(nodes1, projection(vertex.loc), projection),
21912             edge2 = !isEP2 && iD.geo.chooseEdge(nodes2, projection(vertex.loc), projection),
21913             loc;
21914
21915         // snap vertex to nearest edge (or some point between them)..
21916         if (!isEP1 && !isEP2) {
21917             var epsilon = 1e-4, maxIter = 10;
21918             for (var i = 0; i < maxIter; i++) {
21919                 loc = iD.geo.interp(edge1.loc, edge2.loc, 0.5);
21920                 edge1 = iD.geo.chooseEdge(nodes1, projection(loc), projection);
21921                 edge2 = iD.geo.chooseEdge(nodes2, projection(loc), projection);
21922                 if (Math.abs(edge1.distance - edge2.distance) < epsilon) break;
21923             }
21924         } else if (!isEP1) {
21925             loc = edge1.loc;
21926         } else {
21927             loc = edge2.loc;
21928         }
21929
21930         graph = graph.replace(vertex.move(loc));
21931
21932         // if zorro happened, reorder nodes..
21933         if (!isEP1 && edge1.index !== way1.nodes.indexOf(vertex.id)) {
21934             way1 = way1.removeNode(vertex.id).addNode(vertex.id, edge1.index);
21935             graph = graph.replace(way1);
21936         }
21937         if (!isEP2 && edge2.index !== way2.nodes.indexOf(vertex.id)) {
21938             way2 = way2.removeNode(vertex.id).addNode(vertex.id, edge2.index);
21939             graph = graph.replace(way2);
21940         }
21941
21942         return graph;
21943     }
21944
21945
21946     function cleanupIntersections(graph) {
21947         _.each(cache.intersection, function(obj) {
21948             graph = replaceMovedVertex(obj.nodeId, obj.movedId, graph, delta);
21949             graph = replaceMovedVertex(obj.nodeId, obj.unmovedId, graph, null);
21950             graph = unZorroIntersection(obj, graph);
21951         });
21952
21953         return graph;
21954     }
21955
21956     // check if moving way endpoint can cross an unmoved way, if so limit delta..
21957     function limitDelta(graph) {
21958         _.each(cache.intersection, function(obj) {
21959             if (!obj.movedIsEP) return;
21960
21961             var node = graph.entity(obj.nodeId),
21962                 start = projection(node.loc),
21963                 end = vecAdd(start, delta),
21964                 movedNodes = graph.childNodes(graph.entity(obj.movedId)),
21965                 movedPath = _.map(_.pluck(movedNodes, 'loc'),
21966                     function(loc) { return vecAdd(projection(loc), delta); }),
21967                 unmovedNodes = graph.childNodes(graph.entity(obj.unmovedId)),
21968                 unmovedPath = _.map(_.pluck(unmovedNodes, 'loc'), projection),
21969                 hits = iD.geo.pathIntersections(movedPath, unmovedPath);
21970
21971             for (var i = 0; i < hits.length; i++) {
21972                 if (_.isEqual(hits[i], end)) continue;
21973                 var edge = iD.geo.chooseEdge(unmovedNodes, end, projection);
21974                 delta = vecSub(projection(edge.loc), start);
21975             }
21976         });
21977     }
21978
21979
21980     var action = function(graph) {
21981         if (delta[0] === 0 && delta[1] === 0) return graph;
21982
21983         setupCache(graph);
21984
21985         if (!_.isEmpty(cache.intersection)) {
21986             limitDelta(graph);
21987         }
21988
21989         _.each(cache.nodes, function(id) {
21990             var node = graph.entity(id),
21991                 start = projection(node.loc),
21992                 end = vecAdd(start, delta);
21993             graph = graph.replace(node.move(projection.invert(end)));
21994         });
21995
21996         if (!_.isEmpty(cache.intersection)) {
21997             graph = cleanupIntersections(graph);
21998         }
21999
22000         return graph;
22001     };
22002
22003     action.disabled = function(graph) {
22004         function incompleteRelation(id) {
22005             var entity = graph.entity(id);
22006             return entity.type === 'relation' && !entity.isComplete(graph);
22007         }
22008
22009         if (_.any(moveIds, incompleteRelation))
22010             return 'incomplete_relation';
22011     };
22012
22013     action.delta = function() {
22014         return delta;
22015     };
22016
22017     return action;
22018 };
22019 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
22020 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
22021 iD.actions.MoveNode = function(nodeId, loc) {
22022     return function(graph) {
22023         return graph.replace(graph.entity(nodeId).move(loc));
22024     };
22025 };
22026 iD.actions.Noop = function() {
22027     return function(graph) {
22028         return graph;
22029     };
22030 };
22031 /*
22032  * Based on https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/potlatch2/tools/Quadrilateralise.as
22033  */
22034
22035 iD.actions.Orthogonalize = function(wayId, projection) {
22036     var threshold = 12, // degrees within right or straight to alter
22037         lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180),
22038         upperThreshold = Math.cos(threshold * Math.PI / 180);
22039
22040     var action = function(graph) {
22041         var way = graph.entity(wayId),
22042             nodes = graph.childNodes(way),
22043             points = _.uniq(nodes).map(function(n) { return projection(n.loc); }),
22044             corner = {i: 0, dotp: 1},
22045             epsilon = 1e-4,
22046             i, j, score, motions;
22047
22048         if (nodes.length === 4) {
22049             for (i = 0; i < 1000; i++) {
22050                 motions = points.map(calcMotion);
22051                 points[corner.i] = addPoints(points[corner.i],motions[corner.i]);
22052                 score = corner.dotp;
22053                 if (score < epsilon) {
22054                     break;
22055                 }
22056             }
22057
22058             graph = graph.replace(graph.entity(nodes[corner.i].id)
22059                 .move(projection.invert(points[corner.i])));
22060         } else {
22061             var best,
22062                 originalPoints = _.clone(points);
22063             score = Infinity;
22064
22065             for (i = 0; i < 1000; i++) {
22066                 motions = points.map(calcMotion);
22067                 for (j = 0; j < motions.length; j++) {
22068                     points[j] = addPoints(points[j],motions[j]);
22069                 }
22070                 var newScore = squareness(points);
22071                 if (newScore < score) {
22072                     best = _.clone(points);
22073                     score = newScore;
22074                 }
22075                 if (score < epsilon) {
22076                     break;
22077                 }
22078             }
22079
22080             points = best;
22081
22082             for (i = 0; i < points.length; i++) {
22083                 // only move the points that actually moved
22084                 if (originalPoints[i][0] !== points[i][0] || originalPoints[i][1] !== points[i][1]) {
22085                     graph = graph.replace(graph.entity(nodes[i].id)
22086                         .move(projection.invert(points[i])));
22087                 }
22088             }
22089
22090             // remove empty nodes on straight sections
22091             for (i = 0; i < points.length; i++) {
22092                 var node = nodes[i];
22093
22094                 if (graph.parentWays(node).length > 1 ||
22095                     graph.parentRelations(node).length ||
22096                     node.hasInterestingTags()) {
22097
22098                     continue;
22099                 }
22100
22101                 var dotp = normalizedDotProduct(i, points);
22102                 if (dotp < -1 + epsilon) {
22103                     graph = iD.actions.DeleteNode(nodes[i].id)(graph);
22104                 }
22105             }
22106         }
22107
22108         return graph;
22109
22110         function calcMotion(b, i, array) {
22111             var a = array[(i - 1 + array.length) % array.length],
22112                 c = array[(i + 1) % array.length],
22113                 p = subtractPoints(a, b),
22114                 q = subtractPoints(c, b),
22115                 scale, dotp;
22116
22117             scale = 2 * Math.min(iD.geo.euclideanDistance(p, [0, 0]), iD.geo.euclideanDistance(q, [0, 0]));
22118             p = normalizePoint(p, 1.0);
22119             q = normalizePoint(q, 1.0);
22120
22121             dotp = filterDotProduct(p[0] * q[0] + p[1] * q[1]);
22122
22123             // nasty hack to deal with almost-straight segments (angle is closer to 180 than to 90/270).
22124             if (array.length > 3) {
22125                 if (dotp < -0.707106781186547) {
22126                     dotp += 1.0;
22127                 }
22128             } else if (dotp && Math.abs(dotp) < corner.dotp) {
22129                 corner.i = i;
22130                 corner.dotp = Math.abs(dotp);
22131             }
22132
22133             return normalizePoint(addPoints(p, q), 0.1 * dotp * scale);
22134         }
22135     };
22136
22137     function squareness(points) {
22138         return points.reduce(function(sum, val, i, array) {
22139             var dotp = normalizedDotProduct(i, array);
22140
22141             dotp = filterDotProduct(dotp);
22142             return sum + 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
22143         }, 0);
22144     }
22145
22146     function normalizedDotProduct(i, points) {
22147         var a = points[(i - 1 + points.length) % points.length],
22148             b = points[i],
22149             c = points[(i + 1) % points.length],
22150             p = subtractPoints(a, b),
22151             q = subtractPoints(c, b);
22152
22153         p = normalizePoint(p, 1.0);
22154         q = normalizePoint(q, 1.0);
22155
22156         return p[0] * q[0] + p[1] * q[1];
22157     }
22158
22159     function subtractPoints(a, b) {
22160         return [a[0] - b[0], a[1] - b[1]];
22161     }
22162
22163     function addPoints(a, b) {
22164         return [a[0] + b[0], a[1] + b[1]];
22165     }
22166
22167     function normalizePoint(point, scale) {
22168         var vector = [0, 0];
22169         var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]);
22170         if (length !== 0) {
22171             vector[0] = point[0] / length;
22172             vector[1] = point[1] / length;
22173         }
22174
22175         vector[0] *= scale;
22176         vector[1] *= scale;
22177
22178         return vector;
22179     }
22180
22181     function filterDotProduct(dotp) {
22182         if (lowerThreshold > Math.abs(dotp) || Math.abs(dotp) > upperThreshold) {
22183             return dotp;
22184         }
22185
22186         return 0;
22187     }
22188
22189     action.disabled = function(graph) {
22190         var way = graph.entity(wayId),
22191             nodes = graph.childNodes(way),
22192             points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
22193
22194         if (squareness(points)) {
22195             return false;
22196         }
22197
22198         return 'not_squarish';
22199     };
22200
22201     return action;
22202 };
22203 // Create a restriction relation for `turn`, which must have the following structure:
22204 //
22205 //     {
22206 //         from: { node: <node ID>, way: <way ID> },
22207 //         via:  { node: <node ID> },
22208 //         to:   { node: <node ID>, way: <way ID> },
22209 //         restriction: <'no_right_turn', 'no_left_turn', etc.>
22210 //     }
22211 //
22212 // This specifies a restriction of type `restriction` when traveling from
22213 // `from.node` in `from.way` toward `to.node` in `to.way` via `via.node`.
22214 // (The action does not check that these entities form a valid intersection.)
22215 //
22216 // If `restriction` is not provided, it is automatically determined by
22217 // iD.geo.inferRestriction.
22218 //
22219 // If necessary, the `from` and `to` ways are split. In these cases, `from.node`
22220 // and `to.node` are used to determine which portion of the split ways become
22221 // members of the restriction.
22222 //
22223 // For testing convenience, accepts an ID to assign to the new relation.
22224 // Normally, this will be undefined and the relation will automatically
22225 // be assigned a new ID.
22226 //
22227 iD.actions.RestrictTurn = function(turn, projection, restrictionId) {
22228     return function(graph) {
22229         var from = graph.entity(turn.from.way),
22230             via  = graph.entity(turn.via.node),
22231             to   = graph.entity(turn.to.way);
22232
22233         function isClosingNode(way, nodeId) {
22234             return nodeId === way.first() && nodeId === way.last();
22235         }
22236
22237         function split(toOrFrom) {
22238             var newID = toOrFrom.newID || iD.Way().id;
22239             graph = iD.actions.Split(via.id, [newID])
22240                 .limitWays([toOrFrom.way])(graph);
22241
22242             var a = graph.entity(newID),
22243                 b = graph.entity(toOrFrom.way);
22244
22245             if (a.nodes.indexOf(toOrFrom.node) !== -1) {
22246                 return [a, b];
22247             } else {
22248                 return [b, a];
22249             }
22250         }
22251
22252         if (!from.affix(via.id) || isClosingNode(from, via.id)) {
22253             if (turn.from.node === turn.to.node) {
22254                 // U-turn
22255                 from = to = split(turn.from)[0];
22256             } else if (turn.from.way === turn.to.way) {
22257                 // Straight-on or circular
22258                 var s = split(turn.from);
22259                 from = s[0];
22260                 to   = s[1];
22261             } else {
22262                 // Other
22263                 from = split(turn.from)[0];
22264             }
22265         }
22266
22267         if (!to.affix(via.id) || isClosingNode(to, via.id)) {
22268             to = split(turn.to)[0];
22269         }
22270
22271         return graph.replace(iD.Relation({
22272             id: restrictionId,
22273             tags: {
22274                 type: 'restriction',
22275                 restriction: turn.restriction ||
22276                     iD.geo.inferRestriction(
22277                         graph,
22278                         turn.from,
22279                         turn.via,
22280                         turn.to,
22281                         projection)
22282             },
22283             members: [
22284                 {id: from.id, type: 'way',  role: 'from'},
22285                 {id: via.id,  type: 'node', role: 'via'},
22286                 {id: to.id,   type: 'way',  role: 'to'}
22287             ]
22288         }));
22289     };
22290 };
22291 /*
22292   Order the nodes of a way in reverse order and reverse any direction dependent tags
22293   other than `oneway`. (We assume that correcting a backwards oneway is the primary
22294   reason for reversing a way.)
22295
22296   The following transforms are performed:
22297
22298     Keys:
22299           *:right=* ⟺ *:left=*
22300         *:forward=* ⟺ *:backward=*
22301        direction=up ⟺ direction=down
22302          incline=up ⟺ incline=down
22303             *=right ⟺ *=left
22304
22305     Relation members:
22306        role=forward ⟺ role=backward
22307          role=north ⟺ role=south
22308           role=east ⟺ role=west
22309
22310    In addition, numeric-valued `incline` tags are negated.
22311
22312    The JOSM implementation was used as a guide, but transformations that were of unclear benefit
22313    or adjusted tags that don't seem to be used in practice were omitted.
22314
22315    References:
22316       http://wiki.openstreetmap.org/wiki/Forward_%26_backward,_left_%26_right
22317       http://wiki.openstreetmap.org/wiki/Key:direction#Steps
22318       http://wiki.openstreetmap.org/wiki/Key:incline
22319       http://wiki.openstreetmap.org/wiki/Route#Members
22320       http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
22321  */
22322 iD.actions.Reverse = function(wayId, options) {
22323     var replacements = [
22324             [/:right$/, ':left'], [/:left$/, ':right'],
22325             [/:forward$/, ':backward'], [/:backward$/, ':forward']
22326         ],
22327         numeric = /^([+\-]?)(?=[\d.])/,
22328         roleReversals = {
22329             forward: 'backward',
22330             backward: 'forward',
22331             north: 'south',
22332             south: 'north',
22333             east: 'west',
22334             west: 'east'
22335         };
22336
22337     function reverseKey(key) {
22338         for (var i = 0; i < replacements.length; ++i) {
22339             var replacement = replacements[i];
22340             if (replacement[0].test(key)) {
22341                 return key.replace(replacement[0], replacement[1]);
22342             }
22343         }
22344         return key;
22345     }
22346
22347     function reverseValue(key, value) {
22348         if (key === 'incline' && numeric.test(value)) {
22349             return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; });
22350         } else if (key === 'incline' || key === 'direction') {
22351             return {up: 'down', down: 'up'}[value] || value;
22352         } else if (options && options.reverseOneway && key === 'oneway') {
22353             return {yes: '-1', '1': '-1', '-1': 'yes'}[value] || value;
22354         } else {
22355             return {left: 'right', right: 'left'}[value] || value;
22356         }
22357     }
22358
22359     return function(graph) {
22360         var way = graph.entity(wayId),
22361             nodes = way.nodes.slice().reverse(),
22362             tags = {}, key, role;
22363
22364         for (key in way.tags) {
22365             tags[reverseKey(key)] = reverseValue(key, way.tags[key]);
22366         }
22367
22368         graph.parentRelations(way).forEach(function(relation) {
22369             relation.members.forEach(function(member, index) {
22370                 if (member.id === way.id && (role = roleReversals[member.role])) {
22371                     relation = relation.updateMember({role: role}, index);
22372                     graph = graph.replace(relation);
22373                 }
22374             });
22375         });
22376
22377         return graph.replace(way.update({nodes: nodes, tags: tags}));
22378     };
22379 };
22380 iD.actions.Revert = function(id) {
22381
22382     var action = function(graph) {
22383         var entity = graph.hasEntity(id),
22384             base = graph.base().entities[id];
22385
22386         if (entity && !base) {    // entity will be removed..
22387             if (entity.type === 'node') {
22388                 graph.parentWays(entity)
22389                     .forEach(function(parent) {
22390                         parent = parent.removeNode(id);
22391                         graph = graph.replace(parent);
22392
22393                         if (parent.isDegenerate()) {
22394                             graph = iD.actions.DeleteWay(parent.id)(graph);
22395                         }
22396                     });
22397             }
22398
22399             graph.parentRelations(entity)
22400                 .forEach(function(parent) {
22401                     parent = parent.removeMembersWithID(id);
22402                     graph = graph.replace(parent);
22403
22404                     if (parent.isDegenerate()) {
22405                         graph = iD.actions.DeleteRelation(parent.id)(graph);
22406                     }
22407                 });
22408         }
22409
22410         return graph.revert(id);
22411     };
22412
22413     return action;
22414 };
22415 iD.actions.RotateWay = function(wayId, pivot, angle, projection) {
22416     return function(graph) {
22417         return graph.update(function(graph) {
22418             var way = graph.entity(wayId);
22419
22420             _.unique(way.nodes).forEach(function(id) {
22421
22422                 var node = graph.entity(id),
22423                     point = projection(node.loc),
22424                     radial = [0,0];
22425
22426                 radial[0] = point[0] - pivot[0];
22427                 radial[1] = point[1] - pivot[1];
22428
22429                 point = [
22430                     radial[0] * Math.cos(angle) - radial[1] * Math.sin(angle) + pivot[0],
22431                     radial[0] * Math.sin(angle) + radial[1] * Math.cos(angle) + pivot[1]
22432                 ];
22433
22434                 graph = graph.replace(node.move(projection.invert(point)));
22435
22436             });
22437
22438         });
22439     };
22440 };
22441 // Split a way at the given node.
22442 //
22443 // Optionally, split only the given ways, if multiple ways share
22444 // the given node.
22445 //
22446 // This is the inverse of `iD.actions.Join`.
22447 //
22448 // For testing convenience, accepts an ID to assign to the new way.
22449 // Normally, this will be undefined and the way will automatically
22450 // be assigned a new ID.
22451 //
22452 // Reference:
22453 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/SplitWayAction.as
22454 //
22455 iD.actions.Split = function(nodeId, newWayIds) {
22456     var wayIds;
22457
22458     // if the way is closed, we need to search for a partner node
22459     // to split the way at.
22460     //
22461     // The following looks for a node that is both far away from
22462     // the initial node in terms of way segment length and nearby
22463     // in terms of beeline-distance. This assures that areas get
22464     // split on the most "natural" points (independent of the number
22465     // of nodes).
22466     // For example: bone-shaped areas get split across their waist
22467     // line, circles across the diameter.
22468     function splitArea(nodes, idxA, graph) {
22469         var lengths = new Array(nodes.length),
22470             length,
22471             i,
22472             best = 0,
22473             idxB;
22474
22475         function wrap(index) {
22476             return iD.util.wrap(index, nodes.length);
22477         }
22478
22479         function dist(nA, nB) {
22480             return iD.geo.sphericalDistance(graph.entity(nA).loc, graph.entity(nB).loc);
22481         }
22482
22483         // calculate lengths
22484         length = 0;
22485         for (i = wrap(idxA+1); i !== idxA; i = wrap(i+1)) {
22486             length += dist(nodes[i], nodes[wrap(i-1)]);
22487             lengths[i] = length;
22488         }
22489
22490         length = 0;
22491         for (i = wrap(idxA-1); i !== idxA; i = wrap(i-1)) {
22492             length += dist(nodes[i], nodes[wrap(i+1)]);
22493             if (length < lengths[i])
22494                 lengths[i] = length;
22495         }
22496
22497         // determine best opposite node to split
22498         for (i = 0; i < nodes.length; i++) {
22499             var cost = lengths[i] / dist(nodes[idxA], nodes[i]);
22500             if (cost > best) {
22501                 idxB = i;
22502                 best = cost;
22503             }
22504         }
22505
22506         return idxB;
22507     }
22508
22509     function split(graph, wayA, newWayId) {
22510         var wayB = iD.Way({id: newWayId, tags: wayA.tags}),
22511             nodesA,
22512             nodesB,
22513             isArea = wayA.isArea(),
22514             isOuter = iD.geo.isSimpleMultipolygonOuterMember(wayA, graph);
22515
22516         if (wayA.isClosed()) {
22517             var nodes = wayA.nodes.slice(0, -1),
22518                 idxA = _.indexOf(nodes, nodeId),
22519                 idxB = splitArea(nodes, idxA, graph);
22520
22521             if (idxB < idxA) {
22522                 nodesA = nodes.slice(idxA).concat(nodes.slice(0, idxB + 1));
22523                 nodesB = nodes.slice(idxB, idxA + 1);
22524             } else {
22525                 nodesA = nodes.slice(idxA, idxB + 1);
22526                 nodesB = nodes.slice(idxB).concat(nodes.slice(0, idxA + 1));
22527             }
22528         } else {
22529             var idx = _.indexOf(wayA.nodes, nodeId, 1);
22530             nodesA = wayA.nodes.slice(0, idx + 1);
22531             nodesB = wayA.nodes.slice(idx);
22532         }
22533
22534         wayA = wayA.update({nodes: nodesA});
22535         wayB = wayB.update({nodes: nodesB});
22536
22537         graph = graph.replace(wayA);
22538         graph = graph.replace(wayB);
22539
22540         graph.parentRelations(wayA).forEach(function(relation) {
22541             if (relation.isRestriction()) {
22542                 var via = relation.memberByRole('via');
22543                 if (via && wayB.contains(via.id)) {
22544                     relation = relation.updateMember({id: wayB.id}, relation.memberById(wayA.id).index);
22545                     graph = graph.replace(relation);
22546                 }
22547             } else {
22548                 if (relation === isOuter) {
22549                     graph = graph.replace(relation.mergeTags(wayA.tags));
22550                     graph = graph.replace(wayA.update({tags: {}}));
22551                     graph = graph.replace(wayB.update({tags: {}}));
22552                 }
22553
22554                 var member = {
22555                     id: wayB.id,
22556                     type: 'way',
22557                     role: relation.memberById(wayA.id).role
22558                 };
22559
22560                 graph = iD.actions.AddMember(relation.id, member)(graph);
22561             }
22562         });
22563
22564         if (!isOuter && isArea) {
22565             var multipolygon = iD.Relation({
22566                 tags: _.extend({}, wayA.tags, {type: 'multipolygon'}),
22567                 members: [
22568                     {id: wayA.id, role: 'outer', type: 'way'},
22569                     {id: wayB.id, role: 'outer', type: 'way'}
22570                 ]});
22571
22572             graph = graph.replace(multipolygon);
22573             graph = graph.replace(wayA.update({tags: {}}));
22574             graph = graph.replace(wayB.update({tags: {}}));
22575         }
22576
22577         return graph;
22578     }
22579
22580     var action = function(graph) {
22581         var candidates = action.ways(graph);
22582         for (var i = 0; i < candidates.length; i++) {
22583             graph = split(graph, candidates[i], newWayIds && newWayIds[i]);
22584         }
22585         return graph;
22586     };
22587
22588     action.ways = function(graph) {
22589         var node = graph.entity(nodeId),
22590             parents = graph.parentWays(node),
22591             hasLines = _.any(parents, function(parent) { return parent.geometry(graph) === 'line'; });
22592
22593         return parents.filter(function(parent) {
22594             if (wayIds && wayIds.indexOf(parent.id) === -1)
22595                 return false;
22596
22597             if (!wayIds && hasLines && parent.geometry(graph) !== 'line')
22598                 return false;
22599
22600             if (parent.isClosed()) {
22601                 return true;
22602             }
22603
22604             for (var i = 1; i < parent.nodes.length - 1; i++) {
22605                 if (parent.nodes[i] === nodeId) {
22606                     return true;
22607                 }
22608             }
22609
22610             return false;
22611         });
22612     };
22613
22614     action.disabled = function(graph) {
22615         var candidates = action.ways(graph);
22616         if (candidates.length === 0 || (wayIds && wayIds.length !== candidates.length))
22617             return 'not_eligible';
22618     };
22619
22620     action.limitWays = function(_) {
22621         if (!arguments.length) return wayIds;
22622         wayIds = _;
22623         return action;
22624     };
22625
22626     return action;
22627 };
22628 /*
22629  * Based on https://github.com/openstreetmap/potlatch2/net/systemeD/potlatch2/tools/Straighten.as
22630  */
22631
22632 iD.actions.Straighten = function(wayId, projection) {
22633     function positionAlongWay(n, s, e) {
22634         return ((n[0] - s[0]) * (e[0] - s[0]) + (n[1] - s[1]) * (e[1] - s[1]))/
22635                 (Math.pow(e[0] - s[0], 2) + Math.pow(e[1] - s[1], 2));
22636     }
22637
22638     var action = function(graph) {
22639         var way = graph.entity(wayId),
22640             nodes = graph.childNodes(way),
22641             points = nodes.map(function(n) { return projection(n.loc); }),
22642             startPoint = points[0],
22643             endPoint = points[points.length-1],
22644             toDelete = [],
22645             i;
22646
22647         for (i = 1; i < points.length-1; i++) {
22648             var node = nodes[i],
22649                 point = points[i];
22650
22651             if (graph.parentWays(node).length > 1 ||
22652                 graph.parentRelations(node).length ||
22653                 node.hasInterestingTags()) {
22654
22655                 var u = positionAlongWay(point, startPoint, endPoint),
22656                     p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22657                     p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]);
22658
22659                 graph = graph.replace(graph.entity(node.id)
22660                     .move(projection.invert([p0, p1])));
22661             } else {
22662                 // safe to delete
22663                 if (toDelete.indexOf(node) === -1) {
22664                     toDelete.push(node);
22665                 }
22666             }
22667         }
22668
22669         for (i = 0; i < toDelete.length; i++) {
22670             graph = iD.actions.DeleteNode(toDelete[i].id)(graph);
22671         }
22672
22673         return graph;
22674     };
22675     
22676     action.disabled = function(graph) {
22677         // check way isn't too bendy
22678         var way = graph.entity(wayId),
22679             nodes = graph.childNodes(way),
22680             points = nodes.map(function(n) { return projection(n.loc); }),
22681             startPoint = points[0],
22682             endPoint = points[points.length-1],
22683             threshold = 0.2 * Math.sqrt(Math.pow(startPoint[0] - endPoint[0], 2) + Math.pow(startPoint[1] - endPoint[1], 2)),
22684             i;
22685
22686         for (i = 1; i < points.length-1; i++) {
22687             var point = points[i],
22688                 u = positionAlongWay(point, startPoint, endPoint),
22689                 p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22690                 p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]),
22691                 dist = Math.sqrt(Math.pow(p0 - point[0], 2) + Math.pow(p1 - point[1], 2));
22692
22693             // to bendy if point is off by 20% of total start/end distance in projected space
22694             if (dist > threshold) {
22695                 return 'too_bendy';
22696             }
22697         }
22698     };
22699
22700     return action;
22701 };
22702 // Remove the effects of `turn.restriction` on `turn`, which must have the
22703 // following structure:
22704 //
22705 //     {
22706 //         from: { node: <node ID>, way: <way ID> },
22707 //         via:  { node: <node ID> },
22708 //         to:   { node: <node ID>, way: <way ID> },
22709 //         restriction: <relation ID>
22710 //     }
22711 //
22712 // In the simple case, `restriction` is a reference to a `no_*` restriction
22713 // on the turn itself. In this case, it is simply deleted.
22714 //
22715 // The more complex case is where `restriction` references an `only_*`
22716 // restriction on a different turn in the same intersection. In that case,
22717 // that restriction is also deleted, but at the same time restrictions on
22718 // the turns other than the first two are created.
22719 //
22720 iD.actions.UnrestrictTurn = function(turn) {
22721     return function(graph) {
22722         return iD.actions.DeleteRelation(turn.restriction)(graph);
22723     };
22724 };
22725 iD.behavior = {};
22726 iD.behavior.AddWay = function(context) {
22727     var event = d3.dispatch('start', 'startFromWay', 'startFromNode'),
22728         draw = iD.behavior.Draw(context);
22729
22730     var addWay = function(surface) {
22731         draw.on('click', event.start)
22732             .on('clickWay', event.startFromWay)
22733             .on('clickNode', event.startFromNode)
22734             .on('cancel', addWay.cancel)
22735             .on('finish', addWay.cancel);
22736
22737         context.map()
22738             .dblclickEnable(false);
22739
22740         surface.call(draw);
22741     };
22742
22743     addWay.off = function(surface) {
22744         surface.call(draw.off);
22745     };
22746
22747     addWay.cancel = function() {
22748         window.setTimeout(function() {
22749             context.map().dblclickEnable(true);
22750         }, 1000);
22751
22752         context.enter(iD.modes.Browse(context));
22753     };
22754
22755     addWay.tail = function(text) {
22756         draw.tail(text);
22757         return addWay;
22758     };
22759
22760     return d3.rebind(addWay, event, 'on');
22761 };
22762 iD.behavior.Copy = function(context) {
22763     var keybinding = d3.keybinding('copy');
22764
22765     function groupEntities(ids, graph) {
22766         var entities = ids.map(function (id) { return graph.entity(id); });
22767         return _.extend({relation: [], way: [], node: []},
22768             _.groupBy(entities, function(entity) { return entity.type; }));
22769     }
22770
22771     function getDescendants(id, graph, descendants) {
22772         var entity = graph.entity(id),
22773             i, children;
22774
22775         descendants = descendants || {};
22776
22777         if (entity.type === 'relation') {
22778             children = _.pluck(entity.members, 'id');
22779         } else if (entity.type === 'way') {
22780             children = entity.nodes;
22781         } else {
22782             children = [];
22783         }
22784
22785         for (i = 0; i < children.length; i++) {
22786             if (!descendants[children[i]]) {
22787                 descendants[children[i]] = true;
22788                 descendants = getDescendants(children[i], graph, descendants);
22789             }
22790         }
22791
22792         return descendants;
22793     }
22794
22795     function doCopy() {
22796         d3.event.preventDefault();
22797
22798         var graph = context.graph(),
22799             selected = groupEntities(context.selectedIDs(), graph),
22800             canCopy = [],
22801             skip = {},
22802             i, entity;
22803
22804         for (i = 0; i < selected.relation.length; i++) {
22805             entity = selected.relation[i];
22806             if (!skip[entity.id] && entity.isComplete(graph)) {
22807                 canCopy.push(entity.id);
22808                 skip = getDescendants(entity.id, graph, skip);
22809             }
22810         }
22811         for (i = 0; i < selected.way.length; i++) {
22812             entity = selected.way[i];
22813             if (!skip[entity.id]) {
22814                 canCopy.push(entity.id);
22815                 skip = getDescendants(entity.id, graph, skip);
22816             }
22817         }
22818         for (i = 0; i < selected.node.length; i++) {
22819             entity = selected.node[i];
22820             if (!skip[entity.id]) {
22821                 canCopy.push(entity.id);
22822             }
22823         }
22824
22825         context.copyIDs(canCopy);
22826     }
22827
22828     function copy() {
22829         keybinding.on(iD.ui.cmd('⌘C'), doCopy);
22830         d3.select(document).call(keybinding);
22831         return copy;
22832     }
22833
22834     copy.off = function() {
22835         d3.select(document).call(keybinding.off);
22836     };
22837
22838     return copy;
22839 };
22840 /*
22841     `iD.behavior.drag` is like `d3.behavior.drag`, with the following differences:
22842
22843     * The `origin` function is expected to return an [x, y] tuple rather than an
22844       {x, y} object.
22845     * The events are `start`, `move`, and `end`.
22846       (https://github.com/mbostock/d3/issues/563)
22847     * The `start` event is not dispatched until the first cursor movement occurs.
22848       (https://github.com/mbostock/d3/pull/368)
22849     * The `move` event has a `point` and `delta` [x, y] tuple properties rather
22850       than `x`, `y`, `dx`, and `dy` properties.
22851     * The `end` event is not dispatched if no movement occurs.
22852     * An `off` function is available that unbinds the drag's internal event handlers.
22853     * Delegation is supported via the `delegate` function.
22854
22855  */
22856 iD.behavior.drag = function() {
22857     function d3_eventCancel() {
22858       d3.event.stopPropagation();
22859       d3.event.preventDefault();
22860     }
22861
22862     var event = d3.dispatch('start', 'move', 'end'),
22863         origin = null,
22864         selector = '',
22865         filter = null,
22866         event_, target, surface;
22867
22868     event.of = function(thiz, argumentz) {
22869       return function(e1) {
22870         var e0 = e1.sourceEvent = d3.event;
22871         e1.target = drag;
22872         d3.event = e1;
22873         try {
22874           event[e1.type].apply(thiz, argumentz);
22875         } finally {
22876           d3.event = e0;
22877         }
22878       };
22879     };
22880
22881     var d3_event_userSelectProperty = iD.util.prefixCSSProperty('UserSelect'),
22882         d3_event_userSelectSuppress = d3_event_userSelectProperty ?
22883             function () {
22884                 var selection = d3.selection(),
22885                     select = selection.style(d3_event_userSelectProperty);
22886                 selection.style(d3_event_userSelectProperty, 'none');
22887                 return function () {
22888                     selection.style(d3_event_userSelectProperty, select);
22889                 };
22890             } :
22891             function (type) {
22892                 var w = d3.select(window).on('selectstart.' + type, d3_eventCancel);
22893                 return function () {
22894                     w.on('selectstart.' + type, null);
22895                 };
22896             };
22897
22898     function mousedown() {
22899         target = this;
22900         event_ = event.of(target, arguments);
22901         var eventTarget = d3.event.target,
22902             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
22903             offset,
22904             origin_ = point(),
22905             started = false,
22906             selectEnable = d3_event_userSelectSuppress(touchId !== null ? 'drag-' + touchId : 'drag');
22907
22908         var w = d3.select(window)
22909             .on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', dragmove)
22910             .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', dragend, true);
22911
22912         if (origin) {
22913             offset = origin.apply(target, arguments);
22914             offset = [offset[0] - origin_[0], offset[1] - origin_[1]];
22915         } else {
22916             offset = [0, 0];
22917         }
22918
22919         if (touchId === null) d3.event.stopPropagation();
22920
22921         function point() {
22922             var p = target.parentNode || surface;
22923             return touchId !== null ? d3.touches(p).filter(function(p) {
22924                 return p.identifier === touchId;
22925             })[0] : d3.mouse(p);
22926         }
22927
22928         function dragmove() {
22929
22930             var p = point(),
22931                 dx = p[0] - origin_[0],
22932                 dy = p[1] - origin_[1];
22933             
22934             if (dx === 0 && dy === 0)
22935                 return;
22936
22937             if (!started) {
22938                 started = true;
22939                 event_({
22940                     type: 'start'
22941                 });
22942             }
22943
22944             origin_ = p;
22945             d3_eventCancel();
22946
22947             event_({
22948                 type: 'move',
22949                 point: [p[0] + offset[0],  p[1] + offset[1]],
22950                 delta: [dx, dy]
22951             });
22952         }
22953
22954         function dragend() {
22955             if (started) {
22956                 event_({
22957                     type: 'end'
22958                 });
22959
22960                 d3_eventCancel();
22961                 if (d3.event.target === eventTarget) w.on('click.drag', click, true);
22962             }
22963
22964             w.on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', null)
22965                 .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', null);
22966             selectEnable();
22967         }
22968
22969         function click() {
22970             d3_eventCancel();
22971             w.on('click.drag', null);
22972         }
22973     }
22974
22975     function drag(selection) {
22976         var matchesSelector = iD.util.prefixDOMProperty('matchesSelector'),
22977             delegate = mousedown;
22978
22979         if (selector) {
22980             delegate = function() {
22981                 var root = this,
22982                     target = d3.event.target;
22983                 for (; target && target !== root; target = target.parentNode) {
22984                     if (target[matchesSelector](selector) &&
22985                             (!filter || filter(target.__data__))) {
22986                         return mousedown.call(target, target.__data__);
22987                     }
22988                 }
22989             };
22990         }
22991
22992         selection.on('mousedown.drag' + selector, delegate)
22993             .on('touchstart.drag' + selector, delegate);
22994     }
22995
22996     drag.off = function(selection) {
22997         selection.on('mousedown.drag' + selector, null)
22998             .on('touchstart.drag' + selector, null);
22999     };
23000
23001     drag.delegate = function(_) {
23002         if (!arguments.length) return selector;
23003         selector = _;
23004         return drag;
23005     };
23006
23007     drag.filter = function(_) {
23008         if (!arguments.length) return origin;
23009         filter = _;
23010         return drag;
23011     };
23012
23013     drag.origin = function (_) {
23014         if (!arguments.length) return origin;
23015         origin = _;
23016         return drag;
23017     };
23018
23019     drag.cancel = function() {
23020         d3.select(window)
23021             .on('mousemove.drag', null)
23022             .on('mouseup.drag', null);
23023         return drag;
23024     };
23025
23026     drag.target = function() {
23027         if (!arguments.length) return target;
23028         target = arguments[0];
23029         event_ = event.of(target, Array.prototype.slice.call(arguments, 1));
23030         return drag;
23031     };
23032
23033     drag.surface = function() {
23034         if (!arguments.length) return surface;
23035         surface = arguments[0];
23036         return drag;
23037     };
23038
23039     return d3.rebind(drag, event, 'on');
23040 };
23041 iD.behavior.Draw = function(context) {
23042     var event = d3.dispatch('move', 'click', 'clickWay',
23043             'clickNode', 'undo', 'cancel', 'finish'),
23044         keybinding = d3.keybinding('draw'),
23045         hover = iD.behavior.Hover(context)
23046             .altDisables(true)
23047             .on('hover', context.ui().sidebar.hover),
23048         tail = iD.behavior.Tail(),
23049         edit = iD.behavior.Edit(context),
23050         closeTolerance = 4,
23051         tolerance = 12;
23052
23053     function datum() {
23054         if (d3.event.altKey) return {};
23055         else return d3.event.target.__data__ || {};
23056     }
23057
23058     function mousedown() {
23059
23060         function point() {
23061             var p = context.container().node();
23062             return touchId !== null ? d3.touches(p).filter(function(p) {
23063                 return p.identifier === touchId;
23064             })[0] : d3.mouse(p);
23065         }
23066
23067         var element = d3.select(this),
23068             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
23069             t1 = +new Date(),
23070             p1 = point();
23071
23072         element.on('mousemove.draw', null);
23073
23074         d3.select(window).on('mouseup.draw', function() {
23075             var t2 = +new Date(),
23076                 p2 = point(),
23077                 dist = iD.geo.euclideanDistance(p1, p2);
23078
23079             element.on('mousemove.draw', mousemove);
23080             d3.select(window).on('mouseup.draw', null);
23081
23082             if (dist < closeTolerance || (dist < tolerance && (t2 - t1) < 500)) {
23083                 // Prevent a quick second click
23084                 d3.select(window).on('click.draw-block', function() {
23085                     d3.event.stopPropagation();
23086                 }, true);
23087
23088                 context.map().dblclickEnable(false);
23089
23090                 window.setTimeout(function() {
23091                     context.map().dblclickEnable(true);
23092                     d3.select(window).on('click.draw-block', null);
23093                 }, 500);
23094
23095                 click();
23096             }
23097         });
23098     }
23099
23100     function mousemove() {
23101         event.move(datum());
23102     }
23103
23104     function click() {
23105         var d = datum();
23106         if (d.type === 'way') {
23107             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection),
23108                 edge = [d.nodes[choice.index - 1], d.nodes[choice.index]];
23109             event.clickWay(choice.loc, edge);
23110
23111         } else if (d.type === 'node') {
23112             event.clickNode(d);
23113
23114         } else {
23115             event.click(context.map().mouseCoordinates());
23116         }
23117     }
23118
23119     function backspace() {
23120         d3.event.preventDefault();
23121         event.undo();
23122     }
23123
23124     function del() {
23125         d3.event.preventDefault();
23126         event.cancel();
23127     }
23128
23129     function ret() {
23130         d3.event.preventDefault();
23131         event.finish();
23132     }
23133
23134     function draw(selection) {
23135         context.install(hover);
23136         context.install(edit);
23137
23138         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23139             context.install(tail);
23140         }
23141
23142         keybinding
23143             .on('⌫', backspace)
23144             .on('⌦', del)
23145             .on('⎋', ret)
23146             .on('↩', ret);
23147
23148         selection
23149             .on('mousedown.draw', mousedown)
23150             .on('mousemove.draw', mousemove);
23151
23152         d3.select(document)
23153             .call(keybinding);
23154
23155         return draw;
23156     }
23157
23158     draw.off = function(selection) {
23159         context.uninstall(hover);
23160         context.uninstall(edit);
23161
23162         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23163             context.uninstall(tail);
23164             iD.behavior.Draw.usedTails[tail.text()] = true;
23165         }
23166
23167         selection
23168             .on('mousedown.draw', null)
23169             .on('mousemove.draw', null);
23170
23171         d3.select(window)
23172             .on('mouseup.draw', null);
23173
23174         d3.select(document)
23175             .call(keybinding.off);
23176     };
23177
23178     draw.tail = function(_) {
23179         tail.text(_);
23180         return draw;
23181     };
23182
23183     return d3.rebind(draw, event, 'on');
23184 };
23185
23186 iD.behavior.Draw.usedTails = {};
23187 iD.behavior.DrawWay = function(context, wayId, index, mode, baseGraph) {
23188     var way = context.entity(wayId),
23189         isArea = context.geometry(wayId) === 'area',
23190         finished = false,
23191         annotation = t((way.isDegenerate() ?
23192             'operations.start.annotation.' :
23193             'operations.continue.annotation.') + context.geometry(wayId)),
23194         draw = iD.behavior.Draw(context);
23195
23196     var startIndex = typeof index === 'undefined' ? way.nodes.length - 1 : 0,
23197         start = iD.Node({loc: context.graph().entity(way.nodes[startIndex]).loc}),
23198         end = iD.Node({loc: context.map().mouseCoordinates()}),
23199         segment = iD.Way({
23200             nodes: typeof index === 'undefined' ? [start.id, end.id] : [end.id, start.id],
23201             tags: _.clone(way.tags)
23202         });
23203
23204     var f = context[way.isDegenerate() ? 'replace' : 'perform'];
23205     if (isArea) {
23206         f(iD.actions.AddEntity(end),
23207             iD.actions.AddVertex(wayId, end.id, index));
23208     } else {
23209         f(iD.actions.AddEntity(start),
23210             iD.actions.AddEntity(end),
23211             iD.actions.AddEntity(segment));
23212     }
23213
23214     function move(datum) {
23215         var loc;
23216
23217         if (datum.type === 'node' && datum.id !== end.id) {
23218             loc = datum.loc;
23219         } else if (datum.type === 'way' && datum.id !== segment.id) {
23220             loc = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection).loc;
23221         } else {
23222             loc = context.map().mouseCoordinates();
23223         }
23224
23225         context.replace(iD.actions.MoveNode(end.id, loc));
23226     }
23227
23228     function undone() {
23229         finished = true;
23230         context.enter(iD.modes.Browse(context));
23231     }
23232
23233     function setActiveElements() {
23234         var active = isArea ? [wayId, end.id] : [segment.id, start.id, end.id];
23235         context.surface().selectAll(iD.util.entitySelector(active))
23236             .classed('active', true);
23237     }
23238
23239     var drawWay = function(surface) {
23240         draw.on('move', move)
23241             .on('click', drawWay.add)
23242             .on('clickWay', drawWay.addWay)
23243             .on('clickNode', drawWay.addNode)
23244             .on('undo', context.undo)
23245             .on('cancel', drawWay.cancel)
23246             .on('finish', drawWay.finish);
23247
23248         context.map()
23249             .dblclickEnable(false)
23250             .on('drawn.draw', setActiveElements);
23251
23252         setActiveElements();
23253
23254         surface.call(draw);
23255
23256         context.history()
23257             .on('undone.draw', undone);
23258     };
23259
23260     drawWay.off = function(surface) {
23261         if (!finished)
23262             context.pop();
23263
23264         context.map()
23265             .on('drawn.draw', null);
23266
23267         surface.call(draw.off)
23268             .selectAll('.active')
23269             .classed('active', false);
23270
23271         context.history()
23272             .on('undone.draw', null);
23273     };
23274
23275     function ReplaceTemporaryNode(newNode) {
23276         return function(graph) {
23277             if (isArea) {
23278                 return graph
23279                     .replace(way.addNode(newNode.id, index))
23280                     .remove(end);
23281
23282             } else {
23283                 return graph
23284                     .replace(graph.entity(wayId).addNode(newNode.id, index))
23285                     .remove(end)
23286                     .remove(segment)
23287                     .remove(start);
23288             }
23289         };
23290     }
23291
23292     // Accept the current position of the temporary node and continue drawing.
23293     drawWay.add = function(loc) {
23294
23295         // prevent duplicate nodes
23296         var last = context.hasEntity(way.nodes[way.nodes.length - (isArea ? 2 : 1)]);
23297         if (last && last.loc[0] === loc[0] && last.loc[1] === loc[1]) return;
23298
23299         var newNode = iD.Node({loc: loc});
23300
23301         context.replace(
23302             iD.actions.AddEntity(newNode),
23303             ReplaceTemporaryNode(newNode),
23304             annotation);
23305
23306         finished = true;
23307         context.enter(mode);
23308     };
23309
23310     // Connect the way to an existing way.
23311     drawWay.addWay = function(loc, edge) {
23312         var previousEdge = startIndex ?
23313             [way.nodes[startIndex], way.nodes[startIndex - 1]] :
23314             [way.nodes[0], way.nodes[1]];
23315
23316         // Avoid creating duplicate segments
23317         if (!isArea && iD.geo.edgeEqual(edge, previousEdge))
23318             return;
23319
23320         var newNode = iD.Node({ loc: loc });
23321
23322         context.perform(
23323             iD.actions.AddMidpoint({ loc: loc, edge: edge}, newNode),
23324             ReplaceTemporaryNode(newNode),
23325             annotation);
23326
23327         finished = true;
23328         context.enter(mode);
23329     };
23330
23331     // Connect the way to an existing node and continue drawing.
23332     drawWay.addNode = function(node) {
23333
23334         // Avoid creating duplicate segments
23335         if (way.areAdjacent(node.id, way.nodes[way.nodes.length - 1])) return;
23336
23337         context.perform(
23338             ReplaceTemporaryNode(node),
23339             annotation);
23340
23341         finished = true;
23342         context.enter(mode);
23343     };
23344
23345     // Finish the draw operation, removing the temporary node. If the way has enough
23346     // nodes to be valid, it's selected. Otherwise, return to browse mode.
23347     drawWay.finish = function() {
23348         context.pop();
23349         finished = true;
23350
23351         window.setTimeout(function() {
23352             context.map().dblclickEnable(true);
23353         }, 1000);
23354
23355         if (context.hasEntity(wayId)) {
23356             context.enter(
23357                 iD.modes.Select(context, [wayId])
23358                     .suppressMenu(true)
23359                     .newFeature(true));
23360         } else {
23361             context.enter(iD.modes.Browse(context));
23362         }
23363     };
23364
23365     // Cancel the draw operation and return to browse, deleting everything drawn.
23366     drawWay.cancel = function() {
23367         context.perform(
23368             d3.functor(baseGraph),
23369             t('operations.cancel_draw.annotation'));
23370
23371         window.setTimeout(function() {
23372             context.map().dblclickEnable(true);
23373         }, 1000);
23374
23375         finished = true;
23376         context.enter(iD.modes.Browse(context));
23377     };
23378
23379     drawWay.tail = function(text) {
23380         draw.tail(text);
23381         return drawWay;
23382     };
23383
23384     return drawWay;
23385 };
23386 iD.behavior.Edit = function(context) {
23387     function edit() {
23388         context.map()
23389             .minzoom(context.minEditableZoom());
23390     }
23391
23392     edit.off = function() {
23393         context.map()
23394             .minzoom(0);
23395     };
23396
23397     return edit;
23398 };
23399 iD.behavior.Hash = function(context) {
23400     var s0 = null, // cached location.hash
23401         lat = 90 - 1e-8; // allowable latitude range
23402
23403     var parser = function(map, s) {
23404         var q = iD.util.stringQs(s);
23405         var args = (q.map || '').split('/').map(Number);
23406         if (args.length < 3 || args.some(isNaN)) {
23407             return true; // replace bogus hash
23408         } else if (s !== formatter(map).slice(1)) {
23409             map.centerZoom([args[1],
23410                 Math.min(lat, Math.max(-lat, args[2]))], args[0]);
23411         }
23412     };
23413
23414     var formatter = function(map) {
23415         var mode = context.mode(),
23416             center = map.center(),
23417             zoom = map.zoom(),
23418             precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)),
23419             q = _.omit(iD.util.stringQs(location.hash.substring(1)), 'comment'),
23420             newParams = {};
23421
23422         if (mode && mode.id === 'browse') {
23423             delete q.id;
23424         } else {
23425             var selected = context.selectedIDs().filter(function(id) {
23426                 return !context.entity(id).isNew();
23427             });
23428             if (selected.length) {
23429                 newParams.id = selected.join(',');
23430             }
23431         }
23432
23433         newParams.map = zoom.toFixed(2) +
23434                 '/' + center[0].toFixed(precision) +
23435                 '/' + center[1].toFixed(precision);
23436
23437         return '#' + iD.util.qsString(_.assign(q, newParams), true);
23438     };
23439
23440     function update() {
23441         if (context.inIntro()) return;
23442         var s1 = formatter(context.map());
23443         if (s0 !== s1) location.replace(s0 = s1); // don't recenter the map!
23444     }
23445
23446     var throttledUpdate = _.throttle(update, 500);
23447
23448     function hashchange() {
23449         if (location.hash === s0) return; // ignore spurious hashchange events
23450         if (parser(context.map(), (s0 = location.hash).substring(1))) {
23451             update(); // replace bogus hash
23452         }
23453     }
23454
23455     function hash() {
23456         context.map()
23457             .on('move.hash', throttledUpdate);
23458
23459         context
23460             .on('enter.hash', throttledUpdate);
23461
23462         d3.select(window)
23463             .on('hashchange.hash', hashchange);
23464
23465         if (location.hash) {
23466             var q = iD.util.stringQs(location.hash.substring(1));
23467             if (q.id) context.zoomToEntity(q.id.split(',')[0], !q.map);
23468             if (q.comment) context.storage('comment', q.comment);
23469             hashchange();
23470             if (q.map) hash.hadHash = true;
23471         }
23472     }
23473
23474     hash.off = function() {
23475         context.map()
23476             .on('move.hash', null);
23477
23478         context
23479             .on('enter.hash', null);
23480
23481         d3.select(window)
23482             .on('hashchange.hash', null);
23483
23484         location.hash = '';
23485     };
23486
23487     return hash;
23488 };
23489 /*
23490    The hover behavior adds the `.hover` class on mouseover to all elements to which
23491    the identical datum is bound, and removes it on mouseout.
23492
23493    The :hover pseudo-class is insufficient for iD's purposes because a datum's visual
23494    representation may consist of several elements scattered throughout the DOM hierarchy.
23495    Only one of these elements can have the :hover pseudo-class, but all of them will
23496    have the .hover class.
23497  */
23498 iD.behavior.Hover = function() {
23499     var dispatch = d3.dispatch('hover'),
23500         selection,
23501         altDisables,
23502         target;
23503
23504     function keydown() {
23505         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23506             dispatch.hover(null);
23507             selection.selectAll('.hover')
23508                 .classed('hover-suppressed', true)
23509                 .classed('hover', false);
23510         }
23511     }
23512
23513     function keyup() {
23514         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23515             dispatch.hover(target ? target.id : null);
23516             selection.selectAll('.hover-suppressed')
23517                 .classed('hover-suppressed', false)
23518                 .classed('hover', true);
23519         }
23520     }
23521
23522     var hover = function(__) {
23523         selection = __;
23524
23525         function enter(d) {
23526             if (d === target) return;
23527
23528             target = d;
23529
23530             selection.selectAll('.hover')
23531                 .classed('hover', false);
23532             selection.selectAll('.hover-suppressed')
23533                 .classed('hover-suppressed', false);
23534
23535             if (target instanceof iD.Entity) {
23536                 var selector = '.' + target.id;
23537
23538                 if (target.type === 'relation') {
23539                     target.members.forEach(function(member) {
23540                         selector += ', .' + member.id;
23541                     });
23542                 }
23543
23544                 var suppressed = altDisables && d3.event && d3.event.altKey;
23545
23546                 selection.selectAll(selector)
23547                     .classed(suppressed ? 'hover-suppressed' : 'hover', true);
23548
23549                 dispatch.hover(target.id);
23550             } else {
23551                 dispatch.hover(null);
23552             }
23553         }
23554
23555         var down;
23556
23557         function mouseover() {
23558             if (down) return;
23559             var target = d3.event.target;
23560             enter(target ? target.__data__ : null);
23561         }
23562
23563         function mouseout() {
23564             if (down) return;
23565             var target = d3.event.relatedTarget;
23566             enter(target ? target.__data__ : null);
23567         }
23568
23569         function mousedown() {
23570             down = true;
23571             d3.select(window)
23572                 .on('mouseup.hover', mouseup);
23573         }
23574
23575         function mouseup() {
23576             down = false;
23577         }
23578
23579         selection
23580             .on('mouseover.hover', mouseover)
23581             .on('mouseout.hover', mouseout)
23582             .on('mousedown.hover', mousedown)
23583             .on('mouseup.hover', mouseup);
23584
23585         d3.select(window)
23586             .on('keydown.hover', keydown)
23587             .on('keyup.hover', keyup);
23588     };
23589
23590     hover.off = function(selection) {
23591         selection.selectAll('.hover')
23592             .classed('hover', false);
23593         selection.selectAll('.hover-suppressed')
23594             .classed('hover-suppressed', false);
23595
23596         selection
23597             .on('mouseover.hover', null)
23598             .on('mouseout.hover', null)
23599             .on('mousedown.hover', null)
23600             .on('mouseup.hover', null);
23601
23602         d3.select(window)
23603             .on('keydown.hover', null)
23604             .on('keyup.hover', null)
23605             .on('mouseup.hover', null);
23606     };
23607
23608     hover.altDisables = function(_) {
23609         if (!arguments.length) return altDisables;
23610         altDisables = _;
23611         return hover;
23612     };
23613
23614     return d3.rebind(hover, dispatch, 'on');
23615 };
23616 iD.behavior.Lasso = function(context) {
23617
23618     var behavior = function(selection) {
23619
23620         var mouse = null,
23621             lasso;
23622
23623         function mousedown() {
23624             if (d3.event.shiftKey === true) {
23625
23626                 mouse = context.mouse();
23627                 lasso = null;
23628
23629                 selection
23630                     .on('mousemove.lasso', mousemove)
23631                     .on('mouseup.lasso', mouseup);
23632
23633                 d3.event.stopPropagation();
23634             }
23635         }
23636
23637         function mousemove() {
23638             if (!lasso) {
23639                 lasso = iD.ui.Lasso(context).a(mouse);
23640                 context.surface().call(lasso);
23641             }
23642
23643             lasso.b(context.mouse());
23644         }
23645
23646         function normalize(a, b) {
23647             return [
23648                 [Math.min(a[0], b[0]), Math.min(a[1], b[1])],
23649                 [Math.max(a[0], b[0]), Math.max(a[1], b[1])]];
23650         }
23651
23652         function mouseup() {
23653
23654             selection
23655                 .on('mousemove.lasso', null)
23656                 .on('mouseup.lasso', null);
23657
23658             if (!lasso) return;
23659
23660             var extent = iD.geo.Extent(
23661                 normalize(context.projection.invert(lasso.a()),
23662                 context.projection.invert(lasso.b())));
23663
23664             lasso.close();
23665
23666             var selected = context.intersects(extent).filter(function (entity) {
23667                 return entity.type === 'node';
23668             });
23669
23670             if (selected.length) {
23671                 context.enter(iD.modes.Select(context, _.pluck(selected, 'id')));
23672             }
23673         }
23674
23675         selection
23676             .on('mousedown.lasso', mousedown);
23677     };
23678
23679     behavior.off = function(selection) {
23680         selection.on('mousedown.lasso', null);
23681     };
23682
23683     return behavior;
23684 };
23685 iD.behavior.Paste = function(context) {
23686     var keybinding = d3.keybinding('paste');
23687
23688     function omitTag(v, k) {
23689         return (
23690             k === 'phone' ||
23691             k === 'fax' ||
23692             k === 'email' ||
23693             k === 'website' ||
23694             k === 'url' ||
23695             k === 'note' ||
23696             k === 'description' ||
23697             k.indexOf('name') !== -1 ||
23698             k.indexOf('wiki') === 0 ||
23699             k.indexOf('addr:') === 0 ||
23700             k.indexOf('contact:') === 0
23701         );
23702     }
23703
23704     function doPaste() {
23705         d3.event.preventDefault();
23706
23707         var mouse = context.mouse(),
23708             projection = context.projection,
23709             viewport = iD.geo.Extent(projection.clipExtent()).polygon();
23710
23711         if (!iD.geo.pointInPolygon(mouse, viewport)) return;
23712
23713         var extent = iD.geo.Extent(),
23714             oldIDs = context.copyIDs(),
23715             oldGraph = context.copyGraph(),
23716             newIDs = [],
23717             i, j;
23718
23719         if (!oldIDs.length) return;
23720
23721         for (i = 0; i < oldIDs.length; i++) {
23722             var oldEntity = oldGraph.entity(oldIDs[i]),
23723                 action = iD.actions.CopyEntity(oldEntity.id, oldGraph, true),
23724                 newEntities;
23725
23726             extent._extend(oldEntity.extent(oldGraph));
23727             context.perform(action);
23728
23729             // First element in `newEntities` contains the copied Entity,
23730             // Subsequent array elements contain any descendants..
23731             newEntities = action.newEntities();
23732             newIDs.push(newEntities[0].id);
23733
23734             for (j = 0; j < newEntities.length; j++) {
23735                 var newEntity = newEntities[j],
23736                     tags = _.omit(newEntity.tags, omitTag);
23737
23738                 context.perform(iD.actions.ChangeTags(newEntity.id, tags));
23739             }
23740         }
23741
23742         // Put pasted objects where mouse pointer is..
23743         var center = projection(extent.center()),
23744             delta = [ mouse[0] - center[0], mouse[1] - center[1] ];
23745
23746         context.perform(iD.actions.Move(newIDs, delta, projection));
23747         context.enter(iD.modes.Move(context, newIDs));
23748     }
23749
23750     function paste() {
23751         keybinding.on(iD.ui.cmd('⌘V'), doPaste);
23752         d3.select(document).call(keybinding);
23753         return paste;
23754     }
23755
23756     paste.off = function() {
23757         d3.select(document).call(keybinding.off);
23758     };
23759
23760     return paste;
23761 };
23762 iD.behavior.Select = function(context) {
23763     function keydown() {
23764         if (d3.event && d3.event.shiftKey) {
23765             context.surface()
23766                 .classed('behavior-multiselect', true);
23767         }
23768     }
23769
23770     function keyup() {
23771         if (!d3.event || !d3.event.shiftKey) {
23772             context.surface()
23773                 .classed('behavior-multiselect', false);
23774         }
23775     }
23776
23777     function click() {
23778         var datum = d3.event.target.__data__,
23779             lasso = d3.select('#surface .lasso').node(),
23780             mode = context.mode();
23781
23782         if (!(datum instanceof iD.Entity)) {
23783             if (!d3.event.shiftKey && !lasso && mode.id !== 'browse')
23784                 context.enter(iD.modes.Browse(context));
23785
23786         } else if (!d3.event.shiftKey && !lasso) {
23787             // Avoid re-entering Select mode with same entity.
23788             if (context.selectedIDs().length !== 1 || context.selectedIDs()[0] !== datum.id) {
23789                 context.enter(iD.modes.Select(context, [datum.id]));
23790             } else {
23791                 mode.suppressMenu(false).reselect();
23792             }
23793         } else if (context.selectedIDs().indexOf(datum.id) >= 0) {
23794             var selectedIDs = _.without(context.selectedIDs(), datum.id);
23795             context.enter(selectedIDs.length ?
23796                 iD.modes.Select(context, selectedIDs) :
23797                 iD.modes.Browse(context));
23798
23799         } else {
23800             context.enter(iD.modes.Select(context, context.selectedIDs().concat([datum.id])));
23801         }
23802     }
23803
23804     var behavior = function(selection) {
23805         d3.select(window)
23806             .on('keydown.select', keydown)
23807             .on('keyup.select', keyup);
23808
23809         selection.on('click.select', click);
23810
23811         keydown();
23812     };
23813
23814     behavior.off = function(selection) {
23815         d3.select(window)
23816             .on('keydown.select', null)
23817             .on('keyup.select', null);
23818
23819         selection.on('click.select', null);
23820
23821         keyup();
23822     };
23823
23824     return behavior;
23825 };
23826 iD.behavior.Tail = function() {
23827     var text,
23828         container,
23829         xmargin = 25,
23830         tooltipSize = [0, 0],
23831         selectionSize = [0, 0];
23832
23833     function tail(selection) {
23834         if (!text) return;
23835
23836         d3.select(window)
23837             .on('resize.tail', function() { selectionSize = selection.dimensions(); });
23838
23839         function show() {
23840             container.style('display', 'block');
23841             tooltipSize = container.dimensions();
23842         }
23843
23844         function mousemove() {
23845             if (container.style('display') === 'none') show();
23846             var xoffset = ((d3.event.clientX + tooltipSize[0] + xmargin) > selectionSize[0]) ?
23847                 -tooltipSize[0] - xmargin : xmargin;
23848             container.classed('left', xoffset > 0);
23849             iD.util.setTransform(container, d3.event.clientX + xoffset, d3.event.clientY);
23850         }
23851
23852         function mouseleave() {
23853             if (d3.event.relatedTarget !== container.node()) {
23854                 container.style('display', 'none');
23855             }
23856         }
23857
23858         function mouseenter() {
23859             if (d3.event.relatedTarget !== container.node()) {
23860                 show();
23861             }
23862         }
23863
23864         container = d3.select(document.body)
23865             .append('div')
23866             .style('display', 'none')
23867             .attr('class', 'tail tooltip-inner');
23868
23869         container.append('div')
23870             .text(text);
23871
23872         selection
23873             .on('mousemove.tail', mousemove)
23874             .on('mouseenter.tail', mouseenter)
23875             .on('mouseleave.tail', mouseleave);
23876
23877         container
23878             .on('mousemove.tail', mousemove);
23879
23880         tooltipSize = container.dimensions();
23881         selectionSize = selection.dimensions();
23882     }
23883
23884     tail.off = function(selection) {
23885         if (!text) return;
23886
23887         container
23888             .on('mousemove.tail', null)
23889             .remove();
23890
23891         selection
23892             .on('mousemove.tail', null)
23893             .on('mouseenter.tail', null)
23894             .on('mouseleave.tail', null);
23895
23896         d3.select(window)
23897             .on('resize.tail', null);
23898     };
23899
23900     tail.text = function(_) {
23901         if (!arguments.length) return text;
23902         text = _;
23903         return tail;
23904     };
23905
23906     return tail;
23907 };
23908 iD.modes = {};
23909 iD.modes.AddArea = function(context) {
23910     var mode = {
23911         id: 'add-area',
23912         button: 'area',
23913         title: t('modes.add_area.title'),
23914         description: t('modes.add_area.description'),
23915         key: '3'
23916     };
23917
23918     var behavior = iD.behavior.AddWay(context)
23919             .tail(t('modes.add_area.tail'))
23920             .on('start', start)
23921             .on('startFromWay', startFromWay)
23922             .on('startFromNode', startFromNode),
23923         defaultTags = {area: 'yes'};
23924
23925     function start(loc) {
23926         var graph = context.graph(),
23927             node = iD.Node({loc: loc}),
23928             way = iD.Way({tags: defaultTags});
23929
23930         context.perform(
23931             iD.actions.AddEntity(node),
23932             iD.actions.AddEntity(way),
23933             iD.actions.AddVertex(way.id, node.id),
23934             iD.actions.AddVertex(way.id, node.id));
23935
23936         context.enter(iD.modes.DrawArea(context, way.id, graph));
23937     }
23938
23939     function startFromWay(loc, edge) {
23940         var graph = context.graph(),
23941             node = iD.Node({loc: loc}),
23942             way = iD.Way({tags: defaultTags});
23943
23944         context.perform(
23945             iD.actions.AddEntity(node),
23946             iD.actions.AddEntity(way),
23947             iD.actions.AddVertex(way.id, node.id),
23948             iD.actions.AddVertex(way.id, node.id),
23949             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23950
23951         context.enter(iD.modes.DrawArea(context, way.id, graph));
23952     }
23953
23954     function startFromNode(node) {
23955         var graph = context.graph(),
23956             way = iD.Way({tags: defaultTags});
23957
23958         context.perform(
23959             iD.actions.AddEntity(way),
23960             iD.actions.AddVertex(way.id, node.id),
23961             iD.actions.AddVertex(way.id, node.id));
23962
23963         context.enter(iD.modes.DrawArea(context, way.id, graph));
23964     }
23965
23966     mode.enter = function() {
23967         context.install(behavior);
23968     };
23969
23970     mode.exit = function() {
23971         context.uninstall(behavior);
23972     };
23973
23974     return mode;
23975 };
23976 iD.modes.AddLine = function(context) {
23977     var mode = {
23978         id: 'add-line',
23979         button: 'line',
23980         title: t('modes.add_line.title'),
23981         description: t('modes.add_line.description'),
23982         key: '2'
23983     };
23984
23985     var behavior = iD.behavior.AddWay(context)
23986         .tail(t('modes.add_line.tail'))
23987         .on('start', start)
23988         .on('startFromWay', startFromWay)
23989         .on('startFromNode', startFromNode);
23990
23991     function start(loc) {
23992         var graph = context.graph(),
23993             node = iD.Node({loc: loc}),
23994             way = iD.Way();
23995
23996         context.perform(
23997             iD.actions.AddEntity(node),
23998             iD.actions.AddEntity(way),
23999             iD.actions.AddVertex(way.id, node.id));
24000
24001         context.enter(iD.modes.DrawLine(context, way.id, graph));
24002     }
24003
24004     function startFromWay(loc, edge) {
24005         var graph = context.graph(),
24006             node = iD.Node({loc: loc}),
24007             way = iD.Way();
24008
24009         context.perform(
24010             iD.actions.AddEntity(node),
24011             iD.actions.AddEntity(way),
24012             iD.actions.AddVertex(way.id, node.id),
24013             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
24014
24015         context.enter(iD.modes.DrawLine(context, way.id, graph));
24016     }
24017
24018     function startFromNode(node) {
24019         var way = iD.Way();
24020
24021         context.perform(
24022             iD.actions.AddEntity(way),
24023             iD.actions.AddVertex(way.id, node.id));
24024
24025         context.enter(iD.modes.DrawLine(context, way.id, context.graph()));
24026     }
24027
24028     mode.enter = function() {
24029         context.install(behavior);
24030     };
24031
24032     mode.exit = function() {
24033         context.uninstall(behavior);
24034     };
24035
24036     return mode;
24037 };
24038 iD.modes.AddPoint = function(context) {
24039     var mode = {
24040         id: 'add-point',
24041         button: 'point',
24042         title: t('modes.add_point.title'),
24043         description: t('modes.add_point.description'),
24044         key: '1'
24045     };
24046
24047     var behavior = iD.behavior.Draw(context)
24048         .tail(t('modes.add_point.tail'))
24049         .on('click', add)
24050         .on('clickWay', addWay)
24051         .on('clickNode', addNode)
24052         .on('cancel', cancel)
24053         .on('finish', cancel);
24054
24055     function add(loc) {
24056         var node = iD.Node({loc: loc});
24057
24058         context.perform(
24059             iD.actions.AddEntity(node),
24060             t('operations.add.annotation.point'));
24061
24062         context.enter(
24063             iD.modes.Select(context, [node.id])
24064                 .suppressMenu(true)
24065                 .newFeature(true));
24066     }
24067
24068     function addWay(loc) {
24069         add(loc);
24070     }
24071
24072     function addNode(node) {
24073         add(node.loc);
24074     }
24075
24076     function cancel() {
24077         context.enter(iD.modes.Browse(context));
24078     }
24079
24080     mode.enter = function() {
24081         context.install(behavior);
24082     };
24083
24084     mode.exit = function() {
24085         context.uninstall(behavior);
24086     };
24087
24088     return mode;
24089 };
24090 iD.modes.Browse = function(context) {
24091     var mode = {
24092         button: 'browse',
24093         id: 'browse',
24094         title: t('modes.browse.title'),
24095         description: t('modes.browse.description')
24096     }, sidebar;
24097
24098     var behaviors = [
24099         iD.behavior.Paste(context),
24100         iD.behavior.Hover(context)
24101             .on('hover', context.ui().sidebar.hover),
24102         iD.behavior.Select(context),
24103         iD.behavior.Lasso(context),
24104         iD.modes.DragNode(context).behavior];
24105
24106     mode.enter = function() {
24107         behaviors.forEach(function(behavior) {
24108             context.install(behavior);
24109         });
24110
24111         // Get focus on the body.
24112         if (document.activeElement && document.activeElement.blur) {
24113             document.activeElement.blur();
24114         }
24115
24116         if (sidebar) {
24117             context.ui().sidebar.show(sidebar);
24118         } else {
24119             context.ui().sidebar.select(null);
24120         }
24121     };
24122
24123     mode.exit = function() {
24124         behaviors.forEach(function(behavior) {
24125             context.uninstall(behavior);
24126         });
24127
24128         if (sidebar) {
24129             context.ui().sidebar.hide();
24130         }
24131     };
24132
24133     mode.sidebar = function(_) {
24134         if (!arguments.length) return sidebar;
24135         sidebar = _;
24136         return mode;
24137     };
24138
24139     return mode;
24140 };
24141 iD.modes.DragNode = function(context) {
24142     var mode = {
24143         id: 'drag-node',
24144         button: 'browse'
24145     };
24146
24147     var nudgeInterval,
24148         activeIDs,
24149         wasMidpoint,
24150         cancelled,
24151         selectedIDs = [],
24152         hover = iD.behavior.Hover(context)
24153             .altDisables(true)
24154             .on('hover', context.ui().sidebar.hover),
24155         edit = iD.behavior.Edit(context);
24156
24157     function edge(point, size) {
24158         var pad = [30, 100, 30, 100];
24159         if (point[0] > size[0] - pad[0]) return [-10, 0];
24160         else if (point[0] < pad[2]) return [10, 0];
24161         else if (point[1] > size[1] - pad[1]) return [0, -10];
24162         else if (point[1] < pad[3]) return [0, 10];
24163         return null;
24164     }
24165
24166     function startNudge(nudge) {
24167         if (nudgeInterval) window.clearInterval(nudgeInterval);
24168         nudgeInterval = window.setInterval(function() {
24169             context.pan(nudge);
24170         }, 50);
24171     }
24172
24173     function stopNudge() {
24174         if (nudgeInterval) window.clearInterval(nudgeInterval);
24175         nudgeInterval = null;
24176     }
24177
24178     function moveAnnotation(entity) {
24179         return t('operations.move.annotation.' + entity.geometry(context.graph()));
24180     }
24181
24182     function connectAnnotation(entity) {
24183         return t('operations.connect.annotation.' + entity.geometry(context.graph()));
24184     }
24185
24186     function origin(entity) {
24187         return context.projection(entity.loc);
24188     }
24189
24190     function start(entity) {
24191         cancelled = d3.event.sourceEvent.shiftKey ||
24192             context.features().hasHiddenConnections(entity, context.graph());
24193
24194         if (cancelled) return behavior.cancel();
24195
24196         wasMidpoint = entity.type === 'midpoint';
24197         if (wasMidpoint) {
24198             var midpoint = entity;
24199             entity = iD.Node();
24200             context.perform(iD.actions.AddMidpoint(midpoint, entity));
24201
24202              var vertex = context.surface()
24203                 .selectAll('.' + entity.id);
24204              behavior.target(vertex.node(), entity);
24205
24206         } else {
24207             context.perform(
24208                 iD.actions.Noop());
24209         }
24210
24211         activeIDs = _.pluck(context.graph().parentWays(entity), 'id');
24212         activeIDs.push(entity.id);
24213
24214         context.enter(mode);
24215     }
24216
24217     function datum() {
24218         if (d3.event.sourceEvent.altKey) {
24219             return {};
24220         }
24221
24222         return d3.event.sourceEvent.target.__data__ || {};
24223     }
24224
24225     // via https://gist.github.com/shawnbot/4166283
24226     function childOf(p, c) {
24227         if (p === c) return false;
24228         while (c && c !== p) c = c.parentNode;
24229         return c === p;
24230     }
24231
24232     function move(entity) {
24233         if (cancelled) return;
24234         d3.event.sourceEvent.stopPropagation();
24235
24236         var nudge = childOf(context.container().node(),
24237             d3.event.sourceEvent.toElement) &&
24238             edge(d3.event.point, context.map().dimensions());
24239
24240         if (nudge) startNudge(nudge);
24241         else stopNudge();
24242
24243         var loc = context.map().mouseCoordinates();
24244
24245         var d = datum();
24246         if (d.type === 'node' && d.id !== entity.id) {
24247             loc = d.loc;
24248         } else if (d.type === 'way' && !d3.select(d3.event.sourceEvent.target).classed('fill')) {
24249             loc = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection).loc;
24250         }
24251
24252         context.replace(
24253             iD.actions.MoveNode(entity.id, loc),
24254             moveAnnotation(entity));
24255     }
24256
24257     function end(entity) {
24258         if (cancelled) return;
24259
24260         var d = datum();
24261
24262         if (d.type === 'way') {
24263             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection);
24264             context.replace(
24265                 iD.actions.AddMidpoint({ loc: choice.loc, edge: [d.nodes[choice.index - 1], d.nodes[choice.index]] }, entity),
24266                 connectAnnotation(d));
24267
24268         } else if (d.type === 'node' && d.id !== entity.id) {
24269             context.replace(
24270                 iD.actions.Connect([d.id, entity.id]),
24271                 connectAnnotation(d));
24272
24273         } else if (wasMidpoint) {
24274             context.replace(
24275                 iD.actions.Noop(),
24276                 t('operations.add.annotation.vertex'));
24277
24278         } else {
24279             context.replace(
24280                 iD.actions.Noop(),
24281                 moveAnnotation(entity));
24282         }
24283
24284         var reselection = selectedIDs.filter(function(id) {
24285             return context.graph().hasEntity(id);
24286         });
24287
24288         if (reselection.length) {
24289             context.enter(
24290                 iD.modes.Select(context, reselection)
24291                     .suppressMenu(true));
24292         } else {
24293             context.enter(iD.modes.Browse(context));
24294         }
24295     }
24296
24297     function cancel() {
24298         behavior.cancel();
24299         context.enter(iD.modes.Browse(context));
24300     }
24301
24302     function setActiveElements() {
24303         context.surface().selectAll(iD.util.entitySelector(activeIDs))
24304             .classed('active', true);
24305     }
24306
24307     var behavior = iD.behavior.drag()
24308         .delegate('g.node, g.point, g.midpoint')
24309         .surface(context.surface().node())
24310         .origin(origin)
24311         .on('start', start)
24312         .on('move', move)
24313         .on('end', end);
24314
24315     mode.enter = function() {
24316         context.install(hover);
24317         context.install(edit);
24318
24319         context.history()
24320             .on('undone.drag-node', cancel);
24321
24322         context.map()
24323             .on('drawn.drag-node', setActiveElements);
24324
24325         setActiveElements();
24326     };
24327
24328     mode.exit = function() {
24329         context.uninstall(hover);
24330         context.uninstall(edit);
24331
24332         context.history()
24333             .on('undone.drag-node', null);
24334
24335         context.map()
24336             .on('drawn.drag-node', null);
24337
24338         context.surface()
24339             .selectAll('.active')
24340             .classed('active', false);
24341
24342         stopNudge();
24343     };
24344
24345     mode.selectedIDs = function(_) {
24346         if (!arguments.length) return selectedIDs;
24347         selectedIDs = _;
24348         return mode;
24349     };
24350
24351     mode.behavior = behavior;
24352
24353     return mode;
24354 };
24355 iD.modes.DrawArea = function(context, wayId, baseGraph) {
24356     var mode = {
24357         button: 'area',
24358         id: 'draw-area'
24359     };
24360
24361     var behavior;
24362
24363     mode.enter = function() {
24364         var way = context.entity(wayId),
24365             headId = way.nodes[way.nodes.length - 2],
24366             tailId = way.first();
24367
24368         behavior = iD.behavior.DrawWay(context, wayId, -1, mode, baseGraph)
24369             .tail(t('modes.draw_area.tail'));
24370
24371         var addNode = behavior.addNode;
24372
24373         behavior.addNode = function(node) {
24374             if (node.id === headId || node.id === tailId) {
24375                 behavior.finish();
24376             } else {
24377                 addNode(node);
24378             }
24379         };
24380
24381         context.install(behavior);
24382     };
24383
24384     mode.exit = function() {
24385         context.uninstall(behavior);
24386     };
24387
24388     mode.selectedIDs = function() {
24389         return [wayId];
24390     };
24391
24392     return mode;
24393 };
24394 iD.modes.DrawLine = function(context, wayId, baseGraph, affix) {
24395     var mode = {
24396         button: 'line',
24397         id: 'draw-line'
24398     };
24399
24400     var behavior;
24401
24402     mode.enter = function() {
24403         var way = context.entity(wayId),
24404             index = (affix === 'prefix') ? 0 : undefined,
24405             headId = (affix === 'prefix') ? way.first() : way.last();
24406
24407         behavior = iD.behavior.DrawWay(context, wayId, index, mode, baseGraph)
24408             .tail(t('modes.draw_line.tail'));
24409
24410         var addNode = behavior.addNode;
24411
24412         behavior.addNode = function(node) {
24413             if (node.id === headId) {
24414                 behavior.finish();
24415             } else {
24416                 addNode(node);
24417             }
24418         };
24419
24420         context.install(behavior);
24421     };
24422
24423     mode.exit = function() {
24424         context.uninstall(behavior);
24425     };
24426
24427     mode.selectedIDs = function() {
24428         return [wayId];
24429     };
24430
24431     return mode;
24432 };
24433 iD.modes.Move = function(context, entityIDs) {
24434     var mode = {
24435         id: 'move',
24436         button: 'browse'
24437     };
24438
24439     var keybinding = d3.keybinding('move'),
24440         edit = iD.behavior.Edit(context),
24441         annotation = entityIDs.length === 1 ?
24442             t('operations.move.annotation.' + context.geometry(entityIDs[0])) :
24443             t('operations.move.annotation.multiple'),
24444         cache,
24445         origin,
24446         nudgeInterval;
24447
24448     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
24449
24450     function edge(point, size) {
24451         var pad = [30, 100, 30, 100];
24452         if (point[0] > size[0] - pad[0]) return [-10, 0];
24453         else if (point[0] < pad[2]) return [10, 0];
24454         else if (point[1] > size[1] - pad[1]) return [0, -10];
24455         else if (point[1] < pad[3]) return [0, 10];
24456         return null;
24457     }
24458
24459     function startNudge(nudge) {
24460         if (nudgeInterval) window.clearInterval(nudgeInterval);
24461         nudgeInterval = window.setInterval(function() {
24462             context.pan(nudge);
24463
24464             var currMouse = context.mouse(),
24465                 origMouse = context.projection(origin),
24466                 delta = vecSub(vecSub(currMouse, origMouse), nudge),
24467                 action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24468
24469             context.overwrite(action, annotation);
24470
24471         }, 50);
24472     }
24473
24474     function stopNudge() {
24475         if (nudgeInterval) window.clearInterval(nudgeInterval);
24476         nudgeInterval = null;
24477     }
24478
24479     function move() {
24480         var currMouse = context.mouse(),
24481             origMouse = context.projection(origin),
24482             delta = vecSub(currMouse, origMouse),
24483             action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24484
24485         context.overwrite(action, annotation);
24486
24487         var nudge = edge(currMouse, context.map().dimensions());
24488         if (nudge) startNudge(nudge);
24489         else stopNudge();
24490     }
24491
24492     function finish() {
24493         d3.event.stopPropagation();
24494         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24495         stopNudge();
24496     }
24497
24498     function cancel() {
24499         context.pop();
24500         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24501         stopNudge();
24502     }
24503
24504     function undone() {
24505         context.enter(iD.modes.Browse(context));
24506     }
24507
24508     mode.enter = function() {
24509         origin = context.map().mouseCoordinates();
24510         cache = {};
24511
24512         context.install(edit);
24513
24514         context.perform(
24515             iD.actions.Noop(),
24516             annotation);
24517
24518         context.surface()
24519             .on('mousemove.move', move)
24520             .on('click.move', finish);
24521
24522         context.history()
24523             .on('undone.move', undone);
24524
24525         keybinding
24526             .on('⎋', cancel)
24527             .on('↩', finish);
24528
24529         d3.select(document)
24530             .call(keybinding);
24531     };
24532
24533     mode.exit = function() {
24534         stopNudge();
24535
24536         context.uninstall(edit);
24537
24538         context.surface()
24539             .on('mousemove.move', null)
24540             .on('click.move', null);
24541
24542         context.history()
24543             .on('undone.move', null);
24544
24545         keybinding.off();
24546     };
24547
24548     return mode;
24549 };
24550 iD.modes.RotateWay = function(context, wayId) {
24551     var mode = {
24552         id: 'rotate-way',
24553         button: 'browse'
24554     };
24555
24556     var keybinding = d3.keybinding('rotate-way'),
24557         edit = iD.behavior.Edit(context);
24558
24559     mode.enter = function() {
24560         context.install(edit);
24561
24562         var annotation = t('operations.rotate.annotation.' + context.geometry(wayId)),
24563             way = context.graph().entity(wayId),
24564             nodes = _.uniq(context.graph().childNodes(way)),
24565             points = nodes.map(function(n) { return context.projection(n.loc); }),
24566             pivot = d3.geom.polygon(points).centroid(),
24567             angle;
24568
24569         context.perform(
24570             iD.actions.Noop(),
24571             annotation);
24572
24573         function rotate() {
24574
24575             var mousePoint = context.mouse(),
24576                 newAngle = Math.atan2(mousePoint[1] - pivot[1], mousePoint[0] - pivot[0]);
24577
24578             if (typeof angle === 'undefined') angle = newAngle;
24579
24580             context.replace(
24581                 iD.actions.RotateWay(wayId, pivot, newAngle - angle, context.projection),
24582                 annotation);
24583
24584             angle = newAngle;
24585         }
24586
24587         function finish() {
24588             d3.event.stopPropagation();
24589             context.enter(iD.modes.Select(context, [wayId])
24590                 .suppressMenu(true));
24591         }
24592
24593         function cancel() {
24594             context.pop();
24595             context.enter(iD.modes.Select(context, [wayId])
24596                 .suppressMenu(true));
24597         }
24598
24599         function undone() {
24600             context.enter(iD.modes.Browse(context));
24601         }
24602
24603         context.surface()
24604             .on('mousemove.rotate-way', rotate)
24605             .on('click.rotate-way', finish);
24606
24607         context.history()
24608             .on('undone.rotate-way', undone);
24609
24610         keybinding
24611             .on('⎋', cancel)
24612             .on('↩', finish);
24613
24614         d3.select(document)
24615             .call(keybinding);
24616     };
24617
24618     mode.exit = function() {
24619         context.uninstall(edit);
24620
24621         context.surface()
24622             .on('mousemove.rotate-way', null)
24623             .on('click.rotate-way', null);
24624
24625         context.history()
24626             .on('undone.rotate-way', null);
24627
24628         keybinding.off();
24629     };
24630
24631     return mode;
24632 };
24633 iD.modes.Save = function(context) {
24634     var ui = iD.ui.Commit(context)
24635             .on('cancel', cancel)
24636             .on('save', save);
24637
24638     function cancel() {
24639         context.enter(iD.modes.Browse(context));
24640     }
24641
24642     function save(e, tryAgain) {
24643         function withChildNodes(ids, graph) {
24644             return _.uniq(_.reduce(ids, function(result, id) {
24645                 var e = graph.entity(id);
24646                 if (e.type === 'way') {
24647                     var cn = graph.childNodes(e);
24648                     result.push.apply(result, _.pluck(_.filter(cn, 'version'), 'id'));
24649                 }
24650                 return result;
24651             }, _.clone(ids)));
24652         }
24653
24654         var loading = iD.ui.Loading(context).message(t('save.uploading')).blocking(true),
24655             history = context.history(),
24656             origChanges = history.changes(iD.actions.DiscardTags(history.difference())),
24657             localGraph = context.graph(),
24658             remoteGraph = iD.Graph(history.base(), true),
24659             modified = _.filter(history.difference().summary(), {changeType: 'modified'}),
24660             toCheck = _.pluck(_.pluck(modified, 'entity'), 'id'),
24661             toLoad = withChildNodes(toCheck, localGraph),
24662             conflicts = [],
24663             errors = [];
24664
24665         if (!tryAgain) history.perform(iD.actions.Noop());  // checkpoint
24666         context.container().call(loading);
24667
24668         if (toCheck.length) {
24669             context.connection().loadMultiple(toLoad, loaded);
24670         } else {
24671             finalize();
24672         }
24673
24674
24675         // Reload modified entities into an alternate graph and check for conflicts..
24676         function loaded(err, result) {
24677             if (errors.length) return;
24678
24679             if (err) {
24680                 errors.push({
24681                     msg: err.responseText,
24682                     details: [ t('save.status_code', { code: err.status }) ]
24683                 });
24684                 showErrors();
24685
24686             } else {
24687                 var loadMore = [];
24688                 _.each(result.data, function(entity) {
24689                     remoteGraph.replace(entity);
24690                     toLoad = _.without(toLoad, entity.id);
24691
24692                     // Because loadMultiple doesn't download /full like loadEntity,
24693                     // need to also load children that aren't already being checked..
24694                     if (!entity.visible) return;
24695                     if (entity.type === 'way') {
24696                         loadMore.push.apply(loadMore,
24697                             _.difference(entity.nodes, toCheck, toLoad, loadMore));
24698                     } else if (entity.type === 'relation' && entity.isMultipolygon()) {
24699                         loadMore.push.apply(loadMore,
24700                             _.difference(_.pluck(entity.members, 'id'), toCheck, toLoad, loadMore));
24701                     }
24702                 });
24703
24704                 if (loadMore.length) {
24705                     toLoad.push.apply(toLoad, loadMore);
24706                     context.connection().loadMultiple(loadMore, loaded);
24707                 }
24708
24709                 if (!toLoad.length) {
24710                     checkConflicts();
24711                 }
24712             }
24713         }
24714
24715
24716         function checkConflicts() {
24717             function choice(id, text, action) {
24718                 return { id: id, text: text, action: function() { history.replace(action); } };
24719             }
24720             function formatUser(d) {
24721                 return '<a href="' + context.connection().userURL(d) + '" target="_blank">' + d + '</a>';
24722             }
24723             function entityName(entity) {
24724                 return iD.util.displayName(entity) || (iD.util.displayType(entity.id) + ' ' + entity.id);
24725             }
24726
24727             function compareVersions(local, remote) {
24728                 if (local.version !== remote.version) return false;
24729
24730                 if (local.type === 'way') {
24731                     var children = _.union(local.nodes, remote.nodes);
24732
24733                     for (var i = 0; i < children.length; i++) {
24734                         var a = localGraph.hasEntity(children[i]),
24735                             b = remoteGraph.hasEntity(children[i]);
24736
24737                         if (a && b && a.version !== b.version) return false;
24738                     }
24739                 }
24740
24741                 return true;
24742             }
24743
24744             _.each(toCheck, function(id) {
24745                 var local = localGraph.entity(id),
24746                     remote = remoteGraph.entity(id);
24747
24748                 if (compareVersions(local, remote)) return;
24749
24750                 var action = iD.actions.MergeRemoteChanges,
24751                     merge = action(id, localGraph, remoteGraph, formatUser);
24752
24753                 history.replace(merge);
24754
24755                 var mergeConflicts = merge.conflicts();
24756                 if (!mergeConflicts.length) return;  // merged safely
24757
24758                 var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local'),
24759                     forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote'),
24760                     keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore')),
24761                     keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete'));
24762
24763                 conflicts.push({
24764                     id: id,
24765                     name: entityName(local),
24766                     details: mergeConflicts,
24767                     chosen: 1,
24768                     choices: [
24769                         choice(id, keepMine, forceLocal),
24770                         choice(id, keepTheirs, forceRemote)
24771                     ]
24772                 });
24773             });
24774
24775             finalize();
24776         }
24777
24778
24779         function finalize() {
24780             if (conflicts.length) {
24781                 conflicts.sort(function(a,b) { return b.id.localeCompare(a.id); });
24782                 showConflicts();
24783             } else if (errors.length) {
24784                 showErrors();
24785             } else {
24786                 var changes = history.changes(iD.actions.DiscardTags(history.difference()));
24787                 if (changes.modified.length || changes.created.length || changes.deleted.length) {
24788                     context.connection().putChangeset(
24789                         changes,
24790                         e.comment,
24791                         history.imageryUsed(),
24792                         function(err, changeset_id) {
24793                             if (err) {
24794                                 errors.push({
24795                                     msg: err.responseText,
24796                                     details: [ t('save.status_code', { code: err.status }) ]
24797                                 });
24798                                 showErrors();
24799                             } else {
24800                                 history.clearSaved();
24801                                 success(e, changeset_id);
24802                                 // Add delay to allow for postgres replication #1646 #2678
24803                                 window.setTimeout(function() {
24804                                     loading.close();
24805                                     context.flush();
24806                                 }, 2500);
24807                             }
24808                         });
24809                 } else {        // changes were insignificant or reverted by user
24810                     loading.close();
24811                     context.flush();
24812                     cancel();
24813                 }
24814             }
24815         }
24816
24817
24818         function showConflicts() {
24819             var selection = context.container()
24820                 .select('#sidebar')
24821                 .append('div')
24822                 .attr('class','sidebar-component');
24823
24824             loading.close();
24825
24826             selection.call(iD.ui.Conflicts(context)
24827                 .list(conflicts)
24828                 .on('download', function() {
24829                     var data = JXON.stringify(context.connection().osmChangeJXON('CHANGEME', origChanges)),
24830                         win = window.open('data:text/xml,' + encodeURIComponent(data), '_blank');
24831                     win.focus();
24832                 })
24833                 .on('cancel', function() {
24834                     history.pop();
24835                     selection.remove();
24836                 })
24837                 .on('save', function() {
24838                     for (var i = 0; i < conflicts.length; i++) {
24839                         if (conflicts[i].chosen === 1) {  // user chose "keep theirs"
24840                             var entity = context.hasEntity(conflicts[i].id);
24841                             if (entity && entity.type === 'way') {
24842                                 var children = _.uniq(entity.nodes);
24843                                 for (var j = 0; j < children.length; j++) {
24844                                     history.replace(iD.actions.Revert(children[j]));
24845                                 }
24846                             }
24847                             history.replace(iD.actions.Revert(conflicts[i].id));
24848                         }
24849                     }
24850
24851                     selection.remove();
24852                     save(e, true);
24853                 })
24854             );
24855         }
24856
24857
24858         function showErrors() {
24859             var selection = iD.ui.confirm(context.container());
24860
24861             history.pop();
24862             loading.close();
24863
24864             selection
24865                 .select('.modal-section.header')
24866                 .append('h3')
24867                 .text(t('save.error'));
24868
24869             addErrors(selection, errors);
24870             selection.okButton();
24871         }
24872
24873
24874         function addErrors(selection, data) {
24875             var message = selection
24876                 .select('.modal-section.message-text');
24877
24878             var items = message
24879                 .selectAll('.error-container')
24880                 .data(data);
24881
24882             var enter = items.enter()
24883                 .append('div')
24884                 .attr('class', 'error-container');
24885
24886             enter
24887                 .append('a')
24888                 .attr('class', 'error-description')
24889                 .attr('href', '#')
24890                 .classed('hide-toggle', true)
24891                 .text(function(d) { return d.msg || t('save.unknown_error_details'); })
24892                 .on('click', function() {
24893                     var error = d3.select(this),
24894                         detail = d3.select(this.nextElementSibling),
24895                         exp = error.classed('expanded');
24896
24897                     detail.style('display', exp ? 'none' : 'block');
24898                     error.classed('expanded', !exp);
24899
24900                     d3.event.preventDefault();
24901                 });
24902
24903             var details = enter
24904                 .append('div')
24905                 .attr('class', 'error-detail-container')
24906                 .style('display', 'none');
24907
24908             details
24909                 .append('ul')
24910                 .attr('class', 'error-detail-list')
24911                 .selectAll('li')
24912                 .data(function(d) { return d.details || []; })
24913                 .enter()
24914                 .append('li')
24915                 .attr('class', 'error-detail-item')
24916                 .text(function(d) { return d; });
24917
24918             items.exit()
24919                 .remove();
24920         }
24921
24922     }
24923
24924
24925     function success(e, changeset_id) {
24926         context.enter(iD.modes.Browse(context)
24927             .sidebar(iD.ui.Success(context)
24928                 .changeset({
24929                     id: changeset_id,
24930                     comment: e.comment
24931                 })
24932                 .on('cancel', function() {
24933                     context.ui().sidebar.hide();
24934                 })));
24935     }
24936
24937     var mode = {
24938         id: 'save'
24939     };
24940
24941     mode.enter = function() {
24942         context.connection().authenticate(function(err) {
24943             if (err) {
24944                 cancel();
24945             } else {
24946                 context.ui().sidebar.show(ui);
24947             }
24948         });
24949     };
24950
24951     mode.exit = function() {
24952         context.ui().sidebar.hide();
24953     };
24954
24955     return mode;
24956 };
24957 iD.modes.Select = function(context, selectedIDs) {
24958     var mode = {
24959         id: 'select',
24960         button: 'browse'
24961     };
24962
24963     var keybinding = d3.keybinding('select'),
24964         timeout = null,
24965         behaviors = [
24966             iD.behavior.Copy(context),
24967             iD.behavior.Paste(context),
24968             iD.behavior.Hover(context),
24969             iD.behavior.Select(context),
24970             iD.behavior.Lasso(context),
24971             iD.modes.DragNode(context)
24972                 .selectedIDs(selectedIDs)
24973                 .behavior],
24974         inspector,
24975         radialMenu,
24976         newFeature = false,
24977         suppressMenu = false;
24978
24979     var wrap = context.container()
24980         .select('.inspector-wrap');
24981
24982
24983     function singular() {
24984         if (selectedIDs.length === 1) {
24985             return context.entity(selectedIDs[0]);
24986         }
24987     }
24988
24989     function closeMenu() {
24990         if (radialMenu) {
24991             context.surface().call(radialMenu.close);
24992         }
24993     }
24994
24995     function positionMenu() {
24996         if (suppressMenu || !radialMenu) { return; }
24997
24998         var entity = singular();
24999         if (entity && context.geometry(entity.id) === 'relation') {
25000             suppressMenu = true;
25001         } else if (entity && entity.type === 'node') {
25002             radialMenu.center(context.projection(entity.loc));
25003         } else {
25004             var point = context.mouse(),
25005                 viewport = iD.geo.Extent(context.projection.clipExtent()).polygon();
25006             if (iD.geo.pointInPolygon(point, viewport)) {
25007                 radialMenu.center(point);
25008             } else {
25009                 suppressMenu = true;
25010             }
25011         }
25012     }
25013
25014     function showMenu() {
25015         closeMenu();
25016         if (!suppressMenu && radialMenu) {
25017             context.surface().call(radialMenu);
25018         }
25019     }
25020
25021     function toggleMenu() {
25022         if (d3.select('.radial-menu').empty()) {
25023             showMenu();
25024         } else {
25025             closeMenu();
25026         }
25027     }
25028
25029     mode.selectedIDs = function() {
25030         return selectedIDs;
25031     };
25032
25033     mode.reselect = function() {
25034         var surfaceNode = context.surface().node();
25035         if (surfaceNode.focus) { // FF doesn't support it
25036             surfaceNode.focus();
25037         }
25038
25039         positionMenu();
25040         showMenu();
25041     };
25042
25043     mode.newFeature = function(_) {
25044         if (!arguments.length) return newFeature;
25045         newFeature = _;
25046         return mode;
25047     };
25048
25049     mode.suppressMenu = function(_) {
25050         if (!arguments.length) return suppressMenu;
25051         suppressMenu = _;
25052         return mode;
25053     };
25054
25055     mode.enter = function() {
25056         function update() {
25057             closeMenu();
25058             if (_.any(selectedIDs, function(id) { return !context.hasEntity(id); })) {
25059                 // Exit mode if selected entity gets undone
25060                 context.enter(iD.modes.Browse(context));
25061             }
25062         }
25063
25064         function dblclick() {
25065             var target = d3.select(d3.event.target),
25066                 datum = target.datum();
25067
25068             if (datum instanceof iD.Way && !target.classed('fill')) {
25069                 var choice = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection),
25070                     node = iD.Node();
25071
25072                 var prev = datum.nodes[choice.index - 1],
25073                     next = datum.nodes[choice.index];
25074
25075                 context.perform(
25076                     iD.actions.AddMidpoint({loc: choice.loc, edge: [prev, next]}, node),
25077                     t('operations.add.annotation.vertex'));
25078
25079                 d3.event.preventDefault();
25080                 d3.event.stopPropagation();
25081             }
25082         }
25083
25084         function selectElements(drawn) {
25085             var entity = singular();
25086             if (entity && context.geometry(entity.id) === 'relation') {
25087                 suppressMenu = true;
25088                 return;
25089             }
25090
25091             var selection = context.surface()
25092                     .selectAll(iD.util.entityOrMemberSelector(selectedIDs, context.graph()));
25093
25094             if (selection.empty()) {
25095                 if (drawn) {  // Exit mode if selected DOM elements have disappeared..
25096                     context.enter(iD.modes.Browse(context));
25097                 }
25098             } else {
25099                 selection
25100                     .classed('selected', true);
25101             }
25102         }
25103
25104
25105         behaviors.forEach(function(behavior) {
25106             context.install(behavior);
25107         });
25108
25109         var operations = _.without(d3.values(iD.operations), iD.operations.Delete)
25110                 .map(function(o) { return o(selectedIDs, context); })
25111                 .filter(function(o) { return o.available(); });
25112
25113         operations.unshift(iD.operations.Delete(selectedIDs, context));
25114
25115         keybinding
25116             .on('⎋', function() { context.enter(iD.modes.Browse(context)); }, true)
25117             .on('space', toggleMenu);
25118
25119         operations.forEach(function(operation) {
25120             operation.keys.forEach(function(key) {
25121                 keybinding.on(key, function() {
25122                     if (!operation.disabled()) {
25123                         operation();
25124                     }
25125                 });
25126             });
25127         });
25128
25129         d3.select(document)
25130             .call(keybinding);
25131
25132         radialMenu = iD.ui.RadialMenu(context, operations);
25133
25134         context.ui().sidebar
25135             .select(singular() ? singular().id : null, newFeature);
25136
25137         context.history()
25138             .on('undone.select', update)
25139             .on('redone.select', update);
25140
25141         context.map()
25142             .on('move.select', closeMenu)
25143             .on('drawn.select', selectElements);
25144
25145         selectElements();
25146
25147         var show = d3.event && !suppressMenu;
25148
25149         if (show) {
25150             positionMenu();
25151         }
25152
25153         timeout = window.setTimeout(function() {
25154             if (show) {
25155                 showMenu();
25156             }
25157
25158             context.surface()
25159                 .on('dblclick.select', dblclick);
25160         }, 200);
25161
25162         if (selectedIDs.length > 1) {
25163             var entities = iD.ui.SelectionList(context, selectedIDs);
25164             context.ui().sidebar.show(entities);
25165         }
25166     };
25167
25168     mode.exit = function() {
25169         if (timeout) window.clearTimeout(timeout);
25170
25171         if (inspector) wrap.call(inspector.close);
25172
25173         behaviors.forEach(function(behavior) {
25174             context.uninstall(behavior);
25175         });
25176
25177         keybinding.off();
25178         closeMenu();
25179         radialMenu = undefined;
25180
25181         context.history()
25182             .on('undone.select', null)
25183             .on('redone.select', null);
25184
25185         context.surface()
25186             .on('dblclick.select', null)
25187             .selectAll('.selected')
25188             .classed('selected', false);
25189
25190         context.map().on('drawn.select', null);
25191         context.ui().sidebar.hide();
25192     };
25193
25194     return mode;
25195 };
25196 iD.operations = {};
25197 iD.operations.Circularize = function(selectedIDs, context) {
25198     var entityId = selectedIDs[0],
25199         entity = context.entity(entityId),
25200         extent = entity.extent(context.graph()),
25201         geometry = context.geometry(entityId),
25202         action = iD.actions.Circularize(entityId, context.projection);
25203
25204     var operation = function() {
25205         var annotation = t('operations.circularize.annotation.' + geometry);
25206         context.perform(action, annotation);
25207     };
25208
25209     operation.available = function() {
25210         return selectedIDs.length === 1 &&
25211             entity.type === 'way' &&
25212             _.uniq(entity.nodes).length > 1;
25213     };
25214
25215     operation.disabled = function() {
25216         var reason;
25217         if (extent.percentContainedIn(context.extent()) < 0.8) {
25218             reason = 'too_large';
25219         } else if (context.hasHiddenConnections(entityId)) {
25220             reason = 'connected_to_hidden';
25221         }
25222         return action.disabled(context.graph()) || reason;
25223     };
25224
25225     operation.tooltip = function() {
25226         var disable = operation.disabled();
25227         return disable ?
25228             t('operations.circularize.' + disable) :
25229             t('operations.circularize.description.' + geometry);
25230     };
25231
25232     operation.id = 'circularize';
25233     operation.keys = [t('operations.circularize.key')];
25234     operation.title = t('operations.circularize.title');
25235
25236     return operation;
25237 };
25238 iD.operations.Continue = function(selectedIDs, context) {
25239     var graph = context.graph(),
25240         entities = selectedIDs.map(function(id) { return graph.entity(id); }),
25241         geometries = _.extend({line: [], vertex: []},
25242             _.groupBy(entities, function(entity) { return entity.geometry(graph); })),
25243         vertex = geometries.vertex[0];
25244
25245     function candidateWays() {
25246         return graph.parentWays(vertex).filter(function(parent) {
25247             return parent.geometry(graph) === 'line' &&
25248                 parent.affix(vertex.id) &&
25249                 (geometries.line.length === 0 || geometries.line[0] === parent);
25250         });
25251     }
25252
25253     var operation = function() {
25254         var candidate = candidateWays()[0];
25255         context.enter(iD.modes.DrawLine(
25256             context,
25257             candidate.id,
25258             context.graph(),
25259             candidate.affix(vertex.id)));
25260     };
25261
25262     operation.available = function() {
25263         return geometries.vertex.length === 1 && geometries.line.length <= 1 &&
25264             !context.features().hasHiddenConnections(vertex, context.graph());
25265     };
25266
25267     operation.disabled = function() {
25268         var candidates = candidateWays();
25269         if (candidates.length === 0)
25270             return 'not_eligible';
25271         if (candidates.length > 1)
25272             return 'multiple';
25273     };
25274
25275     operation.tooltip = function() {
25276         var disable = operation.disabled();
25277         return disable ?
25278             t('operations.continue.' + disable) :
25279             t('operations.continue.description');
25280     };
25281
25282     operation.id = 'continue';
25283     operation.keys = [t('operations.continue.key')];
25284     operation.title = t('operations.continue.title');
25285
25286     return operation;
25287 };
25288 iD.operations.Delete = function(selectedIDs, context) {
25289     var action = iD.actions.DeleteMultiple(selectedIDs);
25290
25291     var operation = function() {
25292         var annotation,
25293             nextSelectedID;
25294
25295         if (selectedIDs.length > 1) {
25296             annotation = t('operations.delete.annotation.multiple', {n: selectedIDs.length});
25297
25298         } else {
25299             var id = selectedIDs[0],
25300                 entity = context.entity(id),
25301                 geometry = context.geometry(id),
25302                 parents = context.graph().parentWays(entity),
25303                 parent = parents[0];
25304
25305             annotation = t('operations.delete.annotation.' + geometry);
25306
25307             // Select the next closest node in the way.
25308             if (geometry === 'vertex' && parents.length === 1 && parent.nodes.length > 2) {
25309                 var nodes = parent.nodes,
25310                     i = nodes.indexOf(id);
25311
25312                 if (i === 0) {
25313                     i++;
25314                 } else if (i === nodes.length - 1) {
25315                     i--;
25316                 } else {
25317                     var a = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i - 1]).loc),
25318                         b = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i + 1]).loc);
25319                     i = a < b ? i - 1 : i + 1;
25320                 }
25321
25322                 nextSelectedID = nodes[i];
25323             }
25324         }
25325
25326         if (nextSelectedID && context.hasEntity(nextSelectedID)) {
25327             context.enter(iD.modes.Select(context, [nextSelectedID]));
25328         } else {
25329             context.enter(iD.modes.Browse(context));
25330         }
25331
25332         context.perform(
25333             action,
25334             annotation);
25335     };
25336
25337     operation.available = function() {
25338         return true;
25339     };
25340
25341     operation.disabled = function() {
25342         var reason;
25343         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25344             reason = 'connected_to_hidden';
25345         }
25346         return action.disabled(context.graph()) || reason;
25347     };
25348
25349     operation.tooltip = function() {
25350         var disable = operation.disabled();
25351         return disable ?
25352             t('operations.delete.' + disable) :
25353             t('operations.delete.description');
25354     };
25355
25356     operation.id = 'delete';
25357     operation.keys = [iD.ui.cmd('⌘⌫'), iD.ui.cmd('⌘⌦')];
25358     operation.title = t('operations.delete.title');
25359
25360     return operation;
25361 };
25362 iD.operations.Disconnect = function(selectedIDs, context) {
25363     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25364         return context.geometry(entityId) === 'vertex';
25365     });
25366
25367     var entityId = vertices[0],
25368         action = iD.actions.Disconnect(entityId);
25369
25370     if (selectedIDs.length > 1) {
25371         action.limitWays(_.without(selectedIDs, entityId));
25372     }
25373
25374     var operation = function() {
25375         context.perform(action, t('operations.disconnect.annotation'));
25376     };
25377
25378     operation.available = function() {
25379         return vertices.length === 1;
25380     };
25381
25382     operation.disabled = function() {
25383         var reason;
25384         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25385             reason = 'connected_to_hidden';
25386         }
25387         return action.disabled(context.graph()) || reason;
25388     };
25389
25390     operation.tooltip = function() {
25391         var disable = operation.disabled();
25392         return disable ?
25393             t('operations.disconnect.' + disable) :
25394             t('operations.disconnect.description');
25395     };
25396
25397     operation.id = 'disconnect';
25398     operation.keys = [t('operations.disconnect.key')];
25399     operation.title = t('operations.disconnect.title');
25400
25401     return operation;
25402 };
25403 iD.operations.Merge = function(selectedIDs, context) {
25404     var join = iD.actions.Join(selectedIDs),
25405         merge = iD.actions.Merge(selectedIDs),
25406         mergePolygon = iD.actions.MergePolygon(selectedIDs);
25407
25408     var operation = function() {
25409         var annotation = t('operations.merge.annotation', {n: selectedIDs.length}),
25410             action;
25411
25412         if (!join.disabled(context.graph())) {
25413             action = join;
25414         } else if (!merge.disabled(context.graph())) {
25415             action = merge;
25416         } else {
25417             action = mergePolygon;
25418         }
25419
25420         context.perform(action, annotation);
25421         context.enter(iD.modes.Select(context, selectedIDs.filter(function(id) { return context.hasEntity(id); }))
25422             .suppressMenu(true));
25423     };
25424
25425     operation.available = function() {
25426         return selectedIDs.length >= 2;
25427     };
25428
25429     operation.disabled = function() {
25430         return join.disabled(context.graph()) &&
25431             merge.disabled(context.graph()) &&
25432             mergePolygon.disabled(context.graph());
25433     };
25434
25435     operation.tooltip = function() {
25436         var j = join.disabled(context.graph()),
25437             m = merge.disabled(context.graph()),
25438             p = mergePolygon.disabled(context.graph());
25439
25440         if (j === 'restriction' && m && p)
25441             return t('operations.merge.restriction', {relation: context.presets().item('type/restriction').name()});
25442
25443         if (p === 'incomplete_relation' && j && m)
25444             return t('operations.merge.incomplete_relation');
25445
25446         if (j && m && p)
25447             return t('operations.merge.' + j);
25448
25449         return t('operations.merge.description');
25450     };
25451
25452     operation.id = 'merge';
25453     operation.keys = [t('operations.merge.key')];
25454     operation.title = t('operations.merge.title');
25455
25456     return operation;
25457 };
25458 iD.operations.Move = function(selectedIDs, context) {
25459     var extent = selectedIDs.reduce(function(extent, id) {
25460             return extent.extend(context.entity(id).extent(context.graph()));
25461         }, iD.geo.Extent());
25462
25463     var operation = function() {
25464         context.enter(iD.modes.Move(context, selectedIDs));
25465     };
25466
25467     operation.available = function() {
25468         return selectedIDs.length > 1 ||
25469             context.entity(selectedIDs[0]).type !== 'node';
25470     };
25471
25472     operation.disabled = function() {
25473         var reason;
25474         if (extent.area() && extent.percentContainedIn(context.extent()) < 0.8) {
25475             reason = 'too_large';
25476         } else if (_.any(selectedIDs, context.hasHiddenConnections)) {
25477             reason = 'connected_to_hidden';
25478         }
25479         return iD.actions.Move(selectedIDs).disabled(context.graph()) || reason;
25480     };
25481
25482     operation.tooltip = function() {
25483         var disable = operation.disabled();
25484         return disable ?
25485             t('operations.move.' + disable) :
25486             t('operations.move.description');
25487     };
25488
25489     operation.id = 'move';
25490     operation.keys = [t('operations.move.key')];
25491     operation.title = t('operations.move.title');
25492
25493     return operation;
25494 };
25495 iD.operations.Orthogonalize = function(selectedIDs, context) {
25496     var entityId = selectedIDs[0],
25497         entity = context.entity(entityId),
25498         extent = entity.extent(context.graph()),
25499         geometry = context.geometry(entityId),
25500         action = iD.actions.Orthogonalize(entityId, context.projection);
25501
25502     var operation = function() {
25503         var annotation = t('operations.orthogonalize.annotation.' + geometry);
25504         context.perform(action, annotation);
25505     };
25506
25507     operation.available = function() {
25508         return selectedIDs.length === 1 &&
25509             entity.type === 'way' &&
25510             entity.isClosed() &&
25511             _.uniq(entity.nodes).length > 2;
25512     };
25513
25514     operation.disabled = function() {
25515         var reason;
25516         if (extent.percentContainedIn(context.extent()) < 0.8) {
25517             reason = 'too_large';
25518         } else if (context.hasHiddenConnections(entityId)) {
25519             reason = 'connected_to_hidden';
25520         }
25521         return action.disabled(context.graph()) || reason;
25522     };
25523
25524     operation.tooltip = function() {
25525         var disable = operation.disabled();
25526         return disable ?
25527             t('operations.orthogonalize.' + disable) :
25528             t('operations.orthogonalize.description.' + geometry);
25529     };
25530
25531     operation.id = 'orthogonalize';
25532     operation.keys = [t('operations.orthogonalize.key')];
25533     operation.title = t('operations.orthogonalize.title');
25534
25535     return operation;
25536 };
25537 iD.operations.Reverse = function(selectedIDs, context) {
25538     var entityId = selectedIDs[0];
25539
25540     var operation = function() {
25541         context.perform(
25542             iD.actions.Reverse(entityId),
25543             t('operations.reverse.annotation'));
25544     };
25545
25546     operation.available = function() {
25547         return selectedIDs.length === 1 &&
25548             context.geometry(entityId) === 'line';
25549     };
25550
25551     operation.disabled = function() {
25552         return false;
25553     };
25554
25555     operation.tooltip = function() {
25556         return t('operations.reverse.description');
25557     };
25558
25559     operation.id = 'reverse';
25560     operation.keys = [t('operations.reverse.key')];
25561     operation.title = t('operations.reverse.title');
25562
25563     return operation;
25564 };
25565 iD.operations.Rotate = function(selectedIDs, context) {
25566     var entityId = selectedIDs[0],
25567         entity = context.entity(entityId),
25568         extent = entity.extent(context.graph()),
25569         geometry = context.geometry(entityId);
25570
25571     var operation = function() {
25572         context.enter(iD.modes.RotateWay(context, entityId));
25573     };
25574
25575     operation.available = function() {
25576         if (selectedIDs.length !== 1 || entity.type !== 'way')
25577             return false;
25578         if (geometry === 'area')
25579             return true;
25580         if (entity.isClosed() &&
25581             context.graph().parentRelations(entity).some(function(r) { return r.isMultipolygon(); }))
25582             return true;
25583         return false;
25584     };
25585
25586     operation.disabled = function() {
25587         if (extent.percentContainedIn(context.extent()) < 0.8) {
25588             return 'too_large';
25589         } else if (context.hasHiddenConnections(entityId)) {
25590             return 'connected_to_hidden';
25591         } else {
25592             return false;
25593         }
25594     };
25595
25596     operation.tooltip = function() {
25597         var disable = operation.disabled();
25598         return disable ?
25599             t('operations.rotate.' + disable) :
25600             t('operations.rotate.description');
25601     };
25602
25603     operation.id = 'rotate';
25604     operation.keys = [t('operations.rotate.key')];
25605     operation.title = t('operations.rotate.title');
25606
25607     return operation;
25608 };
25609 iD.operations.Split = function(selectedIDs, context) {
25610     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25611         return context.geometry(entityId) === 'vertex';
25612     });
25613
25614     var entityId = vertices[0],
25615         action = iD.actions.Split(entityId);
25616
25617     if (selectedIDs.length > 1) {
25618         action.limitWays(_.without(selectedIDs, entityId));
25619     }
25620
25621     var operation = function() {
25622         var annotation;
25623
25624         var ways = action.ways(context.graph());
25625         if (ways.length === 1) {
25626             annotation = t('operations.split.annotation.' + context.geometry(ways[0].id));
25627         } else {
25628             annotation = t('operations.split.annotation.multiple', {n: ways.length});
25629         }
25630
25631         var difference = context.perform(action, annotation);
25632         context.enter(iD.modes.Select(context, difference.extantIDs()));
25633     };
25634
25635     operation.available = function() {
25636         return vertices.length === 1;
25637     };
25638
25639     operation.disabled = function() {
25640         var reason;
25641         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25642             reason = 'connected_to_hidden';
25643         }
25644         return action.disabled(context.graph()) || reason;
25645     };
25646
25647     operation.tooltip = function() {
25648         var disable = operation.disabled();
25649         if (disable) {
25650             return t('operations.split.' + disable);
25651         }
25652
25653         var ways = action.ways(context.graph());
25654         if (ways.length === 1) {
25655             return t('operations.split.description.' + context.geometry(ways[0].id));
25656         } else {
25657             return t('operations.split.description.multiple');
25658         }
25659     };
25660
25661     operation.id = 'split';
25662     operation.keys = [t('operations.split.key')];
25663     operation.title = t('operations.split.title');
25664
25665     return operation;
25666 };
25667 iD.operations.Straighten = function(selectedIDs, context) {
25668     var entityId = selectedIDs[0],
25669         action = iD.actions.Straighten(entityId, context.projection);
25670
25671     function operation() {
25672         var annotation = t('operations.straighten.annotation');
25673         context.perform(action, annotation);
25674     }
25675
25676     operation.available = function() {
25677         var entity = context.entity(entityId);
25678         return selectedIDs.length === 1 &&
25679             entity.type === 'way' &&
25680             !entity.isClosed() &&
25681             _.uniq(entity.nodes).length > 2;
25682     };
25683
25684     operation.disabled = function() {
25685         var reason;
25686         if (context.hasHiddenConnections(entityId)) {
25687             reason = 'connected_to_hidden';
25688         }
25689         return action.disabled(context.graph()) || reason;
25690     };
25691
25692     operation.tooltip = function() {
25693         var disable = operation.disabled();
25694         return disable ?
25695             t('operations.straighten.' + disable) :
25696             t('operations.straighten.description');
25697     };
25698
25699     operation.id = 'straighten';
25700     operation.keys = [t('operations.straighten.key')];
25701     operation.title = t('operations.straighten.title');
25702
25703     return operation;
25704 };
25705 iD.Connection = function(useHttps) {
25706     if (typeof useHttps !== 'boolean') {
25707       useHttps = window.location.protocol === 'https:';
25708     }
25709
25710     var event = d3.dispatch('authenticating', 'authenticated', 'auth', 'loading', 'loaded'),
25711         protocol = useHttps ? 'https:' : 'http:',
25712         url = protocol + '//www.openstreetmap.org',
25713         connection = {},
25714         inflight = {},
25715         loadedTiles = {},
25716         tileZoom = 16,
25717         oauth = osmAuth({
25718             url: protocol + '//www.openstreetmap.org',
25719             oauth_consumer_key: '5A043yRSEugj4DJ5TljuapfnrflWDte8jTOcWLlT',
25720             oauth_secret: 'aB3jKq1TRsCOUrfOIZ6oQMEDmv2ptV76PA54NGLL',
25721             loading: authenticating,
25722             done: authenticated
25723         }),
25724         ndStr = 'nd',
25725         tagStr = 'tag',
25726         memberStr = 'member',
25727         nodeStr = 'node',
25728         wayStr = 'way',
25729         relationStr = 'relation',
25730         userDetails,
25731         off;
25732
25733
25734     connection.changesetURL = function(changesetId) {
25735         return url + '/changeset/' + changesetId;
25736     };
25737
25738     connection.changesetsURL = function(center, zoom) {
25739         var precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2));
25740         return url + '/history#map=' +
25741             Math.floor(zoom) + '/' +
25742             center[1].toFixed(precision) + '/' +
25743             center[0].toFixed(precision);
25744     };
25745
25746     connection.entityURL = function(entity) {
25747         return url + '/' + entity.type + '/' + entity.osmId();
25748     };
25749
25750     connection.userURL = function(username) {
25751         return url + '/user/' + username;
25752     };
25753
25754     connection.loadFromURL = function(url, callback) {
25755         function done(err, dom) {
25756             return callback(err, parse(dom));
25757         }
25758         return d3.xml(url).get(done);
25759     };
25760
25761     connection.loadEntity = function(id, callback) {
25762         var type = iD.Entity.id.type(id),
25763             osmID = iD.Entity.id.toOSM(id);
25764
25765         connection.loadFromURL(
25766             url + '/api/0.6/' + type + '/' + osmID + (type !== 'node' ? '/full' : ''),
25767             function(err, entities) {
25768                 if (callback) callback(err, {data: entities});
25769             });
25770     };
25771
25772     connection.loadEntityVersion = function(id, version, callback) {
25773         var type = iD.Entity.id.type(id),
25774             osmID = iD.Entity.id.toOSM(id);
25775
25776         connection.loadFromURL(
25777             url + '/api/0.6/' + type + '/' + osmID + '/' + version,
25778             function(err, entities) {
25779                 if (callback) callback(err, {data: entities});
25780             });
25781     };
25782
25783     connection.loadMultiple = function(ids, callback) {
25784         _.each(_.groupBy(_.uniq(ids), iD.Entity.id.type), function(v, k) {
25785             var type = k + 's',
25786                 osmIDs = _.map(v, iD.Entity.id.toOSM);
25787
25788             _.each(_.chunk(osmIDs, 150), function(arr) {
25789                 connection.loadFromURL(
25790                     url + '/api/0.6/' + type + '?' + type + '=' + arr.join(),
25791                     function(err, entities) {
25792                         if (callback) callback(err, {data: entities});
25793                     });
25794             });
25795         });
25796     };
25797
25798     function authenticating() {
25799         event.authenticating();
25800     }
25801
25802     function authenticated() {
25803         event.authenticated();
25804     }
25805
25806     function getLoc(attrs) {
25807         var lon = attrs.lon && attrs.lon.value,
25808             lat = attrs.lat && attrs.lat.value;
25809         return [parseFloat(lon), parseFloat(lat)];
25810     }
25811
25812     function getNodes(obj) {
25813         var elems = obj.getElementsByTagName(ndStr),
25814             nodes = new Array(elems.length);
25815         for (var i = 0, l = elems.length; i < l; i++) {
25816             nodes[i] = 'n' + elems[i].attributes.ref.value;
25817         }
25818         return nodes;
25819     }
25820
25821     function getTags(obj) {
25822         var elems = obj.getElementsByTagName(tagStr),
25823             tags = {};
25824         for (var i = 0, l = elems.length; i < l; i++) {
25825             var attrs = elems[i].attributes;
25826             tags[attrs.k.value] = attrs.v.value;
25827         }
25828         return tags;
25829     }
25830
25831     function getMembers(obj) {
25832         var elems = obj.getElementsByTagName(memberStr),
25833             members = new Array(elems.length);
25834         for (var i = 0, l = elems.length; i < l; i++) {
25835             var attrs = elems[i].attributes;
25836             members[i] = {
25837                 id: attrs.type.value[0] + attrs.ref.value,
25838                 type: attrs.type.value,
25839                 role: attrs.role.value
25840             };
25841         }
25842         return members;
25843     }
25844
25845     function getVisible(attrs) {
25846         return (!attrs.visible || attrs.visible.value !== 'false');
25847     }
25848
25849     var parsers = {
25850         node: function nodeData(obj) {
25851             var attrs = obj.attributes;
25852             return new iD.Node({
25853                 id: iD.Entity.id.fromOSM(nodeStr, attrs.id.value),
25854                 loc: getLoc(attrs),
25855                 version: attrs.version.value,
25856                 user: attrs.user && attrs.user.value,
25857                 tags: getTags(obj),
25858                 visible: getVisible(attrs)
25859             });
25860         },
25861
25862         way: function wayData(obj) {
25863             var attrs = obj.attributes;
25864             return new iD.Way({
25865                 id: iD.Entity.id.fromOSM(wayStr, attrs.id.value),
25866                 version: attrs.version.value,
25867                 user: attrs.user && attrs.user.value,
25868                 tags: getTags(obj),
25869                 nodes: getNodes(obj),
25870                 visible: getVisible(attrs)
25871             });
25872         },
25873
25874         relation: function relationData(obj) {
25875             var attrs = obj.attributes;
25876             return new iD.Relation({
25877                 id: iD.Entity.id.fromOSM(relationStr, attrs.id.value),
25878                 version: attrs.version.value,
25879                 user: attrs.user && attrs.user.value,
25880                 tags: getTags(obj),
25881                 members: getMembers(obj),
25882                 visible: getVisible(attrs)
25883             });
25884         }
25885     };
25886
25887     function parse(dom) {
25888         if (!dom || !dom.childNodes) return;
25889
25890         var root = dom.childNodes[0],
25891             children = root.childNodes,
25892             entities = [];
25893
25894         for (var i = 0, l = children.length; i < l; i++) {
25895             var child = children[i],
25896                 parser = parsers[child.nodeName];
25897             if (parser) {
25898                 entities.push(parser(child));
25899             }
25900         }
25901
25902         return entities;
25903     }
25904
25905     connection.authenticated = function() {
25906         return oauth.authenticated();
25907     };
25908
25909     // Generate Changeset XML. Returns a string.
25910     connection.changesetJXON = function(tags) {
25911         return {
25912             osm: {
25913                 changeset: {
25914                     tag: _.map(tags, function(value, key) {
25915                         return { '@k': key, '@v': value };
25916                     }),
25917                     '@version': 0.6,
25918                     '@generator': 'iD'
25919                 }
25920             }
25921         };
25922     };
25923
25924     // Generate [osmChange](http://wiki.openstreetmap.org/wiki/OsmChange)
25925     // XML. Returns a string.
25926     connection.osmChangeJXON = function(changeset_id, changes) {
25927         function nest(x, order) {
25928             var groups = {};
25929             for (var i = 0; i < x.length; i++) {
25930                 var tagName = Object.keys(x[i])[0];
25931                 if (!groups[tagName]) groups[tagName] = [];
25932                 groups[tagName].push(x[i][tagName]);
25933             }
25934             var ordered = {};
25935             order.forEach(function(o) {
25936                 if (groups[o]) ordered[o] = groups[o];
25937             });
25938             return ordered;
25939         }
25940
25941         function rep(entity) {
25942             return entity.asJXON(changeset_id);
25943         }
25944
25945         return {
25946             osmChange: {
25947                 '@version': 0.6,
25948                 '@generator': 'iD',
25949                 'create': nest(changes.created.map(rep), ['node', 'way', 'relation']),
25950                 'modify': nest(changes.modified.map(rep), ['node', 'way', 'relation']),
25951                 'delete': _.extend(nest(changes.deleted.map(rep), ['relation', 'way', 'node']), {'@if-unused': true})
25952             }
25953         };
25954     };
25955
25956     connection.changesetTags = function(comment, imageryUsed) {
25957         var detected = iD.detect(),
25958             tags = {
25959                 created_by: 'iD ' + iD.version,
25960                 imagery_used: imageryUsed.join(';').substr(0, 255),
25961                 host: (window.location.origin + window.location.pathname).substr(0, 255),
25962                 locale: detected.locale
25963             };
25964
25965         if (comment) {
25966             tags.comment = comment.substr(0, 255);
25967         }
25968
25969         return tags;
25970     };
25971
25972     connection.putChangeset = function(changes, comment, imageryUsed, callback) {
25973         oauth.xhr({
25974                 method: 'PUT',
25975                 path: '/api/0.6/changeset/create',
25976                 options: { header: { 'Content-Type': 'text/xml' } },
25977                 content: JXON.stringify(connection.changesetJXON(connection.changesetTags(comment, imageryUsed)))
25978             }, function(err, changeset_id) {
25979                 if (err) return callback(err);
25980                 oauth.xhr({
25981                     method: 'POST',
25982                     path: '/api/0.6/changeset/' + changeset_id + '/upload',
25983                     options: { header: { 'Content-Type': 'text/xml' } },
25984                     content: JXON.stringify(connection.osmChangeJXON(changeset_id, changes))
25985                 }, function(err) {
25986                     if (err) return callback(err);
25987                     // POST was successful, safe to call the callback.
25988                     // Still attempt to close changeset, but ignore response because #2667
25989                     // Add delay to allow for postgres replication #1646 #2678
25990                     window.setTimeout(function() { callback(null, changeset_id); }, 2500);
25991                     oauth.xhr({
25992                         method: 'PUT',
25993                         path: '/api/0.6/changeset/' + changeset_id + '/close'
25994                     }, d3.functor(true));
25995                 });
25996             });
25997     };
25998
25999     connection.userDetails = function(callback) {
26000         if (userDetails) {
26001             callback(undefined, userDetails);
26002             return;
26003         }
26004
26005         function done(err, user_details) {
26006             if (err) return callback(err);
26007
26008             var u = user_details.getElementsByTagName('user')[0],
26009                 img = u.getElementsByTagName('img'),
26010                 image_url = '';
26011
26012             if (img && img[0] && img[0].getAttribute('href')) {
26013                 image_url = img[0].getAttribute('href');
26014             }
26015
26016             userDetails = {
26017                 display_name: u.attributes.display_name.value,
26018                 image_url: image_url,
26019                 id: u.attributes.id.value
26020             };
26021
26022             callback(undefined, userDetails);
26023         }
26024
26025         oauth.xhr({ method: 'GET', path: '/api/0.6/user/details' }, done);
26026     };
26027
26028     connection.status = function(callback) {
26029         function done(capabilities) {
26030             var apiStatus = capabilities.getElementsByTagName('status');
26031             callback(undefined, apiStatus[0].getAttribute('api'));
26032         }
26033         d3.xml(url + '/api/capabilities').get()
26034             .on('load', done)
26035             .on('error', callback);
26036     };
26037
26038     function abortRequest(i) { i.abort(); }
26039
26040     connection.tileZoom = function(_) {
26041         if (!arguments.length) return tileZoom;
26042         tileZoom = _;
26043         return connection;
26044     };
26045
26046     connection.loadTiles = function(projection, dimensions, callback) {
26047
26048         if (off) return;
26049
26050         var s = projection.scale() * 2 * Math.PI,
26051             z = Math.max(Math.log(s) / Math.log(2) - 8, 0),
26052             ts = 256 * Math.pow(2, z - tileZoom),
26053             origin = [
26054                 s / 2 - projection.translate()[0],
26055                 s / 2 - projection.translate()[1]];
26056
26057         var tiles = d3.geo.tile()
26058             .scaleExtent([tileZoom, tileZoom])
26059             .scale(s)
26060             .size(dimensions)
26061             .translate(projection.translate())()
26062             .map(function(tile) {
26063                 var x = tile[0] * ts - origin[0],
26064                     y = tile[1] * ts - origin[1];
26065
26066                 return {
26067                     id: tile.toString(),
26068                     extent: iD.geo.Extent(
26069                         projection.invert([x, y + ts]),
26070                         projection.invert([x + ts, y]))
26071                 };
26072             });
26073
26074         function bboxUrl(tile) {
26075             return url + '/api/0.6/map?bbox=' + tile.extent.toParam();
26076         }
26077
26078         _.filter(inflight, function(v, i) {
26079             var wanted = _.find(tiles, function(tile) {
26080                 return i === tile.id;
26081             });
26082             if (!wanted) delete inflight[i];
26083             return !wanted;
26084         }).map(abortRequest);
26085
26086         tiles.forEach(function(tile) {
26087             var id = tile.id;
26088
26089             if (loadedTiles[id] || inflight[id]) return;
26090
26091             if (_.isEmpty(inflight)) {
26092                 event.loading();
26093             }
26094
26095             inflight[id] = connection.loadFromURL(bboxUrl(tile), function(err, parsed) {
26096                 loadedTiles[id] = true;
26097                 delete inflight[id];
26098
26099                 if (callback) callback(err, _.extend({data: parsed}, tile));
26100
26101                 if (_.isEmpty(inflight)) {
26102                     event.loaded();
26103                 }
26104             });
26105         });
26106     };
26107
26108     connection.switch = function(options) {
26109         url = options.url;
26110         oauth.options(_.extend({
26111             loading: authenticating,
26112             done: authenticated
26113         }, options));
26114         event.auth();
26115         connection.flush();
26116         return connection;
26117     };
26118
26119     connection.toggle = function(_) {
26120         off = !_;
26121         return connection;
26122     };
26123
26124     connection.flush = function() {
26125         userDetails = undefined;
26126         _.forEach(inflight, abortRequest);
26127         loadedTiles = {};
26128         inflight = {};
26129         return connection;
26130     };
26131
26132     connection.loadedTiles = function(_) {
26133         if (!arguments.length) return loadedTiles;
26134         loadedTiles = _;
26135         return connection;
26136     };
26137
26138     connection.logout = function() {
26139         userDetails = undefined;
26140         oauth.logout();
26141         event.auth();
26142         return connection;
26143     };
26144
26145     connection.authenticate = function(callback) {
26146         userDetails = undefined;
26147         function done(err, res) {
26148             event.auth();
26149             if (callback) callback(err, res);
26150         }
26151         return oauth.authenticate(done);
26152     };
26153
26154     return d3.rebind(connection, event, 'on');
26155 };
26156 /*
26157     iD.Difference represents the difference between two graphs.
26158     It knows how to calculate the set of entities that were
26159     created, modified, or deleted, and also contains the logic
26160     for recursively extending a difference to the complete set
26161     of entities that will require a redraw, taking into account
26162     child and parent relationships.
26163  */
26164 iD.Difference = function(base, head) {
26165     var changes = {}, length = 0;
26166
26167     function changed(h, b) {
26168         return h !== b && !_.isEqual(_.omit(h, 'v'), _.omit(b, 'v'));
26169     }
26170
26171     _.each(head.entities, function(h, id) {
26172         var b = base.entities[id];
26173         if (changed(h, b)) {
26174             changes[id] = {base: b, head: h};
26175             length++;
26176         }
26177     });
26178
26179     _.each(base.entities, function(b, id) {
26180         var h = head.entities[id];
26181         if (!changes[id] && changed(h, b)) {
26182             changes[id] = {base: b, head: h};
26183             length++;
26184         }
26185     });
26186
26187     function addParents(parents, result) {
26188         for (var i = 0; i < parents.length; i++) {
26189             var parent = parents[i];
26190
26191             if (parent.id in result)
26192                 continue;
26193
26194             result[parent.id] = parent;
26195             addParents(head.parentRelations(parent), result);
26196         }
26197     }
26198
26199     var difference = {};
26200
26201     difference.length = function() {
26202         return length;
26203     };
26204
26205     difference.changes = function() {
26206         return changes;
26207     };
26208
26209     difference.extantIDs = function() {
26210         var result = [];
26211         _.each(changes, function(change, id) {
26212             if (change.head) result.push(id);
26213         });
26214         return result;
26215     };
26216
26217     difference.modified = function() {
26218         var result = [];
26219         _.each(changes, function(change) {
26220             if (change.base && change.head) result.push(change.head);
26221         });
26222         return result;
26223     };
26224
26225     difference.created = function() {
26226         var result = [];
26227         _.each(changes, function(change) {
26228             if (!change.base && change.head) result.push(change.head);
26229         });
26230         return result;
26231     };
26232
26233     difference.deleted = function() {
26234         var result = [];
26235         _.each(changes, function(change) {
26236             if (change.base && !change.head) result.push(change.base);
26237         });
26238         return result;
26239     };
26240
26241     difference.summary = function() {
26242         var relevant = {};
26243
26244         function addEntity(entity, graph, changeType) {
26245             relevant[entity.id] = {
26246                 entity: entity,
26247                 graph: graph,
26248                 changeType: changeType
26249             };
26250         }
26251
26252         function addParents(entity) {
26253             var parents = head.parentWays(entity);
26254             for (var j = parents.length - 1; j >= 0; j--) {
26255                 var parent = parents[j];
26256                 if (!(parent.id in relevant)) addEntity(parent, head, 'modified');
26257             }
26258         }
26259
26260         _.each(changes, function(change) {
26261             if (change.head && change.head.geometry(head) !== 'vertex') {
26262                 addEntity(change.head, head, change.base ? 'modified' : 'created');
26263
26264             } else if (change.base && change.base.geometry(base) !== 'vertex') {
26265                 addEntity(change.base, base, 'deleted');
26266
26267             } else if (change.base && change.head) { // modified vertex
26268                 var moved    = !_.isEqual(change.base.loc,  change.head.loc),
26269                     retagged = !_.isEqual(change.base.tags, change.head.tags);
26270
26271                 if (moved) {
26272                     addParents(change.head);
26273                 }
26274
26275                 if (retagged || (moved && change.head.hasInterestingTags())) {
26276                     addEntity(change.head, head, 'modified');
26277                 }
26278
26279             } else if (change.head && change.head.hasInterestingTags()) { // created vertex
26280                 addEntity(change.head, head, 'created');
26281
26282             } else if (change.base && change.base.hasInterestingTags()) { // deleted vertex
26283                 addEntity(change.base, base, 'deleted');
26284             }
26285         });
26286
26287         return d3.values(relevant);
26288     };
26289
26290     difference.complete = function(extent) {
26291         var result = {}, id, change;
26292
26293         for (id in changes) {
26294             change = changes[id];
26295
26296             var h = change.head,
26297                 b = change.base,
26298                 entity = h || b;
26299
26300             if (extent &&
26301                 (!h || !h.intersects(extent, head)) &&
26302                 (!b || !b.intersects(extent, base)))
26303                 continue;
26304
26305             result[id] = h;
26306
26307             if (entity.type === 'way') {
26308                 var nh = h ? h.nodes : [],
26309                     nb = b ? b.nodes : [],
26310                     diff, i;
26311
26312                 diff = _.difference(nh, nb);
26313                 for (i = 0; i < diff.length; i++) {
26314                     result[diff[i]] = head.hasEntity(diff[i]);
26315                 }
26316
26317                 diff = _.difference(nb, nh);
26318                 for (i = 0; i < diff.length; i++) {
26319                     result[diff[i]] = head.hasEntity(diff[i]);
26320                 }
26321             }
26322
26323             addParents(head.parentWays(entity), result);
26324             addParents(head.parentRelations(entity), result);
26325         }
26326
26327         return result;
26328     };
26329
26330     return difference;
26331 };
26332 iD.Entity = function(attrs) {
26333     // For prototypal inheritance.
26334     if (this instanceof iD.Entity) return;
26335
26336     // Create the appropriate subtype.
26337     if (attrs && attrs.type) {
26338         return iD.Entity[attrs.type].apply(this, arguments);
26339     } else if (attrs && attrs.id) {
26340         return iD.Entity[iD.Entity.id.type(attrs.id)].apply(this, arguments);
26341     }
26342
26343     // Initialize a generic Entity (used only in tests).
26344     return (new iD.Entity()).initialize(arguments);
26345 };
26346
26347 iD.Entity.id = function(type) {
26348     return iD.Entity.id.fromOSM(type, iD.Entity.id.next[type]--);
26349 };
26350
26351 iD.Entity.id.next = {node: -1, way: -1, relation: -1};
26352
26353 iD.Entity.id.fromOSM = function(type, id) {
26354     return type[0] + id;
26355 };
26356
26357 iD.Entity.id.toOSM = function(id) {
26358     return id.slice(1);
26359 };
26360
26361 iD.Entity.id.type = function(id) {
26362     return {'n': 'node', 'w': 'way', 'r': 'relation'}[id[0]];
26363 };
26364
26365 // A function suitable for use as the second argument to d3.selection#data().
26366 iD.Entity.key = function(entity) {
26367     return entity.id + 'v' + (entity.v || 0);
26368 };
26369
26370 iD.Entity.prototype = {
26371     tags: {},
26372
26373     initialize: function(sources) {
26374         for (var i = 0; i < sources.length; ++i) {
26375             var source = sources[i];
26376             for (var prop in source) {
26377                 if (Object.prototype.hasOwnProperty.call(source, prop)) {
26378                     if (source[prop] === undefined) {
26379                         delete this[prop];
26380                     } else {
26381                         this[prop] = source[prop];
26382                     }
26383                 }
26384             }
26385         }
26386
26387         if (!this.id && this.type) {
26388             this.id = iD.Entity.id(this.type);
26389         }
26390         if (!this.hasOwnProperty('visible')) {
26391             this.visible = true;
26392         }
26393
26394         if (iD.debug) {
26395             Object.freeze(this);
26396             Object.freeze(this.tags);
26397
26398             if (this.loc) Object.freeze(this.loc);
26399             if (this.nodes) Object.freeze(this.nodes);
26400             if (this.members) Object.freeze(this.members);
26401         }
26402
26403         return this;
26404     },
26405
26406     copy: function() {
26407         // Returns an array so that we can support deep copying ways and relations.
26408         // The first array element will contain this.copy, followed by any descendants.
26409         return [iD.Entity(this, {id: undefined, user: undefined, version: undefined})];
26410     },
26411
26412     osmId: function() {
26413         return iD.Entity.id.toOSM(this.id);
26414     },
26415
26416     isNew: function() {
26417         return this.osmId() < 0;
26418     },
26419
26420     update: function(attrs) {
26421         return iD.Entity(this, attrs, {v: 1 + (this.v || 0)});
26422     },
26423
26424     mergeTags: function(tags) {
26425         var merged = _.clone(this.tags), changed = false;
26426         for (var k in tags) {
26427             var t1 = merged[k],
26428                 t2 = tags[k];
26429             if (!t1) {
26430                 changed = true;
26431                 merged[k] = t2;
26432             } else if (t1 !== t2) {
26433                 changed = true;
26434                 merged[k] = _.union(t1.split(/;\s*/), t2.split(/;\s*/)).join(';');
26435             }
26436         }
26437         return changed ? this.update({tags: merged}) : this;
26438     },
26439
26440     intersects: function(extent, resolver) {
26441         return this.extent(resolver).intersects(extent);
26442     },
26443
26444     isUsed: function(resolver) {
26445         return _.without(Object.keys(this.tags), 'area').length > 0 ||
26446             resolver.parentRelations(this).length > 0;
26447     },
26448
26449     hasInterestingTags: function() {
26450         return _.keys(this.tags).some(iD.interestingTag);
26451     },
26452
26453     isHighwayIntersection: function() {
26454         return false;
26455     },
26456
26457     deprecatedTags: function() {
26458         var tags = _.pairs(this.tags);
26459         var deprecated = {};
26460
26461         iD.data.deprecated.forEach(function(d) {
26462             var match = _.pairs(d.old)[0];
26463             tags.forEach(function(t) {
26464                 if (t[0] === match[0] &&
26465                     (t[1] === match[1] || match[1] === '*')) {
26466                     deprecated[t[0]] = t[1];
26467                 }
26468             });
26469         });
26470
26471         return deprecated;
26472     }
26473 };
26474 iD.Graph = function(other, mutable) {
26475     if (!(this instanceof iD.Graph)) return new iD.Graph(other, mutable);
26476
26477     if (other instanceof iD.Graph) {
26478         var base = other.base();
26479         this.entities = _.assign(Object.create(base.entities), other.entities);
26480         this._parentWays = _.assign(Object.create(base.parentWays), other._parentWays);
26481         this._parentRels = _.assign(Object.create(base.parentRels), other._parentRels);
26482
26483     } else {
26484         this.entities = Object.create({});
26485         this._parentWays = Object.create({});
26486         this._parentRels = Object.create({});
26487         this.rebase(other || [], [this]);
26488     }
26489
26490     this.transients = {};
26491     this._childNodes = {};
26492     this.frozen = !mutable;
26493 };
26494
26495 iD.Graph.prototype = {
26496     hasEntity: function(id) {
26497         return this.entities[id];
26498     },
26499
26500     entity: function(id) {
26501         var entity = this.entities[id];
26502         if (!entity) {
26503             throw new Error('entity ' + id + ' not found');
26504         }
26505         return entity;
26506     },
26507
26508     transient: function(entity, key, fn) {
26509         var id = entity.id,
26510             transients = this.transients[id] ||
26511             (this.transients[id] = {});
26512
26513         if (transients[key] !== undefined) {
26514             return transients[key];
26515         }
26516
26517         transients[key] = fn.call(entity);
26518
26519         return transients[key];
26520     },
26521
26522     parentWays: function(entity) {
26523         var parents = this._parentWays[entity.id],
26524             result = [];
26525
26526         if (parents) {
26527             for (var i = 0; i < parents.length; i++) {
26528                 result.push(this.entity(parents[i]));
26529             }
26530         }
26531         return result;
26532     },
26533
26534     isPoi: function(entity) {
26535         var parentWays = this._parentWays[entity.id];
26536         return !parentWays || parentWays.length === 0;
26537     },
26538
26539     isShared: function(entity) {
26540         var parentWays = this._parentWays[entity.id];
26541         return parentWays && parentWays.length > 1;
26542     },
26543
26544     parentRelations: function(entity) {
26545         var parents = this._parentRels[entity.id],
26546             result = [];
26547
26548         if (parents) {
26549             for (var i = 0; i < parents.length; i++) {
26550                 result.push(this.entity(parents[i]));
26551             }
26552         }
26553         return result;
26554     },
26555
26556     childNodes: function(entity) {
26557         if (this._childNodes[entity.id])
26558             return this._childNodes[entity.id];
26559
26560         var nodes = [];
26561         if (entity.nodes) {
26562             for (var i = 0; i < entity.nodes.length; i++) {
26563                 nodes[i] = this.entity(entity.nodes[i]);
26564             }
26565         }
26566
26567         if (iD.debug) Object.freeze(nodes);
26568
26569         this._childNodes[entity.id] = nodes;
26570         return this._childNodes[entity.id];
26571     },
26572
26573     base: function() {
26574         return {
26575             'entities': iD.util.getPrototypeOf(this.entities),
26576             'parentWays': iD.util.getPrototypeOf(this._parentWays),
26577             'parentRels': iD.util.getPrototypeOf(this._parentRels)
26578         };
26579     },
26580
26581     // Unlike other graph methods, rebase mutates in place. This is because it
26582     // is used only during the history operation that merges newly downloaded
26583     // data into each state. To external consumers, it should appear as if the
26584     // graph always contained the newly downloaded data.
26585     rebase: function(entities, stack, force) {
26586         var base = this.base(),
26587             i, j, k, id;
26588
26589         for (i = 0; i < entities.length; i++) {
26590             var entity = entities[i];
26591
26592             if (!entity.visible || (!force && base.entities[entity.id]))
26593                 continue;
26594
26595             // Merging data into the base graph
26596             base.entities[entity.id] = entity;
26597             this._updateCalculated(undefined, entity, base.parentWays, base.parentRels);
26598
26599             // Restore provisionally-deleted nodes that are discovered to have an extant parent
26600             if (entity.type === 'way') {
26601                 for (j = 0; j < entity.nodes.length; j++) {
26602                     id = entity.nodes[j];
26603                     for (k = 1; k < stack.length; k++) {
26604                         var ents = stack[k].entities;
26605                         if (ents.hasOwnProperty(id) && ents[id] === undefined) {
26606                             delete ents[id];
26607                         }
26608                     }
26609                 }
26610             }
26611         }
26612
26613         for (i = 0; i < stack.length; i++) {
26614             stack[i]._updateRebased();
26615         }
26616     },
26617
26618     _updateRebased: function() {
26619         var base = this.base(),
26620             i, k, child, id, keys;
26621
26622         keys = Object.keys(this._parentWays);
26623         for (i = 0; i < keys.length; i++) {
26624             child = keys[i];
26625             if (base.parentWays[child]) {
26626                 for (k = 0; k < base.parentWays[child].length; k++) {
26627                     id = base.parentWays[child][k];
26628                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentWays[child], id)) {
26629                         this._parentWays[child].push(id);
26630                     }
26631                 }
26632             }
26633         }
26634
26635         keys = Object.keys(this._parentRels);
26636         for (i = 0; i < keys.length; i++) {
26637             child = keys[i];
26638             if (base.parentRels[child]) {
26639                 for (k = 0; k < base.parentRels[child].length; k++) {
26640                     id = base.parentRels[child][k];
26641                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentRels[child], id)) {
26642                         this._parentRels[child].push(id);
26643                     }
26644                 }
26645             }
26646         }
26647
26648         this.transients = {};
26649
26650         // this._childNodes is not updated, under the assumption that
26651         // ways are always downloaded with their child nodes.
26652     },
26653
26654     // Updates calculated properties (parentWays, parentRels) for the specified change
26655     _updateCalculated: function(oldentity, entity, parentWays, parentRels) {
26656
26657         parentWays = parentWays || this._parentWays;
26658         parentRels = parentRels || this._parentRels;
26659
26660         var type = entity && entity.type || oldentity && oldentity.type,
26661             removed, added, ways, rels, i;
26662
26663
26664         if (type === 'way') {
26665
26666             // Update parentWays
26667             if (oldentity && entity) {
26668                 removed = _.difference(oldentity.nodes, entity.nodes);
26669                 added = _.difference(entity.nodes, oldentity.nodes);
26670             } else if (oldentity) {
26671                 removed = oldentity.nodes;
26672                 added = [];
26673             } else if (entity) {
26674                 removed = [];
26675                 added = entity.nodes;
26676             }
26677             for (i = 0; i < removed.length; i++) {
26678                 parentWays[removed[i]] = _.without(parentWays[removed[i]], oldentity.id);
26679             }
26680             for (i = 0; i < added.length; i++) {
26681                 ways = _.without(parentWays[added[i]], entity.id);
26682                 ways.push(entity.id);
26683                 parentWays[added[i]] = ways;
26684             }
26685
26686         } else if (type === 'relation') {
26687
26688             // Update parentRels
26689             if (oldentity && entity) {
26690                 removed = _.difference(oldentity.members, entity.members);
26691                 added = _.difference(entity.members, oldentity);
26692             } else if (oldentity) {
26693                 removed = oldentity.members;
26694                 added = [];
26695             } else if (entity) {
26696                 removed = [];
26697                 added = entity.members;
26698             }
26699             for (i = 0; i < removed.length; i++) {
26700                 parentRels[removed[i].id] = _.without(parentRels[removed[i].id], oldentity.id);
26701             }
26702             for (i = 0; i < added.length; i++) {
26703                 rels = _.without(parentRels[added[i].id], entity.id);
26704                 rels.push(entity.id);
26705                 parentRels[added[i].id] = rels;
26706             }
26707         }
26708     },
26709
26710     replace: function(entity) {
26711         if (this.entities[entity.id] === entity)
26712             return this;
26713
26714         return this.update(function() {
26715             this._updateCalculated(this.entities[entity.id], entity);
26716             this.entities[entity.id] = entity;
26717         });
26718     },
26719
26720     remove: function(entity) {
26721         return this.update(function() {
26722             this._updateCalculated(entity, undefined);
26723             this.entities[entity.id] = undefined;
26724         });
26725     },
26726
26727     revert: function(id) {
26728         var baseEntity = this.base().entities[id],
26729             headEntity = this.entities[id];
26730
26731         if (headEntity === baseEntity)
26732             return this;
26733
26734         return this.update(function() {
26735             this._updateCalculated(headEntity, baseEntity);
26736             delete this.entities[id];
26737         });
26738     },
26739
26740     update: function() {
26741         var graph = this.frozen ? iD.Graph(this, true) : this;
26742
26743         for (var i = 0; i < arguments.length; i++) {
26744             arguments[i].call(graph, graph);
26745         }
26746
26747         if (this.frozen) graph.frozen = true;
26748
26749         return graph;
26750     },
26751
26752     // Obliterates any existing entities
26753     load: function(entities) {
26754         var base = this.base();
26755         this.entities = Object.create(base.entities);
26756
26757         for (var i in entities) {
26758             this.entities[i] = entities[i];
26759             this._updateCalculated(base.entities[i], this.entities[i]);
26760         }
26761
26762         return this;
26763     }
26764 };
26765 iD.History = function(context) {
26766     var stack, index, tree,
26767         imageryUsed = ['Bing'],
26768         dispatch = d3.dispatch('change', 'undone', 'redone'),
26769         lock = iD.util.SessionMutex('lock');
26770
26771     function perform(actions) {
26772         actions = Array.prototype.slice.call(actions);
26773
26774         var annotation;
26775
26776         if (!_.isFunction(_.last(actions))) {
26777             annotation = actions.pop();
26778         }
26779
26780         var graph = stack[index].graph;
26781         for (var i = 0; i < actions.length; i++) {
26782             graph = actions[i](graph);
26783         }
26784
26785         return {
26786             graph: graph,
26787             annotation: annotation,
26788             imageryUsed: imageryUsed
26789         };
26790     }
26791
26792     function change(previous) {
26793         var difference = iD.Difference(previous, history.graph());
26794         dispatch.change(difference);
26795         return difference;
26796     }
26797
26798     // iD uses namespaced keys so multiple installations do not conflict
26799     function getKey(n) {
26800         return 'iD_' + window.location.origin + '_' + n;
26801     }
26802
26803     var history = {
26804         graph: function() {
26805             return stack[index].graph;
26806         },
26807
26808         base: function() {
26809             return stack[0].graph;
26810         },
26811
26812         merge: function(entities, extent) {
26813             stack[0].graph.rebase(entities, _.pluck(stack, 'graph'), false);
26814             tree.rebase(entities, false);
26815
26816             dispatch.change(undefined, extent);
26817         },
26818
26819         perform: function() {
26820             var previous = stack[index].graph;
26821
26822             stack = stack.slice(0, index + 1);
26823             stack.push(perform(arguments));
26824             index++;
26825
26826             return change(previous);
26827         },
26828
26829         replace: function() {
26830             var previous = stack[index].graph;
26831
26832             // assert(index == stack.length - 1)
26833             stack[index] = perform(arguments);
26834
26835             return change(previous);
26836         },
26837
26838         pop: function() {
26839             var previous = stack[index].graph;
26840
26841             if (index > 0) {
26842                 index--;
26843                 stack.pop();
26844                 return change(previous);
26845             }
26846         },
26847
26848         // Same as calling pop and then perform
26849         overwrite: function() {
26850             var previous = stack[index].graph;
26851
26852             if (index > 0) {
26853                 index--;
26854                 stack.pop();
26855             }
26856             stack = stack.slice(0, index + 1);
26857             stack.push(perform(arguments));
26858             index++;
26859
26860             return change(previous);
26861         },
26862
26863         undo: function() {
26864             var previous = stack[index].graph;
26865
26866             // Pop to the next annotated state.
26867             while (index > 0) {
26868                 index--;
26869                 if (stack[index].annotation) break;
26870             }
26871
26872             dispatch.undone();
26873             return change(previous);
26874         },
26875
26876         redo: function() {
26877             var previous = stack[index].graph;
26878
26879             while (index < stack.length - 1) {
26880                 index++;
26881                 if (stack[index].annotation) break;
26882             }
26883
26884             dispatch.redone();
26885             return change(previous);
26886         },
26887
26888         undoAnnotation: function() {
26889             var i = index;
26890             while (i >= 0) {
26891                 if (stack[i].annotation) return stack[i].annotation;
26892                 i--;
26893             }
26894         },
26895
26896         redoAnnotation: function() {
26897             var i = index + 1;
26898             while (i <= stack.length - 1) {
26899                 if (stack[i].annotation) return stack[i].annotation;
26900                 i++;
26901             }
26902         },
26903
26904         intersects: function(extent) {
26905             return tree.intersects(extent, stack[index].graph);
26906         },
26907
26908         difference: function() {
26909             var base = stack[0].graph,
26910                 head = stack[index].graph;
26911             return iD.Difference(base, head);
26912         },
26913
26914         changes: function(action) {
26915             var base = stack[0].graph,
26916                 head = stack[index].graph;
26917
26918             if (action) {
26919                 head = action(head);
26920             }
26921
26922             var difference = iD.Difference(base, head);
26923
26924             return {
26925                 modified: difference.modified(),
26926                 created: difference.created(),
26927                 deleted: difference.deleted()
26928             };
26929         },
26930
26931         validate: function(changes) {
26932             return _(iD.validations)
26933                 .map(function(fn) { return fn()(changes, stack[index].graph); })
26934                 .flatten()
26935                 .value();
26936         },
26937
26938         hasChanges: function() {
26939             return this.difference().length() > 0;
26940         },
26941
26942         imageryUsed: function(sources) {
26943             if (sources) {
26944                 imageryUsed = sources;
26945                 return history;
26946             } else {
26947                 return _(stack.slice(1, index + 1))
26948                     .pluck('imageryUsed')
26949                     .flatten()
26950                     .unique()
26951                     .without(undefined, 'Custom')
26952                     .value();
26953             }
26954         },
26955
26956         reset: function() {
26957             stack = [{graph: iD.Graph()}];
26958             index = 0;
26959             tree = iD.Tree(stack[0].graph);
26960             dispatch.change();
26961             return history;
26962         },
26963
26964         toJSON: function() {
26965             if (!this.hasChanges()) return;
26966
26967             var allEntities = {},
26968                 baseEntities = {},
26969                 base = stack[0];
26970
26971             var s = stack.map(function(i) {
26972                 var modified = [], deleted = [];
26973
26974                 _.forEach(i.graph.entities, function(entity, id) {
26975                     if (entity) {
26976                         var key = iD.Entity.key(entity);
26977                         allEntities[key] = entity;
26978                         modified.push(key);
26979                     } else {
26980                         deleted.push(id);
26981                     }
26982
26983                     // make sure that the originals of changed or deleted entities get merged
26984                     // into the base of the stack after restoring the data from JSON.
26985                     if (id in base.graph.entities) {
26986                         baseEntities[id] = base.graph.entities[id];
26987                     }
26988                     // get originals of parent entities too
26989                     _.forEach(base.graph._parentWays[id], function(parentId) {
26990                         if (parentId in base.graph.entities) {
26991                             baseEntities[parentId] = base.graph.entities[parentId];
26992                         }
26993                     });
26994                 });
26995
26996                 var x = {};
26997
26998                 if (modified.length) x.modified = modified;
26999                 if (deleted.length) x.deleted = deleted;
27000                 if (i.imageryUsed) x.imageryUsed = i.imageryUsed;
27001                 if (i.annotation) x.annotation = i.annotation;
27002
27003                 return x;
27004             });
27005
27006             return JSON.stringify({
27007                 version: 3,
27008                 entities: _.values(allEntities),
27009                 baseEntities: _.values(baseEntities),
27010                 stack: s,
27011                 nextIDs: iD.Entity.id.next,
27012                 index: index
27013             });
27014         },
27015
27016         fromJSON: function(json, loadChildNodes) {
27017             var h = JSON.parse(json);
27018
27019             iD.Entity.id.next = h.nextIDs;
27020             index = h.index;
27021
27022             if (h.version === 2 || h.version === 3) {
27023                 var allEntities = {};
27024
27025                 h.entities.forEach(function(entity) {
27026                     allEntities[iD.Entity.key(entity)] = iD.Entity(entity);
27027                 });
27028
27029                 if (h.version === 3) {
27030                     // This merges originals for changed entities into the base of
27031                     // the stack even if the current stack doesn't have them (for
27032                     // example when iD has been restarted in a different region)
27033                     var baseEntities = h.baseEntities.map(function(entity) {
27034                         return iD.Entity(entity);
27035                     });
27036                     stack[0].graph.rebase(baseEntities, _.pluck(stack, 'graph'), true);
27037                     tree.rebase(baseEntities, true);
27038
27039                     // When we restore a modified way, we also need to fetch any missing
27040                     // childnodes that would normally have been downloaded with it.. #2142
27041                     if (loadChildNodes) {
27042                         var missing =  _(baseEntities)
27043                                 .filter('type', 'way')
27044                                 .pluck('nodes')
27045                                 .flatten()
27046                                 .uniq()
27047                                 .reject(function(n) { return stack[0].graph.hasEntity(n); })
27048                                 .value();
27049
27050                         if (!_.isEmpty(missing)) {
27051                             var childNodesLoaded = function(err, result) {
27052                                 if (err) return;
27053
27054                                 var visible = _.groupBy(result.data, 'visible');
27055                                 if (!_.isEmpty(visible.true)) {
27056                                     stack[0].graph.rebase(visible.true, _.pluck(stack, 'graph'), false);
27057                                     tree.rebase(visible.true, false);
27058                                 }
27059
27060                                 // fetch older versions of nodes that were deleted..
27061                                 _.each(visible.false, function(entity) {
27062                                     context.connection()
27063                                         .loadEntityVersion(entity.id, +entity.version - 1, childNodesLoaded);
27064                                 });
27065                             };
27066
27067                             context.connection().loadMultiple(missing, childNodesLoaded);
27068                         }
27069                     }
27070                 }
27071
27072                 stack = h.stack.map(function(d) {
27073                     var entities = {}, entity;
27074
27075                     if (d.modified) {
27076                         d.modified.forEach(function(key) {
27077                             entity = allEntities[key];
27078                             entities[entity.id] = entity;
27079                         });
27080                     }
27081
27082                     if (d.deleted) {
27083                         d.deleted.forEach(function(id) {
27084                             entities[id] = undefined;
27085                         });
27086                     }
27087
27088                     return {
27089                         graph: iD.Graph(stack[0].graph).load(entities),
27090                         annotation: d.annotation,
27091                         imageryUsed: d.imageryUsed
27092                     };
27093                 });
27094             } else { // original version
27095                 stack = h.stack.map(function(d) {
27096                     var entities = {};
27097
27098                     for (var i in d.entities) {
27099                         var entity = d.entities[i];
27100                         entities[i] = entity === 'undefined' ? undefined : iD.Entity(entity);
27101                     }
27102
27103                     d.graph = iD.Graph(stack[0].graph).load(entities);
27104                     return d;
27105                 });
27106             }
27107
27108             dispatch.change();
27109
27110             return history;
27111         },
27112
27113         save: function() {
27114             if (lock.locked()) context.storage(getKey('saved_history'), history.toJSON() || null);
27115             return history;
27116         },
27117
27118         clearSaved: function() {
27119             if (lock.locked()) context.storage(getKey('saved_history'), null);
27120             return history;
27121         },
27122
27123         lock: function() {
27124             return lock.lock();
27125         },
27126
27127         unlock: function() {
27128             lock.unlock();
27129         },
27130
27131         // is iD not open in another window and it detects that
27132         // there's a history stored in localStorage that's recoverable?
27133         restorableChanges: function() {
27134             return lock.locked() && !!context.storage(getKey('saved_history'));
27135         },
27136
27137         // load history from a version stored in localStorage
27138         restore: function() {
27139             if (!lock.locked()) return;
27140
27141             var json = context.storage(getKey('saved_history'));
27142             if (json) history.fromJSON(json, true);
27143         },
27144
27145         _getKey: getKey
27146
27147     };
27148
27149     history.reset();
27150
27151     return d3.rebind(history, dispatch, 'on');
27152 };
27153 iD.Node = iD.Entity.node = function iD_Node() {
27154     if (!(this instanceof iD_Node)) {
27155         return (new iD_Node()).initialize(arguments);
27156     } else if (arguments.length) {
27157         this.initialize(arguments);
27158     }
27159 };
27160
27161 iD.Node.prototype = Object.create(iD.Entity.prototype);
27162
27163 _.extend(iD.Node.prototype, {
27164     type: 'node',
27165
27166     extent: function() {
27167         return new iD.geo.Extent(this.loc);
27168     },
27169
27170     geometry: function(graph) {
27171         return graph.transient(this, 'geometry', function() {
27172             return graph.isPoi(this) ? 'point' : 'vertex';
27173         });
27174     },
27175
27176     move: function(loc) {
27177         return this.update({loc: loc});
27178     },
27179
27180     isIntersection: function(resolver) {
27181         return resolver.transient(this, 'isIntersection', function() {
27182             return resolver.parentWays(this).filter(function(parent) {
27183                 return (parent.tags.highway ||
27184                     parent.tags.waterway ||
27185                     parent.tags.railway ||
27186                     parent.tags.aeroway) &&
27187                     parent.geometry(resolver) === 'line';
27188             }).length > 1;
27189         });
27190     },
27191
27192     isHighwayIntersection: function(resolver) {
27193         return resolver.transient(this, 'isHighwayIntersection', function() {
27194             return resolver.parentWays(this).filter(function(parent) {
27195                 return parent.tags.highway && parent.geometry(resolver) === 'line';
27196             }).length > 1;
27197         });
27198     },
27199
27200     asJXON: function(changeset_id) {
27201         var r = {
27202             node: {
27203                 '@id': this.osmId(),
27204                 '@lon': this.loc[0],
27205                 '@lat': this.loc[1],
27206                 '@version': (this.version || 0),
27207                 tag: _.map(this.tags, function(v, k) {
27208                     return { keyAttributes: { k: k, v: v } };
27209                 })
27210             }
27211         };
27212         if (changeset_id) r.node['@changeset'] = changeset_id;
27213         return r;
27214     },
27215
27216     asGeoJSON: function() {
27217         return {
27218             type: 'Point',
27219             coordinates: this.loc
27220         };
27221     }
27222 });
27223 iD.Relation = iD.Entity.relation = function iD_Relation() {
27224     if (!(this instanceof iD_Relation)) {
27225         return (new iD_Relation()).initialize(arguments);
27226     } else if (arguments.length) {
27227         this.initialize(arguments);
27228     }
27229 };
27230
27231 iD.Relation.prototype = Object.create(iD.Entity.prototype);
27232
27233 iD.Relation.creationOrder = function(a, b) {
27234     var aId = parseInt(iD.Entity.id.toOSM(a.id), 10);
27235     var bId = parseInt(iD.Entity.id.toOSM(b.id), 10);
27236
27237     if (aId < 0 || bId < 0) return aId - bId;
27238     return bId - aId;
27239 };
27240
27241 _.extend(iD.Relation.prototype, {
27242     type: 'relation',
27243     members: [],
27244
27245     copy: function(deep, resolver, replacements) {
27246         var copy = iD.Entity.prototype.copy.call(this);
27247         if (!deep || !resolver || !this.isComplete(resolver)) {
27248             return copy;
27249         }
27250
27251         var members = [],
27252             i, oldmember, oldid, newid, children;
27253
27254         replacements = replacements || {};
27255         replacements[this.id] = copy[0].id;
27256
27257         for (i = 0; i < this.members.length; i++) {
27258             oldmember = this.members[i];
27259             oldid = oldmember.id;
27260             newid = replacements[oldid];
27261             if (!newid) {
27262                 children = resolver.entity(oldid).copy(true, resolver, replacements);
27263                 newid = replacements[oldid] = children[0].id;
27264                 copy = copy.concat(children);
27265             }
27266             members.push({id: newid, type: oldmember.type, role: oldmember.role});
27267         }
27268
27269         copy[0] = copy[0].update({members: members});
27270         return copy;
27271     },
27272
27273     extent: function(resolver, memo) {
27274         return resolver.transient(this, 'extent', function() {
27275             if (memo && memo[this.id]) return iD.geo.Extent();
27276             memo = memo || {};
27277             memo[this.id] = true;
27278
27279             var extent = iD.geo.Extent();
27280             for (var i = 0; i < this.members.length; i++) {
27281                 var member = resolver.hasEntity(this.members[i].id);
27282                 if (member) {
27283                     extent._extend(member.extent(resolver, memo));
27284                 }
27285             }
27286             return extent;
27287         });
27288     },
27289
27290     geometry: function(graph) {
27291         return graph.transient(this, 'geometry', function() {
27292             return this.isMultipolygon() ? 'area' : 'relation';
27293         });
27294     },
27295
27296     isDegenerate: function() {
27297         return this.members.length === 0;
27298     },
27299
27300     // Return an array of members, each extended with an 'index' property whose value
27301     // is the member index.
27302     indexedMembers: function() {
27303         var result = new Array(this.members.length);
27304         for (var i = 0; i < this.members.length; i++) {
27305             result[i] = _.extend({}, this.members[i], {index: i});
27306         }
27307         return result;
27308     },
27309
27310     // Return the first member with the given role. A copy of the member object
27311     // is returned, extended with an 'index' property whose value is the member index.
27312     memberByRole: function(role) {
27313         for (var i = 0; i < this.members.length; i++) {
27314             if (this.members[i].role === role) {
27315                 return _.extend({}, this.members[i], {index: i});
27316             }
27317         }
27318     },
27319
27320     // Return the first member with the given id. A copy of the member object
27321     // is returned, extended with an 'index' property whose value is the member index.
27322     memberById: function(id) {
27323         for (var i = 0; i < this.members.length; i++) {
27324             if (this.members[i].id === id) {
27325                 return _.extend({}, this.members[i], {index: i});
27326             }
27327         }
27328     },
27329
27330     // Return the first member with the given id and role. A copy of the member object
27331     // is returned, extended with an 'index' property whose value is the member index.
27332     memberByIdAndRole: function(id, role) {
27333         for (var i = 0; i < this.members.length; i++) {
27334             if (this.members[i].id === id && this.members[i].role === role) {
27335                 return _.extend({}, this.members[i], {index: i});
27336             }
27337         }
27338     },
27339
27340     addMember: function(member, index) {
27341         var members = this.members.slice();
27342         members.splice(index === undefined ? members.length : index, 0, member);
27343         return this.update({members: members});
27344     },
27345
27346     updateMember: function(member, index) {
27347         var members = this.members.slice();
27348         members.splice(index, 1, _.extend({}, members[index], member));
27349         return this.update({members: members});
27350     },
27351
27352     removeMember: function(index) {
27353         var members = this.members.slice();
27354         members.splice(index, 1);
27355         return this.update({members: members});
27356     },
27357
27358     removeMembersWithID: function(id) {
27359         var members = _.reject(this.members, function(m) { return m.id === id; });
27360         return this.update({members: members});
27361     },
27362
27363     // Wherever a member appears with id `needle.id`, replace it with a member
27364     // with id `replacement.id`, type `replacement.type`, and the original role,
27365     // unless a member already exists with that id and role. Return an updated
27366     // relation.
27367     replaceMember: function(needle, replacement) {
27368         if (!this.memberById(needle.id))
27369             return this;
27370
27371         var members = [];
27372
27373         for (var i = 0; i < this.members.length; i++) {
27374             var member = this.members[i];
27375             if (member.id !== needle.id) {
27376                 members.push(member);
27377             } else if (!this.memberByIdAndRole(replacement.id, member.role)) {
27378                 members.push({id: replacement.id, type: replacement.type, role: member.role});
27379             }
27380         }
27381
27382         return this.update({members: members});
27383     },
27384
27385     asJXON: function(changeset_id) {
27386         var r = {
27387             relation: {
27388                 '@id': this.osmId(),
27389                 '@version': this.version || 0,
27390                 member: _.map(this.members, function(member) {
27391                     return { keyAttributes: { type: member.type, role: member.role, ref: iD.Entity.id.toOSM(member.id) } };
27392                 }),
27393                 tag: _.map(this.tags, function(v, k) {
27394                     return { keyAttributes: { k: k, v: v } };
27395                 })
27396             }
27397         };
27398         if (changeset_id) r.relation['@changeset'] = changeset_id;
27399         return r;
27400     },
27401
27402     asGeoJSON: function(resolver) {
27403         return resolver.transient(this, 'GeoJSON', function () {
27404             if (this.isMultipolygon()) {
27405                 return {
27406                     type: 'MultiPolygon',
27407                     coordinates: this.multipolygon(resolver)
27408                 };
27409             } else {
27410                 return {
27411                     type: 'FeatureCollection',
27412                     properties: this.tags,
27413                     features: this.members.map(function (member) {
27414                         return _.extend({role: member.role}, resolver.entity(member.id).asGeoJSON(resolver));
27415                     })
27416                 };
27417             }
27418         });
27419     },
27420
27421     area: function(resolver) {
27422         return resolver.transient(this, 'area', function() {
27423             return d3.geo.area(this.asGeoJSON(resolver));
27424         });
27425     },
27426
27427     isMultipolygon: function() {
27428         return this.tags.type === 'multipolygon';
27429     },
27430
27431     isComplete: function(resolver) {
27432         for (var i = 0; i < this.members.length; i++) {
27433             if (!resolver.hasEntity(this.members[i].id)) {
27434                 return false;
27435             }
27436         }
27437         return true;
27438     },
27439
27440     isRestriction: function() {
27441         return !!(this.tags.type && this.tags.type.match(/^restriction:?/));
27442     },
27443
27444     // Returns an array [A0, ... An], each Ai being an array of node arrays [Nds0, ... Ndsm],
27445     // where Nds0 is an outer ring and subsequent Ndsi's (if any i > 0) being inner rings.
27446     //
27447     // This corresponds to the structure needed for rendering a multipolygon path using a
27448     // `evenodd` fill rule, as well as the structure of a GeoJSON MultiPolygon geometry.
27449     //
27450     // In the case of invalid geometries, this function will still return a result which
27451     // includes the nodes of all way members, but some Nds may be unclosed and some inner
27452     // rings not matched with the intended outer ring.
27453     //
27454     multipolygon: function(resolver) {
27455         var outers = this.members.filter(function(m) { return 'outer' === (m.role || 'outer'); }),
27456             inners = this.members.filter(function(m) { return 'inner' === m.role; });
27457
27458         outers = iD.geo.joinWays(outers, resolver);
27459         inners = iD.geo.joinWays(inners, resolver);
27460
27461         outers = outers.map(function(outer) { return _.pluck(outer.nodes, 'loc'); });
27462         inners = inners.map(function(inner) { return _.pluck(inner.nodes, 'loc'); });
27463
27464         var result = outers.map(function(o) {
27465             // Heuristic for detecting counterclockwise winding order. Assumes
27466             // that OpenStreetMap polygons are not hemisphere-spanning.
27467             return [d3.geo.area({type: 'Polygon', coordinates: [o]}) > 2 * Math.PI ? o.reverse() : o];
27468         });
27469
27470         function findOuter(inner) {
27471             var o, outer;
27472
27473             for (o = 0; o < outers.length; o++) {
27474                 outer = outers[o];
27475                 if (iD.geo.polygonContainsPolygon(outer, inner))
27476                     return o;
27477             }
27478
27479             for (o = 0; o < outers.length; o++) {
27480                 outer = outers[o];
27481                 if (iD.geo.polygonIntersectsPolygon(outer, inner))
27482                     return o;
27483             }
27484         }
27485
27486         for (var i = 0; i < inners.length; i++) {
27487             var inner = inners[i];
27488
27489             if (d3.geo.area({type: 'Polygon', coordinates: [inner]}) < 2 * Math.PI) {
27490                 inner = inner.reverse();
27491             }
27492
27493             var o = findOuter(inners[i]);
27494             if (o !== undefined)
27495                 result[o].push(inners[i]);
27496             else
27497                 result.push([inners[i]]); // Invalid geometry
27498         }
27499
27500         return result;
27501     }
27502 });
27503 iD.oneWayTags = {
27504     'aerialway': {
27505         'chair_lift': true,
27506         'mixed_lift': true,
27507         't-bar': true,
27508         'j-bar': true,
27509         'platter': true,
27510         'rope_tow': true,
27511         'magic_carpet': true,
27512         'yes': true
27513     },
27514     'highway': {
27515         'motorway': true,
27516         'motorway_link': true
27517     },
27518     'junction': {
27519         'roundabout': true
27520     },
27521     'man_made': {
27522         'piste:halfpipe': true
27523     },
27524     'piste:type': {
27525         'downhill': true,
27526         'sled': true,
27527         'yes': true
27528     },
27529     'waterway': {
27530         'river': true,
27531         'stream': true
27532     }
27533 };
27534
27535 iD.pavedTags = {
27536     'surface': {
27537         'paved': true,
27538         'asphalt': true,
27539         'concrete': true
27540     },
27541     'tracktype': {
27542         'grade1': true
27543     }
27544 };
27545
27546 iD.interestingTag = function (key) {
27547     return key !== 'attribution' &&
27548         key !== 'created_by' &&
27549         key !== 'source' &&
27550         key !== 'odbl' &&
27551         key.indexOf('tiger:') !== 0;
27552
27553 };
27554 iD.Tree = function(head) {
27555     var rtree = rbush(),
27556         rectangles = {};
27557
27558     function extentRectangle(extent) {
27559         return [
27560             extent[0][0],
27561             extent[0][1],
27562             extent[1][0],
27563             extent[1][1]
27564         ];
27565     }
27566
27567     function entityRectangle(entity) {
27568         var rect = extentRectangle(entity.extent(head));
27569         rect.id = entity.id;
27570         rectangles[entity.id] = rect;
27571         return rect;
27572     }
27573
27574     function updateParents(entity, insertions, memo) {
27575         head.parentWays(entity).forEach(function(parent) {
27576             if (rectangles[parent.id]) {
27577                 rtree.remove(rectangles[parent.id]);
27578                 insertions[parent.id] = parent;
27579             }
27580         });
27581
27582         head.parentRelations(entity).forEach(function(parent) {
27583             if (memo[entity.id]) return;
27584             memo[entity.id] = true;
27585             if (rectangles[parent.id]) {
27586                 rtree.remove(rectangles[parent.id]);
27587                 insertions[parent.id] = parent;
27588             }
27589             updateParents(parent, insertions, memo);
27590         });
27591     }
27592
27593     var tree = {};
27594
27595     tree.rebase = function(entities, force) {
27596         var insertions = {};
27597
27598         for (var i = 0; i < entities.length; i++) {
27599             var entity = entities[i];
27600
27601             if (!entity.visible)
27602                 continue;
27603
27604             if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) {
27605                 if (!force) {
27606                     continue;
27607                 } else if (rectangles[entity.id]) {
27608                     rtree.remove(rectangles[entity.id]);
27609                 }
27610             }
27611
27612             insertions[entity.id] = entity;
27613             updateParents(entity, insertions, {});
27614         }
27615
27616         rtree.load(_.map(insertions, entityRectangle));
27617
27618         return tree;
27619     };
27620
27621     tree.intersects = function(extent, graph) {
27622         if (graph !== head) {
27623             var diff = iD.Difference(head, graph),
27624                 insertions = {};
27625
27626             head = graph;
27627
27628             diff.deleted().forEach(function(entity) {
27629                 rtree.remove(rectangles[entity.id]);
27630                 delete rectangles[entity.id];
27631             });
27632
27633             diff.modified().forEach(function(entity) {
27634                 rtree.remove(rectangles[entity.id]);
27635                 insertions[entity.id] = entity;
27636                 updateParents(entity, insertions, {});
27637             });
27638
27639             diff.created().forEach(function(entity) {
27640                 insertions[entity.id] = entity;
27641             });
27642
27643             rtree.load(_.map(insertions, entityRectangle));
27644         }
27645
27646         return rtree.search(extentRectangle(extent)).map(function(rect) {
27647             return head.entity(rect.id);
27648         });
27649     };
27650
27651     return tree;
27652 };
27653 iD.Way = iD.Entity.way = function iD_Way() {
27654     if (!(this instanceof iD_Way)) {
27655         return (new iD_Way()).initialize(arguments);
27656     } else if (arguments.length) {
27657         this.initialize(arguments);
27658     }
27659 };
27660
27661 iD.Way.prototype = Object.create(iD.Entity.prototype);
27662
27663 _.extend(iD.Way.prototype, {
27664     type: 'way',
27665     nodes: [],
27666
27667     copy: function(deep, resolver) {
27668         var copy = iD.Entity.prototype.copy.call(this);
27669
27670         if (!deep || !resolver) {
27671             return copy;
27672         }
27673
27674         var nodes = [],
27675             replacements = {},
27676             i, oldid, newid, child;
27677
27678         for (i = 0; i < this.nodes.length; i++) {
27679             oldid = this.nodes[i];
27680             newid = replacements[oldid];
27681             if (!newid) {
27682                 child = resolver.entity(oldid).copy();
27683                 newid = replacements[oldid] = child[0].id;
27684                 copy = copy.concat(child);
27685             }
27686             nodes.push(newid);
27687         }
27688
27689         copy[0] = copy[0].update({nodes: nodes});
27690         return copy;
27691     },
27692
27693     extent: function(resolver) {
27694         return resolver.transient(this, 'extent', function() {
27695             var extent = iD.geo.Extent();
27696             for (var i = 0; i < this.nodes.length; i++) {
27697                 var node = resolver.hasEntity(this.nodes[i]);
27698                 if (node) {
27699                     extent._extend(node.extent());
27700                 }
27701             }
27702             return extent;
27703         });
27704     },
27705
27706     first: function() {
27707         return this.nodes[0];
27708     },
27709
27710     last: function() {
27711         return this.nodes[this.nodes.length - 1];
27712     },
27713
27714     contains: function(node) {
27715         return this.nodes.indexOf(node) >= 0;
27716     },
27717
27718     affix: function(node) {
27719         if (this.nodes[0] === node) return 'prefix';
27720         if (this.nodes[this.nodes.length - 1] === node) return 'suffix';
27721     },
27722
27723     layer: function() {
27724         // explicit layer tag, clamp between -10, 10..
27725         if (this.tags.layer !== undefined) {
27726             return Math.max(-10, Math.min(+(this.tags.layer), 10));
27727         }
27728
27729         // implied layer tag..
27730         if (this.tags.location === 'overground') return 1;
27731         if (this.tags.location === 'underground') return -1;
27732         if (this.tags.location === 'underwater') return -10;
27733
27734         if (this.tags.power === 'line') return 10;
27735         if (this.tags.power === 'minor_line') return 10;
27736         if (this.tags.aerialway) return 10;
27737         if (this.tags.bridge) return 1;
27738         if (this.tags.cutting) return -1;
27739         if (this.tags.tunnel) return -1;
27740         if (this.tags.waterway) return -1;
27741         if (this.tags.man_made === 'pipeline') return -10;
27742         if (this.tags.boundary) return -10;
27743         return 0;
27744     },
27745
27746     isOneWay: function() {
27747         // explicit oneway tag..
27748         if (['yes', '1', '-1'].indexOf(this.tags.oneway) !== -1) { return true; }
27749         if (['no', '0'].indexOf(this.tags.oneway) !== -1) { return false; }
27750
27751         // implied oneway tag..
27752         for (var key in this.tags) {
27753             if (key in iD.oneWayTags && (this.tags[key] in iD.oneWayTags[key]))
27754                 return true;
27755         }
27756         return false;
27757     },
27758
27759     isClosed: function() {
27760         return this.nodes.length > 0 && this.first() === this.last();
27761     },
27762
27763     isConvex: function(resolver) {
27764         if (!this.isClosed() || this.isDegenerate()) return null;
27765
27766         var nodes = _.uniq(resolver.childNodes(this)),
27767             coords = _.pluck(nodes, 'loc'),
27768             curr = 0, prev = 0;
27769
27770         for (var i = 0; i < coords.length; i++) {
27771             var o = coords[(i+1) % coords.length],
27772                 a = coords[i],
27773                 b = coords[(i+2) % coords.length],
27774                 res = iD.geo.cross(o, a, b);
27775
27776             curr = (res > 0) ? 1 : (res < 0) ? -1 : 0;
27777             if (curr === 0) {
27778                 continue;
27779             } else if (prev && curr !== prev) {
27780                 return false;
27781             }
27782             prev = curr;
27783         }
27784         return true;
27785     },
27786
27787     isArea: function() {
27788         if (this.tags.area === 'yes')
27789             return true;
27790         if (!this.isClosed() || this.tags.area === 'no')
27791             return false;
27792         for (var key in this.tags)
27793             if (key in iD.areaKeys && !(this.tags[key] in iD.areaKeys[key]))
27794                 return true;
27795         return false;
27796     },
27797
27798     isDegenerate: function() {
27799         return _.uniq(this.nodes).length < (this.isArea() ? 3 : 2);
27800     },
27801
27802     areAdjacent: function(n1, n2) {
27803         for (var i = 0; i < this.nodes.length; i++) {
27804             if (this.nodes[i] === n1) {
27805                 if (this.nodes[i - 1] === n2) return true;
27806                 if (this.nodes[i + 1] === n2) return true;
27807             }
27808         }
27809         return false;
27810     },
27811
27812     geometry: function(graph) {
27813         return graph.transient(this, 'geometry', function() {
27814             return this.isArea() ? 'area' : 'line';
27815         });
27816     },
27817
27818     addNode: function(id, index) {
27819         var nodes = this.nodes.slice();
27820         nodes.splice(index === undefined ? nodes.length : index, 0, id);
27821         return this.update({nodes: nodes});
27822     },
27823
27824     updateNode: function(id, index) {
27825         var nodes = this.nodes.slice();
27826         nodes.splice(index, 1, id);
27827         return this.update({nodes: nodes});
27828     },
27829
27830     replaceNode: function(needle, replacement) {
27831         if (this.nodes.indexOf(needle) < 0)
27832             return this;
27833
27834         var nodes = this.nodes.slice();
27835         for (var i = 0; i < nodes.length; i++) {
27836             if (nodes[i] === needle) {
27837                 nodes[i] = replacement;
27838             }
27839         }
27840         return this.update({nodes: nodes});
27841     },
27842
27843     removeNode: function(id) {
27844         var nodes = [];
27845
27846         for (var i = 0; i < this.nodes.length; i++) {
27847             var node = this.nodes[i];
27848             if (node !== id && nodes[nodes.length - 1] !== node) {
27849                 nodes.push(node);
27850             }
27851         }
27852
27853         // Preserve circularity
27854         if (this.nodes.length > 1 && this.first() === id && this.last() === id && nodes[nodes.length - 1] !== nodes[0]) {
27855             nodes.push(nodes[0]);
27856         }
27857
27858         return this.update({nodes: nodes});
27859     },
27860
27861     asJXON: function(changeset_id) {
27862         var r = {
27863             way: {
27864                 '@id': this.osmId(),
27865                 '@version': this.version || 0,
27866                 nd: _.map(this.nodes, function(id) {
27867                     return { keyAttributes: { ref: iD.Entity.id.toOSM(id) } };
27868                 }),
27869                 tag: _.map(this.tags, function(v, k) {
27870                     return { keyAttributes: { k: k, v: v } };
27871                 })
27872             }
27873         };
27874         if (changeset_id) r.way['@changeset'] = changeset_id;
27875         return r;
27876     },
27877
27878     asGeoJSON: function(resolver) {
27879         return resolver.transient(this, 'GeoJSON', function() {
27880             var coordinates = _.pluck(resolver.childNodes(this), 'loc');
27881             if (this.isArea() && this.isClosed()) {
27882                 return {
27883                     type: 'Polygon',
27884                     coordinates: [coordinates]
27885                 };
27886             } else {
27887                 return {
27888                     type: 'LineString',
27889                     coordinates: coordinates
27890                 };
27891             }
27892         });
27893     },
27894
27895     area: function(resolver) {
27896         return resolver.transient(this, 'area', function() {
27897             var nodes = resolver.childNodes(this);
27898
27899             var json = {
27900                 type: 'Polygon',
27901                 coordinates: [_.pluck(nodes, 'loc')]
27902             };
27903
27904             if (!this.isClosed() && nodes.length) {
27905                 json.coordinates[0].push(nodes[0].loc);
27906             }
27907
27908             var area = d3.geo.area(json);
27909
27910             // Heuristic for detecting counterclockwise winding order. Assumes
27911             // that OpenStreetMap polygons are not hemisphere-spanning.
27912             if (area > 2 * Math.PI) {
27913                 json.coordinates[0] = json.coordinates[0].reverse();
27914                 area = d3.geo.area(json);
27915             }
27916
27917             return isNaN(area) ? 0 : area;
27918         });
27919     }
27920 });
27921 iD.Background = function(context) {
27922     var dispatch = d3.dispatch('change'),
27923         baseLayer = iD.TileLayer()
27924             .projection(context.projection),
27925         gpxLayer = iD.GpxLayer(context, dispatch)
27926             .projection(context.projection),
27927         mapillaryLayer = iD.MapillaryLayer(context),
27928         overlayLayers = [];
27929
27930     var backgroundSources;
27931
27932     function findSource(id) {
27933         return _.find(backgroundSources, function(d) {
27934             return d.id && d.id === id;
27935         });
27936     }
27937
27938     function updateImagery() {
27939         var b = background.baseLayerSource(),
27940             o = overlayLayers.map(function (d) { return d.source().id; }).join(','),
27941             q = iD.util.stringQs(location.hash.substring(1));
27942
27943         var id = b.id;
27944         if (id === 'custom') {
27945             id = 'custom:' + b.template;
27946         }
27947
27948         if (id) {
27949             q.background = id;
27950         } else {
27951             delete q.background;
27952         }
27953
27954         if (o) {
27955             q.overlays = o;
27956         } else {
27957             delete q.overlays;
27958         }
27959
27960         location.replace('#' + iD.util.qsString(q, true));
27961
27962         var imageryUsed = [b.imageryUsed()];
27963
27964         overlayLayers.forEach(function (d) {
27965             var source = d.source();
27966             if (!source.isLocatorOverlay()) {
27967                 imageryUsed.push(source.imageryUsed());
27968             }
27969         });
27970
27971         if (background.showsGpxLayer()) {
27972             imageryUsed.push('Local GPX');
27973         }
27974
27975         context.history().imageryUsed(imageryUsed);
27976     }
27977
27978     function background(selection) {
27979         var base = selection.selectAll('.background-layer')
27980             .data([0]);
27981
27982         base.enter().insert('div', '.layer-data')
27983             .attr('class', 'layer-layer background-layer');
27984
27985         base.call(baseLayer);
27986
27987         var overlays = selection.selectAll('.layer-overlay')
27988             .data(overlayLayers, function(d) { return d.source().name(); });
27989
27990         overlays.enter().insert('div', '.layer-data')
27991             .attr('class', 'layer-layer layer-overlay');
27992
27993         overlays.each(function(layer) {
27994             d3.select(this).call(layer);
27995         });
27996
27997         overlays.exit()
27998             .remove();
27999
28000         var gpx = selection.selectAll('.layer-gpx')
28001             .data([0]);
28002
28003         gpx.enter().insert('div')
28004             .attr('class', 'layer-layer layer-gpx');
28005
28006         gpx.call(gpxLayer);
28007
28008         var mapillary = selection.selectAll('.layer-mapillary')
28009             .data([0]);
28010
28011         mapillary.enter().insert('div')
28012             .attr('class', 'layer-layer layer-mapillary');
28013
28014         mapillary.call(mapillaryLayer);
28015     }
28016
28017     background.sources = function(extent) {
28018         return backgroundSources.filter(function(source) {
28019             return source.intersects(extent);
28020         });
28021     };
28022
28023     background.dimensions = function(_) {
28024         baseLayer.dimensions(_);
28025         gpxLayer.dimensions(_);
28026         mapillaryLayer.dimensions(_);
28027
28028         overlayLayers.forEach(function(layer) {
28029             layer.dimensions(_);
28030         });
28031     };
28032
28033     background.baseLayerSource = function(d) {
28034         if (!arguments.length) return baseLayer.source();
28035
28036         baseLayer.source(d);
28037         dispatch.change();
28038         updateImagery();
28039
28040         return background;
28041     };
28042
28043     background.bing = function() {
28044         background.baseLayerSource(findSource('Bing'));
28045     };
28046
28047     background.hasGpxLayer = function() {
28048         return !_.isEmpty(gpxLayer.geojson());
28049     };
28050
28051     background.showsGpxLayer = function() {
28052         return background.hasGpxLayer() && gpxLayer.enable();
28053     };
28054
28055     function toDom(x) {
28056         return (new DOMParser()).parseFromString(x, 'text/xml');
28057     }
28058
28059     background.gpxLayerFiles = function(fileList) {
28060         var f = fileList[0],
28061             reader = new FileReader();
28062
28063         reader.onload = function(e) {
28064             gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
28065             iD.ui.MapInMap.gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
28066             background.zoomToGpxLayer();
28067             dispatch.change();
28068         };
28069
28070         reader.readAsText(f);
28071     };
28072
28073     background.zoomToGpxLayer = function() {
28074         if (background.hasGpxLayer()) {
28075             var map = context.map(),
28076                 viewport = map.trimmedExtent().polygon(),
28077                 coords = _.reduce(gpxLayer.geojson().features, function(coords, feature) {
28078                     var c = feature.geometry.coordinates;
28079                     return _.union(coords, feature.geometry.type === 'Point' ? [c] : c);
28080                 }, []);
28081
28082             if (!iD.geo.polygonIntersectsPolygon(viewport, coords, true)) {
28083                 var extent = iD.geo.Extent(d3.geo.bounds(gpxLayer.geojson()));
28084                 map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
28085             }
28086         }
28087     };
28088
28089     background.toggleGpxLayer = function() {
28090         gpxLayer.enable(!gpxLayer.enable());
28091         iD.ui.MapInMap.gpxLayer.enable(!iD.ui.MapInMap.gpxLayer.enable());
28092         dispatch.change();
28093     };
28094
28095     background.showsMapillaryLayer = function() {
28096         return mapillaryLayer.enable();
28097     };
28098
28099     background.toggleMapillaryLayer = function() {
28100         mapillaryLayer.enable(!mapillaryLayer.enable());
28101         dispatch.change();
28102     };
28103
28104     background.showsLayer = function(d) {
28105         return d === baseLayer.source() ||
28106             (d.id === 'custom' && baseLayer.source().id === 'custom') ||
28107             overlayLayers.some(function(l) { return l.source() === d; });
28108     };
28109
28110     background.overlayLayerSources = function() {
28111         return overlayLayers.map(function (l) { return l.source(); });
28112     };
28113
28114     background.toggleOverlayLayer = function(d) {
28115         var layer;
28116
28117         for (var i = 0; i < overlayLayers.length; i++) {
28118             layer = overlayLayers[i];
28119             if (layer.source() === d) {
28120                 overlayLayers.splice(i, 1);
28121                 dispatch.change();
28122                 updateImagery();
28123                 return;
28124             }
28125         }
28126
28127         layer = iD.TileLayer()
28128             .source(d)
28129             .projection(context.projection)
28130             .dimensions(baseLayer.dimensions());
28131
28132         overlayLayers.push(layer);
28133         dispatch.change();
28134         updateImagery();
28135     };
28136
28137     background.nudge = function(d, zoom) {
28138         baseLayer.source().nudge(d, zoom);
28139         dispatch.change();
28140         return background;
28141     };
28142
28143     background.offset = function(d) {
28144         if (!arguments.length) return baseLayer.source().offset();
28145         baseLayer.source().offset(d);
28146         dispatch.change();
28147         return background;
28148     };
28149
28150     background.load = function(imagery) {
28151         function parseMap(qmap) {
28152             if (!qmap) return false;
28153             var args = qmap.split('/').map(Number);
28154             if (args.length < 3 || args.some(isNaN)) return false;
28155             return iD.geo.Extent([args[1], args[2]]);
28156         }
28157
28158         var q = iD.util.stringQs(location.hash.substring(1)),
28159             chosen = q.background || q.layer,
28160             extent = parseMap(q.map),
28161             best;
28162
28163         backgroundSources = imagery.map(function(source) {
28164             if (source.type === 'bing') {
28165                 return iD.BackgroundSource.Bing(source, dispatch);
28166             } else {
28167                 return iD.BackgroundSource(source);
28168             }
28169         });
28170
28171         backgroundSources.unshift(iD.BackgroundSource.None());
28172
28173         if (!chosen && extent) {
28174             best = _.find(this.sources(extent), function(s) { return s.best(); });
28175         }
28176
28177         if (chosen && chosen.indexOf('custom:') === 0) {
28178             background.baseLayerSource(iD.BackgroundSource.Custom(chosen.replace(/^custom:/, '')));
28179         } else {
28180             background.baseLayerSource(findSource(chosen) || best || findSource('Bing') || backgroundSources[1]);
28181         }
28182
28183         var locator = _.find(backgroundSources, function(d) {
28184             return d.overlay && d.default;
28185         });
28186
28187         if (locator) {
28188             background.toggleOverlayLayer(locator);
28189         }
28190
28191         var overlays = (q.overlays || '').split(',');
28192         overlays.forEach(function(overlay) {
28193             overlay = findSource(overlay);
28194             if (overlay) background.toggleOverlayLayer(overlay);
28195         });
28196
28197         var gpx = q.gpx;
28198         if (gpx) {
28199             d3.text(gpx, function(err, gpxTxt) {
28200                 if (!err) {
28201                     gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28202                     iD.ui.MapInMap.gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28203                     dispatch.change();
28204                 }
28205             });
28206         }
28207     };
28208
28209     return d3.rebind(background, dispatch, 'on');
28210 };
28211 iD.BackgroundSource = function(data) {
28212     var source = _.clone(data),
28213         offset = [0, 0],
28214         name = source.name,
28215         best = !!source.best;
28216
28217     source.scaleExtent = data.scaleExtent || [0, 20];
28218     source.overzoom = data.overzoom !== false;
28219
28220     source.offset = function(_) {
28221         if (!arguments.length) return offset;
28222         offset = _;
28223         return source;
28224     };
28225
28226     source.nudge = function(_, zoomlevel) {
28227         offset[0] += _[0] / Math.pow(2, zoomlevel);
28228         offset[1] += _[1] / Math.pow(2, zoomlevel);
28229         return source;
28230     };
28231
28232     source.name = function() {
28233         return name;
28234     };
28235
28236     source.best = function() {
28237         return best;
28238     };
28239
28240     source.imageryUsed = function() {
28241         return source.id || name;
28242     };
28243
28244     source.url = function(coord) {
28245         return data.template
28246             .replace('{x}', coord[0])
28247             .replace('{y}', coord[1])
28248             // TMS-flipped y coordinate
28249             .replace(/\{[t-]y\}/, Math.pow(2, coord[2]) - coord[1] - 1)
28250             .replace(/\{z(oom)?\}/, coord[2])
28251             .replace(/\{switch:([^}]+)\}/, function(s, r) {
28252                 var subdomains = r.split(',');
28253                 return subdomains[(coord[0] + coord[1]) % subdomains.length];
28254             })
28255             .replace('{u}', function() {
28256                 var u = '';
28257                 for (var zoom = coord[2]; zoom > 0; zoom--) {
28258                     var b = 0;
28259                     var mask = 1 << (zoom - 1);
28260                     if ((coord[0] & mask) !== 0) b++;
28261                     if ((coord[1] & mask) !== 0) b += 2;
28262                     u += b.toString();
28263                 }
28264                 return u;
28265             });
28266     };
28267
28268     source.intersects = function(extent) {
28269         extent = extent.polygon();
28270         return !data.polygon || data.polygon.some(function(polygon) {
28271             return iD.geo.polygonIntersectsPolygon(polygon, extent, true);
28272         });
28273     };
28274
28275     source.validZoom = function(z) {
28276         return source.scaleExtent[0] <= z &&
28277             (source.overzoom || source.scaleExtent[1] > z);
28278     };
28279
28280     source.isLocatorOverlay = function() {
28281         return name === 'Locator Overlay';
28282     };
28283
28284     source.copyrightNotices = function() {};
28285
28286     return source;
28287 };
28288
28289 iD.BackgroundSource.Bing = function(data, dispatch) {
28290     // http://msdn.microsoft.com/en-us/library/ff701716.aspx
28291     // http://msdn.microsoft.com/en-us/library/ff701701.aspx
28292
28293     data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z';
28294
28295     var bing = iD.BackgroundSource(data),
28296         key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU', // Same as P2 and JOSM
28297         url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' +
28298             key + '&jsonp={callback}',
28299         providers = [];
28300
28301     d3.jsonp(url, function(json) {
28302         providers = json.resourceSets[0].resources[0].imageryProviders.map(function(provider) {
28303             return {
28304                 attribution: provider.attribution,
28305                 areas: provider.coverageAreas.map(function(area) {
28306                     return {
28307                         zoom: [area.zoomMin, area.zoomMax],
28308                         extent: iD.geo.Extent([area.bbox[1], area.bbox[0]], [area.bbox[3], area.bbox[2]])
28309                     };
28310                 })
28311             };
28312         });
28313         dispatch.change();
28314     });
28315
28316     bing.copyrightNotices = function(zoom, extent) {
28317         zoom = Math.min(zoom, 21);
28318         return providers.filter(function(provider) {
28319             return _.any(provider.areas, function(area) {
28320                 return extent.intersects(area.extent) &&
28321                     area.zoom[0] <= zoom &&
28322                     area.zoom[1] >= zoom;
28323             });
28324         }).map(function(provider) {
28325             return provider.attribution;
28326         }).join(', ');
28327     };
28328
28329     bing.logo = 'bing_maps.png';
28330     bing.terms_url = 'http://opengeodata.org/microsoft-imagery-details';
28331
28332     return bing;
28333 };
28334
28335 iD.BackgroundSource.None = function() {
28336     var source = iD.BackgroundSource({id: 'none', template: ''});
28337
28338     source.name = function() {
28339         return t('background.none');
28340     };
28341
28342     source.imageryUsed = function() {
28343         return 'None';
28344     };
28345
28346     return source;
28347 };
28348
28349 iD.BackgroundSource.Custom = function(template) {
28350     var source = iD.BackgroundSource({id: 'custom', template: template});
28351
28352     source.name = function() {
28353         return t('background.custom');
28354     };
28355
28356     source.imageryUsed = function() {
28357         return 'Custom (' + template + ')';
28358     };
28359
28360     return source;
28361 };
28362 iD.Features = function(context) {
28363     var major_roads = {
28364         'motorway': true,
28365         'motorway_link': true,
28366         'trunk': true,
28367         'trunk_link': true,
28368         'primary': true,
28369         'primary_link': true,
28370         'secondary': true,
28371         'secondary_link': true,
28372         'tertiary': true,
28373         'tertiary_link': true,
28374         'residential': true
28375     };
28376
28377     var minor_roads = {
28378         'service': true,
28379         'living_street': true,
28380         'road': true,
28381         'unclassified': true,
28382         'track': true
28383     };
28384
28385     var paths = {
28386         'path': true,
28387         'footway': true,
28388         'cycleway': true,
28389         'bridleway': true,
28390         'steps': true,
28391         'pedestrian': true,
28392         'corridor': true
28393     };
28394
28395     var past_futures = {
28396         'proposed': true,
28397         'construction': true,
28398         'abandoned': true,
28399         'dismantled': true,
28400         'disused': true,
28401         'razed': true,
28402         'demolished': true,
28403         'obliterated': true
28404     };
28405
28406     var dispatch = d3.dispatch('change', 'redraw'),
28407         _cullFactor = 1,
28408         _cache = {},
28409         _features = {},
28410         _stats = {},
28411         _keys = [],
28412         _hidden = [];
28413
28414     function update() {
28415         _hidden = features.hidden();
28416         dispatch.change();
28417         dispatch.redraw();
28418     }
28419
28420     function defineFeature(k, filter, max) {
28421         _keys.push(k);
28422         _features[k] = {
28423             filter: filter,
28424             enabled: true,   // whether the user wants it enabled..
28425             count: 0,
28426             currentMax: (max || Infinity),
28427             defaultMax: (max || Infinity),
28428             enable: function() { this.enabled = true; this.currentMax = this.defaultMax; },
28429             disable: function() { this.enabled = false; this.currentMax = 0; },
28430             hidden: function() { return !context.editable() || this.count > this.currentMax * _cullFactor; },
28431             autoHidden: function() { return this.hidden() && this.currentMax > 0; }
28432         };
28433     }
28434
28435
28436     defineFeature('points', function isPoint(entity, resolver, geometry) {
28437         return geometry === 'point';
28438     }, 200);
28439
28440     defineFeature('major_roads', function isMajorRoad(entity) {
28441         return major_roads[entity.tags.highway];
28442     });
28443
28444     defineFeature('minor_roads', function isMinorRoad(entity) {
28445         return minor_roads[entity.tags.highway];
28446     });
28447
28448     defineFeature('paths', function isPath(entity) {
28449         return paths[entity.tags.highway];
28450     });
28451
28452     defineFeature('buildings', function isBuilding(entity) {
28453         return (
28454             !!entity.tags['building:part'] ||
28455             (!!entity.tags.building && entity.tags.building !== 'no') ||
28456             entity.tags.amenity === 'shelter' ||
28457             entity.tags.parking === 'multi-storey' ||
28458             entity.tags.parking === 'sheds' ||
28459             entity.tags.parking === 'carports' ||
28460             entity.tags.parking === 'garage_boxes'
28461         );
28462     }, 250);
28463
28464     defineFeature('landuse', function isLanduse(entity, resolver, geometry) {
28465         return geometry === 'area' &&
28466             !_features.buildings.filter(entity) &&
28467             !_features.water.filter(entity);
28468     });
28469
28470     defineFeature('boundaries', function isBoundary(entity) {
28471         return !!entity.tags.boundary;
28472     });
28473
28474     defineFeature('water', function isWater(entity) {
28475         return (
28476             !!entity.tags.waterway ||
28477             entity.tags.natural === 'water' ||
28478             entity.tags.natural === 'coastline' ||
28479             entity.tags.natural === 'bay' ||
28480             entity.tags.landuse === 'pond' ||
28481             entity.tags.landuse === 'basin' ||
28482             entity.tags.landuse === 'reservoir' ||
28483             entity.tags.landuse === 'salt_pond'
28484         );
28485     });
28486
28487     defineFeature('rail', function isRail(entity) {
28488         return (
28489             !!entity.tags.railway ||
28490             entity.tags.landuse === 'railway'
28491         ) && !(
28492             major_roads[entity.tags.highway] ||
28493             minor_roads[entity.tags.highway] ||
28494             paths[entity.tags.highway]
28495         );
28496     });
28497
28498     defineFeature('power', function isPower(entity) {
28499         return !!entity.tags.power;
28500     });
28501
28502     // contains a past/future tag, but not in active use as a road/path/cycleway/etc..
28503     defineFeature('past_future', function isPastFuture(entity) {
28504         if (
28505             major_roads[entity.tags.highway] ||
28506             minor_roads[entity.tags.highway] ||
28507             paths[entity.tags.highway]
28508         ) { return false; }
28509
28510         var strings = Object.keys(entity.tags);
28511
28512         for (var i = 0; i < strings.length; i++) {
28513             var s = strings[i];
28514             if (past_futures[s] || past_futures[entity.tags[s]]) { return true; }
28515         }
28516         return false;
28517     });
28518
28519     // Lines or areas that don't match another feature filter.
28520     // IMPORTANT: The 'others' feature must be the last one defined,
28521     //   so that code in getMatches can skip this test if `hasMatch = true`
28522     defineFeature('others', function isOther(entity, resolver, geometry) {
28523         return (geometry === 'line' || geometry === 'area');
28524     });
28525
28526
28527     function features() {}
28528
28529     features.features = function() {
28530         return _features;
28531     };
28532
28533     features.keys = function() {
28534         return _keys;
28535     };
28536
28537     features.enabled = function(k) {
28538         if (!arguments.length) {
28539             return _.filter(_keys, function(k) { return _features[k].enabled; });
28540         }
28541         return _features[k] && _features[k].enabled;
28542     };
28543
28544     features.disabled = function(k) {
28545         if (!arguments.length) {
28546             return _.reject(_keys, function(k) { return _features[k].enabled; });
28547         }
28548         return _features[k] && !_features[k].enabled;
28549     };
28550
28551     features.hidden = function(k) {
28552         if (!arguments.length) {
28553             return _.filter(_keys, function(k) { return _features[k].hidden(); });
28554         }
28555         return _features[k] && _features[k].hidden();
28556     };
28557
28558     features.autoHidden = function(k) {
28559         if (!arguments.length) {
28560             return _.filter(_keys, function(k) { return _features[k].autoHidden(); });
28561         }
28562         return _features[k] && _features[k].autoHidden();
28563     };
28564
28565     features.enable = function(k) {
28566         if (_features[k] && !_features[k].enabled) {
28567             _features[k].enable();
28568             update();
28569         }
28570     };
28571
28572     features.disable = function(k) {
28573         if (_features[k] && _features[k].enabled) {
28574             _features[k].disable();
28575             update();
28576         }
28577     };
28578
28579     features.toggle = function(k) {
28580         if (_features[k]) {
28581             (function(f) { return f.enabled ? f.disable() : f.enable(); }(_features[k]));
28582             update();
28583         }
28584     };
28585
28586     features.resetStats = function() {
28587         _.each(_features, function(f) { f.count = 0; });
28588         dispatch.change();
28589     };
28590
28591     features.gatherStats = function(d, resolver, dimensions) {
28592         var needsRedraw = false,
28593             type = _.groupBy(d, function(ent) { return ent.type; }),
28594             entities = [].concat(type.relation || [], type.way || [], type.node || []),
28595             currHidden, geometry, matches;
28596
28597         _.each(_features, function(f) { f.count = 0; });
28598
28599         // adjust the threshold for point/building culling based on viewport size..
28600         // a _cullFactor of 1 corresponds to a 1000x1000px viewport..
28601         _cullFactor = dimensions[0] * dimensions[1] / 1000000;
28602
28603         for (var i = 0; i < entities.length; i++) {
28604             geometry = entities[i].geometry(resolver);
28605             if (!(geometry === 'vertex' || geometry === 'relation')) {
28606                 matches = Object.keys(features.getMatches(entities[i], resolver, geometry));
28607                 for (var j = 0; j < matches.length; j++) {
28608                     _features[matches[j]].count++;
28609                 }
28610             }
28611         }
28612
28613         currHidden = features.hidden();
28614         if (currHidden !== _hidden) {
28615             _hidden = currHidden;
28616             needsRedraw = true;
28617             dispatch.change();
28618         }
28619
28620         return needsRedraw;
28621     };
28622
28623     features.stats = function() {
28624         _.each(_keys, function(k) { _stats[k] = _features[k].count; });
28625         return _stats;
28626     };
28627
28628     features.clear = function(d) {
28629         for (var i = 0; i < d.length; i++) {
28630             features.clearEntity(d[i]);
28631         }
28632     };
28633
28634     features.clearEntity = function(entity) {
28635         delete _cache[iD.Entity.key(entity)];
28636     };
28637
28638     features.reset = function() {
28639         _cache = {};
28640     };
28641
28642     features.getMatches = function(entity, resolver, geometry) {
28643         var ent = iD.Entity.key(entity);
28644
28645         if (!_cache[ent]) {
28646             _cache[ent] = {};
28647         }
28648         if (!_cache[ent].matches) {
28649             var matches = {},
28650                 hasMatch = false;
28651
28652             if (!(geometry === 'vertex' || geometry === 'relation')) {
28653                 for (var i = 0; i < _keys.length; i++) {
28654
28655                     if (_keys[i] === 'others') {
28656                         if (hasMatch) continue;
28657
28658                         // If the entity is a way that has not matched any other
28659                         // feature type, see if it has a parent relation, and if so,
28660                         // match whatever feature types the parent has matched.
28661                         // (The way is a member of a multipolygon.)
28662                         //
28663                         // IMPORTANT:
28664                         // For this to work, getMatches must be called on relations before ways.
28665                         //
28666                         if (entity.type === 'way') {
28667                             var parents = features.getParents(entity, resolver, geometry);
28668                             if (parents.length === 1) {
28669                                 var pkey = iD.Entity.key(parents[0]);
28670                                 if (_cache[pkey] && _cache[pkey].matches) {
28671                                     matches = _.clone(_cache[pkey].matches);
28672                                     continue;
28673                                 }
28674                             }
28675                         }
28676                     }
28677
28678                     if (_features[_keys[i]].filter(entity, resolver, geometry)) {
28679                         matches[_keys[i]] = hasMatch = true;
28680                     }
28681                 }
28682             }
28683             _cache[ent].matches = matches;
28684         }
28685         return _cache[ent].matches;
28686     };
28687
28688     features.getParents = function(entity, resolver, geometry) {
28689         var ent = iD.Entity.key(entity);
28690
28691         if (!_cache[ent]) {
28692             _cache[ent] = {};
28693         }
28694         if (!_cache[ent].parents) {
28695             var parents = [];
28696
28697             if (geometry !== 'point') {
28698                 if (geometry === 'vertex') {
28699                     parents = resolver.parentWays(entity);
28700                 } else {   // 'line', 'area', 'relation'
28701                     parents = resolver.parentRelations(entity);
28702                 }
28703             }
28704             _cache[ent].parents = parents;
28705         }
28706         return _cache[ent].parents;
28707     };
28708
28709     features.isHiddenFeature = function(entity, resolver, geometry) {
28710         if (!entity.version) return false;
28711
28712         var matches = features.getMatches(entity, resolver, geometry);
28713
28714         for (var i = 0; i < _hidden.length; i++) {
28715             if (matches[_hidden[i]]) { return true; }
28716         }
28717         return false;
28718     };
28719
28720     features.isHiddenChild = function(entity, resolver, geometry) {
28721         if (!entity.version || geometry === 'point') { return false; }
28722
28723         var parents = features.getParents(entity, resolver, geometry);
28724
28725         if (!parents.length) { return false; }
28726
28727         for (var i = 0; i < parents.length; i++) {
28728             if (!features.isHidden(parents[i], resolver, parents[i].geometry(resolver))) {
28729                 return false;
28730             }
28731         }
28732         return true;
28733     };
28734
28735     features.hasHiddenConnections = function(entity, resolver) {
28736         var childNodes, connections;
28737
28738         if (entity.type === 'midpoint') {
28739             childNodes = [resolver.entity(entity.edge[0]), resolver.entity(entity.edge[1])];
28740             connections = [];
28741         } else {
28742             childNodes = resolver.childNodes(entity);
28743             connections = features.getParents(entity, resolver, entity.geometry(resolver));
28744         }
28745
28746         // gather ways connected to child nodes..
28747         connections = _.reduce(childNodes, function(result, e) {
28748             return resolver.isShared(e) ? _.union(result, resolver.parentWays(e)) : result;
28749         }, connections);
28750
28751         return connections.length ? _.any(connections, function(e) {
28752             return features.isHidden(e, resolver, e.geometry(resolver));
28753         }) : false;
28754     };
28755
28756     features.isHidden = function(entity, resolver, geometry) {
28757         if (!entity.version) return false;
28758
28759         if (geometry === 'vertex')
28760             return features.isHiddenChild(entity, resolver, geometry);
28761         if (geometry === 'point')
28762             return features.isHiddenFeature(entity, resolver, geometry);
28763
28764         return features.isHiddenFeature(entity, resolver, geometry) ||
28765                features.isHiddenChild(entity, resolver, geometry);
28766     };
28767
28768     features.filter = function(d, resolver) {
28769         if (!_hidden.length)
28770             return d;
28771
28772         var result = [];
28773         for (var i = 0; i < d.length; i++) {
28774             var entity = d[i];
28775             if (!features.isHidden(entity, resolver, entity.geometry(resolver))) {
28776                 result.push(entity);
28777             }
28778         }
28779         return result;
28780     };
28781
28782     return d3.rebind(features, dispatch, 'on');
28783 };
28784 iD.GpxLayer = function(context) {
28785     var projection,
28786         gj = {},
28787         enable = true,
28788         svg;
28789
28790     function render(selection) {
28791         svg = selection.selectAll('svg')
28792             .data([render]);
28793
28794         svg.enter()
28795             .append('svg');
28796
28797         svg.style('display', enable ? 'block' : 'none');
28798
28799         var paths = svg
28800             .selectAll('path')
28801             .data([gj]);
28802
28803         paths
28804             .enter()
28805             .append('path')
28806             .attr('class', 'gpx');
28807
28808         var path = d3.geo.path()
28809             .projection(projection);
28810
28811         paths
28812             .attr('d', path);
28813
28814         if (typeof gj.features !== 'undefined') {
28815             svg
28816                 .selectAll('text')
28817                 .remove();
28818
28819             svg
28820                 .selectAll('path')
28821                 .data(gj.features)
28822                 .enter()
28823                 .append('text')
28824                 .attr('class', 'gpx')
28825                 .text(function(d) {
28826                     return d.properties.desc || d.properties.name;
28827                 })
28828                 .attr('x', function(d) {
28829                     var centroid = path.centroid(d);
28830                     return centroid[0] + 5;
28831                 })
28832                 .attr('y', function(d) {
28833                     var centroid = path.centroid(d);
28834                     return centroid[1];
28835                 });
28836         }
28837     }
28838
28839     render.projection = function(_) {
28840         if (!arguments.length) return projection;
28841         projection = _;
28842         return render;
28843     };
28844
28845     render.enable = function(_) {
28846         if (!arguments.length) return enable;
28847         enable = _;
28848         return render;
28849     };
28850
28851     render.geojson = function(_) {
28852         if (!arguments.length) return gj;
28853         gj = _;
28854         return render;
28855     };
28856
28857     render.dimensions = function(_) {
28858         if (!arguments.length) return svg.dimensions();
28859         svg.dimensions(_);
28860         return render;
28861     };
28862
28863     render.id = 'layer-gpx';
28864
28865     function over() {
28866         d3.event.stopPropagation();
28867         d3.event.preventDefault();
28868         d3.event.dataTransfer.dropEffect = 'copy';
28869     }
28870
28871     d3.select('body')
28872         .attr('dropzone', 'copy')
28873         .on('drop.localgpx', function() {
28874             d3.event.stopPropagation();
28875             d3.event.preventDefault();
28876             if (!iD.detect().filedrop) return;
28877             context.background().gpxLayerFiles(d3.event.dataTransfer.files);
28878         })
28879         .on('dragenter.localgpx', over)
28880         .on('dragexit.localgpx', over)
28881         .on('dragover.localgpx', over);
28882
28883     return render;
28884 };
28885 iD.Map = function(context) {
28886     var dimensions = [1, 1],
28887         dispatch = d3.dispatch('move', 'drawn'),
28888         projection = context.projection,
28889         zoom = d3.behavior.zoom()
28890             .translate(projection.translate())
28891             .scale(projection.scale() * 2 * Math.PI)
28892             .scaleExtent([1024, 256 * Math.pow(2, 24)])
28893             .on('zoom', zoomPan),
28894         dblclickEnabled = true,
28895         transformStart,
28896         transformed = false,
28897         minzoom = 0,
28898         points = iD.svg.Points(projection, context),
28899         vertices = iD.svg.Vertices(projection, context),
28900         lines = iD.svg.Lines(projection),
28901         areas = iD.svg.Areas(projection),
28902         midpoints = iD.svg.Midpoints(projection, context),
28903         labels = iD.svg.Labels(projection, context),
28904         supersurface, surface,
28905         mouse,
28906         mousemove;
28907
28908     function map(selection) {
28909         context.history()
28910             .on('change.map', redraw);
28911         context.background()
28912             .on('change.map', redraw);
28913         context.features()
28914             .on('redraw.map', redraw);
28915
28916         selection
28917             .on('dblclick.map', dblClick)
28918             .call(zoom);
28919
28920         supersurface = selection.append('div')
28921             .attr('id', 'supersurface');
28922
28923         // Need a wrapper div because Opera can't cope with an absolutely positioned
28924         // SVG element: http://bl.ocks.org/jfirebaugh/6fbfbd922552bf776c16
28925         var dataLayer = supersurface.append('div')
28926             .attr('class', 'layer-layer layer-data');
28927
28928         map.surface = surface = dataLayer.append('svg')
28929             .on('mousedown.zoom', function() {
28930                 if (d3.event.button === 2) {
28931                     d3.event.stopPropagation();
28932                 }
28933             }, true)
28934             .on('mouseup.zoom', function() {
28935                 if (resetTransform()) redraw();
28936             })
28937             .attr('id', 'surface')
28938             .call(iD.svg.Surface(context));
28939
28940         supersurface.call(context.background());
28941
28942         surface.on('mousemove.map', function() {
28943             mousemove = d3.event;
28944         });
28945
28946         surface.on('mouseover.vertices', function() {
28947             if (map.editable() && !transformed) {
28948                 var hover = d3.event.target.__data__;
28949                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28950                 dispatch.drawn({full: false});
28951             }
28952         });
28953
28954         surface.on('mouseout.vertices', function() {
28955             if (map.editable() && !transformed) {
28956                 var hover = d3.event.relatedTarget && d3.event.relatedTarget.__data__;
28957                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28958                 dispatch.drawn({full: false});
28959             }
28960         });
28961
28962         context.on('enter.map', function() {
28963             if (map.editable() && !transformed) {
28964                 var all = context.intersects(map.extent()),
28965                     filter = d3.functor(true),
28966                     graph = context.graph();
28967
28968                 all = context.features().filter(all, graph);
28969                 surface.call(vertices, graph, all, filter, map.extent(), map.zoom());
28970                 surface.call(midpoints, graph, all, filter, map.trimmedExtent());
28971                 dispatch.drawn({full: false});
28972             }
28973         });
28974
28975         map.dimensions(selection.dimensions());
28976
28977         labels.supersurface(supersurface);
28978     }
28979
28980     function pxCenter() { return [dimensions[0] / 2, dimensions[1] / 2]; }
28981
28982     function drawVector(difference, extent) {
28983         var graph = context.graph(),
28984             features = context.features(),
28985             all = context.intersects(map.extent()),
28986             data, filter;
28987
28988         if (difference) {
28989             var complete = difference.complete(map.extent());
28990             data = _.compact(_.values(complete));
28991             filter = function(d) { return d.id in complete; };
28992             features.clear(data);
28993
28994         } else {
28995             // force a full redraw if gatherStats detects that a feature
28996             // should be auto-hidden (e.g. points or buildings)..
28997             if (features.gatherStats(all, graph, dimensions)) {
28998                 extent = undefined;
28999             }
29000
29001             if (extent) {
29002                 data = context.intersects(map.extent().intersection(extent));
29003                 var set = d3.set(_.pluck(data, 'id'));
29004                 filter = function(d) { return set.has(d.id); };
29005
29006             } else {
29007                 data = all;
29008                 filter = d3.functor(true);
29009             }
29010         }
29011
29012         data = features.filter(data, graph);
29013
29014         surface
29015             .call(vertices, graph, data, filter, map.extent(), map.zoom())
29016             .call(lines, graph, data, filter)
29017             .call(areas, graph, data, filter)
29018             .call(midpoints, graph, data, filter, map.trimmedExtent())
29019             .call(labels, graph, data, filter, dimensions, !difference && !extent)
29020             .call(points, data, filter);
29021
29022         dispatch.drawn({full: true});
29023     }
29024
29025     function editOff() {
29026         context.features().resetStats();
29027         surface.selectAll('.layer *').remove();
29028         dispatch.drawn({full: true});
29029     }
29030
29031     function dblClick() {
29032         if (!dblclickEnabled) {
29033             d3.event.preventDefault();
29034             d3.event.stopImmediatePropagation();
29035         }
29036     }
29037
29038     function zoomPan() {
29039         if (Math.log(d3.event.scale) / Math.LN2 - 8 < minzoom) {
29040             surface.interrupt();
29041             iD.ui.flash(context.container())
29042                 .select('.content')
29043                 .text(t('cannot_zoom'));
29044             setZoom(context.minEditableZoom(), true);
29045             queueRedraw();
29046             dispatch.move(map);
29047             return;
29048         }
29049
29050         projection
29051             .translate(d3.event.translate)
29052             .scale(d3.event.scale / (2 * Math.PI));
29053
29054         var scale = d3.event.scale / transformStart[0],
29055             tX = (d3.event.translate[0] / scale - transformStart[1][0]) * scale,
29056             tY = (d3.event.translate[1] / scale - transformStart[1][1]) * scale;
29057
29058         transformed = true;
29059         iD.util.setTransform(supersurface, tX, tY, scale);
29060         queueRedraw();
29061
29062         dispatch.move(map);
29063     }
29064
29065     function resetTransform() {
29066         if (!transformed) return false;
29067         iD.util.setTransform(supersurface, 0, 0);
29068         transformed = false;
29069         return true;
29070     }
29071
29072     function redraw(difference, extent) {
29073         if (!surface) return;
29074
29075         clearTimeout(timeoutId);
29076
29077         // If we are in the middle of a zoom/pan, we can't do differenced redraws.
29078         // It would result in artifacts where differenced entities are redrawn with
29079         // one transform and unchanged entities with another.
29080         if (resetTransform()) {
29081             difference = extent = undefined;
29082         }
29083
29084         var zoom = String(~~map.zoom());
29085         if (surface.attr('data-zoom') !== zoom) {
29086             surface.attr('data-zoom', zoom)
29087                 .classed('low-zoom', zoom <= 16);
29088         }
29089
29090         if (!difference) {
29091             supersurface.call(context.background());
29092         }
29093
29094         if (map.editable()) {
29095             context.loadTiles(projection, dimensions);
29096             drawVector(difference, extent);
29097         } else {
29098             editOff();
29099         }
29100
29101         transformStart = [
29102             projection.scale() * 2 * Math.PI,
29103             projection.translate().slice()];
29104
29105         return map;
29106     }
29107
29108     var timeoutId;
29109     function queueRedraw() {
29110         clearTimeout(timeoutId);
29111         timeoutId = setTimeout(function() { redraw(); }, 300);
29112     }
29113
29114     function pointLocation(p) {
29115         var translate = projection.translate(),
29116             scale = projection.scale() * 2 * Math.PI;
29117         return [(p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale];
29118     }
29119
29120     function locationPoint(l) {
29121         var translate = projection.translate(),
29122             scale = projection.scale() * 2 * Math.PI;
29123         return [l[0] * scale + translate[0], l[1] * scale + translate[1]];
29124     }
29125
29126     map.mouse = function() {
29127         var e = mousemove || d3.event, s;
29128         while ((s = e.sourceEvent)) e = s;
29129         return mouse(e);
29130     };
29131
29132     map.mouseCoordinates = function() {
29133         return projection.invert(map.mouse());
29134     };
29135
29136     map.dblclickEnable = function(_) {
29137         if (!arguments.length) return dblclickEnabled;
29138         dblclickEnabled = _;
29139         return map;
29140     };
29141
29142     function interpolateZoom(_) {
29143         var k = projection.scale(),
29144             t = projection.translate();
29145
29146         surface.node().__chart__ = {
29147             x: t[0],
29148             y: t[1],
29149             k: k * 2 * Math.PI
29150         };
29151
29152         setZoom(_);
29153         projection.scale(k).translate(t);  // undo setZoom projection changes
29154
29155         zoom.event(surface.transition());
29156     }
29157
29158     function setZoom(_, force) {
29159         if (_ === map.zoom() && !force)
29160             return false;
29161         var scale = 256 * Math.pow(2, _),
29162             center = pxCenter(),
29163             l = pointLocation(center);
29164         scale = Math.max(1024, Math.min(256 * Math.pow(2, 24), scale));
29165         projection.scale(scale / (2 * Math.PI));
29166         zoom.scale(scale);
29167         var t = projection.translate();
29168         l = locationPoint(l);
29169         t[0] += center[0] - l[0];
29170         t[1] += center[1] - l[1];
29171         projection.translate(t);
29172         zoom.translate(projection.translate());
29173         return true;
29174     }
29175
29176     function setCenter(_) {
29177         var c = map.center();
29178         if (_[0] === c[0] && _[1] === c[1])
29179             return false;
29180         var t = projection.translate(),
29181             pxC = pxCenter(),
29182             ll = projection(_);
29183         projection.translate([
29184             t[0] - ll[0] + pxC[0],
29185             t[1] - ll[1] + pxC[1]]);
29186         zoom.translate(projection.translate());
29187         return true;
29188     }
29189
29190     map.pan = function(d) {
29191         var t = projection.translate();
29192         t[0] += d[0];
29193         t[1] += d[1];
29194         projection.translate(t);
29195         zoom.translate(projection.translate());
29196         dispatch.move(map);
29197         return redraw();
29198     };
29199
29200     map.dimensions = function(_) {
29201         if (!arguments.length) return dimensions;
29202         var center = map.center();
29203         dimensions = _;
29204         surface.dimensions(dimensions);
29205         context.background().dimensions(dimensions);
29206         projection.clipExtent([[0, 0], dimensions]);
29207         mouse = iD.util.fastMouse(supersurface.node());
29208         setCenter(center);
29209         return redraw();
29210     };
29211
29212     function zoomIn(integer) {
29213       interpolateZoom(~~map.zoom() + integer);
29214     }
29215
29216     function zoomOut(integer) {
29217       interpolateZoom(~~map.zoom() - integer);
29218     }
29219
29220     map.zoomIn = function() { zoomIn(1); };
29221     map.zoomInFurther = function() { zoomIn(4); };
29222
29223     map.zoomOut = function() { zoomOut(1); };
29224     map.zoomOutFurther = function() { zoomOut(4); };
29225
29226     map.center = function(loc) {
29227         if (!arguments.length) {
29228             return projection.invert(pxCenter());
29229         }
29230
29231         if (setCenter(loc)) {
29232             dispatch.move(map);
29233         }
29234
29235         return redraw();
29236     };
29237
29238     map.zoom = function(z) {
29239         if (!arguments.length) {
29240             return Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.LN2 - 8, 0);
29241         }
29242
29243         if (z < minzoom) {
29244             surface.interrupt();
29245             iD.ui.flash(context.container())
29246                 .select('.content')
29247                 .text(t('cannot_zoom'));
29248             z = context.minEditableZoom();
29249         }
29250
29251         if (setZoom(z)) {
29252             dispatch.move(map);
29253         }
29254
29255         return redraw();
29256     };
29257
29258     map.zoomTo = function(entity, zoomLimits) {
29259         var extent = entity.extent(context.graph());
29260         if (!isFinite(extent.area())) return;
29261
29262         var zoom = map.trimmedExtentZoom(extent);
29263         zoomLimits = zoomLimits || [context.minEditableZoom(), 20];
29264         map.centerZoom(extent.center(), Math.min(Math.max(zoom, zoomLimits[0]), zoomLimits[1]));
29265     };
29266
29267     map.centerZoom = function(loc, z) {
29268         var centered = setCenter(loc),
29269             zoomed   = setZoom(z);
29270
29271         if (centered || zoomed) {
29272             dispatch.move(map);
29273         }
29274
29275         return redraw();
29276     };
29277
29278     map.centerEase = function(loc) {
29279         var from = map.center().slice(),
29280             t = 0,
29281             stop;
29282
29283         surface.one('mousedown.ease', function() {
29284             stop = true;
29285         });
29286
29287         d3.timer(function() {
29288             if (stop) return true;
29289             map.center(iD.geo.interp(from, loc, (t += 1) / 10));
29290             return t === 10;
29291         }, 20);
29292         return map;
29293     };
29294
29295     map.extent = function(_) {
29296         if (!arguments.length) {
29297             return new iD.geo.Extent(projection.invert([0, dimensions[1]]),
29298                                  projection.invert([dimensions[0], 0]));
29299         } else {
29300             var extent = iD.geo.Extent(_);
29301             map.centerZoom(extent.center(), map.extentZoom(extent));
29302         }
29303     };
29304
29305     map.trimmedExtent = function(_) {
29306         if (!arguments.length) {
29307             var headerY = 60, footerY = 30, pad = 10;
29308             return new iD.geo.Extent(projection.invert([pad, dimensions[1] - footerY - pad]),
29309                     projection.invert([dimensions[0] - pad, headerY + pad]));
29310         } else {
29311             var extent = iD.geo.Extent(_);
29312             map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
29313         }
29314     };
29315
29316     function calcZoom(extent, dim) {
29317         var tl = projection([extent[0][0], extent[1][1]]),
29318             br = projection([extent[1][0], extent[0][1]]);
29319
29320         // Calculate maximum zoom that fits extent
29321         var hFactor = (br[0] - tl[0]) / dim[0],
29322             vFactor = (br[1] - tl[1]) / dim[1],
29323             hZoomDiff = Math.log(Math.abs(hFactor)) / Math.LN2,
29324             vZoomDiff = Math.log(Math.abs(vFactor)) / Math.LN2,
29325             newZoom = map.zoom() - Math.max(hZoomDiff, vZoomDiff);
29326
29327         return newZoom;
29328     }
29329
29330     map.extentZoom = function(_) {
29331         return calcZoom(iD.geo.Extent(_), dimensions);
29332     };
29333
29334     map.trimmedExtentZoom = function(_) {
29335         var trimY = 120, trimX = 40,
29336             trimmed = [dimensions[0] - trimX, dimensions[1] - trimY];
29337         return calcZoom(iD.geo.Extent(_), trimmed);
29338     };
29339
29340     map.editable = function() {
29341         return map.zoom() >= context.minEditableZoom();
29342     };
29343
29344     map.minzoom = function(_) {
29345         if (!arguments.length) return minzoom;
29346         minzoom = _;
29347         return map;
29348     };
29349
29350     return d3.rebind(map, dispatch, 'on');
29351 };
29352 iD.MapillaryLayer = function (context) {
29353     var enable = false,
29354         currentImage,
29355         svg, div, request;
29356
29357     function show(image) {
29358         svg.selectAll('g')
29359             .classed('selected', function(d) {
29360                 return currentImage && d.key === currentImage.key;
29361             });
29362
29363         div.classed('hidden', false)
29364             .classed('temp', image !== currentImage);
29365
29366         div.selectAll('img')
29367             .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg');
29368
29369         div.selectAll('a')
29370             .attr('href', 'http://mapillary.com/map/im/' + image.key);
29371     }
29372
29373     function hide() {
29374         currentImage = undefined;
29375
29376         svg.selectAll('g')
29377             .classed('selected', false);
29378
29379         div.classed('hidden', true);
29380     }
29381
29382     function transform(image) {
29383         var t = 'translate(' + context.projection(image.loc) + ')';
29384         if (image.ca) t += 'rotate(' + image.ca + ',0,0)';
29385         return t;
29386     }
29387
29388     function render(selection) {
29389         svg = selection.selectAll('svg')
29390             .data([0]);
29391
29392         svg.enter().append('svg')
29393             .on('click', function() {
29394                 var image = d3.event.target.__data__;
29395                 if (currentImage === image) {
29396                     hide();
29397                 } else {
29398                     currentImage = image;
29399                     show(image);
29400                 }
29401             })
29402             .on('mouseover', function() {
29403                 show(d3.event.target.__data__);
29404             })
29405             .on('mouseout', function() {
29406                 if (currentImage) {
29407                     show(currentImage);
29408                 } else {
29409                     hide();
29410                 }
29411             });
29412
29413         svg.style('display', enable ? 'block' : 'none');
29414
29415         div = context.container().selectAll('.mapillary-image')
29416             .data([0]);
29417
29418         var enter = div.enter().append('div')
29419             .attr('class', 'mapillary-image');
29420
29421         enter.append('button')
29422             .on('click', hide)
29423             .append('div')
29424             .call(iD.svg.Icon('#icon-close'));
29425
29426         enter.append('img');
29427
29428         enter
29429             .append('a')
29430             .attr('class', 'link')
29431             .attr('target', '_blank')
29432             .call(iD.svg.Icon('#icon-out-link', 'inline'))
29433             .append('span')
29434             .text(t('mapillary.view_on_mapillary'));
29435
29436         if (!enable) {
29437             hide();
29438
29439             svg.selectAll('g')
29440                 .remove();
29441
29442             return;
29443         }
29444
29445         // Update existing images while waiting for new ones to load.
29446         svg.selectAll('g')
29447             .attr('transform', transform);
29448
29449         var extent = context.map().extent();
29450
29451         if (request)
29452             request.abort();
29453
29454         request = d3.json('https://a.mapillary.com/v2/search/s/geojson?client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' +
29455             extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' +
29456             extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true',
29457             function (error, data) {
29458                 if (error) return;
29459
29460                 var images = [];
29461
29462                 for (var i = 0; i < data.features.length; i++) {
29463                     var sequence = data.features[i];
29464                     for (var j = 0; j < sequence.geometry.coordinates.length; j++) {
29465                         images.push({
29466                             key: sequence.properties.keys[j],
29467                             ca: sequence.properties.cas[j],
29468                             loc: sequence.geometry.coordinates[j]
29469                         });
29470                         if (images.length >= 1000) break;
29471                     }
29472                 }
29473
29474                 var g = svg.selectAll('g')
29475                     .data(images, function(d) { return d.key; });
29476
29477                 var enter = g.enter().append('g')
29478                     .attr('class', 'image');
29479
29480                 enter.append('path')
29481                     .attr('class', 'viewfield')
29482                     .attr('transform', 'scale(1.5,1.5),translate(-8, -13)')
29483                     .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z');
29484
29485                 enter.append('circle')
29486                     .attr('dx', '0')
29487                     .attr('dy', '0')
29488                     .attr('r', '6');
29489
29490                 g.attr('transform', transform);
29491
29492                 g.exit()
29493                     .remove();
29494             });
29495     }
29496
29497     render.enable = function(_) {
29498         if (!arguments.length) return enable;
29499         enable = _;
29500         return render;
29501     };
29502
29503     render.dimensions = function(_) {
29504         if (!arguments.length) return svg.dimensions();
29505         svg.dimensions(_);
29506         return render;
29507     };
29508
29509     return render;
29510 };
29511 iD.TileLayer = function() {
29512     var tileSize = 256,
29513         tile = d3.geo.tile(),
29514         projection,
29515         cache = {},
29516         tileOrigin,
29517         z,
29518         transformProp = iD.util.prefixCSSProperty('Transform'),
29519         source = d3.functor('');
29520
29521     function tileSizeAtZoom(d, z) {
29522         return (tileSize * Math.pow(2, z - d[2])) / tileSize;
29523     }
29524
29525     function atZoom(t, distance) {
29526         var power = Math.pow(2, distance);
29527         return [
29528             Math.floor(t[0] * power),
29529             Math.floor(t[1] * power),
29530             t[2] + distance];
29531     }
29532
29533     function lookUp(d) {
29534         for (var up = -1; up > -d[2]; up--) {
29535             var tile = atZoom(d, up);
29536             if (cache[source.url(tile)] !== false) {
29537                 return tile;
29538             }
29539         }
29540     }
29541
29542     function uniqueBy(a, n) {
29543         var o = [], seen = {};
29544         for (var i = 0; i < a.length; i++) {
29545             if (seen[a[i][n]] === undefined) {
29546                 o.push(a[i]);
29547                 seen[a[i][n]] = true;
29548             }
29549         }
29550         return o;
29551     }
29552
29553     function addSource(d) {
29554         d.push(source.url(d));
29555         return d;
29556     }
29557
29558     // Update tiles based on current state of `projection`.
29559     function background(selection) {
29560         tile.scale(projection.scale() * 2 * Math.PI)
29561             .translate(projection.translate());
29562
29563         tileOrigin = [
29564             projection.scale() * Math.PI - projection.translate()[0],
29565             projection.scale() * Math.PI - projection.translate()[1]];
29566
29567         z = Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.log(2) - 8, 0);
29568
29569         render(selection);
29570     }
29571
29572     // Derive the tiles onscreen, remove those offscreen and position them.
29573     // Important that this part not depend on `projection` because it's
29574     // rentered when tiles load/error (see #644).
29575     function render(selection) {
29576         var requests = [];
29577
29578         if (source.validZoom(z)) {
29579             tile().forEach(function(d) {
29580                 addSource(d);
29581                 if (d[3] === '') return;
29582                 if (typeof d[3] !== 'string') return; // Workaround for chrome crash https://github.com/openstreetmap/iD/issues/2295
29583                 requests.push(d);
29584                 if (cache[d[3]] === false && lookUp(d)) {
29585                     requests.push(addSource(lookUp(d)));
29586                 }
29587             });
29588
29589             requests = uniqueBy(requests, 3).filter(function(r) {
29590                 // don't re-request tiles which have failed in the past
29591                 return cache[r[3]] !== false;
29592             });
29593         }
29594
29595         var pixelOffset = [
29596             source.offset()[0] * Math.pow(2, z),
29597             source.offset()[1] * Math.pow(2, z)
29598         ];
29599
29600         function load(d) {
29601             cache[d[3]] = true;
29602             d3.select(this)
29603                 .on('error', null)
29604                 .on('load', null)
29605                 .classed('tile-loaded', true);
29606             render(selection);
29607         }
29608
29609         function error(d) {
29610             cache[d[3]] = false;
29611             d3.select(this)
29612                 .on('error', null)
29613                 .on('load', null)
29614                 .remove();
29615             render(selection);
29616         }
29617
29618         function imageTransform(d) {
29619             var _ts = tileSize * Math.pow(2, z - d[2]);
29620             var scale = tileSizeAtZoom(d, z);
29621             return 'translate(' +
29622                 ((d[0] * _ts) - tileOrigin[0] + pixelOffset[0]) + 'px,' +
29623                 ((d[1] * _ts) - tileOrigin[1] + pixelOffset[1]) + 'px)' +
29624                 'scale(' + scale + ',' + scale + ')';
29625         }
29626
29627         var image = selection
29628             .selectAll('img')
29629             .data(requests, function(d) { return d[3]; });
29630
29631         image.exit()
29632             .style(transformProp, imageTransform)
29633             .classed('tile-removing', true)
29634             .each(function() {
29635                 var tile = d3.select(this);
29636                 window.setTimeout(function() {
29637                     if (tile.classed('tile-removing')) {
29638                         tile.remove();
29639                     }
29640                 }, 300);
29641             });
29642
29643         image.enter().append('img')
29644             .attr('class', 'tile')
29645             .attr('src', function(d) { return d[3]; })
29646             .on('error', error)
29647             .on('load', load);
29648
29649         image
29650             .style(transformProp, imageTransform)
29651             .classed('tile-removing', false);
29652     }
29653
29654     background.projection = function(_) {
29655         if (!arguments.length) return projection;
29656         projection = _;
29657         return background;
29658     };
29659
29660     background.dimensions = function(_) {
29661         if (!arguments.length) return tile.size();
29662         tile.size(_);
29663         return background;
29664     };
29665
29666     background.source = function(_) {
29667         if (!arguments.length) return source;
29668         source = _;
29669         cache = {};
29670         tile.scaleExtent(source.scaleExtent);
29671         return background;
29672     };
29673
29674     return background;
29675 };
29676 iD.svg = {
29677     PointTransform: function(projection) {
29678         return function(entity) {
29679             // http://jsperf.com/short-array-join
29680             var pt = projection(entity.loc);
29681             return 'translate(' + pt[0] + ',' + pt[1] + ')';
29682         };
29683     },
29684
29685     Path: function(projection, graph, polygon) {
29686         var cache = {},
29687             clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29688             project = projection.stream,
29689             path = d3.geo.path()
29690                 .projection({stream: function(output) { return polygon ? project(output) : project(clip(output)); }});
29691
29692         return function(entity) {
29693             if (entity.id in cache) {
29694                 return cache[entity.id];
29695             } else {
29696                 return cache[entity.id] = path(entity.asGeoJSON(graph));
29697             }
29698         };
29699     },
29700
29701     OneWaySegments: function(projection, graph, dt) {
29702         return function(entity) {
29703             var a,
29704                 b,
29705                 i = 0,
29706                 offset = dt,
29707                 segments = [],
29708                 clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29709                 coordinates = graph.childNodes(entity).map(function(n) {
29710                     return n.loc;
29711                 });
29712
29713             if (entity.tags.oneway === '-1') coordinates.reverse();
29714
29715             d3.geo.stream({
29716                 type: 'LineString',
29717                 coordinates: coordinates
29718             }, projection.stream(clip({
29719                 lineStart: function() {},
29720                 lineEnd: function() {
29721                     a = null;
29722                 },
29723                 point: function(x, y) {
29724                     b = [x, y];
29725
29726                     if (a) {
29727                         var span = iD.geo.euclideanDistance(a, b) - offset;
29728
29729                         if (span >= 0) {
29730                             var angle = Math.atan2(b[1] - a[1], b[0] - a[0]),
29731                                 dx = dt * Math.cos(angle),
29732                                 dy = dt * Math.sin(angle),
29733                                 p = [a[0] + offset * Math.cos(angle),
29734                                      a[1] + offset * Math.sin(angle)];
29735
29736                             var segment = 'M' + a[0] + ',' + a[1] +
29737                                           'L' + p[0] + ',' + p[1];
29738
29739                             for (span -= dt; span >= 0; span -= dt) {
29740                                 p[0] += dx;
29741                                 p[1] += dy;
29742                                 segment += 'L' + p[0] + ',' + p[1];
29743                             }
29744
29745                             segment += 'L' + b[0] + ',' + b[1];
29746                             segments.push({id: entity.id, index: i, d: segment});
29747                         }
29748
29749                         offset = -span;
29750                         i++;
29751                     }
29752
29753                     a = b;
29754                 }
29755             })));
29756
29757             return segments;
29758         };
29759     },
29760
29761     MultipolygonMemberTags: function(graph) {
29762         return function(entity) {
29763             var tags = entity.tags;
29764             graph.parentRelations(entity).forEach(function(relation) {
29765                 if (relation.isMultipolygon()) {
29766                     tags = _.extend({}, relation.tags, tags);
29767                 }
29768             });
29769             return tags;
29770         };
29771     }
29772 };
29773 iD.svg.Areas = function(projection) {
29774     // Patterns only work in Firefox when set directly on element.
29775     // (This is not a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=750632)
29776     var patterns = {
29777         wetland: 'wetland',
29778         beach: 'beach',
29779         scrub: 'scrub',
29780         construction: 'construction',
29781         military: 'construction',
29782         cemetery: 'cemetery',
29783         grave_yard: 'cemetery',
29784         meadow: 'meadow',
29785         farm: 'farmland',
29786         farmland: 'farmland',
29787         orchard: 'orchard'
29788     };
29789
29790     var patternKeys = ['landuse', 'natural', 'amenity'];
29791
29792     function setPattern(d) {
29793         for (var i = 0; i < patternKeys.length; i++) {
29794             if (patterns.hasOwnProperty(d.tags[patternKeys[i]])) {
29795                 this.style.fill = this.style.stroke = 'url("#pattern-' + patterns[d.tags[patternKeys[i]]] + '")';
29796                 return;
29797             }
29798         }
29799         this.style.fill = this.style.stroke = '';
29800     }
29801
29802     return function drawAreas(surface, graph, entities, filter) {
29803         var path = iD.svg.Path(projection, graph, true),
29804             areas = {},
29805             multipolygon;
29806
29807         for (var i = 0; i < entities.length; i++) {
29808             var entity = entities[i];
29809             if (entity.geometry(graph) !== 'area') continue;
29810
29811             multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph);
29812             if (multipolygon) {
29813                 areas[multipolygon.id] = {
29814                     entity: multipolygon.mergeTags(entity.tags),
29815                     area: Math.abs(entity.area(graph))
29816                 };
29817             } else if (!areas[entity.id]) {
29818                 areas[entity.id] = {
29819                     entity: entity,
29820                     area: Math.abs(entity.area(graph))
29821                 };
29822             }
29823         }
29824
29825         areas = d3.values(areas).filter(function hasPath(a) { return path(a.entity); });
29826         areas.sort(function areaSort(a, b) { return b.area - a.area; });
29827         areas = _.pluck(areas, 'entity');
29828
29829         var strokes = areas.filter(function(area) {
29830             return area.type === 'way';
29831         });
29832
29833         var data = {
29834             clip: areas,
29835             shadow: strokes,
29836             stroke: strokes,
29837             fill: areas
29838         };
29839
29840         var clipPaths = surface.selectAll('defs').selectAll('.clipPath')
29841            .filter(filter)
29842            .data(data.clip, iD.Entity.key);
29843
29844         clipPaths.enter()
29845            .append('clipPath')
29846            .attr('class', 'clipPath')
29847            .attr('id', function(entity) { return entity.id + '-clippath'; })
29848            .append('path');
29849
29850         clipPaths.selectAll('path')
29851            .attr('d', path);
29852
29853         clipPaths.exit()
29854            .remove();
29855
29856         var areagroup = surface
29857             .select('.layer-areas')
29858             .selectAll('g.areagroup')
29859             .data(['fill', 'shadow', 'stroke']);
29860
29861         areagroup.enter()
29862             .append('g')
29863             .attr('class', function(d) { return 'layer areagroup area-' + d; });
29864
29865         var paths = areagroup
29866             .selectAll('path')
29867             .filter(filter)
29868             .data(function(layer) { return data[layer]; }, iD.Entity.key);
29869
29870         // Remove exiting areas first, so they aren't included in the `fills`
29871         // array used for sorting below (https://github.com/openstreetmap/iD/issues/1903).
29872         paths.exit()
29873             .remove();
29874
29875         var fills = surface.selectAll('.area-fill path.area')[0];
29876
29877         var bisect = d3.bisector(function(node) {
29878             return -node.__data__.area(graph);
29879         }).left;
29880
29881         function sortedByArea(entity) {
29882             if (this.__data__ === 'fill') {
29883                 return fills[bisect(fills, -entity.area(graph))];
29884             }
29885         }
29886
29887         paths.enter()
29888             .insert('path', sortedByArea)
29889             .each(function(entity) {
29890                 var layer = this.parentNode.__data__;
29891
29892                 this.setAttribute('class', entity.type + ' area ' + layer + ' ' + entity.id);
29893
29894                 if (layer === 'fill') {
29895                     this.setAttribute('clip-path', 'url(#' + entity.id + '-clippath)');
29896                     setPattern.apply(this, arguments);
29897                 }
29898             })
29899             .call(iD.svg.TagClasses());
29900
29901         paths
29902             .attr('d', path);
29903     };
29904 };
29905 /*
29906     A standalone SVG element that contains only a `defs` sub-element. To be
29907     used once globally, since defs IDs must be unique within a document.
29908 */
29909 iD.svg.Defs = function(context) {
29910
29911     function SVGSpriteDefinition(id, href) {
29912         return function(defs) {
29913             d3.xml(href, 'image/svg+xml', function(err, svg) {
29914                 if (err) return;
29915                 defs.node().appendChild(
29916                     d3.select(svg.documentElement).attr('id', id).node()
29917                 );
29918             });
29919         };
29920     }
29921
29922     return function (selection) {
29923         var defs = selection.append('defs');
29924
29925         // marker
29926         defs.append('marker')
29927             .attr({
29928                 id: 'oneway-marker',
29929                 viewBox: '0 0 10 10',
29930                 refY: 2.5,
29931                 refX: 5,
29932                 markerWidth: 2,
29933                 markerHeight: 2,
29934                 markerUnits: 'strokeWidth',
29935                 orient: 'auto'
29936             })
29937             .append('path')
29938             .attr('class', 'oneway')
29939             .attr('d', 'M 5 3 L 0 3 L 0 2 L 5 2 L 5 0 L 10 2.5 L 5 5 z')
29940             .attr('stroke', 'none')
29941             .attr('fill', '#000')
29942             .attr('opacity', '0.5');
29943
29944         // patterns
29945         var patterns = defs.selectAll('pattern')
29946             .data([
29947                 // pattern name, pattern image name
29948                 ['wetland', 'wetland'],
29949                 ['construction', 'construction'],
29950                 ['cemetery', 'cemetery'],
29951                 ['orchard', 'orchard'],
29952                 ['farmland', 'farmland'],
29953                 ['beach', 'dots'],
29954                 ['scrub', 'dots'],
29955                 ['meadow', 'dots']
29956             ])
29957             .enter()
29958             .append('pattern')
29959             .attr({
29960                 id: function (d) {
29961                     return 'pattern-' + d[0];
29962                 },
29963                 width: 32,
29964                 height: 32,
29965                 patternUnits: 'userSpaceOnUse'
29966             });
29967
29968         patterns.append('rect')
29969             .attr({
29970                 x: 0,
29971                 y: 0,
29972                 width: 32,
29973                 height: 32,
29974                 'class': function (d) {
29975                     return 'pattern-color-' + d[0];
29976                 }
29977             });
29978
29979         patterns.append('image')
29980             .attr({
29981                 x: 0,
29982                 y: 0,
29983                 width: 32,
29984                 height: 32
29985             })
29986             .attr('xlink:href', function (d) {
29987                 return context.imagePath('pattern/' + d[1] + '.png');
29988             });
29989
29990         // clip paths
29991         defs.selectAll()
29992             .data([12, 18, 20, 32, 45])
29993             .enter().append('clipPath')
29994             .attr('id', function (d) {
29995                 return 'clip-square-' + d;
29996             })
29997             .append('rect')
29998             .attr('x', 0)
29999             .attr('y', 0)
30000             .attr('width', function (d) {
30001                 return d;
30002             })
30003             .attr('height', function (d) {
30004                 return d;
30005             });
30006
30007         defs.call(SVGSpriteDefinition(
30008             'iD-sprite',
30009             context.imagePath('iD-sprite.svg')));
30010
30011         defs.call(SVGSpriteDefinition(
30012             'maki-sprite',
30013             context.imagePath('maki-sprite.svg')));
30014     };
30015 };
30016 iD.svg.Icon = function(name, svgklass, useklass) {
30017     return function (selection) {
30018         selection.selectAll('svg')
30019             .data([0])
30020             .enter()
30021             .append('svg')
30022             .attr('class', 'icon ' + (svgklass || ''))
30023             .append('use')
30024             .attr('xlink:href', name)
30025             .attr('class', useklass);
30026     };
30027 };
30028 iD.svg.Labels = function(projection, context) {
30029     var path = d3.geo.path().projection(projection);
30030
30031     // Replace with dict and iterate over entities tags instead?
30032     var label_stack = [
30033         ['line', 'aeroway'],
30034         ['line', 'highway'],
30035         ['line', 'railway'],
30036         ['line', 'waterway'],
30037         ['area', 'aeroway'],
30038         ['area', 'amenity'],
30039         ['area', 'building'],
30040         ['area', 'historic'],
30041         ['area', 'leisure'],
30042         ['area', 'man_made'],
30043         ['area', 'natural'],
30044         ['area', 'shop'],
30045         ['area', 'tourism'],
30046         ['point', 'aeroway'],
30047         ['point', 'amenity'],
30048         ['point', 'building'],
30049         ['point', 'historic'],
30050         ['point', 'leisure'],
30051         ['point', 'man_made'],
30052         ['point', 'natural'],
30053         ['point', 'shop'],
30054         ['point', 'tourism'],
30055         ['line', 'name'],
30056         ['area', 'name'],
30057         ['point', 'name']
30058     ];
30059
30060     var default_size = 12;
30061
30062     var font_sizes = label_stack.map(function(d) {
30063         var style = iD.util.getStyle('text.' + d[0] + '.tag-' + d[1]),
30064             m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
30065         if (m) return parseInt(m[1], 10);
30066
30067         style = iD.util.getStyle('text.' + d[0]);
30068         m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
30069         if (m) return parseInt(m[1], 10);
30070
30071         return default_size;
30072     });
30073
30074     var iconSize = 18;
30075
30076     var pointOffsets = [
30077         [15, -11, 'start'], // right
30078         [10, -11, 'start'], // unused right now
30079         [-15, -11, 'end']
30080     ];
30081
30082     var lineOffsets = [50, 45, 55, 40, 60, 35, 65, 30, 70, 25,
30083         75, 20, 80, 15, 95, 10, 90, 5, 95];
30084
30085
30086     var noIcons = ['building', 'landuse', 'natural'];
30087     function blacklisted(preset) {
30088         return _.any(noIcons, function(s) {
30089             return preset.id.indexOf(s) >= 0;
30090         });
30091     }
30092
30093     function get(array, prop) {
30094         return function(d, i) { return array[i][prop]; };
30095     }
30096
30097     var textWidthCache = {};
30098
30099     function textWidth(text, size, elem) {
30100         var c = textWidthCache[size];
30101         if (!c) c = textWidthCache[size] = {};
30102
30103         if (c[text]) {
30104             return c[text];
30105
30106         } else if (elem) {
30107             c[text] = elem.getComputedTextLength();
30108             return c[text];
30109
30110         } else {
30111             var str = encodeURIComponent(text).match(/%[CDEFcdef]/g);
30112             if (str === null) {
30113                 return size / 3 * 2 * text.length;
30114             } else {
30115                 return size / 3 * (2 * text.length + str.length);
30116             }
30117         }
30118     }
30119
30120     function drawLineLabels(group, entities, filter, classes, labels) {
30121         var texts = group.selectAll('text.' + classes)
30122             .filter(filter)
30123             .data(entities, iD.Entity.key);
30124
30125         texts.enter()
30126             .append('text')
30127             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; })
30128             .append('textPath')
30129             .attr('class', 'textpath');
30130
30131
30132         texts.selectAll('.textpath')
30133             .filter(filter)
30134             .data(entities, iD.Entity.key)
30135             .attr({
30136                 'startOffset': '50%',
30137                 'xlink:href': function(d) { return '#labelpath-' + d.id; }
30138             })
30139             .text(iD.util.displayName);
30140
30141         texts.exit().remove();
30142     }
30143
30144     function drawLinePaths(group, entities, filter, classes, labels) {
30145         var halos = group.selectAll('path')
30146             .filter(filter)
30147             .data(entities, iD.Entity.key);
30148
30149         halos.enter()
30150             .append('path')
30151             .style('stroke-width', get(labels, 'font-size'))
30152             .attr('id', function(d) { return 'labelpath-' + d.id; })
30153             .attr('class', classes);
30154
30155         halos.attr('d', get(labels, 'lineString'));
30156
30157         halos.exit().remove();
30158     }
30159
30160     function drawPointLabels(group, entities, filter, classes, labels) {
30161
30162         var texts = group.selectAll('text.' + classes)
30163             .filter(filter)
30164             .data(entities, iD.Entity.key);
30165
30166         texts.enter()
30167             .append('text')
30168             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; });
30169
30170         texts.attr('x', get(labels, 'x'))
30171             .attr('y', get(labels, 'y'))
30172             .style('text-anchor', get(labels, 'textAnchor'))
30173             .text(iD.util.displayName)
30174             .each(function(d, i) { textWidth(iD.util.displayName(d), labels[i].height, this); });
30175
30176         texts.exit().remove();
30177         return texts;
30178     }
30179
30180     function drawAreaLabels(group, entities, filter, classes, labels) {
30181         entities = entities.filter(hasText);
30182         labels = labels.filter(hasText);
30183         return drawPointLabels(group, entities, filter, classes, labels);
30184
30185         function hasText(d, i) {
30186             return labels[i].hasOwnProperty('x') && labels[i].hasOwnProperty('y');
30187         }
30188     }
30189
30190     function drawAreaIcons(group, entities, filter, classes, labels) {
30191         var icons = group.selectAll('use')
30192             .filter(filter)
30193             .data(entities, iD.Entity.key);
30194
30195         icons.enter()
30196             .append('use')
30197             .attr('class', 'icon areaicon')
30198             .attr('width', '18px')
30199             .attr('height', '18px');
30200
30201         icons.attr('transform', get(labels, 'transform'))
30202             .attr('xlink:href', function(d) {
30203                 var icon = context.presets().match(d, context.graph()).icon;
30204                 return '#' + icon + (icon === 'hairdresser' ? '-24': '-18');    // workaround: maki hairdresser-18 broken?
30205             });
30206
30207
30208         icons.exit().remove();
30209     }
30210
30211     function reverse(p) {
30212         var angle = Math.atan2(p[1][1] - p[0][1], p[1][0] - p[0][0]);
30213         return !(p[0][0] < p[p.length - 1][0] && angle < Math.PI/2 && angle > -Math.PI/2);
30214     }
30215
30216     function lineString(nodes) {
30217         return 'M' + nodes.join('L');
30218     }
30219
30220     function subpath(nodes, from, to) {
30221         function segmentLength(i) {
30222             var dx = nodes[i][0] - nodes[i + 1][0];
30223             var dy = nodes[i][1] - nodes[i + 1][1];
30224             return Math.sqrt(dx * dx + dy * dy);
30225         }
30226
30227         var sofar = 0,
30228             start, end, i0, i1;
30229         for (var i = 0; i < nodes.length - 1; i++) {
30230             var current = segmentLength(i);
30231             var portion;
30232             if (!start && sofar + current >= from) {
30233                 portion = (from - sofar) / current;
30234                 start = [
30235                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30236                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30237                 ];
30238                 i0 = i + 1;
30239             }
30240             if (!end && sofar + current >= to) {
30241                 portion = (to - sofar) / current;
30242                 end = [
30243                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30244                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30245                 ];
30246                 i1 = i + 1;
30247             }
30248             sofar += current;
30249
30250         }
30251         var ret = nodes.slice(i0, i1);
30252         ret.unshift(start);
30253         ret.push(end);
30254         return ret;
30255
30256     }
30257
30258     function hideOnMouseover() {
30259         var layers = d3.select(this)
30260             .selectAll('.layer-label, .layer-halo');
30261
30262         layers.selectAll('.proximate')
30263             .classed('proximate', false);
30264
30265         var mouse = context.mouse(),
30266             pad = 50,
30267             rect = [mouse[0] - pad, mouse[1] - pad, mouse[0] + pad, mouse[1] + pad],
30268             ids = _.pluck(rtree.search(rect), 'id');
30269
30270         if (!ids.length) return;
30271         layers.selectAll('.' + ids.join(', .'))
30272             .classed('proximate', true);
30273     }
30274
30275     var rtree = rbush(),
30276         rectangles = {};
30277
30278     function labels(surface, graph, entities, filter, dimensions, fullRedraw) {
30279
30280         var hidePoints = !surface.select('.node.point').node();
30281
30282         var labelable = [], i, k, entity;
30283         for (i = 0; i < label_stack.length; i++) labelable.push([]);
30284
30285         if (fullRedraw) {
30286             rtree.clear();
30287             rectangles = {};
30288         } else {
30289             for (i = 0; i < entities.length; i++) {
30290                 rtree.remove(rectangles[entities[i].id]);
30291             }
30292         }
30293
30294         // Split entities into groups specified by label_stack
30295         for (i = 0; i < entities.length; i++) {
30296             entity = entities[i];
30297             var geometry = entity.geometry(graph);
30298
30299             if (geometry === 'vertex')
30300                 continue;
30301             if (hidePoints && geometry === 'point')
30302                 continue;
30303
30304             var preset = geometry === 'area' && context.presets().match(entity, graph),
30305                 icon = preset && !blacklisted(preset) && preset.icon;
30306
30307             if (!icon && !iD.util.displayName(entity))
30308                 continue;
30309
30310             for (k = 0; k < label_stack.length; k++) {
30311                 if (geometry === label_stack[k][0] && entity.tags[label_stack[k][1]]) {
30312                     labelable[k].push(entity);
30313                     break;
30314                 }
30315             }
30316         }
30317
30318         var positions = {
30319             point: [],
30320             line: [],
30321             area: []
30322         };
30323
30324         var labelled = {
30325             point: [],
30326             line: [],
30327             area: []
30328         };
30329
30330         // Try and find a valid label for labellable entities
30331         for (k = 0; k < labelable.length; k++) {
30332             var font_size = font_sizes[k];
30333             for (i = 0; i < labelable[k].length; i++) {
30334                 entity = labelable[k][i];
30335                 var name = iD.util.displayName(entity),
30336                     width = name && textWidth(name, font_size),
30337                     p;
30338                 if (entity.geometry(graph) === 'point') {
30339                     p = getPointLabel(entity, width, font_size);
30340                 } else if (entity.geometry(graph) === 'line') {
30341                     p = getLineLabel(entity, width, font_size);
30342                 } else if (entity.geometry(graph) === 'area') {
30343                     p = getAreaLabel(entity, width, font_size);
30344                 }
30345                 if (p) {
30346                     p.classes = entity.geometry(graph) + ' tag-' + label_stack[k][1];
30347                     positions[entity.geometry(graph)].push(p);
30348                     labelled[entity.geometry(graph)].push(entity);
30349                 }
30350             }
30351         }
30352
30353         function getPointLabel(entity, width, height) {
30354             var coord = projection(entity.loc),
30355                 m = 5,  // margin
30356                 offset = pointOffsets[0],
30357                 p = {
30358                     height: height,
30359                     width: width,
30360                     x: coord[0] + offset[0],
30361                     y: coord[1] + offset[1],
30362                     textAnchor: offset[2]
30363                 };
30364             var rect = [p.x - m, p.y - m, p.x + width + m, p.y + height + m];
30365             if (tryInsert(rect, entity.id)) return p;
30366         }
30367
30368
30369         function getLineLabel(entity, width, height) {
30370             var nodes = _.pluck(graph.childNodes(entity), 'loc').map(projection),
30371                 length = iD.geo.pathLength(nodes);
30372             if (length < width + 20) return;
30373
30374             for (var i = 0; i < lineOffsets.length; i++) {
30375                 var offset = lineOffsets[i],
30376                     middle = offset / 100 * length,
30377                     start = middle - width/2;
30378                 if (start < 0 || start + width > length) continue;
30379                 var sub = subpath(nodes, start, start + width),
30380                     rev = reverse(sub),
30381                     rect = [
30382                         Math.min(sub[0][0], sub[sub.length - 1][0]) - 10,
30383                         Math.min(sub[0][1], sub[sub.length - 1][1]) - 10,
30384                         Math.max(sub[0][0], sub[sub.length - 1][0]) + 20,
30385                         Math.max(sub[0][1], sub[sub.length - 1][1]) + 30
30386                     ];
30387                 if (rev) sub = sub.reverse();
30388                 if (tryInsert(rect, entity.id)) return {
30389                     'font-size': height + 2,
30390                     lineString: lineString(sub),
30391                     startOffset: offset + '%'
30392                 };
30393             }
30394         }
30395
30396         function getAreaLabel(entity, width, height) {
30397             var centroid = path.centroid(entity.asGeoJSON(graph, true)),
30398                 extent = entity.extent(graph),
30399                 entitywidth = projection(extent[1])[0] - projection(extent[0])[0],
30400                 rect;
30401
30402             if (isNaN(centroid[0]) || entitywidth < 20) return;
30403
30404             var iconX = centroid[0] - (iconSize/2),
30405                 iconY = centroid[1] - (iconSize/2),
30406                 textOffset = iconSize + 5;
30407
30408             var p = {
30409                 transform: 'translate(' + iconX + ',' + iconY + ')'
30410             };
30411
30412             if (width && entitywidth >= width + 20) {
30413                 p.x = centroid[0];
30414                 p.y = centroid[1] + textOffset;
30415                 p.textAnchor = 'middle';
30416                 p.height = height;
30417                 rect = [p.x - width/2, p.y, p.x + width/2, p.y + height + textOffset];
30418             } else {
30419                 rect = [iconX, iconY, iconX + iconSize, iconY + iconSize];
30420             }
30421
30422             if (tryInsert(rect, entity.id)) return p;
30423
30424         }
30425
30426         function tryInsert(rect, id) {
30427             // Check that label is visible
30428             if (rect[0] < 0 || rect[1] < 0 || rect[2] > dimensions[0] ||
30429                 rect[3] > dimensions[1]) return false;
30430             var v = rtree.search(rect).length === 0;
30431             if (v) {
30432                 rect.id = id;
30433                 rtree.insert(rect);
30434                 rectangles[id] = rect;
30435             }
30436             return v;
30437         }
30438
30439         var label = surface.select('.layer-label'),
30440             halo = surface.select('.layer-halo');
30441
30442         // points
30443         drawPointLabels(label, labelled.point, filter, 'pointlabel', positions.point);
30444         drawPointLabels(halo, labelled.point, filter, 'pointlabel-halo', positions.point);
30445
30446         // lines
30447         drawLinePaths(halo, labelled.line, filter, '', positions.line);
30448         drawLineLabels(label, labelled.line, filter, 'linelabel', positions.line);
30449         drawLineLabels(halo, labelled.line, filter, 'linelabel-halo', positions.line);
30450
30451         // areas
30452         drawAreaLabels(label, labelled.area, filter, 'arealabel', positions.area);
30453         drawAreaLabels(halo, labelled.area, filter, 'arealabel-halo', positions.area);
30454         drawAreaIcons(label, labelled.area, filter, 'arealabel-icon', positions.area);
30455     }
30456
30457     labels.supersurface = function(supersurface) {
30458         supersurface
30459             .on('mousemove.hidelabels', hideOnMouseover)
30460             .on('mousedown.hidelabels', function () {
30461                 supersurface.on('mousemove.hidelabels', null);
30462             })
30463             .on('mouseup.hidelabels', function () {
30464                 supersurface.on('mousemove.hidelabels', hideOnMouseover);
30465             });
30466     };
30467
30468     return labels;
30469 };
30470 iD.svg.Lines = function(projection) {
30471
30472     var highway_stack = {
30473         motorway: 0,
30474         motorway_link: 1,
30475         trunk: 2,
30476         trunk_link: 3,
30477         primary: 4,
30478         primary_link: 5,
30479         secondary: 6,
30480         tertiary: 7,
30481         unclassified: 8,
30482         residential: 9,
30483         service: 10,
30484         footway: 11
30485     };
30486
30487     function waystack(a, b) {
30488         var as = 0, bs = 0;
30489
30490         if (a.tags.highway) { as -= highway_stack[a.tags.highway]; }
30491         if (b.tags.highway) { bs -= highway_stack[b.tags.highway]; }
30492         return as - bs;
30493     }
30494
30495     return function drawLines(surface, graph, entities, filter) {
30496         var ways = [], pathdata = {}, onewaydata = {},
30497             getPath = iD.svg.Path(projection, graph);
30498
30499         for (var i = 0; i < entities.length; i++) {
30500             var entity = entities[i],
30501                 outer = iD.geo.simpleMultipolygonOuterMember(entity, graph);
30502             if (outer) {
30503                 ways.push(entity.mergeTags(outer.tags));
30504             } else if (entity.geometry(graph) === 'line') {
30505                 ways.push(entity);
30506             }
30507         }
30508
30509         ways = ways.filter(getPath);
30510
30511         pathdata = _.groupBy(ways, function(way) { return way.layer(); });
30512
30513         _.forOwn(pathdata, function(v, k) {
30514             onewaydata[k] = _(v)
30515                 .filter(function(d) { return d.isOneWay(); })
30516                 .map(iD.svg.OneWaySegments(projection, graph, 35))
30517                 .flatten()
30518                 .valueOf();
30519         });
30520
30521         var layergroup = surface
30522             .select('.layer-lines')
30523             .selectAll('g.layergroup')
30524             .data(d3.range(-10, 11));
30525
30526         layergroup.enter()
30527             .append('g')
30528             .attr('class', function(d) { return 'layer layergroup layer' + String(d); });
30529
30530
30531         var linegroup = layergroup
30532             .selectAll('g.linegroup')
30533             .data(['shadow', 'casing', 'stroke']);
30534
30535         linegroup.enter()
30536             .append('g')
30537             .attr('class', function(d) { return 'layer linegroup line-' + d; });
30538
30539
30540         var lines = linegroup
30541             .selectAll('path')
30542             .filter(filter)
30543             .data(
30544                 function() { return pathdata[this.parentNode.parentNode.__data__] || []; },
30545                 iD.Entity.key
30546             );
30547
30548         // Optimization: call simple TagClasses only on enter selection. This
30549         // works because iD.Entity.key is defined to include the entity v attribute.
30550         lines.enter()
30551             .append('path')
30552             .attr('class', function(d) { return 'way line ' + this.parentNode.__data__ + ' ' + d.id; })
30553             .call(iD.svg.TagClasses());
30554
30555         lines
30556             .sort(waystack)
30557             .attr('d', getPath)
30558             .call(iD.svg.TagClasses().tags(iD.svg.MultipolygonMemberTags(graph)));
30559
30560         lines.exit()
30561             .remove();
30562
30563
30564         var onewaygroup = layergroup
30565             .selectAll('g.onewaygroup')
30566             .data(['oneway']);
30567
30568         onewaygroup.enter()
30569             .append('g')
30570             .attr('class', 'layer onewaygroup');
30571
30572
30573         var oneways = onewaygroup
30574             .selectAll('path')
30575             .filter(filter)
30576             .data(
30577                 function() { return onewaydata[this.parentNode.parentNode.__data__] || []; },
30578                 function(d) { return [d.id, d.index]; }
30579             );
30580
30581         oneways.enter()
30582             .append('path')
30583             .attr('class', 'oneway')
30584             .attr('marker-mid', 'url(#oneway-marker)');
30585
30586         oneways
30587             .attr('d', function(d) { return d.d; });
30588
30589         if (iD.detect().ie) {
30590             oneways.each(function() { this.parentNode.insertBefore(this, this); });
30591         }
30592
30593         oneways.exit()
30594             .remove();
30595
30596     };
30597 };
30598 iD.svg.Midpoints = function(projection, context) {
30599     return function drawMidpoints(surface, graph, entities, filter, extent) {
30600         var poly = extent.polygon(),
30601             midpoints = {};
30602
30603         for (var i = 0; i < entities.length; i++) {
30604             var entity = entities[i];
30605
30606             if (entity.type !== 'way')
30607                 continue;
30608             if (!filter(entity))
30609                 continue;
30610             if (context.selectedIDs().indexOf(entity.id) < 0)
30611                 continue;
30612
30613             var nodes = graph.childNodes(entity);
30614             for (var j = 0; j < nodes.length - 1; j++) {
30615
30616                 var a = nodes[j],
30617                     b = nodes[j + 1],
30618                     id = [a.id, b.id].sort().join('-');
30619
30620                 if (midpoints[id]) {
30621                     midpoints[id].parents.push(entity);
30622                 } else {
30623                     if (iD.geo.euclideanDistance(projection(a.loc), projection(b.loc)) > 40) {
30624                         var point = iD.geo.interp(a.loc, b.loc, 0.5),
30625                             loc = null;
30626
30627                         if (extent.intersects(point)) {
30628                             loc = point;
30629                         } else {
30630                             for (var k = 0; k < 4; k++) {
30631                                 point = iD.geo.lineIntersection([a.loc, b.loc], [poly[k], poly[k+1]]);
30632                                 if (point &&
30633                                     iD.geo.euclideanDistance(projection(a.loc), projection(point)) > 20 &&
30634                                     iD.geo.euclideanDistance(projection(b.loc), projection(point)) > 20)
30635                                 {
30636                                     loc = point;
30637                                     break;
30638                                 }
30639                             }
30640                         }
30641
30642                         if (loc) {
30643                             midpoints[id] = {
30644                                 type: 'midpoint',
30645                                 id: id,
30646                                 loc: loc,
30647                                 edge: [a.id, b.id],
30648                                 parents: [entity]
30649                             };
30650                         }
30651                     }
30652                 }
30653             }
30654         }
30655
30656         function midpointFilter(d) {
30657             if (midpoints[d.id])
30658                 return true;
30659
30660             for (var i = 0; i < d.parents.length; i++)
30661                 if (filter(d.parents[i]))
30662                     return true;
30663
30664             return false;
30665         }
30666
30667         var groups = surface.select('.layer-hit').selectAll('g.midpoint')
30668             .filter(midpointFilter)
30669             .data(_.values(midpoints), function(d) { return d.id; });
30670
30671         var enter = groups.enter()
30672             .insert('g', ':first-child')
30673             .attr('class', 'midpoint');
30674
30675         enter.append('polygon')
30676             .attr('points', '-6,8 10,0 -6,-8')
30677             .attr('class', 'shadow');
30678
30679         enter.append('polygon')
30680             .attr('points', '-3,4 5,0 -3,-4')
30681             .attr('class', 'fill');
30682
30683         groups
30684             .attr('transform', function(d) {
30685                 var translate = iD.svg.PointTransform(projection),
30686                     a = context.entity(d.edge[0]),
30687                     b = context.entity(d.edge[1]),
30688                     angle = Math.round(iD.geo.angle(a, b, projection) * (180 / Math.PI));
30689                 return translate(d) + ' rotate(' + angle + ')';
30690             })
30691             .call(iD.svg.TagClasses().tags(
30692                 function(d) { return d.parents[0].tags; }
30693             ));
30694
30695         // Propagate data bindings.
30696         groups.select('polygon.shadow');
30697         groups.select('polygon.fill');
30698
30699         groups.exit()
30700             .remove();
30701     };
30702 };
30703 iD.svg.Points = function(projection, context) {
30704     function markerPath(selection, klass) {
30705         selection
30706             .attr('class', klass)
30707             .attr('transform', 'translate(-8, -23)')
30708             .attr('d', 'M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z');
30709     }
30710
30711     function sortY(a, b) {
30712         return b.loc[1] - a.loc[1];
30713     }
30714
30715     return function drawPoints(surface, entities, filter) {
30716         var graph = context.graph(),
30717             wireframe = surface.classed('fill-wireframe'),
30718             points = wireframe ? [] : _.filter(entities, function(e) {
30719                 return e.geometry(graph) === 'point';
30720             });
30721
30722         points.sort(sortY);
30723
30724         var groups = surface.select('.layer-hit').selectAll('g.point')
30725             .filter(filter)
30726             .data(points, iD.Entity.key);
30727
30728         var group = groups.enter()
30729             .append('g')
30730             .attr('class', function(d) { return 'node point ' + d.id; })
30731             .order();
30732
30733         group.append('path')
30734             .call(markerPath, 'shadow');
30735
30736         group.append('path')
30737             .call(markerPath, 'stroke');
30738
30739         group.append('use')
30740             .attr('transform', 'translate(-6, -20)')
30741             .attr('class', 'icon')
30742             .attr('width', '12px')
30743             .attr('height', '12px');
30744
30745         groups.attr('transform', iD.svg.PointTransform(projection))
30746             .call(iD.svg.TagClasses());
30747
30748         // Selecting the following implicitly
30749         // sets the data (point entity) on the element
30750         groups.select('.shadow');
30751         groups.select('.stroke');
30752         groups.select('.icon')
30753             .attr('xlink:href', function(entity) {
30754                 var preset = context.presets().match(entity, context.graph());
30755                 return preset.icon ? '#' + preset.icon + '-12' : '';
30756             });
30757
30758         groups.exit()
30759             .remove();
30760     };
30761 };
30762 iD.svg.Surface = function() {
30763     return function (selection) {
30764         selection.selectAll('defs')
30765             .data([0])
30766             .enter()
30767             .append('defs');
30768
30769         var layers = selection.selectAll('.layer')
30770             .data(['areas', 'lines', 'hit', 'halo', 'label']);
30771
30772         layers.enter().append('g')
30773             .attr('class', function(d) { return 'layer layer-' + d; });
30774     };
30775 };
30776 iD.svg.TagClasses = function() {
30777     var primaries = [
30778             'building', 'highway', 'railway', 'waterway', 'aeroway',
30779             'motorway', 'boundary', 'power', 'amenity', 'natural', 'landuse',
30780             'leisure', 'place'
30781         ],
30782         statuses = [
30783             'proposed', 'construction', 'disused', 'abandoned', 'dismantled',
30784             'razed', 'demolished', 'obliterated'
30785         ],
30786         secondaries = [
30787             'oneway', 'bridge', 'tunnel', 'embankment', 'cutting', 'barrier',
30788             'surface', 'tracktype'
30789         ],
30790         tagClassRe = /^tag-/,
30791         tags = function(entity) { return entity.tags; };
30792
30793
30794     var tagClasses = function(selection) {
30795         selection.each(function tagClassesEach(entity) {
30796             var value = this.className,
30797                 classes, primary, status;
30798
30799             if (value.baseVal !== undefined) value = value.baseVal;
30800
30801             classes = value.trim().split(/\s+/).filter(function(name) {
30802                 return name.length && !tagClassRe.test(name);
30803             }).join(' ');
30804
30805             var t = tags(entity), i, k, v;
30806
30807             // pick at most one primary classification tag..
30808             for (i = 0; i < primaries.length; i++) {
30809                 k = primaries[i];
30810                 v = t[k];
30811                 if (!v || v === 'no') continue;
30812
30813                 primary = k;
30814                 if (statuses.indexOf(v) !== -1) {   // e.g. `railway=abandoned`
30815                     status = v;
30816                     classes += ' tag-' + k;
30817                 } else {
30818                     classes += ' tag-' + k + ' tag-' + k + '-' + v;
30819                 }
30820
30821                 break;
30822             }
30823
30824             // add at most one status tag, only if relates to primary tag..
30825             if (!status) {
30826                 for (i = 0; i < statuses.length; i++) {
30827                     k = statuses[i];
30828                     v = t[k];
30829                     if (!v || v === 'no') continue;
30830
30831                     if (v === 'yes') {   // e.g. `railway=rail + abandoned=yes`
30832                         status = k;
30833                     }
30834                     else if (primary && primary === v) {  // e.g. `railway=rail + abandoned=railway`
30835                         status = k;
30836                     } else if (!primary && primaries.indexOf(v) !== -1) {  // e.g. `abandoned=railway`
30837                         status = k;
30838                         primary = v;
30839                         classes += ' tag-' + v;
30840                     }  // else ignore e.g.  `highway=path + abandoned=railway`
30841
30842                     if (status) break;
30843                 }
30844             }
30845
30846             if (status) {
30847                 classes += ' tag-status tag-status-' + status;
30848             }
30849
30850             // add any secondary (structure) tags
30851             for (i = 0; i < secondaries.length; i++) {
30852                 k = secondaries[i];
30853                 v = t[k];
30854                 if (!v || v === 'no') continue;
30855                 classes += ' tag-' + k + ' tag-' + k + '-' + v;
30856             }
30857
30858             // For highways, look for surface tagging..
30859             if (primary === 'highway') {
30860                 var paved = (t.highway !== 'track');
30861                 for (k in t) {
30862                     v = t[k];
30863                     if (k in iD.pavedTags) {
30864                         paved = !!iD.pavedTags[k][v];
30865                         break;
30866                     }
30867                 }
30868                 if (!paved) {
30869                     classes += ' tag-unpaved';
30870                 }
30871             }
30872
30873             classes = classes.trim();
30874
30875             if (classes !== value) {
30876                 d3.select(this).attr('class', classes);
30877             }
30878         });
30879     };
30880
30881     tagClasses.tags = function(_) {
30882         if (!arguments.length) return tags;
30883         tags = _;
30884         return tagClasses;
30885     };
30886
30887     return tagClasses;
30888 };
30889 iD.svg.Turns = function(projection) {
30890     return function(surface, graph, turns) {
30891         function key(turn) {
30892             return [turn.from.node + turn.via.node + turn.to.node].join('-');
30893         }
30894
30895         function icon(turn) {
30896             var u = turn.u ? '-u' : '';
30897             if (!turn.restriction)
30898                 return '#turn-yes' + u;
30899             var restriction = graph.entity(turn.restriction).tags.restriction;
30900             return '#turn-' +
30901                 (!turn.indirect_restriction && /^only_/.test(restriction) ? 'only' : 'no') + u;
30902         }
30903
30904         var groups = surface.select('.layer-hit').selectAll('g.turn')
30905             .data(turns, key);
30906
30907         // Enter
30908         var enter = groups.enter().append('g')
30909             .attr('class', 'turn');
30910
30911         var nEnter = enter.filter(function (turn) { return !turn.u; });
30912
30913         nEnter.append('rect')
30914             .attr('transform', 'translate(-22, -12)')
30915             .attr('width', '44')
30916             .attr('height', '24');
30917
30918         nEnter.append('use')
30919             .attr('transform', 'translate(-22, -12)')
30920             .attr('width', '44')
30921             .attr('height', '24');
30922
30923
30924         var uEnter = enter.filter(function (turn) { return turn.u; });
30925
30926         uEnter.append('circle')
30927             .attr('r', '16');
30928
30929         uEnter.append('use')
30930             .attr('transform', 'translate(-16, -16)')
30931             .attr('width', '32')
30932             .attr('height', '32');
30933
30934
30935         // Update
30936         groups
30937             .attr('transform', function (turn) {
30938                 var v = graph.entity(turn.via.node),
30939                     t = graph.entity(turn.to.node),
30940                     a = iD.geo.angle(v, t, projection),
30941                     p = projection(v.loc),
30942                     r = turn.u ? 0 : 60;
30943
30944                 return 'translate(' + (r * Math.cos(a) + p[0]) + ',' + (r * Math.sin(a) + p[1]) + ') ' +
30945                     'rotate(' + a * 180 / Math.PI + ')';
30946             });
30947
30948         groups.select('use')
30949             .attr('xlink:href', icon);
30950
30951         groups.select('rect');
30952         groups.select('circle');
30953
30954
30955         // Exit
30956         groups.exit()
30957             .remove();
30958
30959         return this;
30960     };
30961 };
30962 iD.svg.Vertices = function(projection, context) {
30963     var radiuses = {
30964         //       z16-, z17, z18+, tagged
30965         shadow: [6,    7.5,   7.5,  11.5],
30966         stroke: [2.5,  3.5,   3.5,  7],
30967         fill:   [1,    1.5,   1.5,  1.5]
30968     };
30969
30970     var hover;
30971
30972     function siblingAndChildVertices(ids, graph, extent) {
30973         var vertices = {};
30974
30975         function addChildVertices(entity) {
30976             if (!context.features().isHiddenFeature(entity, graph, entity.geometry(graph))) {
30977                 var i;
30978                 if (entity.type === 'way') {
30979                     for (i = 0; i < entity.nodes.length; i++) {
30980                         addChildVertices(graph.entity(entity.nodes[i]));
30981                     }
30982                 } else if (entity.type === 'relation') {
30983                     for (i = 0; i < entity.members.length; i++) {
30984                         var member = context.hasEntity(entity.members[i].id);
30985                         if (member) {
30986                             addChildVertices(member);
30987                         }
30988                     }
30989                 } else if (entity.intersects(extent, graph)) {
30990                     vertices[entity.id] = entity;
30991                 }
30992             }
30993         }
30994
30995         ids.forEach(function(id) {
30996             var entity = context.hasEntity(id);
30997             if (entity && entity.type === 'node') {
30998                 vertices[entity.id] = entity;
30999                 context.graph().parentWays(entity).forEach(function(entity) {
31000                     addChildVertices(entity);
31001                 });
31002             } else if (entity) {
31003                 addChildVertices(entity);
31004             }
31005         });
31006
31007         return vertices;
31008     }
31009
31010     function draw(selection, vertices, klass, graph, zoom) {
31011         var icons = {},
31012             z;
31013
31014         if (zoom < 17) {
31015             z = 0;
31016         } else if (zoom < 18) {
31017             z = 1;
31018         } else {
31019             z = 2;
31020         }
31021
31022         var groups = selection.data(vertices, function(entity) {
31023             return iD.Entity.key(entity);
31024         });
31025
31026         function icon(entity) {
31027             if (entity.id in icons) return icons[entity.id];
31028             icons[entity.id] =
31029                 entity.hasInterestingTags() &&
31030                 context.presets().match(entity, graph).icon;
31031             return icons[entity.id];
31032         }
31033
31034         function setClass(klass) {
31035             return function(entity) {
31036                 this.setAttribute('class', 'node vertex ' + klass + ' ' + entity.id);
31037             };
31038         }
31039
31040         function setAttributes(selection) {
31041             ['shadow','stroke','fill'].forEach(function(klass) {
31042                 var rads = radiuses[klass];
31043                 selection.selectAll('.' + klass)
31044                     .each(function(entity) {
31045                         var i = z && icon(entity),
31046                             c = i ? 0.5 : 0,
31047                             r = rads[i ? 3 : z];
31048                         this.setAttribute('cx', c);
31049                         this.setAttribute('cy', -c);
31050                         this.setAttribute('r', r);
31051                         if (i && klass === 'fill') {
31052                             this.setAttribute('visibility', 'hidden');
31053                         } else {
31054                             this.removeAttribute('visibility');
31055                         }
31056                     });
31057             });
31058
31059             selection.selectAll('use')
31060                 .each(function() {
31061                     if (z) {
31062                         this.removeAttribute('visibility');
31063                     } else {
31064                         this.setAttribute('visibility', 'hidden');
31065                     }
31066                 });
31067         }
31068
31069         var enter = groups.enter()
31070             .append('g')
31071             .attr('class', function(d) { return 'node vertex ' + klass + ' ' + d.id; });
31072
31073         enter.append('circle')
31074             .each(setClass('shadow'));
31075
31076         enter.append('circle')
31077             .each(setClass('stroke'));
31078
31079         // Vertices with icons get a `use`.
31080         enter.filter(function(d) { return icon(d); })
31081             .append('use')
31082             .attr('transform', 'translate(-6, -6)')
31083             .attr('xlink:href', function(d) { return '#' + icon(d) + '-12'; })
31084             .attr('width', '12px')
31085             .attr('height', '12px')
31086             .each(setClass('icon'));
31087
31088         // Vertices with tags get a fill.
31089         enter.filter(function(d) { return d.hasInterestingTags(); })
31090             .append('circle')
31091             .each(setClass('fill'));
31092
31093         groups
31094             .attr('transform', iD.svg.PointTransform(projection))
31095             .classed('shared', function(entity) { return graph.isShared(entity); })
31096             .call(setAttributes);
31097
31098         groups.exit()
31099             .remove();
31100     }
31101
31102     function drawVertices(surface, graph, entities, filter, extent, zoom) {
31103         var selected = siblingAndChildVertices(context.selectedIDs(), graph, extent),
31104             wireframe = surface.classed('fill-wireframe'),
31105             vertices = [];
31106
31107         for (var i = 0; i < entities.length; i++) {
31108             var entity = entities[i],
31109                 geometry = entity.geometry(graph);
31110
31111             if (wireframe && geometry === 'point') {
31112                 vertices.push(entity);
31113                 continue;
31114             }
31115
31116             if (geometry !== 'vertex')
31117                 continue;
31118
31119             if (entity.id in selected ||
31120                 entity.hasInterestingTags() ||
31121                 entity.isIntersection(graph)) {
31122                 vertices.push(entity);
31123             }
31124         }
31125
31126         surface.select('.layer-hit').selectAll('g.vertex.vertex-persistent')
31127             .filter(filter)
31128             .call(draw, vertices, 'vertex-persistent', graph, zoom);
31129
31130         drawHover(surface, graph, extent, zoom);
31131     }
31132
31133     function drawHover(surface, graph, extent, zoom) {
31134         var hovered = hover ? siblingAndChildVertices([hover.id], graph, extent) : {};
31135
31136         surface.select('.layer-hit').selectAll('g.vertex.vertex-hover')
31137             .call(draw, d3.values(hovered), 'vertex-hover', graph, zoom);
31138     }
31139
31140     drawVertices.drawHover = function(surface, graph, _, extent, zoom) {
31141         if (hover !== _) {
31142             hover = _;
31143             drawHover(surface, graph, extent, zoom);
31144         }
31145     };
31146
31147     return drawVertices;
31148 };
31149 iD.ui = function(context) {
31150     function render(container) {
31151         var map = context.map();
31152
31153         if (iD.detect().opera) container.classed('opera', true);
31154
31155         var hash = iD.behavior.Hash(context);
31156
31157         hash();
31158
31159         if (!hash.hadHash) {
31160             map.centerZoom([0, 0], 2);
31161         }
31162
31163         container.append('svg')
31164             .attr('id', 'defs')
31165             .call(iD.svg.Defs(context));
31166
31167         container.append('div')
31168             .attr('id', 'sidebar')
31169             .attr('class', 'col4')
31170             .call(ui.sidebar);
31171
31172         var content = container.append('div')
31173             .attr('id', 'content');
31174
31175         var bar = content.append('div')
31176             .attr('id', 'bar')
31177             .attr('class', 'fillD');
31178
31179         var m = content.append('div')
31180             .attr('id', 'map')
31181             .call(map);
31182
31183         content.append('div')
31184             .attr('class', 'map-in-map')
31185             .style('display', 'none')
31186             .call(iD.ui.MapInMap(context));
31187
31188         content.append('div')
31189             .attr('class', 'infobox fillD2')
31190             .style('display', 'none')
31191             .call(iD.ui.Info(context));
31192
31193         bar.append('div')
31194             .attr('class', 'spacer col4');
31195
31196         var limiter = bar.append('div')
31197             .attr('class', 'limiter');
31198
31199         limiter.append('div')
31200             .attr('class', 'button-wrap joined col3')
31201             .call(iD.ui.Modes(context), limiter);
31202
31203         limiter.append('div')
31204             .attr('class', 'button-wrap joined col1')
31205             .call(iD.ui.UndoRedo(context));
31206
31207         limiter.append('div')
31208             .attr('class', 'button-wrap col1')
31209             .call(iD.ui.Save(context));
31210
31211         bar.append('div')
31212             .attr('class', 'full-screen')
31213             .call(iD.ui.FullScreen(context));
31214
31215         bar.append('div')
31216             .attr('class', 'spinner')
31217             .call(iD.ui.Spinner(context));
31218
31219         var controls = bar.append('div')
31220             .attr('class', 'map-controls');
31221
31222         controls.append('div')
31223             .attr('class', 'map-control zoombuttons')
31224             .call(iD.ui.Zoom(context));
31225
31226         controls.append('div')
31227             .attr('class', 'map-control geolocate-control')
31228             .call(iD.ui.Geolocate(map));
31229
31230         controls.append('div')
31231             .attr('class', 'map-control background-control')
31232             .call(iD.ui.Background(context));
31233
31234         controls.append('div')
31235             .attr('class', 'map-control map-data-control')
31236             .call(iD.ui.MapData(context));
31237
31238         controls.append('div')
31239             .attr('class', 'map-control help-control')
31240             .call(iD.ui.Help(context));
31241
31242         var about = content.append('div')
31243             .attr('id', 'about');
31244
31245         about.append('div')
31246             .attr('id', 'attrib')
31247             .call(iD.ui.Attribution(context));
31248
31249         var footer = about.append('div')
31250             .attr('id', 'footer')
31251             .attr('class', 'fillD');
31252
31253         footer.append('div')
31254             .attr('class', 'api-status')
31255             .call(iD.ui.Status(context));
31256
31257         footer.append('div')
31258             .attr('id', 'scale-block')
31259             .call(iD.ui.Scale(context));
31260
31261         var aboutList = footer.append('div')
31262             .attr('id', 'info-block')
31263             .append('ul')
31264             .attr('id', 'about-list');
31265
31266         if (!context.embed()) {
31267             aboutList.call(iD.ui.Account(context));
31268         }
31269
31270         aboutList.append('li')
31271             .append('a')
31272             .attr('target', '_blank')
31273             .attr('tabindex', -1)
31274             .attr('href', 'http://github.com/openstreetmap/iD')
31275             .text(iD.version);
31276
31277         var issueLinks = aboutList.append('li');
31278
31279         issueLinks.append('a')
31280             .attr('target', '_blank')
31281             .attr('tabindex', -1)
31282             .attr('href', 'https://github.com/openstreetmap/iD/issues')
31283             .call(iD.svg.Icon('#icon-bug', 'light'))
31284             .call(bootstrap.tooltip()
31285                 .title(t('report_a_bug'))
31286                 .placement('top')
31287             );
31288
31289         issueLinks.append('a')
31290             .attr('target', '_blank')
31291             .attr('tabindex', -1)
31292             .attr('href', 'https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating')
31293             .call(iD.svg.Icon('#icon-translate', 'light'))
31294             .call(bootstrap.tooltip()
31295                 .title(t('help_translate'))
31296                 .placement('top')
31297             );
31298
31299         aboutList.append('li')
31300             .attr('class', 'feature-warning')
31301             .attr('tabindex', -1)
31302             .call(iD.ui.FeatureInfo(context));
31303
31304         aboutList.append('li')
31305             .attr('class', 'user-list')
31306             .attr('tabindex', -1)
31307             .call(iD.ui.Contributors(context));
31308
31309         window.onbeforeunload = function() {
31310             return context.save();
31311         };
31312
31313         window.onunload = function() {
31314             context.history().unlock();
31315         };
31316
31317         var mapDimensions = map.dimensions();
31318
31319         d3.select(window).on('resize.editor', function() {
31320             mapDimensions = m.dimensions();
31321             map.dimensions(m.dimensions());
31322         });
31323
31324         function pan(d) {
31325             return function() {
31326                 d3.event.preventDefault();
31327                 context.pan(d);
31328             };
31329         }
31330
31331         // pan amount
31332         var pa = 10;
31333
31334         var keybinding = d3.keybinding('main')
31335             .on('⌫', function() { d3.event.preventDefault(); })
31336             .on('←', pan([pa, 0]))
31337             .on('↑', pan([0, pa]))
31338             .on('→', pan([-pa, 0]))
31339             .on('↓', pan([0, -pa]))
31340             .on('⇧←', pan([mapDimensions[0], 0]))
31341             .on('⇧↑', pan([0, mapDimensions[1]]))
31342             .on('⇧→', pan([-mapDimensions[0], 0]))
31343             .on('⇧↓', pan([0, -mapDimensions[1]]))
31344             .on(iD.ui.cmd('⌘←'), pan([mapDimensions[0], 0]))
31345             .on(iD.ui.cmd('⌘↑'), pan([0, mapDimensions[1]]))
31346             .on(iD.ui.cmd('⌘→'), pan([-mapDimensions[0], 0]))
31347             .on(iD.ui.cmd('⌘↓'), pan([0, -mapDimensions[1]]));
31348
31349         d3.select(document)
31350             .call(keybinding);
31351
31352         context.enter(iD.modes.Browse(context));
31353
31354         context.container()
31355             .call(iD.ui.Splash(context))
31356             .call(iD.ui.Restore(context));
31357
31358         var authenticating = iD.ui.Loading(context)
31359             .message(t('loading_auth'));
31360
31361         context.connection()
31362             .on('authenticating.ui', function() {
31363                 context.container()
31364                     .call(authenticating);
31365             })
31366             .on('authenticated.ui', function() {
31367                 authenticating.close();
31368             });
31369     }
31370
31371     function ui(container) {
31372         context.container(container);
31373         context.loadLocale(function() {
31374             render(container);
31375         });
31376     }
31377
31378     ui.sidebar = iD.ui.Sidebar(context);
31379
31380     return ui;
31381 };
31382
31383 iD.ui.tooltipHtml = function(text, key) {
31384     var s = '<span>' + text + '</span>';
31385     if (key) {
31386         s += '<div class="keyhint-wrap">' +
31387             '<span> ' + (t('tooltip_keyhint')) + ' </span>' +
31388             '<span class="keyhint"> ' + key + '</span></div>';
31389     }
31390     return s;
31391 };
31392 iD.ui.Account = function(context) {
31393     var connection = context.connection();
31394
31395     function update(selection) {
31396         if (!connection.authenticated()) {
31397             selection.selectAll('#userLink, #logoutLink')
31398                 .classed('hide', true);
31399             return;
31400         }
31401
31402         connection.userDetails(function(err, details) {
31403             var userLink = selection.select('#userLink'),
31404                 logoutLink = selection.select('#logoutLink');
31405
31406             userLink.html('');
31407             logoutLink.html('');
31408
31409             if (err) return;
31410
31411             selection.selectAll('#userLink, #logoutLink')
31412                 .classed('hide', false);
31413
31414             // Link
31415             userLink.append('a')
31416                 .attr('href', connection.userURL(details.display_name))
31417                 .attr('target', '_blank');
31418
31419             // Add thumbnail or dont
31420             if (details.image_url) {
31421                 userLink.append('img')
31422                     .attr('class', 'icon pre-text user-icon')
31423                     .attr('src', details.image_url);
31424             } else {
31425                 userLink
31426                     .call(iD.svg.Icon('#icon-avatar', 'pre-text light'));
31427             }
31428
31429             // Add user name
31430             userLink.append('span')
31431                 .attr('class', 'label')
31432                 .text(details.display_name);
31433
31434             logoutLink.append('a')
31435                 .attr('class', 'logout')
31436                 .attr('href', '#')
31437                 .text(t('logout'))
31438                 .on('click.logout', function() {
31439                     d3.event.preventDefault();
31440                     connection.logout();
31441                 });
31442         });
31443     }
31444
31445     return function(selection) {
31446         selection.append('li')
31447             .attr('id', 'logoutLink')
31448             .classed('hide', true);
31449
31450         selection.append('li')
31451             .attr('id', 'userLink')
31452             .classed('hide', true);
31453
31454         connection.on('auth.account', function() { update(selection); });
31455         update(selection);
31456     };
31457 };
31458 iD.ui.Attribution = function(context) {
31459     var selection;
31460
31461     function attribution(data, klass) {
31462         var div = selection.selectAll('.' + klass)
31463             .data([0]);
31464
31465         div.enter()
31466             .append('div')
31467             .attr('class', klass);
31468
31469         var background = div.selectAll('.attribution')
31470             .data(data, function(d) { return d.name(); });
31471
31472         background.enter()
31473             .append('span')
31474             .attr('class', 'attribution')
31475             .each(function(d) {
31476                 if (d.terms_html) {
31477                     d3.select(this)
31478                         .html(d.terms_html);
31479                     return;
31480                 }
31481
31482                 var source = d.terms_text || d.id || d.name();
31483
31484                 if (d.logo) {
31485                     source = '<img class="source-image" src="' + context.imagePath(d.logo) + '">';
31486                 }
31487
31488                 if (d.terms_url) {
31489                     d3.select(this)
31490                         .append('a')
31491                         .attr('href', d.terms_url)
31492                         .attr('target', '_blank')
31493                         .html(source);
31494                 } else {
31495                     d3.select(this)
31496                         .text(source);
31497                 }
31498             });
31499
31500         background.exit()
31501             .remove();
31502
31503         var copyright = background.selectAll('.copyright-notice')
31504             .data(function(d) {
31505                 var notice = d.copyrightNotices(context.map().zoom(), context.map().extent());
31506                 return notice ? [notice] : [];
31507             });
31508
31509         copyright.enter()
31510             .append('span')
31511             .attr('class', 'copyright-notice');
31512
31513         copyright.text(String);
31514
31515         copyright.exit()
31516             .remove();
31517     }
31518
31519     function update() {
31520         attribution([context.background().baseLayerSource()], 'base-layer-attribution');
31521         attribution(context.background().overlayLayerSources().filter(function (s) {
31522             return s.validZoom(context.map().zoom());
31523         }), 'overlay-layer-attribution');
31524     }
31525
31526     return function(select) {
31527         selection = select;
31528
31529         context.background()
31530             .on('change.attribution', update);
31531
31532         context.map()
31533             .on('move.attribution', _.throttle(update, 400, {leading: false}));
31534
31535         update();
31536     };
31537 };
31538 iD.ui.Background = function(context) {
31539     var key = 'B',
31540         opacities = [1, 0.75, 0.5, 0.25],
31541         directions = [
31542             ['left', [1, 0]],
31543             ['top', [0, -1]],
31544             ['right', [-1, 0]],
31545             ['bottom', [0, 1]]],
31546         opacityDefault = (context.storage('background-opacity') !== null) ?
31547             (+context.storage('background-opacity')) : 1.0,
31548         customTemplate = context.storage('background-custom-template') || '';
31549
31550     // Can be 0 from <1.3.0 use or due to issue #1923.
31551     if (opacityDefault === 0) opacityDefault = 1.0;
31552
31553     function background(selection) {
31554
31555         function sortSources(a, b) {
31556             return a.best() ? -1
31557                 : b.best() ? 1
31558                 : a.id === 'none' ? 1
31559                 : b.id === 'none' ? -1
31560                 : d3.ascending(a, b);
31561         }
31562
31563         function setOpacity(d) {
31564             var bg = context.container().selectAll('.background-layer')
31565                 .transition()
31566                 .style('opacity', d)
31567                 .attr('data-opacity', d);
31568
31569             if (!iD.detect().opera) {
31570                 iD.util.setTransform(bg, 0, 0);
31571             }
31572
31573             opacityList.selectAll('li')
31574                 .classed('active', function(_) { return _ === d; });
31575
31576             context.storage('background-opacity', d);
31577         }
31578
31579         function selectLayer() {
31580             function active(d) {
31581                 return context.background().showsLayer(d);
31582             }
31583
31584             content.selectAll('.layer, .custom_layer')
31585                 .classed('active', active)
31586                 .selectAll('input')
31587                 .property('checked', active);
31588         }
31589
31590         function clickSetSource(d) {
31591             d3.event.preventDefault();
31592             context.background().baseLayerSource(d);
31593             selectLayer();
31594         }
31595
31596         function editCustom() {
31597             d3.event.preventDefault();
31598             var template = window.prompt(t('background.custom_prompt'), customTemplate);
31599             if (!template ||
31600                 template.indexOf('google.com') !== -1 ||
31601                 template.indexOf('googleapis.com') !== -1 ||
31602                 template.indexOf('google.ru') !== -1) {
31603                 selectLayer();
31604                 return;
31605             }
31606             setCustom(template);
31607         }
31608
31609         function setCustom(template) {
31610             context.background().baseLayerSource(iD.BackgroundSource.Custom(template));
31611             selectLayer();
31612             context.storage('background-custom-template', template);
31613         }
31614
31615         function clickSetOverlay(d) {
31616             d3.event.preventDefault();
31617             context.background().toggleOverlayLayer(d);
31618             selectLayer();
31619         }
31620
31621         function drawList(layerList, type, change, filter) {
31622             var sources = context.background()
31623                 .sources(context.map().extent())
31624                 .filter(filter);
31625
31626             var layerLinks = layerList.selectAll('li.layer')
31627                 .data(sources, function(d) { return d.name(); })
31628                 .sort(sortSources);
31629
31630             var enter = layerLinks.enter()
31631                 .insert('li', '.custom_layer')
31632                 .attr('class', 'layer');
31633
31634             // only set tooltips for layers with tooltips
31635             enter.filter(function(d) { return d.description; })
31636                 .call(bootstrap.tooltip()
31637                     .title(function(d) { return d.description; })
31638                     .placement('top'));
31639
31640             var label = enter.append('label');
31641
31642             label.append('input')
31643                 .attr('type', type)
31644                 .attr('name', 'layers')
31645                 .on('change', change);
31646
31647             label.append('span')
31648                 .text(function(d) { return d.name(); });
31649
31650             layerLinks.exit()
31651                 .remove();
31652
31653             layerList.style('display', layerList.selectAll('li.layer').data().length > 0 ? 'block' : 'none');
31654         }
31655
31656         function update() {
31657             backgroundList.call(drawList, 'radio', clickSetSource, function(d) { return !d.overlay; });
31658             overlayList.call(drawList, 'checkbox', clickSetOverlay, function(d) { return d.overlay; });
31659
31660             selectLayer();
31661
31662             var source = context.background().baseLayerSource();
31663             if (source.id === 'custom') {
31664                 customTemplate = source.template;
31665             }
31666         }
31667
31668         function clickNudge(d) {
31669             var timeout = window.setTimeout(function() {
31670                     interval = window.setInterval(nudge, 100);
31671                 }, 500),
31672                 interval;
31673
31674             d3.select(this).on('mouseup', function() {
31675                 window.clearInterval(interval);
31676                 window.clearTimeout(timeout);
31677                 nudge();
31678             });
31679
31680             function nudge() {
31681                 var offset = context.background()
31682                     .nudge(d[1], context.map().zoom())
31683                     .offset();
31684                 resetButton.classed('disabled', offset[0] === 0 && offset[1] === 0);
31685             }
31686         }
31687
31688         function hide() { setVisible(false); }
31689
31690         function toggle() {
31691             if (d3.event) d3.event.preventDefault();
31692             tooltip.hide(button);
31693             setVisible(!button.classed('active'));
31694         }
31695
31696         function setVisible(show) {
31697             if (show !== shown) {
31698                 button.classed('active', show);
31699                 shown = show;
31700
31701                 if (show) {
31702                     selection.on('mousedown.background-inside', function() {
31703                         return d3.event.stopPropagation();
31704                     });
31705                     content.style('display', 'block')
31706                         .style('right', '-300px')
31707                         .transition()
31708                         .duration(200)
31709                         .style('right', '0px');
31710                 } else {
31711                     content.style('display', 'block')
31712                         .style('right', '0px')
31713                         .transition()
31714                         .duration(200)
31715                         .style('right', '-300px')
31716                         .each('end', function() {
31717                             d3.select(this).style('display', 'none');
31718                         });
31719                     selection.on('mousedown.background-inside', null);
31720                 }
31721             }
31722         }
31723
31724
31725         var content = selection.append('div')
31726                 .attr('class', 'fillL map-overlay col3 content hide'),
31727             tooltip = bootstrap.tooltip()
31728                 .placement('left')
31729                 .html(true)
31730                 .title(iD.ui.tooltipHtml(t('background.description'), key)),
31731             button = selection.append('button')
31732                 .attr('tabindex', -1)
31733                 .on('click', toggle)
31734                 .call(iD.svg.Icon('#icon-layers', 'light'))
31735                 .call(tooltip),
31736             shown = false;
31737
31738         var opa = content.append('div')
31739                 .attr('class', 'opacity-options-wrapper');
31740
31741         opa.append('h4')
31742             .text(t('background.title'));
31743
31744         var opacityList = opa.append('ul')
31745             .attr('class', 'opacity-options');
31746
31747         opacityList.selectAll('div.opacity')
31748             .data(opacities)
31749             .enter()
31750             .append('li')
31751             .attr('data-original-title', function(d) {
31752                 return t('background.percent_brightness', { opacity: (d * 100) });
31753             })
31754             .on('click.set-opacity', setOpacity)
31755             .html('<div class="select-box"></div>')
31756             .call(bootstrap.tooltip()
31757                 .placement('left'))
31758             .append('div')
31759             .attr('class', 'opacity')
31760             .style('opacity', function(d) { return 1.25 - d; });
31761
31762         var backgroundList = content.append('ul')
31763             .attr('class', 'layer-list');
31764
31765         var custom = backgroundList.append('li')
31766             .attr('class', 'custom_layer')
31767             .datum(iD.BackgroundSource.Custom());
31768
31769         custom.append('button')
31770             .attr('class', 'layer-browse')
31771             .call(bootstrap.tooltip()
31772                 .title(t('background.custom_button'))
31773                 .placement('left'))
31774             .on('click', editCustom)
31775             .call(iD.svg.Icon('#icon-search'));
31776
31777         var label = custom.append('label');
31778
31779         label.append('input')
31780             .attr('type', 'radio')
31781             .attr('name', 'layers')
31782             .on('change', function () {
31783                 if (customTemplate) {
31784                     setCustom(customTemplate);
31785                 } else {
31786                     editCustom();
31787                 }
31788             });
31789
31790         label.append('span')
31791             .text(t('background.custom'));
31792
31793         var overlayList = content.append('ul')
31794             .attr('class', 'layer-list');
31795
31796         var controls = content.append('div')
31797             .attr('class', 'controls-list');
31798
31799         var minimapLabel = controls
31800             .append('label')
31801             .call(bootstrap.tooltip()
31802                 .html(true)
31803                 .title(iD.ui.tooltipHtml(t('background.minimap.tooltip'), '/'))
31804                 .placement('top')
31805             );
31806
31807         minimapLabel.classed('minimap-toggle', true)
31808             .append('input')
31809             .attr('type', 'checkbox')
31810             .on('change', function() {
31811                 iD.ui.MapInMap.toggle();
31812                 d3.event.preventDefault();
31813             });
31814
31815         minimapLabel.append('span')
31816             .text(t('background.minimap.description'));
31817
31818         var adjustments = content.append('div')
31819             .attr('class', 'adjustments');
31820
31821         adjustments.append('a')
31822             .text(t('background.fix_misalignment'))
31823             .attr('href', '#')
31824             .classed('hide-toggle', true)
31825             .classed('expanded', false)
31826             .on('click', function() {
31827                 var exp = d3.select(this).classed('expanded');
31828                 nudgeContainer.style('display', exp ? 'none' : 'block');
31829                 d3.select(this).classed('expanded', !exp);
31830                 d3.event.preventDefault();
31831             });
31832
31833         var nudgeContainer = adjustments.append('div')
31834             .attr('class', 'nudge-container cf')
31835             .style('display', 'none');
31836
31837         nudgeContainer.selectAll('button')
31838             .data(directions).enter()
31839             .append('button')
31840             .attr('class', function(d) { return d[0] + ' nudge'; })
31841             .on('mousedown', clickNudge);
31842
31843         var resetButton = nudgeContainer
31844             .append('button')
31845             .attr('class', 'reset disabled')
31846             .on('click', function () {
31847                 context.background().offset([0, 0]);
31848                 resetButton.classed('disabled', true);
31849             })
31850             .call(iD.svg.Icon('#icon-undo'));
31851
31852         context.map()
31853             .on('move.background-update', _.debounce(update, 1000));
31854
31855         context.background()
31856             .on('change.background-update', update);
31857
31858         update();
31859         setOpacity(opacityDefault);
31860
31861         var keybinding = d3.keybinding('background')
31862             .on(key, toggle)
31863             .on('F', hide)
31864             .on('H', hide);
31865
31866         d3.select(document)
31867             .call(keybinding);
31868
31869         context.surface().on('mousedown.background-outside', hide);
31870         context.container().on('mousedown.background-outside', hide);
31871     }
31872
31873     return background;
31874 };
31875 // Translate a MacOS key command into the appropriate Windows/Linux equivalent.
31876 // For example, ⌘Z -> Ctrl+Z
31877 iD.ui.cmd = function(code) {
31878     if (iD.detect().os === 'mac') {
31879         return code;
31880     }
31881
31882     if (iD.detect().os === 'win') {
31883         if (code === '⌘⇧Z') return 'Ctrl+Y';
31884     }
31885
31886     var result = '',
31887         replacements = {
31888             '⌘': 'Ctrl',
31889             '⇧': 'Shift',
31890             '⌥': 'Alt',
31891             '⌫': 'Backspace',
31892             '⌦': 'Delete'
31893         };
31894
31895     for (var i = 0; i < code.length; i++) {
31896         if (code[i] in replacements) {
31897             result += replacements[code[i]] + '+';
31898         } else {
31899             result += code[i];
31900         }
31901     }
31902
31903     return result;
31904 };
31905 iD.ui.Commit = function(context) {
31906     var dispatch = d3.dispatch('cancel', 'save');
31907
31908     function commit(selection) {
31909         var changes = context.history().changes(),
31910             summary = context.history().difference().summary();
31911
31912         function zoomToEntity(change) {
31913             var entity = change.entity;
31914             if (change.changeType !== 'deleted' &&
31915                 context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
31916                 context.map().zoomTo(entity);
31917                 context.surface().selectAll(
31918                     iD.util.entityOrMemberSelector([entity.id], context.graph()))
31919                     .classed('hover', true);
31920             }
31921         }
31922
31923         var header = selection.append('div')
31924             .attr('class', 'header fillL');
31925
31926         header.append('h3')
31927             .text(t('commit.title'));
31928
31929         var body = selection.append('div')
31930             .attr('class', 'body');
31931
31932
31933         // Comment Section
31934         var commentSection = body.append('div')
31935             .attr('class', 'modal-section form-field commit-form');
31936
31937         commentSection.append('label')
31938             .attr('class', 'form-label')
31939             .text(t('commit.message_label'));
31940
31941         var commentField = commentSection.append('textarea')
31942             .attr('placeholder', t('commit.description_placeholder'))
31943             .attr('maxlength', 255)
31944             .property('value', context.storage('comment') || '')
31945             .on('input.save', function() {
31946                 d3.selectAll('.save-section .save-button')
31947                     .attr('disabled', (this.value.length ? null : true));
31948             })
31949             .on('blur.save', function() {
31950                 context.storage('comment', this.value);
31951             });
31952
31953         commentField.node().select();
31954
31955
31956         // Warnings
31957         var warnings = body.selectAll('div.warning-section')
31958             .data([context.history().validate(changes)])
31959             .enter()
31960             .append('div')
31961             .attr('class', 'modal-section warning-section fillL2')
31962             .style('display', function(d) { return _.isEmpty(d) ? 'none' : null; })
31963             .style('background', '#ffb');
31964
31965         warnings.append('h3')
31966             .text(t('commit.warnings'));
31967
31968         var warningLi = warnings.append('ul')
31969             .attr('class', 'changeset-list')
31970             .selectAll('li')
31971             .data(function(d) { return d; })
31972             .enter()
31973             .append('li')
31974             .style()
31975             .on('mouseover', mouseover)
31976             .on('mouseout', mouseout)
31977             .on('click', warningClick);
31978
31979         warningLi
31980             .call(iD.svg.Icon('#icon-alert', 'pre-text'));
31981
31982         warningLi
31983             .append('strong').text(function(d) {
31984                 return d.message;
31985             });
31986
31987         warningLi.filter(function(d) { return d.tooltip; })
31988             .call(bootstrap.tooltip()
31989                 .title(function(d) { return d.tooltip; })
31990                 .placement('top')
31991             );
31992
31993
31994         // Upload Explanation
31995         var saveSection = body.append('div')
31996             .attr('class','modal-section save-section fillL cf');
31997
31998         var prose = saveSection.append('p')
31999             .attr('class', 'commit-info')
32000             .html(t('commit.upload_explanation'));
32001
32002         context.connection().userDetails(function(err, user) {
32003             if (err) return;
32004
32005             var userLink = d3.select(document.createElement('div'));
32006
32007             if (user.image_url) {
32008                 userLink.append('img')
32009                     .attr('src', user.image_url)
32010                     .attr('class', 'icon pre-text user-icon');
32011             }
32012
32013             userLink.append('a')
32014                 .attr('class','user-info')
32015                 .text(user.display_name)
32016                 .attr('href', context.connection().userURL(user.display_name))
32017                 .attr('tabindex', -1)
32018                 .attr('target', '_blank');
32019
32020             prose.html(t('commit.upload_explanation_with_user', {user: userLink.html()}));
32021         });
32022
32023
32024         // Buttons
32025         var buttonSection = saveSection.append('div')
32026             .attr('class','buttons fillL cf');
32027
32028         var saveButton = buttonSection.append('button')
32029             .attr('class', 'action col5 button save-button')
32030             .attr('disabled', function() {
32031                 var n = d3.select('.commit-form textarea').node();
32032                 return (n && n.value.length) ? null : true;
32033             })
32034             .on('click.save', function() {
32035                 dispatch.save({
32036                     comment: commentField.node().value
32037                 });
32038             });
32039
32040         saveButton.append('span')
32041             .attr('class', 'label')
32042             .text(t('commit.save'));
32043
32044         var cancelButton = buttonSection.append('button')
32045             .attr('class', 'action col5 button cancel-button')
32046             .on('click.cancel', function() { dispatch.cancel(); });
32047
32048         cancelButton.append('span')
32049             .attr('class', 'label')
32050             .text(t('commit.cancel'));
32051
32052
32053         // Changes
32054         var changeSection = body.selectAll('div.commit-section')
32055             .data([0])
32056             .enter()
32057             .append('div')
32058             .attr('class', 'commit-section modal-section fillL2');
32059
32060         changeSection.append('h3')
32061             .text(t('commit.changes', {count: summary.length}));
32062
32063         var li = changeSection.append('ul')
32064             .attr('class', 'changeset-list')
32065             .selectAll('li')
32066             .data(summary)
32067             .enter()
32068             .append('li')
32069             .on('mouseover', mouseover)
32070             .on('mouseout', mouseout)
32071             .on('click', zoomToEntity);
32072
32073         li.each(function(d) {
32074             d3.select(this)
32075                 .call(iD.svg.Icon('#icon-' + d.entity.geometry(d.graph), 'pre-text ' + d.changeType));
32076         });
32077
32078         li.append('span')
32079             .attr('class', 'change-type')
32080             .text(function(d) {
32081                 return t('commit.' + d.changeType) + ' ';
32082             });
32083
32084         li.append('strong')
32085             .attr('class', 'entity-type')
32086             .text(function(d) {
32087                 return context.presets().match(d.entity, d.graph).name();
32088             });
32089
32090         li.append('span')
32091             .attr('class', 'entity-name')
32092             .text(function(d) {
32093                 var name = iD.util.displayName(d.entity) || '',
32094                     string = '';
32095                 if (name !== '') string += ':';
32096                 return string += ' ' + name;
32097             });
32098
32099         li.style('opacity', 0)
32100             .transition()
32101             .style('opacity', 1);
32102
32103         li.style('opacity', 0)
32104             .transition()
32105             .style('opacity', 1);
32106
32107         function mouseover(d) {
32108             if (d.entity) {
32109                 context.surface().selectAll(
32110                     iD.util.entityOrMemberSelector([d.entity.id], context.graph())
32111                 ).classed('hover', true);
32112             }
32113         }
32114
32115         function mouseout() {
32116             context.surface().selectAll('.hover')
32117                 .classed('hover', false);
32118         }
32119
32120         function warningClick(d) {
32121             if (d.entity) {
32122                 context.map().zoomTo(d.entity);
32123                 context.enter(
32124                     iD.modes.Select(context, [d.entity.id])
32125                         .suppressMenu(true));
32126             }
32127         }
32128     }
32129
32130     return d3.rebind(commit, dispatch, 'on');
32131 };
32132 iD.ui.confirm = function(selection) {
32133     var modal = iD.ui.modal(selection);
32134
32135     modal.select('.modal')
32136         .classed('modal-alert', true);
32137
32138     var section = modal.select('.content');
32139
32140     section.append('div')
32141         .attr('class', 'modal-section header');
32142
32143     section.append('div')
32144         .attr('class', 'modal-section message-text');
32145
32146     var buttons = section.append('div')
32147         .attr('class', 'modal-section buttons cf');
32148
32149     modal.okButton = function() {
32150         buttons
32151             .append('button')
32152             .attr('class', 'action col4')
32153             .on('click.confirm', function() {
32154                 modal.remove();
32155             })
32156             .text(t('confirm.okay'));
32157
32158         return modal;
32159     };
32160
32161     return modal;
32162 };
32163 iD.ui.Conflicts = function(context) {
32164     var dispatch = d3.dispatch('download', 'cancel', 'save'),
32165         list;
32166
32167     function conflicts(selection) {
32168         var header = selection
32169             .append('div')
32170             .attr('class', 'header fillL');
32171
32172         header
32173             .append('button')
32174             .attr('class', 'fr')
32175             .on('click', function() { dispatch.cancel(); })
32176             .call(iD.svg.Icon('#icon-close'));
32177
32178         header
32179             .append('h3')
32180             .text(t('save.conflict.header'));
32181
32182         var body = selection
32183             .append('div')
32184             .attr('class', 'body fillL');
32185
32186         body
32187             .append('div')
32188             .attr('class', 'conflicts-help')
32189             .text(t('save.conflict.help'))
32190             .append('a')
32191             .attr('class', 'conflicts-download')
32192             .text(t('save.conflict.download_changes'))
32193             .on('click.download', function() { dispatch.download(); });
32194
32195         body
32196             .append('div')
32197             .attr('class', 'conflict-container fillL3')
32198             .call(showConflict, 0);
32199
32200         body
32201             .append('div')
32202             .attr('class', 'conflicts-done')
32203             .attr('opacity', 0)
32204             .style('display', 'none')
32205             .text(t('save.conflict.done'));
32206
32207         var buttons = body
32208             .append('div')
32209             .attr('class','buttons col12 joined conflicts-buttons');
32210
32211         buttons
32212             .append('button')
32213             .attr('disabled', list.length > 1)
32214             .attr('class', 'action conflicts-button col6')
32215             .text(t('save.title'))
32216             .on('click.try_again', function() { dispatch.save(); });
32217
32218         buttons
32219             .append('button')
32220             .attr('class', 'secondary-action conflicts-button col6')
32221             .text(t('confirm.cancel'))
32222             .on('click.cancel', function() { dispatch.cancel(); });
32223     }
32224
32225
32226     function showConflict(selection, index) {
32227         if (index < 0 || index >= list.length) return;
32228
32229         var parent = d3.select(selection.node().parentElement);
32230
32231         // enable save button if this is the last conflict being reviewed..
32232         if (index === list.length - 1) {
32233             window.setTimeout(function() {
32234                 parent.select('.conflicts-button')
32235                     .attr('disabled', null);
32236
32237                 parent.select('.conflicts-done')
32238                     .transition()
32239                     .attr('opacity', 1)
32240                     .style('display', 'block');
32241             }, 250);
32242         }
32243
32244         var item = selection
32245             .selectAll('.conflict')
32246             .data([list[index]]);
32247
32248         var enter = item.enter()
32249             .append('div')
32250             .attr('class', 'conflict');
32251
32252         enter
32253             .append('h4')
32254             .attr('class', 'conflict-count')
32255             .text(t('save.conflict.count', { num: index + 1, total: list.length }));
32256
32257         enter
32258             .append('a')
32259             .attr('class', 'conflict-description')
32260             .attr('href', '#')
32261             .text(function(d) { return d.name; })
32262             .on('click', function(d) {
32263                 zoomToEntity(d.id);
32264                 d3.event.preventDefault();
32265             });
32266
32267         var details = enter
32268             .append('div')
32269             .attr('class', 'conflict-detail-container');
32270
32271         details
32272             .append('ul')
32273             .attr('class', 'conflict-detail-list')
32274             .selectAll('li')
32275             .data(function(d) { return d.details || []; })
32276             .enter()
32277             .append('li')
32278             .attr('class', 'conflict-detail-item')
32279             .html(function(d) { return d; });
32280
32281         details
32282             .append('div')
32283             .attr('class', 'conflict-choices')
32284             .call(addChoices);
32285
32286         details
32287             .append('div')
32288             .attr('class', 'conflict-nav-buttons joined cf')
32289             .selectAll('button')
32290             .data(['previous', 'next'])
32291             .enter()
32292             .append('button')
32293             .text(function(d) { return t('save.conflict.' + d); })
32294             .attr('class', 'conflict-nav-button action col6')
32295             .attr('disabled', function(d, i) {
32296                 return (i === 0 && index === 0) ||
32297                     (i === 1 && index === list.length - 1) || null;
32298             })
32299             .on('click', function(d, i) {
32300                 var container = parent.select('.conflict-container'),
32301                 sign = (i === 0 ? -1 : 1);
32302
32303                 container
32304                     .selectAll('.conflict')
32305                     .remove();
32306
32307                 container
32308                     .call(showConflict, index + sign);
32309
32310                 d3.event.preventDefault();
32311             });
32312
32313         item.exit()
32314             .remove();
32315
32316     }
32317
32318     function addChoices(selection) {
32319         var choices = selection
32320             .append('ul')
32321             .attr('class', 'layer-list')
32322             .selectAll('li')
32323             .data(function(d) { return d.choices || []; });
32324
32325         var enter = choices.enter()
32326             .append('li')
32327             .attr('class', 'layer');
32328
32329         var label = enter
32330             .append('label');
32331
32332         label
32333             .append('input')
32334             .attr('type', 'radio')
32335             .attr('name', function(d) { return d.id; })
32336             .on('change', function(d, i) {
32337                 var ul = this.parentElement.parentElement.parentElement;
32338                 ul.__data__.chosen = i;
32339                 choose(ul, d);
32340             });
32341
32342         label
32343             .append('span')
32344             .text(function(d) { return d.text; });
32345
32346         choices
32347             .each(function(d, i) {
32348                 var ul = this.parentElement;
32349                 if (ul.__data__.chosen === i) choose(ul, d);
32350             });
32351     }
32352
32353     function choose(ul, datum) {
32354         if (d3.event) d3.event.preventDefault();
32355
32356         d3.select(ul)
32357             .selectAll('li')
32358             .classed('active', function(d) { return d === datum; })
32359             .selectAll('input')
32360             .property('checked', function(d) { return d === datum; });
32361
32362         var extent = iD.geo.Extent(),
32363             entity;
32364
32365         entity = context.graph().hasEntity(datum.id);
32366         if (entity) extent._extend(entity.extent(context.graph()));
32367
32368         datum.action();
32369
32370         entity = context.graph().hasEntity(datum.id);
32371         if (entity) extent._extend(entity.extent(context.graph()));
32372
32373         zoomToEntity(datum.id, extent);
32374     }
32375
32376     function zoomToEntity(id, extent) {
32377         context.surface().selectAll('.hover')
32378             .classed('hover', false);
32379
32380         var entity = context.graph().hasEntity(id);
32381         if (entity) {
32382             if (extent) {
32383                 context.map().trimmedExtent(extent);
32384             } else {
32385                 context.map().zoomTo(entity);
32386             }
32387             context.surface().selectAll(
32388                 iD.util.entityOrMemberSelector([entity.id], context.graph()))
32389                 .classed('hover', true);
32390         }
32391     }
32392
32393
32394     // The conflict list should be an array of objects like:
32395     // {
32396     //     id: id,
32397     //     name: entityName(local),
32398     //     details: merge.conflicts(),
32399     //     chosen: 1,
32400     //     choices: [
32401     //         choice(id, keepMine, forceLocal),
32402     //         choice(id, keepTheirs, forceRemote)
32403     //     ]
32404     // }
32405     conflicts.list = function(_) {
32406         if (!arguments.length) return list;
32407         list = _;
32408         return conflicts;
32409     };
32410
32411     return d3.rebind(conflicts, dispatch, 'on');
32412 };
32413 iD.ui.Contributors = function(context) {
32414     function update(selection) {
32415         var users = {},
32416             limit = 4,
32417             entities = context.intersects(context.map().extent());
32418
32419         entities.forEach(function(entity) {
32420             if (entity && entity.user) users[entity.user] = true;
32421         });
32422
32423         var u = Object.keys(users),
32424             subset = u.slice(0, u.length > limit ? limit - 1 : limit);
32425
32426         selection.html('')
32427             .call(iD.svg.Icon('#icon-nearby', 'pre-text light'));
32428
32429         var userList = d3.select(document.createElement('span'));
32430
32431         userList.selectAll()
32432             .data(subset)
32433             .enter()
32434             .append('a')
32435             .attr('class', 'user-link')
32436             .attr('href', function(d) { return context.connection().userURL(d); })
32437             .attr('target', '_blank')
32438             .attr('tabindex', -1)
32439             .text(String);
32440
32441         if (u.length > limit) {
32442             var count = d3.select(document.createElement('span'));
32443
32444             count.append('a')
32445                 .attr('target', '_blank')
32446                 .attr('tabindex', -1)
32447                 .attr('href', function() {
32448                     return context.connection().changesetsURL(context.map().center(), context.map().zoom());
32449                 })
32450                 .text(u.length - limit + 1);
32451
32452             selection.append('span')
32453                 .html(t('contributors.truncated_list', {users: userList.html(), count: count.html()}));
32454         } else {
32455             selection.append('span')
32456                 .html(t('contributors.list', {users: userList.html()}));
32457         }
32458
32459         if (!u.length) {
32460             selection.transition().style('opacity', 0);
32461         } else if (selection.style('opacity') === '0') {
32462             selection.transition().style('opacity', 1);
32463         }
32464     }
32465
32466     return function(selection) {
32467         update(selection);
32468
32469         context.connection().on('loaded.contributors', function() {
32470             update(selection);
32471         });
32472
32473         context.map().on('move.contributors', _.debounce(function() {
32474             update(selection);
32475         }, 500));
32476     };
32477 };
32478 iD.ui.Disclosure = function() {
32479     var dispatch = d3.dispatch('toggled'),
32480         title,
32481         expanded = false,
32482         content = function () {};
32483
32484     var disclosure = function(selection) {
32485         var $link = selection.selectAll('.hide-toggle')
32486             .data([0]);
32487
32488         $link.enter().append('a')
32489             .attr('href', '#')
32490             .attr('class', 'hide-toggle');
32491
32492         $link.text(title)
32493             .on('click', toggle)
32494             .classed('expanded', expanded);
32495
32496         var $body = selection.selectAll('div')
32497             .data([0]);
32498
32499         $body.enter().append('div');
32500
32501         $body.classed('hide', !expanded)
32502             .call(content);
32503
32504         function toggle() {
32505             expanded = !expanded;
32506             $link.classed('expanded', expanded);
32507             $body.call(iD.ui.Toggle(expanded));
32508             dispatch.toggled(expanded);
32509         }
32510     };
32511
32512     disclosure.title = function(_) {
32513         if (!arguments.length) return title;
32514         title = _;
32515         return disclosure;
32516     };
32517
32518     disclosure.expanded = function(_) {
32519         if (!arguments.length) return expanded;
32520         expanded = _;
32521         return disclosure;
32522     };
32523
32524     disclosure.content = function(_) {
32525         if (!arguments.length) return content;
32526         content = _;
32527         return disclosure;
32528     };
32529
32530     return d3.rebind(disclosure, dispatch, 'on');
32531 };
32532 iD.ui.EntityEditor = function(context) {
32533     var event = d3.dispatch('choose'),
32534         state = 'select',
32535         id,
32536         preset,
32537         reference;
32538
32539     var presetEditor = iD.ui.preset(context)
32540         .on('change', changeTags);
32541     var rawTagEditor = iD.ui.RawTagEditor(context)
32542         .on('change', changeTags);
32543
32544     function entityEditor(selection) {
32545         var entity = context.entity(id),
32546             tags = _.clone(entity.tags);
32547
32548         var $header = selection.selectAll('.header')
32549             .data([0]);
32550
32551         // Enter
32552
32553         var $enter = $header.enter().append('div')
32554             .attr('class', 'header fillL cf');
32555
32556         $enter.append('button')
32557             .attr('class', 'fr preset-close')
32558             .call(iD.svg.Icon('#icon-close'));
32559
32560         $enter.append('h3');
32561
32562         // Update
32563
32564         $header.select('h3')
32565             .text(t('inspector.edit'));
32566
32567         $header.select('.preset-close')
32568             .on('click', function() {
32569                 context.enter(iD.modes.Browse(context));
32570             });
32571
32572         var $body = selection.selectAll('.inspector-body')
32573             .data([0]);
32574
32575         // Enter
32576
32577         $enter = $body.enter().append('div')
32578             .attr('class', 'inspector-body');
32579
32580         $enter.append('div')
32581             .attr('class', 'preset-list-item inspector-inner')
32582             .append('div')
32583             .attr('class', 'preset-list-button-wrap')
32584             .append('button')
32585             .attr('class', 'preset-list-button preset-reset')
32586             .call(bootstrap.tooltip()
32587                 .title(t('inspector.back_tooltip'))
32588                 .placement('bottom'))
32589             .append('div')
32590             .attr('class', 'label');
32591
32592         $body.select('.preset-list-button-wrap')
32593             .call(reference.button);
32594
32595         $body.select('.preset-list-item')
32596             .call(reference.body);
32597
32598         $enter.append('div')
32599             .attr('class', 'inspector-border inspector-preset');
32600
32601         $enter.append('div')
32602             .attr('class', 'inspector-border raw-tag-editor inspector-inner');
32603
32604         $enter.append('div')
32605             .attr('class', 'inspector-border raw-member-editor inspector-inner');
32606
32607         $enter.append('div')
32608             .attr('class', 'raw-membership-editor inspector-inner');
32609
32610         selection.selectAll('.preset-reset')
32611             .on('click', function() {
32612                 event.choose(preset);
32613             });
32614
32615         // Update
32616
32617         $body.select('.preset-list-item button')
32618             .call(iD.ui.PresetIcon()
32619                 .geometry(context.geometry(id))
32620                 .preset(preset));
32621
32622         $body.select('.preset-list-item .label')
32623             .text(preset.name());
32624
32625         $body.select('.inspector-preset')
32626             .call(presetEditor
32627                 .preset(preset)
32628                 .entityID(id)
32629                 .tags(tags)
32630                 .state(state));
32631
32632         $body.select('.raw-tag-editor')
32633             .call(rawTagEditor
32634                 .preset(preset)
32635                 .entityID(id)
32636                 .tags(tags)
32637                 .state(state));
32638
32639         if (entity.type === 'relation') {
32640             $body.select('.raw-member-editor')
32641                 .style('display', 'block')
32642                 .call(iD.ui.RawMemberEditor(context)
32643                     .entityID(id));
32644         } else {
32645             $body.select('.raw-member-editor')
32646                 .style('display', 'none');
32647         }
32648
32649         $body.select('.raw-membership-editor')
32650             .call(iD.ui.RawMembershipEditor(context)
32651                 .entityID(id));
32652
32653         function historyChanged() {
32654             if (state === 'hide') return;
32655             var entity = context.hasEntity(id);
32656             if (!entity) return;
32657             entityEditor.preset(context.presets().match(entity, context.graph()));
32658             entityEditor(selection);
32659         }
32660
32661         context.history()
32662             .on('change.entity-editor', historyChanged);
32663     }
32664
32665     function clean(o) {
32666
32667         function cleanVal(k, v) {
32668             function keepSpaces(k) {
32669                 var whitelist = ['opening_hours', 'service_times', 'collection_times',
32670                     'operating_times', 'smoking_hours', 'happy_hours'];
32671                 return _.any(whitelist, function(s) { return k.indexOf(s) !== -1; });
32672             }
32673
32674             var blacklist = ['description', 'note', 'fixme'];
32675             if (_.any(blacklist, function(s) { return k.indexOf(s) !== -1; })) return v;
32676
32677             var cleaned = v.split(';')
32678                 .map(function(s) { return s.trim(); })
32679                 .join(keepSpaces(k) ? '; ' : ';');
32680
32681             // The code below is not intended to validate websites and emails.
32682             // It is only intended to prevent obvious copy-paste errors. (#2323)
32683
32684             // clean website-like tags
32685             if (k.indexOf('website') !== -1 || cleaned.indexOf('http') === 0) {
32686                 cleaned = cleaned
32687                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32688                     .replace(/[^\w\+\-\.\/\?\[\]\(\)~!@#$%&*',:;=]/g, encodeURIComponent);
32689
32690             // clean email-like tags
32691             } else if (k.indexOf('email') !== -1) {
32692                 cleaned = cleaned
32693                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32694                     .replace(/[^\w\+\-\.\/\?\|~!@#$%^&*'`{};=]/g, '');  // note: ';' allowed as OSM delimiter
32695             }
32696
32697             return cleaned;
32698         }
32699
32700         var out = {}, k, v;
32701         for (k in o) {
32702             if (k && (v = o[k]) !== undefined) {
32703                 out[k] = cleanVal(k, v);
32704             }
32705         }
32706         return out;
32707     }
32708
32709     function changeTags(changed) {
32710         var entity = context.entity(id),
32711             tags = clean(_.extend({}, entity.tags, changed));
32712
32713         if (!_.isEqual(entity.tags, tags)) {
32714             context.perform(
32715                 iD.actions.ChangeTags(id, tags),
32716                 t('operations.change_tags.annotation'));
32717         }
32718     }
32719
32720     entityEditor.state = function(_) {
32721         if (!arguments.length) return state;
32722         state = _;
32723         return entityEditor;
32724     };
32725
32726     entityEditor.entityID = function(_) {
32727         if (!arguments.length) return id;
32728         id = _;
32729         entityEditor.preset(context.presets().match(context.entity(id), context.graph()));
32730         return entityEditor;
32731     };
32732
32733     entityEditor.preset = function(_) {
32734         if (!arguments.length) return preset;
32735         if (_ !== preset) {
32736             preset = _;
32737             reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context)
32738                 .showing(false);
32739         }
32740         return entityEditor;
32741     };
32742
32743     return d3.rebind(entityEditor, event, 'on');
32744 };
32745 iD.ui.FeatureInfo = function(context) {
32746     function update(selection) {
32747         var features = context.features(),
32748             stats = features.stats(),
32749             count = 0,
32750             hiddenList = _.compact(_.map(features.hidden(), function(k) {
32751                 if (stats[k]) {
32752                     count += stats[k];
32753                     return String(stats[k]) + ' ' + t('feature.' + k + '.description');
32754                 }
32755             }));
32756
32757         selection.html('');
32758
32759         if (hiddenList.length) {
32760             var tooltip = bootstrap.tooltip()
32761                     .placement('top')
32762                     .html(true)
32763                     .title(function() {
32764                         return iD.ui.tooltipHtml(hiddenList.join('<br/>'));
32765                     });
32766
32767             var warning = selection.append('a')
32768                 .attr('href', '#')
32769                 .attr('tabindex', -1)
32770                 .html(t('feature_info.hidden_warning', { count: count }))
32771                 .call(tooltip)
32772                 .on('click', function() {
32773                     tooltip.hide(warning);
32774                     // open map data panel?
32775                     d3.event.preventDefault();
32776                 });
32777         }
32778
32779         selection
32780             .classed('hide', !hiddenList.length);
32781     }
32782
32783     return function(selection) {
32784         update(selection);
32785
32786         context.features().on('change.feature_info', function() {
32787             update(selection);
32788         });
32789     };
32790 };
32791 iD.ui.FeatureList = function(context) {
32792     var geocodeResults;
32793
32794     function featureList(selection) {
32795         var header = selection.append('div')
32796             .attr('class', 'header fillL cf');
32797
32798         header.append('h3')
32799             .text(t('inspector.feature_list'));
32800
32801         function keypress() {
32802             var q = search.property('value'),
32803                 items = list.selectAll('.feature-list-item');
32804             if (d3.event.keyCode === 13 && q.length && items.size()) {
32805                 click(items.datum());
32806             }
32807         }
32808
32809         function inputevent() {
32810             geocodeResults = undefined;
32811             drawList();
32812         }
32813
32814         var searchWrap = selection.append('div')
32815             .attr('class', 'search-header');
32816
32817         var search = searchWrap.append('input')
32818             .attr('placeholder', t('inspector.search'))
32819             .attr('type', 'search')
32820             .on('keypress', keypress)
32821             .on('input', inputevent);
32822
32823         searchWrap
32824             .call(iD.svg.Icon('#icon-search', 'pre-text'));
32825
32826         var listWrap = selection.append('div')
32827             .attr('class', 'inspector-body');
32828
32829         var list = listWrap.append('div')
32830             .attr('class', 'feature-list cf');
32831
32832         context.map()
32833             .on('drawn.feature-list', mapDrawn);
32834
32835         function mapDrawn(e) {
32836             if (e.full) {
32837                 drawList();
32838             }
32839         }
32840
32841         function features() {
32842             var entities = {},
32843                 result = [],
32844                 graph = context.graph(),
32845                 q = search.property('value').toLowerCase();
32846
32847             if (!q) return result;
32848
32849             var idMatch = q.match(/^([nwr])([0-9]+)$/);
32850
32851             if (idMatch) {
32852                 result.push({
32853                     id: idMatch[0],
32854                     geometry: idMatch[1] === 'n' ? 'point' : idMatch[1] === 'w' ? 'line' : 'relation',
32855                     type: idMatch[1] === 'n' ? t('inspector.node') : idMatch[1] === 'w' ? t('inspector.way') : t('inspector.relation'),
32856                     name: idMatch[2]
32857                 });
32858             }
32859
32860             var locationMatch = sexagesimal.pair(q.toUpperCase()) || q.match(/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)$/);
32861
32862             if (locationMatch) {
32863                 var loc = [parseFloat(locationMatch[0]), parseFloat(locationMatch[1])];
32864                 result.push({
32865                     id: -1,
32866                     geometry: 'point',
32867                     type: t('inspector.location'),
32868                     name: loc[0].toFixed(6) + ', ' + loc[1].toFixed(6),
32869                     location: loc
32870                 });
32871             }
32872
32873             function addEntity(entity) {
32874                 if (entity.id in entities || result.length > 200)
32875                     return;
32876
32877                 entities[entity.id] = true;
32878
32879                 var name = iD.util.displayName(entity) || '';
32880                 if (name.toLowerCase().indexOf(q) >= 0) {
32881                     result.push({
32882                         id: entity.id,
32883                         entity: entity,
32884                         geometry: context.geometry(entity.id),
32885                         type: context.presets().match(entity, graph).name(),
32886                         name: name
32887                     });
32888                 }
32889
32890                 graph.parentRelations(entity).forEach(function(parent) {
32891                     addEntity(parent);
32892                 });
32893             }
32894
32895             var visible = context.surface().selectAll('.point, .line, .area')[0];
32896             for (var i = 0; i < visible.length && result.length <= 200; i++) {
32897                 addEntity(visible[i].__data__);
32898             }
32899
32900             (geocodeResults || []).forEach(function(d) {
32901                 // https://github.com/openstreetmap/iD/issues/1890
32902                 if (d.osm_type && d.osm_id) {
32903                     result.push({
32904                         id: iD.Entity.id.fromOSM(d.osm_type, d.osm_id),
32905                         geometry: d.osm_type === 'relation' ? 'relation' : d.osm_type === 'way' ? 'line' : 'point',
32906                         type: d.type !== 'yes' ? (d.type.charAt(0).toUpperCase() + d.type.slice(1)).replace('_', ' ')
32907                                                : (d.class.charAt(0).toUpperCase() + d.class.slice(1)).replace('_', ' '),
32908                         name: d.display_name,
32909                         extent: new iD.geo.Extent(
32910                             [parseFloat(d.boundingbox[3]), parseFloat(d.boundingbox[0])],
32911                             [parseFloat(d.boundingbox[2]), parseFloat(d.boundingbox[1])])
32912                     });
32913                 }
32914             });
32915
32916             return result;
32917         }
32918
32919         function drawList() {
32920             var value = search.property('value'),
32921                 results = features();
32922
32923             list.classed('filtered', value.length);
32924
32925             var noResultsWorldwide = geocodeResults && geocodeResults.length === 0;
32926
32927             var resultsIndicator = list.selectAll('.no-results-item')
32928                 .data([0])
32929                 .enter().append('button')
32930                 .property('disabled', true)
32931                 .attr('class', 'no-results-item')
32932                 .call(iD.svg.Icon('#icon-alert', 'pre-text'));
32933
32934             resultsIndicator.append('span')
32935                 .attr('class', 'entity-name');
32936
32937             list.selectAll('.no-results-item .entity-name')
32938                 .text(noResultsWorldwide ? t('geocoder.no_results_worldwide') : t('geocoder.no_results_visible'));
32939
32940             list.selectAll('.geocode-item')
32941                 .data([0])
32942                 .enter().append('button')
32943                 .attr('class', 'geocode-item')
32944                 .on('click', geocode)
32945                 .append('div')
32946                 .attr('class', 'label')
32947                 .append('span')
32948                 .attr('class', 'entity-name')
32949                 .text(t('geocoder.search'));
32950
32951             list.selectAll('.no-results-item')
32952                 .style('display', (value.length && !results.length) ? 'block' : 'none');
32953
32954             list.selectAll('.geocode-item')
32955                 .style('display', (value && geocodeResults === undefined) ? 'block' : 'none');
32956
32957             list.selectAll('.feature-list-item')
32958                 .data([-1])
32959                 .remove();
32960
32961             var items = list.selectAll('.feature-list-item')
32962                 .data(results, function(d) { return d.id; });
32963
32964             var enter = items.enter()
32965                 .insert('button', '.geocode-item')
32966                 .attr('class', 'feature-list-item')
32967                 .on('mouseover', mouseover)
32968                 .on('mouseout', mouseout)
32969                 .on('click', click);
32970
32971             var label = enter
32972                 .append('div')
32973                 .attr('class', 'label');
32974
32975             label.each(function(d) {
32976                 d3.select(this)
32977                     .call(iD.svg.Icon('#icon-' + d.geometry, 'pre-text'));
32978             });
32979
32980             label.append('span')
32981                 .attr('class', 'entity-type')
32982                 .text(function(d) { return d.type; });
32983
32984             label.append('span')
32985                 .attr('class', 'entity-name')
32986                 .text(function(d) { return d.name; });
32987
32988             enter.style('opacity', 0)
32989                 .transition()
32990                 .style('opacity', 1);
32991
32992             items.order();
32993
32994             items.exit()
32995                 .remove();
32996         }
32997
32998         function mouseover(d) {
32999             if (d.id === -1) return;
33000
33001             context.surface().selectAll(iD.util.entityOrMemberSelector([d.id], context.graph()))
33002                 .classed('hover', true);
33003         }
33004
33005         function mouseout() {
33006             context.surface().selectAll('.hover')
33007                 .classed('hover', false);
33008         }
33009
33010         function click(d) {
33011             d3.event.preventDefault();
33012             if (d.location) {
33013                 context.map().centerZoom([d.location[1], d.location[0]], 20);
33014             }
33015             else if (d.entity) {
33016                 context.enter(iD.modes.Select(context, [d.entity.id]));
33017             } else {
33018                 context.zoomToEntity(d.id);
33019             }
33020         }
33021
33022         function geocode() {
33023             var searchVal = encodeURIComponent(search.property('value'));
33024             d3.json('http://nominatim.openstreetmap.org/search/' + searchVal + '?limit=10&format=json', function(err, resp) {
33025                 geocodeResults = resp || [];
33026                 drawList();
33027             });
33028         }
33029     }
33030
33031     return featureList;
33032 };
33033 iD.ui.flash = function(selection) {
33034     var modal = iD.ui.modal(selection);
33035
33036     modal.select('.modal').classed('modal-flash', true);
33037
33038     modal.select('.content')
33039         .classed('modal-section', true)
33040         .append('div')
33041         .attr('class', 'description');
33042
33043     modal.on('click.flash', function() { modal.remove(); });
33044
33045     setTimeout(function() {
33046         modal.remove();
33047         return true;
33048     }, 1500);
33049
33050     return modal;
33051 };
33052 iD.ui.FullScreen = function(context) {
33053     var element = context.container().node(),
33054         keybinding = d3.keybinding('full-screen');
33055         // button;
33056
33057     function getFullScreenFn() {
33058         if (element.requestFullscreen) {
33059             return element.requestFullscreen;
33060         } else if (element.msRequestFullscreen) {
33061             return  element.msRequestFullscreen;
33062         } else if (element.mozRequestFullScreen) {
33063             return  element.mozRequestFullScreen;
33064         } else if (element.webkitRequestFullscreen) {
33065             return element.webkitRequestFullscreen;
33066         }
33067     }
33068
33069     function getExitFullScreenFn() {
33070         if (document.exitFullscreen) {
33071             return document.exitFullscreen;
33072         } else if (document.msExitFullscreen) {
33073             return  document.msExitFullscreen;
33074         } else if (document.mozCancelFullScreen) {
33075             return  document.mozCancelFullScreen;
33076         } else if (document.webkitExitFullscreen) {
33077             return document.webkitExitFullscreen;
33078         }
33079     }
33080
33081     function isFullScreen() {
33082         return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement ||
33083             document.msFullscreenElement;
33084     }
33085
33086     function isSupported() {
33087         return !!getFullScreenFn();
33088     }
33089
33090     function fullScreen() {
33091         d3.event.preventDefault();
33092         if (!isFullScreen()) {
33093             // button.classed('active', true);
33094             getFullScreenFn().apply(element);
33095         } else {
33096             // button.classed('active', false);
33097             getExitFullScreenFn().apply(document);
33098         }
33099     }
33100
33101     return function() { // selection) {
33102         if (!isSupported())
33103             return;
33104
33105         // var tooltip = bootstrap.tooltip()
33106         //     .placement('left');
33107
33108         // button = selection.append('button')
33109         //     .attr('title', t('full_screen'))
33110         //     .attr('tabindex', -1)
33111         //     .on('click', fullScreen)
33112         //     .call(tooltip);
33113
33114         // button.append('span')
33115         //     .attr('class', 'icon full-screen');
33116
33117         keybinding
33118             .on('f11', fullScreen)
33119             .on(iD.ui.cmd('⌘⇧F'), fullScreen);
33120
33121         d3.select(document)
33122             .call(keybinding);
33123     };
33124 };
33125 iD.ui.Geolocate = function(map) {
33126     function click() {
33127         navigator.geolocation.getCurrentPosition(
33128             success, error);
33129     }
33130
33131     function success(position) {
33132         var extent = iD.geo.Extent([position.coords.longitude, position.coords.latitude])
33133             .padByMeters(position.coords.accuracy);
33134
33135         map.centerZoom(extent.center(), Math.min(20, map.extentZoom(extent)));
33136     }
33137
33138     function error() { }
33139
33140     return function(selection) {
33141         if (!navigator.geolocation) return;
33142
33143         selection.append('button')
33144             .attr('tabindex', -1)
33145             .attr('title', t('geolocate.title'))
33146             .on('click', click)
33147             .call(iD.svg.Icon('#icon-geolocate', 'light'))
33148             .call(bootstrap.tooltip()
33149                 .placement('left'));
33150     };
33151 };
33152 iD.ui.Help = function(context) {
33153     var key = 'H';
33154
33155     var docKeys = [
33156         'help.help',
33157         'help.editing_saving',
33158         'help.roads',
33159         'help.gps',
33160         'help.imagery',
33161         'help.addresses',
33162         'help.inspector',
33163         'help.buildings',
33164         'help.relations'];
33165
33166     var docs = docKeys.map(function(key) {
33167         var text = t(key);
33168         return {
33169             title: text.split('\n')[0].replace('#', '').trim(),
33170             html: marked(text.split('\n').slice(1).join('\n'))
33171         };
33172     });
33173
33174     function help(selection) {
33175
33176         function hide() {
33177             setVisible(false);
33178         }
33179
33180         function toggle() {
33181             if (d3.event) d3.event.preventDefault();
33182             tooltip.hide(button);
33183             setVisible(!button.classed('active'));
33184         }
33185
33186         function setVisible(show) {
33187             if (show !== shown) {
33188                 button.classed('active', show);
33189                 shown = show;
33190
33191                 if (show) {
33192                     selection.on('mousedown.help-inside', function() {
33193                         return d3.event.stopPropagation();
33194                     });
33195                     pane.style('display', 'block')
33196                         .style('right', '-500px')
33197                         .transition()
33198                         .duration(200)
33199                         .style('right', '0px');
33200                 } else {
33201                     pane.style('right', '0px')
33202                         .transition()
33203                         .duration(200)
33204                         .style('right', '-500px')
33205                         .each('end', function() {
33206                             d3.select(this).style('display', 'none');
33207                         });
33208                     selection.on('mousedown.help-inside', null);
33209                 }
33210             }
33211         }
33212
33213         function clickHelp(d, i) {
33214             pane.property('scrollTop', 0);
33215             doctitle.html(d.title);
33216             body.html(d.html);
33217             body.selectAll('a')
33218                 .attr('target', '_blank');
33219             menuItems.classed('selected', function(m) {
33220                 return m.title === d.title;
33221             });
33222
33223             nav.html('');
33224
33225             if (i > 0) {
33226                 var prevLink = nav.append('a')
33227                     .attr('class', 'previous')
33228                     .on('click', function() {
33229                         clickHelp(docs[i - 1], i - 1);
33230                     });
33231                 prevLink.append('span').html('&#9668; ' + docs[i - 1].title);
33232             }
33233             if (i < docs.length - 1) {
33234                 var nextLink = nav.append('a')
33235                     .attr('class', 'next')
33236                     .on('click', function() {
33237                         clickHelp(docs[i + 1], i + 1);
33238                     });
33239                 nextLink.append('span').html(docs[i + 1].title + ' &#9658;');
33240             }
33241         }
33242
33243         function clickWalkthrough() {
33244             d3.select(document.body).call(iD.ui.intro(context));
33245             setVisible(false);
33246         }
33247
33248
33249         var pane = selection.append('div')
33250                 .attr('class', 'help-wrap map-overlay fillL col5 content hide'),
33251             tooltip = bootstrap.tooltip()
33252                 .placement('left')
33253                 .html(true)
33254                 .title(iD.ui.tooltipHtml(t('help.title'), key)),
33255             button = selection.append('button')
33256                 .attr('tabindex', -1)
33257                 .on('click', toggle)
33258                 .call(iD.svg.Icon('#icon-help', 'light'))
33259                 .call(tooltip),
33260             shown = false;
33261
33262
33263         var toc = pane.append('ul')
33264             .attr('class', 'toc');
33265
33266         var menuItems = toc.selectAll('li')
33267             .data(docs)
33268             .enter()
33269             .append('li')
33270             .append('a')
33271             .html(function(d) { return d.title; })
33272             .on('click', clickHelp);
33273
33274         toc.append('li')
33275             .attr('class','walkthrough')
33276             .append('a')
33277             .text(t('splash.walkthrough'))
33278             .on('click', clickWalkthrough);
33279
33280         var content = pane.append('div')
33281             .attr('class', 'left-content');
33282
33283         var doctitle = content.append('h2')
33284             .text(t('help.title'));
33285
33286         var body = content.append('div')
33287             .attr('class', 'body');
33288
33289         var nav = content.append('div')
33290             .attr('class', 'nav');
33291
33292         clickHelp(docs[0], 0);
33293
33294         var keybinding = d3.keybinding('help')
33295             .on(key, toggle)
33296             .on('B', hide)
33297             .on('F', hide);
33298
33299         d3.select(document)
33300             .call(keybinding);
33301
33302         context.surface().on('mousedown.help-outside', hide);
33303         context.container().on('mousedown.help-outside', hide);
33304     }
33305
33306     return help;
33307 };
33308 iD.ui.Info = function(context) {
33309     var key = iD.ui.cmd('⌘I'),
33310         imperial = (iD.detect().locale.toLowerCase() === 'en-us');
33311
33312     function info(selection) {
33313         function radiansToMeters(r) {
33314             // using WGS84 authalic radius (6371007.1809 m)
33315             return r * 6371007.1809;
33316         }
33317
33318         function steradiansToSqmeters(r) {
33319             // http://gis.stackexchange.com/a/124857/40446
33320             return r / 12.56637 * 510065621724000;
33321         }
33322
33323         function toLineString(feature) {
33324             if (feature.type === 'LineString') return feature;
33325
33326             var result = { type: 'LineString', coordinates: [] };
33327             if (feature.type === 'Polygon') {
33328                 result.coordinates = feature.coordinates[0];
33329             } else if (feature.type === 'MultiPolygon') {
33330                 result.coordinates = feature.coordinates[0][0];
33331             }
33332
33333             return result;
33334         }
33335
33336         function displayLength(m) {
33337             var d = m * (imperial ? 3.28084 : 1),
33338                 p, unit;
33339
33340             if (imperial) {
33341                 if (d >= 5280) {
33342                     d /= 5280;
33343                     unit = 'mi';
33344                 } else {
33345                     unit = 'ft';
33346                 }
33347             } else {
33348                 if (d >= 1000) {
33349                     d /= 1000;
33350                     unit = 'km';
33351                 } else {
33352                     unit = 'm';
33353                 }
33354             }
33355
33356             // drop unnecessary precision
33357             p = d > 1000 ? 0 : d > 100 ? 1 : 2;
33358
33359             return String(d.toFixed(p)) + ' ' + unit;
33360         }
33361
33362         function displayArea(m2) {
33363             var d = m2 * (imperial ? 10.7639111056 : 1),
33364                 d1, d2, p1, p2, unit1, unit2;
33365
33366             if (imperial) {
33367                 if (d >= 6969600) {     // > 0.25mi² show mi²
33368                     d1 = d / 27878400;
33369                     unit1 = 'mi²';
33370                 } else {
33371                     d1 = d;
33372                     unit1 = 'ft²';
33373                 }
33374
33375                 if (d > 4356 && d < 43560000) {   // 0.1 - 1000 acres
33376                     d2 = d / 43560;
33377                     unit2 = 'ac';
33378                 }
33379
33380             } else {
33381                 if (d >= 250000) {    // > 0.25km² show km²
33382                     d1 = d / 1000000;
33383                     unit1 = 'km²';
33384                 } else {
33385                     d1 = d;
33386                     unit1 = 'm²';
33387                 }
33388
33389                 if (d > 1000 && d < 10000000) {   // 0.1 - 1000 hectares
33390                     d2 = d / 10000;
33391                     unit2 = 'ha';
33392                 }
33393             }
33394
33395             // drop unnecessary precision
33396             p1 = d1 > 1000 ? 0 : d1 > 100 ? 1 : 2;
33397             p2 = d2 > 1000 ? 0 : d2 > 100 ? 1 : 2;
33398
33399             return String(d1.toFixed(p1)) + ' ' + unit1 +
33400                 (d2 ? ' (' + String(d2.toFixed(p2)) + ' ' + unit2 + ')' : '');
33401         }
33402
33403
33404         function redraw() {
33405             if (hidden()) return;
33406
33407             var resolver = context.graph(),
33408                 selected = _.filter(context.selectedIDs(), function(e) { return context.hasEntity(e); }),
33409                 singular = selected.length === 1 ? selected[0] : null,
33410                 extent = iD.geo.Extent(),
33411                 entity;
33412
33413             selection.html('');
33414             selection.append('h4')
33415                 .attr('class', 'selection-heading fillD')
33416                 .text(singular || t('infobox.selected', { n: selected.length }));
33417
33418             if (!selected.length) return;
33419
33420             var center;
33421             for (var i = 0; i < selected.length; i++) {
33422                 entity = context.entity(selected[i]);
33423                 extent._extend(entity.extent(resolver));
33424             }
33425             center = extent.center();
33426
33427
33428             var list = selection.append('ul');
33429
33430             // multiple selection, just display extent center..
33431             if (!singular) {
33432                 list.append('li')
33433                     .text(t('infobox.center') + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33434                 return;
33435             }
33436
33437             // single selection, display details..
33438             if (!entity) return;
33439             var geometry = entity.geometry(resolver);
33440
33441             if (geometry === 'line' || geometry === 'area') {
33442                 var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()),
33443                     feature = entity.asGeoJSON(resolver),
33444                     length = radiansToMeters(d3.geo.length(toLineString(feature))),
33445                     lengthLabel = t('infobox.' + (closed ? 'perimeter' : 'length')),
33446                     centroid = d3.geo.centroid(feature);
33447
33448                 list.append('li')
33449                     .text(t('infobox.geometry') + ': ' +
33450                         (closed ? t('infobox.closed') + ' ' : '') + t('geometry.' + geometry) );
33451
33452                 if (closed) {
33453                     var area = steradiansToSqmeters(entity.area(resolver));
33454                     list.append('li')
33455                         .text(t('infobox.area') + ': ' + displayArea(area));
33456                 }
33457
33458                 list.append('li')
33459                     .text(lengthLabel + ': ' + displayLength(length));
33460
33461                 list.append('li')
33462                     .text(t('infobox.centroid') + ': ' + centroid[0].toFixed(5) + ', ' + centroid[1].toFixed(5));
33463
33464
33465                 var toggle  = imperial ? 'imperial' : 'metric';
33466                 selection.append('a')
33467                     .text(t('infobox.' + toggle))
33468                     .attr('href', '#')
33469                     .attr('class', 'button')
33470                     .on('click', function() {
33471                         d3.event.preventDefault();
33472                         imperial = !imperial;
33473                         redraw();
33474                     });
33475
33476             } else {
33477                 var centerLabel = t('infobox.' + (entity.type === 'node' ? 'location' : 'center'));
33478
33479                 list.append('li')
33480                     .text(t('infobox.geometry') + ': ' + t('geometry.' + geometry));
33481
33482                 list.append('li')
33483                     .text(centerLabel + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33484             }
33485         }
33486
33487
33488         function hidden() {
33489             return selection.style('display') === 'none';
33490         }
33491
33492
33493         function toggle() {
33494             if (d3.event) d3.event.preventDefault();
33495
33496             if (hidden()) {
33497                 selection
33498                     .style('display', 'block')
33499                     .style('opacity', 0)
33500                     .transition()
33501                     .duration(200)
33502                     .style('opacity', 1);
33503
33504                 redraw();
33505
33506             } else {
33507                 selection
33508                     .style('display', 'block')
33509                     .style('opacity', 1)
33510                     .transition()
33511                     .duration(200)
33512                     .style('opacity', 0)
33513                     .each('end', function() {
33514                         d3.select(this).style('display', 'none');
33515                     });
33516             }
33517         }
33518
33519         context.map()
33520             .on('drawn.info', redraw);
33521
33522         redraw();
33523
33524         var keybinding = d3.keybinding('info')
33525             .on(key, toggle);
33526
33527         d3.select(document)
33528             .call(keybinding);
33529     }
33530
33531     return info;
33532 };
33533 iD.ui.Inspector = function(context) {
33534     var presetList = iD.ui.PresetList(context),
33535         entityEditor = iD.ui.EntityEditor(context),
33536         state = 'select',
33537         entityID,
33538         newFeature = false;
33539
33540     function inspector(selection) {
33541         presetList
33542             .entityID(entityID)
33543             .autofocus(newFeature)
33544             .on('choose', setPreset);
33545
33546         entityEditor
33547             .state(state)
33548             .entityID(entityID)
33549             .on('choose', showList);
33550
33551         var $wrap = selection.selectAll('.panewrap')
33552             .data([0]);
33553
33554         var $enter = $wrap.enter().append('div')
33555             .attr('class', 'panewrap');
33556
33557         $enter.append('div')
33558             .attr('class', 'preset-list-pane pane');
33559
33560         $enter.append('div')
33561             .attr('class', 'entity-editor-pane pane');
33562
33563         var $presetPane = $wrap.select('.preset-list-pane');
33564         var $editorPane = $wrap.select('.entity-editor-pane');
33565
33566         var graph = context.graph(),
33567             entity = context.entity(entityID),
33568             showEditor = state === 'hover' ||
33569                 entity.isUsed(graph) ||
33570                 entity.isHighwayIntersection(graph);
33571
33572         if (showEditor) {
33573             $wrap.style('right', '0%');
33574             $editorPane.call(entityEditor);
33575         } else {
33576             $wrap.style('right', '-100%');
33577             $presetPane.call(presetList);
33578         }
33579
33580         var $footer = selection.selectAll('.footer')
33581             .data([0]);
33582
33583         $footer.enter().append('div')
33584             .attr('class', 'footer');
33585
33586         selection.select('.footer')
33587             .call(iD.ui.ViewOnOSM(context)
33588                 .entityID(entityID));
33589
33590         function showList(preset) {
33591             $wrap.transition()
33592                 .styleTween('right', function() { return d3.interpolate('0%', '-100%'); });
33593
33594             $presetPane.call(presetList
33595                 .preset(preset)
33596                 .autofocus(true));
33597         }
33598
33599         function setPreset(preset) {
33600             $wrap.transition()
33601                 .styleTween('right', function() { return d3.interpolate('-100%', '0%'); });
33602
33603             $editorPane.call(entityEditor
33604                 .preset(preset));
33605         }
33606     }
33607
33608     inspector.state = function(_) {
33609         if (!arguments.length) return state;
33610         state = _;
33611         entityEditor.state(state);
33612         return inspector;
33613     };
33614
33615     inspector.entityID = function(_) {
33616         if (!arguments.length) return entityID;
33617         entityID = _;
33618         return inspector;
33619     };
33620
33621     inspector.newFeature = function(_) {
33622         if (!arguments.length) return newFeature;
33623         newFeature = _;
33624         return inspector;
33625     };
33626
33627     return inspector;
33628 };
33629 iD.ui.intro = function(context) {
33630
33631     var step;
33632
33633     function intro(selection) {
33634
33635         context.enter(iD.modes.Browse(context));
33636
33637         // Save current map state
33638         var history = context.history().toJSON(),
33639             hash = window.location.hash,
33640             center = context.map().center(),
33641             zoom = context.map().zoom(),
33642             background = context.background().baseLayerSource(),
33643             opacity = d3.select('.background-layer').style('opacity'),
33644             loadedTiles = context.connection().loadedTiles(),
33645             baseEntities = context.history().graph().base().entities,
33646             introGraph;
33647
33648         // Load semi-real data used in intro
33649         context.connection().toggle(false).flush();
33650         context.history().reset();
33651
33652         introGraph = JSON.parse(iD.introGraph);
33653         for (var key in introGraph) {
33654             introGraph[key] = iD.Entity(introGraph[key]);
33655         }
33656         context.history().merge(d3.values(iD.Graph().load(introGraph).entities));
33657         context.background().bing();
33658
33659         // Block saving
33660         var savebutton = d3.select('#bar button.save'),
33661             save = savebutton.on('click');
33662         savebutton.on('click', null);
33663         context.inIntro(true);
33664
33665         d3.select('.background-layer').style('opacity', 1);
33666
33667         var curtain = d3.curtain();
33668         selection.call(curtain);
33669
33670         function reveal(box, text, options) {
33671             options = options || {};
33672             if (text) curtain.reveal(box, text, options.tooltipClass, options.duration);
33673             else curtain.reveal(box, '', '', options.duration);
33674         }
33675
33676         var steps = ['navigation', 'point', 'area', 'line', 'startEditing'].map(function(step, i) {
33677             var s = iD.ui.intro[step](context, reveal)
33678                 .on('done', function() {
33679                     entered.filter(function(d) {
33680                         return d.title === s.title;
33681                     }).classed('finished', true);
33682                     enter(steps[i + 1]);
33683                 });
33684             return s;
33685         });
33686
33687         steps[steps.length - 1].on('startEditing', function() {
33688             curtain.remove();
33689             navwrap.remove();
33690             d3.select('.background-layer').style('opacity', opacity);
33691             context.connection().toggle(true).flush().loadedTiles(loadedTiles);
33692             context.history().reset().merge(d3.values(baseEntities));
33693             context.background().baseLayerSource(background);
33694             if (history) context.history().fromJSON(history, false);
33695             context.map().centerZoom(center, zoom);
33696             window.location.replace(hash);
33697             context.inIntro(false);
33698             d3.select('#bar button.save').on('click', save);
33699         });
33700
33701         var navwrap = selection.append('div').attr('class', 'intro-nav-wrap fillD');
33702
33703         var buttonwrap = navwrap.append('div')
33704             .attr('class', 'joined')
33705             .selectAll('button.step');
33706
33707         var entered = buttonwrap
33708             .data(steps)
33709             .enter()
33710             .append('button')
33711             .attr('class', 'step')
33712             .on('click', enter);
33713
33714         entered
33715             .call(iD.svg.Icon('#icon-apply', 'pre-text'));
33716
33717         entered
33718             .append('label')
33719             .text(function(d) { return t(d.title); });
33720
33721         enter(steps[0]);
33722
33723         function enter (newStep) {
33724             if (step) { step.exit(); }
33725
33726             context.enter(iD.modes.Browse(context));
33727
33728             step = newStep;
33729             step.enter();
33730
33731             entered.classed('active', function(d) {
33732                 return d.title === step.title;
33733             });
33734         }
33735
33736     }
33737     return intro;
33738 };
33739
33740 iD.ui.intro.pointBox = function(point, context) {
33741     var rect = context.surfaceRect();
33742     point = context.projection(point);
33743     return {
33744         left: point[0] + rect.left - 30,
33745         top: point[1] + rect.top - 50,
33746         width: 60,
33747         height: 70
33748     };
33749 };
33750
33751 iD.ui.intro.pad = function(box, padding, context) {
33752     if (box instanceof Array) {
33753         var rect = context.surfaceRect();
33754         box = context.projection(box);
33755         box = {
33756             left: box[0] + rect.left,
33757             top: box[1] + rect.top
33758         };
33759     }
33760     return {
33761         left: box.left - padding,
33762         top: box.top - padding,
33763         width: (box.width || 0) + 2 * padding,
33764         height: (box.width || 0) + 2 * padding
33765     };
33766 };
33767 iD.ui.Lasso = function(context) {
33768
33769     var box, group,
33770         a = [0, 0],
33771         b = [0, 0];
33772
33773     function lasso(selection) {
33774
33775         context.container().classed('lasso', true);
33776
33777         group = selection.append('g')
33778             .attr('class', 'lasso hide');
33779
33780         box = group.append('rect')
33781             .attr('class', 'lasso-box');
33782
33783         group.call(iD.ui.Toggle(true));
33784
33785     }
33786
33787     // top-left
33788     function topLeft(d) {
33789         return 'translate(' + Math.min(d[0][0], d[1][0]) + ',' + Math.min(d[0][1], d[1][1]) + ')';
33790     }
33791
33792     function width(d) { return Math.abs(d[0][0] - d[1][0]); }
33793     function height(d) { return Math.abs(d[0][1] - d[1][1]); }
33794
33795     function draw() {
33796         if (box) {
33797             box.data([[a, b]])
33798                 .attr('transform', topLeft)
33799                 .attr('width', width)
33800                 .attr('height', height);
33801         }
33802     }
33803
33804     lasso.a = function(_) {
33805         if (!arguments.length) return a;
33806         a = _;
33807         draw();
33808         return lasso;
33809     };
33810
33811     lasso.b = function(_) {
33812         if (!arguments.length) return b;
33813         b = _;
33814         draw();
33815         return lasso;
33816     };
33817
33818     lasso.close = function() {
33819         if (group) {
33820             group.call(iD.ui.Toggle(false, function() {
33821                 d3.select(this).remove();
33822             }));
33823         }
33824         context.container().classed('lasso', false);
33825     };
33826
33827     return lasso;
33828 };
33829 iD.ui.Loading = function(context) {
33830     var message = '',
33831         blocking = false,
33832         modal;
33833
33834     var loading = function(selection) {
33835         modal = iD.ui.modal(selection, blocking);
33836
33837         var loadertext = modal.select('.content')
33838             .classed('loading-modal', true)
33839             .append('div')
33840             .attr('class', 'modal-section fillL');
33841
33842         loadertext.append('img')
33843             .attr('class', 'loader')
33844             .attr('src', context.imagePath('loader-white.gif'));
33845
33846         loadertext.append('h3')
33847             .text(message);
33848
33849         modal.select('button.close')
33850             .attr('class', 'hide');
33851
33852         return loading;
33853     };
33854
33855     loading.message = function(_) {
33856         if (!arguments.length) return message;
33857         message = _;
33858         return loading;
33859     };
33860
33861     loading.blocking = function(_) {
33862         if (!arguments.length) return blocking;
33863         blocking = _;
33864         return loading;
33865     };
33866
33867     loading.close = function() {
33868         modal.remove();
33869     };
33870
33871     return loading;
33872 };
33873 iD.ui.MapData = function(context) {
33874     var key = 'F',
33875         features = context.features().keys(),
33876         fills = ['wireframe', 'partial', 'full'],
33877         fillDefault = context.storage('area-fill') || 'partial',
33878         fillSelected = fillDefault;
33879
33880     function map_data(selection) {
33881
33882         function showsFeature(d) {
33883             return context.features().enabled(d);
33884         }
33885
33886         function autoHiddenFeature(d) {
33887             return context.features().autoHidden(d);
33888         }
33889
33890         function clickFeature(d) {
33891             context.features().toggle(d);
33892             update();
33893         }
33894
33895         function showsFill(d) {
33896             return fillSelected === d;
33897         }
33898
33899         function setFill(d) {
33900             _.each(fills, function(opt) {
33901                 context.surface().classed('fill-' + opt, Boolean(opt === d));
33902             });
33903
33904             fillSelected = d;
33905             if (d !== 'wireframe') {
33906                 fillDefault = d;
33907                 context.storage('area-fill', d);
33908             }
33909             update();
33910         }
33911
33912         function clickGpx() {
33913             context.background().toggleGpxLayer();
33914             update();
33915         }
33916
33917         function clickMapillary() {
33918             context.background().toggleMapillaryLayer();
33919             update();
33920         }
33921
33922         function drawList(selection, data, type, name, change, active) {
33923             var items = selection.selectAll('li')
33924                 .data(data);
33925
33926             //enter
33927             var enter = items.enter()
33928                 .append('li')
33929                 .attr('class', 'layer')
33930                 .call(bootstrap.tooltip()
33931                     .html(true)
33932                     .title(function(d) {
33933                         var tip = t(name + '.' + d + '.tooltip'),
33934                             key = (d === 'wireframe' ? 'W' : null);
33935
33936                         if (name === 'feature' && autoHiddenFeature(d)) {
33937                             tip += '<div>' + t('map_data.autohidden') + '</div>';
33938                         }
33939                         return iD.ui.tooltipHtml(tip, key);
33940                     })
33941                     .placement('top')
33942                 );
33943
33944             var label = enter.append('label');
33945
33946             label.append('input')
33947                 .attr('type', type)
33948                 .attr('name', name)
33949                 .on('change', change);
33950
33951             label.append('span')
33952                 .text(function(d) { return t(name + '.' + d + '.description'); });
33953
33954             //update
33955             items
33956                 .classed('active', active)
33957                 .selectAll('input')
33958                 .property('checked', active)
33959                 .property('indeterminate', function(d) {
33960                     return (name === 'feature' && autoHiddenFeature(d));
33961                 });
33962
33963             //exit
33964             items.exit()
33965                 .remove();
33966         }
33967
33968         function update() {
33969             featureList.call(drawList, features, 'checkbox', 'feature', clickFeature, showsFeature);
33970             fillList.call(drawList, fills, 'radio', 'area_fill', setFill, showsFill);
33971
33972             var hasGpx = context.background().hasGpxLayer(),
33973                 showsGpx = context.background().showsGpxLayer(),
33974                 showsMapillary = context.background().showsMapillaryLayer();
33975
33976             gpxLayerItem
33977                 .classed('active', showsGpx)
33978                 .selectAll('input')
33979                 .property('disabled', !hasGpx)
33980                 .property('checked', showsGpx);
33981
33982             mapillaryLayerItem
33983                 .classed('active', showsMapillary)
33984                 .selectAll('input')
33985                 .property('checked', showsMapillary);
33986         }
33987
33988         function hidePanel() { setVisible(false); }
33989
33990         function togglePanel() {
33991             if (d3.event) d3.event.preventDefault();
33992             tooltip.hide(button);
33993             setVisible(!button.classed('active'));
33994         }
33995
33996         function toggleWireframe() {
33997             if (d3.event) {
33998                 d3.event.preventDefault();
33999                 d3.event.stopPropagation();
34000             }
34001             setFill((fillSelected === 'wireframe' ? fillDefault : 'wireframe'));
34002             context.map().pan([0,0]);  // trigger a redraw
34003         }
34004
34005         function setVisible(show) {
34006             if (show !== shown) {
34007                 button.classed('active', show);
34008                 shown = show;
34009
34010                 if (show) {
34011                     selection.on('mousedown.map_data-inside', function() {
34012                         return d3.event.stopPropagation();
34013                     });
34014                     content.style('display', 'block')
34015                         .style('right', '-300px')
34016                         .transition()
34017                         .duration(200)
34018                         .style('right', '0px');
34019                 } else {
34020                     content.style('display', 'block')
34021                         .style('right', '0px')
34022                         .transition()
34023                         .duration(200)
34024                         .style('right', '-300px')
34025                         .each('end', function() {
34026                             d3.select(this).style('display', 'none');
34027                         });
34028                     selection.on('mousedown.map_data-inside', null);
34029                 }
34030             }
34031         }
34032
34033
34034         var content = selection.append('div')
34035                 .attr('class', 'fillL map-overlay col3 content hide'),
34036             tooltip = bootstrap.tooltip()
34037                 .placement('left')
34038                 .html(true)
34039                 .title(iD.ui.tooltipHtml(t('map_data.description'), key)),
34040             button = selection.append('button')
34041                 .attr('tabindex', -1)
34042                 .on('click', togglePanel)
34043                 .call(iD.svg.Icon('#icon-data', 'light'))
34044                 .call(tooltip),
34045             shown = false;
34046
34047         content.append('h4')
34048             .text(t('map_data.title'));
34049
34050
34051         // data layers
34052         content.append('a')
34053             .text(t('map_data.data_layers'))
34054             .attr('href', '#')
34055             .classed('hide-toggle', true)
34056             .classed('expanded', true)
34057             .on('click', function() {
34058                 var exp = d3.select(this).classed('expanded');
34059                 layerContainer.style('display', exp ? 'none' : 'block');
34060                 d3.select(this).classed('expanded', !exp);
34061                 d3.event.preventDefault();
34062             });
34063
34064         var layerContainer = content.append('div')
34065             .attr('class', 'filters')
34066             .style('display', 'block');
34067
34068         // mapillary
34069         var mapillaryLayerItem = layerContainer.append('ul')
34070             .attr('class', 'layer-list')
34071             .append('li');
34072
34073         var label = mapillaryLayerItem.append('label')
34074             .call(bootstrap.tooltip()
34075                 .title(t('mapillary.tooltip'))
34076                 .placement('top'));
34077
34078         label.append('input')
34079             .attr('type', 'checkbox')
34080             .on('change', clickMapillary);
34081
34082         label.append('span')
34083             .text(t('mapillary.title'));
34084
34085         // gpx
34086         var gpxLayerItem = layerContainer.append('ul')
34087             .style('display', iD.detect().filedrop ? 'block' : 'none')
34088             .attr('class', 'layer-list')
34089             .append('li')
34090             .classed('layer-toggle-gpx', true);
34091
34092         gpxLayerItem.append('button')
34093             .attr('class', 'layer-extent')
34094             .call(bootstrap.tooltip()
34095                 .title(t('gpx.zoom'))
34096                 .placement('left'))
34097             .on('click', function() {
34098                 d3.event.preventDefault();
34099                 d3.event.stopPropagation();
34100                 context.background().zoomToGpxLayer();
34101             })
34102             .call(iD.svg.Icon('#icon-search'));
34103
34104         gpxLayerItem.append('button')
34105             .attr('class', 'layer-browse')
34106             .call(bootstrap.tooltip()
34107                 .title(t('gpx.browse'))
34108                 .placement('left'))
34109             .on('click', function() {
34110                 d3.select(document.createElement('input'))
34111                     .attr('type', 'file')
34112                     .on('change', function() {
34113                         context.background().gpxLayerFiles(d3.event.target.files);
34114                     })
34115                     .node().click();
34116             })
34117             .call(iD.svg.Icon('#icon-geolocate'));
34118
34119         label = gpxLayerItem.append('label')
34120             .call(bootstrap.tooltip()
34121                 .title(t('gpx.drag_drop'))
34122                 .placement('top'));
34123
34124         label.append('input')
34125             .attr('type', 'checkbox')
34126             .property('disabled', true)
34127             .on('change', clickGpx);
34128
34129         label.append('span')
34130             .text(t('gpx.local_layer'));
34131
34132
34133         // area fills
34134         content.append('a')
34135             .text(t('map_data.fill_area'))
34136             .attr('href', '#')
34137             .classed('hide-toggle', true)
34138             .classed('expanded', false)
34139             .on('click', function() {
34140                 var exp = d3.select(this).classed('expanded');
34141                 fillContainer.style('display', exp ? 'none' : 'block');
34142                 d3.select(this).classed('expanded', !exp);
34143                 d3.event.preventDefault();
34144             });
34145
34146         var fillContainer = content.append('div')
34147             .attr('class', 'filters')
34148             .style('display', 'none');
34149
34150         var fillList = fillContainer.append('ul')
34151             .attr('class', 'layer-list');
34152
34153
34154         // feature filters
34155         content.append('a')
34156             .text(t('map_data.map_features'))
34157             .attr('href', '#')
34158             .classed('hide-toggle', true)
34159             .classed('expanded', false)
34160             .on('click', function() {
34161                 var exp = d3.select(this).classed('expanded');
34162                 featureContainer.style('display', exp ? 'none' : 'block');
34163                 d3.select(this).classed('expanded', !exp);
34164                 d3.event.preventDefault();
34165             });
34166
34167         var featureContainer = content.append('div')
34168             .attr('class', 'filters')
34169             .style('display', 'none');
34170
34171         var featureList = featureContainer.append('ul')
34172             .attr('class', 'layer-list');
34173
34174
34175         context.features()
34176             .on('change.map_data-update', update);
34177
34178         setFill(fillDefault);
34179
34180         var keybinding = d3.keybinding('features')
34181             .on(key, togglePanel)
34182             .on('W', toggleWireframe)
34183             .on('B', hidePanel)
34184             .on('H', hidePanel);
34185
34186         d3.select(document)
34187             .call(keybinding);
34188
34189         context.surface().on('mousedown.map_data-outside', hidePanel);
34190         context.container().on('mousedown.map_data-outside', hidePanel);
34191     }
34192
34193     return map_data;
34194 };
34195 iD.ui.MapInMap = function(context) {
34196     var key = '/';
34197
34198     function map_in_map(selection) {
34199
34200         var backgroundLayer = iD.TileLayer(),
34201             overlayLayers = {},
34202             dispatch = d3.dispatch('change'),
34203             gpxLayer = iD.GpxLayer(context, dispatch),
34204             projection = iD.geo.RawMercator(),
34205             zoom = d3.behavior.zoom()
34206                 .scaleExtent([ztok(0.5), ztok(24)])
34207                 .on('zoom', zoomPan),
34208             transformed = false,
34209             panning = false,
34210             zDiff = 6,    // by default, minimap renders at (main zoom - 6)
34211             tStart, tLast, tCurr, kLast, kCurr, tiles, svg, gpx, timeoutId;
34212
34213         iD.ui.MapInMap.gpxLayer = gpxLayer;
34214
34215         function ztok(z) { return 256 * Math.pow(2, z); }
34216         function ktoz(k) { return Math.log(k) / Math.LN2 - 8; }
34217
34218
34219         function startMouse() {
34220             context.surface().on('mouseup.map-in-map-outside', endMouse);
34221             context.container().on('mouseup.map-in-map-outside', endMouse);
34222
34223             tStart = tLast = tCurr = projection.translate();
34224             panning = true;
34225         }
34226
34227
34228         function zoomPan() {
34229             var e = d3.event.sourceEvent,
34230                 t = d3.event.translate,
34231                 k = d3.event.scale,
34232                 zMain = ktoz(context.projection.scale() * 2 * Math.PI),
34233                 zMini = ktoz(k);
34234
34235             // restrict minimap zoom to < (main zoom - 3)
34236             if (zMini > zMain - 3) {
34237                 zMini = zMain - 3;
34238                 zoom.scale(kCurr).translate(tCurr);  // restore last good values
34239                 return;
34240             }
34241
34242             tCurr = t;
34243             kCurr = k;
34244             zDiff = zMain - zMini;
34245
34246             var scale = kCurr / kLast,
34247                 tX = (tCurr[0] / scale - tLast[0]) * scale,
34248                 tY = (tCurr[1] / scale - tLast[1]) * scale;
34249
34250             iD.util.setTransform(tiles, tX, tY, scale);
34251             iD.util.setTransform(svg, 0, 0, scale);
34252             transformed = true;
34253
34254             queueRedraw();
34255
34256             e.preventDefault();
34257             e.stopPropagation();
34258         }
34259
34260
34261         function endMouse() {
34262             context.surface().on('mouseup.map-in-map-outside', null);
34263             context.container().on('mouseup.map-in-map-outside', null);
34264
34265             updateProjection();
34266             panning = false;
34267
34268             if (tCurr[0] !== tStart[0] && tCurr[1] !== tStart[1]) {
34269                 var dMini = selection.dimensions(),
34270                     cMini = [ dMini[0] / 2, dMini[1] / 2 ];
34271
34272                 context.map().center(projection.invert(cMini));
34273             }
34274         }
34275
34276
34277         function updateProjection() {
34278             var loc = context.map().center(),
34279                 dMini = selection.dimensions(),
34280                 cMini = [ dMini[0] / 2, dMini[1] / 2 ],
34281                 tMain = context.projection.translate(),
34282                 kMain = context.projection.scale(),
34283                 zMain = ktoz(kMain * 2 * Math.PI),
34284                 zMini = Math.max(zMain - zDiff, 0.5),
34285                 kMini = ztok(zMini);
34286
34287             projection
34288                 .translate(tMain)
34289                 .scale(kMini / (2 * Math.PI));
34290
34291             var s = projection(loc),
34292                 mouse = panning ? [ tCurr[0] - tStart[0], tCurr[1] - tStart[1] ] : [0, 0],
34293                 tMini = [
34294                     cMini[0] - s[0] + tMain[0] + mouse[0],
34295                     cMini[1] - s[1] + tMain[1] + mouse[1]
34296                 ];
34297
34298             projection
34299                 .translate(tMini)
34300                 .clipExtent([[0, 0], dMini]);
34301
34302             zoom
34303                 .center(cMini)
34304                 .translate(tMini)
34305                 .scale(kMini);
34306
34307             tLast = tCurr = tMini;
34308             kLast = kCurr = kMini;
34309
34310             if (transformed) {
34311                 iD.util.setTransform(tiles, 0, 0);
34312                 iD.util.setTransform(svg, 0, 0);
34313                 transformed = false;
34314             }
34315         }
34316
34317
34318         function redraw() {
34319             if (hidden()) return;
34320
34321             updateProjection();
34322
34323             var dMini = selection.dimensions(),
34324                 zMini = ktoz(projection.scale() * 2 * Math.PI);
34325
34326             // setup tile container
34327             tiles = selection
34328                 .selectAll('.map-in-map-tiles')
34329                 .data([0]);
34330
34331             tiles
34332                 .enter()
34333                 .append('div')
34334                 .attr('class', 'map-in-map-tiles');
34335
34336             // redraw background
34337             backgroundLayer
34338                 .source(context.background().baseLayerSource())
34339                 .projection(projection)
34340                 .dimensions(dMini);
34341
34342             var background = tiles
34343                 .selectAll('.map-in-map-background')
34344                 .data([0]);
34345
34346             background.enter()
34347                 .append('div')
34348                 .attr('class', 'map-in-map-background');
34349
34350             background
34351                 .call(backgroundLayer);
34352
34353             // redraw overlay
34354             var overlaySources = context.background().overlayLayerSources();
34355             var activeOverlayLayers = [];
34356             for (var i = 0; i < overlaySources.length; i++) {
34357                 if (overlaySources[i].validZoom(zMini)) {
34358                     if (!overlayLayers[i]) overlayLayers[i] = iD.TileLayer();
34359                     activeOverlayLayers.push(overlayLayers[i]
34360                         .source(overlaySources[i])
34361                         .projection(projection)
34362                         .dimensions(dMini));
34363                 }
34364             }
34365
34366             var overlay = tiles
34367                 .selectAll('.map-in-map-overlay')
34368                 .data([0]);
34369
34370             overlay.enter()
34371                 .append('div')
34372                 .attr('class', 'map-in-map-overlay');
34373
34374             var overlays = overlay
34375                 .selectAll('div')
34376                 .data(activeOverlayLayers, function(d) { return d.source().name(); });
34377
34378             overlays.enter().append('div');
34379             overlays.each(function(layer) {
34380                 d3.select(this).call(layer);
34381             });
34382
34383             overlays.exit()
34384                 .remove();
34385
34386             // redraw gpx overlay
34387             gpxLayer
34388                 .projection(projection);
34389
34390             gpx = tiles
34391                 .selectAll('.map-in-map-gpx')
34392                 .data([0]);
34393
34394             gpx.enter()
34395                 .append('div')
34396                 .attr('class', 'map-in-map-gpx');
34397
34398             gpx.call(gpxLayer);
34399             gpx.dimensions(dMini);
34400
34401             // redraw bounding box
34402             if (!panning) {
34403                 var getPath = d3.geo.path().projection(projection),
34404                     bbox = { type: 'Polygon', coordinates: [context.map().extent().polygon()] };
34405
34406                 svg = selection.selectAll('.map-in-map-svg')
34407                     .data([0]);
34408
34409                 svg.enter()
34410                     .append('svg')
34411                     .attr('class', 'map-in-map-svg');
34412
34413                 var path = svg.selectAll('.map-in-map-bbox')
34414                     .data([bbox]);
34415
34416                 path.enter()
34417                     .append('path')
34418                     .attr('class', 'map-in-map-bbox');
34419
34420                 path
34421                     .attr('d', getPath)
34422                     .classed('thick', function(d) { return getPath.area(d) < 30; });
34423             }
34424         }
34425
34426
34427         function queueRedraw() {
34428             clearTimeout(timeoutId);
34429             timeoutId = setTimeout(function() { redraw(); }, 300);
34430         }
34431
34432
34433         function hidden() {
34434             return selection.style('display') === 'none';
34435         }
34436
34437
34438         function toggle() {
34439             if (d3.event) d3.event.preventDefault();
34440
34441             var label = d3.select('.minimap-toggle');
34442
34443             if (hidden()) {
34444                 selection
34445                     .style('display', 'block')
34446                     .style('opacity', 0)
34447                     .transition()
34448                     .duration(200)
34449                     .style('opacity', 1);
34450
34451                 label.classed('active', true)
34452                     .select('input').property('checked', true);
34453
34454                 redraw();
34455
34456             } else {
34457                 selection
34458                     .style('display', 'block')
34459                     .style('opacity', 1)
34460                     .transition()
34461                     .duration(200)
34462                     .style('opacity', 0)
34463                     .each('end', function() {
34464                         d3.select(this).style('display', 'none');
34465                     });
34466
34467                 label.classed('active', false)
34468                     .select('input').property('checked', false);
34469             }
34470         }
34471
34472         iD.ui.MapInMap.toggle = toggle;
34473
34474         selection
34475             .on('mousedown.map-in-map', startMouse)
34476             .on('mouseup.map-in-map', endMouse);
34477
34478         selection
34479             .call(zoom)
34480             .on('dblclick.zoom', null);
34481
34482         context.map()
34483             .on('drawn.map-in-map', function(drawn) {
34484                 if (drawn.full === true) redraw();
34485             });
34486
34487         redraw();
34488
34489         var keybinding = d3.keybinding('map-in-map')
34490             .on(key, toggle);
34491
34492         d3.select(document)
34493             .call(keybinding);
34494     }
34495
34496     return map_in_map;
34497 };
34498 iD.ui.modal = function(selection, blocking) {
34499
34500     var previous = selection.select('div.modal');
34501     var animate = previous.empty();
34502
34503     previous.transition()
34504         .duration(200)
34505         .style('opacity', 0)
34506         .remove();
34507
34508     var shaded = selection
34509         .append('div')
34510         .attr('class', 'shaded')
34511         .style('opacity', 0);
34512
34513     shaded.close = function() {
34514         shaded
34515             .transition()
34516             .duration(200)
34517             .style('opacity',0)
34518             .remove();
34519         modal
34520             .transition()
34521             .duration(200)
34522             .style('top','0px');
34523         keybinding.off();
34524     };
34525
34526     var keybinding = d3.keybinding('modal')
34527         .on('⌫', shaded.close)
34528         .on('⎋', shaded.close);
34529
34530     d3.select(document).call(keybinding);
34531
34532     var modal = shaded.append('div')
34533         .attr('class', 'modal fillL col6');
34534
34535         shaded.on('click.remove-modal', function() {
34536             if (d3.event.target === this && !blocking) shaded.close();
34537         });
34538
34539     modal.append('button')
34540         .attr('class', 'close')
34541         .on('click', function() {
34542             if (!blocking) shaded.close();
34543         })
34544         .append('div')
34545             .attr('class','icon close');
34546
34547     modal.append('div')
34548         .attr('class', 'content');
34549
34550     if (animate) {
34551         shaded.transition().style('opacity', 1);
34552     } else {
34553         shaded.style('opacity', 1);
34554     }
34555
34556     return shaded;
34557 };
34558 iD.ui.Modes = function(context) {
34559     var modes = [
34560         iD.modes.AddPoint(context),
34561         iD.modes.AddLine(context),
34562         iD.modes.AddArea(context)];
34563
34564     function editable() {
34565         return context.editable() && context.mode().id !== 'save';
34566     }
34567
34568     return function(selection) {
34569         var buttons = selection.selectAll('button.add-button')
34570             .data(modes);
34571
34572        buttons.enter().append('button')
34573            .attr('tabindex', -1)
34574            .attr('class', function(mode) { return mode.id + ' add-button col4'; })
34575            .on('click.mode-buttons', function(mode) {
34576                if (mode.id === context.mode().id) {
34577                    context.enter(iD.modes.Browse(context));
34578                } else {
34579                    context.enter(mode);
34580                }
34581            })
34582            .call(bootstrap.tooltip()
34583                .placement('bottom')
34584                .html(true)
34585                .title(function(mode) {
34586                    return iD.ui.tooltipHtml(mode.description, mode.key);
34587                }));
34588
34589         context.map()
34590             .on('move.modes', _.debounce(update, 500));
34591
34592         context
34593             .on('enter.modes', update);
34594
34595         buttons.each(function(d) {
34596             d3.select(this)
34597                 .call(iD.svg.Icon('#icon-' + d.button, 'pre-text'));
34598         });
34599
34600         buttons.append('span')
34601             .attr('class', 'label')
34602             .text(function(mode) { return mode.title; });
34603
34604         context.on('enter.editor', function(entered) {
34605             buttons.classed('active', function(mode) { return entered.button === mode.button; });
34606             context.container()
34607                 .classed('mode-' + entered.id, true);
34608         });
34609
34610         context.on('exit.editor', function(exited) {
34611             context.container()
34612                 .classed('mode-' + exited.id, false);
34613         });
34614
34615         var keybinding = d3.keybinding('mode-buttons');
34616
34617         modes.forEach(function(m) {
34618             keybinding.on(m.key, function() { if (editable()) context.enter(m); });
34619         });
34620
34621         d3.select(document)
34622             .call(keybinding);
34623
34624         function update() {
34625             buttons.property('disabled', !editable());
34626         }
34627     };
34628 };
34629 iD.ui.Notice = function(context) {
34630     return function(selection) {
34631         var div = selection.append('div')
34632             .attr('class', 'notice');
34633
34634         var button = div.append('button')
34635             .attr('class', 'zoom-to notice')
34636             .on('click', function() { context.map().zoom(context.minEditableZoom()); });
34637
34638         button
34639             .call(iD.svg.Icon('#icon-plus', 'pre-text'))
34640             .append('span')
34641             .attr('class', 'label')
34642             .text(t('zoom_in_edit'));
34643
34644         function disableTooHigh() {
34645             div.style('display', context.editable() ? 'none' : 'block');
34646         }
34647
34648         context.map()
34649             .on('move.notice', _.debounce(disableTooHigh, 500));
34650
34651         disableTooHigh();
34652     };
34653 };
34654 iD.ui.preset = function(context) {
34655     var event = d3.dispatch('change'),
34656         state,
34657         fields,
34658         preset,
34659         tags,
34660         id;
34661
34662     function UIField(field, entity, show) {
34663         field = _.clone(field);
34664
34665         field.input = iD.ui.preset[field.type](field, context)
34666             .on('change', event.change);
34667
34668         if (field.input.entity) field.input.entity(entity);
34669
34670         field.keys = field.keys || [field.key];
34671
34672         field.show = show;
34673
34674         field.shown = function() {
34675             return field.id === 'name' || field.show || _.any(field.keys, function(key) { return !!tags[key]; });
34676         };
34677
34678         field.modified = function() {
34679             var original = context.graph().base().entities[entity.id];
34680             return _.any(field.keys, function(key) {
34681                 return original ? tags[key] !== original.tags[key] : tags[key];
34682             });
34683         };
34684
34685         field.revert = function() {
34686             var original = context.graph().base().entities[entity.id],
34687                 t = {};
34688             field.keys.forEach(function(key) {
34689                 t[key] = original ? original.tags[key] : undefined;
34690             });
34691             return t;
34692         };
34693
34694         field.present = function() {
34695             return _.any(field.keys, function(key) {
34696                 return tags[key];
34697             });
34698         };
34699
34700         field.remove = function() {
34701             var t = {};
34702             field.keys.forEach(function(key) {
34703                 t[key] = undefined;
34704             });
34705             return t;
34706         };
34707
34708         return field;
34709     }
34710
34711     function fieldKey(field) {
34712         return field.id;
34713     }
34714
34715     function presets(selection) {
34716         if (!fields) {
34717             var entity = context.entity(id),
34718                 geometry = context.geometry(id);
34719
34720             fields = [UIField(context.presets().field('name'), entity)];
34721
34722             preset.fields.forEach(function(field) {
34723                 if (field.matchGeometry(geometry)) {
34724                     fields.push(UIField(field, entity, true));
34725                 }
34726             });
34727
34728             if (entity.isHighwayIntersection(context.graph())) {
34729                 fields.push(UIField(context.presets().field('restrictions'), entity, true));
34730             }
34731
34732             context.presets().universal().forEach(function(field) {
34733                 if (preset.fields.indexOf(field) < 0) {
34734                     fields.push(UIField(field, entity));
34735                 }
34736             });
34737         }
34738
34739         var shown = fields.filter(function(field) { return field.shown(); }),
34740             notShown = fields.filter(function(field) { return !field.shown(); });
34741
34742         var $form = selection.selectAll('.preset-form')
34743             .data([0]);
34744
34745         $form.enter().append('div')
34746             .attr('class', 'preset-form inspector-inner fillL3');
34747
34748         var $fields = $form.selectAll('.form-field')
34749             .data(shown, fieldKey);
34750
34751         // Enter
34752
34753         var $enter = $fields.enter()
34754             .append('div')
34755             .attr('class', function(field) {
34756                 return 'form-field form-field-' + field.id;
34757             });
34758
34759         var $label = $enter.append('label')
34760             .attr('class', 'form-label')
34761             .attr('for', function(field) { return 'preset-input-' + field.id; })
34762             .text(function(field) { return field.label(); });
34763
34764         var wrap = $label.append('div')
34765             .attr('class', 'form-label-button-wrap');
34766
34767         wrap.append('button')
34768             .attr('class', 'remove-icon')
34769             .call(iD.svg.Icon('#operation-delete'));
34770
34771         wrap.append('button')
34772             .attr('class', 'modified-icon')
34773             .attr('tabindex', -1)
34774             .call(iD.svg.Icon('#icon-undo'));
34775
34776         // Update
34777
34778         $fields.select('.form-label-button-wrap .remove-icon')
34779             .on('click', remove);
34780
34781         $fields.select('.modified-icon')
34782             .on('click', revert);
34783
34784         $fields
34785             .order()
34786             .classed('modified', function(field) {
34787                 return field.modified();
34788             })
34789             .classed('present', function(field) {
34790                 return field.present();
34791             })
34792             .each(function(field) {
34793                 var reference = iD.ui.TagReference(field.reference || {key: field.key}, context);
34794
34795                 if (state === 'hover') {
34796                     reference.showing(false);
34797                 }
34798
34799                 d3.select(this)
34800                     .call(field.input)
34801                     .call(reference.body)
34802                     .select('.form-label-button-wrap')
34803                     .call(reference.button);
34804
34805                 field.input.tags(tags);
34806             });
34807
34808         $fields.exit()
34809             .remove();
34810
34811         notShown = notShown.map(function(field) {
34812             return {
34813                 title: field.label(),
34814                 value: field.label(),
34815                 field: field
34816             };
34817         });
34818
34819         var $more = selection.selectAll('.more-fields')
34820             .data((notShown.length > 0) ? [0] : []);
34821
34822         $more.enter().append('div')
34823             .attr('class', 'more-fields')
34824             .append('label')
34825                 .text(t('inspector.add_fields'));
34826
34827         var $input = $more.selectAll('.value')
34828             .data([0]);
34829
34830         $input.enter().append('input')
34831             .attr('class', 'value')
34832             .attr('type', 'text');
34833
34834         $input.value('')
34835             .attr('placeholder', function() {
34836                 var placeholder = [];
34837                 for (var field in notShown) {
34838                     placeholder.push(notShown[field].title);
34839                 }
34840                 return placeholder.slice(0,3).join(', ') + ((placeholder.length > 3) ? '…' : '');
34841             })
34842             .call(d3.combobox().data(notShown)
34843                 .minItems(1)
34844                 .on('accept', show));
34845
34846         $more.exit()
34847             .remove();
34848
34849         $input.exit()
34850             .remove();
34851
34852         function show(field) {
34853             field = field.field;
34854             field.show = true;
34855             presets(selection);
34856             field.input.focus();
34857         }
34858
34859         function revert(field) {
34860             d3.event.stopPropagation();
34861             d3.event.preventDefault();
34862             event.change(field.revert());
34863         }
34864
34865         function remove(field) {
34866             d3.event.stopPropagation();
34867             d3.event.preventDefault();
34868             event.change(field.remove());
34869         }
34870     }
34871
34872     presets.preset = function(_) {
34873         if (!arguments.length) return preset;
34874         if (preset && preset.id === _.id) return presets;
34875         preset = _;
34876         fields = null;
34877         return presets;
34878     };
34879
34880     presets.state = function(_) {
34881         if (!arguments.length) return state;
34882         state = _;
34883         return presets;
34884     };
34885
34886     presets.tags = function(_) {
34887         if (!arguments.length) return tags;
34888         tags = _;
34889         // Don't reset fields here.
34890         return presets;
34891     };
34892
34893     presets.entityID = function(_) {
34894         if (!arguments.length) return id;
34895         if (id === _) return presets;
34896         id = _;
34897         fields = null;
34898         return presets;
34899     };
34900
34901     return d3.rebind(presets, event, 'on');
34902 };
34903 iD.ui.PresetIcon = function() {
34904     var preset, geometry;
34905
34906     function presetIcon(selection) {
34907         selection.each(render);
34908     }
34909
34910     function render() {
34911         var selection = d3.select(this),
34912             p = preset.apply(this, arguments),
34913             geom = geometry.apply(this, arguments),
34914             icon = p.icon || (geom === 'line' ? 'other-line' : 'marker-stroked'),
34915             maki = iD.data.featureIcons.hasOwnProperty(icon + '-24');
34916
34917         if (icon === 'dentist') maki = true;  // workaround for dentist icon missing in `maki-sprite.json`
34918
34919         function tag_classes(p) {
34920             var s = '';
34921             for (var i in p.tags) {
34922                 s += ' tag-' + i;
34923                 if (p.tags[i] !== '*') {
34924                     s += ' tag-' + i + '-' + p.tags[i];
34925                 }
34926             }
34927             return s;
34928         }
34929
34930         var $fill = selection.selectAll('.preset-icon-fill')
34931             .data([0]);
34932
34933         $fill.enter().append('div');
34934
34935         $fill.attr('class', function() {
34936             return 'preset-icon-fill preset-icon-fill-' + geom + tag_classes(p);
34937         });
34938
34939         var $frame = selection.selectAll('.preset-icon-frame')
34940             .data([0]);
34941
34942         $frame.enter()
34943             .append('div')
34944             .call(iD.svg.Icon('#preset-icon-frame'));
34945
34946         $frame.attr('class', function() {
34947             return 'preset-icon-frame ' + (geom === 'area' ? '' : 'hide');
34948         });
34949
34950
34951         var $icon = selection.selectAll('.preset-icon')
34952             .data([0]);
34953
34954         $icon.enter()
34955             .append('div')
34956             .attr('class', 'preset-icon')
34957             .call(iD.svg.Icon(''));
34958
34959         $icon
34960             .attr('class', 'preset-icon preset-icon-' + (maki ? '32' : '60'));
34961
34962         $icon.selectAll('svg')
34963             .attr('class', function() {
34964                 return 'icon ' + icon + tag_classes(p);
34965             });
34966
34967         $icon.selectAll('use')       // workaround: maki parking-24 broken?
34968             .attr('href', '#' + icon + (maki ? ( icon === 'parking' ? '-18' : '-24') : ''));
34969     }
34970
34971     presetIcon.preset = function(_) {
34972         if (!arguments.length) return preset;
34973         preset = d3.functor(_);
34974         return presetIcon;
34975     };
34976
34977     presetIcon.geometry = function(_) {
34978         if (!arguments.length) return geometry;
34979         geometry = d3.functor(_);
34980         return presetIcon;
34981     };
34982
34983     return presetIcon;
34984 };
34985 iD.ui.PresetList = function(context) {
34986     var event = d3.dispatch('choose'),
34987         id,
34988         currentPreset,
34989         autofocus = false;
34990
34991     function presetList(selection) {
34992         var geometry = context.geometry(id),
34993             presets = context.presets().matchGeometry(geometry);
34994
34995         selection.html('');
34996
34997         var messagewrap = selection.append('div')
34998             .attr('class', 'header fillL cf');
34999
35000         var message = messagewrap.append('h3')
35001             .text(t('inspector.choose'));
35002
35003         if (context.entity(id).isUsed(context.graph())) {
35004             messagewrap.append('button')
35005                 .attr('class', 'preset-choose')
35006                 .on('click', function() { event.choose(currentPreset); })
35007                 .append('span')
35008                 .html('&#9658;');
35009         } else {
35010             messagewrap.append('button')
35011                 .attr('class', 'close')
35012                 .on('click', function() {
35013                     context.enter(iD.modes.Browse(context));
35014                 })
35015                 .call(iD.svg.Icon('#icon-close'));
35016         }
35017
35018         function keydown() {
35019             // hack to let delete shortcut work when search is autofocused
35020             if (search.property('value').length === 0 &&
35021                 (d3.event.keyCode === d3.keybinding.keyCodes['⌫'] ||
35022                  d3.event.keyCode === d3.keybinding.keyCodes['⌦'])) {
35023                 d3.event.preventDefault();
35024                 d3.event.stopPropagation();
35025                 iD.operations.Delete([id], context)();
35026             } else if (search.property('value').length === 0 &&
35027                 (d3.event.ctrlKey || d3.event.metaKey) &&
35028                 d3.event.keyCode === d3.keybinding.keyCodes.z) {
35029                 d3.event.preventDefault();
35030                 d3.event.stopPropagation();
35031                 context.undo();
35032             } else if (!d3.event.ctrlKey && !d3.event.metaKey) {
35033                 d3.select(this).on('keydown', null);
35034             }
35035         }
35036
35037         function keypress() {
35038             // enter
35039             var value = search.property('value');
35040             if (d3.event.keyCode === 13 && value.length) {
35041                 list.selectAll('.preset-list-item:first-child').datum().choose();
35042             }
35043         }
35044
35045         function inputevent() {
35046             var value = search.property('value');
35047             list.classed('filtered', value.length);
35048             if (value.length) {
35049                 var results = presets.search(value, geometry);
35050                 message.text(t('inspector.results', {
35051                     n: results.collection.length,
35052                     search: value
35053                 }));
35054                 list.call(drawList, results);
35055             } else {
35056                 list.call(drawList, context.presets().defaults(geometry, 36));
35057                 message.text(t('inspector.choose'));
35058             }
35059         }
35060
35061         var searchWrap = selection.append('div')
35062             .attr('class', 'search-header');
35063
35064         var search = searchWrap.append('input')
35065             .attr('class', 'preset-search-input')
35066             .attr('placeholder', t('inspector.search'))
35067             .attr('type', 'search')
35068             .on('keydown', keydown)
35069             .on('keypress', keypress)
35070             .on('input', inputevent);
35071
35072         searchWrap
35073             .call(iD.svg.Icon('#icon-search', 'pre-text'));
35074
35075         if (autofocus) {
35076             search.node().focus();
35077         }
35078
35079         var listWrap = selection.append('div')
35080             .attr('class', 'inspector-body');
35081
35082         var list = listWrap.append('div')
35083             .attr('class', 'preset-list fillL cf')
35084             .call(drawList, context.presets().defaults(geometry, 36));
35085     }
35086
35087     function drawList(list, presets) {
35088         var collection = presets.collection.map(function(preset) {
35089             return preset.members ? CategoryItem(preset) : PresetItem(preset);
35090         });
35091
35092         var items = list.selectAll('.preset-list-item')
35093             .data(collection, function(d) { return d.preset.id; });
35094
35095         items.enter().append('div')
35096             .attr('class', function(item) { return 'preset-list-item preset-' + item.preset.id.replace('/', '-'); })
35097             .classed('current', function(item) { return item.preset === currentPreset; })
35098             .each(function(item) {
35099                 d3.select(this).call(item);
35100             })
35101             .style('opacity', 0)
35102             .transition()
35103             .style('opacity', 1);
35104
35105         items.order();
35106
35107         items.exit()
35108             .remove();
35109     }
35110
35111     function CategoryItem(preset) {
35112         var box, sublist, shown = false;
35113
35114         function item(selection) {
35115             var wrap = selection.append('div')
35116                 .attr('class', 'preset-list-button-wrap category col12');
35117
35118             wrap.append('button')
35119                 .attr('class', 'preset-list-button')
35120                 .call(iD.ui.PresetIcon()
35121                     .geometry(context.geometry(id))
35122                     .preset(preset))
35123                 .on('click', item.choose)
35124                 .append('div')
35125                 .attr('class', 'label')
35126                 .text(preset.name());
35127
35128             box = selection.append('div')
35129                 .attr('class', 'subgrid col12')
35130                 .style('max-height', '0px')
35131                 .style('opacity', 0);
35132
35133             box.append('div')
35134                 .attr('class', 'arrow');
35135
35136             sublist = box.append('div')
35137                 .attr('class', 'preset-list fillL3 cf fl');
35138         }
35139
35140         item.choose = function() {
35141             if (shown) {
35142                 shown = false;
35143                 box.transition()
35144                     .duration(200)
35145                     .style('opacity', '0')
35146                     .style('max-height', '0px')
35147                     .style('padding-bottom', '0px');
35148             } else {
35149                 shown = true;
35150                 sublist.call(drawList, preset.members);
35151                 box.transition()
35152                     .duration(200)
35153                     .style('opacity', '1')
35154                     .style('max-height', 200 + preset.members.collection.length * 80 + 'px')
35155                     .style('padding-bottom', '20px');
35156             }
35157         };
35158
35159         item.preset = preset;
35160
35161         return item;
35162     }
35163
35164     function PresetItem(preset) {
35165         function item(selection) {
35166             var wrap = selection.append('div')
35167                 .attr('class', 'preset-list-button-wrap col12');
35168
35169             wrap.append('button')
35170                 .attr('class', 'preset-list-button')
35171                 .call(iD.ui.PresetIcon()
35172                     .geometry(context.geometry(id))
35173                     .preset(preset))
35174                 .on('click', item.choose)
35175                 .append('div')
35176                 .attr('class', 'label')
35177                 .text(preset.name());
35178
35179             wrap.call(item.reference.button);
35180             selection.call(item.reference.body);
35181         }
35182
35183         item.choose = function() {
35184             context.presets().choose(preset);
35185
35186             context.perform(
35187                 iD.actions.ChangePreset(id, currentPreset, preset),
35188                 t('operations.change_tags.annotation'));
35189
35190             event.choose(preset);
35191         };
35192
35193         item.help = function() {
35194             d3.event.stopPropagation();
35195             item.reference.toggle();
35196         };
35197
35198         item.preset = preset;
35199         item.reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context);
35200
35201         return item;
35202     }
35203
35204     presetList.autofocus = function(_) {
35205         if (!arguments.length) return autofocus;
35206         autofocus = _;
35207         return presetList;
35208     };
35209
35210     presetList.entityID = function(_) {
35211         if (!arguments.length) return id;
35212         id = _;
35213         presetList.preset(context.presets().match(context.entity(id), context.graph()));
35214         return presetList;
35215     };
35216
35217     presetList.preset = function(_) {
35218         if (!arguments.length) return currentPreset;
35219         currentPreset = _;
35220         return presetList;
35221     };
35222
35223     return d3.rebind(presetList, event, 'on');
35224 };
35225 iD.ui.RadialMenu = function(context, operations) {
35226     var menu,
35227         center = [0, 0],
35228         tooltip;
35229
35230     var radialMenu = function(selection) {
35231         if (!operations.length)
35232             return;
35233
35234         selection.node().parentNode.focus();
35235
35236         function click(operation) {
35237             d3.event.stopPropagation();
35238             if (operation.disabled())
35239                 return;
35240             operation();
35241             radialMenu.close();
35242         }
35243
35244         menu = selection.append('g')
35245             .attr('class', 'radial-menu')
35246             .attr('transform', 'translate(' + center + ')')
35247             .attr('opacity', 0);
35248
35249         menu.transition()
35250             .attr('opacity', 1);
35251
35252         var r = 50,
35253             a = Math.PI / 4,
35254             a0 = -Math.PI / 4,
35255             a1 = a0 + (operations.length - 1) * a;
35256
35257         menu.append('path')
35258             .attr('class', 'radial-menu-background')
35259             .attr('d', 'M' + r * Math.sin(a0) + ',' +
35260                              r * Math.cos(a0) +
35261                       ' A' + r + ',' + r + ' 0 ' + (operations.length > 5 ? '1' : '0') + ',0 ' +
35262                              (r * Math.sin(a1) + 1e-3) + ',' +
35263                              (r * Math.cos(a1) + 1e-3)) // Force positive-length path (#1305)
35264             .attr('stroke-width', 50)
35265             .attr('stroke-linecap', 'round');
35266
35267         var button = menu.selectAll()
35268             .data(operations)
35269             .enter()
35270             .append('g')
35271             .attr('class', function(d) { return 'radial-menu-item radial-menu-item-' + d.id; })
35272             .classed('disabled', function(d) { return d.disabled(); })
35273             .attr('transform', function(d, i) {
35274                 return 'translate(' + iD.geo.roundCoords([
35275                         r * Math.sin(a0 + i * a),
35276                         r * Math.cos(a0 + i * a)]).join(',') + ')';
35277             });
35278
35279         button.append('circle')
35280             .attr('r', 15)
35281             .on('click', click)
35282             .on('mousedown', mousedown)
35283             .on('mouseover', mouseover)
35284             .on('mouseout', mouseout);
35285
35286         button.append('use')
35287             .attr('transform', 'translate(-10,-10)')
35288             .attr('width', '20')
35289             .attr('height', '20')
35290             .attr('xlink:href', function(d) { return '#operation-' + d.id; });
35291
35292         tooltip = d3.select(document.body)
35293             .append('div')
35294             .attr('class', 'tooltip-inner radial-menu-tooltip');
35295
35296         function mousedown() {
35297             d3.event.stopPropagation(); // https://github.com/openstreetmap/iD/issues/1869
35298         }
35299
35300         function mouseover(d, i) {
35301             var rect = context.surfaceRect(),
35302                 angle = a0 + i * a,
35303                 top = rect.top + (r + 25) * Math.cos(angle) + center[1] + 'px',
35304                 left = rect.left + (r + 25) * Math.sin(angle) + center[0] + 'px',
35305                 bottom = rect.height - (r + 25) * Math.cos(angle) - center[1] + 'px',
35306                 right = rect.width - (r + 25) * Math.sin(angle) - center[0] + 'px';
35307
35308             tooltip
35309                 .style('top', null)
35310                 .style('left', null)
35311                 .style('bottom', null)
35312                 .style('right', null)
35313                 .style('display', 'block')
35314                 .html(iD.ui.tooltipHtml(d.tooltip(), d.keys[0]));
35315
35316             if (i === 0) {
35317                 tooltip
35318                     .style('right', right)
35319                     .style('top', top);
35320             } else if (i >= 4) {
35321                 tooltip
35322                     .style('left', left)
35323                     .style('bottom', bottom);
35324             } else {
35325                 tooltip
35326                     .style('left', left)
35327                     .style('top', top);
35328             }
35329         }
35330
35331         function mouseout() {
35332             tooltip.style('display', 'none');
35333         }
35334     };
35335
35336     radialMenu.close = function() {
35337         if (menu) {
35338             menu
35339                 .style('pointer-events', 'none')
35340                 .transition()
35341                 .attr('opacity', 0)
35342                 .remove();
35343         }
35344
35345         if (tooltip) {
35346             tooltip.remove();
35347         }
35348     };
35349
35350     radialMenu.center = function(_) {
35351         if (!arguments.length) return center;
35352         center = _;
35353         return radialMenu;
35354     };
35355
35356     return radialMenu;
35357 };
35358 iD.ui.RawMemberEditor = function(context) {
35359     var id;
35360
35361     function selectMember(d) {
35362         d3.event.preventDefault();
35363         context.enter(iD.modes.Select(context, [d.id]));
35364     }
35365
35366     function changeRole(d) {
35367         var role = d3.select(this).property('value');
35368         context.perform(
35369             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.id, {role: role}), d.index),
35370             t('operations.change_role.annotation'));
35371     }
35372
35373     function deleteMember(d) {
35374         context.perform(
35375             iD.actions.DeleteMember(d.relation.id, d.index),
35376             t('operations.delete_member.annotation'));
35377
35378         if (!context.hasEntity(d.relation.id)) {
35379             context.enter(iD.modes.Browse(context));
35380         }
35381     }
35382
35383     function rawMemberEditor(selection) {
35384         var entity = context.entity(id),
35385             memberships = [];
35386
35387         entity.members.forEach(function(member, index) {
35388             memberships.push({
35389                 index: index,
35390                 id: member.id,
35391                 role: member.role,
35392                 relation: entity,
35393                 member: context.hasEntity(member.id)
35394             });
35395         });
35396
35397         selection.call(iD.ui.Disclosure()
35398             .title(t('inspector.all_members') + ' (' + memberships.length + ')')
35399             .expanded(true)
35400             .on('toggled', toggled)
35401             .content(content));
35402
35403         function toggled(expanded) {
35404             if (expanded) {
35405                 selection.node().parentNode.scrollTop += 200;
35406             }
35407         }
35408
35409         function content($wrap) {
35410             var $list = $wrap.selectAll('.member-list')
35411                 .data([0]);
35412
35413             $list.enter().append('ul')
35414                 .attr('class', 'member-list');
35415
35416             var $items = $list.selectAll('li')
35417                 .data(memberships, function(d) {
35418                     return iD.Entity.key(d.relation) + ',' + d.index + ',' +
35419                         (d.member ? iD.Entity.key(d.member) : 'incomplete');
35420                 });
35421
35422             var $enter = $items.enter().append('li')
35423                 .attr('class', 'member-row form-field')
35424                 .classed('member-incomplete', function(d) { return !d.member; });
35425
35426             $enter.each(function(d) {
35427                 if (d.member) {
35428                     var $label = d3.select(this).append('label')
35429                         .attr('class', 'form-label')
35430                         .append('a')
35431                         .attr('href', '#')
35432                         .on('click', selectMember);
35433
35434                     $label.append('span')
35435                         .attr('class', 'member-entity-type')
35436                         .text(function(d) { return context.presets().match(d.member, context.graph()).name(); });
35437
35438                     $label.append('span')
35439                         .attr('class', 'member-entity-name')
35440                         .text(function(d) { return iD.util.displayName(d.member); });
35441
35442                 } else {
35443                     d3.select(this).append('label')
35444                         .attr('class', 'form-label')
35445                         .text(t('inspector.incomplete'));
35446                 }
35447             });
35448
35449             $enter.append('input')
35450                 .attr('class', 'member-role')
35451                 .property('type', 'text')
35452                 .attr('maxlength', 255)
35453                 .attr('placeholder', t('inspector.role'))
35454                 .property('value', function(d) { return d.role; })
35455                 .on('change', changeRole);
35456
35457             $enter.append('button')
35458                 .attr('tabindex', -1)
35459                 .attr('class', 'remove button-input-action member-delete minor')
35460                 .on('click', deleteMember)
35461                 .call(iD.svg.Icon('#operation-delete'));
35462
35463             $items.exit()
35464                 .remove();
35465         }
35466     }
35467
35468     rawMemberEditor.entityID = function(_) {
35469         if (!arguments.length) return id;
35470         id = _;
35471         return rawMemberEditor;
35472     };
35473
35474     return rawMemberEditor;
35475 };
35476 iD.ui.RawMembershipEditor = function(context) {
35477     var id, showBlank;
35478
35479     function selectRelation(d) {
35480         d3.event.preventDefault();
35481         context.enter(iD.modes.Select(context, [d.relation.id]));
35482     }
35483
35484     function changeRole(d) {
35485         var role = d3.select(this).property('value');
35486         context.perform(
35487             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.member, {role: role}), d.index),
35488             t('operations.change_role.annotation'));
35489     }
35490
35491     function addMembership(d, role) {
35492         showBlank = false;
35493
35494         if (d.relation) {
35495             context.perform(
35496                 iD.actions.AddMember(d.relation.id, {id: id, type: context.entity(id).type, role: role}),
35497                 t('operations.add_member.annotation'));
35498
35499         } else {
35500             var relation = iD.Relation();
35501
35502             context.perform(
35503                 iD.actions.AddEntity(relation),
35504                 iD.actions.AddMember(relation.id, {id: id, type: context.entity(id).type, role: role}),
35505                 t('operations.add.annotation.relation'));
35506
35507             context.enter(iD.modes.Select(context, [relation.id]));
35508         }
35509     }
35510
35511     function deleteMembership(d) {
35512         context.perform(
35513             iD.actions.DeleteMember(d.relation.id, d.index),
35514             t('operations.delete_member.annotation'));
35515     }
35516
35517     function relations(q) {
35518         var newRelation = {
35519                 relation: null,
35520                 value: t('inspector.new_relation')
35521             },
35522             result = [],
35523             graph = context.graph();
35524
35525         context.intersects(context.extent()).forEach(function(entity) {
35526             if (entity.type !== 'relation' || entity.id === id)
35527                 return;
35528
35529             var presetName = context.presets().match(entity, graph).name(),
35530                 entityName = iD.util.displayName(entity) || '';
35531
35532             var value = presetName + ' ' + entityName;
35533             if (q && value.toLowerCase().indexOf(q.toLowerCase()) === -1)
35534                 return;
35535
35536             result.push({
35537                 relation: entity,
35538                 value: value
35539             });
35540         });
35541
35542         result.sort(function(a, b) {
35543             return iD.Relation.creationOrder(a.relation, b.relation);
35544         });
35545         result.unshift(newRelation);
35546
35547         return result;
35548     }
35549
35550     function rawMembershipEditor(selection) {
35551         var entity = context.entity(id),
35552             memberships = [];
35553
35554         context.graph().parentRelations(entity).forEach(function(relation) {
35555             relation.members.forEach(function(member, index) {
35556                 if (member.id === entity.id) {
35557                     memberships.push({relation: relation, member: member, index: index});
35558                 }
35559             });
35560         });
35561
35562         selection.call(iD.ui.Disclosure()
35563             .title(t('inspector.all_relations') + ' (' + memberships.length + ')')
35564             .expanded(true)
35565             .on('toggled', toggled)
35566             .content(content));
35567
35568         function toggled(expanded) {
35569             if (expanded) {
35570                 selection.node().parentNode.scrollTop += 200;
35571             }
35572         }
35573
35574         function content($wrap) {
35575             var $list = $wrap.selectAll('.member-list')
35576                 .data([0]);
35577
35578             $list.enter().append('ul')
35579                 .attr('class', 'member-list');
35580
35581             var $items = $list.selectAll('li.member-row-normal')
35582                 .data(memberships, function(d) { return iD.Entity.key(d.relation) + ',' + d.index; });
35583
35584             var $enter = $items.enter().append('li')
35585                 .attr('class', 'member-row member-row-normal form-field');
35586
35587             var $label = $enter.append('label')
35588                 .attr('class', 'form-label')
35589                 .append('a')
35590                 .attr('href', '#')
35591                 .on('click', selectRelation);
35592
35593             $label.append('span')
35594                 .attr('class', 'member-entity-type')
35595                 .text(function(d) { return context.presets().match(d.relation, context.graph()).name(); });
35596
35597             $label.append('span')
35598                 .attr('class', 'member-entity-name')
35599                 .text(function(d) { return iD.util.displayName(d.relation); });
35600
35601             $enter.append('input')
35602                 .attr('class', 'member-role')
35603                 .property('type', 'text')
35604                 .attr('maxlength', 255)
35605                 .attr('placeholder', t('inspector.role'))
35606                 .property('value', function(d) { return d.member.role; })
35607                 .on('change', changeRole);
35608
35609             $enter.append('button')
35610                 .attr('tabindex', -1)
35611                 .attr('class', 'remove button-input-action member-delete minor')
35612                 .on('click', deleteMembership)
35613                 .call(iD.svg.Icon('#operation-delete'));
35614
35615             $items.exit()
35616                 .remove();
35617
35618             if (showBlank) {
35619                 var $new = $list.selectAll('.member-row-new')
35620                     .data([0]);
35621
35622                 $enter = $new.enter().append('li')
35623                     .attr('class', 'member-row member-row-new form-field');
35624
35625                 $enter.append('input')
35626                     .attr('type', 'text')
35627                     .attr('class', 'member-entity-input')
35628                     .call(d3.combobox()
35629                         .minItems(1)
35630                         .fetcher(function(value, callback) {
35631                             callback(relations(value));
35632                         })
35633                         .on('accept', function(d) {
35634                             addMembership(d, $new.select('.member-role').property('value'));
35635                         }));
35636
35637                 $enter.append('input')
35638                     .attr('class', 'member-role')
35639                     .property('type', 'text')
35640                     .attr('maxlength', 255)
35641                     .attr('placeholder', t('inspector.role'))
35642                     .on('change', changeRole);
35643
35644                 $enter.append('button')
35645                     .attr('tabindex', -1)
35646                     .attr('class', 'remove button-input-action member-delete minor')
35647                     .on('click', deleteMembership)
35648                     .call(iD.svg.Icon('#operation-delete'));
35649
35650             } else {
35651                 $list.selectAll('.member-row-new')
35652                     .remove();
35653             }
35654
35655             var $add = $wrap.selectAll('.add-relation')
35656                 .data([0]);
35657
35658             $add.enter()
35659                 .append('button')
35660                 .attr('class', 'add-relation')
35661                 .call(iD.svg.Icon('#icon-plus', 'light'));
35662
35663             $wrap.selectAll('.add-relation')
35664                 .on('click', function() {
35665                     showBlank = true;
35666                     content($wrap);
35667                     $list.selectAll('.member-entity-input').node().focus();
35668                 });
35669         }
35670     }
35671
35672     rawMembershipEditor.entityID = function(_) {
35673         if (!arguments.length) return id;
35674         id = _;
35675         return rawMembershipEditor;
35676     };
35677
35678     return rawMembershipEditor;
35679 };
35680 iD.ui.RawTagEditor = function(context) {
35681     var event = d3.dispatch('change'),
35682         showBlank = false,
35683         state,
35684         preset,
35685         tags,
35686         id;
35687
35688     function rawTagEditor(selection) {
35689         var count = Object.keys(tags).filter(function(d) { return d; }).length;
35690
35691         selection.call(iD.ui.Disclosure()
35692             .title(t('inspector.all_tags') + ' (' + count + ')')
35693             .expanded(context.storage('raw_tag_editor.expanded') === 'true' || preset.isFallback())
35694             .on('toggled', toggled)
35695             .content(content));
35696
35697         function toggled(expanded) {
35698             context.storage('raw_tag_editor.expanded', expanded);
35699             if (expanded) {
35700                 selection.node().parentNode.scrollTop += 200;
35701             }
35702         }
35703     }
35704
35705     function content($wrap) {
35706         var entries = d3.entries(tags);
35707
35708         if (!entries.length || showBlank) {
35709             showBlank = false;
35710             entries.push({key: '', value: ''});
35711         }
35712
35713         var $list = $wrap.selectAll('.tag-list')
35714             .data([0]);
35715
35716         $list.enter().append('ul')
35717             .attr('class', 'tag-list');
35718
35719         var $newTag = $wrap.selectAll('.add-tag')
35720             .data([0]);
35721
35722         $newTag.enter()
35723             .append('button')
35724             .attr('class', 'add-tag')
35725             .call(iD.svg.Icon('#icon-plus', 'light'));
35726
35727         $newTag.on('click', addTag);
35728
35729         var $items = $list.selectAll('li')
35730             .data(entries, function(d) { return d.key; });
35731
35732         // Enter
35733
35734         var $enter = $items.enter().append('li')
35735             .attr('class', 'tag-row cf');
35736
35737         $enter.append('div')
35738             .attr('class', 'key-wrap')
35739             .append('input')
35740             .property('type', 'text')
35741             .attr('class', 'key')
35742             .attr('maxlength', 255);
35743
35744         $enter.append('div')
35745             .attr('class', 'input-wrap-position')
35746             .append('input')
35747             .property('type', 'text')
35748             .attr('class', 'value')
35749             .attr('maxlength', 255);
35750
35751         $enter.append('button')
35752             .attr('tabindex', -1)
35753             .attr('class', 'remove minor')
35754             .call(iD.svg.Icon('#operation-delete'));
35755
35756         if (context.taginfo()) {
35757             $enter.each(bindTypeahead);
35758         }
35759
35760         // Update
35761
35762         $items.order();
35763
35764         $items.each(function(tag) {
35765             var isRelation = (context.entity(id).type === 'relation'),
35766                 reference;
35767             if (isRelation && tag.key === 'type')
35768                 reference = iD.ui.TagReference({rtype: tag.value}, context);
35769             else
35770                 reference = iD.ui.TagReference({key: tag.key, value: tag.value}, context);
35771
35772             if (state === 'hover') {
35773                 reference.showing(false);
35774             }
35775
35776             d3.select(this)
35777                 .call(reference.button)
35778                 .call(reference.body);
35779         });
35780
35781         $items.select('input.key')
35782             .value(function(d) { return d.key; })
35783             .on('blur', keyChange)
35784             .on('change', keyChange);
35785
35786         $items.select('input.value')
35787             .value(function(d) { return d.value; })
35788             .on('blur', valueChange)
35789             .on('change', valueChange)
35790             .on('keydown.push-more', pushMore);
35791
35792         $items.select('button.remove')
35793             .on('click', removeTag);
35794
35795         $items.exit()
35796             .remove();
35797
35798         function pushMore() {
35799             if (d3.event.keyCode === 9 && !d3.event.shiftKey &&
35800                 $list.selectAll('li:last-child input.value').node() === this) {
35801                 addTag();
35802             }
35803         }
35804
35805         function bindTypeahead() {
35806             var row = d3.select(this),
35807                 key = row.selectAll('input.key'),
35808                 value = row.selectAll('input.value');
35809
35810             function sort(value, data) {
35811                 var sameletter = [],
35812                     other = [];
35813                 for (var i = 0; i < data.length; i++) {
35814                     if (data[i].value.substring(0, value.length) === value) {
35815                         sameletter.push(data[i]);
35816                     } else {
35817                         other.push(data[i]);
35818                     }
35819                 }
35820                 return sameletter.concat(other);
35821             }
35822
35823             key.call(d3.combobox()
35824                 .fetcher(function(value, callback) {
35825                     context.taginfo().keys({
35826                         debounce: true,
35827                         geometry: context.geometry(id),
35828                         query: value
35829                     }, function(err, data) {
35830                         if (!err) callback(sort(value, data));
35831                     });
35832                 }));
35833
35834             value.call(d3.combobox()
35835                 .fetcher(function(value, callback) {
35836                     context.taginfo().values({
35837                         debounce: true,
35838                         key: key.value(),
35839                         geometry: context.geometry(id),
35840                         query: value
35841                     }, function(err, data) {
35842                         if (!err) callback(sort(value, data));
35843                     });
35844                 }));
35845         }
35846
35847         function keyChange(d) {
35848             var kOld = d.key,
35849                 kNew = this.value.trim(),
35850                 tag = {};
35851
35852             if (kNew && kNew !== kOld) {
35853                 var match = kNew.match(/^(.*?)(?:_(\d+))?$/),
35854                     base = match[1],
35855                     suffix = +(match[2] || 1);
35856                 while (tags[kNew]) {  // rename key if already in use
35857                     kNew = base + '_' + suffix++;
35858                 }
35859             }
35860             tag[kOld] = undefined;
35861             tag[kNew] = d.value;
35862             d.key = kNew; // Maintain DOM identity through the subsequent update.
35863             this.value = kNew;
35864             event.change(tag);
35865         }
35866
35867         function valueChange(d) {
35868             var tag = {};
35869             tag[d.key] = this.value;
35870             event.change(tag);
35871         }
35872
35873         function removeTag(d) {
35874             var tag = {};
35875             tag[d.key] = undefined;
35876             event.change(tag);
35877             d3.select(this.parentNode).remove();
35878         }
35879
35880         function addTag() {
35881             // Wrapped in a setTimeout in case it's being called from a blur
35882             // handler. Without the setTimeout, the call to `content` would
35883             // wipe out the pending value change.
35884             setTimeout(function() {
35885                 showBlank = true;
35886                 content($wrap);
35887                 $list.selectAll('li:last-child input.key').node().focus();
35888             }, 0);
35889         }
35890     }
35891
35892     rawTagEditor.state = function(_) {
35893         if (!arguments.length) return state;
35894         state = _;
35895         return rawTagEditor;
35896     };
35897
35898     rawTagEditor.preset = function(_) {
35899         if (!arguments.length) return preset;
35900         preset = _;
35901         return rawTagEditor;
35902     };
35903
35904     rawTagEditor.tags = function(_) {
35905         if (!arguments.length) return tags;
35906         tags = _;
35907         return rawTagEditor;
35908     };
35909
35910     rawTagEditor.entityID = function(_) {
35911         if (!arguments.length) return id;
35912         id = _;
35913         return rawTagEditor;
35914     };
35915
35916     return d3.rebind(rawTagEditor, event, 'on');
35917 };
35918 iD.ui.Restore = function(context) {
35919     return function(selection) {
35920         if (!context.history().lock() || !context.history().restorableChanges())
35921             return;
35922
35923         var modal = iD.ui.modal(selection);
35924
35925         modal.select('.modal')
35926             .attr('class', 'modal fillL col6');
35927
35928         var introModal = modal.select('.content');
35929
35930         introModal.attr('class','cf');
35931
35932         introModal.append('div')
35933             .attr('class', 'modal-section')
35934             .append('h3')
35935             .text(t('restore.heading'));
35936
35937         introModal.append('div')
35938             .attr('class','modal-section')
35939             .append('p')
35940             .text(t('restore.description'));
35941
35942         var buttonWrap = introModal.append('div')
35943             .attr('class', 'modal-actions cf');
35944
35945         var restore = buttonWrap.append('button')
35946             .attr('class', 'restore col6')
35947             .text(t('restore.restore'))
35948             .on('click', function() {
35949                 context.history().restore();
35950                 modal.remove();
35951             });
35952
35953         buttonWrap.append('button')
35954             .attr('class', 'reset col6')
35955             .text(t('restore.reset'))
35956             .on('click', function() {
35957                 context.history().clearSaved();
35958                 modal.remove();
35959             });
35960
35961         restore.node().focus();
35962     };
35963 };
35964 iD.ui.Save = function(context) {
35965     var history = context.history(),
35966         key = iD.ui.cmd('⌘S');
35967
35968     function saving() {
35969         return context.mode().id === 'save';
35970     }
35971
35972     function save() {
35973         d3.event.preventDefault();
35974         if (!saving() && history.hasChanges()) {
35975             context.enter(iD.modes.Save(context));
35976         }
35977     }
35978
35979     return function(selection) {
35980         var tooltip = bootstrap.tooltip()
35981             .placement('bottom')
35982             .html(true)
35983             .title(iD.ui.tooltipHtml(t('save.no_changes'), key));
35984
35985         var button = selection.append('button')
35986             .attr('class', 'save col12 disabled')
35987             .attr('tabindex', -1)
35988             .on('click', save)
35989             .call(tooltip);
35990
35991         button.append('span')
35992             .attr('class', 'label')
35993             .text(t('save.title'));
35994
35995         button.append('span')
35996             .attr('class', 'count')
35997             .text('0');
35998
35999         var keybinding = d3.keybinding('undo-redo')
36000             .on(key, save, true);
36001
36002         d3.select(document)
36003             .call(keybinding);
36004
36005         var numChanges = 0;
36006
36007         context.history().on('change.save', function() {
36008             var _ = history.difference().summary().length;
36009             if (_ === numChanges)
36010                 return;
36011             numChanges = _;
36012
36013             tooltip.title(iD.ui.tooltipHtml(t(numChanges > 0 ?
36014                     'save.help' : 'save.no_changes'), key));
36015
36016             button
36017                 .classed('disabled', numChanges === 0)
36018                 .classed('has-count', numChanges > 0);
36019
36020             button.select('span.count')
36021                 .text(numChanges);
36022         });
36023
36024         context.on('enter.save', function() {
36025             button.property('disabled', saving());
36026             if (saving()) button.call(tooltip.hide);
36027         });
36028     };
36029 };
36030 iD.ui.Scale = function(context) {
36031     var projection = context.projection,
36032         maxLength = 180,
36033         tickHeight = 8;
36034
36035     function scaleDefs(loc1, loc2) {
36036         var lat = (loc2[1] + loc1[1]) / 2,
36037             imperial = (iD.detect().locale.toLowerCase() === 'en-us'),
36038             conversion = (imperial ? 3.28084 : 1),
36039             dist = iD.geo.lonToMeters(loc2[0] - loc1[0], lat) * conversion,
36040             scale = { dist: 0, px: 0, text: '' },
36041             buckets, i, val, dLon;
36042
36043         if (imperial) {
36044             buckets = [5280000, 528000, 52800, 5280, 500, 50, 5, 1];
36045         } else {
36046             buckets = [5000000, 500000, 50000, 5000, 500, 50, 5, 1];
36047         }
36048
36049         // determine a user-friendly endpoint for the scale
36050         for (i = 0; i < buckets.length; i++) {
36051             val = buckets[i];
36052             if (dist >= val) {
36053                 scale.dist = Math.floor(dist / val) * val;
36054                 break;
36055             }
36056         }
36057
36058         dLon = iD.geo.metersToLon(scale.dist / conversion, lat);
36059         scale.px = Math.round(projection([loc1[0] + dLon, loc1[1]])[0]);
36060
36061         if (imperial) {
36062             if (scale.dist >= 5280) {
36063                 scale.dist /= 5280;
36064                 scale.text = String(scale.dist) + ' mi';
36065             } else {
36066                 scale.text = String(scale.dist) + ' ft';
36067             }
36068         } else {
36069             if (scale.dist >= 1000) {
36070                 scale.dist /= 1000;
36071                 scale.text = String(scale.dist) + ' km';
36072             } else {
36073                 scale.text = String(scale.dist) + ' m';
36074             }
36075         }
36076
36077         return scale;
36078     }
36079
36080     function update(selection) {
36081         // choose loc1, loc2 along bottom of viewport (near where the scale will be drawn)
36082         var dims = context.map().dimensions(),
36083             loc1 = projection.invert([0, dims[1]]),
36084             loc2 = projection.invert([maxLength, dims[1]]),
36085             scale = scaleDefs(loc1, loc2);
36086
36087         selection.select('#scalepath')
36088             .attr('d', 'M0.5,0.5v' + tickHeight + 'h' + scale.px + 'v-' + tickHeight);
36089
36090         selection.select('#scaletext')
36091             .attr('x', scale.px + 8)
36092             .attr('y', tickHeight)
36093             .text(scale.text);
36094     }
36095
36096     return function(selection) {
36097         var g = selection.append('svg')
36098             .attr('id', 'scale')
36099             .append('g')
36100             .attr('transform', 'translate(10,11)');
36101
36102         g.append('path').attr('id', 'scalepath');
36103         g.append('text').attr('id', 'scaletext');
36104
36105         update(selection);
36106
36107         context.map().on('move.scale', function() {
36108             update(selection);
36109         });
36110     };
36111 };
36112 iD.ui.SelectionList = function(context, selectedIDs) {
36113
36114     function selectEntity(entity) {
36115         context.enter(iD.modes.Select(context, [entity.id]).suppressMenu(true));
36116     }
36117
36118
36119     function selectionList(selection) {
36120         selection.classed('selection-list-pane', true);
36121
36122         var header = selection.append('div')
36123             .attr('class', 'header fillL cf');
36124
36125         header.append('h3')
36126             .text(t('inspector.multiselect'));
36127
36128         var listWrap = selection.append('div')
36129             .attr('class', 'inspector-body');
36130
36131         var list = listWrap.append('div')
36132             .attr('class', 'feature-list cf');
36133
36134         context.history().on('change.selection-list', drawList);
36135         drawList();
36136
36137         function drawList() {
36138             var entities = selectedIDs
36139                 .map(function(id) { return context.hasEntity(id); })
36140                 .filter(function(entity) { return entity; });
36141
36142             var items = list.selectAll('.feature-list-item')
36143                 .data(entities, iD.Entity.key);
36144
36145             var enter = items.enter().append('button')
36146                 .attr('class', 'feature-list-item')
36147                 .on('click', selectEntity);
36148
36149             // Enter
36150             var label = enter.append('div')
36151                 .attr('class', 'label')
36152                 .call(iD.svg.Icon('', 'pre-text'));
36153
36154             label.append('span')
36155                 .attr('class', 'entity-type');
36156
36157             label.append('span')
36158                 .attr('class', 'entity-name');
36159
36160             // Update
36161             items.selectAll('use')
36162                 .attr('href', function() {
36163                     var entity = this.parentElement.parentElement.__data__;
36164                     return '#icon-' + context.geometry(entity.id);
36165                 });
36166
36167             items.selectAll('.entity-type')
36168                 .text(function(entity) { return context.presets().match(entity, context.graph()).name(); });
36169
36170             items.selectAll('.entity-name')
36171                 .text(function(entity) { return iD.util.displayName(entity); });
36172
36173             // Exit
36174             items.exit()
36175                 .remove();
36176         }
36177     }
36178
36179     return selectionList;
36180
36181 };
36182 iD.ui.Sidebar = function(context) {
36183     var inspector = iD.ui.Inspector(context),
36184         current;
36185
36186     function sidebar(selection) {
36187         var featureListWrap = selection.append('div')
36188             .attr('class', 'feature-list-pane')
36189             .call(iD.ui.FeatureList(context));
36190
36191         selection.call(iD.ui.Notice(context));
36192
36193         var inspectorWrap = selection.append('div')
36194             .attr('class', 'inspector-hidden inspector-wrap fr');
36195
36196         sidebar.hover = function(id) {
36197             if (!current && id) {
36198                 featureListWrap.classed('inspector-hidden', true);
36199                 inspectorWrap.classed('inspector-hidden', false)
36200                     .classed('inspector-hover', true);
36201
36202                 if (inspector.entityID() !== id || inspector.state() !== 'hover') {
36203                     inspector
36204                         .state('hover')
36205                         .entityID(id);
36206
36207                     inspectorWrap.call(inspector);
36208                 }
36209             } else if (!current) {
36210                 featureListWrap.classed('inspector-hidden', false);
36211                 inspectorWrap.classed('inspector-hidden', true);
36212                 inspector.state('hide');
36213             }
36214         };
36215
36216         sidebar.hover = _.throttle(sidebar.hover, 200);
36217
36218         sidebar.select = function(id, newFeature) {
36219             if (!current && id) {
36220                 featureListWrap.classed('inspector-hidden', true);
36221                 inspectorWrap.classed('inspector-hidden', false)
36222                     .classed('inspector-hover', false);
36223
36224                 if (inspector.entityID() !== id || inspector.state() !== 'select') {
36225                     inspector
36226                         .state('select')
36227                         .entityID(id)
36228                         .newFeature(newFeature);
36229
36230                     inspectorWrap.call(inspector);
36231                 }
36232             } else if (!current) {
36233                 featureListWrap.classed('inspector-hidden', false);
36234                 inspectorWrap.classed('inspector-hidden', true);
36235                 inspector.state('hide');
36236             }
36237         };
36238
36239         sidebar.show = function(component) {
36240             featureListWrap.classed('inspector-hidden', true);
36241             inspectorWrap.classed('inspector-hidden', true);
36242             if (current) current.remove();
36243             current = selection.append('div')
36244                 .attr('class', 'sidebar-component')
36245                 .call(component);
36246         };
36247
36248         sidebar.hide = function() {
36249             featureListWrap.classed('inspector-hidden', false);
36250             inspectorWrap.classed('inspector-hidden', true);
36251             if (current) current.remove();
36252             current = null;
36253         };
36254     }
36255
36256     sidebar.hover = function() {};
36257     sidebar.select = function() {};
36258     sidebar.show = function() {};
36259     sidebar.hide = function() {};
36260
36261     return sidebar;
36262 };
36263 iD.ui.SourceSwitch = function(context) {
36264     var keys;
36265
36266     function click() {
36267         d3.event.preventDefault();
36268
36269         if (context.history().hasChanges() &&
36270             !window.confirm(t('source_switch.lose_changes'))) return;
36271
36272         var live = d3.select(this)
36273             .classed('live');
36274
36275         context.connection()
36276             .switch(live ? keys[1] : keys[0]);
36277
36278         context.enter(iD.modes.Browse(context));
36279         context.flush();
36280
36281         d3.select(this)
36282             .text(live ? t('source_switch.dev') : t('source_switch.live'))
36283             .classed('live', !live);
36284     }
36285
36286     var sourceSwitch = function(selection) {
36287         selection.append('a')
36288             .attr('href', '#')
36289             .text(t('source_switch.live'))
36290             .classed('live', true)
36291             .attr('tabindex', -1)
36292             .on('click', click);
36293     };
36294
36295     sourceSwitch.keys = function(_) {
36296         if (!arguments.length) return keys;
36297         keys = _;
36298         return sourceSwitch;
36299     };
36300
36301     return sourceSwitch;
36302 };
36303 iD.ui.Spinner = function(context) {
36304     var connection = context.connection();
36305
36306     return function(selection) {
36307         var img = selection.append('img')
36308             .attr('src', context.imagePath('loader-black.gif'))
36309             .style('opacity', 0);
36310
36311         connection.on('loading.spinner', function() {
36312             img.transition()
36313                 .style('opacity', 1);
36314         });
36315
36316         connection.on('loaded.spinner', function() {
36317             img.transition()
36318                 .style('opacity', 0);
36319         });
36320     };
36321 };
36322 iD.ui.Splash = function(context) {
36323     return function(selection) {
36324         if (context.storage('sawSplash'))
36325              return;
36326
36327         context.storage('sawSplash', true);
36328
36329         var modal = iD.ui.modal(selection);
36330
36331         modal.select('.modal')
36332             .attr('class', 'modal-splash modal col6');
36333
36334         var introModal = modal.select('.content')
36335             .append('div')
36336             .attr('class', 'fillL');
36337
36338         introModal.append('div')
36339             .attr('class','modal-section cf')
36340             .append('h3').text(t('splash.welcome'));
36341
36342         introModal.append('div')
36343             .attr('class','modal-section')
36344             .append('p')
36345             .html(t('splash.text', {
36346                 version: iD.version,
36347                 website: '<a href="http://ideditor.com/">ideditor.com</a>',
36348                 github: '<a href="https://github.com/openstreetmap/iD">github.com</a>'
36349             }));
36350
36351         var buttons = introModal.append('div').attr('class', 'modal-actions cf');
36352
36353         buttons.append('button')
36354             .attr('class', 'col6 walkthrough')
36355             .text(t('splash.walkthrough'))
36356             .on('click', function() {
36357                 d3.select(document.body).call(iD.ui.intro(context));
36358                 modal.close();
36359             });
36360
36361         buttons.append('button')
36362             .attr('class', 'col6 start')
36363             .text(t('splash.start'))
36364             .on('click', modal.close);
36365
36366         modal.select('button.close').attr('class','hide');
36367
36368     };
36369 };
36370 iD.ui.Status = function(context) {
36371     var connection = context.connection(),
36372         errCount = 0;
36373
36374     return function(selection) {
36375
36376         function update() {
36377
36378             connection.status(function(err, apiStatus) {
36379
36380                 selection.html('');
36381
36382                 if (err && errCount++ < 2) return;
36383
36384                 if (err) {
36385                     selection.text(t('status.error'));
36386
36387                 } else if (apiStatus === 'readonly') {
36388                     selection.text(t('status.readonly'));
36389
36390                 } else if (apiStatus === 'offline') {
36391                     selection.text(t('status.offline'));
36392                 }
36393
36394                 selection.attr('class', 'api-status ' + (err ? 'error' : apiStatus));
36395                 if (!err) errCount = 0;
36396
36397             });
36398         }
36399
36400         connection.on('auth', function() { update(selection); });
36401         window.setInterval(update, 90000);
36402         update(selection);
36403     };
36404 };
36405 iD.ui.Success = function(context) {
36406     var dispatch = d3.dispatch('cancel'),
36407         changeset;
36408
36409     function success(selection) {
36410         var message = (changeset.comment || t('success.edited_osm')).substring(0, 130) +
36411             ' ' + context.connection().changesetURL(changeset.id);
36412
36413         var header = selection.append('div')
36414             .attr('class', 'header fillL');
36415
36416         header.append('button')
36417             .attr('class', 'fr')
36418             .on('click', function() { dispatch.cancel(); })
36419             .call(iD.svg.Icon('#icon-close'));
36420
36421         header.append('h3')
36422             .text(t('success.just_edited'));
36423
36424         var body = selection.append('div')
36425             .attr('class', 'body save-success fillL');
36426
36427         body.append('p')
36428             .html(t('success.help_html'));
36429
36430         var changesetURL = context.connection().changesetURL(changeset.id);
36431
36432         body.append('a')
36433             .attr('class', 'button col12 osm')
36434             .attr('target', '_blank')
36435             .attr('href', changesetURL)
36436             .text(t('success.view_on_osm'));
36437
36438         var sharing = {
36439             facebook: 'https://facebook.com/sharer/sharer.php?u=' + encodeURIComponent(changesetURL),
36440             twitter: 'https://twitter.com/intent/tweet?source=webclient&text=' + encodeURIComponent(message),
36441             google: 'https://plus.google.com/share?url=' + encodeURIComponent(changesetURL)
36442         };
36443
36444         body.selectAll('.button.social')
36445             .data(d3.entries(sharing))
36446             .enter()
36447             .append('a')
36448             .attr('class', 'button social col4')
36449             .attr('target', '_blank')
36450             .attr('href', function(d) { return d.value; })
36451             .call(bootstrap.tooltip()
36452                 .title(function(d) { return t('success.' + d.key); })
36453                 .placement('bottom'))
36454             .each(function(d) { d3.select(this).call(iD.svg.Icon('#logo-' + d.key, 'social')); });
36455     }
36456
36457     success.changeset = function(_) {
36458         if (!arguments.length) return changeset;
36459         changeset = _;
36460         return success;
36461     };
36462
36463     return d3.rebind(success, dispatch, 'on');
36464 };
36465 iD.ui.TagReference = function(tag, context) {
36466     var tagReference = {},
36467         button,
36468         body,
36469         loaded,
36470         showing;
36471
36472     function findLocal(data) {
36473         var locale = iD.detect().locale.toLowerCase(),
36474             localized;
36475
36476         localized = _.find(data, function(d) {
36477             return d.lang.toLowerCase() === locale;
36478         });
36479         if (localized) return localized;
36480
36481         // try the non-regional version of a language, like
36482         // 'en' if the language is 'en-US'
36483         if (locale.indexOf('-') !== -1) {
36484             var first = locale.split('-')[0];
36485             localized = _.find(data, function(d) {
36486                 return d.lang.toLowerCase() === first;
36487             });
36488             if (localized) return localized;
36489         }
36490
36491         // finally fall back to english
36492         return _.find(data, function(d) {
36493             return d.lang.toLowerCase() === 'en';
36494         });
36495     }
36496
36497     function load(param) {
36498         button.classed('tag-reference-loading', true);
36499
36500         context.taginfo().docs(param, function show(err, data) {
36501             var docs;
36502             if (!err && data) {
36503                 docs = findLocal(data);
36504             }
36505
36506             body.html('');
36507
36508             if (!docs || !docs.description) {
36509                 if (param.hasOwnProperty('value')) {
36510                     load(_.omit(param, 'value'));   // retry with key only
36511                 } else {
36512                     body.append('p').text(t('inspector.no_documentation_key'));
36513                     done();
36514                 }
36515                 return;
36516             }
36517
36518             if (docs.image && docs.image.thumb_url_prefix) {
36519                 body
36520                     .append('img')
36521                     .attr('class', 'wiki-image')
36522                     .attr('src', docs.image.thumb_url_prefix + '100' + docs.image.thumb_url_suffix)
36523                     .on('load', function() { done(); })
36524                     .on('error', function() { d3.select(this).remove(); done(); });
36525             } else {
36526                 done();
36527             }
36528
36529             body
36530                 .append('p')
36531                 .text(docs.description);
36532
36533             body
36534                 .append('a')
36535                 .attr('target', '_blank')
36536                 .attr('href', 'http://wiki.openstreetmap.org/wiki/' + docs.title)
36537                 .call(iD.svg.Icon('#icon-out-link', 'inline'))
36538                 .append('span')
36539                 .text(t('inspector.reference'));
36540         });
36541     }
36542
36543     function done() {
36544         loaded = true;
36545
36546         button.classed('tag-reference-loading', false);
36547
36548         body.transition()
36549             .duration(200)
36550             .style('max-height', '200px')
36551             .style('opacity', '1');
36552
36553         showing = true;
36554     }
36555
36556     function hide(selection) {
36557         selection = selection || body.transition().duration(200);
36558
36559         selection
36560             .style('max-height', '0px')
36561             .style('opacity', '0');
36562
36563         showing = false;
36564     }
36565
36566     tagReference.button = function(selection) {
36567         button = selection.selectAll('.tag-reference-button')
36568             .data([0]);
36569
36570         button.enter()
36571             .append('button')
36572             .attr('class', 'tag-reference-button')
36573             .attr('tabindex', -1)
36574             .call(iD.svg.Icon('#icon-inspect'));
36575
36576         button.on('click', function () {
36577             d3.event.stopPropagation();
36578             d3.event.preventDefault();
36579             if (showing) {
36580                 hide();
36581             } else if (loaded) {
36582                 done();
36583             } else {
36584                 if (context.taginfo()) {
36585                     load(tag);
36586                 }
36587             }
36588         });
36589     };
36590
36591     tagReference.body = function(selection) {
36592         body = selection.selectAll('.tag-reference-body')
36593             .data([0]);
36594
36595         body.enter().append('div')
36596             .attr('class', 'tag-reference-body cf')
36597             .style('max-height', '0')
36598             .style('opacity', '0');
36599
36600         if (showing === false) {
36601             hide(body);
36602         }
36603     };
36604
36605     tagReference.showing = function(_) {
36606         if (!arguments.length) return showing;
36607         showing = _;
36608         return tagReference;
36609     };
36610
36611     return tagReference;
36612 };
36613 // toggles the visibility of ui elements, using a combination of the
36614 // hide class, which sets display=none, and a d3 transition for opacity.
36615 // this will cause blinking when called repeatedly, so check that the
36616 // value actually changes between calls.
36617 iD.ui.Toggle = function(show, callback) {
36618     return function(selection) {
36619         selection
36620             .style('opacity', show ? 0 : 1)
36621             .classed('hide', false)
36622             .transition()
36623             .style('opacity', show ? 1 : 0)
36624             .each('end', function() {
36625                 d3.select(this).classed('hide', !show);
36626                 if (callback) callback.apply(this);
36627             });
36628     };
36629 };
36630 iD.ui.UndoRedo = function(context) {
36631     var commands = [{
36632         id: 'undo',
36633         cmd: iD.ui.cmd('⌘Z'),
36634         action: function() { if (!saving()) context.undo(); },
36635         annotation: function() { return context.history().undoAnnotation(); }
36636     }, {
36637         id: 'redo',
36638         cmd: iD.ui.cmd('⌘⇧Z'),
36639         action: function() { if (!saving()) context.redo(); },
36640         annotation: function() { return context.history().redoAnnotation(); }
36641     }];
36642
36643     function saving() {
36644         return context.mode().id === 'save';
36645     }
36646
36647     return function(selection) {
36648         var tooltip = bootstrap.tooltip()
36649             .placement('bottom')
36650             .html(true)
36651             .title(function (d) {
36652                 return iD.ui.tooltipHtml(d.annotation() ?
36653                     t(d.id + '.tooltip', {action: d.annotation()}) :
36654                     t(d.id + '.nothing'), d.cmd);
36655             });
36656
36657         var buttons = selection.selectAll('button')
36658             .data(commands)
36659             .enter().append('button')
36660             .attr('class', 'col6 disabled')
36661             .on('click', function(d) { return d.action(); })
36662             .call(tooltip);
36663
36664         buttons.each(function(d) {
36665             d3.select(this)
36666                 .call(iD.svg.Icon('#icon-' + d.id));
36667         });
36668
36669         var keybinding = d3.keybinding('undo')
36670             .on(commands[0].cmd, function() { d3.event.preventDefault(); commands[0].action(); })
36671             .on(commands[1].cmd, function() { d3.event.preventDefault(); commands[1].action(); });
36672
36673         d3.select(document)
36674             .call(keybinding);
36675
36676         context.history()
36677             .on('change.undo_redo', update);
36678
36679         context
36680             .on('enter.undo_redo', update);
36681
36682         function update() {
36683             buttons
36684                 .property('disabled', saving())
36685                 .classed('disabled', function(d) { return !d.annotation(); })
36686                 .each(function() {
36687                     var selection = d3.select(this);
36688                     if (selection.property('tooltipVisible')) {
36689                         selection.call(tooltip.show);
36690                     }
36691                 });
36692         }
36693     };
36694 };
36695 iD.ui.ViewOnOSM = function(context) {
36696     var id;
36697
36698     function viewOnOSM(selection) {
36699         var entity = context.entity(id);
36700
36701         selection.style('display', entity.isNew() ? 'none' : null);
36702
36703         var $link = selection.selectAll('.view-on-osm')
36704             .data([0]);
36705
36706         $link.enter()
36707             .append('a')
36708             .attr('class', 'view-on-osm')
36709             .attr('target', '_blank')
36710             .call(iD.svg.Icon('#icon-out-link', 'inline'))
36711             .append('span')
36712             .text(t('inspector.view_on_osm'));
36713
36714         $link
36715             .attr('href', context.connection().entityURL(entity));
36716     }
36717
36718     viewOnOSM.entityID = function(_) {
36719         if (!arguments.length) return id;
36720         id = _;
36721         return viewOnOSM;
36722     };
36723
36724     return viewOnOSM;
36725 };
36726 iD.ui.Zoom = function(context) {
36727     var zooms = [{
36728         id: 'zoom-in',
36729         icon: 'plus',
36730         title: t('zoom.in'),
36731         action: context.zoomIn,
36732         key: '+'
36733     }, {
36734         id: 'zoom-out',
36735         icon: 'minus',
36736         title: t('zoom.out'),
36737         action: context.zoomOut,
36738         key: '-'
36739     }];
36740
36741     function zoomIn() {
36742         d3.event.preventDefault();
36743         context.zoomIn();
36744     }
36745
36746     function zoomOut() {
36747         d3.event.preventDefault();
36748         context.zoomOut();
36749     }
36750
36751     function zoomInFurther() {
36752         d3.event.preventDefault();
36753         context.zoomInFurther();
36754     }
36755
36756     function zoomOutFurther() {
36757         d3.event.preventDefault();
36758         context.zoomOutFurther();
36759     }
36760
36761
36762     return function(selection) {
36763         var button = selection.selectAll('button')
36764             .data(zooms)
36765             .enter().append('button')
36766             .attr('tabindex', -1)
36767             .attr('class', function(d) { return d.id; })
36768             .on('click.editor', function(d) { d.action(); })
36769             .call(bootstrap.tooltip()
36770                 .placement('left')
36771                 .html(true)
36772                 .title(function(d) {
36773                     return iD.ui.tooltipHtml(d.title, d.key);
36774                 }));
36775
36776         button.each(function(d) {
36777             d3.select(this)
36778                 .call(iD.svg.Icon('#icon-' + d.icon, 'light'));
36779         });
36780
36781         var keybinding = d3.keybinding('zoom');
36782
36783         _.each(['=','ffequals','plus','ffplus'], function(key) {
36784             keybinding.on(key, zoomIn);
36785             keybinding.on('⇧' + key, zoomIn);
36786             keybinding.on(iD.ui.cmd('⌘' + key), zoomInFurther);
36787             keybinding.on(iD.ui.cmd('⌘⇧' + key), zoomInFurther);
36788         });
36789         _.each(['-','ffminus','_','dash'], function(key) {
36790             keybinding.on(key, zoomOut);
36791             keybinding.on('⇧' + key, zoomOut);
36792             keybinding.on(iD.ui.cmd('⌘' + key), zoomOutFurther);
36793             keybinding.on(iD.ui.cmd('⌘⇧' + key), zoomOutFurther);
36794         });
36795
36796         d3.select(document)
36797             .call(keybinding);
36798     };
36799 };
36800 iD.ui.preset.access = function(field) {
36801     var event = d3.dispatch('change'),
36802         items;
36803
36804     function access(selection) {
36805         var wrap = selection.selectAll('.preset-input-wrap')
36806             .data([0]);
36807
36808         wrap.enter().append('div')
36809             .attr('class', 'cf preset-input-wrap')
36810             .append('ul');
36811
36812         items = wrap.select('ul').selectAll('li')
36813             .data(field.keys);
36814
36815         // Enter
36816
36817         var enter = items.enter().append('li')
36818             .attr('class', function(d) { return 'cf preset-access-' + d; });
36819
36820         enter.append('span')
36821             .attr('class', 'col6 label preset-label-access')
36822             .attr('for', function(d) { return 'preset-input-access-' + d; })
36823             .text(function(d) { return field.t('types.' + d); });
36824
36825         enter.append('div')
36826             .attr('class', 'col6 preset-input-access-wrap')
36827             .append('input')
36828             .attr('type', 'text')
36829             .attr('class', 'preset-input-access')
36830             .attr('id', function(d) { return 'preset-input-access-' + d; })
36831             .each(function(d) {
36832                 d3.select(this)
36833                     .call(d3.combobox()
36834                         .data(access.options(d)));
36835             });
36836
36837         // Update
36838
36839         wrap.selectAll('.preset-input-access')
36840             .on('change', change)
36841             .on('blur', change);
36842     }
36843
36844     function change(d) {
36845         var tag = {};
36846         tag[d] = d3.select(this).value() || undefined;
36847         event.change(tag);
36848     }
36849
36850     access.options = function(type) {
36851         var options = ['no', 'permissive', 'private', 'destination'];
36852
36853         if (type !== 'access') {
36854             options.unshift('yes');
36855             options.push('designated');
36856
36857             if (type === 'bicycle') {
36858                 options.push('dismount');
36859             }
36860         }
36861
36862         return options.map(function(option) {
36863             return {
36864                 title: field.t('options.' + option + '.description'),
36865                 value: option
36866             };
36867         });
36868     };
36869
36870     var placeholders = {
36871         footway: {
36872             foot: 'designated',
36873             motor_vehicle: 'no'
36874         },
36875         steps: {
36876             foot: 'yes',
36877             motor_vehicle: 'no',
36878             bicycle: 'no',
36879             horse: 'no'
36880         },
36881         pedestrian: {
36882             foot: 'yes',
36883             motor_vehicle: 'no'
36884         },
36885         cycleway: {
36886             motor_vehicle: 'no',
36887             bicycle: 'designated'
36888         },
36889         bridleway: {
36890             motor_vehicle: 'no',
36891             horse: 'designated'
36892         },
36893         path: {
36894             foot: 'yes',
36895             motor_vehicle: 'no',
36896             bicycle: 'yes',
36897             horse: 'yes'
36898         },
36899         motorway: {
36900             foot: 'no',
36901             motor_vehicle: 'yes',
36902             bicycle: 'no',
36903             horse: 'no'
36904         },
36905         trunk: {
36906             motor_vehicle: 'yes'
36907         },
36908         primary: {
36909             foot: 'yes',
36910             motor_vehicle: 'yes',
36911             bicycle: 'yes',
36912             horse: 'yes'
36913         },
36914         secondary: {
36915             foot: 'yes',
36916             motor_vehicle: 'yes',
36917             bicycle: 'yes',
36918             horse: 'yes'
36919         },
36920         tertiary: {
36921             foot: 'yes',
36922             motor_vehicle: 'yes',
36923             bicycle: 'yes',
36924             horse: 'yes'
36925         },
36926         residential: {
36927             foot: 'yes',
36928             motor_vehicle: 'yes',
36929             bicycle: 'yes',
36930             horse: 'yes'
36931         },
36932         unclassified: {
36933             foot: 'yes',
36934             motor_vehicle: 'yes',
36935             bicycle: 'yes',
36936             horse: 'yes'
36937         },
36938         service: {
36939             foot: 'yes',
36940             motor_vehicle: 'yes',
36941             bicycle: 'yes',
36942             horse: 'yes'
36943         },
36944         motorway_link: {
36945             foot: 'no',
36946             motor_vehicle: 'yes',
36947             bicycle: 'no',
36948             horse: 'no'
36949         },
36950         trunk_link: {
36951             motor_vehicle: 'yes'
36952         },
36953         primary_link: {
36954             foot: 'yes',
36955             motor_vehicle: 'yes',
36956             bicycle: 'yes',
36957             horse: 'yes'
36958         },
36959         secondary_link: {
36960             foot: 'yes',
36961             motor_vehicle: 'yes',
36962             bicycle: 'yes',
36963             horse: 'yes'
36964         },
36965         tertiary_link: {
36966             foot: 'yes',
36967             motor_vehicle: 'yes',
36968             bicycle: 'yes',
36969             horse: 'yes'
36970         }
36971     };
36972
36973     access.tags = function(tags) {
36974         items.selectAll('.preset-input-access')
36975             .value(function(d) { return tags[d] || ''; })
36976             .attr('placeholder', function() {
36977                 return tags.access ? tags.access : field.placeholder();
36978             });
36979
36980         // items.selectAll('#preset-input-access-access')
36981         //     .attr('placeholder', 'yes');
36982
36983         _.forEach(placeholders[tags.highway], function(v, k) {
36984             items.selectAll('#preset-input-access-' + k)
36985                 .attr('placeholder', function() { return (tags.access || v); });
36986         });
36987     };
36988
36989     access.focus = function() {
36990         items.selectAll('.preset-input-access')
36991             .node().focus();
36992     };
36993
36994     return d3.rebind(access, event, 'on');
36995 };
36996 iD.ui.preset.address = function(field, context) {
36997     var event = d3.dispatch('init', 'change'),
36998         wrap,
36999         entity,
37000         isInitialized;
37001
37002     var widths = {
37003         housenumber: 1/3,
37004         street: 2/3,
37005         city: 2/3,
37006         state: 1/4,
37007         postcode: 1/3
37008     };
37009
37010     function getStreets() {
37011         var extent = entity.extent(context.graph()),
37012             l = extent.center(),
37013             box = iD.geo.Extent(l).padByMeters(200);
37014
37015         return context.intersects(box)
37016             .filter(isAddressable)
37017             .map(function(d) {
37018                 var loc = context.projection([
37019                     (extent[0][0] + extent[1][0]) / 2,
37020                     (extent[0][1] + extent[1][1]) / 2]),
37021                     choice = iD.geo.chooseEdge(context.childNodes(d), loc, context.projection);
37022                 return {
37023                     title: d.tags.name,
37024                     value: d.tags.name,
37025                     dist: choice.distance
37026                 };
37027             }).sort(function(a, b) {
37028                 return a.dist - b.dist;
37029             });
37030
37031         function isAddressable(d) {
37032             return d.tags.highway && d.tags.name && d.type === 'way';
37033         }
37034     }
37035
37036     function getCities() {
37037         var extent = entity.extent(context.graph()),
37038             l = extent.center(),
37039             box = iD.geo.Extent(l).padByMeters(200);
37040
37041         return context.intersects(box)
37042             .filter(isAddressable)
37043             .map(function(d) {
37044                 return {
37045                     title: d.tags['addr:city'] || d.tags.name,
37046                     value: d.tags['addr:city'] || d.tags.name,
37047                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
37048                 };
37049             }).sort(function(a, b) {
37050                 return a.dist - b.dist;
37051             });
37052
37053         function isAddressable(d) {
37054             if (d.tags.name &&
37055                 (d.tags.admin_level === '8' || d.tags.border_type === 'city'))
37056                 return true;
37057
37058             if (d.tags.place && d.tags.name && (
37059                     d.tags.place === 'city' ||
37060                     d.tags.place === 'town' ||
37061                     d.tags.place === 'village'))
37062                 return true;
37063
37064             if (d.tags['addr:city']) return true;
37065
37066             return false;
37067         }
37068     }
37069
37070     function getPostCodes() {
37071         var extent = entity.extent(context.graph()),
37072             l = extent.center(),
37073             box = iD.geo.Extent(l).padByMeters(200);
37074
37075         return context.intersects(box)
37076             .filter(isAddressable)
37077             .map(function(d) {
37078                 return {
37079                     title: d.tags['addr:postcode'],
37080                     value: d.tags['addr:postcode'],
37081                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
37082                 };
37083             }).sort(function(a, b) {
37084                 return a.dist - b.dist;
37085             });
37086
37087         function isAddressable(d) {
37088             return d.tags['addr:postcode'];
37089         }
37090     }
37091
37092     function address(selection) {
37093         isInitialized = false;
37094         
37095         selection.selectAll('.preset-input-wrap')
37096             .remove();
37097
37098         var center = entity.extent(context.graph()).center(),
37099             addressFormat;
37100
37101         // Enter
37102
37103         wrap = selection.append('div')
37104             .attr('class', 'preset-input-wrap');
37105
37106         iD.countryCode().search(center, function (err, countryCode) {
37107             addressFormat = _.find(iD.data.addressFormats, function (a) {
37108                 return a && a.countryCodes && _.contains(a.countryCodes, countryCode);
37109             }) || _.first(iD.data.addressFormats);
37110
37111             function row(r) {
37112                 // Normalize widths.
37113                 var total = _.reduce(r, function(sum, field) {
37114                     return sum + (widths[field] || 0.5);
37115                 }, 0);
37116
37117                 return r.map(function (field) {
37118                     return {
37119                         id: field,
37120                         width: (widths[field] || 0.5) / total
37121                     };
37122                 });
37123             }
37124
37125             wrap.selectAll('div')
37126                 .data(addressFormat.format)
37127                 .enter()
37128                 .append('div')
37129                 .attr('class', 'addr-row')
37130                 .selectAll('input')
37131                 .data(row)
37132                 .enter()
37133                 .append('input')
37134                 .property('type', 'text')
37135                 .attr('placeholder', function (d) { return field.t('placeholders.' + d.id); })
37136                 .attr('class', function (d) { return 'addr-' + d.id; })
37137                 .style('width', function (d) { return d.width * 100 + '%'; });
37138
37139             // Update
37140
37141             wrap.selectAll('.addr-street')
37142                 .call(d3.combobox()
37143                     .fetcher(function(value, callback) {
37144                         callback(getStreets());
37145                     }));
37146
37147             wrap.selectAll('.addr-city')
37148                 .call(d3.combobox()
37149                     .fetcher(function(value, callback) {
37150                         callback(getCities());
37151                     }));
37152
37153             wrap.selectAll('.addr-postcode')
37154                 .call(d3.combobox()
37155                     .fetcher(function(value, callback) {
37156                         callback(getPostCodes());
37157                     }));
37158
37159             wrap.selectAll('input')
37160                 .on('blur', change)
37161                 .on('change', change);
37162
37163             event.init();
37164             isInitialized = true;
37165         });
37166     }
37167
37168     function change() {
37169         var tags = {};
37170
37171         wrap.selectAll('input')
37172             .each(function (field) {
37173                 tags['addr:' + field.id] = this.value || undefined;
37174             });
37175
37176         event.change(tags);
37177     }
37178
37179     function updateTags(tags) {
37180         wrap.selectAll('input')
37181             .value(function (field) {
37182                 return tags['addr:' + field.id] || '';
37183             });
37184     }
37185
37186     address.entity = function(_) {
37187         if (!arguments.length) return entity;
37188         entity = _;
37189         return address;
37190     };
37191
37192     address.tags = function(tags) {
37193         if (isInitialized) {
37194             updateTags(tags);
37195         } else {
37196             event.on('init', function () {
37197                 updateTags(tags);
37198             });
37199         }
37200     };
37201
37202     address.focus = function() {
37203         var node = wrap.selectAll('input').node();
37204         if (node) node.focus();
37205     };
37206
37207     return d3.rebind(address, event, 'on');
37208 };
37209 iD.ui.preset.check =
37210 iD.ui.preset.defaultcheck = function(field) {
37211     var event = d3.dispatch('change'),
37212         options = field.strings && field.strings.options,
37213         values = [],
37214         texts = [],
37215         entity, value, box, text, label;
37216
37217     if (options) {
37218         for (var k in options) {
37219             values.push(k === 'undefined' ? undefined : k);
37220             texts.push(field.t('options.' + k, { 'default': options[k] }));
37221         }
37222     } else {
37223         values = [undefined, 'yes'];
37224         texts = [t('inspector.unknown'), t('inspector.check.yes')];
37225         if (field.type === 'check') {
37226             values.push('no');
37227             texts.push(t('inspector.check.no'));
37228         }
37229     }
37230
37231     var check = function(selection) {
37232         // hack: pretend oneway field is a oneway_yes field
37233         // where implied oneway tag exists (e.g. `junction=roundabout`) #2220, #1841
37234         if (field.id === 'oneway') {
37235             for (var key in entity.tags) {
37236                 if (key in iD.oneWayTags && (entity.tags[key] in iD.oneWayTags[key])) {
37237                     texts[0] = t('presets.fields.oneway_yes.options.undefined');
37238                     break;
37239                 }
37240             }
37241         }
37242
37243         selection.classed('checkselect', 'true');
37244
37245         label = selection.selectAll('.preset-input-wrap')
37246             .data([0]);
37247
37248         var enter = label.enter().append('label')
37249             .attr('class', 'preset-input-wrap');
37250
37251         enter.append('input')
37252             .property('indeterminate', field.type === 'check')
37253             .attr('type', 'checkbox')
37254             .attr('id', 'preset-input-' + field.id);
37255
37256         enter.append('span')
37257             .text(texts[0])
37258             .attr('class', 'value');
37259
37260         box = label.select('input')
37261             .on('click', function() {
37262                 var t = {};
37263                 t[field.key] = values[(values.indexOf(value) + 1) % values.length];
37264                 event.change(t);
37265                 d3.event.stopPropagation();
37266             });
37267
37268         text = label.select('span.value');
37269     };
37270
37271     check.entity = function(_) {
37272         if (!arguments.length) return entity;
37273         entity = _;
37274         return check;
37275     };
37276
37277     check.tags = function(tags) {
37278         value = tags[field.key];
37279         box.property('indeterminate', field.type === 'check' && !value);
37280         box.property('checked', value === 'yes');
37281         text.text(texts[values.indexOf(value)]);
37282         label.classed('set', !!value);
37283     };
37284
37285     check.focus = function() {
37286         box.node().focus();
37287     };
37288
37289     return d3.rebind(check, event, 'on');
37290 };
37291 iD.ui.preset.combo =
37292 iD.ui.preset.typeCombo = function(field, context) {
37293     var event = d3.dispatch('change'),
37294         optstrings = field.strings && field.strings.options,
37295         optarray = field.options,
37296         snake_case = (field.snake_case || (field.snake_case === undefined)),
37297         strings = {},
37298         input;
37299
37300     function snake(s) {
37301         return s.replace(/\s+/g, '_');
37302     }
37303
37304     function unsnake(s) {
37305         return s.replace(/_+/g, ' ');
37306     }
37307
37308     function clean(s) {
37309         return s.split(';')
37310             .map(function(s) { return s.trim(); })
37311             .join(';');
37312     }
37313
37314     function optString() {
37315         return _.find(_.keys(strings), function(k) {
37316                 return strings[k] === input.value();
37317             });
37318     }
37319
37320     function combo(selection) {
37321         var combobox = d3.combobox();
37322
37323         input = selection.selectAll('input')
37324             .data([0]);
37325
37326         var enter = input.enter()
37327             .append('input')
37328             .attr('type', 'text')
37329             .attr('id', 'preset-input-' + field.id);
37330
37331         if (optstrings) { enter.attr('readonly', 'readonly'); }
37332
37333         input
37334             .call(combobox)
37335             .on('change', change)
37336             .on('blur', change)
37337             .each(function() {
37338                 if (optstrings) {
37339                     _.each(optstrings, function(v, k) {
37340                         strings[k] = field.t('options.' + k, { 'default': v });
37341                     });
37342                     stringsLoaded();
37343                 } else if (optarray) {
37344                     _.each(optarray, function(k) {
37345                         strings[k] = (snake_case ? unsnake(k) : k);
37346                     });
37347                     stringsLoaded();
37348                 } else if (context.taginfo()) {
37349                     context.taginfo().values({key: field.key}, function(err, data) {
37350                         if (!err) {
37351                             _.each(_.pluck(data, 'value'), function(k) {
37352                                 strings[k] = (snake_case ? unsnake(k) : k);
37353                             });
37354                             stringsLoaded();
37355                         }
37356                     });
37357                 }
37358             });
37359
37360         function stringsLoaded() {
37361             var keys = _.keys(strings),
37362                 strs = [],
37363                 placeholders;
37364
37365             combobox.data(keys.map(function(k) {
37366                 var s = strings[k],
37367                     o = {};
37368                 o.title = o.value = s;
37369                 if (s.length < 20) { strs.push(s); }
37370                 return o;
37371             }));
37372
37373             placeholders = strs.length > 1 ? strs : keys;
37374             input.attr('placeholder', field.placeholder() ||
37375                 (placeholders.slice(0, 3).join(', ') + '...'));
37376         }
37377     }
37378
37379     function change() {
37380         var value = optString() || clean(input.value());
37381
37382         if (snake_case) {
37383             value = snake(value);
37384         }
37385         if (field.type === 'typeCombo' && !value) {
37386             value = 'yes';
37387         }
37388
37389         var t = {};
37390         t[field.key] = value || undefined;
37391         event.change(t);
37392     }
37393
37394     combo.tags = function(tags) {
37395         var key = tags[field.key],
37396             optstring = optString(),
37397             value = strings[key] || key || '';
37398
37399         if (field.type === 'typeCombo' && value.toLowerCase() === 'yes') {
37400             value = '';
37401         }
37402         if (!optstring && snake_case) {
37403             value = unsnake(value);
37404         }
37405         input.value(value);
37406     };
37407
37408     combo.focus = function() {
37409         input.node().focus();
37410     };
37411
37412     return d3.rebind(combo, event, 'on');
37413 };
37414 iD.ui.preset.cycleway = function(field) {
37415     var event = d3.dispatch('change'),
37416         items;
37417
37418     function cycleway(selection) {
37419         var wrap = selection.selectAll('.preset-input-wrap')
37420             .data([0]);
37421
37422         wrap.enter().append('div')
37423             .attr('class', 'cf preset-input-wrap')
37424             .append('ul');
37425
37426         items = wrap.select('ul').selectAll('li')
37427             .data(field.keys);
37428
37429         // Enter
37430
37431         var enter = items.enter().append('li')
37432             .attr('class', function(d) { return 'cf preset-cycleway-' + d; });
37433
37434         enter.append('span')
37435             .attr('class', 'col6 label preset-label-cycleway')
37436             .attr('for', function(d) { return 'preset-input-cycleway-' + d; })
37437             .text(function(d) { return field.t('types.' + d); });
37438
37439         enter.append('div')
37440             .attr('class', 'col6 preset-input-cycleway-wrap')
37441             .append('input')
37442             .attr('type', 'text')
37443             .attr('class', 'preset-input-cycleway')
37444             .attr('id', function(d) { return 'preset-input-cycleway-' + d; })
37445             .each(function(d) {
37446                 d3.select(this)
37447                     .call(d3.combobox()
37448                         .data(cycleway.options(d)));
37449             });
37450
37451         // Update
37452
37453         wrap.selectAll('.preset-input-cycleway')
37454             .on('change', change)
37455             .on('blur', change);
37456     }
37457
37458     function change() {
37459         var inputs = d3.selectAll('.preset-input-cycleway')[0],
37460             left = d3.select(inputs[0]).value(),
37461             right = d3.select(inputs[1]).value(),
37462             tag = {};
37463         if (left === 'none' || left === '') { left = undefined; }
37464         if (right === 'none' || right === '') { right = undefined; }
37465
37466         // Always set both left and right as changing one can affect the other
37467         tag = {
37468             cycleway: undefined,
37469             'cycleway:left': left,
37470             'cycleway:right': right
37471         };
37472
37473         // If the left and right tags match, use the cycleway tag to tag both
37474         // sides the same way
37475         if (left === right) {
37476             tag = {
37477                 cycleway: left,
37478                 'cycleway:left': undefined,
37479                 'cycleway:right': undefined
37480             };
37481         }
37482
37483         event.change(tag);
37484     }
37485
37486     cycleway.options = function() {
37487         return d3.keys(field.strings.options).map(function(option) {
37488             return {
37489                 title: field.t('options.' + option + '.description'),
37490                 value: option
37491             };
37492         });
37493     };
37494
37495     cycleway.tags = function(tags) {
37496         items.selectAll('.preset-input-cycleway')
37497             .value(function(d) {
37498                 // If cycleway is set, always return that
37499                 if (tags.cycleway) {
37500                     return tags.cycleway;
37501                 }
37502                 return tags[d] || '';
37503             })
37504             .attr('placeholder', field.placeholder());
37505     };
37506
37507     cycleway.focus = function() {
37508         items.selectAll('.preset-input-cycleway')
37509             .node().focus();
37510     };
37511
37512     return d3.rebind(cycleway, event, 'on');
37513 };
37514 iD.ui.preset.text =
37515 iD.ui.preset.number =
37516 iD.ui.preset.tel =
37517 iD.ui.preset.email =
37518 iD.ui.preset.url = function(field) {
37519
37520     var event = d3.dispatch('change'),
37521         input;
37522
37523     function i(selection) {
37524         input = selection.selectAll('input')
37525             .data([0]);
37526
37527         input.enter().append('input')
37528             .attr('type', field.type)
37529             .attr('id', 'preset-input-' + field.id)
37530             .attr('placeholder', field.placeholder() || t('inspector.unknown'));
37531
37532         input
37533             .on('blur', change)
37534             .on('change', change);
37535
37536         if (field.type === 'number') {
37537             input.attr('type', 'text');
37538
37539             var spinControl = selection.selectAll('.spin-control')
37540                 .data([0]);
37541
37542             var enter = spinControl.enter().append('div')
37543                 .attr('class', 'spin-control');
37544
37545             enter.append('button')
37546                 .datum(1)
37547                 .attr('class', 'increment');
37548
37549             enter.append('button')
37550                 .datum(-1)
37551                 .attr('class', 'decrement');
37552
37553             spinControl.selectAll('button')
37554                 .on('click', function(d) {
37555                     d3.event.preventDefault();
37556                     var num = parseInt(input.node().value || 0, 10);
37557                     if (!isNaN(num)) input.node().value = num + d;
37558                     change();
37559                 });
37560         }
37561     }
37562
37563     function change() {
37564         var t = {};
37565         t[field.key] = input.value() || undefined;
37566         event.change(t);
37567     }
37568
37569     i.tags = function(tags) {
37570         input.value(tags[field.key] || '');
37571     };
37572
37573     i.focus = function() {
37574         input.node().focus();
37575     };
37576
37577     return d3.rebind(i, event, 'on');
37578 };
37579 iD.ui.preset.localized = function(field, context) {
37580
37581     var event = d3.dispatch('change'),
37582         wikipedia = iD.wikipedia(),
37583         input, localizedInputs, wikiTitles,
37584         entity;
37585
37586     function i(selection) {
37587         input = selection.selectAll('.localized-main')
37588             .data([0]);
37589
37590         input.enter().append('input')
37591             .attr('type', 'text')
37592             .attr('id', 'preset-input-' + field.id)
37593             .attr('class', 'localized-main')
37594             .attr('placeholder', field.placeholder());
37595
37596         if (field.id === 'name') {
37597             var preset = context.presets().match(entity, context.graph());
37598             input.call(d3.combobox().fetcher(
37599                 iD.util.SuggestNames(preset, iD.data.suggestions)
37600             ));
37601         }
37602
37603         input
37604             .on('blur', change)
37605             .on('change', change);
37606
37607         var translateButton = selection.selectAll('.localized-add')
37608             .data([0]);
37609
37610         translateButton.enter()
37611             .append('button')
37612             .attr('class', 'button-input-action localized-add minor')
37613             .call(iD.svg.Icon('#icon-plus'))
37614             .call(bootstrap.tooltip()
37615                 .title(t('translate.translate'))
37616                 .placement('left'));
37617
37618         translateButton
37619             .on('click', addBlank);
37620
37621         localizedInputs = selection.selectAll('.localized-wrap')
37622             .data([0]);
37623
37624         localizedInputs.enter().append('div')
37625             .attr('class', 'localized-wrap');
37626     }
37627
37628     function addBlank() {
37629         d3.event.preventDefault();
37630         var data = localizedInputs.selectAll('div.entry').data();
37631         data.push({ lang: '', value: '' });
37632         localizedInputs.call(render, data);
37633     }
37634
37635     function change() {
37636         var t = {};
37637         t[field.key] = d3.select(this).value() || undefined;
37638         event.change(t);
37639     }
37640
37641     function key(lang) { return field.key + ':' + lang; }
37642
37643     function changeLang(d) {
37644         var lang = d3.select(this).value(),
37645             t = {},
37646             language = _.find(iD.data.wikipedia, function(d) {
37647                 return d[0].toLowerCase() === lang.toLowerCase() ||
37648                     d[1].toLowerCase() === lang.toLowerCase();
37649             });
37650
37651         if (language) lang = language[2];
37652
37653         if (d.lang && d.lang !== lang) {
37654             t[key(d.lang)] = undefined;
37655         }
37656
37657         var value = d3.select(this.parentNode)
37658             .selectAll('.localized-value')
37659             .value();
37660
37661         if (lang && value) {
37662             t[key(lang)] = value;
37663         } else if (lang && wikiTitles && wikiTitles[d.lang]) {
37664             t[key(lang)] = wikiTitles[d.lang];
37665         }
37666
37667         d.lang = lang;
37668         event.change(t);
37669     }
37670
37671     function changeValue(d) {
37672         if (!d.lang) return;
37673         var t = {};
37674         t[key(d.lang)] = d3.select(this).value() || undefined;
37675         event.change(t);
37676     }
37677
37678     function fetcher(value, cb) {
37679         var v = value.toLowerCase();
37680
37681         cb(iD.data.wikipedia.filter(function(d) {
37682             return d[0].toLowerCase().indexOf(v) >= 0 ||
37683             d[1].toLowerCase().indexOf(v) >= 0 ||
37684             d[2].toLowerCase().indexOf(v) >= 0;
37685         }).map(function(d) {
37686             return { value: d[1] };
37687         }));
37688     }
37689
37690     function render(selection, data) {
37691         var wraps = selection.selectAll('div.entry').
37692             data(data, function(d) { return d.lang; });
37693
37694         var innerWrap = wraps.enter()
37695             .insert('div', ':first-child');
37696
37697         innerWrap.attr('class', 'entry')
37698             .each(function() {
37699                 var wrap = d3.select(this);
37700                 var langcombo = d3.combobox().fetcher(fetcher);
37701
37702                 var label = wrap.append('label')
37703                     .attr('class','form-label')
37704                     .text(t('translate.localized_translation_label'))
37705                     .attr('for','localized-lang');
37706
37707                 label.append('button')
37708                     .attr('class', 'minor remove')
37709                     .on('click', function(d){
37710                         d3.event.preventDefault();
37711                         var t = {};
37712                         t[key(d.lang)] = undefined;
37713                         event.change(t);
37714                         d3.select(this.parentNode.parentNode)
37715                             .style('top','0')
37716                             .style('max-height','240px')
37717                             .transition()
37718                             .style('opacity', '0')
37719                             .style('max-height','0px')
37720                             .remove();
37721                     })
37722                     .call(iD.svg.Icon('#operation-delete'));
37723
37724                 wrap.append('input')
37725                     .attr('class', 'localized-lang')
37726                     .attr('type', 'text')
37727                     .attr('placeholder',t('translate.localized_translation_language'))
37728                     .on('blur', changeLang)
37729                     .on('change', changeLang)
37730                     .call(langcombo);
37731
37732                 wrap.append('input')
37733                     .on('blur', changeValue)
37734                     .on('change', changeValue)
37735                     .attr('type', 'text')
37736                     .attr('placeholder', t('translate.localized_translation_name'))
37737                     .attr('class', 'localized-value');
37738             });
37739
37740         innerWrap
37741             .style('margin-top', '0px')
37742             .style('max-height', '0px')
37743             .style('opacity', '0')
37744             .transition()
37745             .duration(200)
37746             .style('margin-top', '10px')
37747             .style('max-height', '240px')
37748             .style('opacity', '1')
37749             .each('end', function() {
37750                 d3.select(this)
37751                     .style('max-height', '')
37752                     .style('overflow', 'visible');
37753             });
37754
37755         wraps.exit()
37756             .transition()
37757             .duration(200)
37758             .style('max-height','0px')
37759             .style('opacity', '0')
37760             .style('top','-10px')
37761             .remove();
37762
37763         var entry = selection.selectAll('.entry');
37764
37765         entry.select('.localized-lang')
37766             .value(function(d) {
37767                 var lang = _.find(iD.data.wikipedia, function(lang) { return lang[2] === d.lang; });
37768                 return lang ? lang[1] : d.lang;
37769             });
37770
37771         entry.select('.localized-value')
37772             .value(function(d) { return d.value; });
37773     }
37774
37775     i.tags = function(tags) {
37776
37777         // Fetch translations from wikipedia
37778         if (tags.wikipedia && !wikiTitles) {
37779             wikiTitles = {};
37780             var wm = tags.wikipedia.match(/([^:]+):(.+)/);
37781             if (wm && wm[0] && wm[1]) {
37782                 wikipedia.translations(wm[1], wm[2], function(d) {
37783                     wikiTitles = d;
37784                 });
37785             }
37786         }
37787
37788         input.value(tags[field.key] || '');
37789
37790         var postfixed = [], k, m;
37791         for (k in tags) {
37792             m = k.match(/^(.*):([a-zA-Z_-]+)$/);
37793             if (m && m[1] === field.key && m[2]) {
37794                 postfixed.push({ lang: m[2], value: tags[k] });
37795             }
37796         }
37797
37798         localizedInputs.call(render, postfixed.reverse());
37799     };
37800
37801     i.focus = function() {
37802         input.node().focus();
37803     };
37804
37805     i.entity = function(_) {
37806         entity = _;
37807     };
37808
37809     return d3.rebind(i, event, 'on');
37810 };
37811 iD.ui.preset.maxspeed = function(field, context) {
37812
37813     var event = d3.dispatch('change'),
37814         entity,
37815         imperial,
37816         unitInput,
37817         combobox,
37818         input;
37819
37820     var metricValues = [20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120],
37821         imperialValues = [20, 25, 30, 35, 40, 45, 50, 55, 65, 70];
37822
37823     function maxspeed(selection) {
37824         combobox = d3.combobox();
37825         var unitCombobox = d3.combobox().data(['km/h', 'mph'].map(comboValues));
37826
37827         input = selection.selectAll('#preset-input-' + field.id)
37828             .data([0]);
37829
37830         input.enter().append('input')
37831             .attr('type', 'text')
37832             .attr('id', 'preset-input-' + field.id)
37833             .attr('placeholder', field.placeholder());
37834
37835         input
37836             .call(combobox)
37837             .on('change', change)
37838             .on('blur', change);
37839
37840         var childNodes = context.graph().childNodes(context.entity(entity.id)),
37841             loc = childNodes[~~(childNodes.length/2)].loc;
37842
37843         imperial = _.any(iD.data.imperial.features, function(f) {
37844             return _.any(f.geometry.coordinates, function(d) {
37845                 return iD.geo.pointInPolygon(loc, d[0]);
37846             });
37847         });
37848
37849         unitInput = selection.selectAll('input.maxspeed-unit')
37850             .data([0]);
37851
37852         unitInput.enter().append('input')
37853             .attr('type', 'text')
37854             .attr('class', 'maxspeed-unit');
37855
37856         unitInput
37857             .on('blur', changeUnits)
37858             .on('change', changeUnits)
37859             .call(unitCombobox);
37860
37861         function changeUnits() {
37862             imperial = unitInput.value() === 'mph';
37863             unitInput.value(imperial ? 'mph' : 'km/h');
37864             setSuggestions();
37865             change();
37866         }
37867
37868     }
37869
37870     function setSuggestions() {
37871         combobox.data((imperial ? imperialValues : metricValues).map(comboValues));
37872         unitInput.value(imperial ? 'mph' : 'km/h');
37873     }
37874
37875     function comboValues(d) {
37876         return {
37877             value: d.toString(),
37878             title: d.toString()
37879         };
37880     }
37881
37882     function change() {
37883         var tag = {},
37884             value = input.value();
37885
37886         if (!value) {
37887             tag[field.key] = undefined;
37888         } else if (isNaN(value) || !imperial) {
37889             tag[field.key] = value;
37890         } else {
37891             tag[field.key] = value + ' mph';
37892         }
37893
37894         event.change(tag);
37895     }
37896
37897     maxspeed.tags = function(tags) {
37898         var value = tags[field.key];
37899
37900         if (value && value.indexOf('mph') >= 0) {
37901             value = parseInt(value, 10);
37902             imperial = true;
37903         } else if (value) {
37904             imperial = false;
37905         }
37906
37907         setSuggestions();
37908
37909         input.value(value || '');
37910     };
37911
37912     maxspeed.focus = function() {
37913         input.node().focus();
37914     };
37915
37916     maxspeed.entity = function(_) {
37917         entity = _;
37918     };
37919
37920     return d3.rebind(maxspeed, event, 'on');
37921 };
37922 iD.ui.preset.radio = function(field) {
37923
37924     var event = d3.dispatch('change'),
37925         labels, radios, placeholder;
37926
37927     function radio(selection) {
37928         selection.classed('preset-radio', true);
37929
37930         var wrap = selection.selectAll('.preset-input-wrap')
37931             .data([0]);
37932
37933         var buttonWrap = wrap.enter().append('div')
37934             .attr('class', 'preset-input-wrap toggle-list');
37935
37936         buttonWrap.append('span')
37937             .attr('class', 'placeholder');
37938
37939         placeholder = selection.selectAll('.placeholder');
37940
37941         labels = wrap.selectAll('label')
37942             .data(field.options || field.keys);
37943
37944         var enter = labels.enter().append('label');
37945
37946         enter.append('input')
37947             .attr('type', 'radio')
37948             .attr('name', field.id)
37949             .attr('value', function(d) { return field.t('options.' + d, { 'default': d }); })
37950             .attr('checked', false);
37951
37952         enter.append('span')
37953             .text(function(d) { return field.t('options.' + d, { 'default': d }); });
37954
37955         radios = labels.selectAll('input')
37956             .on('change', change);
37957     }
37958
37959     function change() {
37960         var t = {};
37961         if (field.key) t[field.key] = undefined;
37962         radios.each(function(d) {
37963             var active = d3.select(this).property('checked');
37964             if (field.key) {
37965                 if (active) t[field.key] = d;
37966             } else {
37967                 t[d] = active ? 'yes' : undefined;
37968             }
37969         });
37970         event.change(t);
37971     }
37972
37973     radio.tags = function(tags) {
37974         function checked(d) {
37975             if (field.key) {
37976                 return tags[field.key] === d;
37977             } else {
37978                 return !!(tags[d] && tags[d] !== 'no');
37979             }
37980         }
37981
37982         labels.classed('active', checked);
37983         radios.property('checked', checked);
37984         var selection = radios.filter(function() { return this.checked; });
37985         if (selection.empty()) {
37986             placeholder.text(t('inspector.none'));
37987         } else {
37988             placeholder.text(selection.attr('value'));
37989         }
37990     };
37991
37992     radio.focus = function() {
37993         radios.node().focus();
37994     };
37995
37996     return d3.rebind(radio, event, 'on');
37997 };
37998 iD.ui.preset.restrictions = function(field, context) {
37999     var event = d3.dispatch('change'),
38000         vertexID,
38001         fromNodeID;
38002
38003     function restrictions(selection) {
38004         var wrap = selection.selectAll('.preset-input-wrap')
38005             .data([0]);
38006
38007         var enter = wrap.enter().append('div')
38008             .attr('class', 'preset-input-wrap');
38009
38010         enter.append('div')
38011             .attr('class', 'restriction-help');
38012
38013         enter.append('svg')
38014             .call(iD.svg.Surface(context))
38015             .call(iD.behavior.Hover(context));
38016
38017         var intersection = iD.geo.Intersection(context.graph(), vertexID),
38018             graph = intersection.graph,
38019             vertex = graph.entity(vertexID),
38020             surface = wrap.selectAll('svg'),
38021             filter = function () { return true; },
38022             extent = iD.geo.Extent(),
38023             projection = iD.geo.RawMercator(),
38024             lines = iD.svg.Lines(projection, context),
38025             vertices = iD.svg.Vertices(projection, context),
38026             turns = iD.svg.Turns(projection, context);
38027
38028         var d = wrap.dimensions(),
38029             c = [d[0] / 2, d[1] / 2],
38030             z = 21;
38031
38032         projection
38033             .scale(256 * Math.pow(2, z) / (2 * Math.PI));
38034
38035         var s = projection(vertex.loc);
38036
38037         projection
38038             .translate([c[0] - s[0], c[1] - s[1]])
38039             .clipExtent([[0, 0], d]);
38040
38041         surface
38042             .call(vertices, graph, [vertex], filter, extent, z)
38043             .call(lines, graph, intersection.ways, filter)
38044             .call(turns, graph, intersection.turns(fromNodeID));
38045
38046         surface
38047             .on('click.restrictions', click)
38048             .on('mouseover.restrictions', mouseover)
38049             .on('mouseout.restrictions', mouseout);
38050
38051         surface
38052             .selectAll('.selected')
38053             .classed('selected', false);
38054
38055         if (fromNodeID) {
38056             surface
38057                 .selectAll('.' + intersection.highways[fromNodeID].id)
38058                 .classed('selected', true);
38059         }
38060
38061         mouseout();
38062
38063         context.history()
38064             .on('change.restrictions', render);
38065
38066         d3.select(window)
38067             .on('resize.restrictions', render);
38068
38069         function click() {
38070             var datum = d3.event.target.__data__;
38071             if (datum instanceof iD.Entity) {
38072                 fromNodeID = intersection.adjacentNodeId(datum.id);
38073                 render();
38074             } else if (datum instanceof iD.geo.Turn) {
38075                 if (datum.restriction) {
38076                     context.perform(
38077                         iD.actions.UnrestrictTurn(datum, projection),
38078                         t('operations.restriction.annotation.delete'));
38079                 } else {
38080                     context.perform(
38081                         iD.actions.RestrictTurn(datum, projection),
38082                         t('operations.restriction.annotation.create'));
38083                 }
38084             }
38085         }
38086
38087         function mouseover() {
38088             var datum = d3.event.target.__data__;
38089             if (datum instanceof iD.geo.Turn) {
38090                 var graph = context.graph(),
38091                     presets = context.presets(),
38092                     preset;
38093
38094                 if (datum.restriction) {
38095                     preset = presets.match(graph.entity(datum.restriction), graph);
38096                 } else {
38097                     preset = presets.item('type/restriction/' +
38098                         iD.geo.inferRestriction(
38099                             graph,
38100                             datum.from,
38101                             datum.via,
38102                             datum.to,
38103                             projection));
38104                 }
38105
38106                 wrap.selectAll('.restriction-help')
38107                     .text(t('operations.restriction.help.' +
38108                         (datum.restriction ? 'toggle_off' : 'toggle_on'),
38109                         {restriction: preset.name()}));
38110             }
38111         }
38112
38113         function mouseout() {
38114             wrap.selectAll('.restriction-help')
38115                 .text(t('operations.restriction.help.' +
38116                     (fromNodeID ? 'toggle' : 'select')));
38117         }
38118
38119         function render() {
38120             if (context.hasEntity(vertexID)) {
38121                 restrictions(selection);
38122             }
38123         }
38124     }
38125
38126     restrictions.entity = function(_) {
38127         if (!vertexID || vertexID !== _.id) {
38128             fromNodeID = null;
38129             vertexID = _.id;
38130         }
38131     };
38132
38133     restrictions.tags = function() {};
38134     restrictions.focus = function() {};
38135
38136     return d3.rebind(restrictions, event, 'on');
38137 };
38138 iD.ui.preset.textarea = function(field) {
38139
38140     var event = d3.dispatch('change'),
38141         input;
38142
38143     function i(selection) {
38144         input = selection.selectAll('textarea')
38145             .data([0]);
38146
38147         input.enter().append('textarea')
38148             .attr('id', 'preset-input-' + field.id)
38149             .attr('placeholder', field.placeholder() || t('inspector.unknown'))
38150             .attr('maxlength', 255);
38151
38152         input
38153             .on('blur', change)
38154             .on('change', change);
38155     }
38156
38157     function change() {
38158         var t = {};
38159         t[field.key] = input.value() || undefined;
38160         event.change(t);
38161     }
38162
38163     i.tags = function(tags) {
38164         input.value(tags[field.key] || '');
38165     };
38166
38167     i.focus = function() {
38168         input.node().focus();
38169     };
38170
38171     return d3.rebind(i, event, 'on');
38172 };
38173 iD.ui.preset.wikipedia = function(field, context) {
38174
38175     var event = d3.dispatch('change'),
38176         wikipedia = iD.wikipedia(),
38177         link, entity, lang, title;
38178
38179     function i(selection) {
38180
38181         var langcombo = d3.combobox()
38182             .fetcher(function(value, cb) {
38183                 var v = value.toLowerCase();
38184
38185                 cb(iD.data.wikipedia.filter(function(d) {
38186                     return d[0].toLowerCase().indexOf(v) >= 0 ||
38187                         d[1].toLowerCase().indexOf(v) >= 0 ||
38188                         d[2].toLowerCase().indexOf(v) >= 0;
38189                 }).map(function(d) {
38190                     return { value: d[1] };
38191                 }));
38192             });
38193
38194         var titlecombo = d3.combobox()
38195             .fetcher(function(value, cb) {
38196
38197                 if (!value) value = context.entity(entity.id).tags.name || '';
38198                 var searchfn = value.length > 7 ? wikipedia.search : wikipedia.suggestions;
38199
38200                 searchfn(language()[2], value, function(query, data) {
38201                     cb(data.map(function(d) {
38202                         return { value: d };
38203                     }));
38204                 });
38205             });
38206
38207         lang = selection.selectAll('input.wiki-lang')
38208             .data([0]);
38209
38210         lang.enter().append('input')
38211             .attr('type', 'text')
38212             .attr('class', 'wiki-lang')
38213             .value('English');
38214
38215         lang
38216             .call(langcombo)
38217             .on('blur', changeLang)
38218             .on('change', changeLang);
38219
38220         title = selection.selectAll('input.wiki-title')
38221             .data([0]);
38222
38223         title.enter().append('input')
38224             .attr('type', 'text')
38225             .attr('class', 'wiki-title')
38226             .attr('id', 'preset-input-' + field.id);
38227
38228         title
38229             .call(titlecombo)
38230             .on('blur', change)
38231             .on('change', change);
38232
38233         link = selection.selectAll('a.wiki-link')
38234             .data([0]);
38235
38236         link.enter().append('a')
38237             .attr('class', 'wiki-link button-input-action minor')
38238             .attr('target', '_blank')
38239             .call(iD.svg.Icon('#icon-out-link', 'inline'));
38240     }
38241
38242     function language() {
38243         var value = lang.value().toLowerCase();
38244         var locale = iD.detect().locale.toLowerCase();
38245         var localeLanguage;
38246         return _.find(iD.data.wikipedia, function(d) {
38247             if (d[2] === locale) localeLanguage = d;
38248             return d[0].toLowerCase() === value ||
38249                 d[1].toLowerCase() === value ||
38250                 d[2] === value;
38251         }) || localeLanguage || ['English', 'English', 'en'];
38252     }
38253
38254     function changeLang() {
38255         lang.value(language()[1]);
38256         change();
38257     }
38258
38259     function change() {
38260         var value = title.value(),
38261             m = value.match(/https?:\/\/([-a-z]+)\.wikipedia\.org\/(?:wiki|\1-[-a-z]+)\/([^#]+)(?:#(.+))?/),
38262             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }),
38263             anchor;
38264
38265         if (l) {
38266             // Normalize title http://www.mediawiki.org/wiki/API:Query#Title_normalization
38267             value = decodeURIComponent(m[2]).replace(/_/g, ' ');
38268             if (m[3]) {
38269                 try {
38270                     // Best-effort `anchordecode:` implementation
38271                     anchor = decodeURIComponent(m[3].replace(/\.([0-9A-F]{2})/g, '%$1'));
38272                 } catch (e) {
38273                     anchor = decodeURIComponent(m[3]);
38274                 }
38275                 value += '#' + anchor.replace(/_/g, ' ');
38276             }
38277             value = value.slice(0, 1).toUpperCase() + value.slice(1);
38278             lang.value(l[1]);
38279             title.value(value);
38280         }
38281
38282         var t = {};
38283         t[field.key] = value ? language()[2] + ':' + value : undefined;
38284         event.change(t);
38285     }
38286
38287     i.tags = function(tags) {
38288         var value = tags[field.key] || '',
38289             m = value.match(/([^:]+):([^#]+)(?:#(.+))?/),
38290             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }),
38291             anchor = m && m[3];
38292
38293         // value in correct format
38294         if (l) {
38295             lang.value(l[1]);
38296             title.value(m[2] + (anchor ? ('#' + anchor) : ''));
38297             if (anchor) {
38298                 try {
38299                     // Best-effort `anchorencode:` implementation
38300                     anchor = encodeURIComponent(anchor.replace(/ /g, '_')).replace(/%/g, '.');
38301                 } catch (e) {
38302                     anchor = anchor.replace(/ /g, '_');
38303                 }
38304             }
38305             link.attr('href', 'http://' + m[1] + '.wikipedia.org/wiki/' +
38306                       m[2].replace(/ /g, '_') + (anchor ? ('#' + anchor) : ''));
38307
38308         // unrecognized value format
38309         } else {
38310             title.value(value);
38311             link.attr('href', 'http://en.wikipedia.org/wiki/Special:Search?search=' + value);
38312         }
38313     };
38314
38315     i.entity = function(_) {
38316         entity = _;
38317     };
38318
38319     i.focus = function() {
38320         title.node().focus();
38321     };
38322
38323     return d3.rebind(i, event, 'on');
38324 };
38325 iD.ui.intro.area = function(context, reveal) {
38326
38327     var event = d3.dispatch('done'),
38328         timeout;
38329
38330     var step = {
38331         title: 'intro.areas.title'
38332     };
38333
38334     step.enter = function() {
38335
38336         var playground = [-85.63552, 41.94159],
38337             corner = [-85.63565411045074, 41.9417715536927];
38338         context.map().centerZoom(playground, 19);
38339         reveal('button.add-area', t('intro.areas.add'), {tooltipClass: 'intro-areas-add'});
38340
38341         context.on('enter.intro', addArea);
38342
38343         function addArea(mode) {
38344             if (mode.id !== 'add-area') return;
38345             context.on('enter.intro', drawArea);
38346
38347             var padding = 120 * Math.pow(2, context.map().zoom() - 19);
38348             var pointBox = iD.ui.intro.pad(corner, padding, context);
38349             reveal(pointBox, t('intro.areas.corner'));
38350
38351             context.map().on('move.intro', function() {
38352                 padding = 120 * Math.pow(2, context.map().zoom() - 19);
38353                 pointBox = iD.ui.intro.pad(corner, padding, context);
38354                 reveal(pointBox, t('intro.areas.corner'), {duration: 0});
38355             });
38356         }
38357
38358         function drawArea(mode) {
38359             if (mode.id !== 'draw-area') return;
38360             context.on('enter.intro', enterSelect);
38361
38362             var padding = 150 * Math.pow(2, context.map().zoom() - 19);
38363             var pointBox = iD.ui.intro.pad(playground, padding, context);
38364             reveal(pointBox, t('intro.areas.place'));
38365
38366             context.map().on('move.intro', function() {
38367                 padding = 150 * Math.pow(2, context.map().zoom() - 19);
38368                 pointBox = iD.ui.intro.pad(playground, padding, context);
38369                 reveal(pointBox, t('intro.areas.place'), {duration: 0});
38370             });
38371         }
38372
38373         function enterSelect(mode) {
38374             if (mode.id !== 'select') return;
38375             context.map().on('move.intro', null);
38376             context.on('enter.intro', null);
38377
38378             timeout = setTimeout(function() {
38379                 reveal('.preset-search-input', t('intro.areas.search', {name: context.presets().item('leisure/playground').name()}));
38380                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38381             }, 500);
38382         }
38383
38384         function keySearch() {
38385             var first = d3.select('.preset-list-item:first-child');
38386             if (first.classed('preset-leisure-playground')) {
38387                 reveal(first.select('.preset-list-button').node(), t('intro.areas.choose'));
38388                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38389                 d3.select('.preset-search-input').on('keyup.intro', null);
38390             }
38391         }
38392
38393         function selectedPreset() {
38394             reveal('.pane', t('intro.areas.describe'));
38395             context.on('exit.intro', event.done);
38396         }
38397     };
38398
38399     step.exit = function() {
38400         window.clearTimeout(timeout);
38401         context.on('enter.intro', null);
38402         context.on('exit.intro', null);
38403         context.history().on('change.intro', null);
38404         context.map().on('move.intro', null);
38405         d3.select('.preset-search-input').on('keyup.intro', null);
38406     };
38407
38408     return d3.rebind(step, event, 'on');
38409 };
38410 iD.ui.intro.line = function(context, reveal) {
38411
38412     var event = d3.dispatch('done'),
38413         timeouts = [];
38414
38415     var step = {
38416         title: 'intro.lines.title'
38417     };
38418
38419     function timeout(f, t) {
38420         timeouts.push(window.setTimeout(f, t));
38421     }
38422
38423     step.enter = function() {
38424
38425         var centroid = [-85.62830, 41.95699];
38426         var midpoint = [-85.62975395449628, 41.95787501510204];
38427         var start = [-85.6297754121684, 41.95805253325314];
38428         var intersection = [-85.62974496187628, 41.95742515554585];
38429
38430         context.map().centerZoom(start, 18);
38431         reveal('button.add-line', t('intro.lines.add'), {tooltipClass: 'intro-lines-add'});
38432
38433         context.on('enter.intro', addLine);
38434
38435         function addLine(mode) {
38436             if (mode.id !== 'add-line') return;
38437             context.on('enter.intro', drawLine);
38438
38439             var padding = 150 * Math.pow(2, context.map().zoom() - 18);
38440             var pointBox = iD.ui.intro.pad(start, padding, context);
38441             reveal(pointBox, t('intro.lines.start'));
38442
38443             context.map().on('move.intro', function() {
38444                 padding = 150 * Math.pow(2, context.map().zoom() - 18);
38445                 pointBox = iD.ui.intro.pad(start, padding, context);
38446                 reveal(pointBox, t('intro.lines.start'), {duration: 0});
38447             });
38448         }
38449
38450         function drawLine(mode) {
38451             if (mode.id !== 'draw-line') return;
38452             context.history().on('change.intro', addIntersection);
38453             context.on('enter.intro', retry);
38454
38455             var padding = 300 * Math.pow(2, context.map().zoom() - 19);
38456             var pointBox = iD.ui.intro.pad(midpoint, padding, context);
38457             reveal(pointBox, t('intro.lines.intersect'));
38458
38459             context.map().on('move.intro', function() {
38460                 padding = 300 * Math.pow(2, context.map().zoom() - 19);
38461                 pointBox = iD.ui.intro.pad(midpoint, padding, context);
38462                 reveal(pointBox, t('intro.lines.intersect'), {duration: 0});
38463             });
38464         }
38465
38466         // ended line before creating intersection
38467         function retry(mode) {
38468             if (mode.id !== 'select') return;
38469             var pointBox = iD.ui.intro.pad(intersection, 30, context);
38470             reveal(pointBox, t('intro.lines.restart'));
38471             timeout(function() {
38472                 context.replace(iD.actions.DeleteMultiple(mode.selectedIDs()));
38473                 step.exit();
38474                 step.enter();
38475             }, 3000);
38476         }
38477
38478         function addIntersection(changes) {
38479             if ( _.any(changes.created(), function(d) {
38480                 return d.type === 'node' && context.graph().parentWays(d).length > 1;
38481             })) {
38482                 context.history().on('change.intro', null);
38483                 context.on('enter.intro', enterSelect);
38484
38485                 var padding = 900 * Math.pow(2, context.map().zoom() - 19);
38486                 var pointBox = iD.ui.intro.pad(centroid, padding, context);
38487                 reveal(pointBox, t('intro.lines.finish'));
38488
38489                 context.map().on('move.intro', function() {
38490                     padding = 900 * Math.pow(2, context.map().zoom() - 19);
38491                     pointBox = iD.ui.intro.pad(centroid, padding, context);
38492                     reveal(pointBox, t('intro.lines.finish'), {duration: 0});
38493                 });
38494             }
38495         }
38496
38497         function enterSelect(mode) {
38498             if (mode.id !== 'select') return;
38499             context.map().on('move.intro', null);
38500             context.on('enter.intro', null);
38501             d3.select('#curtain').style('pointer-events', 'all');
38502
38503             presetCategory();
38504         }
38505
38506         function presetCategory() {
38507             timeout(function() {
38508                 d3.select('#curtain').style('pointer-events', 'none');
38509                 var road = d3.select('.preset-category-road .preset-list-button');
38510                 reveal(road.node(), t('intro.lines.road'));
38511                 road.one('click.intro', roadCategory);
38512             }, 500);
38513         }
38514
38515         function roadCategory() {
38516             timeout(function() {
38517                 var grid = d3.select('.subgrid');
38518                 reveal(grid.node(), t('intro.lines.residential'));
38519                 grid.selectAll(':not(.preset-highway-residential) .preset-list-button')
38520                     .one('click.intro', retryPreset);
38521                 grid.selectAll('.preset-highway-residential .preset-list-button')
38522                     .one('click.intro', roadDetails);
38523             }, 500);
38524         }
38525
38526         // selected wrong road type
38527         function retryPreset() {
38528             timeout(function() {
38529                 var preset = d3.select('.entity-editor-pane .preset-list-button');
38530                 reveal(preset.node(), t('intro.lines.wrong_preset'));
38531                 preset.one('click.intro', presetCategory);
38532             }, 500);
38533         }
38534
38535         function roadDetails() {
38536             reveal('.pane', t('intro.lines.describe'));
38537             context.on('exit.intro', event.done);
38538         }
38539
38540     };
38541
38542     step.exit = function() {
38543         d3.select('#curtain').style('pointer-events', 'none');
38544         timeouts.forEach(window.clearTimeout);
38545         context.on('enter.intro', null);
38546         context.on('exit.intro', null);
38547         context.map().on('move.intro', null);
38548         context.history().on('change.intro', null);
38549     };
38550
38551     return d3.rebind(step, event, 'on');
38552 };
38553 iD.ui.intro.navigation = function(context, reveal) {
38554
38555     var event = d3.dispatch('done'),
38556         timeouts = [];
38557
38558     var step = {
38559         title: 'intro.navigation.title'
38560     };
38561
38562     function set(f, t) {
38563         timeouts.push(window.setTimeout(f, t));
38564     }
38565
38566     /*
38567      * Steps:
38568      * Drag map
38569      * Select poi
38570      * Show editor header
38571      * Show editor pane
38572      * Select road
38573      * Show header
38574      */
38575
38576     step.enter = function() {
38577
38578         var rect = context.surfaceRect(),
38579             map = {
38580                 left: rect.left + 10,
38581                 top: rect.top + 70,
38582                 width: rect.width - 70,
38583                 height: rect.height - 170
38584             };
38585
38586         context.map().centerZoom([-85.63591, 41.94285], 19);
38587
38588         reveal(map, t('intro.navigation.drag'));
38589
38590         context.map().on('move.intro', _.debounce(function() {
38591             context.map().on('move.intro', null);
38592             townhall();
38593             context.on('enter.intro', inspectTownHall);
38594         }, 400));
38595
38596         function townhall() {
38597             var hall = [-85.63645945147184, 41.942986488012565];
38598
38599             var point = context.projection(hall);
38600             if (point[0] < 0 || point[0] > rect.width ||
38601                 point[1] < 0 || point[1] > rect.height) {
38602                 context.map().center(hall);
38603             }
38604
38605             var box = iD.ui.intro.pointBox(hall, context);
38606             reveal(box, t('intro.navigation.select'));
38607
38608             context.map().on('move.intro', function() {
38609                 var box = iD.ui.intro.pointBox(hall, context);
38610                 reveal(box, t('intro.navigation.select'), {duration: 0});
38611             });
38612         }
38613
38614         function inspectTownHall(mode) {
38615             if (mode.id !== 'select') return;
38616             context.on('enter.intro', null);
38617             context.map().on('move.intro', null);
38618             set(function() {
38619                 reveal('.entity-editor-pane', t('intro.navigation.pane'));
38620                 context.on('exit.intro', event.done);
38621             }, 700);
38622         }
38623
38624     };
38625
38626     step.exit = function() {
38627         context.map().on('move.intro', null);
38628         context.on('enter.intro', null);
38629         context.on('exit.intro', null);
38630         timeouts.forEach(window.clearTimeout);
38631     };
38632
38633     return d3.rebind(step, event, 'on');
38634 };
38635 iD.ui.intro.point = function(context, reveal) {
38636
38637     var event = d3.dispatch('done'),
38638         timeouts = [];
38639
38640     var step = {
38641         title: 'intro.points.title'
38642     };
38643
38644     function setTimeout(f, t) {
38645         timeouts.push(window.setTimeout(f, t));
38646     }
38647
38648     step.enter = function() {
38649
38650         context.map().centerZoom([-85.63279, 41.94394], 19);
38651         reveal('button.add-point', t('intro.points.add'), {tooltipClass: 'intro-points-add'});
38652
38653         var corner = [-85.632481,41.944094];
38654
38655         context.on('enter.intro', addPoint);
38656
38657         function addPoint(mode) {
38658             if (mode.id !== 'add-point') return;
38659             context.on('enter.intro', enterSelect);
38660
38661             var pointBox = iD.ui.intro.pad(corner, 150, context);
38662             reveal(pointBox, t('intro.points.place'));
38663
38664             context.map().on('move.intro', function() {
38665                 pointBox = iD.ui.intro.pad(corner, 150, context);
38666                 reveal(pointBox, t('intro.points.place'), {duration: 0});
38667             });
38668
38669         }
38670
38671         function enterSelect(mode) {
38672             if (mode.id !== 'select') return;
38673             context.map().on('move.intro', null);
38674             context.on('enter.intro', null);
38675
38676             setTimeout(function() {
38677                 reveal('.preset-search-input', t('intro.points.search', {name: context.presets().item('amenity/cafe').name()}));
38678                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38679             }, 500);
38680         }
38681
38682         function keySearch() {
38683             var first = d3.select('.preset-list-item:first-child');
38684             if (first.classed('preset-amenity-cafe')) {
38685                 reveal(first.select('.preset-list-button').node(), t('intro.points.choose'));
38686                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38687
38688                 d3.select('.preset-search-input').on('keydown.intro', function() {
38689                     // Prevent search from updating and changing the grid
38690                     d3.event.stopPropagation();
38691                     d3.event.preventDefault();
38692                 }, true).on('keyup.intro', null);
38693             }
38694         }
38695
38696         function selectedPreset() {
38697             setTimeout(function() {
38698                 reveal('.entity-editor-pane', t('intro.points.describe'), {tooltipClass: 'intro-points-describe'});
38699                 context.history().on('change.intro', closeEditor);
38700                 context.on('exit.intro', selectPoint);
38701             }, 400);
38702         }
38703
38704         function closeEditor() {
38705             d3.select('.preset-search-input').on('keydown.intro', null);
38706             context.history().on('change.intro', null);
38707             reveal('.entity-editor-pane', t('intro.points.close'));
38708         }
38709
38710         function selectPoint() {
38711             context.on('exit.intro', null);
38712             context.history().on('change.intro', null);
38713             context.on('enter.intro', enterReselect);
38714
38715             var pointBox = iD.ui.intro.pad(corner, 150, context);
38716             reveal(pointBox, t('intro.points.reselect'));
38717
38718             context.map().on('move.intro', function() {
38719                 pointBox = iD.ui.intro.pad(corner, 150, context);
38720                 reveal(pointBox, t('intro.points.reselect'), {duration: 0});
38721             });
38722         }
38723
38724         function enterReselect(mode) {
38725             if (mode.id !== 'select') return;
38726             context.map().on('move.intro', null);
38727             context.on('enter.intro', null);
38728
38729             setTimeout(function() {
38730                 reveal('.entity-editor-pane', t('intro.points.fixname'));
38731                 context.on('exit.intro', deletePoint);
38732             }, 500);
38733         }
38734
38735         function deletePoint() {
38736             context.on('exit.intro', null);
38737             context.on('enter.intro', enterDelete);
38738
38739             var pointBox = iD.ui.intro.pad(corner, 150, context);
38740             reveal(pointBox, t('intro.points.reselect_delete'));
38741
38742             context.map().on('move.intro', function() {
38743                 pointBox = iD.ui.intro.pad(corner, 150, context);
38744                 reveal(pointBox, t('intro.points.reselect_delete'), {duration: 0});
38745             });
38746         }
38747
38748         function enterDelete(mode) {
38749             if (mode.id !== 'select') return;
38750             context.map().on('move.intro', null);
38751             context.on('enter.intro', null);
38752             context.on('exit.intro', deletePoint);
38753             context.map().on('move.intro', deletePoint);
38754             context.history().on('change.intro', deleted);
38755
38756             setTimeout(function() {
38757                 var node = d3.select('.radial-menu-item-delete').node();
38758                 var pointBox = iD.ui.intro.pad(node.getBoundingClientRect(), 50, context);
38759                 reveal(pointBox, t('intro.points.delete'));
38760             }, 300);
38761         }
38762
38763         function deleted(changed) {
38764             if (changed.deleted().length) event.done();
38765         }
38766
38767     };
38768
38769     step.exit = function() {
38770         timeouts.forEach(window.clearTimeout);
38771         context.on('exit.intro', null);
38772         context.on('enter.intro', null);
38773         context.map().on('move.intro', null);
38774         context.history().on('change.intro', null);
38775         d3.select('.preset-search-input').on('keyup.intro', null).on('keydown.intro', null);
38776     };
38777
38778     return d3.rebind(step, event, 'on');
38779 };
38780 iD.ui.intro.startEditing = function(context, reveal) {
38781
38782     var event = d3.dispatch('done', 'startEditing'),
38783         modal,
38784         timeouts = [];
38785
38786     var step = {
38787         title: 'intro.startediting.title'
38788     };
38789
38790     function timeout(f, t) {
38791         timeouts.push(window.setTimeout(f, t));
38792     }
38793
38794     step.enter = function() {
38795
38796         reveal('.map-control.help-control', t('intro.startediting.help'));
38797
38798         timeout(function() {
38799             reveal('#bar button.save', t('intro.startediting.save'));
38800         }, 3500);
38801
38802         timeout(function() {
38803             reveal('#surface');
38804         }, 7000);
38805
38806         timeout(function() {
38807             modal = iD.ui.modal(context.container());
38808
38809             modal.select('.modal')
38810                 .attr('class', 'modal-splash modal col6');
38811
38812             modal.selectAll('.close').remove();
38813
38814             var startbutton = modal.select('.content')
38815                 .attr('class', 'fillL')
38816                     .append('button')
38817                         .attr('class', 'modal-section huge-modal-button')
38818                         .on('click', function() {
38819                                 modal.remove();
38820                         });
38821
38822                 startbutton.append('div')
38823                     .attr('class','illustration');
38824                 startbutton.append('h2')
38825                     .text(t('intro.startediting.start'));
38826
38827             event.startEditing();
38828
38829         }, 7500);
38830     };
38831
38832     step.exit = function() {
38833         if (modal) modal.remove();
38834         timeouts.forEach(window.clearTimeout);
38835     };
38836
38837     return d3.rebind(step, event, 'on');
38838 };
38839 iD.presets = function() {
38840
38841     // an iD.presets.Collection with methods for
38842     // loading new data and returning defaults
38843
38844     var all = iD.presets.Collection([]),
38845         defaults = { area: all, line: all, point: all, vertex: all, relation: all },
38846         fields = {},
38847         universal = [],
38848         recent = iD.presets.Collection([]);
38849
38850     // Index of presets by (geometry, tag key).
38851     var index = {
38852         point: {},
38853         vertex: {},
38854         line: {},
38855         area: {},
38856         relation: {}
38857     };
38858
38859     all.match = function(entity, resolver) {
38860         var geometry = entity.geometry(resolver),
38861             geometryMatches = index[geometry],
38862             best = -1,
38863             match;
38864
38865         for (var k in entity.tags) {
38866             var keyMatches = geometryMatches[k];
38867             if (!keyMatches) continue;
38868
38869             for (var i = 0; i < keyMatches.length; i++) {
38870                 var score = keyMatches[i].matchScore(entity);
38871                 if (score > best) {
38872                     best = score;
38873                     match = keyMatches[i];
38874                 }
38875             }
38876         }
38877
38878         return match || all.item(geometry);
38879     };
38880
38881     // Because of the open nature of tagging, iD will never have a complete
38882     // list of tags used in OSM, so we want it to have logic like "assume
38883     // that a closed way with an amenity tag is an area, unless the amenity
38884     // is one of these specific types". This function computes a structure
38885     // that allows testing of such conditions, based on the presets designated
38886     // as as supporting (or not supporting) the area geometry.
38887     //
38888     // The returned object L is a whitelist/blacklist of tags. A closed way
38889     // with a tag (k, v) is considered to be an area if `k in L && !(v in L[k])`
38890     // (see `iD.Way#isArea()`). In other words, the keys of L form the whitelist,
38891     // and the subkeys form the blacklist.
38892     all.areaKeys = function() {
38893         var areaKeys = {},
38894             ignore = ['barrier', 'highway', 'footway', 'railway', 'type'],
38895             presets = _.reject(all.collection, 'suggestion');
38896
38897         // whitelist
38898         presets.forEach(function(d) {
38899             for (var key in d.tags) break;
38900             if (!key) return;
38901             if (ignore.indexOf(key) !== -1) return;
38902
38903             if (d.geometry.indexOf('area') !== -1) {
38904                 areaKeys[key] = areaKeys[key] || {};
38905             }
38906         });
38907
38908         // blacklist
38909         presets.forEach(function(d) {
38910             for (var key in d.tags) break;
38911             if (!key) return;
38912             if (ignore.indexOf(key) !== -1) return;
38913
38914             var value = d.tags[key];
38915             if (d.geometry.indexOf('area') === -1 && key in areaKeys && value !== '*') {
38916                 areaKeys[key][value] = true;
38917             }
38918         });
38919
38920         return areaKeys;
38921     };
38922
38923     all.load = function(d) {
38924
38925         if (d.fields) {
38926             _.forEach(d.fields, function(d, id) {
38927                 fields[id] = iD.presets.Field(id, d);
38928                 if (d.universal) universal.push(fields[id]);
38929             });
38930         }
38931
38932         if (d.presets) {
38933             _.forEach(d.presets, function(d, id) {
38934                 all.collection.push(iD.presets.Preset(id, d, fields));
38935             });
38936         }
38937
38938         if (d.categories) {
38939             _.forEach(d.categories, function(d, id) {
38940                 all.collection.push(iD.presets.Category(id, d, all));
38941             });
38942         }
38943
38944         if (d.defaults) {
38945             var getItem = _.bind(all.item, all);
38946             defaults = {
38947                 area: iD.presets.Collection(d.defaults.area.map(getItem)),
38948                 line: iD.presets.Collection(d.defaults.line.map(getItem)),
38949                 point: iD.presets.Collection(d.defaults.point.map(getItem)),
38950                 vertex: iD.presets.Collection(d.defaults.vertex.map(getItem)),
38951                 relation: iD.presets.Collection(d.defaults.relation.map(getItem))
38952             };
38953         }
38954
38955         for (var i = 0; i < all.collection.length; i++) {
38956             var preset = all.collection[i],
38957                 geometry = preset.geometry;
38958
38959             for (var j = 0; j < geometry.length; j++) {
38960                 var g = index[geometry[j]];
38961                 for (var k in preset.tags) {
38962                     (g[k] = g[k] || []).push(preset);
38963                 }
38964             }
38965         }
38966
38967         return all;
38968     };
38969
38970     all.field = function(id) {
38971         return fields[id];
38972     };
38973
38974     all.universal = function() {
38975         return universal;
38976     };
38977
38978     all.defaults = function(geometry, n) {
38979         var rec = recent.matchGeometry(geometry).collection.slice(0, 4),
38980             def = _.uniq(rec.concat(defaults[geometry].collection)).slice(0, n - 1);
38981         return iD.presets.Collection(_.unique(rec.concat(def).concat(all.item(geometry))));
38982     };
38983
38984     all.choose = function(preset) {
38985         if (!preset.isFallback()) {
38986             recent = iD.presets.Collection(_.unique([preset].concat(recent.collection)));
38987         }
38988         return all;
38989     };
38990
38991     return all;
38992 };
38993 iD.presets.Category = function(id, category, all) {
38994     category = _.clone(category);
38995
38996     category.id = id;
38997
38998     category.members = iD.presets.Collection(category.members.map(function(id) {
38999         return all.item(id);
39000     }));
39001
39002     category.matchGeometry = function(geometry) {
39003         return category.geometry.indexOf(geometry) >= 0;
39004     };
39005
39006     category.matchScore = function() { return -1; };
39007
39008     category.name = function() {
39009         return t('presets.categories.' + id + '.name', {'default': id});
39010     };
39011
39012     category.terms = function() {
39013         return [];
39014     };
39015
39016     return category;
39017 };
39018 iD.presets.Collection = function(collection) {
39019
39020     var maxSearchResults = 50,
39021         maxSuggestionResults = 10;
39022
39023     var presets = {
39024
39025         collection: collection,
39026
39027         item: function(id) {
39028             return _.find(collection, function(d) {
39029                 return d.id === id;
39030             });
39031         },
39032
39033         matchGeometry: function(geometry) {
39034             return iD.presets.Collection(collection.filter(function(d) {
39035                 return d.matchGeometry(geometry);
39036             }));
39037         },
39038
39039         search: function(value, geometry) {
39040             if (!value) return this;
39041
39042             value = value.toLowerCase();
39043
39044             var searchable = _.filter(collection, function(a) {
39045                     return a.searchable !== false && a.suggestion !== true;
39046                 }),
39047                 suggestions = _.filter(collection, function(a) {
39048                     return a.suggestion === true;
39049                 });
39050
39051             function leading(a) {
39052                 var index = a.indexOf(value);
39053                 return index === 0 || a[index - 1] === ' ';
39054             }
39055
39056             // matches value to preset.name
39057             var leading_name = _.filter(searchable, function(a) {
39058                     return leading(a.name().toLowerCase());
39059                 }).sort(function(a, b) {
39060                     var i = a.name().toLowerCase().indexOf(value) - b.name().toLowerCase().indexOf(value);
39061                     if (i === 0) return a.name().length - b.name().length;
39062                     else return i;
39063                 });
39064
39065             // matches value to preset.terms values
39066             var leading_terms = _.filter(searchable, function(a) {
39067                     return _.any(a.terms() || [], leading);
39068                 });
39069
39070             // matches value to preset.tags values
39071             var leading_tag_values = _.filter(searchable, function(a) {
39072                     return _.any(_.without(_.values(a.tags || {}), '*'), leading);
39073                 });
39074
39075
39076             // finds close matches to value in preset.name
39077             var levenstein_name = searchable.map(function(a) {
39078                     return {
39079                         preset: a,
39080                         dist: iD.util.editDistance(value, a.name().toLowerCase())
39081                     };
39082                 }).filter(function(a) {
39083                     return a.dist + Math.min(value.length - a.preset.name().length, 0) < 3;
39084                 }).sort(function(a, b) {
39085                     return a.dist - b.dist;
39086                 }).map(function(a) {
39087                     return a.preset;
39088                 });
39089
39090             // finds close matches to value in preset.terms
39091             var leventstein_terms = _.filter(searchable, function(a) {
39092                     return _.any(a.terms() || [], function(b) {
39093                         return iD.util.editDistance(value, b) + Math.min(value.length - b.length, 0) < 3;
39094                     });
39095                 });
39096
39097             function suggestionName(name) {
39098                 var nameArray = name.split(' - ');
39099                 if (nameArray.length > 1) {
39100                     name = nameArray.slice(0, nameArray.length-1).join(' - ');
39101                 }
39102                 return name.toLowerCase();
39103             }
39104
39105             var leading_suggestions = _.filter(suggestions, function(a) {
39106                     return leading(suggestionName(a.name()));
39107                 }).sort(function(a, b) {
39108                     a = suggestionName(a.name());
39109                     b = suggestionName(b.name());
39110                     var i = a.indexOf(value) - b.indexOf(value);
39111                     if (i === 0) return a.length - b.length;
39112                     else return i;
39113                 });
39114
39115             var leven_suggestions = suggestions.map(function(a) {
39116                     return {
39117                         preset: a,
39118                         dist: iD.util.editDistance(value, suggestionName(a.name()))
39119                     };
39120                 }).filter(function(a) {
39121                     return a.dist + Math.min(value.length - suggestionName(a.preset.name()).length, 0) < 1;
39122                 }).sort(function(a, b) {
39123                     return a.dist - b.dist;
39124                 }).map(function(a) {
39125                     return a.preset;
39126                 });
39127
39128             var other = presets.item(geometry);
39129
39130             var results = leading_name.concat(
39131                             leading_terms,
39132                             leading_tag_values,
39133                             leading_suggestions.slice(0, maxSuggestionResults+5),
39134                             levenstein_name,
39135                             leventstein_terms,
39136                             leven_suggestions.slice(0, maxSuggestionResults)
39137                         ).slice(0, maxSearchResults-1);
39138
39139             return iD.presets.Collection(_.unique(
39140                     results.concat(other)
39141                 ));
39142         }
39143     };
39144
39145     return presets;
39146 };
39147 iD.presets.Field = function(id, field) {
39148     field = _.clone(field);
39149
39150     field.id = id;
39151
39152     field.matchGeometry = function(geometry) {
39153         return !field.geometry || field.geometry === geometry;
39154     };
39155
39156     field.t = function(scope, options) {
39157         return t('presets.fields.' + id + '.' + scope, options);
39158     };
39159
39160     field.label = function() {
39161         return field.t('label', {'default': id});
39162     };
39163
39164     var placeholder = field.placeholder;
39165     field.placeholder = function() {
39166         return field.t('placeholder', {'default': placeholder});
39167     };
39168
39169     return field;
39170 };
39171 iD.presets.Preset = function(id, preset, fields) {
39172     preset = _.clone(preset);
39173
39174     preset.id = id;
39175     preset.fields = (preset.fields || []).map(getFields);
39176     preset.geometry = (preset.geometry || []);
39177
39178     function getFields(f) {
39179         return fields[f];
39180     }
39181
39182     preset.matchGeometry = function(geometry) {
39183         return preset.geometry.indexOf(geometry) >= 0;
39184     };
39185
39186     var matchScore = preset.matchScore || 1;
39187     preset.matchScore = function(entity) {
39188         var tags = preset.tags,
39189             score = 0;
39190
39191         for (var t in tags) {
39192             if (entity.tags[t] === tags[t]) {
39193                 score += matchScore;
39194             } else if (tags[t] === '*' && t in entity.tags) {
39195                 score += matchScore / 2;
39196             } else {
39197                 return -1;
39198             }
39199         }
39200
39201         return score;
39202     };
39203
39204     preset.t = function(scope, options) {
39205         return t('presets.presets.' + id + '.' + scope, options);
39206     };
39207
39208     var name = preset.name;
39209     preset.name = function() {
39210         if (preset.suggestion) {
39211             id = id.split('/');
39212             id = id[0] + '/' + id[1];
39213             return name + ' - ' + t('presets.presets.' + id + '.name');
39214         }
39215         return preset.t('name', {'default': name});
39216     };
39217
39218     preset.terms = function() {
39219         return preset.t('terms', {'default': ''}).toLowerCase().trim().split(/\s*,+\s*/);
39220     };
39221
39222     preset.isFallback = function() {
39223         return Object.keys(preset.tags).length === 0;
39224     };
39225
39226     preset.reference = function(geometry) {
39227         var key = Object.keys(preset.tags)[0],
39228             value = preset.tags[key];
39229
39230         if (geometry === 'relation' && key === 'type') {
39231             return { rtype: value };
39232         } else if (value === '*') {
39233             return { key: key };
39234         } else {
39235             return { key: key, value: value };
39236         }
39237     };
39238
39239     var removeTags = preset.removeTags || preset.tags;
39240     preset.removeTags = function(tags, geometry) {
39241         tags = _.omit(tags, _.keys(removeTags));
39242
39243         for (var f in preset.fields) {
39244             var field = preset.fields[f];
39245             if (field.matchGeometry(geometry) && field.default === tags[field.key]) {
39246                 delete tags[field.key];
39247             }
39248         }
39249
39250         delete tags.area;
39251         return tags;
39252     };
39253
39254     var applyTags = preset.addTags || preset.tags;
39255     preset.applyTags = function(tags, geometry) {
39256         var k;
39257
39258         tags = _.clone(tags);
39259
39260         for (k in applyTags) {
39261             if (applyTags[k] === '*') {
39262                 tags[k] = 'yes';
39263             } else {
39264                 tags[k] = applyTags[k];
39265             }
39266         }
39267
39268         // Add area=yes if necessary.
39269         // This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
39270         // 1. chosen preset could be either an area or a line (`barrier=city_wall`)
39271         // 2. chosen preset doesn't have a key in areaKeys (`railway=station`)
39272         if (geometry === 'area') {
39273             var needsAreaTag = true;
39274             if (preset.geometry.indexOf('line') === -1) {
39275                 for (k in applyTags) {
39276                     if (k in iD.areaKeys) {
39277                         needsAreaTag = false;
39278                         break;
39279                     }
39280                 }
39281             }
39282             if (needsAreaTag) {
39283                 tags.area = 'yes';
39284             }
39285         }
39286
39287         for (var f in preset.fields) {
39288             var field = preset.fields[f];
39289             if (field.matchGeometry(geometry) && field.key && !tags[field.key] && field.default) {
39290                 tags[field.key] = field.default;
39291             }
39292         }
39293
39294         return tags;
39295     };
39296
39297     return preset;
39298 };
39299 iD.validations = {};
39300 iD.validations.DeprecatedTag = function() {
39301
39302     var validation = function(changes) {
39303         var warnings = [];
39304         for (var i = 0; i < changes.created.length; i++) {
39305             var change = changes.created[i],
39306                 deprecatedTags = change.deprecatedTags();
39307
39308             if (!_.isEmpty(deprecatedTags)) {
39309                 var tags = iD.util.tagText({ tags: deprecatedTags });
39310                 warnings.push({
39311                     id: 'deprecated_tags',
39312                     message: t('validations.deprecated_tags', { tags: tags }),
39313                     entity: change
39314                 });
39315             }
39316         }
39317         return warnings;
39318     };
39319
39320     return validation;
39321 };
39322 iD.validations.ManyDeletions = function() {
39323     var threshold = 100;
39324
39325     var validation = function(changes) {
39326         var warnings = [];
39327         if (changes.deleted.length > threshold) {
39328             warnings.push({
39329                 id: 'many_deletions',
39330                 message: t('validations.many_deletions', { n: changes.deleted.length })
39331             });
39332         }
39333         return warnings;
39334     };
39335
39336     return validation;
39337 };
39338 iD.validations.MissingTag = function() {
39339
39340     var validation = function(changes, graph) {
39341         var warnings = [];
39342         for (var i = 0; i < changes.created.length; i++) {
39343             var change = changes.created[i],
39344                 geometry = change.geometry(graph);
39345
39346             if ((geometry === 'point' || geometry === 'line' || geometry === 'area') && !change.isUsed(graph)) {
39347                 warnings.push({
39348                     id: 'missing_tag',
39349                     message: t('validations.untagged_' + geometry),
39350                     tooltip: t('validations.untagged_' + geometry + '_tooltip'),
39351                     entity: change
39352                 });
39353             }
39354         }
39355         return warnings;
39356     };
39357
39358     return validation;
39359 };
39360 iD.validations.TagSuggestsArea = function() {
39361
39362     // https://github.com/openstreetmap/josm/blob/mirror/src/org/
39363     // openstreetmap/josm/data/validation/tests/UnclosedWays.java#L80
39364     function tagSuggestsArea(tags) {
39365         if (_.isEmpty(tags)) return false;
39366
39367         var presence = ['landuse', 'amenities', 'tourism', 'shop'];
39368         for (var i = 0; i < presence.length; i++) {
39369             if (tags[presence[i]] !== undefined) {
39370                 return presence[i] + '=' + tags[presence[i]];
39371             }
39372         }
39373
39374         if (tags.building && tags.building === 'yes') return 'building=yes';
39375     }
39376
39377     var validation = function(changes, graph) {
39378         var warnings = [];
39379         for (var i = 0; i < changes.created.length; i++) {
39380             var change = changes.created[i],
39381                 geometry = change.geometry(graph),
39382                 suggestion = (geometry === 'line' ? tagSuggestsArea(change.tags) : undefined);
39383
39384             if (suggestion) {
39385                 warnings.push({
39386                     id: 'tag_suggests_area',
39387                     message: t('validations.tag_suggests_area', { tag: suggestion }),
39388                     entity: change
39389                 });
39390             }
39391         }
39392         return warnings;
39393     };
39394
39395     return validation;
39396 };
39397 })();
39398 window.locale = { _current: 'en' };
39399
39400 locale.current = function(_) {
39401     if (!arguments.length) return locale._current;
39402     if (locale[_] !== undefined) locale._current = _;
39403     else if (locale[_.split('-')[0]]) locale._current = _.split('-')[0];
39404     return locale;
39405 };
39406
39407 function t(s, o, loc) {
39408     loc = loc || locale._current;
39409
39410     var path = s.split(".").reverse(),
39411         rep = locale[loc];
39412
39413     while (rep !== undefined && path.length) rep = rep[path.pop()];
39414
39415     if (rep !== undefined) {
39416         if (o) for (var k in o) rep = rep.replace('{' + k + '}', o[k]);
39417         return rep;
39418     }
39419
39420     if (loc !== 'en') {
39421         return t(s, o, 'en');
39422     }
39423
39424     if (o && 'default' in o) {
39425         return o['default'];
39426     }
39427
39428     var missing = 'Missing ' + loc + ' translation: ' + s;
39429     if (typeof console !== "undefined") console.error(missing);
39430
39431     return missing;
39432 }
39433 iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185964961":{"id":"n185964961","loc":[-85.6406588,41.942601],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964962":{"id":"n185964962","loc":[-85.6394548,41.94261],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185970607":{"id":"n185970607","loc":[-85.641094,41.94006],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970614":{"id":"n185970614","loc":[-85.641825,41.941316],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970616":{"id":"n185970616","loc":[-85.641838,41.941556],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185973650":{"id":"n185973650","loc":[-85.639918,41.940064],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973660":{"id":"n185973660","loc":[-85.640645,41.941339],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973659":{"id":"n185973659","loc":[-85.6406115,41.9400658],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185974479":{"id":"n185974479","loc":[-85.639402,41.941344],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185974481":{"id":"n185974481","loc":[-85.643071,41.941288],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185976259":{"id":"n185976259","loc":[-85.642213,41.940043],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976261":{"id":"n185976261","loc":[-85.643056,41.94001],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185964959":{"id":"n185964959","loc":[-85.6431031,41.9425754],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185964960":{"id":"n185964960","loc":[-85.6418749,41.9425864],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185981481":{"id":"n185981481","loc":[-85.6386827,41.9400828],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981482":{"id":"n185981482","loc":[-85.6393664,41.9400854],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n2138493844":{"id":"n2138493844","loc":[-85.6427969,41.940522],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493845":{"id":"n2138493845","loc":[-85.6425891,41.9405228],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493846":{"id":"n2138493846","loc":[-85.6425868,41.9402875],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493847":{"id":"n2138493847","loc":[-85.6427969,41.9402858],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493848":{"id":"n2138493848","loc":[-85.6425708,41.9405234],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493849":{"id":"n2138493849","loc":[-85.642568,41.9402855],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493850":{"id":"n2138493850","loc":[-85.6423157,41.9402886],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493851":{"id":"n2138493851","loc":[-85.6423212,41.9404362],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493852":{"id":"n2138493852","loc":[-85.6422923,41.9404578],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493853":{"id":"n2138493853","loc":[-85.6422868,41.9404834],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493854":{"id":"n2138493854","loc":[-85.6423226,41.9405091],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493855":{"id":"n2138493855","loc":[-85.6423847,41.9405111],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493856":{"id":"n2138493856","loc":[-85.6424081,41.9405265],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2140155811":{"id":"n2140155811","loc":[-85.6419547,41.9410956],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155814":{"id":"n2140155814","loc":[-85.6427577,41.9410884],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155816":{"id":"n2140155816","loc":[-85.6427545,41.9410052],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155818":{"id":"n2140155818","loc":[-85.6428057,41.9410028],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155821":{"id":"n2140155821","loc":[-85.6427993,41.9407339],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155823":{"id":"n2140155823","loc":[-85.6427385,41.9407339],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155825":{"id":"n2140155825","loc":[-85.6427417,41.9406435],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155827":{"id":"n2140155827","loc":[-85.6419515,41.9406482],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155828":{"id":"n2140155828","loc":[-85.6429368,41.9412407],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155829":{"id":"n2140155829","loc":[-85.6417756,41.9412526],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155830":{"id":"n2140155830","loc":[-85.641766,41.9405983],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155831":{"id":"n2140155831","loc":[-85.6419803,41.9405983],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155832":{"id":"n2140155832","loc":[-85.6419611,41.9401366],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155833":{"id":"n2140155833","loc":[-85.6429336,41.94012],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155834":{"id":"n2140155834","loc":[-85.6430697,41.9411732],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155835":{"id":"n2140155835","loc":[-85.6428411,41.9409974],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155837":{"id":"n2140155837","loc":[-85.6428388,41.9407211],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155839":{"id":"n2140155839","loc":[-85.6430624,41.9405521],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155840":{"id":"n2140155840","loc":[-85.6427323,41.9412396],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155842":{"id":"n2140155842","loc":[-85.6418147,41.9412457],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155844":{"id":"n2140155844","loc":[-85.641813,41.9411319],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155845":{"id":"n2140155845","loc":[-85.6418394,41.9411111],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155847":{"id":"n2140155847","loc":[-85.6418838,41.9410977],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155849":{"id":"n2140155849","loc":[-85.6427324,41.9410921],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155851":{"id":"n2140155851","loc":[-85.6427798,41.9412945],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155852":{"id":"n2140155852","loc":[-85.6427701,41.9411777],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155854":{"id":"n2140155854","loc":[-85.6427323,41.9411572],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155856":{"id":"n2140155856","loc":[-85.6418478,41.9411666],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2165942818":{"id":"n2165942818","loc":[-85.6437533,41.9415029],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2165942819":{"id":"n2165942819","loc":[-85.6437623,41.9421195],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2168510551":{"id":"n2168510551","loc":[-85.6423795,41.9422615],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510552":{"id":"n2168510552","loc":[-85.6423744,41.9419439],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510553":{"id":"n2168510553","loc":[-85.642518,41.9419427],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510554":{"id":"n2168510554","loc":[-85.6425186,41.9419801],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510555":{"id":"n2168510555","loc":[-85.6428314,41.9419773],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510556":{"id":"n2168510556","loc":[-85.6428368,41.9423116],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510557":{"id":"n2168510557","loc":[-85.6424947,41.9423146],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510558":{"id":"n2168510558","loc":[-85.6424938,41.9422605],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2189046007":{"id":"n2189046007","loc":[-85.6410866,41.9424327],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046009":{"id":"n2189046009","loc":[-85.6410805,41.9420061],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046011":{"id":"n2189046011","loc":[-85.6412443,41.9420048],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046012":{"id":"n2189046012","loc":[-85.6412505,41.9424314],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046014":{"id":"n2189046014","loc":[-85.6413311,41.942968],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046016":{"id":"n2189046016","loc":[-85.6413281,41.942713],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046018":{"id":"n2189046018","loc":[-85.641521,41.9427117],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046021":{"id":"n2189046021","loc":[-85.6415234,41.9429236],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046022":{"id":"n2189046022","loc":[-85.6415045,41.9429238],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046025":{"id":"n2189046025","loc":[-85.641505,41.9429668],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046053":{"id":"n2189046053","loc":[-85.6385988,41.942412],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046054":{"id":"n2189046054","loc":[-85.6385985,41.9423311],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046055":{"id":"n2189046055","loc":[-85.6387617,41.9423308],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046056":{"id":"n2189046056","loc":[-85.6387616,41.9423026],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046058":{"id":"n2189046058","loc":[-85.6388215,41.9423025],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046059":{"id":"n2189046059","loc":[-85.6388219,41.9424115],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046060":{"id":"n2189046060","loc":[-85.6391096,41.9424486],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046061":{"id":"n2189046061","loc":[-85.6391105,41.9423673],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046063":{"id":"n2189046063","loc":[-85.6392911,41.9423684],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046065":{"id":"n2189046065","loc":[-85.6392903,41.9424497],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046067":{"id":"n2189046067","loc":[-85.6397927,41.9423876],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046069":{"id":"n2189046069","loc":[-85.6397897,41.9422981],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046070":{"id":"n2189046070","loc":[-85.6399702,41.9422947],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046072":{"id":"n2189046072","loc":[-85.6399732,41.9423843],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046074":{"id":"n2189046074","loc":[-85.6396331,41.9430227],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046075":{"id":"n2189046075","loc":[-85.6398673,41.9430189],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046077":{"id":"n2189046077","loc":[-85.6398656,41.9429637],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046079":{"id":"n2189046079","loc":[-85.6398885,41.9429633],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046082":{"id":"n2189046082","loc":[-85.6398832,41.942779],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046083":{"id":"n2189046083","loc":[-85.6398513,41.9427796],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046085":{"id":"n2189046085","loc":[-85.6398502,41.9427401],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046087":{"id":"n2189046087","loc":[-85.6397889,41.9427411],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046089":{"id":"n2189046089","loc":[-85.6397892,41.942753],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046090":{"id":"n2189046090","loc":[-85.6396983,41.9427544],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046092":{"id":"n2189046092","loc":[-85.6396993,41.9427882],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046094":{"id":"n2189046094","loc":[-85.6396746,41.9427886],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046096":{"id":"n2189046096","loc":[-85.6396758,41.9428296],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046097":{"id":"n2189046097","loc":[-85.6397007,41.9428292],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046099":{"id":"n2189046099","loc":[-85.6397018,41.9428686],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046103":{"id":"n2189046103","loc":[-85.6396289,41.9428697],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046112":{"id":"n2189046112","loc":[-85.6435683,41.9429457],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046113":{"id":"n2189046113","loc":[-85.643568,41.9427766],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046115":{"id":"n2189046115","loc":[-85.6434011,41.9427767],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046116":{"id":"n2189046116","loc":[-85.6434012,41.9428631],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046117":{"id":"n2189046117","loc":[-85.643448,41.9428631],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046118":{"id":"n2189046118","loc":[-85.6434481,41.9429457],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046119":{"id":"n2189046119","loc":[-85.6428363,41.9429809],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046120":{"id":"n2189046120","loc":[-85.6429171,41.9429791],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046121":{"id":"n2189046121","loc":[-85.642914,41.9429041],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046122":{"id":"n2189046122","loc":[-85.6429385,41.9429035],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046123":{"id":"n2189046123","loc":[-85.6429348,41.9428126],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046124":{"id":"n2189046124","loc":[-85.6427746,41.9428163],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046125":{"id":"n2189046125","loc":[-85.6427783,41.942906],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046126":{"id":"n2189046126","loc":[-85.6428332,41.9429047],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046127":{"id":"n2189046127","loc":[-85.6423018,41.9428859],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046128":{"id":"n2189046128","loc":[-85.6422987,41.9427208],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046130":{"id":"n2189046130","loc":[-85.6424218,41.9427195],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046131":{"id":"n2189046131","loc":[-85.6424246,41.9428684],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046132":{"id":"n2189046132","loc":[-85.6423845,41.9428689],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046133":{"id":"n2189046133","loc":[-85.6423848,41.942885],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046134":{"id":"n2189046134","loc":[-85.641533,41.9429392],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046135":{"id":"n2189046135","loc":[-85.6416096,41.9428768],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046137":{"id":"n2189046137","loc":[-85.6416763,41.9429221],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046138":{"id":"n2189046138","loc":[-85.6415997,41.9429845],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046139":{"id":"n2189046139","loc":[-85.6420598,41.9428016],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046140":{"id":"n2189046140","loc":[-85.6420593,41.9427415],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046141":{"id":"n2189046141","loc":[-85.6421957,41.9427409],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046142":{"id":"n2189046142","loc":[-85.6421963,41.9428182],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046143":{"id":"n2189046143","loc":[-85.6421281,41.9428185],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046144":{"id":"n2189046144","loc":[-85.6421279,41.9428013],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046145":{"id":"n2189046145","loc":[-85.6409429,41.9429345],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046146":{"id":"n2189046146","loc":[-85.6410354,41.9429334],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046147":{"id":"n2189046147","loc":[-85.6410325,41.9427972],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046148":{"id":"n2189046148","loc":[-85.640997,41.9427976],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046149":{"id":"n2189046149","loc":[-85.6409963,41.9427643],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046150":{"id":"n2189046150","loc":[-85.6408605,41.9427659],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046152":{"id":"n2189046152","loc":[-85.6408623,41.9428482],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046153":{"id":"n2189046153","loc":[-85.640941,41.9428473],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189152992":{"id":"n2189152992","loc":[-85.6437661,41.9422257],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152993":{"id":"n2189152993","loc":[-85.643768,41.9424067],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152994":{"id":"n2189152994","loc":[-85.6432176,41.9417705],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152995":{"id":"n2189152995","loc":[-85.6432097,41.941327],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152996":{"id":"n2189152996","loc":[-85.6436493,41.9413226],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152997":{"id":"n2189152997","loc":[-85.6436563,41.9417164],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152998":{"id":"n2189152998","loc":[-85.6435796,41.9417171],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152999":{"id":"n2189152999","loc":[-85.6435805,41.9417669],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153000":{"id":"n2189153000","loc":[-85.6438202,41.9414953],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153001":{"id":"n2189153001","loc":[-85.6438173,41.9413175],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153004":{"id":"n2189153004","loc":[-85.6432535,41.9418466],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153005":{"id":"n2189153005","loc":[-85.6433935,41.9418599],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153006":{"id":"n2189153006","loc":[-85.6434831,41.9418986],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153007":{"id":"n2189153007","loc":[-85.6435678,41.9419774],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153008":{"id":"n2189153008","loc":[-85.6435987,41.9420282],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153009":{"id":"n2189153009","loc":[-85.643438,41.9419573],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153010":{"id":"n2189153010","loc":[-85.6435284,41.9424676],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153011":{"id":"n2189153011","loc":[-85.6436207,41.9423631],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153012":{"id":"n2189153012","loc":[-85.6434957,41.9422973],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153013":{"id":"n2189153013","loc":[-85.6434457,41.9422458],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153014":{"id":"n2189153014","loc":[-85.6433976,41.9421772],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153015":{"id":"n2189153015","loc":[-85.6433861,41.9420785],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153016":{"id":"n2189153016","loc":[-85.6433765,41.9420313],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153017":{"id":"n2189153017","loc":[-85.6432207,41.9420284],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153018":{"id":"n2189153018","loc":[-85.6432245,41.9422759],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153019":{"id":"n2189153019","loc":[-85.6432649,41.9423474],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153020":{"id":"n2189153020","loc":[-85.6433226,41.9424132],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153021":{"id":"n2189153021","loc":[-85.6434111,41.9424704],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153022":{"id":"n2189153022","loc":[-85.6434591,41.9424347],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153025":{"id":"n2189153025","loc":[-85.6437669,41.9423073],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153026":{"id":"n2189153026","loc":[-85.6436611,41.942293],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153027":{"id":"n2189153027","loc":[-85.6435784,41.9422473],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153028":{"id":"n2189153028","loc":[-85.6435245,41.9421443],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153029":{"id":"n2189153029","loc":[-85.6435149,41.9420613],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153030":{"id":"n2189153030","loc":[-85.6433528,41.9419269],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153031":{"id":"n2189153031","loc":[-85.6432535,41.9419191],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153032":{"id":"n2189153032","loc":[-85.6430868,41.9419198],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153033":{"id":"n2189153033","loc":[-85.6434894,41.9420033],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153034":{"id":"n2189153034","loc":[-85.6432974,41.9419225],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153035":{"id":"n2189153035","loc":[-85.6433055,41.9421632],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153036":{"id":"n2189153036","loc":[-85.6433538,41.9422849],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153037":{"id":"n2189153037","loc":[-85.6434718,41.9423887],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153038":{"id":"n2189153038","loc":[-85.6436134,41.9422667],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153040":{"id":"n2189153040","loc":[-85.6438759,41.9414017],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153041":{"id":"n2189153041","loc":[-85.6438181,41.9413687],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153042":{"id":"n2189153042","loc":[-85.6436821,41.9413044],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153043":{"id":"n2189153043","loc":[-85.6435899,41.9412862],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153044":{"id":"n2189153044","loc":[-85.6433169,41.9417268],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153045":{"id":"n2189153045","loc":[-85.643301,41.9412859],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153046":{"id":"n2189153046","loc":[-85.6435531,41.9416981],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153047":{"id":"n2189153047","loc":[-85.6435427,41.9412863],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n185948706":{"id":"n185948706","loc":[-85.6369439,41.940122],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185949348":{"id":"n185949348","loc":[-85.640039,41.931135],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:09Z","tags":{}},"n185949870":{"id":"n185949870","loc":[-85.643195,41.949261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185954680":{"id":"n185954680","loc":[-85.6337802,41.9401143],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954784":{"id":"n185954784","loc":[-85.6487485,41.942527],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185958670":{"id":"n185958670","loc":[-85.637255,41.940104],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958672":{"id":"n185958672","loc":[-85.636996,41.941355],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:31Z","tags":{}},"n185960207":{"id":"n185960207","loc":[-85.634992,41.940118],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:09Z","tags":{}},"n185963163":{"id":"n185963163","loc":[-85.638831,41.93398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963165":{"id":"n185963165","loc":[-85.640073,41.933968],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963167":{"id":"n185963167","loc":[-85.641225,41.933972],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963168":{"id":"n185963168","loc":[-85.642386,41.933952],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185964695":{"id":"n185964695","loc":[-85.6443608,41.9425645],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185964697":{"id":"n185964697","loc":[-85.644384,41.939941],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:31Z","tags":{}},"n185964963":{"id":"n185964963","loc":[-85.6382347,41.9426146],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964965":{"id":"n185964965","loc":[-85.637022,41.942622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:40Z","tags":{}},"n185964967":{"id":"n185964967","loc":[-85.6363706,41.9426606],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964968":{"id":"n185964968","loc":[-85.6357988,41.9427748],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964969":{"id":"n185964969","loc":[-85.6355409,41.9428465],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964970":{"id":"n185964970","loc":[-85.6348729,41.9430443],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185966958":{"id":"n185966958","loc":[-85.641946,41.946413],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185966960":{"id":"n185966960","loc":[-85.643148,41.946389],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185967774":{"id":"n185967774","loc":[-85.641889,41.943852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967775":{"id":"n185967775","loc":[-85.641922,41.945121],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967776":{"id":"n185967776","loc":[-85.641927,41.947544],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967777":{"id":"n185967777","loc":[-85.641982,41.947622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185969289":{"id":"n185969289","loc":[-85.63928,41.929221],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:52Z","tags":{}},"n185969704":{"id":"n185969704","loc":[-85.6388186,41.9350099],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969706":{"id":"n185969706","loc":[-85.6400709,41.9349957],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969708":{"id":"n185969708","loc":[-85.6412214,41.9349827],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969710":{"id":"n185969710","loc":[-85.6423509,41.934974],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185970602":{"id":"n185970602","loc":[-85.641293,41.931817],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970604":{"id":"n185970604","loc":[-85.641258,41.932705],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970605":{"id":"n185970605","loc":[-85.641148,41.936984],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970606":{"id":"n185970606","loc":[-85.641112,41.938169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970906":{"id":"n185970906","loc":[-85.639454,41.943871],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:50Z","tags":{}},"n185970908":{"id":"n185970908","loc":[-85.6394635,41.9450504],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185970909":{"id":"n185970909","loc":[-85.6394914,41.9451911],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185971368":{"id":"n185971368","loc":[-85.635769,41.940122],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971978":{"id":"n185971978","loc":[-85.640003,41.936988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:14Z","tags":{}},"n185971980":{"id":"n185971980","loc":[-85.642299,41.936988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:14Z","tags":{}},"n185973633":{"id":"n185973633","loc":[-85.639023,41.92861],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973635":{"id":"n185973635","loc":[-85.639153,41.928969],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973637":{"id":"n185973637","loc":[-85.639213,41.929088],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973639":{"id":"n185973639","loc":[-85.63935,41.929396],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973641":{"id":"n185973641","loc":[-85.640143,41.931462],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973644":{"id":"n185973644","loc":[-85.64019,41.931788],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973646":{"id":"n185973646","loc":[-85.6401365,41.9327199],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185973648":{"id":"n185973648","loc":[-85.639983,41.938174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185974477":{"id":"n185974477","loc":[-85.638206,41.941331],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185975928":{"id":"n185975928","loc":[-85.640683,41.94513],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185975930":{"id":"n185975930","loc":[-85.643102,41.945103],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185976255":{"id":"n185976255","loc":[-85.642424,41.931817],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976257":{"id":"n185976257","loc":[-85.64242,41.932699],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976258":{"id":"n185976258","loc":[-85.6422621,41.9381489],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n185977452":{"id":"n185977452","loc":[-85.6457497,41.9398834],"version":"3","changeset":"5841745","user":"themps","uid":"196173","visible":"true","timestamp":"2010-09-22T00:20:34Z","tags":{}},"n185978772":{"id":"n185978772","loc":[-85.646656,41.939869],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185981472":{"id":"n185981472","loc":[-85.6388962,41.9321266],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981474":{"id":"n185981474","loc":[-85.6388769,41.9327334],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981476":{"id":"n185981476","loc":[-85.638829,41.934116],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981478":{"id":"n185981478","loc":[-85.63876,41.937002],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981480":{"id":"n185981480","loc":[-85.638682,41.93819],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981999":{"id":"n185981999","loc":[-85.638194,41.9400866],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n185982001":{"id":"n185982001","loc":[-85.646302,41.93988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:26Z","tags":{}},"n185982877":{"id":"n185982877","loc":[-85.640676,41.943867],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:54Z","tags":{}},"n185982879":{"id":"n185982879","loc":[-85.640734,41.945887],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:54Z","tags":{}},"n185985823":{"id":"n185985823","loc":[-85.643106,41.943841],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185985824":{"id":"n185985824","loc":[-85.643145,41.947641],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185985825":{"id":"n185985825","loc":[-85.643219,41.950829],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n1475301385":{"id":"n1475301385","loc":[-85.6360612,41.9427042],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n1475301397":{"id":"n1475301397","loc":[-85.6366651,41.9426328],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n2139795811":{"id":"n2139795811","loc":[-85.6469154,41.9425427],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795830":{"id":"n2139795830","loc":[-85.6443194,41.9399444],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139795834":{"id":"n2139795834","loc":[-85.6453506,41.9399002],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139795837":{"id":"n2139795837","loc":[-85.645806,41.9398831],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139858932":{"id":"n2139858932","loc":[-85.6351721,41.9429557],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2140019000":{"id":"n2140019000","loc":[-85.6359935,41.9427224],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2165942817":{"id":"n2165942817","loc":[-85.6442017,41.9414993],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2165942820":{"id":"n2165942820","loc":[-85.6442107,41.9421159],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2189152990":{"id":"n2189152990","loc":[-85.6442328,41.942404],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:05Z","tags":{}},"n2189152991":{"id":"n2189152991","loc":[-85.6442309,41.9422229],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153002":{"id":"n2189153002","loc":[-85.6441329,41.9413147],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153003":{"id":"n2189153003","loc":[-85.6441357,41.9414925],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153023":{"id":"n2189153023","loc":[-85.6443453,41.9423074],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153024":{"id":"n2189153024","loc":[-85.6442318,41.9423045],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153039":{"id":"n2189153039","loc":[-85.6441343,41.9414025],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"w208643102":{"id":"w208643102","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153034","n2189153035","n2189153036","n2189153037","n2189153038"]},"w17966942":{"id":"w17966942","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:04Z","tags":{"highway":"residential","name":"Millard St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Millard","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312476:15312477:15312478:15326070:15326071:15329003:15329004:15312479:15312480:15312483:15326956:15326957:15312485:15312486:15322600:15325988","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185954680","n185960207","n185971368","n185948706","n185958670","n185981999","n185981481","n185981482","n185973650","n185973659","n185970607","n185976259","n185976261","n2139795830","n185964697","n2139795834","n185977452","n2139795837","n185982001","n185978772"]},"w208643105":{"id":"w208643105","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153046","n2189153047"]},"w208631637":{"id":"w208631637","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046014","n2189046016","n2189046018","n2189046021","n2189046022","n2189046025","n2189046014"]},"w208643096":{"id":"w208643096","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes","fee":"no"},"nodes":["n2189152990","n2189153024","n2189152991","n2189152992","n2189153025","n2189152993","n2189152990"]},"w208631656":{"id":"w208631656","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046134","n2189046135","n2189046137","n2189046138","n2189046134"]},"w204003417":{"id":"w204003417","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"area":"yes","building":"school"},"nodes":["n2140155811","n2140155814","n2140155816","n2140155818","n2140155821","n2140155823","n2140155825","n2140155827","n2140155811"]},"w208631654":{"id":"w208631654","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046127","n2189046128","n2189046130","n2189046131","n2189046132","n2189046133","n2189046127"]},"w17966327":{"id":"w17966327","version":"3","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{"highway":"residential","name":"S Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185976261","n2140155839","n2140155834","n185974481","n2189153032","n185964959"]},"w41785752":{"id":"w41785752","version":"10","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no","access":"yes"},"nodes":["n185954784","n2139795811","n185964695","n185964959","n185964960","n185964961","n185964962","n185964963","n185964965","n1475301397","n185964967","n1475301385","n2140019000","n185964968","n185964969","n2139858932","n185964970"]},"w203841842":{"id":"w203841842","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"playground"},"nodes":["n2138493848","n2138493849","n2138493850","n2138493851","n2138493852","n2138493853","n2138493854","n2138493855","n2138493856","n2138493848"]},"w208643103":{"id":"w208643103","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service"},"nodes":["n2189153039","n2189153040","n2189153041","n2189153042","n2189153043","n2189153047","n2189153045","n185974481"]},"w208643098":{"id":"w208643098","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153000","n2189153041","n2189153001","n2189153002","n2189153039","n2189153003","n2189153000"]},"w208631646":{"id":"w208631646","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046067","n2189046069","n2189046070","n2189046072","n2189046067"]},"w208631653":{"id":"w208631653","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046119","n2189046120","n2189046121","n2189046122","n2189046123","n2189046124","n2189046125","n2189046126","n2189046119"]},"w17966041":{"id":"w17966041","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:50Z","tags":{"highway":"residential","name":"S Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312474:15312448","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185973659","n185973660","n185964961"]},"w208631645":{"id":"w208631645","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046060","n2189046061","n2189046063","n2189046065","n2189046060"]},"w206803397":{"id":"w206803397","version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:25Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168510551","n2168510552","n2168510553","n2168510554","n2168510555","n2168510556","n2168510557","n2168510558","n2168510551"]},"w17965792":{"id":"w17965792","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:10Z","tags":{"highway":"residential","name":"N Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313197:15312414:15312395","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964962","n185970906","n185970908","n185970909"]},"w208631651":{"id":"w208631651","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046112","n2189046113","n2189046115","n2189046116","n2189046117","n2189046118","n2189046112"]},"w208631643":{"id":"w208631643","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046053","n2189046054","n2189046055","n2189046056","n2189046058","n2189046059","n2189046053"]},"w17966878":{"id":"w17966878","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:48:03Z","tags":{"highway":"residential","name":"S Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312508:15312529:15312553:15312597:15328883:15338803","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981472","n185981474","n185963163","n185981476","n185969704","n185981478","n185981480","n185981481"]},"w17966102":{"id":"w17966102","version":"2","changeset":"14896694","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:01:36Z","tags":{"highway":"residential","name":"South St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"South","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312446","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958672","n185974477","n185974479","n185973660","n185970614"]},"w208631660":{"id":"w208631660","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046145","n2189046146","n2189046147","n2189046148","n2189046149","n2189046150","n2189046152","n2189046153","n2189046145"]},"w208643101":{"id":"w208643101","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service"},"nodes":["n2189153023","n2189153024","n2189153025","n2189153026","n2189153038","n2189153027","n2189153028","n2189153029","n2189153033","n2189153009","n2189153030","n2189153034","n2189153031","n2189153032"]},"w204000205":{"id":"w204000205","version":"2","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:19Z","tags":{"highway":"residential","name":"South St","oneway":"yes","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"South","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312446","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185974481","n2140155851","n185970614"]},"w203841841":{"id":"w203841841","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"pitch","pitch":"basketball"},"nodes":["n2138493844","n2138493845","n2138493846","n2138493847","n2138493844"]},"w17965444":{"id":"w17965444","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:37:03Z","tags":{"highway":"residential","name":"N Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312348:15312365:15312422:15312392","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964960","n185967774","n185967775","n185966958","n185967776","n185967777"]},"w208631648":{"id":"w208631648","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046074","n2189046075","n2189046077","n2189046079","n2189046082","n2189046083","n2189046085","n2189046087","n2189046089","n2189046090","n2189046092","n2189046094","n2189046096","n2189046097","n2189046099","n2189046103","n2189046074"]},"w208643100":{"id":"w208643100","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153010","n2189153011","n2189153012","n2189153013","n2189153014","n2189153015","n2189153016","n2189153017","n2189153018","n2189153019","n2189153020","n2189153021","n2189153022","n2189153010"]},"w17965749":{"id":"w17965749","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:28Z","tags":{"highway":"residential","name":"S Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312445","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970614","n185970616","n185964960"]},"w206574482":{"id":"w206574482","version":"2","changeset":"15128027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-22T20:03:31Z","tags":{"addr:state":"MI","amenity":"library","area":"yes","building":"yes","ele":"249","gnis:county_name":"St. Joseph","gnis:feature_id":"2418162","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"Three Rivers Public Library","source":"USGS Geonames"},"nodes":["n2165942817","n2165942818","n2165942819","n2165942820","n2165942817"]},"w208643097":{"id":"w208643097","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189152994","n2189152995","n2189152996","n2189152997","n2189152998","n2189152999","n2189152994"]},"w17966879":{"id":"w17966879","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:48:03Z","tags":{"highway":"residential","name":"S Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312475:15312449","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981482","n185974479","n185964962"]},"w17966325":{"id":"w17966325","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:43:58Z","tags":{"highway":"residential","name":"S Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15330300:15312522:15312547:15330299:15312603:15312571:15331740","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185976255","n185976257","n185963168","n185969710","n185971980","n185976258","n185954700","n185976259"]},"w17967390":{"id":"w17967390","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:27Z","tags":{"highway":"residential","name":"N Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312300","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185964959","n185985823","n185975930","n185966960","n185985824","n185949870","n185985825"]},"w208631635":{"id":"w208631635","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046007","n2189046009","n2189046011","n2189046012","n2189046007"]},"w208643099":{"id":"w208643099","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153031","n2189153004","n2189153005","n2189153006","n2189153007","n2189153008","n2189153029","n2189153033","n2189153009","n2189153030","n2189153031"]},"w208631658":{"id":"w208631658","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046139","n2189046140","n2189046141","n2189046142","n2189046143","n2189046144","n2189046139"]},"w208643104":{"id":"w208643104","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153044","n2189153045"]},"w17966039":{"id":"w17966039","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:49Z","tags":{"highway":"residential","name":"S Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312526:15312511:15312550:15312601:15312998:15312626:15312574:15328327:15328328:15313210","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185973633","n185973635","n185973637","n185969289","n185973639","n185949348","n185973641","n185973644","n185973646","n185963165","n185969706","n185971978","n185973648","n185973650"]},"w204003420":{"id":"w204003420","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2140155840","n2140155842","n2140155844","n2140155845","n2140155847","n2140155849","n2140155854","n2140155840"]},"w204003419":{"id":"w204003419","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"highway":"service"},"nodes":["n2140155834","n2140155835","n2140155837","n2140155839"]},"w204003418":{"id":"w204003418","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"amenity":"school","area":"yes","name":"Andrews Elementary School"},"nodes":["n2140155828","n2140155829","n2140155830","n2140155831","n2140155832","n2140155833","n2140155828"]},"w17965747":{"id":"w17965747","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:27Z","tags":{"highway":"residential","name":"S Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312509:15312524:15312549:15312605:15329008:15312572","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970602","n185970604","n185963167","n185969708","n185970605","n185970606","n185970607"]},"w17967073":{"id":"w17967073","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:07Z","tags":{"highway":"residential","name":"N Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313196:15312424:15312394","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964961","n185982877","n185975928","n185982879"]},"w204003421":{"id":"w204003421","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2140155851","n2140155852","n2140155854","n2140155856"]},"r1943857":{"id":"r1943857","version":"2","changeset":"13612265","user":"migurski","uid":"8287","visible":"true","timestamp":"2012-10-24T04:10:54Z","tags":{"is_in:state":"MI","modifier":"Business","name":"US 131 Business (Three Rivers, MI)","network":"US:US","ref":"131","route":"road","type":"route"},"members":[{"id":"w17966509","type":"way","role":"forward"},{"id":"w143497377","type":"way","role":""},{"id":"w134150811","type":"way","role":""},{"id":"w134150800","type":"way","role":""},{"id":"w134150789","type":"way","role":""},{"id":"w134150795","type":"way","role":""},{"id":"w41785752","type":"way","role":""},{"id":"w17965146","type":"way","role":"forward"},{"id":"w17964031","type":"way","role":"forward"}]},"r270277":{"id":"r270277","version":"21","changeset":"15347356","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T03:41:02Z","tags":{"network":"US:MI","ref":"60","route":"road","state_id":"MI","type":"route","url":"http://en.wikipedia.org/wiki/M-60_%28Michigan_highway%29"},"members":[{"id":"w17751087","type":"way","role":"east"},{"id":"w117148312","type":"way","role":"east"},{"id":"w40942155","type":"way","role":"west"},{"id":"w17751017","type":"way","role":""},{"id":"w17751083","type":"way","role":""},{"id":"w17747780","type":"way","role":""},{"id":"w41068082","type":"way","role":""},{"id":"w197025212","type":"way","role":""},{"id":"w17743874","type":"way","role":""},{"id":"w17751044","type":"way","role":""},{"id":"w17752167","type":"way","role":""},{"id":"w17751089","type":"way","role":""},{"id":"w17743879","type":"way","role":""},{"id":"w17751064","type":"way","role":""},{"id":"w197057073","type":"way","role":""},{"id":"w167699963","type":"way","role":""},{"id":"w167699972","type":"way","role":""},{"id":"w17967584","type":"way","role":""},{"id":"w167699964","type":"way","role":""},{"id":"w17967582","type":"way","role":"west"},{"id":"w41260270","type":"way","role":"west"},{"id":"w17965146","type":"way","role":"west"},{"id":"w41785752","type":"way","role":""},{"id":"w134150795","type":"way","role":""},{"id":"w134150789","type":"way","role":""},{"id":"w134150800","type":"way","role":""},{"id":"w134150811","type":"way","role":""},{"id":"w134150836","type":"way","role":""},{"id":"w134150802","type":"way","role":""},{"id":"w41074896","type":"way","role":""},{"id":"w17966773","type":"way","role":""},{"id":"w17967415","type":"way","role":""},{"id":"w41074899","type":"way","role":""},{"id":"w17967581","type":"way","role":""},{"id":"w41074902","type":"way","role":""},{"id":"w41074906","type":"way","role":""},{"id":"w209707997","type":"way","role":""},{"id":"w209707998","type":"way","role":""},{"id":"w17964798","type":"way","role":""},{"id":"w17966034","type":"way","role":""},{"id":"w17967593","type":"way","role":""},{"id":"w41074888","type":"way","role":""},{"id":"w17733772","type":"way","role":""},{"id":"w41074813","type":"way","role":""},{"id":"w17742213","type":"way","role":""},{"id":"w17746863","type":"way","role":""},{"id":"w17745772","type":"way","role":""},{"id":"w17742222","type":"way","role":""},{"id":"w17745922","type":"way","role":""},{"id":"w17742198","type":"way","role":""},{"id":"w17747675","type":"way","role":""},{"id":"w17739927","type":"way","role":""},{"id":"w17745708","type":"way","role":""},{"id":"w41006323","type":"way","role":""},{"id":"w17744233","type":"way","role":""},{"id":"w17739436","type":"way","role":""},{"id":"w17742201","type":"way","role":""},{"id":"w151418616","type":"way","role":""},{"id":"w17750062","type":"way","role":""},{"id":"w17742227","type":"way","role":"east"},{"id":"w41006348","type":"way","role":"east"},{"id":"w41260984","type":"way","role":""},{"id":"w17832427","type":"way","role":""},{"id":"w17838408","type":"way","role":""},{"id":"w17835846","type":"way","role":""},{"id":"w17832923","type":"way","role":""},{"id":"w17839388","type":"way","role":""},{"id":"w17838390","type":"way","role":""},{"id":"w17831272","type":"way","role":""},{"id":"w17828581","type":"way","role":""},{"id":"w38240686","type":"way","role":""},{"id":"w17838405","type":"way","role":"east"},{"id":"w123323711","type":"way","role":"east"},{"id":"w17830167","type":"way","role":"east"},{"id":"w99011909","type":"way","role":"east"},{"id":"w41911361","type":"way","role":"east"},{"id":"w41911355","type":"way","role":"east"},{"id":"w41911356","type":"way","role":"east"},{"id":"w117148326","type":"way","role":"west"},{"id":"w41911352","type":"way","role":"west"},{"id":"w41911353","type":"way","role":"west"},{"id":"w41911354","type":"way","role":"west"},{"id":"w41911360","type":"way","role":"west"},{"id":"w38240676","type":"way","role":"west"},{"id":"w123323710","type":"way","role":"west"},{"id":"w41260271","type":"way","role":"east"},{"id":"w41260273","type":"way","role":"east"},{"id":"w17964031","type":"way","role":"east"},{"id":"w41006344","type":"way","role":"west"},{"id":"w41006351","type":"way","role":"west"}]},"n367813436":{"id":"n367813436","loc":[-85.63605205663384,41.94305506683346],"version":"2","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"addr:state":"MI","amenity":"fire_station","ele":"245","gnis:county_name":"St. Joseph","gnis:feature_id":"2417894","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"Three Rivers Fire Department","source":"USGS Geonames"}},"n185948708":{"id":"n185948708","loc":[-85.6369828,41.9408789],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185948710":{"id":"n185948710","loc":[-85.6370184,41.9411346],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185954691":{"id":"n185954691","loc":[-85.634476,41.941475],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:32Z","tags":{}},"n185954692":{"id":"n185954692","loc":[-85.635008,41.941846],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:32Z","tags":{}},"n185954693":{"id":"n185954693","loc":[-85.635362,41.941962],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185954695":{"id":"n185954695","loc":[-85.63578,41.941978],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185972903":{"id":"n185972903","loc":[-85.63295,41.9430062],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185964971":{"id":"n185964971","loc":[-85.6346811,41.9431023],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n1819805854":{"id":"n1819805854","loc":[-85.6331275,41.9404837],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805918":{"id":"n1819805918","loc":[-85.6331168,41.942798],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805762":{"id":"n1819805762","loc":[-85.6333034,41.9424123],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819805907":{"id":"n1819805907","loc":[-85.6334819,41.9419121],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819805915":{"id":"n1819805915","loc":[-85.6334554,41.9413588],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819848888":{"id":"n1819848888","loc":[-85.6331625,41.942679],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848930":{"id":"n1819848930","loc":[-85.6338684,41.9431252],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819858505":{"id":"n1819858505","loc":[-85.6346782,41.9429092],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858507":{"id":"n1819858507","loc":[-85.6339003,41.9414534],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858508":{"id":"n1819858508","loc":[-85.6345709,41.9427742],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858509":{"id":"n1819858509","loc":[-85.63419,41.9417322],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858511":{"id":"n1819858511","loc":[-85.6340666,41.9415652],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858512":{"id":"n1819858512","loc":[-85.6343295,41.9423027],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858514":{"id":"n1819858514","loc":[-85.6343241,41.942207],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858521":{"id":"n1819858521","loc":[-85.633391,41.941231],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858528":{"id":"n1819858528","loc":[-85.6343027,41.9419716],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185954683":{"id":"n185954683","loc":[-85.6335412,41.940147],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954685":{"id":"n185954685","loc":[-85.6334296,41.9403023],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954687":{"id":"n185954687","loc":[-85.6333988,41.9404704],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954689":{"id":"n185954689","loc":[-85.6335511,41.9410225],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954690":{"id":"n185954690","loc":[-85.6336721,41.9411669],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n1820938802":{"id":"n1820938802","loc":[-85.6330671,41.941845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1821006702":{"id":"n1821006702","loc":[-85.6344047,41.9395496],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n2130304133":{"id":"n2130304133","loc":[-85.6349025,41.9427659],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304136":{"id":"n2130304136","loc":[-85.6346027,41.9422017],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304138":{"id":"n2130304138","loc":[-85.6348577,41.9421517],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304140":{"id":"n2130304140","loc":[-85.6348419,41.9422694],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304142":{"id":"n2130304142","loc":[-85.6349071,41.9423135],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304144":{"id":"n2130304144","loc":[-85.6350495,41.9423312],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304146":{"id":"n2130304146","loc":[-85.6351009,41.9422812],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304147":{"id":"n2130304147","loc":[-85.6351227,41.9421532],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304148":{"id":"n2130304148","loc":[-85.635526,41.9421547],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304149":{"id":"n2130304149","loc":[-85.6355339,41.9425768],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304150":{"id":"n2130304150","loc":[-85.6351582,41.9426562],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304151":{"id":"n2130304151","loc":[-85.6351207,41.9427032],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2138493807":{"id":"n2138493807","loc":[-85.6350923,41.9415216],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493808":{"id":"n2138493808","loc":[-85.6353603,41.9411061],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493809":{"id":"n2138493809","loc":[-85.6354421,41.9410942],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493810":{"id":"n2138493810","loc":[-85.6355079,41.9411044],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493811":{"id":"n2138493811","loc":[-85.6355693,41.9411246],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493812":{"id":"n2138493812","loc":[-85.6355829,41.9411061],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493813":{"id":"n2138493813","loc":[-85.6355624,41.9409777],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493814":{"id":"n2138493814","loc":[-85.6355011,41.9409152],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493815":{"id":"n2138493815","loc":[-85.635383,41.9409219],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493816":{"id":"n2138493816","loc":[-85.635299,41.9409658],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493817":{"id":"n2138493817","loc":[-85.6351695,41.941204],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493818":{"id":"n2138493818","loc":[-85.6348879,41.9415166],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493819":{"id":"n2138493819","loc":[-85.634897,41.9415757],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493820":{"id":"n2138493820","loc":[-85.6349606,41.9416399],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493821":{"id":"n2138493821","loc":[-85.6350219,41.9416669],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493822":{"id":"n2138493822","loc":[-85.6351241,41.9416314],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493823":{"id":"n2138493823","loc":[-85.6350855,41.9415622],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493824":{"id":"n2138493824","loc":[-85.6350401,41.9413603],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493825":{"id":"n2138493825","loc":[-85.6352206,41.9410765],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493826":{"id":"n2138493826","loc":[-85.6343865,41.9415594],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493827":{"id":"n2138493827","loc":[-85.6343506,41.9415873],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493828":{"id":"n2138493828","loc":[-85.6344158,41.9417557],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493829":{"id":"n2138493829","loc":[-85.6344614,41.9417968],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493830":{"id":"n2138493830","loc":[-85.6345005,41.9418186],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493831":{"id":"n2138493831","loc":[-85.6345965,41.9418162],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493832":{"id":"n2138493832","loc":[-85.6347317,41.9417242],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493833":{"id":"n2138493833","loc":[-85.6346722,41.941775],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2139858909":{"id":"n2139858909","loc":[-85.633403,41.9391006],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858910":{"id":"n2139858910","loc":[-85.6332973,41.9393967],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858911":{"id":"n2139858911","loc":[-85.633205,41.9396742],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858912":{"id":"n2139858912","loc":[-85.6332203,41.9397772],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858913":{"id":"n2139858913","loc":[-85.6333453,41.939936],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858914":{"id":"n2139858914","loc":[-85.6333761,41.9400018],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858915":{"id":"n2139858915","loc":[-85.63328,41.9402249],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858916":{"id":"n2139858916","loc":[-85.6332357,41.9403523],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858917":{"id":"n2139858917","loc":[-85.6332838,41.9405831],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858918":{"id":"n2139858918","loc":[-85.6333643,41.9408744],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858919":{"id":"n2139858919","loc":[-85.6334394,41.9410519],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858920":{"id":"n2139858920","loc":[-85.6335815,41.9411717],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858921":{"id":"n2139858921","loc":[-85.6337478,41.9412734],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858922":{"id":"n2139858922","loc":[-85.6343174,41.9415268],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858923":{"id":"n2139858923","loc":[-85.6343886,41.9417397],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858924":{"id":"n2139858924","loc":[-85.6344407,41.9418015],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858925":{"id":"n2139858925","loc":[-85.6345139,41.9418366],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858926":{"id":"n2139858926","loc":[-85.6344846,41.942005],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858927":{"id":"n2139858927","loc":[-85.6345775,41.9422218],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858928":{"id":"n2139858928","loc":[-85.6348771,41.9427814],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858929":{"id":"n2139858929","loc":[-85.6349487,41.9427995],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858930":{"id":"n2139858930","loc":[-85.6350415,41.9427874],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858931":{"id":"n2139858931","loc":[-85.6351246,41.9428589],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858978":{"id":"n2139858978","loc":[-85.6349658,41.9431481],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858979":{"id":"n2139858979","loc":[-85.6350081,41.9431287],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858980":{"id":"n2139858980","loc":[-85.6349967,41.9430997],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858981":{"id":"n2139858981","loc":[-85.6352158,41.9430352],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858982":{"id":"n2139858982","loc":[-85.6348174,41.94267],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858983":{"id":"n2139858983","loc":[-85.6346142,41.9425989],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858984":{"id":"n2139858984","loc":[-85.6344938,41.9423809],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858985":{"id":"n2139858985","loc":[-85.6344856,41.9422997],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139870380":{"id":"n2139870380","loc":[-85.6346707,41.9417955],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870381":{"id":"n2139870381","loc":[-85.6345949,41.9418311],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870382":{"id":"n2139870382","loc":[-85.6343322,41.9418659],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870383":{"id":"n2139870383","loc":[-85.6342072,41.941885],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870384":{"id":"n2139870384","loc":[-85.6341325,41.9418919],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870385":{"id":"n2139870385","loc":[-85.6341314,41.9422028],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870386":{"id":"n2139870386","loc":[-85.6340472,41.9423271],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870387":{"id":"n2139870387","loc":[-85.6342185,41.9427933],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870388":{"id":"n2139870388","loc":[-85.6340605,41.9423924],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870389":{"id":"n2139870389","loc":[-85.6339889,41.9424069],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870390":{"id":"n2139870390","loc":[-85.633971,41.942356],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870391":{"id":"n2139870391","loc":[-85.63361,41.9424235],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870392":{"id":"n2139870392","loc":[-85.6337137,41.9426819],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870393":{"id":"n2139870393","loc":[-85.6336977,41.9428632],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870394":{"id":"n2139870394","loc":[-85.6338823,41.9428647],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870395":{"id":"n2139870395","loc":[-85.6339412,41.9430069],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870396":{"id":"n2139870396","loc":[-85.6338873,41.9430353],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870397":{"id":"n2139870397","loc":[-85.6337676,41.942815],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870398":{"id":"n2139870398","loc":[-85.6336822,41.9423505],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870399":{"id":"n2139870399","loc":[-85.634037,41.9422725],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870400":{"id":"n2139870400","loc":[-85.6340294,41.9422518],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870401":{"id":"n2139870401","loc":[-85.6336726,41.9423312],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870402":{"id":"n2139870402","loc":[-85.6342188,41.9425715],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870403":{"id":"n2139870403","loc":[-85.6342524,41.942565],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870404":{"id":"n2139870404","loc":[-85.6341438,41.942299],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870405":{"id":"n2139870405","loc":[-85.6341149,41.9423061],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870407":{"id":"n2139870407","loc":[-85.6340846,41.9431458],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870408":{"id":"n2139870408","loc":[-85.6339436,41.9429032],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870409":{"id":"n2139870409","loc":[-85.6343143,41.9428207],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870410":{"id":"n2139870410","loc":[-85.6343507,41.94277],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870411":{"id":"n2139870411","loc":[-85.6341527,41.942254],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870412":{"id":"n2139870412","loc":[-85.6340925,41.9422199],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870413":{"id":"n2139870413","loc":[-85.6335435,41.9423433],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870414":{"id":"n2139870414","loc":[-85.6335023,41.9423975],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870415":{"id":"n2139870415","loc":[-85.6335086,41.9424552],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870416":{"id":"n2139870416","loc":[-85.6336296,41.942665],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870417":{"id":"n2139870417","loc":[-85.6341396,41.9428596],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870418":{"id":"n2139870418","loc":[-85.6339701,41.9424487],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870419":{"id":"n2139870419","loc":[-85.6335514,41.9425294],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870420":{"id":"n2139870420","loc":[-85.6337406,41.9424929],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870421":{"id":"n2139870421","loc":[-85.6338939,41.9428687],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870422":{"id":"n2139870422","loc":[-85.6341323,41.9419538],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870423":{"id":"n2139870423","loc":[-85.6340321,41.9420376],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870424":{"id":"n2139870424","loc":[-85.6337648,41.942238],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870425":{"id":"n2139870425","loc":[-85.6337604,41.9422685],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870426":{"id":"n2139870426","loc":[-85.6337682,41.9422928],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870427":{"id":"n2139870427","loc":[-85.6338086,41.9423862],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870428":{"id":"n2139870428","loc":[-85.6349465,41.9416631],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870429":{"id":"n2139870429","loc":[-85.6351097,41.9416973],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870430":{"id":"n2139870430","loc":[-85.6353371,41.9416798],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870431":{"id":"n2139870431","loc":[-85.6349627,41.9422506],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870432":{"id":"n2139870432","loc":[-85.634979,41.9421815],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870433":{"id":"n2139870433","loc":[-85.634885,41.9421679],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870434":{"id":"n2139870434","loc":[-85.6348689,41.9422377],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870435":{"id":"n2139870435","loc":[-85.6349779,41.9419486],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870436":{"id":"n2139870436","loc":[-85.6349505,41.9418933],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870437":{"id":"n2139870437","loc":[-85.6347327,41.9419505],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870438":{"id":"n2139870438","loc":[-85.6347614,41.9420087],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870439":{"id":"n2139870439","loc":[-85.6351889,41.9416912],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870440":{"id":"n2139870440","loc":[-85.6351092,41.9418426],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870441":{"id":"n2139870441","loc":[-85.635086,41.9419659],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870442":{"id":"n2139870442","loc":[-85.6350584,41.9421466],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870443":{"id":"n2139870443","loc":[-85.6350993,41.9421606],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870444":{"id":"n2139870444","loc":[-85.6350993,41.9422132],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870445":{"id":"n2139870445","loc":[-85.6350794,41.9422855],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870446":{"id":"n2139870446","loc":[-85.6350474,41.9423159],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870447":{"id":"n2139870447","loc":[-85.6349251,41.9422998],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870448":{"id":"n2139870448","loc":[-85.634911,41.9422755],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870449":{"id":"n2139870449","loc":[-85.6349157,41.9422553],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870450":{"id":"n2139870450","loc":[-85.6347213,41.9419324],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870451":{"id":"n2139870451","loc":[-85.6349535,41.9418771],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870452":{"id":"n2139870452","loc":[-85.6350135,41.9419421],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870453":{"id":"n2139870453","loc":[-85.6348584,41.9418997],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870454":{"id":"n2139870454","loc":[-85.6348113,41.9418101],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870455":{"id":"n2139870455","loc":[-85.6347306,41.9417449],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870456":{"id":"n2139870456","loc":[-85.6349123,41.941776],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870457":{"id":"n2139870457","loc":[-85.6349423,41.9421448],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870458":{"id":"n2139870458","loc":[-85.6349436,41.9420652],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870459":{"id":"n2139870459","loc":[-85.6349136,41.9419963],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870460":{"id":"n2139870460","loc":[-85.6349814,41.9419789],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139989328":{"id":"n2139989328","loc":[-85.6334188,41.9421725],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989330":{"id":"n2139989330","loc":[-85.6335087,41.9416308],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989335":{"id":"n2139989335","loc":[-85.6336856,41.9429371],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989337":{"id":"n2139989337","loc":[-85.6333713,41.9427217],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989339":{"id":"n2139989339","loc":[-85.6332912,41.9425383],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989341":{"id":"n2139989341","loc":[-85.6339369,41.9409198],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989344":{"id":"n2139989344","loc":[-85.634097,41.9409469],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989346":{"id":"n2139989346","loc":[-85.634137,41.9412852],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989348":{"id":"n2139989348","loc":[-85.6344536,41.9414151],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989350":{"id":"n2139989350","loc":[-85.6350794,41.9412392],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989351":{"id":"n2139989351","loc":[-85.6352541,41.9409387],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989353":{"id":"n2139989353","loc":[-85.6357198,41.9408007],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989355":{"id":"n2139989355","loc":[-85.6357235,41.9427088],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989357":{"id":"n2139989357","loc":[-85.6337119,41.9421256],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989359":{"id":"n2139989359","loc":[-85.6336913,41.9420655],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989360":{"id":"n2139989360","loc":[-85.633582,41.9420867],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989362":{"id":"n2139989362","loc":[-85.6336058,41.9421491],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989364":{"id":"n2139989364","loc":[-85.6339685,41.9410995],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989366":{"id":"n2139989366","loc":[-85.6339067,41.9411383],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989368":{"id":"n2139989368","loc":[-85.6339685,41.9411972],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989370":{"id":"n2139989370","loc":[-85.6340398,41.9411619],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139870379":{"id":"n2139870379","loc":[-85.6348391,41.9416651],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2140006363":{"id":"n2140006363","loc":[-85.6353144,41.9430345],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006364":{"id":"n2140006364","loc":[-85.6349191,41.9431422],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140018997":{"id":"n2140018997","loc":[-85.63645945147184,41.942986488012565],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"amenity":"townhall","name":"Three Rivers City Hall"}},"n2140018998":{"id":"n2140018998","loc":[-85.6370319,41.9427919],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2140018999":{"id":"n2140018999","loc":[-85.6360687,41.9427808],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2199856288":{"id":"n2199856288","loc":[-85.6344968,41.9407307],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856289":{"id":"n2199856289","loc":[-85.634492,41.9406036],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856290":{"id":"n2199856290","loc":[-85.634891,41.9406001],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856291":{"id":"n2199856291","loc":[-85.6348894,41.9405288],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856292":{"id":"n2199856292","loc":[-85.6349166,41.94053],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856293":{"id":"n2199856293","loc":[-85.6349166,41.9404956],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856294":{"id":"n2199856294","loc":[-85.6350219,41.9404956],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856295":{"id":"n2199856295","loc":[-85.6350251,41.94053],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856296":{"id":"n2199856296","loc":[-85.6350538,41.9405288],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856297":{"id":"n2199856297","loc":[-85.6350602,41.94079],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856298":{"id":"n2199856298","loc":[-85.6351703,41.9407912],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856299":{"id":"n2199856299","loc":[-85.6351688,41.9409171],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856300":{"id":"n2199856300","loc":[-85.6347889,41.9409135],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856301":{"id":"n2199856301","loc":[-85.6347921,41.94079],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856302":{"id":"n2199856302","loc":[-85.6348942,41.9407888],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856303":{"id":"n2199856303","loc":[-85.6348926,41.9407283],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n185951869":{"id":"n185951869","loc":[-85.6387639,41.957288],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185958643":{"id":"n185958643","loc":[-85.636746,41.929221],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958645":{"id":"n185958645","loc":[-85.636791,41.929363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958647":{"id":"n185958647","loc":[-85.6375975,41.9314987],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185958649":{"id":"n185958649","loc":[-85.637669,41.931667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958651":{"id":"n185958651","loc":[-85.637728,41.931901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958653":{"id":"n185958653","loc":[-85.637724,41.932187],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958656":{"id":"n185958656","loc":[-85.637732,41.932761],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958658":{"id":"n185958658","loc":[-85.637688,41.93398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958660":{"id":"n185958660","loc":[-85.637685,41.934223],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958662":{"id":"n185958662","loc":[-85.6376468,41.9350232],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185958664":{"id":"n185958664","loc":[-85.637564,41.937028],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958666":{"id":"n185958666","loc":[-85.637458,41.938197],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958668":{"id":"n185958668","loc":[-85.637424,41.938692],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185964972":{"id":"n185964972","loc":[-85.6341901,41.9432732],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185971361":{"id":"n185971361","loc":[-85.635762,41.938208],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971364":{"id":"n185971364","loc":[-85.635732,41.9384],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971366":{"id":"n185971366","loc":[-85.635736,41.938697],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185972775":{"id":"n185972775","loc":[-85.635638,42.070357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972777":{"id":"n185972777","loc":[-85.635724,42.069929],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972779":{"id":"n185972779","loc":[-85.635804,42.069248],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972781":{"id":"n185972781","loc":[-85.635869,42.068361],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972783":{"id":"n185972783","loc":[-85.635883,42.067582],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972785":{"id":"n185972785","loc":[-85.635875,42.067114],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972787":{"id":"n185972787","loc":[-85.635778,42.065359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972788":{"id":"n185972788","loc":[-85.635728,42.063416],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972789":{"id":"n185972789","loc":[-85.635665,42.062491],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972790":{"id":"n185972790","loc":[-85.635617,42.061928],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972791":{"id":"n185972791","loc":[-85.635614,42.061898],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972793":{"id":"n185972793","loc":[-85.635379,42.060288],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972795":{"id":"n185972795","loc":[-85.635092,42.05799],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972797":{"id":"n185972797","loc":[-85.634843,42.055781],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972798":{"id":"n185972798","loc":[-85.634817,42.055549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972800":{"id":"n185972800","loc":[-85.634708,42.053942],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972802":{"id":"n185972802","loc":[-85.634447,42.051809],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972805":{"id":"n185972805","loc":[-85.634241,42.04946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972807":{"id":"n185972807","loc":[-85.633787,42.045926],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972809":{"id":"n185972809","loc":[-85.633811,42.045645],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972811":{"id":"n185972811","loc":[-85.63373,42.043626],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972813":{"id":"n185972813","loc":[-85.633698,42.042184],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972814":{"id":"n185972814","loc":[-85.63369,42.04181],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972815":{"id":"n185972815","loc":[-85.633681,42.040714],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972816":{"id":"n185972816","loc":[-85.633571,42.036322],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972817":{"id":"n185972817","loc":[-85.633537,42.034044],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972819":{"id":"n185972819","loc":[-85.633481,42.030785],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972821":{"id":"n185972821","loc":[-85.633452,42.027538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972824":{"id":"n185972824","loc":[-85.633438,42.027427],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972826":{"id":"n185972826","loc":[-85.633342,42.022656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972830":{"id":"n185972830","loc":[-85.63327,42.020724],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972832":{"id":"n185972832","loc":[-85.633198,42.019106],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972834":{"id":"n185972834","loc":[-85.633249,42.018363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972835":{"id":"n185972835","loc":[-85.633139,42.012944],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972836":{"id":"n185972836","loc":[-85.63309,42.008284],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:38Z","tags":{}},"n185972839":{"id":"n185972839","loc":[-85.63298,42.00005],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:38Z","tags":{}},"n185972845":{"id":"n185972845","loc":[-85.6325369,41.9764959],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972847":{"id":"n185972847","loc":[-85.6327549,41.9750005],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972849":{"id":"n185972849","loc":[-85.6329374,41.9742527],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972851":{"id":"n185972851","loc":[-85.6331387,41.9736039],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972862":{"id":"n185972862","loc":[-85.6383589,41.9585023],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972868":{"id":"n185972868","loc":[-85.6393633,41.9551716],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972878":{"id":"n185972878","loc":[-85.639377,41.95335],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972882":{"id":"n185972882","loc":[-85.6389179,41.9516944],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972885":{"id":"n185972885","loc":[-85.6387444,41.9512105],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972891":{"id":"n185972891","loc":[-85.636421,41.946392],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972895":{"id":"n185972895","loc":[-85.635965,41.945809],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972897":{"id":"n185972897","loc":[-85.635683,41.945449],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972899":{"id":"n185972899","loc":[-85.635281,41.9450252],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185972905":{"id":"n185972905","loc":[-85.6324428,41.9425743],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185985217":{"id":"n185985217","loc":[-85.638243,41.943674],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985219":{"id":"n185985219","loc":[-85.638228,41.943747],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985221":{"id":"n185985221","loc":[-85.638163,41.943797],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985222":{"id":"n185985222","loc":[-85.638089,41.943832],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985223":{"id":"n185985223","loc":[-85.637969,41.943841],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985225":{"id":"n185985225","loc":[-85.637841,41.943833],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985227":{"id":"n185985227","loc":[-85.637601,41.943789],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985229":{"id":"n185985229","loc":[-85.637449,41.943754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985231":{"id":"n185985231","loc":[-85.637342,41.943734],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985233":{"id":"n185985233","loc":[-85.637218,41.943703],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985235":{"id":"n185985235","loc":[-85.637151,41.943663],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985238":{"id":"n185985238","loc":[-85.637118,41.943615],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985240":{"id":"n185985240","loc":[-85.637073,41.943494],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185990434":{"id":"n185990434","loc":[-85.6329028,41.9984292],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"railway":"level_crossing"}},"n1475284023":{"id":"n1475284023","loc":[-85.6336163,41.9435806],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475293222":{"id":"n1475293222","loc":[-85.6394045,41.953658],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293226":{"id":"n1475293226","loc":[-85.6364975,41.9638663],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293234":{"id":"n1475293234","loc":[-85.6390449,41.9565145],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293240":{"id":"n1475293240","loc":[-85.636943,41.9473114],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293252":{"id":"n1475293252","loc":[-85.6392115,41.9559003],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293254":{"id":"n1475293254","loc":[-85.6348931,41.9685127],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{"railway":"level_crossing"}},"n1475293260":{"id":"n1475293260","loc":[-85.6375999,41.9485401],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1475293261":{"id":"n1475293261","loc":[-85.6391256,41.9523817],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"railway":"level_crossing"}},"n1475293264":{"id":"n1475293264","loc":[-85.6394155,41.9546493],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"railway":"level_crossing"}},"n1819805614":{"id":"n1819805614","loc":[-85.6345652,41.9363097],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805618":{"id":"n1819805618","loc":[-85.6295334,41.9426862],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805622":{"id":"n1819805622","loc":[-85.6308208,41.9430773],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805626":{"id":"n1819805626","loc":[-85.6274734,41.9406592],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805629":{"id":"n1819805629","loc":[-85.6296943,41.9430533],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805632":{"id":"n1819805632","loc":[-85.6340931,41.9354477],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805636":{"id":"n1819805636","loc":[-85.6304131,41.9436598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805639":{"id":"n1819805639","loc":[-85.6304882,41.9426623],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805641":{"id":"n1819805641","loc":[-85.6336103,41.9367487],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805643":{"id":"n1819805643","loc":[-85.6300376,41.9418084],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805645":{"id":"n1819805645","loc":[-85.6365286,41.9336679],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805647":{"id":"n1819805647","loc":[-85.632016,41.9429221],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805666":{"id":"n1819805666","loc":[-85.6314753,41.9442663],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805669":{"id":"n1819805669","loc":[-85.6268619,41.9402203],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805673":{"id":"n1819805673","loc":[-85.6296728,41.9412099],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805676":{"id":"n1819805676","loc":[-85.6354557,41.932766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805680":{"id":"n1819805680","loc":[-85.632752,41.9431012],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805683":{"id":"n1819805683","loc":[-85.631147,41.9432014],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805687":{"id":"n1819805687","loc":[-85.635284,41.9343942],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805690":{"id":"n1819805690","loc":[-85.6249736,41.9405794],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805694":{"id":"n1819805694","loc":[-85.6294153,41.9417925],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805698":{"id":"n1819805698","loc":[-85.6323486,41.9426986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805702":{"id":"n1819805702","loc":[-85.6340287,41.9373871],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805707":{"id":"n1819805707","loc":[-85.6353698,41.9316326],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805711":{"id":"n1819805711","loc":[-85.6284176,41.940356],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805715":{"id":"n1819805715","loc":[-85.6291471,41.9412897],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805718":{"id":"n1819805718","loc":[-85.6311105,41.943979],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805722":{"id":"n1819805722","loc":[-85.6320868,41.9400128],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805724":{"id":"n1819805724","loc":[-85.635166,41.9324627],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805727":{"id":"n1819805727","loc":[-85.6344686,41.9350567],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805728":{"id":"n1819805728","loc":[-85.6357132,41.9332369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805731":{"id":"n1819805731","loc":[-85.629984,41.9434444],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805760":{"id":"n1819805760","loc":[-85.6330996,41.9378784],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805766":{"id":"n1819805766","loc":[-85.625274,41.9411141],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805770":{"id":"n1819805770","loc":[-85.6326321,41.9412173],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805774":{"id":"n1819805774","loc":[-85.6347047,41.9312096],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805777":{"id":"n1819805777","loc":[-85.6363569,41.9339552],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805780":{"id":"n1819805780","loc":[-85.6327392,41.941926],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805783":{"id":"n1819805783","loc":[-85.6357239,41.9338435],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805786":{"id":"n1819805786","loc":[-85.6356595,41.9346576],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805789":{"id":"n1819805789","loc":[-85.6316469,41.9436598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805792":{"id":"n1819805792","loc":[-85.6350587,41.9354557],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805795":{"id":"n1819805795","loc":[-85.6360028,41.9322791],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805798":{"id":"n1819805798","loc":[-85.63125,41.9443062],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805802":{"id":"n1819805802","loc":[-85.6263362,41.9408109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805805":{"id":"n1819805805","loc":[-85.6315075,41.9438753],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805808":{"id":"n1819805808","loc":[-85.6340008,41.9316051],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805810":{"id":"n1819805810","loc":[-85.6345545,41.9320557],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805812":{"id":"n1819805812","loc":[-85.6250809,41.9408587],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805814":{"id":"n1819805814","loc":[-85.6257783,41.9400926],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805834":{"id":"n1819805834","loc":[-85.6326408,41.9424363],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805838":{"id":"n1819805838","loc":[-85.6365607,41.9334365],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805842":{"id":"n1819805842","loc":[-85.6288253,41.9410343],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805846":{"id":"n1819805846","loc":[-85.6279133,41.9402921],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805849":{"id":"n1819805849","loc":[-85.6289433,41.9405156],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805852":{"id":"n1819805852","loc":[-85.6313787,41.9439152],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805858":{"id":"n1819805858","loc":[-85.6300805,41.9420398],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805861":{"id":"n1819805861","loc":[-85.6321941,41.9396297],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805864":{"id":"n1819805864","loc":[-85.6329129,41.9393903],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805868":{"id":"n1819805868","loc":[-85.632001,41.9434922],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805870":{"id":"n1819805870","loc":[-85.6314903,41.9431535],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805873":{"id":"n1819805873","loc":[-85.6251667,41.9401166],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805876":{"id":"n1819805876","loc":[-85.63287,41.939941],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805878":{"id":"n1819805878","loc":[-85.6307886,41.9437317],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805880":{"id":"n1819805880","loc":[-85.6321727,41.940348],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805883":{"id":"n1819805883","loc":[-85.6265872,41.940113],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805885":{"id":"n1819805885","loc":[-85.6268404,41.9406672],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805887":{"id":"n1819805887","loc":[-85.6325267,41.9389035],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805889":{"id":"n1819805889","loc":[-85.6364964,41.933189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805911":{"id":"n1819805911","loc":[-85.6248663,41.9401804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805922":{"id":"n1819805922","loc":[-85.633267,41.9387199],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805925":{"id":"n1819805925","loc":[-85.6293402,41.9408428],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819848849":{"id":"n1819848849","loc":[-85.6464957,41.9695178],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848850":{"id":"n1819848850","loc":[-85.6497642,41.9611355],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848851":{"id":"n1819848851","loc":[-85.6480943,41.9624818],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848854":{"id":"n1819848854","loc":[-85.6500362,41.9657367],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848855":{"id":"n1819848855","loc":[-85.6493673,41.9783496],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848856":{"id":"n1819848856","loc":[-85.6457409,41.9548007],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848857":{"id":"n1819848857","loc":[-85.651313,41.9760426],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848858":{"id":"n1819848858","loc":[-85.6495819,41.9784772],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848859":{"id":"n1819848859","loc":[-85.6495105,41.9833722],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848860":{"id":"n1819848860","loc":[-85.6405053,41.9492792],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848863":{"id":"n1819848863","loc":[-85.6502293,41.9786826],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848865":{"id":"n1819848865","loc":[-85.6406877,41.9495106],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848870":{"id":"n1819848870","loc":[-85.6493136,41.9704611],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848871":{"id":"n1819848871","loc":[-85.6372249,41.9441284],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819848873":{"id":"n1819848873","loc":[-85.6512379,41.9659441],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848875":{"id":"n1819848875","loc":[-85.6508087,41.9650187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848877":{"id":"n1819848877","loc":[-85.6487166,41.9605352],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848878":{"id":"n1819848878","loc":[-85.6506478,41.9760665],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848879":{"id":"n1819848879","loc":[-85.651431,41.9758512],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848886":{"id":"n1819848886","loc":[-85.6477617,41.9563945],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848889":{"id":"n1819848889","loc":[-85.6497895,41.9832286],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848892":{"id":"n1819848892","loc":[-85.6504868,41.9791931],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848893":{"id":"n1819848893","loc":[-85.6498002,41.9615085],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848894":{"id":"n1819848894","loc":[-85.6404302,41.9502846],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848901":{"id":"n1819848901","loc":[-85.6354412,41.9439886],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848903":{"id":"n1819848903","loc":[-85.6472145,41.9698528],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848904":{"id":"n1819848904","loc":[-85.6401979,41.9486233],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848905":{"id":"n1819848905","loc":[-85.6475042,41.963503],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848909":{"id":"n1819848909","loc":[-85.6343405,41.94358],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848914":{"id":"n1819848914","loc":[-85.6503474,41.9737773],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848915":{"id":"n1819848915","loc":[-85.6389533,41.9470992],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848916":{"id":"n1819848916","loc":[-85.6483625,41.9577907],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848917":{"id":"n1819848917","loc":[-85.6484768,41.9617419],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848918":{"id":"n1819848918","loc":[-85.644078,41.9545693],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848919":{"id":"n1819848919","loc":[-85.6437169,41.9543041],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848920":{"id":"n1819848920","loc":[-85.6478331,41.9627949],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848922":{"id":"n1819848922","loc":[-85.6499144,41.9785889],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848924":{"id":"n1819848924","loc":[-85.647633,41.9720066],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848926":{"id":"n1819848926","loc":[-85.6487987,41.978868],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848927":{"id":"n1819848927","loc":[-85.6495105,41.9730355],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848928":{"id":"n1819848928","loc":[-85.648223,41.9829654],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848929":{"id":"n1819848929","loc":[-85.6514846,41.9659122],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848931":{"id":"n1819848931","loc":[-85.6498753,41.9731871],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848932":{"id":"n1819848932","loc":[-85.640906,41.9508575],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848933":{"id":"n1819848933","loc":[-85.649775,41.9799767],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848934":{"id":"n1819848934","loc":[-85.6507014,41.9739927],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848937":{"id":"n1819848937","loc":[-85.6479763,41.9840899],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848938":{"id":"n1819848938","loc":[-85.6501113,41.9600884],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848939":{"id":"n1819848939","loc":[-85.6389962,41.9478253],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848941":{"id":"n1819848941","loc":[-85.637469,41.9445791],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848942":{"id":"n1819848942","loc":[-85.6494569,41.9601682],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848943":{"id":"n1819848943","loc":[-85.6368803,41.9439351],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819848945":{"id":"n1819848945","loc":[-85.6474398,41.9724213],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848946":{"id":"n1819848946","loc":[-85.6382629,41.9463666],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848948":{"id":"n1819848948","loc":[-85.6489633,41.9830771],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848952":{"id":"n1819848952","loc":[-85.6488882,41.9600326],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848953":{"id":"n1819848953","loc":[-85.6488094,41.9774324],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848954":{"id":"n1819848954","loc":[-85.6491135,41.9600485],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848955":{"id":"n1819848955","loc":[-85.6501435,41.9734583],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848956":{"id":"n1819848956","loc":[-85.6495534,41.960958],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848958":{"id":"n1819848958","loc":[-85.6474683,41.9561491],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848959":{"id":"n1819848959","loc":[-85.6401083,41.9485451],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848960":{"id":"n1819848960","loc":[-85.6481764,41.9678686],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848961":{"id":"n1819848961","loc":[-85.6484017,41.967382],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848962":{"id":"n1819848962","loc":[-85.6501328,41.959897],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848964":{"id":"n1819848964","loc":[-85.6403695,41.9504586],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848966":{"id":"n1819848966","loc":[-85.6398975,41.9491499],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848967":{"id":"n1819848967","loc":[-85.6412455,41.9510187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848968":{"id":"n1819848968","loc":[-85.6482622,41.9619493],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848969":{"id":"n1819848969","loc":[-85.6405841,41.9501474],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848970":{"id":"n1819848970","loc":[-85.6478583,41.9703394],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848971":{"id":"n1819848971","loc":[-85.6493388,41.9832845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848972":{"id":"n1819848972","loc":[-85.6485664,41.9829415],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848974":{"id":"n1819848974","loc":[-85.6491457,41.9779887],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848975":{"id":"n1819848975","loc":[-85.6468889,41.9697033],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848976":{"id":"n1819848976","loc":[-85.6452726,41.9546072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848977":{"id":"n1819848977","loc":[-85.6448435,41.9546072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848979":{"id":"n1819848979","loc":[-85.6485342,41.9763138],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848980":{"id":"n1819848980","loc":[-85.6495282,41.9664087],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848986":{"id":"n1819848986","loc":[-85.6486307,41.9603278],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848987":{"id":"n1819848987","loc":[-85.6492278,41.9791871],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848990":{"id":"n1819848990","loc":[-85.6501934,41.9800724],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848992":{"id":"n1819848992","loc":[-85.6482445,41.9819685],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848993":{"id":"n1819848993","loc":[-85.6481871,41.9704451],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848994":{"id":"n1819848994","loc":[-85.6371364,41.9457602],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848996":{"id":"n1819848996","loc":[-85.6500362,41.9801023],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849000":{"id":"n1819849000","loc":[-85.639007,41.9485914],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849001":{"id":"n1819849001","loc":[-85.6488882,41.9669253],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849002":{"id":"n1819849002","loc":[-85.6484698,41.9565062],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849004":{"id":"n1819849004","loc":[-85.6510769,41.9761064],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849005":{"id":"n1819849005","loc":[-85.6503581,41.9799029],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849006":{"id":"n1819849006","loc":[-85.6489381,41.9703893],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849008":{"id":"n1819849008","loc":[-85.6497457,41.9833588],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849011":{"id":"n1819849011","loc":[-85.6497358,41.9717593],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849012":{"id":"n1819849012","loc":[-85.6494676,41.9796796],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849019":{"id":"n1819849019","loc":[-85.6486093,41.9771034],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849021":{"id":"n1819849021","loc":[-85.6504546,41.9796556],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849022":{"id":"n1819849022","loc":[-85.6371294,41.9454154],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849023":{"id":"n1819849023","loc":[-85.6503436,41.9759249],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849025":{"id":"n1819849025","loc":[-85.6462382,41.9693822],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849026":{"id":"n1819849026","loc":[-85.6497573,41.983093],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849028":{"id":"n1819849028","loc":[-85.6497465,41.9602799],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849029":{"id":"n1819849029","loc":[-85.6374728,41.9460698],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849030":{"id":"n1819849030","loc":[-85.6486592,41.9566039],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849031":{"id":"n1819849031","loc":[-85.6515989,41.9654993],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849032":{"id":"n1819849032","loc":[-85.6387028,41.9482658],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849033":{"id":"n1819849033","loc":[-85.6464742,41.9688398],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849034":{"id":"n1819849034","loc":[-85.6495212,41.9589236],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849035":{"id":"n1819849035","loc":[-85.6490599,41.9790096],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849036":{"id":"n1819849036","loc":[-85.6489918,41.9800724],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849038":{"id":"n1819849038","loc":[-85.6499182,41.9659042],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849040":{"id":"n1819849040","loc":[-85.639758,41.9490143],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849041":{"id":"n1819849041","loc":[-85.6514846,41.9755241],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849042":{"id":"n1819849042","loc":[-85.6436633,41.9540647],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849045":{"id":"n1819849045","loc":[-85.6475541,41.9726387],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849046":{"id":"n1819849046","loc":[-85.6488308,41.9718331],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849047":{"id":"n1819849047","loc":[-85.6377694,41.9460953],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849048":{"id":"n1819849048","loc":[-85.6490706,41.9804452],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849049":{"id":"n1819849049","loc":[-85.6485449,41.9766248],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849051":{"id":"n1819849051","loc":[-85.6483625,41.9790256],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849052":{"id":"n1819849052","loc":[-85.6490706,41.9585167],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849053":{"id":"n1819849053","loc":[-85.6425008,41.9522874],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849054":{"id":"n1819849054","loc":[-85.6475793,41.9632158],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849055":{"id":"n1819849055","loc":[-85.6408631,41.9499399],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849056":{"id":"n1819849056","loc":[-85.6483373,41.9814681],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849057":{"id":"n1819849057","loc":[-85.6313548,41.9442876],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849058":{"id":"n1819849058","loc":[-85.6432663,41.9529796],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849059":{"id":"n1819849059","loc":[-85.6487128,41.9582873],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849060":{"id":"n1819849060","loc":[-85.6482338,41.9817612],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849062":{"id":"n1819849062","loc":[-85.6485664,41.9788661],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849063":{"id":"n1819849063","loc":[-85.6373081,41.9448824],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849064":{"id":"n1819849064","loc":[-85.6472215,41.9557582],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849065":{"id":"n1819849065","loc":[-85.6348984,41.9440414],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819849066":{"id":"n1819849066","loc":[-85.6501972,41.9647315],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849067":{"id":"n1819849067","loc":[-85.6489741,41.9808281],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849068":{"id":"n1819849068","loc":[-85.6420111,41.9515034],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849069":{"id":"n1819849069","loc":[-85.6397972,41.9488882],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849070":{"id":"n1819849070","loc":[-85.6499718,41.9593465],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849071":{"id":"n1819849071","loc":[-85.6486844,41.9811311],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849072":{"id":"n1819849072","loc":[-85.6390392,41.9474663],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849074":{"id":"n1819849074","loc":[-85.6495642,41.9616362],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849075":{"id":"n1819849075","loc":[-85.6483518,41.9791931],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849076":{"id":"n1819849076","loc":[-85.6478974,41.9833104],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849077":{"id":"n1819849077","loc":[-85.640155,41.948719],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849078":{"id":"n1819849078","loc":[-85.6399366,41.9487845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849079":{"id":"n1819849079","loc":[-85.6492959,41.9825348],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849080":{"id":"n1819849080","loc":[-85.6505083,41.9648352],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849081":{"id":"n1819849081","loc":[-85.6492959,41.9645241],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849082":{"id":"n1819849082","loc":[-85.6402049,41.9491835],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849083":{"id":"n1819849083","loc":[-85.6495175,41.9826963],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849084":{"id":"n1819849084","loc":[-85.6480836,41.9728361],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849085":{"id":"n1819849085","loc":[-85.6374349,41.9443425],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849086":{"id":"n1819849086","loc":[-85.6478331,41.9681238],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849089":{"id":"n1819849089","loc":[-85.639368,41.9486169],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849092":{"id":"n1819849092","loc":[-85.6503581,41.9788022],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849093":{"id":"n1819849093","loc":[-85.64862,41.9568014],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849094":{"id":"n1819849094","loc":[-85.6496999,41.9828877],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849095":{"id":"n1819849095","loc":[-85.647472,41.972198],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849096":{"id":"n1819849096","loc":[-85.6485771,41.9644523],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849097":{"id":"n1819849097","loc":[-85.6388353,41.9480488],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849099":{"id":"n1819849099","loc":[-85.6472752,41.9683312],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849104":{"id":"n1819849104","loc":[-85.6479548,41.9836035],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849105":{"id":"n1819849105","loc":[-85.6462489,41.9691668],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849107":{"id":"n1819849107","loc":[-85.6511912,41.9746328],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849108":{"id":"n1819849108","loc":[-85.6498646,41.9714881],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849111":{"id":"n1819849111","loc":[-85.6488239,41.961684],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849112":{"id":"n1819849112","loc":[-85.6469356,41.9553812],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849114":{"id":"n1819849114","loc":[-85.6479548,41.9640853],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849119":{"id":"n1819849119","loc":[-85.6491565,41.961692],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849121":{"id":"n1819849121","loc":[-85.651667,41.9656728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849124":{"id":"n1819849124","loc":[-85.6388423,41.9484414],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849126":{"id":"n1819849126","loc":[-85.6371686,41.9450978],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849127":{"id":"n1819849127","loc":[-85.6502615,41.9656728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849129":{"id":"n1819849129","loc":[-85.6498501,41.9613031],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849131":{"id":"n1819849131","loc":[-85.6513881,41.9653298],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849133":{"id":"n1819849133","loc":[-85.639883,41.9485291],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849139":{"id":"n1819849139","loc":[-85.6508693,41.9658264],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849140":{"id":"n1819849140","loc":[-85.6486806,41.9761642],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849141":{"id":"n1819849141","loc":[-85.6483159,41.9717613],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849144":{"id":"n1819849144","loc":[-85.6443714,41.9546232],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849146":{"id":"n1819849146","loc":[-85.641775,41.9513359],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849147":{"id":"n1819849147","loc":[-85.6495604,41.9757335],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849148":{"id":"n1819849148","loc":[-85.6465671,41.9551678],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849150":{"id":"n1819849150","loc":[-85.6485127,41.9794084],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849151":{"id":"n1819849151","loc":[-85.6499144,41.9757096],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849152":{"id":"n1819849152","loc":[-85.6433736,41.9531072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849154":{"id":"n1819849154","loc":[-85.6489741,41.9607426],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849155":{"id":"n1819849155","loc":[-85.640627,41.9507697],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849156":{"id":"n1819849156","loc":[-85.6509659,41.9743058],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849157":{"id":"n1819849157","loc":[-85.6486844,41.9704431],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849158":{"id":"n1819849158","loc":[-85.6498538,41.9711132],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849159":{"id":"n1819849159","loc":[-85.6358937,41.943719],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849160":{"id":"n1819849160","loc":[-85.6497358,41.9707702],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849161":{"id":"n1819849161","loc":[-85.6480476,41.9564842],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849162":{"id":"n1819849162","loc":[-85.6482982,41.9574556],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849163":{"id":"n1819849163","loc":[-85.6501757,41.9757794],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849164":{"id":"n1819849164","loc":[-85.6372973,41.9459916],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849165":{"id":"n1819849165","loc":[-85.6513773,41.9750775],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849166":{"id":"n1819849166","loc":[-85.6436418,41.9537455],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849167":{"id":"n1819849167","loc":[-85.6483625,41.9571524],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849169":{"id":"n1819849169","loc":[-85.647751,41.9727962],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849170":{"id":"n1819849170","loc":[-85.6504546,41.9656808],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849171":{"id":"n1819849171","loc":[-85.6479977,41.971839],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849172":{"id":"n1819849172","loc":[-85.6482767,41.9642449],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849174":{"id":"n1819849174","loc":[-85.6414317,41.9512086],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849176":{"id":"n1819849176","loc":[-85.6469034,41.9685287],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849179":{"id":"n1819849179","loc":[-85.6408631,41.9497564],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849182":{"id":"n1819849182","loc":[-85.6476721,41.96384],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849183":{"id":"n1819849183","loc":[-85.6479725,41.983111],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849184":{"id":"n1819849184","loc":[-85.640788,41.9500516],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849185":{"id":"n1819849185","loc":[-85.6427798,41.9528778],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849186":{"id":"n1819849186","loc":[-85.6435308,41.9534124],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849187":{"id":"n1819849187","loc":[-85.6483733,41.9821998],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849189":{"id":"n1819849189","loc":[-85.6351752,41.9440796],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819849191":{"id":"n1819849191","loc":[-85.6487021,41.9601463],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849192":{"id":"n1819849192","loc":[-85.6363811,41.9437605],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849193":{"id":"n1819849193","loc":[-85.6490883,41.9759728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849194":{"id":"n1819849194","loc":[-85.6423292,41.9520081],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849195":{"id":"n1819849195","loc":[-85.6500003,41.960242],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849196":{"id":"n1819849196","loc":[-85.6385778,41.9466443],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849197":{"id":"n1819849197","loc":[-85.6494032,41.9718789],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849198":{"id":"n1819849198","loc":[-85.6404339,41.9506501],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849199":{"id":"n1819849199","loc":[-85.6426226,41.9527083],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849200":{"id":"n1819849200","loc":[-85.6439101,41.9545035],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849201":{"id":"n1819849201","loc":[-85.6516563,41.9657845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{}},"n1819849202":{"id":"n1819849202","loc":[-85.6473395,41.9699585],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{}},"n1819858501":{"id":"n1819858501","loc":[-85.6361263,41.9437126],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858503":{"id":"n1819858503","loc":[-85.6350068,41.944034],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819858513":{"id":"n1819858513","loc":[-85.6371402,41.9453282],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858518":{"id":"n1819858518","loc":[-85.6348713,41.9432923],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858523":{"id":"n1819858523","loc":[-85.6357047,41.943799],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858526":{"id":"n1819858526","loc":[-85.6349947,41.9435756],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858531":{"id":"n1819858531","loc":[-85.6350376,41.943827],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1820937508":{"id":"n1820937508","loc":[-85.1026013,42.0881722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937509":{"id":"n1820937509","loc":[-85.0558088,42.102493],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937511":{"id":"n1820937511","loc":[-85.3030116,41.9724451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937513":{"id":"n1820937513","loc":[-85.0353221,42.1027398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937514":{"id":"n1820937514","loc":[-85.0835468,42.1015469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937515":{"id":"n1820937515","loc":[-85.2421298,42.0106305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937517":{"id":"n1820937517","loc":[-85.0090632,42.0910452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937518":{"id":"n1820937518","loc":[-85.086626,42.0948838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937520":{"id":"n1820937520","loc":[-85.2552039,42.0015448],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937521":{"id":"n1820937521","loc":[-85.3739614,41.9969917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937522":{"id":"n1820937522","loc":[-85.4831166,41.993898],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937523":{"id":"n1820937523","loc":[-85.0341084,42.0977657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937524":{"id":"n1820937524","loc":[-85.3272802,41.9710333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937525":{"id":"n1820937525","loc":[-85.2125568,42.0414521],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937526":{"id":"n1820937526","loc":[-85.3798022,41.9992458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937527":{"id":"n1820937527","loc":[-85.2652021,41.999768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937528":{"id":"n1820937528","loc":[-85.3852739,42.0004896],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937529":{"id":"n1820937529","loc":[-85.3911919,42.0030513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937530":{"id":"n1820937530","loc":[-85.5440349,41.9717109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937531":{"id":"n1820937531","loc":[-85.2790155,41.9911764],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937532":{"id":"n1820937532","loc":[-85.4723277,41.9950518],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937533":{"id":"n1820937533","loc":[-85.5690546,41.9653931],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937535":{"id":"n1820937535","loc":[-85.5674882,41.9649623],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937536":{"id":"n1820937536","loc":[-85.6362815,41.9189165],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937537":{"id":"n1820937537","loc":[-85.5659003,41.963638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937539":{"id":"n1820937539","loc":[-85.6391353,41.9122262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937540":{"id":"n1820937540","loc":[-85.4834385,41.9894803],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937541":{"id":"n1820937541","loc":[-85.6399078,41.9160744],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937542":{"id":"n1820937542","loc":[-85.632874,41.941031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937543":{"id":"n1820937543","loc":[-85.1307591,42.0726961],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937544":{"id":"n1820937544","loc":[-85.6444397,41.9128378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937545":{"id":"n1820937545","loc":[-85.6197204,41.9420365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937546":{"id":"n1820937546","loc":[-85.1164857,42.0864631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937547":{"id":"n1820937547","loc":[-85.6476111,41.9142222],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937548":{"id":"n1820937548","loc":[-85.2915747,41.9774223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937549":{"id":"n1820937549","loc":[-85.6430192,41.9102461],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937550":{"id":"n1820937550","loc":[-85.1597495,42.0639017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937551":{"id":"n1820937551","loc":[-85.5504079,41.9701793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937553":{"id":"n1820937553","loc":[-85.2781317,41.9948951],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937555":{"id":"n1820937555","loc":[-85.3724594,41.997518],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937556":{"id":"n1820937556","loc":[-85.5629434,41.9665155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937557":{"id":"n1820937557","loc":[-85.3791971,41.9990808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937558":{"id":"n1820937558","loc":[-85.001891,42.0878843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937560":{"id":"n1820937560","loc":[-85.3140838,41.9709056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937561":{"id":"n1820937561","loc":[-85.2468032,42.0146987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937563":{"id":"n1820937563","loc":[-85.0877378,42.097255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937564":{"id":"n1820937564","loc":[-85.2442498,42.0150654],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937566":{"id":"n1820937566","loc":[-85.3108973,41.9701478],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937568":{"id":"n1820937568","loc":[-85.0344584,42.1016572],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937569":{"id":"n1820937569","loc":[-85.2331025,42.0297387],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937570":{"id":"n1820937570","loc":[-85.5058446,41.9746996],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937571":{"id":"n1820937571","loc":[-85.5622739,41.9676427],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937572":{"id":"n1820937572","loc":[-85.2792687,41.9890337],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937574":{"id":"n1820937574","loc":[-84.9909302,42.08695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937575":{"id":"n1820937575","loc":[-85.6218233,41.9418609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937576":{"id":"n1820937576","loc":[-85.3577437,41.9931062],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937577":{"id":"n1820937577","loc":[-85.639028,41.9165853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937578":{"id":"n1820937578","loc":[-84.9956576,42.0865348],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937579":{"id":"n1820937579","loc":[-85.4828376,41.990198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937580":{"id":"n1820937580","loc":[-85.3244478,41.9720543],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937582":{"id":"n1820937582","loc":[-85.0517479,42.1035159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937583":{"id":"n1820937583","loc":[-85.225646,42.0338025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937584":{"id":"n1820937584","loc":[-84.9941019,42.0862163],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937586":{"id":"n1820937586","loc":[-85.1051762,42.0879452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937587":{"id":"n1820937587","loc":[-85.1245203,42.0753162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937588":{"id":"n1820937588","loc":[-85.3250808,41.9719506],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937589":{"id":"n1820937589","loc":[-85.2720109,41.997933],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937590":{"id":"n1820937590","loc":[-85.2556653,42.0027248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937591":{"id":"n1820937591","loc":[-85.0872483,42.0943544],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937592":{"id":"n1820937592","loc":[-85.2778353,41.9955023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937593":{"id":"n1820937593","loc":[-85.2984733,41.9735538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937594":{"id":"n1820937594","loc":[-85.101578,42.0889552],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937595":{"id":"n1820937595","loc":[-85.3888745,42.0016959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937596":{"id":"n1820937596","loc":[-84.9903508,42.0870654],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937597":{"id":"n1820937597","loc":[-85.6405558,41.9146261],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937598":{"id":"n1820937598","loc":[-85.6460704,41.9141311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937599":{"id":"n1820937599","loc":[-85.0377468,42.1037428],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937600":{"id":"n1820937600","loc":[-85.2298345,42.0312899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937601":{"id":"n1820937601","loc":[-85.1080958,42.0861964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937602":{"id":"n1820937602","loc":[-85.6325307,41.9402329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937603":{"id":"n1820937603","loc":[-85.1165984,42.0832184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937604":{"id":"n1820937604","loc":[-85.6354446,41.9190602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937605":{"id":"n1820937605","loc":[-85.1114592,42.0862959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937606":{"id":"n1820937606","loc":[-85.0858763,42.1001646],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937607":{"id":"n1820937607","loc":[-85.0472083,42.1015151],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937608":{"id":"n1820937608","loc":[-85.0802477,42.1027609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937610":{"id":"n1820937610","loc":[-85.0924585,42.0928564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937611":{"id":"n1820937611","loc":[-85.0329617,42.09827],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937612":{"id":"n1820937612","loc":[-85.2814617,41.993465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937613":{"id":"n1820937613","loc":[-85.3097708,41.9700282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937614":{"id":"n1820937614","loc":[-85.2809427,41.993695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937615":{"id":"n1820937615","loc":[-85.0583233,42.1026494],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937617":{"id":"n1820937617","loc":[-85.2801592,41.9840021],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937619":{"id":"n1820937619","loc":[-85.1064154,42.0863449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937620":{"id":"n1820937620","loc":[-85.0423173,42.1014662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937621":{"id":"n1820937621","loc":[-85.2168913,42.0398107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937622":{"id":"n1820937622","loc":[-85.2798481,41.9833401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937623":{"id":"n1820937623","loc":[-85.0575468,42.1028672],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937625":{"id":"n1820937625","loc":[-85.0130369,42.0893067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937626":{"id":"n1820937626","loc":[-85.0346985,42.1018256],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937627":{"id":"n1820937627","loc":[-85.2231569,42.0372768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937628":{"id":"n1820937628","loc":[-85.2956195,41.9732268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937629":{"id":"n1820937629","loc":[-85.1052312,42.086893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937630":{"id":"n1820937630","loc":[-85.4813356,41.9958436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937631":{"id":"n1820937631","loc":[-85.0961599,42.0914672],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937632":{"id":"n1820937632","loc":[-85.308419,41.9704749],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937633":{"id":"n1820937633","loc":[-85.295952,41.9715119],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937634":{"id":"n1820937634","loc":[-85.3310933,41.9703923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937635":{"id":"n1820937635","loc":[-85.2940745,41.9739686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937636":{"id":"n1820937636","loc":[-85.3803343,42.000484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937637":{"id":"n1820937637","loc":[-85.1174231,42.0845533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937638":{"id":"n1820937638","loc":[-85.0095836,42.089839],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937639":{"id":"n1820937639","loc":[-85.3179354,41.9705866],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937640":{"id":"n1820937640","loc":[-85.257708,42.0001189],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937641":{"id":"n1820937641","loc":[-85.2563522,42.0002771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937642":{"id":"n1820937642","loc":[-85.3181929,41.970419],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937643":{"id":"n1820937643","loc":[-85.2911884,41.9757154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937644":{"id":"n1820937644","loc":[-85.2714423,41.9975862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937645":{"id":"n1820937645","loc":[-85.0193669,42.089888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937646":{"id":"n1820937646","loc":[-85.3889818,42.0039921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937647":{"id":"n1820937647","loc":[-85.3408093,41.9853965],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937648":{"id":"n1820937648","loc":[-85.1258091,42.0748332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937649":{"id":"n1820937649","loc":[-85.5722561,41.962782],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937650":{"id":"n1820937650","loc":[-85.3266902,41.9721819],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937651":{"id":"n1820937651","loc":[-85.1473255,42.065192],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937652":{"id":"n1820937652","loc":[-85.1462526,42.0655106],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937653":{"id":"n1820937653","loc":[-85.4641051,42.0013929],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937654":{"id":"n1820937654","loc":[-85.5620379,41.9700677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937655":{"id":"n1820937655","loc":[-85.3226025,41.971121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937656":{"id":"n1820937656","loc":[-85.0200965,42.0899516],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937657":{"id":"n1820937657","loc":[-85.0624714,42.1044711],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937658":{"id":"n1820937658","loc":[-85.5649562,41.9637178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937659":{"id":"n1820937659","loc":[-85.2360315,42.0253315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937660":{"id":"n1820937660","loc":[-85.3881449,41.9994475],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937661":{"id":"n1820937661","loc":[-85.5032911,41.976263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937662":{"id":"n1820937662","loc":[-85.481297,41.9871414],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937663":{"id":"n1820937663","loc":[-85.1167056,42.0841898],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937664":{"id":"n1820937664","loc":[-85.2891714,41.9787223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937665":{"id":"n1820937665","loc":[-85.4393429,42.0058736],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937666":{"id":"n1820937666","loc":[-85.0077007,42.0895762],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937667":{"id":"n1820937667","loc":[-85.2736202,41.9979171],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937668":{"id":"n1820937668","loc":[-84.9935332,42.0859296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937669":{"id":"n1820937669","loc":[-85.0622769,42.1046713],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937670":{"id":"n1820937670","loc":[-85.2309031,42.0311249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937671":{"id":"n1820937671","loc":[-85.0343726,42.10069],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937672":{"id":"n1820937672","loc":[-85.0596551,42.1048612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937673":{"id":"n1820937673","loc":[-85.1338597,42.0707449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937674":{"id":"n1820937674","loc":[-85.3117663,41.9689194],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937675":{"id":"n1820937675","loc":[-85.0705649,42.1057499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937676":{"id":"n1820937676","loc":[-85.2441425,42.0180944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937677":{"id":"n1820937677","loc":[-85.1171174,42.0862692],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937678":{"id":"n1820937678","loc":[-85.0346824,42.1005519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937680":{"id":"n1820937680","loc":[-85.2389927,42.0229245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937681":{"id":"n1820937681","loc":[-85.0834892,42.1018642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937682":{"id":"n1820937682","loc":[-85.0619443,42.1049459],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937683":{"id":"n1820937683","loc":[-85.2845366,41.9811868],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937684":{"id":"n1820937684","loc":[-85.210411,42.0394123],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937685":{"id":"n1820937685","loc":[-85.4377383,42.0055942],"version":"2","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:51:01Z","tags":{}},"n1820937686":{"id":"n1820937686","loc":[-85.2882058,41.9789138],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937687":{"id":"n1820937687","loc":[-85.2741191,41.9955808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937688":{"id":"n1820937688","loc":[-85.3442211,41.9903575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937689":{"id":"n1820937689","loc":[-85.2641413,41.9995237],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937690":{"id":"n1820937690","loc":[-85.2804489,41.9829174],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937691":{"id":"n1820937691","loc":[-85.5593342,41.9729074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937692":{"id":"n1820937692","loc":[-85.3590912,41.9932601],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937694":{"id":"n1820937694","loc":[-85.4826445,41.9957479],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937695":{"id":"n1820937695","loc":[-85.4539127,42.0063041],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937696":{"id":"n1820937696","loc":[-85.2456767,42.0153683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937697":{"id":"n1820937697","loc":[-85.5794015,41.9489631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937698":{"id":"n1820937698","loc":[-85.4108686,42.0078507],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937699":{"id":"n1820937699","loc":[-85.0616386,42.1051529],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937700":{"id":"n1820937700","loc":[-85.4977979,41.978241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937701":{"id":"n1820937701","loc":[-85.2488417,42.0086319],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937702":{"id":"n1820937702","loc":[-85.5588836,41.9728116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937703":{"id":"n1820937703","loc":[-85.4557366,42.0051241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937705":{"id":"n1820937705","loc":[-85.0723151,42.1056094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937706":{"id":"n1820937706","loc":[-85.0057909,42.0887323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937707":{"id":"n1820937707","loc":[-85.0756786,42.105677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937708":{"id":"n1820937708","loc":[-85.0901504,42.0940001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937709":{"id":"n1820937709","loc":[-85.0979999,42.0910213],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937710":{"id":"n1820937710","loc":[-85.2376301,42.0239686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937711":{"id":"n1820937711","loc":[-85.2780671,41.9902299],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937712":{"id":"n1820937712","loc":[-85.251481,42.0113188],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937713":{"id":"n1820937713","loc":[-85.3114767,41.9690311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937714":{"id":"n1820937714","loc":[-85.2649621,41.9975662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937715":{"id":"n1820937715","loc":[-85.283807,41.9813383],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937716":{"id":"n1820937716","loc":[-85.5515451,41.9703867],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937717":{"id":"n1820937717","loc":[-85.1176605,42.0850896],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937718":{"id":"n1820937718","loc":[-85.1069317,42.0862441],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937719":{"id":"n1820937719","loc":[-85.2739314,41.9976938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937720":{"id":"n1820937720","loc":[-85.5550212,41.9702112],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937721":{"id":"n1820937721","loc":[-85.3076679,41.9719904],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937722":{"id":"n1820937722","loc":[-85.592319,41.9440316],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937723":{"id":"n1820937723","loc":[-85.3139979,41.9704031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937724":{"id":"n1820937724","loc":[-85.0421134,42.1013149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937725":{"id":"n1820937725","loc":[-85.2508373,42.0102741],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937726":{"id":"n1820937726","loc":[-85.0830922,42.1038821],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937727":{"id":"n1820937727","loc":[-85.6342473,41.9360031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937730":{"id":"n1820937730","loc":[-85.0500192,42.1024942],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937731":{"id":"n1820937731","loc":[-85.3498644,41.9926221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937732":{"id":"n1820937732","loc":[-85.0234117,42.0918903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937733":{"id":"n1820937733","loc":[-85.0464425,42.1009408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937734":{"id":"n1820937734","loc":[-85.033938,42.099886],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937736":{"id":"n1820937736","loc":[-85.0152752,42.0886009],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937737":{"id":"n1820937737","loc":[-85.0441894,42.1012671],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937738":{"id":"n1820937738","loc":[-85.4668731,41.9979804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937739":{"id":"n1820937739","loc":[-85.4407377,42.006033],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937740":{"id":"n1820937740","loc":[-85.2262253,42.0344878],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937741":{"id":"n1820937741","loc":[-85.2550001,42.0033706],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937742":{"id":"n1820937742","loc":[-85.3071422,41.9722617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937743":{"id":"n1820937743","loc":[-85.6147852,41.942228],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937744":{"id":"n1820937744","loc":[-85.0183853,42.0901825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937745":{"id":"n1820937745","loc":[-85.6323161,41.9228489],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937746":{"id":"n1820937746","loc":[-85.0095568,42.0901376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937747":{"id":"n1820937747","loc":[-85.2524037,42.0113826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937748":{"id":"n1820937748","loc":[-85.3186864,41.9708578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937749":{"id":"n1820937749","loc":[-85.2805669,41.9870883],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937750":{"id":"n1820937750","loc":[-85.0585768,42.1038144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937751":{"id":"n1820937751","loc":[-85.2970786,41.9715358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937752":{"id":"n1820937752","loc":[-85.1315758,42.0723445],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937753":{"id":"n1820937753","loc":[-85.2448291,42.0175444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937754":{"id":"n1820937754","loc":[-85.2446468,42.0174248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937755":{"id":"n1820937755","loc":[-85.229165,42.032129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937756":{"id":"n1820937756","loc":[-85.5612654,41.9724926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937757":{"id":"n1820937757","loc":[-85.2331776,42.030854],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937758":{"id":"n1820937758","loc":[-85.2271909,42.0334519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937759":{"id":"n1820937759","loc":[-85.1032396,42.0879214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937760":{"id":"n1820937760","loc":[-85.0638447,42.1044154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937761":{"id":"n1820937761","loc":[-85.1260706,42.0745556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937762":{"id":"n1820937762","loc":[-85.3454485,41.99132],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937763":{"id":"n1820937763","loc":[-85.2639321,41.9980088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937764":{"id":"n1820937764","loc":[-85.0837681,42.1013746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937765":{"id":"n1820937765","loc":[-85.2808137,41.9869368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937766":{"id":"n1820937766","loc":[-85.6338997,41.9309373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937767":{"id":"n1820937767","loc":[-85.2267403,42.0332766],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937768":{"id":"n1820937768","loc":[-85.0605831,42.1052074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937769":{"id":"n1820937769","loc":[-85.0259021,42.0930037],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937770":{"id":"n1820937770","loc":[-85.232963,42.0313162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937771":{"id":"n1820937771","loc":[-85.2404947,42.0125381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937772":{"id":"n1820937772","loc":[-85.0910892,42.0935742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937773":{"id":"n1820937773","loc":[-85.2554829,42.0019435],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937774":{"id":"n1820937774","loc":[-85.2799339,41.9867773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937775":{"id":"n1820937775","loc":[-85.1075432,42.0852767],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937776":{"id":"n1820937776","loc":[-85.1176927,42.0854001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937777":{"id":"n1820937777","loc":[-85.1067064,42.0863357],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937778":{"id":"n1820937778","loc":[-85.2517492,42.0106333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937779":{"id":"n1820937779","loc":[-85.0987174,42.0909031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937780":{"id":"n1820937780","loc":[-85.1160083,42.0863994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937781":{"id":"n1820937781","loc":[-85.1268645,42.0739703],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937782":{"id":"n1820937782","loc":[-85.0454702,42.1002852],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937783":{"id":"n1820937783","loc":[-85.1334145,42.0705418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937784":{"id":"n1820937784","loc":[-85.5866542,41.947431],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937786":{"id":"n1820937786","loc":[-85.2359886,42.0250366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937787":{"id":"n1820937787","loc":[-85.3138048,41.9698527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937788":{"id":"n1820937788","loc":[-85.1274291,42.0733081],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937790":{"id":"n1820937790","loc":[-85.6292905,41.9411267],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937791":{"id":"n1820937791","loc":[-85.5958809,41.9417333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937792":{"id":"n1820937792","loc":[-85.1271019,42.0737581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937793":{"id":"n1820937793","loc":[-85.2312679,42.0314437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937794":{"id":"n1820937794","loc":[-85.1081387,42.0863516],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937795":{"id":"n1820937795","loc":[-85.2424473,42.0212109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937796":{"id":"n1820937796","loc":[-85.2710654,41.9975236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937797":{"id":"n1820937797","loc":[-85.4798408,41.9863223],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820937798":{"id":"n1820937798","loc":[-85.035939,42.104296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937799":{"id":"n1820937799","loc":[-85.2178139,42.0395398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937800":{"id":"n1820937800","loc":[-85.0630709,42.1042614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937801":{"id":"n1820937801","loc":[-85.0440124,42.1014861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937802":{"id":"n1820937802","loc":[-85.1321874,42.0720458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937804":{"id":"n1820937804","loc":[-85.079427,42.1029121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937805":{"id":"n1820937805","loc":[-85.2962632,41.9738968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937806":{"id":"n1820937806","loc":[-85.6334748,41.9274627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937807":{"id":"n1820937807","loc":[-85.1057341,42.0872804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937808":{"id":"n1820937808","loc":[-85.4960169,41.9778263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937809":{"id":"n1820937809","loc":[-85.2821226,41.9910273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937810":{"id":"n1820937810","loc":[-85.0013868,42.0885054],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937811":{"id":"n1820937811","loc":[-85.2952547,41.9729795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937812":{"id":"n1820937812","loc":[-85.1298375,42.0667842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937813":{"id":"n1820937813","loc":[-85.1339201,42.0710025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937814":{"id":"n1820937814","loc":[-85.0374356,42.103691],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937815":{"id":"n1820937815","loc":[-85.0061115,42.0880607],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937817":{"id":"n1820937817","loc":[-85.2398402,42.0226934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937818":{"id":"n1820937818","loc":[-85.123501,42.076236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937819":{"id":"n1820937819","loc":[-85.1209489,42.0791294],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937820":{"id":"n1820937820","loc":[-85.0818624,42.1025778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937821":{"id":"n1820937821","loc":[-85.4428835,42.0054749],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937822":{"id":"n1820937822","loc":[-85.4710359,41.9961147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937823":{"id":"n1820937823","loc":[-85.4253354,42.006198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937824":{"id":"n1820937824","loc":[-85.5486483,41.9709451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937825":{"id":"n1820937825","loc":[-85.2303238,42.0310452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937826":{"id":"n1820937826","loc":[-85.6450405,41.9136361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937828":{"id":"n1820937828","loc":[-85.2606853,41.9964073],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937830":{"id":"n1820937830","loc":[-85.097383,42.0911447],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937831":{"id":"n1820937831","loc":[-85.0498207,42.102136],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937832":{"id":"n1820937832","loc":[-85.1232435,42.0763793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937833":{"id":"n1820937833","loc":[-85.394093,42.0055921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937834":{"id":"n1820937834","loc":[-85.3566665,41.9928295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937835":{"id":"n1820937835","loc":[-85.3543276,41.9920002],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937837":{"id":"n1820937837","loc":[-85.084668,42.1034932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937838":{"id":"n1820937838","loc":[-85.4400296,42.0060649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937839":{"id":"n1820937839","loc":[-85.2362246,42.025714],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937840":{"id":"n1820937840","loc":[-85.0409225,42.1012791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937841":{"id":"n1820937841","loc":[-85.2442283,42.019832],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937842":{"id":"n1820937842","loc":[-85.1123001,42.084824],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937843":{"id":"n1820937843","loc":[-85.1603074,42.0638061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937844":{"id":"n1820937844","loc":[-85.1359744,42.0650646],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937845":{"id":"n1820937845","loc":[-85.1757569,42.053849],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937846":{"id":"n1820937846","loc":[-85.5200925,41.9716686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937848":{"id":"n1820937848","loc":[-85.5525322,41.9701315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937849":{"id":"n1820937849","loc":[-85.0406489,42.10149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937850":{"id":"n1820937850","loc":[-85.0142547,42.088825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937851":{"id":"n1820937851","loc":[-85.343749,41.9881884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937852":{"id":"n1820937852","loc":[-85.074996,42.1060205],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937853":{"id":"n1820937853","loc":[-85.2436275,42.0136864],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937854":{"id":"n1820937854","loc":[-85.2641453,41.9980897],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937856":{"id":"n1820937856","loc":[-85.2802343,41.9870086],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937857":{"id":"n1820937857","loc":[-85.0099256,42.0909946],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937858":{"id":"n1820937858","loc":[-85.493957,41.9786079],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937859":{"id":"n1820937859","loc":[-85.0739405,42.1059795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937860":{"id":"n1820937860","loc":[-85.2331605,42.0301423],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937862":{"id":"n1820937862","loc":[-85.2035231,42.0438425],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937863":{"id":"n1820937863","loc":[-85.0884928,42.0986971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937864":{"id":"n1820937864","loc":[-85.131597,42.0690142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937865":{"id":"n1820937865","loc":[-85.3937454,42.0052677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937866":{"id":"n1820937866","loc":[-85.2212729,42.0378561],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937867":{"id":"n1820937867","loc":[-85.0886068,42.0982421],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937868":{"id":"n1820937868","loc":[-85.0875004,42.0968064],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937869":{"id":"n1820937869","loc":[-85.0771323,42.1042642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937870":{"id":"n1820937870","loc":[-85.0164554,42.0894887],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937871":{"id":"n1820937871","loc":[-85.6069102,41.9415577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937872":{"id":"n1820937872","loc":[-85.3273875,41.9704908],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937873":{"id":"n1820937873","loc":[-85.3890891,41.9997983],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937875":{"id":"n1820937875","loc":[-85.5091276,41.9723705],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937876":{"id":"n1820937876","loc":[-85.0770626,42.1047696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937877":{"id":"n1820937877","loc":[-85.612575,41.9419567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937878":{"id":"n1820937878","loc":[-85.3868146,42.0036094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937879":{"id":"n1820937879","loc":[-85.2722738,41.9981204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937880":{"id":"n1820937880","loc":[-85.3064878,41.9723733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937882":{"id":"n1820937882","loc":[-85.1270845,42.0727678],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937884":{"id":"n1820937884","loc":[-85.3316512,41.97923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937885":{"id":"n1820937885","loc":[-85.3932519,42.0042472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937886":{"id":"n1820937886","loc":[-85.2457411,42.0175444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937887":{"id":"n1820937887","loc":[-85.1397509,42.0648415],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937891":{"id":"n1820937891","loc":[-85.3196735,41.9719665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937892":{"id":"n1820937892","loc":[-85.3372473,41.9845033],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937894":{"id":"n1820937894","loc":[-85.3254778,41.9719745],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937897":{"id":"n1820937897","loc":[-85.3185148,41.9691268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937899":{"id":"n1820937899","loc":[-85.5419106,41.9714556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937901":{"id":"n1820937901","loc":[-85.3293509,41.9748368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937903":{"id":"n1820937903","loc":[-85.0798078,42.1028365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937905":{"id":"n1820937905","loc":[-85.3954191,42.0056025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937909":{"id":"n1820937909","loc":[-85.3417534,41.9857155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937913":{"id":"n1820937913","loc":[-84.9927822,42.0857107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937915":{"id":"n1820937915","loc":[-85.5444212,41.9712801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937917":{"id":"n1820937917","loc":[-85.259088,41.9981682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937921":{"id":"n1820937921","loc":[-85.2784576,41.9876358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937922":{"id":"n1820937922","loc":[-84.9971918,42.087753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937924":{"id":"n1820937924","loc":[-85.5310688,41.966899],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820937928":{"id":"n1820937928","loc":[-85.3766436,41.9979326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937930":{"id":"n1820937930","loc":[-85.5494852,41.9704346],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937933":{"id":"n1820937933","loc":[-85.5548281,41.9695412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937935":{"id":"n1820937935","loc":[-85.0768588,42.105088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937937":{"id":"n1820937937","loc":[-85.2646885,41.9978054],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937939":{"id":"n1820937939","loc":[-85.2441532,42.0176082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937941":{"id":"n1820937941","loc":[-85.105553,42.0877928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937943":{"id":"n1820937943","loc":[-85.0879457,42.0958909],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937944":{"id":"n1820937944","loc":[-85.3187015,41.9704402],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937945":{"id":"n1820937945","loc":[-85.5624456,41.970626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937946":{"id":"n1820937946","loc":[-85.0580176,42.1028644],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937948":{"id":"n1820937948","loc":[-85.3016061,41.9726286],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937949":{"id":"n1820937949","loc":[-85.4310388,42.0069418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937950":{"id":"n1820937950","loc":[-85.2945144,41.9740723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937951":{"id":"n1820937951","loc":[-85.1170222,42.082657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937952":{"id":"n1820937952","loc":[-85.0864503,42.0947632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937953":{"id":"n1820937953","loc":[-85.4285926,42.0059533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937970":{"id":"n1820937970","loc":[-85.3629965,41.9938023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937972":{"id":"n1820937972","loc":[-85.2438099,42.0199755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937974":{"id":"n1820937974","loc":[-85.1327654,42.0699285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937977":{"id":"n1820937977","loc":[-85.1515956,42.0611935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937978":{"id":"n1820937978","loc":[-85.0107369,42.0896638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937979":{"id":"n1820937979","loc":[-85.1152626,42.0862083],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937980":{"id":"n1820937980","loc":[-85.4531831,42.0062881],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937981":{"id":"n1820937981","loc":[-85.0341473,42.0985924],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937982":{"id":"n1820937982","loc":[-85.0877485,42.0960171],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937983":{"id":"n1820937983","loc":[-85.2756373,41.9951742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937984":{"id":"n1820937984","loc":[-85.2965421,41.9714401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937985":{"id":"n1820937985","loc":[-85.2409775,42.0226934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937986":{"id":"n1820937986","loc":[-85.0170723,42.0900579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937987":{"id":"n1820937987","loc":[-85.1034663,42.0880555],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937988":{"id":"n1820937988","loc":[-85.0585071,42.1031577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937990":{"id":"n1820937990","loc":[-85.0819174,42.1032373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937992":{"id":"n1820937992","loc":[-85.0546608,42.1030542],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937993":{"id":"n1820937993","loc":[-85.0100811,42.0906125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937995":{"id":"n1820937995","loc":[-85.6304278,41.9432655],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937997":{"id":"n1820937997","loc":[-85.0255628,42.092778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820938011":{"id":"n1820938011","loc":[-85.2316756,42.0317146],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938012":{"id":"n1820938012","loc":[-85.4067917,42.008042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938013":{"id":"n1820938013","loc":[-85.390398,42.0028759],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938014":{"id":"n1820938014","loc":[-85.0161604,42.0886527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938015":{"id":"n1820938015","loc":[-85.125337,42.0744589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938016":{"id":"n1820938016","loc":[-85.2151317,42.0404801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938017":{"id":"n1820938017","loc":[-85.3165085,41.9706025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938018":{"id":"n1820938018","loc":[-85.5641193,41.9640688],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938019":{"id":"n1820938019","loc":[-85.147583,42.0642203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938022":{"id":"n1820938022","loc":[-85.2803781,41.9947886],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938024":{"id":"n1820938024","loc":[-85.2692469,41.9982053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938026":{"id":"n1820938026","loc":[-85.4321975,42.0067505],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938028":{"id":"n1820938028","loc":[-85.572535,41.9633405],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938030":{"id":"n1820938030","loc":[-85.3237505,41.9716475],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938032":{"id":"n1820938032","loc":[-85.6487698,41.9141583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938033":{"id":"n1820938033","loc":[-85.0526371,42.1038315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938034":{"id":"n1820938034","loc":[-85.088069,42.0978731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938035":{"id":"n1820938035","loc":[-85.2516312,42.0102267],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938039":{"id":"n1820938039","loc":[-85.2731374,41.9982958],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938040":{"id":"n1820938040","loc":[-85.5453224,41.9713439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938041":{"id":"n1820938041","loc":[-85.4480548,42.0049647],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938043":{"id":"n1820938043","loc":[-85.2504081,42.010322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938045":{"id":"n1820938045","loc":[-85.2663447,41.99919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938046":{"id":"n1820938046","loc":[-85.0507287,42.102907],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938047":{"id":"n1820938047","loc":[-85.0408246,42.1024743],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938048":{"id":"n1820938048","loc":[-85.2796335,41.9866099],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938050":{"id":"n1820938050","loc":[-85.452475,42.0061127],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938051":{"id":"n1820938051","loc":[-85.2410569,42.0128147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938052":{"id":"n1820938052","loc":[-85.0413302,42.1011477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938053":{"id":"n1820938053","loc":[-85.6327409,41.9197627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938056":{"id":"n1820938056","loc":[-85.1072039,42.0857994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938057":{"id":"n1820938057","loc":[-85.2001114,42.0448145],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938058":{"id":"n1820938058","loc":[-85.2655347,41.9978186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938059":{"id":"n1820938059","loc":[-85.2330918,42.0304874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938060":{"id":"n1820938060","loc":[-85.2601113,41.9966545],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938061":{"id":"n1820938061","loc":[-85.5397863,41.9708494],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938062":{"id":"n1820938062","loc":[-85.2702085,41.9977217],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938063":{"id":"n1820938063","loc":[-85.2219982,42.03699],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938064":{"id":"n1820938064","loc":[-85.0668957,42.105121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938065":{"id":"n1820938065","loc":[-85.2328665,42.0270769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938066":{"id":"n1820938066","loc":[-85.3189654,41.9694778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938067":{"id":"n1820938067","loc":[-85.3814115,42.0022915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938068":{"id":"n1820938068","loc":[-85.2759108,41.9956008],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938069":{"id":"n1820938069","loc":[-85.0391938,42.1034853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938070":{"id":"n1820938070","loc":[-85.2850623,41.9810353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938071":{"id":"n1820938071","loc":[-85.538074,41.970855],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938073":{"id":"n1820938073","loc":[-85.1319661,42.0670932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938074":{"id":"n1820938074","loc":[-85.2816763,41.9913678],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938075":{"id":"n1820938075","loc":[-85.3182144,41.9700282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938076":{"id":"n1820938076","loc":[-85.5909028,41.9458989],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938077":{"id":"n1820938077","loc":[-85.4057617,42.0074361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938078":{"id":"n1820938078","loc":[-85.2620438,41.9967729],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938079":{"id":"n1820938079","loc":[-85.1122143,42.0851107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938080":{"id":"n1820938080","loc":[-85.2443785,42.0174567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938081":{"id":"n1820938081","loc":[-85.0319733,42.0953853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938082":{"id":"n1820938082","loc":[-85.0878276,42.09443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938083":{"id":"n1820938083","loc":[-85.0271789,42.0935809],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938084":{"id":"n1820938084","loc":[-85.0326399,42.0974222],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938085":{"id":"n1820938085","loc":[-85.3989167,42.0065592],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938086":{"id":"n1820938086","loc":[-85.3263361,41.9721261],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938087":{"id":"n1820938087","loc":[-85.2547855,42.0037134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938088":{"id":"n1820938088","loc":[-85.4373259,42.005746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938089":{"id":"n1820938089","loc":[-85.3094275,41.9699245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938090":{"id":"n1820938090","loc":[-85.2783246,41.9872793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938092":{"id":"n1820938092","loc":[-85.0815633,42.1025169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938093":{"id":"n1820938093","loc":[-85.1788511,42.0522134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938095":{"id":"n1820938095","loc":[-85.2830345,41.9816733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938096":{"id":"n1820938096","loc":[-85.0744984,42.1059835],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938097":{"id":"n1820938097","loc":[-85.2788396,41.9879333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938098":{"id":"n1820938098","loc":[-85.3640093,41.9946531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938099":{"id":"n1820938099","loc":[-85.291167,41.9787463],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938100":{"id":"n1820938100","loc":[-85.0772436,42.1038156],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938101":{"id":"n1820938101","loc":[-85.00563,42.0887482],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938102":{"id":"n1820938102","loc":[-85.0326881,42.0961245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938104":{"id":"n1820938104","loc":[-85.0530448,42.1038634],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938105":{"id":"n1820938105","loc":[-85.2625266,41.9970639],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938106":{"id":"n1820938106","loc":[-85.2827556,41.9823512],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938107":{"id":"n1820938107","loc":[-85.2784319,41.9910752],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938108":{"id":"n1820938108","loc":[-85.0882099,42.094393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938109":{"id":"n1820938109","loc":[-85.5718484,41.9645371],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938110":{"id":"n1820938110","loc":[-85.2559764,42.0099317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938111":{"id":"n1820938111","loc":[-85.2969284,41.973179],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938113":{"id":"n1820938113","loc":[-85.3875055,42.0019726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938114":{"id":"n1820938114","loc":[-85.4250779,42.0068199],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938115":{"id":"n1820938115","loc":[-85.0645367,42.104889],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938116":{"id":"n1820938116","loc":[-85.1636762,42.0623724],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938117":{"id":"n1820938117","loc":[-85.0757322,42.1055935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938118":{"id":"n1820938118","loc":[-85.3695197,41.9981559],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938120":{"id":"n1820938120","loc":[-85.1297516,42.0671027],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938121":{"id":"n1820938121","loc":[-85.1057448,42.0875551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938122":{"id":"n1820938122","loc":[-85.2805175,41.9943182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938123":{"id":"n1820938123","loc":[-85.2545173,42.0040722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938124":{"id":"n1820938124","loc":[-84.9966607,42.0871319],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938125":{"id":"n1820938125","loc":[-85.0099899,42.0904612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938126":{"id":"n1820938126","loc":[-85.2489919,42.0091102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938127":{"id":"n1820938127","loc":[-85.0342706,42.0979476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938128":{"id":"n1820938128","loc":[-85.1080891,42.0855884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938129":{"id":"n1820938129","loc":[-85.0128183,42.0905356],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938130":{"id":"n1820938130","loc":[-85.631608,41.9434251],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938131":{"id":"n1820938131","loc":[-85.2551975,42.0008524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938132":{"id":"n1820938132","loc":[-85.6421823,41.9096233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938133":{"id":"n1820938133","loc":[-85.0125059,42.0906284],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938134":{"id":"n1820938134","loc":[-85.5499358,41.9701793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938135":{"id":"n1820938135","loc":[-85.5472107,41.9712323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938136":{"id":"n1820938136","loc":[-85.2760758,41.9958691],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938137":{"id":"n1820938137","loc":[-85.276678,41.9960433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938138":{"id":"n1820938138","loc":[-85.0570319,42.1024731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938140":{"id":"n1820938140","loc":[-85.2394325,42.0227492],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938142":{"id":"n1820938142","loc":[-85.5666341,41.9638829],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938144":{"id":"n1820938144","loc":[-85.258101,41.9996353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938147":{"id":"n1820938147","loc":[-85.2129645,42.0413565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938149":{"id":"n1820938149","loc":[-84.9962369,42.0868373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938151":{"id":"n1820938151","loc":[-85.2570386,42.0084968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938153":{"id":"n1820938153","loc":[-85.3971142,42.0050285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938155":{"id":"n1820938155","loc":[-85.1072093,42.0855566],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938157":{"id":"n1820938157","loc":[-85.2840323,41.9920959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938159":{"id":"n1820938159","loc":[-85.1187924,42.0816458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938161":{"id":"n1820938161","loc":[-85.2681324,41.9985788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938163":{"id":"n1820938163","loc":[-85.0887034,42.0984969],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938165":{"id":"n1820938165","loc":[-85.4133405,42.0073141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938166":{"id":"n1820938166","loc":[-85.0097445,42.0902888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938167":{"id":"n1820938167","loc":[-85.0828133,42.1037388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938168":{"id":"n1820938168","loc":[-85.0549599,42.1030833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938169":{"id":"n1820938169","loc":[-85.4571528,42.0010421],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938178":{"id":"n1820938178","loc":[-85.2706644,41.9975941],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938180":{"id":"n1820938180","loc":[-85.2258606,42.0335794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938182":{"id":"n1820938182","loc":[-85.2832276,41.9814659],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938184":{"id":"n1820938184","loc":[-85.1082299,42.0860928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938185":{"id":"n1820938185","loc":[-85.3839392,42.0022381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938186":{"id":"n1820938186","loc":[-85.2772131,41.995905],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938187":{"id":"n1820938187","loc":[-85.1044895,42.0879214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938188":{"id":"n1820938188","loc":[-85.2135267,42.0407087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938189":{"id":"n1820938189","loc":[-85.2543993,42.0044628],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938190":{"id":"n1820938190","loc":[-85.1501793,42.0617351],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938191":{"id":"n1820938191","loc":[-85.3350587,41.9820469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938192":{"id":"n1820938192","loc":[-85.1350731,42.0655735],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938193":{"id":"n1820938193","loc":[-85.0404008,42.1028843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938194":{"id":"n1820938194","loc":[-85.6323161,41.943042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938195":{"id":"n1820938195","loc":[-85.1259593,42.0742837],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938196":{"id":"n1820938196","loc":[-85.4562988,42.0033758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938197":{"id":"n1820938197","loc":[-85.256824,42.0056826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938198":{"id":"n1820938198","loc":[-85.2742103,41.9963862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938199":{"id":"n1820938199","loc":[-85.0380888,42.1037877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938200":{"id":"n1820938200","loc":[-85.47404,41.9944721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938201":{"id":"n1820938201","loc":[-85.103021,42.087948],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938202":{"id":"n1820938202","loc":[-85.4030151,42.0065113],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938203":{"id":"n1820938203","loc":[-85.2113981,42.040735],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938204":{"id":"n1820938204","loc":[-85.2603433,41.9965137],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938206":{"id":"n1820938206","loc":[-85.1669378,42.0607634],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938207":{"id":"n1820938207","loc":[-85.0642027,42.1046076],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938208":{"id":"n1820938208","loc":[-85.2812428,41.9915696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938209":{"id":"n1820938209","loc":[-85.0839559,42.1038343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938210":{"id":"n1820938210","loc":[-85.1239946,42.0769368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938211":{"id":"n1820938211","loc":[-85.2311177,42.0283042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938212":{"id":"n1820938212","loc":[-85.2791614,41.9882682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938213":{"id":"n1820938213","loc":[-85.2674941,41.9987582],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938214":{"id":"n1820938214","loc":[-85.352787,41.9919579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938215":{"id":"n1820938215","loc":[-85.0874146,42.0952182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938216":{"id":"n1820938216","loc":[-85.0069711,42.0877092],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938217":{"id":"n1820938217","loc":[-85.2059049,42.0404004],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938218":{"id":"n1820938218","loc":[-85.2403552,42.0227332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938219":{"id":"n1820938219","loc":[-85.2492923,42.0098915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938220":{"id":"n1820938220","loc":[-85.269778,41.9979541],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938221":{"id":"n1820938221","loc":[-85.2097673,42.0389024],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938222":{"id":"n1820938222","loc":[-85.0845942,42.1032015],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938223":{"id":"n1820938223","loc":[-84.993206,42.0858142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938224":{"id":"n1820938224","loc":[-85.2108187,42.0402729],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938225":{"id":"n1820938225","loc":[-84.9893959,42.0873043],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938226":{"id":"n1820938226","loc":[-85.2952332,41.9719984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938227":{"id":"n1820938227","loc":[-85.4100961,42.0081536],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938228":{"id":"n1820938228","loc":[-85.3299088,41.9785696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938229":{"id":"n1820938229","loc":[-85.2258176,42.0340097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938230":{"id":"n1820938230","loc":[-85.3146739,41.9711449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938231":{"id":"n1820938231","loc":[-85.5447645,41.9712801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938232":{"id":"n1820938232","loc":[-85.5510087,41.9705941],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938233":{"id":"n1820938233","loc":[-85.5122389,41.9703445],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938234":{"id":"n1820938234","loc":[-85.2792687,41.9865381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938235":{"id":"n1820938235","loc":[-85.1475229,42.0630151],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938237":{"id":"n1820938237","loc":[-85.0332889,42.0996034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938238":{"id":"n1820938238","loc":[-85.2588882,41.9986877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938239":{"id":"n1820938239","loc":[-85.0656458,42.1050892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938240":{"id":"n1820938240","loc":[-84.9913915,42.086098],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938241":{"id":"n1820938241","loc":[-85.4752416,41.9944402],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938242":{"id":"n1820938242","loc":[-85.1214304,42.0791147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938243":{"id":"n1820938243","loc":[-85.0075183,42.0886925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938244":{"id":"n1820938244","loc":[-85.1052888,42.0872087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938245":{"id":"n1820938245","loc":[-85.3104252,41.9703393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938246":{"id":"n1820938246","loc":[-85.232109,42.0318158],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938247":{"id":"n1820938247","loc":[-85.0756075,42.1059528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938248":{"id":"n1820938248","loc":[-85.0075612,42.0890866],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938249":{"id":"n1820938249","loc":[-85.1013312,42.0897474],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938250":{"id":"n1820938250","loc":[-85.1168076,42.0828919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938251":{"id":"n1820938251","loc":[-85.2951367,41.9723334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938252":{"id":"n1820938252","loc":[-85.0879363,42.0976053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938253":{"id":"n1820938253","loc":[-85.0354763,42.1021838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938254":{"id":"n1820938254","loc":[-85.2379627,42.0236339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938255":{"id":"n1820938255","loc":[-85.1308245,42.0685364],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938256":{"id":"n1820938256","loc":[-85.0914446,42.0934774],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938257":{"id":"n1820938257","loc":[-85.2436812,42.014069],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938258":{"id":"n1820938258","loc":[-85.0682529,42.1056106],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938259":{"id":"n1820938259","loc":[-85.290652,41.9766805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938260":{"id":"n1820938260","loc":[-85.0133494,42.0897434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938261":{"id":"n1820938261","loc":[-85.2753047,41.9949429],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938262":{"id":"n1820938262","loc":[-85.0314691,42.0950788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938263":{"id":"n1820938263","loc":[-85.3444786,41.9908359],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938264":{"id":"n1820938264","loc":[-85.0443115,42.1009061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938265":{"id":"n1820938265","loc":[-85.0634853,42.1043159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938267":{"id":"n1820938267","loc":[-85.3978223,42.0053952],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938268":{"id":"n1820938268","loc":[-85.0228659,42.0911885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938269":{"id":"n1820938269","loc":[-85.0220237,42.0906272],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938270":{"id":"n1820938270","loc":[-85.1061525,42.0863369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938271":{"id":"n1820938271","loc":[-85.2382309,42.0233708],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938272":{"id":"n1820938272","loc":[-85.310672,41.9702755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938273":{"id":"n1820938273","loc":[-85.1448192,42.0652613],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938274":{"id":"n1820938274","loc":[-85.6036057,41.9403766],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938275":{"id":"n1820938275","loc":[-85.0778941,42.1032413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938276":{"id":"n1820938276","loc":[-85.1279374,42.0723974],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938277":{"id":"n1820938277","loc":[-85.2806635,41.9847836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938278":{"id":"n1820938278","loc":[-85.2653201,41.9976352],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938279":{"id":"n1820938279","loc":[-85.0351665,42.1001805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938280":{"id":"n1820938280","loc":[-85.0718269,42.1056253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938281":{"id":"n1820938281","loc":[-85.2574248,42.0075322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938282":{"id":"n1820938282","loc":[-85.126666,42.0740778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938283":{"id":"n1820938283","loc":[-85.077705,42.1034733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938284":{"id":"n1820938284","loc":[-85.3535552,41.9919045],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938286":{"id":"n1820938286","loc":[-85.2810711,41.9866657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938287":{"id":"n1820938287","loc":[-85.4567494,42.0019885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938288":{"id":"n1820938288","loc":[-85.2642419,41.9992936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938289":{"id":"n1820938289","loc":[-85.2643344,41.9980925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938290":{"id":"n1820938290","loc":[-85.3270335,41.9776125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938291":{"id":"n1820938291","loc":[-85.1200584,42.0795077],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938292":{"id":"n1820938292","loc":[-85.2290792,42.0340256],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938293":{"id":"n1820938293","loc":[-85.6015887,41.9401372],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938294":{"id":"n1820938294","loc":[-85.5370869,41.970488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938295":{"id":"n1820938295","loc":[-85.3108866,41.9698048],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938297":{"id":"n1820938297","loc":[-85.1556511,42.0628184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938298":{"id":"n1820938298","loc":[-85.0027922,42.0875221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938300":{"id":"n1820938300","loc":[-85.3873338,42.0040614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938301":{"id":"n1820938301","loc":[-85.0350753,42.1004034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938302":{"id":"n1820938302","loc":[-85.6239476,41.9411906],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938304":{"id":"n1820938304","loc":[-85.0118246,42.0897964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938306":{"id":"n1820938306","loc":[-85.4796877,41.995275],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938307":{"id":"n1820938307","loc":[-85.5388636,41.9707856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938309":{"id":"n1820938309","loc":[-85.2971902,41.9727773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938310":{"id":"n1820938310","loc":[-85.5426831,41.9715513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938311":{"id":"n1820938311","loc":[-85.2798373,41.9836671],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938312":{"id":"n1820938312","loc":[-85.2432198,42.0104017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938313":{"id":"n1820938313","loc":[-85.2650412,41.9987554],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938317":{"id":"n1820938317","loc":[-85.0015423,42.0882386],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938318":{"id":"n1820938318","loc":[-85.1409783,42.064879],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938319":{"id":"n1820938319","loc":[-85.1691908,42.058995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938320":{"id":"n1820938320","loc":[-85.1059165,42.0864882],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938321":{"id":"n1820938321","loc":[-85.3664941,41.9965771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938323":{"id":"n1820938323","loc":[-85.3143198,41.9710971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938324":{"id":"n1820938324","loc":[-85.0016067,42.0880675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938325":{"id":"n1820938325","loc":[-85.0148139,42.0887164],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938326":{"id":"n1820938326","loc":[-85.0324682,42.0959056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938327":{"id":"n1820938327","loc":[-85.0898661,42.0939921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938328":{"id":"n1820938328","loc":[-85.2556427,42.0004936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938329":{"id":"n1820938329","loc":[-85.6287112,41.9407437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938330":{"id":"n1820938330","loc":[-84.9913392,42.0866701],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938331":{"id":"n1820938331","loc":[-85.2685777,41.9984632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938332":{"id":"n1820938332","loc":[-85.0078884,42.0901614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938333":{"id":"n1820938333","loc":[-84.999642,42.0878616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938334":{"id":"n1820938334","loc":[-85.0188909,42.0899186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938335":{"id":"n1820938335","loc":[-85.2830238,41.9819843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938336":{"id":"n1820938336","loc":[-85.2491421,42.0096204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938337":{"id":"n1820938337","loc":[-85.0585701,42.1034295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938338":{"id":"n1820938338","loc":[-85.0651965,42.1051636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938339":{"id":"n1820938339","loc":[-85.0583944,42.104292],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938340":{"id":"n1820938340","loc":[-85.119876,42.0801567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938341":{"id":"n1820938341","loc":[-85.0943937,42.0931323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938342":{"id":"n1820938342","loc":[-85.1504583,42.0613209],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938343":{"id":"n1820938343","loc":[-85.0425426,42.1019836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938345":{"id":"n1820938345","loc":[-84.9991391,42.0878206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938346":{"id":"n1820938346","loc":[-85.2563841,42.0094614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938347":{"id":"n1820938347","loc":[-85.0515387,42.103297],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938348":{"id":"n1820938348","loc":[-85.0857261,42.1003636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938349":{"id":"n1820938349","loc":[-85.078971,42.1029241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938350":{"id":"n1820938350","loc":[-85.5699558,41.958931],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938351":{"id":"n1820938351","loc":[-85.3181285,41.9696533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938352":{"id":"n1820938352","loc":[-85.5998506,41.9402329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938353":{"id":"n1820938353","loc":[-85.2567277,42.000317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938354":{"id":"n1820938354","loc":[-85.3082795,41.9708338],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938355":{"id":"n1820938355","loc":[-85.3127856,41.9692784],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938356":{"id":"n1820938356","loc":[-85.0340775,42.1010721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938357":{"id":"n1820938357","loc":[-85.3158111,41.9706583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938359":{"id":"n1820938359","loc":[-85.2312035,42.0280412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938360":{"id":"n1820938360","loc":[-85.2448613,42.018477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938361":{"id":"n1820938361","loc":[-85.29077,41.9759068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938364":{"id":"n1820938364","loc":[-85.3677387,41.9976615],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938365":{"id":"n1820938365","loc":[-85.0785204,42.1030355],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938366":{"id":"n1820938366","loc":[-85.2262039,42.0333722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938367":{"id":"n1820938367","loc":[-85.1226011,42.0780902],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938368":{"id":"n1820938368","loc":[-85.3229673,41.971129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938369":{"id":"n1820938369","loc":[-85.385334,42.0000056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938370":{"id":"n1820938370","loc":[-85.000098,42.0879094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938372":{"id":"n1820938372","loc":[-85.3852481,42.0025091],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938373":{"id":"n1820938373","loc":[-85.3770513,41.9982515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938374":{"id":"n1820938374","loc":[-85.6278314,41.9405362],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938375":{"id":"n1820938375","loc":[-85.6355133,41.9344068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938376":{"id":"n1820938376","loc":[-85.635642,41.9324753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938377":{"id":"n1820938377","loc":[-85.3154463,41.970778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938378":{"id":"n1820938378","loc":[-85.0920334,42.093411],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938379":{"id":"n1820938379","loc":[-85.3269155,41.9722297],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938381":{"id":"n1820938381","loc":[-85.1134334,42.0849184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938382":{"id":"n1820938382","loc":[-85.005968,42.088585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938384":{"id":"n1820938384","loc":[-85.1245203,42.0757183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938385":{"id":"n1820938385","loc":[-85.020704,42.0905396],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938386":{"id":"n1820938386","loc":[-85.119585,42.0808984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938387":{"id":"n1820938387","loc":[-85.0072447,42.0880117],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938388":{"id":"n1820938388","loc":[-85.2742908,41.9960273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938389":{"id":"n1820938389","loc":[-85.3275807,41.9696852],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938390":{"id":"n1820938390","loc":[-85.2385635,42.0231556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938392":{"id":"n1820938392","loc":[-85.0202856,42.0900778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938393":{"id":"n1820938393","loc":[-85.2067847,42.0395398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938394":{"id":"n1820938394","loc":[-85.5183544,41.9713495],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938396":{"id":"n1820938396","loc":[-85.5073037,41.9736787],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938397":{"id":"n1820938397","loc":[-85.2519638,42.0114225],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938398":{"id":"n1820938398","loc":[-85.287487,41.9793285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938399":{"id":"n1820938399","loc":[-85.2298088,42.0336431],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938400":{"id":"n1820938400","loc":[-85.229444,42.0339141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938401":{"id":"n1820938401","loc":[-85.2421791,42.0220239],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938402":{"id":"n1820938402","loc":[-85.2976687,41.9737612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938403":{"id":"n1820938403","loc":[-85.3622069,41.993473],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938404":{"id":"n1820938404","loc":[-85.2465458,42.014906],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938405":{"id":"n1820938405","loc":[-85.5724663,41.9639412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938406":{"id":"n1820938406","loc":[-85.3708501,41.9982037],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938408":{"id":"n1820938408","loc":[-85.2564592,42.0055311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938409":{"id":"n1820938409","loc":[-85.1192846,42.0810856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938410":{"id":"n1820938410","loc":[-85.5623812,41.971663],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938411":{"id":"n1820938411","loc":[-85.3221948,41.9719665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938412":{"id":"n1820938412","loc":[-85.5168738,41.9710305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938413":{"id":"n1820938413","loc":[-85.4546852,42.0061127],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938414":{"id":"n1820938414","loc":[-85.5896153,41.9463617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938415":{"id":"n1820938415","loc":[-85.2978189,41.9722138],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938416":{"id":"n1820938416","loc":[-85.1021681,42.0883581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938417":{"id":"n1820938417","loc":[-85.2797193,41.9912984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938419":{"id":"n1820938419","loc":[-85.2362461,42.0248533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938420":{"id":"n1820938420","loc":[-85.4833639,41.9846252],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820938422":{"id":"n1820938422","loc":[-85.3281064,41.9689433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938424":{"id":"n1820938424","loc":[-85.2416963,42.0130088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938425":{"id":"n1820938425","loc":[-85.5718655,41.9564577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938426":{"id":"n1820938426","loc":[-85.0512812,42.1030701],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938427":{"id":"n1820938427","loc":[-85.1273527,42.0723616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938428":{"id":"n1820938428","loc":[-85.0215033,42.0904083],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938429":{"id":"n1820938429","loc":[-85.6169953,41.942228],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938430":{"id":"n1820938430","loc":[-85.2829165,41.9907243],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938431":{"id":"n1820938431","loc":[-85.2240796,42.0374203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938432":{"id":"n1820938432","loc":[-85.0167598,42.0898442],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938433":{"id":"n1820938433","loc":[-85.2132649,42.0411334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938434":{"id":"n1820938434","loc":[-85.2293839,42.031513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938435":{"id":"n1820938435","loc":[-85.1203374,42.0792608],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938436":{"id":"n1820938436","loc":[-85.109571,42.086268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938437":{"id":"n1820938437","loc":[-85.1079026,42.0853842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938438":{"id":"n1820938438","loc":[-85.109237,42.0862413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938439":{"id":"n1820938439","loc":[-85.2259936,42.0350831],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938440":{"id":"n1820938440","loc":[-85.3669705,41.99679],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938441":{"id":"n1820938441","loc":[-85.2418143,42.0223507],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938442":{"id":"n1820938442","loc":[-85.3101248,41.9702515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938443":{"id":"n1820938443","loc":[-85.069315,42.1059688],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938444":{"id":"n1820938444","loc":[-85.205862,42.0410378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938445":{"id":"n1820938445","loc":[-85.0388076,42.1036604],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938446":{"id":"n1820938446","loc":[-85.2225389,42.0370115],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938447":{"id":"n1820938447","loc":[-85.3241474,41.9719346],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938448":{"id":"n1820938448","loc":[-85.3125496,41.9690789],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938449":{"id":"n1820938449","loc":[-85.1146497,42.0857039],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938450":{"id":"n1820938450","loc":[-85.1333944,42.0714963],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938451":{"id":"n1820938451","loc":[-85.5619306,41.9720937],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938452":{"id":"n1820938452","loc":[-85.2553651,42.0006479],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938453":{"id":"n1820938453","loc":[-85.3151137,41.9710093],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938454":{"id":"n1820938454","loc":[-85.2592315,41.9977947],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938455":{"id":"n1820938455","loc":[-85.2655723,41.9995966],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938456":{"id":"n1820938456","loc":[-85.4820652,41.9959233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938459":{"id":"n1820938459","loc":[-85.450737,42.0055068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938460":{"id":"n1820938460","loc":[-85.2428658,42.0205573],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938461":{"id":"n1820938461","loc":[-85.0835576,42.1021559],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938462":{"id":"n1820938462","loc":[-85.244636,42.0194733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938463":{"id":"n1820938463","loc":[-85.5702562,41.9581332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938465":{"id":"n1820938465","loc":[-85.5680031,41.9659515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938467":{"id":"n1820938467","loc":[-85.2798752,41.9948353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938468":{"id":"n1820938468","loc":[-85.0477407,42.1015537],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938469":{"id":"n1820938469","loc":[-85.6403842,41.913732],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938470":{"id":"n1820938470","loc":[-85.0396029,42.103289],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938471":{"id":"n1820938471","loc":[-85.2824702,41.9907777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938472":{"id":"n1820938472","loc":[-85.2969284,41.9735538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938474":{"id":"n1820938474","loc":[-85.401041,42.0070853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938475":{"id":"n1820938475","loc":[-85.4116625,42.0073883],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938476":{"id":"n1820938476","loc":[-85.0437764,42.1016214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938477":{"id":"n1820938477","loc":[-85.3643269,41.9958436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938478":{"id":"n1820938478","loc":[-85.3895182,42.0009465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938479":{"id":"n1820938479","loc":[-85.636157,41.9333373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938480":{"id":"n1820938480","loc":[-85.2811355,41.9858044],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938481":{"id":"n1820938481","loc":[-85.0239052,42.092153],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938482":{"id":"n1820938482","loc":[-85.2558798,42.0053557],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938483":{"id":"n1820938483","loc":[-85.2544422,42.0047339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938484":{"id":"n1820938484","loc":[-85.4864683,41.9843183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938485":{"id":"n1820938485","loc":[-85.2554185,42.0031075],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938486":{"id":"n1820938486","loc":[-85.3082795,41.9712486],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938487":{"id":"n1820938487","loc":[-85.2433378,42.0133436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938488":{"id":"n1820938488","loc":[-85.0216696,42.0904162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938489":{"id":"n1820938489","loc":[-85.2546138,42.0050289],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938490":{"id":"n1820938490","loc":[-85.2717521,41.9977349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938491":{"id":"n1820938491","loc":[-85.0100489,42.0908195],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938492":{"id":"n1820938492","loc":[-85.207879,42.0392211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938493":{"id":"n1820938493","loc":[-85.0007363,42.0882836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938494":{"id":"n1820938494","loc":[-85.5775303,41.9504097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938495":{"id":"n1820938495","loc":[-85.1131584,42.0847683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938496":{"id":"n1820938496","loc":[-85.0887825,42.0941633],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938497":{"id":"n1820938497","loc":[-85.1185926,42.0818938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938498":{"id":"n1820938498","loc":[-85.2748487,41.9948712],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938499":{"id":"n1820938499","loc":[-85.2566952,42.0090788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938500":{"id":"n1820938500","loc":[-85.0774757,42.1036234],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938501":{"id":"n1820938501","loc":[-85.4190869,42.008903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938502":{"id":"n1820938502","loc":[-85.1140395,42.0850577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938503":{"id":"n1820938503","loc":[-85.1136104,42.0848627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938504":{"id":"n1820938504","loc":[-85.5828089,41.9480638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938505":{"id":"n1820938505","loc":[-85.625514,41.9405202],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938506":{"id":"n1820938506","loc":[-85.2063384,42.0398322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938507":{"id":"n1820938507","loc":[-85.3395476,41.9851636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938508":{"id":"n1820938508","loc":[-85.0328853,42.0963606],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938510":{"id":"n1820938510","loc":[-85.1170369,42.0843702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938511":{"id":"n1820938511","loc":[-85.2784748,41.9868487],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938512":{"id":"n1820938512","loc":[-85.6310501,41.9435528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938514":{"id":"n1820938514","loc":[-85.0334284,42.0981028],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938515":{"id":"n1820938515","loc":[-84.9912091,42.0868226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938516":{"id":"n1820938516","loc":[-85.2806141,41.9940351],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938517":{"id":"n1820938517","loc":[-85.1233025,42.0776734],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938518":{"id":"n1820938518","loc":[-85.2047891,42.0429023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938519":{"id":"n1820938519","loc":[-85.1475443,42.0648312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938520":{"id":"n1820938520","loc":[-85.2644685,41.9990891],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938521":{"id":"n1820938521","loc":[-85.1056281,42.0872553],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938522":{"id":"n1820938522","loc":[-85.4813184,41.9930105],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938523":{"id":"n1820938523","loc":[-85.321551,41.9722936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938524":{"id":"n1820938524","loc":[-85.1564664,42.0631211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938525":{"id":"n1820938525","loc":[-85.4149885,42.0079144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938527":{"id":"n1820938527","loc":[-85.2861888,41.9803653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938528":{"id":"n1820938528","loc":[-85.1301379,42.0682178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938529":{"id":"n1820938529","loc":[-85.4156537,42.0084247],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938530":{"id":"n1820938530","loc":[-85.245151,42.0176082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938531":{"id":"n1820938531","loc":[-85.457818,42.0001651],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938532":{"id":"n1820938532","loc":[-85.310951,41.9694538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938533":{"id":"n1820938533","loc":[-85.1509089,42.0611298],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938534":{"id":"n1820938534","loc":[-85.1108249,42.086321],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938535":{"id":"n1820938535","loc":[-85.1260344,42.0740687],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938536":{"id":"n1820938536","loc":[-85.4561228,42.0042791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938537":{"id":"n1820938537","loc":[-85.2805082,41.9945761],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938538":{"id":"n1820938538","loc":[-85.273352,41.9981921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938539":{"id":"n1820938539","loc":[-85.1084216,42.0864364],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938540":{"id":"n1820938540","loc":[-85.5009737,41.9773637],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938541":{"id":"n1820938541","loc":[-85.3960843,42.0051879],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938542":{"id":"n1820938542","loc":[-85.3425088,41.9865034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938545":{"id":"n1820938545","loc":[-84.9937907,42.0860849],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938546":{"id":"n1820938546","loc":[-85.1084176,42.086065],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938547":{"id":"n1820938547","loc":[-85.3492851,41.9924786],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938548":{"id":"n1820938548","loc":[-85.2512235,42.0101147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938549":{"id":"n1820938549","loc":[-85.3717298,41.9979326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938551":{"id":"n1820938551","loc":[-85.2573712,42.0064081],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938552":{"id":"n1820938552","loc":[-85.2514596,42.010139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938553":{"id":"n1820938553","loc":[-85.416512,42.0088073],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938554":{"id":"n1820938554","loc":[-85.4365964,42.0061606],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938555":{"id":"n1820938555","loc":[-85.4552431,42.0057301],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938556":{"id":"n1820938556","loc":[-85.2916283,41.9778769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938557":{"id":"n1820938557","loc":[-85.100709,42.0902968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938558":{"id":"n1820938558","loc":[-85.4703064,41.9965771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938559":{"id":"n1820938559","loc":[-85.3134722,41.9696134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938560":{"id":"n1820938560","loc":[-85.4834213,41.9885768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938561":{"id":"n1820938561","loc":[-85.2740641,41.9975236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938562":{"id":"n1820938562","loc":[-85.148334,42.0623405],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938563":{"id":"n1820938563","loc":[-85.2358598,42.0263675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938565":{"id":"n1820938565","loc":[-85.2902979,41.9790892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938566":{"id":"n1820938566","loc":[-85.2528865,42.0112869],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938567":{"id":"n1820938567","loc":[-85.2595319,41.9973003],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938568":{"id":"n1820938568","loc":[-85.071151,42.105689],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938570":{"id":"n1820938570","loc":[-85.299278,41.9732188],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938571":{"id":"n1820938571","loc":[-85.0354669,42.1024771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938583":{"id":"n1820938583","loc":[-85.3313937,41.972562],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938585":{"id":"n1820938585","loc":[-85.0756933,42.1058334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938587":{"id":"n1820938587","loc":[-85.3130324,41.9694219],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938590":{"id":"n1820938590","loc":[-85.0934227,42.0931681],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938592":{"id":"n1820938592","loc":[-85.3517956,41.9922553],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938593":{"id":"n1820938593","loc":[-85.4023971,42.0065169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938594":{"id":"n1820938594","loc":[-85.3506798,41.9925583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938595":{"id":"n1820938595","loc":[-85.3673524,41.9971193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938596":{"id":"n1820938596","loc":[-85.1073608,42.0853523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938597":{"id":"n1820938597","loc":[-85.2976579,41.972477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938598":{"id":"n1820938598","loc":[-85.5616517,41.9694295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938599":{"id":"n1820938599","loc":[-85.3552074,41.9921915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938600":{"id":"n1820938600","loc":[-85.4665126,41.9999953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938601":{"id":"n1820938601","loc":[-85.2740695,41.9966226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938602":{"id":"n1820938602","loc":[-85.279376,41.9886669],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938603":{"id":"n1820938603","loc":[-85.0771109,42.1040413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938604":{"id":"n1820938604","loc":[-85.2636049,41.9977895],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938605":{"id":"n1820938605","loc":[-85.3762145,41.9976456],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938606":{"id":"n1820938606","loc":[-85.2321369,42.0289577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938620":{"id":"n1820938620","loc":[-85.4947724,41.9776189],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938622":{"id":"n1820938622","loc":[-85.1547069,42.0622768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938624":{"id":"n1820938624","loc":[-85.0005056,42.0880249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938626":{"id":"n1820938626","loc":[-85.0735596,42.1059357],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938628":{"id":"n1820938628","loc":[-85.4665298,41.99932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938629":{"id":"n1820938629","loc":[-85.434515,42.0065273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938630":{"id":"n1820938630","loc":[-85.117462,42.0823823],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938631":{"id":"n1820938631","loc":[-85.0131777,42.0890707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938632":{"id":"n1820938632","loc":[-85.0875326,42.0961934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938634":{"id":"n1820938634","loc":[-85.6433839,41.9112042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938635":{"id":"n1820938635","loc":[-85.1366181,42.064969],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938636":{"id":"n1820938636","loc":[-85.073109,42.1057925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938638":{"id":"n1820938638","loc":[-85.161406,42.0632541],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938640":{"id":"n1820938640","loc":[-85.6343932,41.9188845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938642":{"id":"n1820938642","loc":[-85.2500004,42.010306],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938644":{"id":"n1820938644","loc":[-85.291918,41.9753166],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938663":{"id":"n1820938663","loc":[-85.2841611,41.9916812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938664":{"id":"n1820938664","loc":[-85.1052955,42.0868134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938665":{"id":"n1820938665","loc":[-85.4606118,42.0005534],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938666":{"id":"n1820938666","loc":[-85.5672736,41.9642922],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938667":{"id":"n1820938667","loc":[-85.6348481,41.9316932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938668":{"id":"n1820938668","loc":[-85.0224904,42.0909576],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938669":{"id":"n1820938669","loc":[-85.0133856,42.0899755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938670":{"id":"n1820938670","loc":[-85.344779,41.991139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938671":{"id":"n1820938671","loc":[-85.632874,41.9425313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938673":{"id":"n1820938673","loc":[-85.4941501,41.9779698],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938675":{"id":"n1820938675","loc":[-85.0862559,42.0997519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938676":{"id":"n1820938676","loc":[-85.0097874,42.0898032],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938678":{"id":"n1820938678","loc":[-84.9913553,42.0863675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938680":{"id":"n1820938680","loc":[-85.0533666,42.1038315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938682":{"id":"n1820938682","loc":[-85.2950294,41.9743914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938684":{"id":"n1820938684","loc":[-85.2517385,42.0104499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938686":{"id":"n1820938686","loc":[-85.0247971,42.0922514],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938688":{"id":"n1820938688","loc":[-85.0807037,42.1026017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938690":{"id":"n1820938690","loc":[-85.52462,41.9722748],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938694":{"id":"n1820938694","loc":[-85.2586535,41.9988818],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938695":{"id":"n1820938695","loc":[-85.0931612,42.092948],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938697":{"id":"n1820938697","loc":[-85.2470822,42.016564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938698":{"id":"n1820938698","loc":[-85.4143018,42.0075158],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938699":{"id":"n1820938699","loc":[-85.0771484,42.104487],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938700":{"id":"n1820938700","loc":[-85.0291208,42.0942775],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938701":{"id":"n1820938701","loc":[-85.6367964,41.9185971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938702":{"id":"n1820938702","loc":[-85.085419,42.1010693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938703":{"id":"n1820938703","loc":[-85.0583877,42.1040584],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938705":{"id":"n1820938705","loc":[-85.2573379,42.0003182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938706":{"id":"n1820938706","loc":[-85.2655937,41.9981575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938707":{"id":"n1820938707","loc":[-85.023181,42.0915758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938708":{"id":"n1820938708","loc":[-85.2318687,42.0274674],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938709":{"id":"n1820938709","loc":[-85.1056389,42.0866184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938710":{"id":"n1820938710","loc":[-85.5276265,41.9700978],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820938711":{"id":"n1820938711","loc":[-85.0864128,42.0945761],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938712":{"id":"n1820938712","loc":[-84.9897071,42.0871888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938714":{"id":"n1820938714","loc":[-85.1328845,42.0665611],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938715":{"id":"n1820938715","loc":[-85.0336537,42.0991377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938716":{"id":"n1820938716","loc":[-85.087597,42.0986692],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938717":{"id":"n1820938717","loc":[-85.1241394,42.0761882],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938718":{"id":"n1820938718","loc":[-85.1176002,42.0847723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938719":{"id":"n1820938719","loc":[-85.2423615,42.0216572],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938721":{"id":"n1820938721","loc":[-85.2196378,42.0387908],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938722":{"id":"n1820938722","loc":[-85.0164272,42.0890082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938723":{"id":"n1820938723","loc":[-85.5917182,41.9451807],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938724":{"id":"n1820938724","loc":[-85.2458806,42.0086638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938725":{"id":"n1820938725","loc":[-85.1264474,42.0740527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938726":{"id":"n1820938726","loc":[-85.1961631,42.04738],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938727":{"id":"n1820938727","loc":[-85.2784643,41.9943648],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938728":{"id":"n1820938728","loc":[-85.2905554,41.9763216],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938729":{"id":"n1820938729","loc":[-85.2913386,41.9771511],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938730":{"id":"n1820938730","loc":[-85.0112519,42.0895683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938732":{"id":"n1820938732","loc":[-85.4290261,42.0064531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938733":{"id":"n1820938733","loc":[-85.3867073,42.0031629],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938734":{"id":"n1820938734","loc":[-85.4943647,41.9836005],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938735":{"id":"n1820938735","loc":[-85.4900303,41.9860728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938736":{"id":"n1820938736","loc":[-85.0866153,42.0944539],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938737":{"id":"n1820938737","loc":[-85.0869532,42.0990911],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938738":{"id":"n1820938738","loc":[-85.6321659,41.9208851],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938739":{"id":"n1820938739","loc":[-85.5930485,41.9433453],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938740":{"id":"n1820938740","loc":[-85.0406851,42.102733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938741":{"id":"n1820938741","loc":[-85.1051131,42.0869846],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938742":{"id":"n1820938742","loc":[-85.1377554,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938743":{"id":"n1820938743","loc":[-85.2795694,41.994604],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938745":{"id":"n1820938745","loc":[-85.4948153,41.9826594],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938746":{"id":"n1820938746","loc":[-85.4488916,42.0050923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938747":{"id":"n1820938747","loc":[-85.1052526,42.0866144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938748":{"id":"n1820938748","loc":[-85.1468749,42.0653991],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938749":{"id":"n1820938749","loc":[-85.0856886,42.1006104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938750":{"id":"n1820938750","loc":[-85.2144022,42.0404004],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938751":{"id":"n1820938751","loc":[-85.277771,41.9907458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938752":{"id":"n1820938752","loc":[-85.1474542,42.0636149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938753":{"id":"n1820938753","loc":[-85.0820515,42.1028075],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938754":{"id":"n1820938754","loc":[-85.1122948,42.08525],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938756":{"id":"n1820938756","loc":[-85.0173352,42.0901933],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938757":{"id":"n1820938757","loc":[-85.2259721,42.0354018],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938758":{"id":"n1820938758","loc":[-85.0872389,42.0987795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938759":{"id":"n1820938759","loc":[-85.2291436,42.031874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938760":{"id":"n1820938760","loc":[-85.3802485,42.0016002],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938761":{"id":"n1820938761","loc":[-85.3945822,42.0057938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938762":{"id":"n1820938762","loc":[-85.5273237,41.9713017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938763":{"id":"n1820938763","loc":[-85.2868862,41.9798629],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938764":{"id":"n1820938764","loc":[-85.2516677,42.0107899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938766":{"id":"n1820938766","loc":[-85.3183002,41.9693103],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938768":{"id":"n1820938768","loc":[-85.2159042,42.0401932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938770":{"id":"n1820938770","loc":[-85.0094481,42.0911141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938771":{"id":"n1820938771","loc":[-85.0244538,42.0922155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938772":{"id":"n1820938772","loc":[-85.231697,42.028862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938773":{"id":"n1820938773","loc":[-85.2102394,42.0390617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938774":{"id":"n1820938774","loc":[-85.2463419,42.0151212],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938775":{"id":"n1820938775","loc":[-85.0726195,42.1056424],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938776":{"id":"n1820938776","loc":[-85.0060431,42.0883262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938778":{"id":"n1820938778","loc":[-85.425889,42.0056982],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938779":{"id":"n1820938779","loc":[-85.1183042,42.0820638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938780":{"id":"n1820938780","loc":[-85.441596,42.0058257],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938781":{"id":"n1820938781","loc":[-85.1124879,42.0847086],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938782":{"id":"n1820938782","loc":[-85.2452733,42.0153894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938783":{"id":"n1820938783","loc":[-85.2741191,41.9969244],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938784":{"id":"n1820938784","loc":[-85.2829487,41.9822236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938785":{"id":"n1820938785","loc":[-85.3202743,41.972142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938786":{"id":"n1820938786","loc":[-85.2345402,42.0266465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938787":{"id":"n1820938787","loc":[-85.3037626,41.9724611],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938789":{"id":"n1820938789","loc":[-85.2474792,42.0161973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938790":{"id":"n1820938790","loc":[-85.2951045,41.9727323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938791":{"id":"n1820938791","loc":[-85.322345,41.9712726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938792":{"id":"n1820938792","loc":[-85.2402372,42.0110394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938793":{"id":"n1820938793","loc":[-85.5135693,41.9698659],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938794":{"id":"n1820938794","loc":[-85.4695339,41.9967366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938796":{"id":"n1820938796","loc":[-85.0418492,42.1011131],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938797":{"id":"n1820938797","loc":[-85.3334107,41.9806337],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938798":{"id":"n1820938798","loc":[-85.5625314,41.9711685],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938799":{"id":"n1820938799","loc":[-85.3755707,41.9973585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938800":{"id":"n1820938800","loc":[-85.5227532,41.9722429],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938801":{"id":"n1820938801","loc":[-85.4267687,42.0052836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938803":{"id":"n1820938803","loc":[-85.0284704,42.0940837],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938804":{"id":"n1820938804","loc":[-85.015585,42.0885305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938805":{"id":"n1820938805","loc":[-85.0765905,42.1053865],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938806":{"id":"n1820938806","loc":[-85.2614953,41.9964551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938808":{"id":"n1820938808","loc":[-85.0307355,42.0947313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938810":{"id":"n1820938810","loc":[-85.3894753,42.0003565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938812":{"id":"n1820938812","loc":[-85.0868848,42.095006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938813":{"id":"n1820938813","loc":[-85.3854198,42.0009465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938814":{"id":"n1820938814","loc":[-85.2659692,41.9993534],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938815":{"id":"n1820938815","loc":[-85.1234259,42.0765266],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938816":{"id":"n1820938816","loc":[-85.1426906,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938818":{"id":"n1820938818","loc":[-85.1014533,42.0893067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938819":{"id":"n1820938819","loc":[-85.0883064,42.098067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938820":{"id":"n1820938820","loc":[-85.0503156,42.102704],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938821":{"id":"n1820938821","loc":[-85.1179649,42.0821884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938822":{"id":"n1820938822","loc":[-85.3484697,41.9921596],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938823":{"id":"n1820938823","loc":[-85.3732962,41.9970874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938824":{"id":"n1820938824","loc":[-85.2784104,41.9898312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938825":{"id":"n1820938825","loc":[-85.4441709,42.0052198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938826":{"id":"n1820938826","loc":[-85.3925438,42.0038326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938829":{"id":"n1820938829","loc":[-85.5717582,41.9621861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938830":{"id":"n1820938830","loc":[-85.0866314,42.0995051],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938831":{"id":"n1820938831","loc":[-85.576672,41.9522769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938832":{"id":"n1820938832","loc":[-85.1587238,42.0636205],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938833":{"id":"n1820938833","loc":[-85.3804245,41.9999155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938834":{"id":"n1820938834","loc":[-85.280083,41.9948843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938836":{"id":"n1820938836","loc":[-85.561892,41.9686693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938837":{"id":"n1820938837","loc":[-85.0158975,42.0885253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938838":{"id":"n1820938838","loc":[-85.4248204,42.007633],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938839":{"id":"n1820938839","loc":[-85.0352738,42.1039657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938840":{"id":"n1820938840","loc":[-85.211956,42.0411812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938841":{"id":"n1820938841","loc":[-85.4816575,41.9908997],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938842":{"id":"n1820938842","loc":[-85.3807635,42.0020308],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938843":{"id":"n1820938843","loc":[-85.0100865,42.0898521],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938844":{"id":"n1820938844","loc":[-85.0103936,42.0897434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938848":{"id":"n1820938848","loc":[-85.2430052,42.0131363],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938849":{"id":"n1820938849","loc":[-85.112559,42.0853723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938851":{"id":"n1820938851","loc":[-85.3641553,41.9952535],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938852":{"id":"n1820938852","loc":[-85.2087373,42.0390777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938853":{"id":"n1820938853","loc":[-85.2473933,42.0148263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938854":{"id":"n1820938854","loc":[-85.0213464,42.090509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938855":{"id":"n1820938855","loc":[-85.0673208,42.1052353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938856":{"id":"n1820938856","loc":[-85.1003053,42.0905528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938857":{"id":"n1820938857","loc":[-85.2617367,41.9965389],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938858":{"id":"n1820938858","loc":[-85.280363,41.9916015],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938859":{"id":"n1820938859","loc":[-85.0038866,42.0873469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938860":{"id":"n1820938860","loc":[-85.2476401,42.0151451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938861":{"id":"n1820938861","loc":[-85.193717,42.0499294],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938862":{"id":"n1820938862","loc":[-85.3478689,41.9917609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938863":{"id":"n1820938863","loc":[-85.5638017,41.9648881],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938864":{"id":"n1820938864","loc":[-85.4356308,42.0064476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938865":{"id":"n1820938865","loc":[-85.0561722,42.1023509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938867":{"id":"n1820938867","loc":[-85.2256031,42.0356034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938868":{"id":"n1820938868","loc":[-85.6102576,41.9420844],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938869":{"id":"n1820938869","loc":[-85.2285213,42.0339938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938870":{"id":"n1820938870","loc":[-85.0326238,42.0978003],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938871":{"id":"n1820938871","loc":[-85.0131389,42.0903736],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938872":{"id":"n1820938872","loc":[-85.2550859,42.0012259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938873":{"id":"n1820938873","loc":[-85.1130029,42.0846966],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938874":{"id":"n1820938874","loc":[-85.1579041,42.06336],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938875":{"id":"n1820938875","loc":[-85.0430522,42.1020234],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938876":{"id":"n1820938876","loc":[-85.2786679,41.9865935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938877":{"id":"n1820938877","loc":[-85.1221666,42.0788706],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938878":{"id":"n1820938878","loc":[-85.2554614,42.0103303],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938879":{"id":"n1820938879","loc":[-85.2349801,42.0265748],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938880":{"id":"n1820938880","loc":[-85.0997434,42.0907864],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938881":{"id":"n1820938881","loc":[-85.0045464,42.0878167],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938882":{"id":"n1820938882","loc":[-85.2728048,41.9982519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938883":{"id":"n1820938883","loc":[-85.3111333,41.9691587],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938884":{"id":"n1820938884","loc":[-85.3219802,41.9721899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938885":{"id":"n1820938885","loc":[-85.3091378,41.9699325],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938887":{"id":"n1820938887","loc":[-85.4242367,42.0085203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938888":{"id":"n1820938888","loc":[-84.9968377,42.0874504],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938890":{"id":"n1820938890","loc":[-85.5443139,41.9714078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938891":{"id":"n1820938891","loc":[-85.6404013,41.9154676],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938892":{"id":"n1820938892","loc":[-85.3644986,41.9962582],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938893":{"id":"n1820938893","loc":[-85.0496772,42.1018323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938894":{"id":"n1820938894","loc":[-85.297261,41.9737373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938895":{"id":"n1820938895","loc":[-85.0327096,42.098071],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938896":{"id":"n1820938896","loc":[-85.3856773,41.9996867],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938897":{"id":"n1820938897","loc":[-85.0493862,42.1015509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938898":{"id":"n1820938898","loc":[-84.9969879,42.0876614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938899":{"id":"n1820938899","loc":[-85.0848625,42.1013587],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938900":{"id":"n1820938900","loc":[-85.5853195,41.9479201],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938901":{"id":"n1820938901","loc":[-85.6329169,41.9387964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938902":{"id":"n1820938902","loc":[-85.0843046,42.1029468],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938903":{"id":"n1820938903","loc":[-85.1228747,42.0778474],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938904":{"id":"n1820938904","loc":[-85.4855456,41.984095],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938905":{"id":"n1820938905","loc":[-85.0573269,42.1026801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938906":{"id":"n1820938906","loc":[-85.2425868,42.0131523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938907":{"id":"n1820938907","loc":[-85.1149622,42.0860053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938908":{"id":"n1820938908","loc":[-85.4833097,41.9951578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938909":{"id":"n1820938909","loc":[-85.075979,42.1056372],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938910":{"id":"n1820938910","loc":[-85.0338509,42.0977139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938911":{"id":"n1820938911","loc":[-85.6384272,41.9115715],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938912":{"id":"n1820938912","loc":[-85.0458363,42.1004074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938913":{"id":"n1820938913","loc":[-85.0592138,42.1048305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938914":{"id":"n1820938914","loc":[-85.2807493,41.9916653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938915":{"id":"n1820938915","loc":[-85.1103274,42.0864193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938916":{"id":"n1820938916","loc":[-85.6267156,41.9404404],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938918":{"id":"n1820938918","loc":[-85.0331374,42.0982911],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938919":{"id":"n1820938919","loc":[-85.5637331,41.965409],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938920":{"id":"n1820938920","loc":[-85.5457515,41.9714237],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938922":{"id":"n1820938922","loc":[-85.082073,42.1030104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938923":{"id":"n1820938923","loc":[-85.0780765,42.103102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938924":{"id":"n1820938924","loc":[-85.4208035,42.0089508],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938925":{"id":"n1820938925","loc":[-85.3469934,41.9914795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938926":{"id":"n1820938926","loc":[-85.0322,42.095619],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938927":{"id":"n1820938927","loc":[-85.4784431,41.9949401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938928":{"id":"n1820938928","loc":[-85.1303095,42.0667523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938929":{"id":"n1820938929","loc":[-85.2463784,42.0084781],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938930":{"id":"n1820938930","loc":[-85.6299986,41.9427707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938931":{"id":"n1820938931","loc":[-85.6325907,41.9238499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938932":{"id":"n1820938932","loc":[-85.4808464,41.9914476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938934":{"id":"n1820938934","loc":[-85.2411599,42.0105292],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938935":{"id":"n1820938935","loc":[-85.0163213,42.0892379],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938936":{"id":"n1820938936","loc":[-85.3290934,41.9682322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938937":{"id":"n1820938937","loc":[-85.4925623,41.9853231],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938938":{"id":"n1820938938","loc":[-85.0338294,42.09892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938940":{"id":"n1820938940","loc":[-85.4174561,42.008903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938941":{"id":"n1820938941","loc":[-85.1165595,42.0838845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938942":{"id":"n1820938942","loc":[-85.2954585,41.9717192],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938943":{"id":"n1820938943","loc":[-85.6330199,41.9257338],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938944":{"id":"n1820938944","loc":[-85.2294654,42.0324478],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938945":{"id":"n1820938945","loc":[-85.5601282,41.9728914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938946":{"id":"n1820938946","loc":[-85.1176324,42.08568],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938947":{"id":"n1820938947","loc":[-85.0210245,42.0906005],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938948":{"id":"n1820938948","loc":[-85.0251887,42.09253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938949":{"id":"n1820938949","loc":[-85.0895832,42.0939551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938950":{"id":"n1820938950","loc":[-84.9915109,42.085842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938951":{"id":"n1820938951","loc":[-85.2187366,42.0393486],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938952":{"id":"n1820938952","loc":[-85.006605,42.087579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938953":{"id":"n1820938953","loc":[-85.046641,42.1012393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938954":{"id":"n1820938954","loc":[-85.052102,42.103695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938955":{"id":"n1820938955","loc":[-85.283925,41.9912825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938956":{"id":"n1820938956","loc":[-85.2326626,42.0316349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938957":{"id":"n1820938957","loc":[-85.1174298,42.0859694],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938958":{"id":"n1820938958","loc":[-85.3802056,41.9994794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938959":{"id":"n1820938959","loc":[-85.4586334,41.9999737],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938960":{"id":"n1820938960","loc":[-85.4302234,42.0069418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938961":{"id":"n1820938961","loc":[-85.092201,42.0930674],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938962":{"id":"n1820938962","loc":[-85.3684511,41.9979382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938963":{"id":"n1820938963","loc":[-85.4618735,42.0011856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938964":{"id":"n1820938964","loc":[-85.4828205,41.9877793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938965":{"id":"n1820938965","loc":[-85.0837789,42.1025726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938966":{"id":"n1820938966","loc":[-85.0176195,42.090253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938967":{"id":"n1820938967","loc":[-85.3801627,42.001074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938968":{"id":"n1820938968","loc":[-85.4767007,41.994488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938969":{"id":"n1820938969","loc":[-85.274268,41.9957495],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938970":{"id":"n1820938970","loc":[-85.2977438,41.9719506],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938971":{"id":"n1820938971","loc":[-85.2425546,42.0208682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938972":{"id":"n1820938972","loc":[-85.2557082,42.002382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938973":{"id":"n1820938973","loc":[-85.3187937,41.9691986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938975":{"id":"n1820938975","loc":[-85.2448077,42.0153045],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938977":{"id":"n1820938977","loc":[-85.0343015,42.0997718],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938978":{"id":"n1820938978","loc":[-85.2449364,42.01874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938979":{"id":"n1820938979","loc":[-85.2598391,41.9969602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938980":{"id":"n1820938980","loc":[-85.4294724,42.0067665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938981":{"id":"n1820938981","loc":[-85.428082,42.0055124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938983":{"id":"n1820938983","loc":[-85.5436315,41.9717484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938985":{"id":"n1820938985","loc":[-85.5978336,41.9407437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938986":{"id":"n1820938986","loc":[-85.491661,41.9860249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938987":{"id":"n1820938987","loc":[-85.4942789,41.9801392],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938988":{"id":"n1820938988","loc":[-85.0416306,42.1010841],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938989":{"id":"n1820938989","loc":[-85.2653644,41.9984433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938990":{"id":"n1820938990","loc":[-85.1028266,42.0881124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938991":{"id":"n1820938991","loc":[-85.0163146,42.0887932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938992":{"id":"n1820938992","loc":[-85.5282209,41.9678112],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820938993":{"id":"n1820938993","loc":[-85.5442752,41.9715888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938994":{"id":"n1820938994","loc":[-85.5634327,41.9658558],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938995":{"id":"n1820938995","loc":[-85.0384227,42.1037627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938996":{"id":"n1820938996","loc":[-85.1144258,42.0854439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938997":{"id":"n1820938997","loc":[-85.1870651,42.0506305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938998":{"id":"n1820938998","loc":[-85.1256159,42.0747376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938999":{"id":"n1820938999","loc":[-85.3272695,41.9715836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939000":{"id":"n1820939000","loc":[-85.0543067,42.103098],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939001":{"id":"n1820939001","loc":[-85.4678173,41.9973585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939003":{"id":"n1820939003","loc":[-85.0266626,42.0933154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939004":{"id":"n1820939004","loc":[-85.0353046,42.1019728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939005":{"id":"n1820939005","loc":[-85.1237961,42.0762798],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939006":{"id":"n1820939006","loc":[-85.2812214,41.9826702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939007":{"id":"n1820939007","loc":[-85.2927763,41.9747343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939008":{"id":"n1820939008","loc":[-85.3270979,41.9720862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939009":{"id":"n1820939009","loc":[-85.488657,41.9856581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939010":{"id":"n1820939010","loc":[-85.3087301,41.9701399],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939011":{"id":"n1820939011","loc":[-85.0276939,42.093768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939012":{"id":"n1820939012","loc":[-85.2956516,41.9748779],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939013":{"id":"n1820939013","loc":[-85.1298579,42.0726443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939014":{"id":"n1820939014","loc":[-85.105144,42.0870893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939015":{"id":"n1820939015","loc":[-85.0677486,42.1053917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939016":{"id":"n1820939016","loc":[-85.0333681,42.0993459],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939017":{"id":"n1820939017","loc":[-85.6384272,41.910805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939018":{"id":"n1820939018","loc":[-85.399496,42.006894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939019":{"id":"n1820939019","loc":[-85.2648427,41.9998318],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939020":{"id":"n1820939020","loc":[-85.1237424,42.0766779],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939021":{"id":"n1820939021","loc":[-85.2515025,42.0109442],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939022":{"id":"n1820939022","loc":[-85.5566306,41.9718385],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939023":{"id":"n1820939023","loc":[-85.090644,42.0938369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939024":{"id":"n1820939024","loc":[-85.1245525,42.074914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939025":{"id":"n1820939025","loc":[-85.1099934,42.0863926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939026":{"id":"n1820939026","loc":[-85.1251653,42.0744589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939027":{"id":"n1820939027","loc":[-85.401792,42.0068143],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939028":{"id":"n1820939028","loc":[-85.0094763,42.0899584],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939029":{"id":"n1820939029","loc":[-85.1330779,42.0705605],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939030":{"id":"n1820939030","loc":[-85.4935064,41.984398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939031":{"id":"n1820939031","loc":[-85.5713334,41.9613939],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939032":{"id":"n1820939032","loc":[-85.0873945,42.0964669],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939033":{"id":"n1820939033","loc":[-85.0886497,42.0986481],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939034":{"id":"n1820939034","loc":[-85.3276343,41.9758897],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939035":{"id":"n1820939035","loc":[-85.1304386,42.0727387],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939036":{"id":"n1820939036","loc":[-85.2551932,42.0052999],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939037":{"id":"n1820939037","loc":[-85.2206936,42.0384458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939038":{"id":"n1820939038","loc":[-85.2313645,42.0286389],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939039":{"id":"n1820939039","loc":[-85.0754586,42.1059835],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939040":{"id":"n1820939040","loc":[-85.0663324,42.1050812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939041":{"id":"n1820939041","loc":[-85.2406234,42.0106887],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939042":{"id":"n1820939042","loc":[-85.0685962,42.1058175],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939043":{"id":"n1820939043","loc":[-85.0689462,42.1059437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939044":{"id":"n1820939044","loc":[-85.0586144,42.1046144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939045":{"id":"n1820939045","loc":[-85.3650565,41.9965452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939047":{"id":"n1820939047","loc":[-85.5752558,41.9536014],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939048":{"id":"n1820939048","loc":[-85.5110159,41.9710624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939050":{"id":"n1820939050","loc":[-85.2832641,41.9926477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939051":{"id":"n1820939051","loc":[-85.0078402,42.0898947],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939052":{"id":"n1820939052","loc":[-85.3882737,42.0017916],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939053":{"id":"n1820939053","loc":[-85.1718945,42.0564937],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939054":{"id":"n1820939054","loc":[-85.0947048,42.0929293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939055":{"id":"n1820939055","loc":[-85.4456944,42.0051082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939056":{"id":"n1820939056","loc":[-85.3139872,41.9706903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939057":{"id":"n1820939057","loc":[-85.3893895,42.0034021],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939058":{"id":"n1820939058","loc":[-85.2425332,42.0106089],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939059":{"id":"n1820939059","loc":[-85.6085624,41.9420844],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939060":{"id":"n1820939060","loc":[-85.210411,42.0397789],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939061":{"id":"n1820939061","loc":[-85.2762542,41.9960473],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939062":{"id":"n1820939062","loc":[-85.4686584,41.9969973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939063":{"id":"n1820939063","loc":[-85.3860421,42.0018394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939064":{"id":"n1820939064","loc":[-85.5636944,41.9644414],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939065":{"id":"n1820939065","loc":[-85.3267331,41.9766554],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939066":{"id":"n1820939066","loc":[-85.0868996,42.0943822],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939067":{"id":"n1820939067","loc":[-85.104861,42.0880038],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939068":{"id":"n1820939068","loc":[-85.5537123,41.9695093],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939069":{"id":"n1820939069","loc":[-85.6325092,41.9396743],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939070":{"id":"n1820939070","loc":[-85.3869648,42.0024454],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939071":{"id":"n1820939071","loc":[-85.2775349,41.9957335],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939072":{"id":"n1820939072","loc":[-85.2055616,42.0421533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939073":{"id":"n1820939073","loc":[-85.4731431,41.9946531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939074":{"id":"n1820939074","loc":[-85.0399609,42.1030833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939075":{"id":"n1820939075","loc":[-85.3055758,41.9725169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939076":{"id":"n1820939076","loc":[-85.4834599,41.994488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939077":{"id":"n1820939077","loc":[-85.3819866,42.0023018],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939078":{"id":"n1820939078","loc":[-85.1218756,42.0789992],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939079":{"id":"n1820939079","loc":[-85.2793159,41.9944458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939080":{"id":"n1820939080","loc":[-85.2495498,42.0101466],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939081":{"id":"n1820939081","loc":[-85.0035969,42.0872434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939082":{"id":"n1820939082","loc":[-85.1054243,42.0865626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939083":{"id":"n1820939083","loc":[-85.0917665,42.0934774],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939084":{"id":"n1820939084","loc":[-85.3442211,41.988938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939086":{"id":"n1820939086","loc":[-85.273989,41.9953588],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939087":{"id":"n1820939087","loc":[-85.1142541,42.0852488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939089":{"id":"n1820939089","loc":[-85.1526684,42.0615758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939090":{"id":"n1820939090","loc":[-85.2538843,42.0110159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939091":{"id":"n1820939091","loc":[-85.28341,41.9909635],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939092":{"id":"n1820939092","loc":[-85.3963178,42.0050217],"version":"2","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:29Z","tags":{}},"n1820939093":{"id":"n1820939093","loc":[-85.0851682,42.1012472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939095":{"id":"n1820939095","loc":[-85.2811784,41.986243],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939096":{"id":"n1820939096","loc":[-85.4274125,42.0052995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939097":{"id":"n1820939097","loc":[-85.0871262,42.0951652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939099":{"id":"n1820939099","loc":[-85.1314253,42.0671665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939100":{"id":"n1820939100","loc":[-85.2778997,41.991001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939101":{"id":"n1820939101","loc":[-85.112107,42.0862812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939102":{"id":"n1820939102","loc":[-85.299911,41.9729955],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939103":{"id":"n1820939103","loc":[-85.639822,41.9094796],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939104":{"id":"n1820939104","loc":[-85.122294,42.0785334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939105":{"id":"n1820939105","loc":[-85.2476294,42.015719],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939106":{"id":"n1820939106","loc":[-85.4946007,41.9814631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939107":{"id":"n1820939107","loc":[-85.0879524,42.0986919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939108":{"id":"n1820939108","loc":[-85.0342814,42.098274],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939109":{"id":"n1820939109","loc":[-85.2450695,42.0095463],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939110":{"id":"n1820939110","loc":[-85.3847546,42.0024135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939111":{"id":"n1820939111","loc":[-85.2961344,41.9742558],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939112":{"id":"n1820939112","loc":[-85.27899,41.994317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939114":{"id":"n1820939114","loc":[-85.1017644,42.0886618],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939115":{"id":"n1820939115","loc":[-85.076215,42.1056333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939116":{"id":"n1820939116","loc":[-85.1198009,42.0805349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939117":{"id":"n1820939117","loc":[-85.11988,42.0798513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939118":{"id":"n1820939118","loc":[-85.147819,42.0625476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939119":{"id":"n1820939119","loc":[-85.0585969,42.1029042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939120":{"id":"n1820939120","loc":[-85.1248596,42.0745744],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939121":{"id":"n1820939121","loc":[-85.3023786,41.9725249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939123":{"id":"n1820939123","loc":[-85.0119332,42.0900699],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939124":{"id":"n1820939124","loc":[-85.2466852,42.0170343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939125":{"id":"n1820939125","loc":[-85.0033019,42.0872792],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939126":{"id":"n1820939126","loc":[-85.0042084,42.0875778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939128":{"id":"n1820939128","loc":[-85.0052961,42.0885424],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939130":{"id":"n1820939130","loc":[-85.0647942,42.10508],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939131":{"id":"n1820939131","loc":[-85.2824123,41.9825107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939132":{"id":"n1820939132","loc":[-85.3210039,41.9723255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939133":{"id":"n1820939133","loc":[-85.0491033,42.1014184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939134":{"id":"n1820939134","loc":[-85.1127776,42.0855168],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939135":{"id":"n1820939135","loc":[-85.1243768,42.0759322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939137":{"id":"n1820939137","loc":[-85.125974,42.0747547],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939138":{"id":"n1820939138","loc":[-85.1071248,42.0859973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939139":{"id":"n1820939139","loc":[-85.5326175,41.9674833],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1820939140":{"id":"n1820939140","loc":[-85.1338715,42.0660833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939142":{"id":"n1820939142","loc":[-85.649671,41.9135675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939144":{"id":"n1820939144","loc":[-85.0236545,42.0920444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939145":{"id":"n1820939145","loc":[-85.1084391,42.0859376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939146":{"id":"n1820939146","loc":[-85.1539988,42.0618626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939147":{"id":"n1820939147","loc":[-85.2354521,42.026511],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939148":{"id":"n1820939148","loc":[-85.2362246,42.0260408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939149":{"id":"n1820939149","loc":[-85.2401342,42.0115233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939150":{"id":"n1820939150","loc":[-85.295319,41.9747423],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939151":{"id":"n1820939151","loc":[-85.1164696,42.0835409],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939152":{"id":"n1820939152","loc":[-85.3232891,41.9712885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939153":{"id":"n1820939153","loc":[-85.2574463,42.0068944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939155":{"id":"n1820939155","loc":[-85.5704064,41.9598246],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939156":{"id":"n1820939156","loc":[-85.0349077,42.0998116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939157":{"id":"n1820939157","loc":[-85.0949529,42.0925619],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939159":{"id":"n1820939159","loc":[-85.0179829,42.0902343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939160":{"id":"n1820939160","loc":[-85.0405832,42.1016942],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939161":{"id":"n1820939161","loc":[-85.2534015,42.0111833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939162":{"id":"n1820939162","loc":[-85.0839881,42.102708],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939163":{"id":"n1820939163","loc":[-85.0341996,42.1008385],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939164":{"id":"n1820939164","loc":[-85.1037761,42.0879731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939173":{"id":"n1820939173","loc":[-85.0460616,42.1005786],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939177":{"id":"n1820939177","loc":[-85.0061651,42.0878059],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939181":{"id":"n1820939181","loc":[-85.1456775,42.0654684],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939183":{"id":"n1820939183","loc":[-85.1325508,42.0718439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939185":{"id":"n1820939185","loc":[-85.2485842,42.008329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939187":{"id":"n1820939187","loc":[-85.2744128,41.9949322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939189":{"id":"n1820939189","loc":[-85.2579025,41.9999542],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939191":{"id":"n1820939191","loc":[-85.3358998,41.9828987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939193":{"id":"n1820939193","loc":[-85.3192658,41.9716714],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939194":{"id":"n1820939194","loc":[-85.6400795,41.9130725],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939195":{"id":"n1820939195","loc":[-85.3278489,41.9780591],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939196":{"id":"n1820939196","loc":[-85.2800197,41.983061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939197":{"id":"n1820939197","loc":[-85.3278167,41.9692943],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939198":{"id":"n1820939198","loc":[-85.3366894,41.9838653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939199":{"id":"n1820939199","loc":[-85.0328383,42.0969923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939201":{"id":"n1820939201","loc":[-85.3259284,41.9720383],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939217":{"id":"n1820939217","loc":[-85.1840181,42.0503277],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939220":{"id":"n1820939220","loc":[-85.422563,42.0089986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939222":{"id":"n1820939222","loc":[-85.555386,41.9707856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939224":{"id":"n1820939224","loc":[-85.3830809,42.002254],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939226":{"id":"n1820939226","loc":[-84.9917938,42.0857517],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939227":{"id":"n1820939227","loc":[-85.2936775,41.9740484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939228":{"id":"n1820939228","loc":[-85.2632133,41.9975024],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939229":{"id":"n1820939229","loc":[-85.2809424,41.9853259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939230":{"id":"n1820939230","loc":[-85.242104,42.0131204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939232":{"id":"n1820939232","loc":[-85.2610246,41.9963901],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939233":{"id":"n1820939233","loc":[-85.2335531,42.0268378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939234":{"id":"n1820939234","loc":[-85.3188839,41.9713575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939235":{"id":"n1820939235","loc":[-85.2413637,42.0225658],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939237":{"id":"n1820939237","loc":[-85.0010796,42.0887215],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939239":{"id":"n1820939239","loc":[-85.2241697,42.0362624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939243":{"id":"n1820939243","loc":[-85.0368456,42.1040134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939244":{"id":"n1820939244","loc":[-85.1327986,42.069524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939260":{"id":"n1820939260","loc":[-85.5408163,41.9711206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939261":{"id":"n1820939261","loc":[-85.2959199,41.9746546],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939262":{"id":"n1820939262","loc":[-85.3298659,41.9683598],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939263":{"id":"n1820939263","loc":[-85.2240581,42.0358425],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939264":{"id":"n1820939264","loc":[-85.2438206,42.0101944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939265":{"id":"n1820939265","loc":[-85.3984489,42.0059589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939266":{"id":"n1820939266","loc":[-85.2330811,42.0294279],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939268":{"id":"n1820939268","loc":[-85.1126877,42.0857704],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939271":{"id":"n1820939271","loc":[-85.254925,42.0106253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939273":{"id":"n1820939273","loc":[-85.4328046,42.0064662],"version":"2","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:51:01Z","tags":{}},"n1820939277":{"id":"n1820939277","loc":[-85.289622,41.9789616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939279":{"id":"n1820939279","loc":[-85.4574532,42.0004043],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939281":{"id":"n1820939281","loc":[-85.4803486,41.9867211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939283":{"id":"n1820939283","loc":[-85.157475,42.0631848],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939285":{"id":"n1820939285","loc":[-85.2571458,42.0059935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939287":{"id":"n1820939287","loc":[-85.2818544,41.9825984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939289":{"id":"n1820939289","loc":[-85.2298302,42.0328781],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939291":{"id":"n1820939291","loc":[-85.4819523,41.984821],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820939301":{"id":"n1820939301","loc":[-85.3139765,41.9701159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939304":{"id":"n1820939304","loc":[-85.0424447,42.101742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939306":{"id":"n1820939306","loc":[-85.6360283,41.9338482],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939310":{"id":"n1820939310","loc":[-85.3463025,41.9913622],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939312":{"id":"n1820939312","loc":[-85.4664869,41.9988097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939314":{"id":"n1820939314","loc":[-85.149364,42.0622449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939316":{"id":"n1820939316","loc":[-85.2460415,42.0153125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939318":{"id":"n1820939318","loc":[-85.4806103,41.9924523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939320":{"id":"n1820939320","loc":[-85.2449042,42.0190987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939322":{"id":"n1820939322","loc":[-85.5280165,41.9689263],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939324":{"id":"n1820939324","loc":[-85.0051204,42.0882625],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939326":{"id":"n1820939326","loc":[-85.1240925,42.0771546],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939329":{"id":"n1820939329","loc":[-85.2261653,42.0342225],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939331":{"id":"n1820939331","loc":[-85.5259933,41.972211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939333":{"id":"n1820939333","loc":[-85.0074754,42.0883183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939335":{"id":"n1820939335","loc":[-85.0764014,42.1055549],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939336":{"id":"n1820939336","loc":[-85.2908773,41.9769597],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939337":{"id":"n1820939337","loc":[-85.4095382,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939346":{"id":"n1820939346","loc":[-85.2514166,42.0111753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939348":{"id":"n1820939348","loc":[-85.0030377,42.0873799],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939350":{"id":"n1820939350","loc":[-85.3659362,41.9964974],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939352":{"id":"n1820939352","loc":[-85.226058,42.0348281],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939355":{"id":"n1820939355","loc":[-85.1902408,42.0507101],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939357":{"id":"n1820939357","loc":[-85.2781854,41.9946001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939359":{"id":"n1820939359","loc":[-85.2139988,42.0405175],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939361":{"id":"n1820939361","loc":[-85.0086609,42.0908262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939363":{"id":"n1820939363","loc":[-85.0627128,42.1043398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939365":{"id":"n1820939365","loc":[-85.1311346,42.072501],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939369":{"id":"n1820939369","loc":[-85.248198,42.0082652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939370":{"id":"n1820939370","loc":[-84.99792,42.087794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939371":{"id":"n1820939371","loc":[-85.2786775,41.9942783],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939372":{"id":"n1820939372","loc":[-85.0342103,42.1013957],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939373":{"id":"n1820939373","loc":[-85.2022357,42.0444799],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939374":{"id":"n1820939374","loc":[-85.2279205,42.0337388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939375":{"id":"n1820939375","loc":[-85.1337699,42.0712614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939376":{"id":"n1820939376","loc":[-85.317517,41.9707062],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939377":{"id":"n1820939377","loc":[-85.1326326,42.070218],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939394":{"id":"n1820939394","loc":[-85.0197746,42.0899118],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939397":{"id":"n1820939397","loc":[-85.2590076,41.9984632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939399":{"id":"n1820939399","loc":[-85.2469964,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939400":{"id":"n1820939400","loc":[-85.2470929,42.0146668],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939401":{"id":"n1820939401","loc":[-84.9984095,42.0878087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939402":{"id":"n1820939402","loc":[-85.2372653,42.0243273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939403":{"id":"n1820939403","loc":[-85.2454986,42.0091955],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939404":{"id":"n1820939404","loc":[-85.0539205,42.1035995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939405":{"id":"n1820939405","loc":[-85.550601,41.9706101],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939406":{"id":"n1820939406","loc":[-85.0351343,42.0999656],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939407":{"id":"n1820939407","loc":[-85.0082908,42.0905755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939408":{"id":"n1820939408","loc":[-85.0132904,42.0902251],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939410":{"id":"n1820939410","loc":[-85.0892546,42.094012],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939412":{"id":"n1820939412","loc":[-85.0350793,42.1030315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939416":{"id":"n1820939416","loc":[-85.0012406,42.0886777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939418":{"id":"n1820939418","loc":[-85.0577453,42.1029229],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939420":{"id":"n1820939420","loc":[-85.1230786,42.0776722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939422":{"id":"n1820939422","loc":[-85.571136,41.9649304],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939436":{"id":"n1820939436","loc":[-85.1137968,42.0848997],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939437":{"id":"n1820939437","loc":[-85.3559584,41.9925105],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939438":{"id":"n1820939438","loc":[-85.0080172,42.0903565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939439":{"id":"n1820939439","loc":[-85.0048897,42.0880913],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939441":{"id":"n1820939441","loc":[-85.0406959,42.1018574],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939443":{"id":"n1820939443","loc":[-85.3897328,42.0029078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939445":{"id":"n1820939445","loc":[-85.122349,42.0782814],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939448":{"id":"n1820939448","loc":[-85.4872193,41.985036],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939450":{"id":"n1820939450","loc":[-85.0120459,42.0904919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939452":{"id":"n1820939452","loc":[-85.6320543,41.921982],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939456":{"id":"n1820939456","loc":[-85.0844749,42.1036843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939458":{"id":"n1820939458","loc":[-85.0968037,42.091296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939463":{"id":"n1820939463","loc":[-85.5339747,41.9681841],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939465":{"id":"n1820939465","loc":[-85.4125423,42.0072129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939467":{"id":"n1820939467","loc":[-85.6335563,41.9303626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939469":{"id":"n1820939469","loc":[-85.2821014,41.9932126],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939471":{"id":"n1820939471","loc":[-85.374691,41.9969917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939485":{"id":"n1820939485","loc":[-85.4471321,42.0049806],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939487":{"id":"n1820939487","loc":[-85.3752532,41.9972206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939489":{"id":"n1820939489","loc":[-85.4517283,42.005927],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939492":{"id":"n1820939492","loc":[-85.4662552,42.0005693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939494":{"id":"n1820939494","loc":[-85.0120083,42.0902928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939496":{"id":"n1820939496","loc":[-85.044463,42.1004631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939498":{"id":"n1820939498","loc":[-85.418293,42.0089667],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939500":{"id":"n1820939500","loc":[-85.0554762,42.1027358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939504":{"id":"n1820939504","loc":[-85.1246289,42.0746858],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939507":{"id":"n1820939507","loc":[-85.0408139,42.1021838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939508":{"id":"n1820939508","loc":[-85.1236204,42.0775169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939509":{"id":"n1820939509","loc":[-85.0350109,42.1037428],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939510":{"id":"n1820939510","loc":[-85.0551583,42.1029878],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939511":{"id":"n1820939511","loc":[-85.0956771,42.0916662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939512":{"id":"n1820939512","loc":[-85.2323408,42.0273638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939513":{"id":"n1820939513","loc":[-85.1232771,42.0762388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939531":{"id":"n1820939531","loc":[-85.264608,41.9997828],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939533":{"id":"n1820939533","loc":[-85.4198808,42.0087914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939535":{"id":"n1820939535","loc":[-85.3080864,41.9715677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939536":{"id":"n1820939536","loc":[-85.1189426,42.0812596],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939537":{"id":"n1820939537","loc":[-85.2642741,41.9996764],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939538":{"id":"n1820939538","loc":[-85.2572531,42.0079627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939539":{"id":"n1820939539","loc":[-85.2907807,41.9790174],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939540":{"id":"n1820939540","loc":[-85.3171415,41.9707301],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939541":{"id":"n1820939541","loc":[-85.08777,42.0953841],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939542":{"id":"n1820939542","loc":[-85.1239262,42.0773218],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939543":{"id":"n1820939543","loc":[-84.9973956,42.0877968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939544":{"id":"n1820939544","loc":[-85.011606,42.0896161],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939545":{"id":"n1820939545","loc":[-85.4077358,42.0082971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939546":{"id":"n1820939546","loc":[-85.3614945,41.9933717],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939547":{"id":"n1820939547","loc":[-85.3189118,41.9697649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939550":{"id":"n1820939550","loc":[-85.1262691,42.0740221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939551":{"id":"n1820939551","loc":[-85.3863639,41.9994635],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939552":{"id":"n1820939552","loc":[-85.2836034,41.9923953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939554":{"id":"n1820939554","loc":[-85.3222377,41.9715916],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939555":{"id":"n1820939555","loc":[-85.0122658,42.0906312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939556":{"id":"n1820939556","loc":[-85.0022652,42.0877581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939557":{"id":"n1820939557","loc":[-85.1011314,42.0899954],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939559":{"id":"n1820939559","loc":[-85.0008181,42.0885293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939561":{"id":"n1820939561","loc":[-85.3637046,41.9942488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939562":{"id":"n1820939562","loc":[-85.4500117,42.0052892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939563":{"id":"n1820939563","loc":[-85.0537636,42.1036365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939565":{"id":"n1820939565","loc":[-85.2367503,42.0246939],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939566":{"id":"n1820939566","loc":[-85.0448479,42.1002653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939567":{"id":"n1820939567","loc":[-85.6337065,41.9295006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939568":{"id":"n1820939568","loc":[-85.0879792,42.095623],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939569":{"id":"n1820939569","loc":[-85.6347623,41.9352369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939570":{"id":"n1820939570","loc":[-85.1497931,42.0620378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939571":{"id":"n1820939571","loc":[-85.5676169,41.9656324],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939572":{"id":"n1820939572","loc":[-85.638041,41.9166971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939573":{"id":"n1820939573","loc":[-85.4993429,41.9781293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939574":{"id":"n1820939574","loc":[-85.5352831,41.9692127],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939575":{"id":"n1820939575","loc":[-84.9924429,42.0857118],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939577":{"id":"n1820939577","loc":[-85.0581101,42.1026721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939578":{"id":"n1820939578","loc":[-85.641088,41.9094477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939579":{"id":"n1820939579","loc":[-85.2548821,42.0052282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939580":{"id":"n1820939580","loc":[-85.1124463,42.0859734],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939581":{"id":"n1820939581","loc":[-85.1083479,42.0857624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939583":{"id":"n1820939583","loc":[-85.1387424,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939584":{"id":"n1820939584","loc":[-85.5152645,41.9700892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939585":{"id":"n1820939585","loc":[-85.5463738,41.9713439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939586":{"id":"n1820939586","loc":[-85.360207,41.9933717],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939587":{"id":"n1820939587","loc":[-85.2402372,42.0120917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939588":{"id":"n1820939588","loc":[-85.3936381,42.0047255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939589":{"id":"n1820939589","loc":[-85.3310246,41.973784],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939590":{"id":"n1820939590","loc":[-85.0329403,42.096642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939591":{"id":"n1820939591","loc":[-85.0097271,42.0910981],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939593":{"id":"n1820939593","loc":[-85.0446562,42.1003437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939595":{"id":"n1820939595","loc":[-85.0856671,42.1008452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939596":{"id":"n1820939596","loc":[-85.4087228,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939597":{"id":"n1820939597","loc":[-85.0609519,42.1052564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939598":{"id":"n1820939598","loc":[-85.3432126,41.9874548],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939599":{"id":"n1820939599","loc":[-85.4041738,42.0067027],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939600":{"id":"n1820939600","loc":[-85.0825437,42.1035768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939601":{"id":"n1820939601","loc":[-85.048422,42.101498],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939602":{"id":"n1820939602","loc":[-85.0336256,42.0999031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939603":{"id":"n1820939603","loc":[-85.046818,42.1014104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939605":{"id":"n1820939605","loc":[-85.2856524,41.98078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939607":{"id":"n1820939607","loc":[-85.1118173,42.0864245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939609":{"id":"n1820939609","loc":[-85.0443397,42.1006263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939610":{"id":"n1820939610","loc":[-85.0336698,42.0978361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939611":{"id":"n1820939611","loc":[-85.4630322,42.0014248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939612":{"id":"n1820939612","loc":[-85.0613127,42.1052353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939613":{"id":"n1820939613","loc":[-85.0137571,42.0887801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939614":{"id":"n1820939614","loc":[-85.272487,41.9982013],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939616":{"id":"n1820939616","loc":[-85.4665727,41.9983791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939617":{"id":"n1820939617","loc":[-85.1288078,42.0725476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939618":{"id":"n1820939618","loc":[-85.4653282,42.00109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939619":{"id":"n1820939619","loc":[-85.2314717,42.0276746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939620":{"id":"n1820939620","loc":[-85.255982,42.0003569],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939621":{"id":"n1820939621","loc":[-85.2886779,41.9787223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939622":{"id":"n1820939622","loc":[-85.22438,42.0367509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939623":{"id":"n1820939623","loc":[-85.0334713,42.0998382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939624":{"id":"n1820939624","loc":[-85.2236504,42.037484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939625":{"id":"n1820939625","loc":[-85.636908,41.9175162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939627":{"id":"n1820939627","loc":[-85.2669187,41.9989707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939628":{"id":"n1820939628","loc":[-85.3247268,41.9720702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939629":{"id":"n1820939629","loc":[-85.3785104,41.9987299],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939630":{"id":"n1820939630","loc":[-85.5267658,41.9720515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939631":{"id":"n1820939631","loc":[-85.2445116,42.0098811],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939632":{"id":"n1820939632","loc":[-85.1271448,42.0725077],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939633":{"id":"n1820939633","loc":[-85.0345751,42.099724],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939634":{"id":"n1820939634","loc":[-85.4217476,42.0089986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939635":{"id":"n1820939635","loc":[-85.3121848,41.9689433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939636":{"id":"n1820939636","loc":[-85.2826419,41.9929985],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939637":{"id":"n1820939637","loc":[-85.3160257,41.9706344],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939638":{"id":"n1820939638","loc":[-85.5684967,41.9657919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939640":{"id":"n1820939640","loc":[-85.225131,42.0356194],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939642":{"id":"n1820939642","loc":[-85.1324124,42.0693328],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939644":{"id":"n1820939644","loc":[-84.9994073,42.0878843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939645":{"id":"n1820939645","loc":[-85.1087596,42.0863329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939646":{"id":"n1820939646","loc":[-85.2915532,41.9782996],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939647":{"id":"n1820939647","loc":[-84.9988708,42.0877808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939648":{"id":"n1820939648","loc":[-85.2243628,42.0356728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939649":{"id":"n1820939649","loc":[-85.0427397,42.1020524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939650":{"id":"n1820939650","loc":[-85.6388392,41.9100752],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939651":{"id":"n1820939651","loc":[-85.0133709,42.0888557],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939652":{"id":"n1820939652","loc":[-85.318798,41.9701211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939653":{"id":"n1820939653","loc":[-85.6335778,41.9190602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939654":{"id":"n1820939654","loc":[-85.6338396,41.9370247],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939655":{"id":"n1820939655","loc":[-85.0939069,42.0931988],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939656":{"id":"n1820939656","loc":[-85.5702347,41.9651378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939657":{"id":"n1820939657","loc":[-85.4235286,42.0088392],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939658":{"id":"n1820939658","loc":[-85.2740856,41.9972206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939659":{"id":"n1820939659","loc":[-85.4824299,41.9934195],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939660":{"id":"n1820939660","loc":[-85.3857846,42.0014408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939661":{"id":"n1820939661","loc":[-85.0451658,42.10028],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939662":{"id":"n1820939662","loc":[-85.3893036,42.001377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939664":{"id":"n1820939664","loc":[-85.2455845,42.0088607],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939665":{"id":"n1820939665","loc":[-85.2741071,41.9951116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939666":{"id":"n1820939666","loc":[-85.1298375,42.0677718],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939667":{"id":"n1820939667","loc":[-85.5491848,41.9707377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939669":{"id":"n1820939669","loc":[-85.2780298,41.995238],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939670":{"id":"n1820939670","loc":[-85.1330068,42.0716926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939671":{"id":"n1820939671","loc":[-85.0811342,42.1025129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939672":{"id":"n1820939672","loc":[-85.2325124,42.0290135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939673":{"id":"n1820939673","loc":[-85.2975077,41.9716953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939674":{"id":"n1820939674","loc":[-85.0951729,42.0922394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939676":{"id":"n1820939676","loc":[-85.0363252,42.1043119],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939677":{"id":"n1820939677","loc":[-85.2960057,41.97349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939678":{"id":"n1820939678","loc":[-85.3701849,41.9982515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939679":{"id":"n1820939679","loc":[-85.3381486,41.9848861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939680":{"id":"n1820939680","loc":[-85.2058448,42.0417286],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939682":{"id":"n1820939682","loc":[-85.0819335,42.1034443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939683":{"id":"n1820939683","loc":[-85.3872223,41.9993359],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939684":{"id":"n1820939684","loc":[-85.095366,42.091909],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939685":{"id":"n1820939685","loc":[-85.2327914,42.0291888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939686":{"id":"n1820939686","loc":[-85.0433459,42.1018773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939687":{"id":"n1820939687","loc":[-85.0585339,42.1027318],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939688":{"id":"n1820939688","loc":[-85.0062885,42.0876347],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939689":{"id":"n1820939689","loc":[-85.246299,42.017377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939690":{"id":"n1820939690","loc":[-85.2932376,41.9742877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939691":{"id":"n1820939691","loc":[-85.2962846,41.9736815],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939692":{"id":"n1820939692","loc":[-85.6052365,41.9409193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939693":{"id":"n1820939693","loc":[-85.2570536,42.0003341],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939694":{"id":"n1820939694","loc":[-85.0488458,42.1014064],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939695":{"id":"n1820939695","loc":[-85.4050321,42.0069578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939696":{"id":"n1820939696","loc":[-85.4847517,41.9845894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939697":{"id":"n1820939697","loc":[-85.0844655,42.1013826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939698":{"id":"n1820939698","loc":[-85.1437206,42.0650008],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939699":{"id":"n1820939699","loc":[-85.1168183,42.0864034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939700":{"id":"n1820939700","loc":[-85.5479831,41.9711366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939701":{"id":"n1820939701","loc":[-85.0349948,42.1034124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939702":{"id":"n1820939702","loc":[-85.0835589,42.1038821],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939703":{"id":"n1820939703","loc":[-85.0203875,42.0902649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939704":{"id":"n1820939704","loc":[-85.0371191,42.1038184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939705":{"id":"n1820939705","loc":[-85.1273312,42.0735681],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939707":{"id":"n1820939707","loc":[-85.1272239,42.0730226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939710":{"id":"n1820939710","loc":[-85.0349881,42.1019012],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939712":{"id":"n1820939712","loc":[-85.2440459,42.0178313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939713":{"id":"n1820939713","loc":[-85.2444751,42.0182618],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939714":{"id":"n1820939714","loc":[-85.0539996,42.1032863],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939715":{"id":"n1820939715","loc":[-85.2215905,42.0373246],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939716":{"id":"n1820939716","loc":[-85.0649712,42.1051994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939717":{"id":"n1820939717","loc":[-85.0927146,42.0927581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939718":{"id":"n1820939718","loc":[-85.3884668,42.0042312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939719":{"id":"n1820939719","loc":[-85.0840672,42.1013241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939720":{"id":"n1820939720","loc":[-85.304739,41.9725408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939721":{"id":"n1820939721","loc":[-85.2243585,42.0371334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939722":{"id":"n1820939722","loc":[-85.0599823,42.1049686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939723":{"id":"n1820939723","loc":[-85.0298825,42.0944288],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939724":{"id":"n1820939724","loc":[-85.0366095,42.1042443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939725":{"id":"n1820939725","loc":[-85.0698783,42.1058135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939726":{"id":"n1820939726","loc":[-85.1054551,42.0873361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939727":{"id":"n1820939727","loc":[-84.9952324,42.0864285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939728":{"id":"n1820939728","loc":[-85.3442211,41.9897993],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939729":{"id":"n1820939729","loc":[-85.4386134,42.0056822],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939730":{"id":"n1820939730","loc":[-85.2438528,42.0146589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939731":{"id":"n1820939731","loc":[-85.0355581,42.1041846],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939732":{"id":"n1820939732","loc":[-85.557682,41.9724447],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939734":{"id":"n1820939734","loc":[-85.2299418,42.033314],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939735":{"id":"n1820939735","loc":[-85.6297412,41.9419088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939736":{"id":"n1820939736","loc":[-85.2645101,41.9980259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939738":{"id":"n1820939738","loc":[-85.082195,42.1035649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939739":{"id":"n1820939739","loc":[-85.234272,42.0267102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939740":{"id":"n1820939740","loc":[-85.0130758,42.0895006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939741":{"id":"n1820939741","loc":[-85.4594702,42.0000375],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939742":{"id":"n1820939742","loc":[-84.9946745,42.0863687],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939743":{"id":"n1820939743","loc":[-85.6438775,41.9120186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939744":{"id":"n1820939744","loc":[-85.6372685,41.9168089],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939745":{"id":"n1820939745","loc":[-85.2789468,41.9893208],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939747":{"id":"n1820939747","loc":[-85.3775019,41.998427],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939749":{"id":"n1820939749","loc":[-85.0993571,42.0909178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939750":{"id":"n1820939750","loc":[-85.1308503,42.0669339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939751":{"id":"n1820939751","loc":[-85.4802566,41.9856659],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820939752":{"id":"n1820939752","loc":[-85.2543563,42.0108804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939753":{"id":"n1820939753","loc":[-85.1041033,42.0878815],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939755":{"id":"n1820939755","loc":[-85.4000969,42.0071651],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939757":{"id":"n1820939757","loc":[-85.3858275,42.0022381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939758":{"id":"n1820939758","loc":[-85.3653998,41.996609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939759":{"id":"n1820939759","loc":[-85.2432949,42.0202305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939760":{"id":"n1820939760","loc":[-85.3878874,42.0042472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939761":{"id":"n1820939761","loc":[-85.2516741,42.0114145],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939762":{"id":"n1820939762","loc":[-85.2788825,41.9865142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939763":{"id":"n1820939763","loc":[-85.0009147,42.0886686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939764":{"id":"n1820939764","loc":[-85.3918142,42.003434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939765":{"id":"n1820939765","loc":[-85.5532832,41.9696848],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939766":{"id":"n1820939766","loc":[-85.5545063,41.969254],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939768":{"id":"n1820939768","loc":[-85.1327989,42.0704769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939770":{"id":"n1820939770","loc":[-85.0588558,42.1047696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939772":{"id":"n1820939772","loc":[-85.555798,41.9713017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939773":{"id":"n1820939773","loc":[-85.0565853,42.1023589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939774":{"id":"n1820939774","loc":[-85.2582941,41.9992765],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939775":{"id":"n1820939775","loc":[-85.3007264,41.9727642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939776":{"id":"n1820939776","loc":[-85.2477045,42.0082652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939777":{"id":"n1820939777","loc":[-85.2415247,42.0104973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1821006698":{"id":"n1821006698","loc":[-85.6345227,41.9382009],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006700":{"id":"n1821006700","loc":[-85.6344894,41.938975],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006704":{"id":"n1821006704","loc":[-85.6351181,41.9370157],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006706":{"id":"n1821006706","loc":[-85.6357554,41.9361657],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006708":{"id":"n1821006708","loc":[-85.6351235,41.9368481],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006710":{"id":"n1821006710","loc":[-85.6352844,41.9364211],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006712":{"id":"n1821006712","loc":[-85.6351503,41.937307],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006716":{"id":"n1821006716","loc":[-85.6350366,41.9379774],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006725":{"id":"n1821006725","loc":[-85.6352147,41.9375903],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821137607":{"id":"n1821137607","loc":[-85.5297057,41.9669915],"version":"1","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1821137608":{"id":"n1821137608","loc":[-85.5288598,41.9673094],"version":"1","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1821139530":{"id":"n1821139530","loc":[-85.4832228,41.9881686],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139531":{"id":"n1821139531","loc":[-85.4812101,41.9851258],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139532":{"id":"n1821139532","loc":[-85.4799127,41.9860244],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139533":{"id":"n1821139533","loc":[-85.4800313,41.9865555],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1841425201":{"id":"n1841425201","loc":[-85.4334577,42.0063713],"version":"1","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:50:57Z","tags":{}},"n1841425222":{"id":"n1841425222","loc":[-85.4382449,42.0055785],"version":"1","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:50:58Z","tags":{}},"n1914861007":{"id":"n1914861007","loc":[-85.394959,42.0057472],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:21Z","tags":{}},"n1914861057":{"id":"n1914861057","loc":[-85.3967185,42.0049695],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:22Z","tags":{}},"n1914861112":{"id":"n1914861112","loc":[-85.394179,42.0056906],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:24Z","tags":{}},"n1914861306":{"id":"n1914861306","loc":[-85.3900226,42.0028488],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:27Z","tags":{}},"n2114807565":{"id":"n2114807565","loc":[-85.6385979,41.9577824],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807568":{"id":"n2114807568","loc":[-85.6325097,41.9775713],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807572":{"id":"n2114807572","loc":[-85.6328996,41.9980965],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807578":{"id":"n2114807578","loc":[-85.6344818,41.9696956],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807583":{"id":"n2114807583","loc":[-85.6326289,41.9757853],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807593":{"id":"n2114807593","loc":[-85.6360828,41.9650674],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2130304159":{"id":"n2130304159","loc":[-85.6352537,41.9450015],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"railway":"level_crossing"}},"n2139795852":{"id":"n2139795852","loc":[-85.6374708,41.9311633],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139858882":{"id":"n2139858882","loc":[-85.635178,41.9356158],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858883":{"id":"n2139858883","loc":[-85.63533,41.9355886],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858884":{"id":"n2139858884","loc":[-85.6353819,41.93556],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858885":{"id":"n2139858885","loc":[-85.6353665,41.9355157],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858886":{"id":"n2139858886","loc":[-85.6353165,41.9354971],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858887":{"id":"n2139858887","loc":[-85.6352454,41.9355328],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858888":{"id":"n2139858888","loc":[-85.6350184,41.9357846],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858889":{"id":"n2139858889","loc":[-85.634978,41.9359448],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858890":{"id":"n2139858890","loc":[-85.6347723,41.9361523],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858891":{"id":"n2139858891","loc":[-85.6347165,41.9362667],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858892":{"id":"n2139858892","loc":[-85.6346992,41.9364312],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858893":{"id":"n2139858893","loc":[-85.634603,41.9366329],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858894":{"id":"n2139858894","loc":[-85.6345973,41.9367488],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858895":{"id":"n2139858895","loc":[-85.6345127,41.9369734],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858896":{"id":"n2139858896","loc":[-85.634478,41.9371923],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858897":{"id":"n2139858897","loc":[-85.6344838,41.9373768],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858898":{"id":"n2139858898","loc":[-85.6346242,41.9375299],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858899":{"id":"n2139858899","loc":[-85.6347723,41.9376357],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858900":{"id":"n2139858900","loc":[-85.6347607,41.9377788],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858901":{"id":"n2139858901","loc":[-85.6346204,41.9379533],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858902":{"id":"n2139858902","loc":[-85.6344184,41.9380105],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858903":{"id":"n2139858903","loc":[-85.6341627,41.9380406],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858904":{"id":"n2139858904","loc":[-85.634005,41.9381679],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858905":{"id":"n2139858905","loc":[-85.63393,41.9383353],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858906":{"id":"n2139858906","loc":[-85.6338588,41.9384597],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858907":{"id":"n2139858907","loc":[-85.6336627,41.9387759],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858908":{"id":"n2139858908","loc":[-85.6335127,41.9389361],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858933":{"id":"n2139858933","loc":[-85.6353118,41.9432646],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858934":{"id":"n2139858934","loc":[-85.6353952,41.9433002],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858935":{"id":"n2139858935","loc":[-85.6356496,41.9433255],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858936":{"id":"n2139858936","loc":[-85.6363128,41.9433373],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858937":{"id":"n2139858937","loc":[-85.6365467,41.9433779],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858938":{"id":"n2139858938","loc":[-85.6368692,41.9435265],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858939":{"id":"n2139858939","loc":[-85.6370986,41.9437039],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858940":{"id":"n2139858940","loc":[-85.6372371,41.9437732],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858941":{"id":"n2139858941","loc":[-85.6374756,41.9438171],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858942":{"id":"n2139858942","loc":[-85.6376164,41.9439286],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858943":{"id":"n2139858943","loc":[-85.6377504,41.944138],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858944":{"id":"n2139858944","loc":[-85.6384204,41.9443137],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858945":{"id":"n2139858945","loc":[-85.6385726,41.9444506],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858946":{"id":"n2139858946","loc":[-85.638702,41.9445739],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858947":{"id":"n2139858947","loc":[-85.6387179,41.9446516],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858948":{"id":"n2139858948","loc":[-85.6387088,41.9447985],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858949":{"id":"n2139858949","loc":[-85.6387656,41.9449877],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858950":{"id":"n2139858950","loc":[-85.638777,41.9451448],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858951":{"id":"n2139858951","loc":[-85.6387088,41.9452631],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858964":{"id":"n2139858964","loc":[-85.6383346,41.9442912],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858966":{"id":"n2139858966","loc":[-85.6384724,41.9443605],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858967":{"id":"n2139858967","loc":[-85.6354078,41.9434285],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858968":{"id":"n2139858968","loc":[-85.635271,41.943654],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858969":{"id":"n2139858969","loc":[-85.6352657,41.9437437],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858970":{"id":"n2139858970","loc":[-85.635271,41.9438195],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858971":{"id":"n2139858971","loc":[-85.6351563,41.9438906],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858972":{"id":"n2139858972","loc":[-85.6351384,41.9438882],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858973":{"id":"n2139858973","loc":[-85.6351514,41.9438034],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858974":{"id":"n2139858974","loc":[-85.6351237,41.9436641],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858975":{"id":"n2139858975","loc":[-85.6351498,41.9436108],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858976":{"id":"n2139858976","loc":[-85.6351058,41.9435345],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858977":{"id":"n2139858977","loc":[-85.6349641,41.9432051],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858986":{"id":"n2139858986","loc":[-85.6341205,41.9380746],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858990":{"id":"n2139858990","loc":[-85.6345671,41.9381816],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858995":{"id":"n2139858995","loc":[-85.6339783,41.9382273],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139859003":{"id":"n2139859003","loc":[-85.6340477,41.9373489],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{}},"n2139859004":{"id":"n2139859004","loc":[-85.6339784,41.9374752],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{}},"n2139870406":{"id":"n2139870406","loc":[-85.6342265,41.9432605],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139877106":{"id":"n2139877106","loc":[-85.6346323,41.9438746],"version":"1","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n2139982399":{"id":"n2139982399","loc":[-85.6324055,41.9408537],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982400":{"id":"n2139982400","loc":[-85.632488,41.941063],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{"leisure":"slipway"}},"n2139982401":{"id":"n2139982401","loc":[-85.6327261,41.9415366],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982402":{"id":"n2139982402","loc":[-85.6326391,41.9413598],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982403":{"id":"n2139982403","loc":[-85.6327041,41.9414391],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982405":{"id":"n2139982405","loc":[-85.6322891,41.9406009],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982406":{"id":"n2139982406","loc":[-85.6325412,41.9425257],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139989333":{"id":"n2139989333","loc":[-85.6340584,41.9431731],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2140006331":{"id":"n2140006331","loc":[-85.6361751,41.9459744],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006334":{"id":"n2140006334","loc":[-85.636528,41.9459751],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006336":{"id":"n2140006336","loc":[-85.6370918,41.9458926],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006338":{"id":"n2140006338","loc":[-85.6378806,41.9456474],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006340":{"id":"n2140006340","loc":[-85.6385831,41.9454343],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006342":{"id":"n2140006342","loc":[-85.639341,41.945157],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006344":{"id":"n2140006344","loc":[-85.6393497,41.9450232],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006346":{"id":"n2140006346","loc":[-85.6388245,41.9450145],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006348":{"id":"n2140006348","loc":[-85.6388167,41.9441739],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006351":{"id":"n2140006351","loc":[-85.6382915,41.9441797],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006353":{"id":"n2140006353","loc":[-85.63828,41.9438109],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006355":{"id":"n2140006355","loc":[-85.6381949,41.9436009],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006357":{"id":"n2140006357","loc":[-85.6371904,41.9435918],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006359":{"id":"n2140006359","loc":[-85.6366966,41.9432727],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006361":{"id":"n2140006361","loc":[-85.6353755,41.9432744],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006365":{"id":"n2140006365","loc":[-85.6350906,41.9435472],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006366":{"id":"n2140006366","loc":[-85.6343461,41.9441573],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006395":{"id":"n2140006395","loc":[-85.6351171,41.9437175],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006397":{"id":"n2140006397","loc":[-85.635352,41.9450206],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006399":{"id":"n2140006399","loc":[-85.6358194,41.9454937],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006401":{"id":"n2140006401","loc":[-85.6348693,41.9445739],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006431":{"id":"n2140006431","loc":[-85.6376737,41.9438023],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006437":{"id":"n2140006437","loc":[-85.6382631,41.9442724],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2189123379":{"id":"n2189123379","loc":[-85.6342671,41.9352665],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"w203974076":{"id":"w203974076","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870442","n2139870457","n2139870458","n2139870459","n2139870460","n2139870452"]},"w170989131":{"id":"w170989131","version":"5","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:30Z","tags":{"name":"St Joseph River","source":"Bing Imagery","waterway":"river"},"nodes":["n1820938225","n1820938712","n1820937596","n1820937574","n1820938515","n1820938330","n1820938678","n1820938240","n1820938950","n1820939226","n1820939575","n1820937913","n1820938223","n1820937668","n1820938545","n1820937584","n1820939742","n1820939727","n1820937578","n1820938149","n1820938124","n1820938888","n1820938898","n1820937922","n1820939543","n1820939370","n1820939401","n1820939647","n1820938345","n1820939644","n1820938333","n1820938370","n1820938624","n1820938493","n1820939559","n1820939763","n1820939237","n1820939416","n1820937810","n1820938317","n1820938324","n1820937558","n1820939556","n1820938298","n1820939348","n1820939125","n1820939081","n1820938859","n1820939126","n1820938881","n1820939439","n1820939324","n1820939128","n1820938101","n1820937706","n1820938382","n1820938776","n1820937815","n1820939177","n1820939688","n1820938952","n1820938216","n1820938387","n1820939333","n1820938243","n1820938248","n1820937666","n1820939051","n1820938332","n1820939438","n1820939407","n1820939361","n1820937517","n1820938770","n1820939591","n1820937857","n1820938491","n1820937993","n1820938125","n1820938166","n1820937746","n1820939028","n1820937638","n1820938676","n1820938843","n1820938844","n1820937978","n1820938730","n1820939544","n1820938304","n1820939123","n1820939494","n1820939450","n1820939555","n1820938133","n1820938129","n1820938871","n1820939408","n1820938669","n1820938260","n1820939740","n1820937625","n1820938631","n1820939651","n1820939613","n1820937850","n1820938325","n1820937736","n1820938804","n1820938837","n1820938014","n1820938991","n1820938722","n1820938935","n1820937870","n1820938432","n1820937986","n1820938756","n1820938966","n1820939159","n1820937744","n1820938334","n1820937645","n1820939394","n1820937656","n1820938392","n1820939703","n1820938385","n1820938947","n1820938854","n1820938428","n1820938488","n1820938269","n1820938668","n1820938268","n1820938707","n1820937732","n1820939144","n1820938481","n1820938771","n1820938686","n1820938948","n1820937997","n1820937769","n1820939003","n1820938083","n1820939011","n1820938803","n1820938700","n1820939723","n1820938808","n1820938262","n1820938081","n1820938926","n1820938326","n1820938102","n1820938508","n1820939590","n1820939199","n1820938084","n1820938870","n1820938895","n1820937611","n1820938918","n1820938514","n1820939610","n1820938910","n1820937523","n1820938127","n1820939108","n1820937981","n1820938938","n1820938715","n1820939016","n1820938237","n1820939623","n1820939602","n1820937734","n1820938977","n1820939633","n1820939156","n1820939406","n1820938279","n1820938301","n1820937678","n1820937671","n1820939163","n1820938356","n1820939372","n1820937568","n1820937626","n1820939710","n1820939004","n1820938253","n1820938571","n1820937513","n1820939412","n1820939701","n1820939509","n1820938839","n1820939731","n1820937798","n1820939676","n1820939724","n1820939243","n1820939704","n1820937814","n1820937599","n1820938199","n1820938995","n1820938445","n1820938069","n1820938470","n1820939074","n1820938193","n1820938740","n1820938047","n1820939507","n1820939441","n1820939160","n1820937849","n1820937840","n1820938052","n1820938988","n1820938796","n1820937724","n1820937620","n1820939304","n1820938343","n1820939649","n1820938875","n1820939686","n1820938476","n1820937801","n1820937737","n1820938264","n1820939609","n1820939496","n1820939593","n1820939566","n1820939661","n1820937782","n1820938912","n1820939173","n1820937733","n1820938953","n1820939603","n1820937607","n1820938468","n1820939601","n1820939694","n1820939133","n1820938897","n1820938893","n1820937831","n1820937730","n1820938820","n1820938046","n1820938426","n1820938347","n1820937582","n1820938954","n1820938033","n1820938104","n1820938680","n1820939563","n1820939404","n1820939714","n1820939000","n1820937992","n1820938168","n1820939510","n1820939500","n1820937509","n1820938865","n1820939773","n1820938138","n1820938905","n1820937623","n1820939418","n1820937946","n1820939577","n1820937615","n1820939687","n1820939119","n1820937988","n1820938337","n1820937750","n1820938703","n1820938339","n1820939044","n1820939770","n1820938913","n1820937672","n1820939722","n1820937768","n1820939597","n1820939612","n1820937699","n1820937682","n1820937669","n1820937657","n1820939363","n1820937800","n1820938265","n1820937760","n1820938207","n1820938115","n1820939130","n1820939716","n1820938338","n1820938239","n1820939040","n1820938064","n1820938855","n1820939015","n1820938258","n1820939042","n1820939043","n1820938443","n1820939725","n1820937675","n1820938568","n1820938280","n1820937705","n1820938775","n1820938636","n1820938626","n1820937859","n1820938096","n1820937852","n1820939039","n1820938247","n1820938585","n1820937707","n1820938117","n1820938909","n1820939115","n1820939335","n1820938805","n1820937935","n1820937876","n1820938699","n1820937869","n1820938603","n1820938100","n1820938500","n1820938283","n1820938275","n1820938923","n1820938365","n1820938349","n1820937804","n1820937903","n1820937608","n1820938688","n1820939671","n1820938092","n1820937820","n1820938753","n1820938922","n1820937990","n1820939682","n1820939738","n1820939600","n1820938167","n1820937726","n1820939702","n1820938209","n1820939456","n1820937837","n1820938222","n1820938902","n1820939162","n1820938965","n1820938461","n1820937681","n1820937514","n1820937764","n1820939719","n1820939697","n1820938899","n1820939093","n1820938702","n1820939595","n1820938749","n1820938348","n1820937606","n1820938675","n1820938830","n1820938737","n1820938758","n1820938716","n1820939107","n1820937863","n1820939033","n1820938163","n1820937867","n1820938819","n1820938034","n1820938252","n1820937563","n1820937868","n1820939032","n1820938632","n1820937982","n1820937943","n1820939568","n1820939541","n1820938215","n1820939097","n1820938812","n1820937518","n1820937952","n1820938711","n1820938736","n1820939066","n1820937591","n1820938082","n1820938108","n1820938496","n1820939410","n1820938949","n1820938327","n1820937708","n1820939023","n1820937772","n1820938256","n1820939083","n1820938378","n1820938961","n1820937610","n1820939717","n1820938695","n1820938590","n1820939655","n1820938341","n1820939054","n1820939157","n1820939674","n1820939684","n1820939511","n1820937631","n1820939458","n1820937830","n1820937709","n1820937779","n1820939749","n1820938880","n1820938856","n1820938557","n1820939557","n1820938249","n1820938818","n1820937594","n1820939114","n1820938416","n1820937508","n1820938990","n1820938201","n1820937759","n1820937987","n1820939164","n1820939753","n1820938187","n1820939067","n1820937586","n1820937941","n1820938121","n1820937807","n1820938521","n1820939726","n1820938244","n1820939014","n1820938741","n1820937629","n1820938664","n1820938747","n1820939082","n1820938709","n1820938320","n1820938270","n1820937619","n1820937777","n1820937718","n1820939138","n1820938056","n1820938155","n1820938596","n1820937775","n1820938437","n1820938128","n1820939581","n1820939145","n1820938546","n1820938184","n1820937601","n1820937794","n1820938539","n1820939645","n1820938438","n1820938436","n1820939025","n1820938915","n1820938534","n1820937605","n1820939607","n1820939101","n1820939580","n1820939268","n1820939134","n1820938849","n1820938754","n1820938079","n1820937842","n1820938781","n1820938873","n1820938495","n1820938381","n1820938503","n1820939436","n1820938502","n1820939087","n1820938996","n1820938449","n1820938907","n1820937979","n1820937780","n1820937546","n1820939699","n1820937677","n1820938957","n1820938946","n1820937776","n1820937717","n1820938718","n1820937637","n1820938510","n1820937663","n1820938941","n1820939151","n1820937603","n1820938250","n1820937951","n1820938630","n1820938821","n1820938779","n1820938497","n1820938159","n1820939536","n1820938409","n1820938386","n1820939116","n1820938340","n1820939117","n1820938291","n1820938435","n1820937819","n1820938242","n1820939078","n1820938877","n1820939104","n1820939445","n1820938367","n1820938903","n1820939420","n1820938517","n1820939508","n1820939542","n1820939326","n1820938210","n1820939020","n1820938815","n1820937832","n1820939513","n1820937818","n1820939005","n1820938717","n1820939135","n1820938384","n1820937587","n1820939024","n1820939504","n1820939120","n1820939026","n1820938015","n1820938998","n1820937648","n1820939137","n1820937761","n1820938195","n1820938535","n1820939550","n1820938725","n1820938282","n1820937781","n1820937792","n1820939705","n1820937788","n1820939707","n1820937882","n1820939632","n1820938427","n1820938276","n1820939617","n1820939013","n1820939035","n1820937543","n1820939365","n1820937752","n1820937802","n1820939183","n1820939670","n1820938450","n1820939375","n1820937813","n1820937673","n1820937783","n1820939029","n1820939768","n1820939377","n1820937974","n1820939244","n1820939642","n1820937864","n1820938255","n1820938528","n1820939666","n1820938120","n1820937812","n1820938928","n1820939750","n1820939099","n1820938073","n1820938714","n1820939140","n1820938192","n1820937844","n1820938635","n1820938742","n1820939583","n1820937887","n1820938318","n1820938816","n1820939698","n1820938273","n1820939181","n1820937652","n1820938748","n1820937651","n1820938519","n1820938019","n1820938752","n1820938235","n1820939118","n1820938562","n1820939314","n1820939570","n1820938190","n1820938342","n1820938533","n1820937977","n1820939089","n1820939146","n1820938622","n1820938297","n1820938524","n1820939283","n1820938874","n1820938832","n1820937550","n1820937843","n1820938638","n1820938116","n1820938206","n1820938319","n1820939053","n1820937845","n1820938093","n1820939217","n1820938997","n1820939355","n1820938861","n1820938726","n1820938057","n1820939373","n1820937862","n1820938518","n1820939072","n1820939680","n1820938444","n1820938217","n1820938506","n1820938393","n1820938492","n1820938852","n1820938221","n1820938773","n1820937684","n1820939060","n1820938224","n1820938203","n1820938840","n1820937525","n1820938147","n1820938433","n1820938188","n1820939359","n1820938750","n1820938016","n1820938768","n1820937621","n1820937799","n1820938951","n1820938721","n1820939037","n1820937866","n1820939715","n1820938063","n1820938446","n1820937627","n1820939624","n1820938431","n1820939721","n1820939622","n1820939239","n1820939263","n1820939648","n1820939640","n1820938867","n1820938757","n1820938439","n1820939352","n1820937740","n1820939329","n1820938229","n1820937583","n1820938180","n1820938366","n1820937767","n1820937758","n1820939374","n1820938869","n1820938292","n1820938400","n1820938399","n1820939734","n1820939289","n1820938944","n1820937755","n1820938759","n1820938434","n1820937600","n1820937825","n1820937670","n1820937793","n1820938011","n1820938246","n1820938956","n1820937770","n1820937757","n1820938059","n1820937860","n1820937569","n1820939266","n1820939685","n1820939672","n1820938606","n1820938772","n1820939038","n1820938211","n1820938359","n1820939619","n1820938708","n1820939512","n1820938065","n1820939233","n1820939739","n1820938786","n1820938879","n1820939147","n1820938563","n1820939148","n1820937839","n1820937659","n1820937786","n1820938419","n1820939565","n1820939402","n1820937710","n1820938254","n1820938271","n1820938390","n1820937680","n1820938140","n1820937817","n1820938218","n1820937985","n1820939235","n1820938441","n1820938401","n1820938719","n1820937795","n1820938971","n1820938460","n1820939759","n1820937972","n1820937841","n1820938462","n1820939320","n1820938978","n1820938360","n1820939713","n1820937676","n1820939712","n1820937939","n1820938080","n1820937754","n1820937753","n1820938530","n1820937886","n1820939689","n1820939124","n1820938697","n1820938789","n1820939105","n1820938860","n1820938853","n1820939400","n1820937561","n1820938404","n1820938774","n1820939316","n1820937696","n1820938782","n1820938975","n1820937564","n1820939730","n1820938257","n1820937853","n1820938487","n1820938848","n1820938906","n1820939230","n1820938424","n1820938051","n1820937771","n1820939587","n1820939149","n1820938792","n1820939041","n1820938934","n1820939777","n1820937515","n1820939058","n1820938312","n1820939264","n1820939631","n1820939109","n1820939403","n1820939664","n1820938724","n1820938929","n1820939399","n1820939776","n1820939369","n1820939185","n1820937701","n1820938126","n1820938336","n1820938219","n1820939080","n1820938642","n1820938043","n1820937725","n1820938548","n1820938552","n1820938035","n1820938684","n1820937778","n1820938764","n1820939021","n1820939346","n1820937712","n1820939761","n1820938397","n1820937747","n1820938566","n1820939161","n1820939090","n1820939752","n1820939271","n1820938878","n1820938110","n1820938346","n1820938499","n1820938151","n1820939538","n1820938281","n1820939153","n1820938551","n1820939285","n1820938197","n1820938408","n1820938482","n1820939036","n1820939579","n1820938489","n1820938483","n1820938189","n1820938123","n1820938087","n1820937741","n1820938485","n1820937590","n1820938972","n1820937773","n1820937520","n1820938872","n1820938131","n1820938452","n1820938328","n1820939620","n1820937641","n1820938353","n1820939693","n1820938705","n1820937640","n1820939189","n1820938144","n1820939774","n1820938694","n1820938238","n1820939397","n1820937917","n1820938454","n1820938567","n1820938979","n1820938060","n1820938204","n1820937828","n1820939232","n1820938806","n1820938857","n1820938078","n1820938105","n1820939228","n1820938604","n1820937763","n1820937854","n1820938289","n1820939736","n1820937937","n1820937714","n1820938278","n1820938058","n1820938706","n1820938989","n1820938313","n1820938520","n1820938288","n1820937689","n1820939537","n1820939531","n1820939019","n1820937527","n1820938455","n1820938814","n1820938045","n1820939627","n1820938213","n1820938161","n1820938331","n1820938024","n1820938220","n1820938062","n1820938178","n1820937796","n1820937644","n1820938490","n1820937589","n1820937879","n1820939614","n1820938882","n1820938039","n1820938538","n1820937667","n1820937719","n1820938561","n1820939658","n1820938783","n1820938601","n1820938198","n1820938388","n1820938969","n1820937687","n1820939086","n1820939665","n1820939187","n1820938498","n1820938261","n1820937983","n1820938068","n1820938136","n1820939061","n1820938137","n1820938186","n1820939071","n1820937592","n1820939669","n1820937553","n1820939357","n1820938727","n1820939371","n1820939112","n1820939079","n1820938743","n1820938467","n1820938834","n1820938022","n1820938537","n1820938122","n1820938516","n1820937614","n1820937612","n1820939469","n1820939636","n1820939050","n1820939552","n1820938157","n1820938663","n1820938955","n1820939091","n1820938430","n1820938471","n1820937809","n1820938074","n1820938208","n1820938914","n1820938858","n1820938417","n1820937531","n1820938107","n1820939100","n1820938751","n1820937711","n1820938824","n1820939745","n1820937572","n1820938602","n1820938212","n1820938097","n1820937921","n1820938090","n1820938511","n1820938876","n1820939762","n1820938234","n1820938048","n1820937774","n1820937856","n1820937749","n1820937765","n1820938286","n1820939095","n1820938480","n1820939229","n1820938277","n1820937617","n1820938311","n1820937622","n1820939196","n1820937690","n1820939006","n1820939287","n1820939131","n1820938106","n1820938784","n1820938335","n1820938095","n1820938182","n1820937715","n1820937683","n1820938070","n1820939605","n1820938527","n1820938763","n1820938398","n1820937686","n1820939621","n1820937664","n1820939277","n1820938565","n1820939539","n1820938099","n1820939646","n1820938556","n1820937548","n1820938729","n1820939336","n1820938259","n1820938728","n1820938361","n1820937643","n1820938644","n1820939007","n1820939690","n1820939227","n1820937635","n1820937950","n1820938682","n1820939150","n1820939012","n1820939261","n1820939111","n1820937805","n1820939691","n1820939677","n1820937628","n1820937811","n1820938790","n1820938251","n1820938226","n1820938942","n1820937633","n1820937984","n1820937751","n1820939673","n1820938970","n1820938415","n1820938597","n1820938309","n1820938111","n1820938472","n1820938894","n1820938402","n1820937593","n1820938570","n1820939102","n1820939775","n1820937948","n1820939121","n1820937511","n1820938787","n1820939720","n1820939075","n1820937880","n1820937742","n1820937721","n1820939535","n1820938486","n1820938354","n1820937632","n1820939010","n1820938885","n1820938089","n1820937613","n1820938442","n1820938245","n1820938272","n1820937566","n1820938295","n1820938532","n1820938883","n1820937713","n1820937674","n1820939635","n1820938448","n1820938355","n1820938587","n1820938559","n1820937787","n1820939301","n1820937723","n1820939056","n1820937560","n1820938323","n1820938230","n1820938453","n1820938377","n1820938357","n1820939637","n1820938017","n1820939540","n1820939376","n1820937639","n1820937642","n1820938075","n1820938351","n1820938766","n1820937897","n1820938973","n1820938066","n1820939547","n1820939652","n1820937944","n1820937748","n1820939234","n1820939193","n1820937891","n1820938785","n1820939132","n1820938523","n1820938884","n1820938411","n1820939554","n1820938791","n1820937655","n1820938368","n1820939152","n1820938030","n1820938447","n1820937580","n1820939628","n1820937588","n1820937894","n1820939201","n1820938086","n1820937650","n1820938379","n1820939008","n1820938999","n1820937524","n1820937872","n1820938389","n1820939197","n1820938422","n1820938936","n1820939262","n1820937634","n1820938583","n1820939589","n1820937901","n1820939034","n1820939065","n1820938290","n1820939195","n1820938228","n1820937884","n1820938797","n1820938191","n1820939191","n1820939198","n1820937892","n1820939679","n1820938507","n1820937647","n1820937909","n1820938542","n1820939598","n1820937851","n1820939084","n1820939728","n1820937688","n1820938263","n1820938670","n1820937762","n1820939310","n1820938925","n1820938862","n1820938822","n1820938547","n1820937731","n1820938594","n1820938592","n1820938214","n1820938284","n1820937835","n1820938599","n1820939437","n1820937834","n1820937576","n1820937692","n1820939586","n1820939546","n1820938403","n1820937970","n1820939561","n1820938098","n1820938851","n1820938477","n1820938892","n1820939045","n1820939758","n1820939350","n1820938321","n1820938440","n1820938595","n1820938364","n1820938962","n1820938118","n1820939678","n1820938406","n1820938549","n1820937555","n1820938823","n1820937521","n1820939471","n1820939487","n1820938799","n1820938605","n1820937928","n1820938373","n1820939747","n1820939629","n1820937557","n1820937526","n1820938958","n1820938833","n1820937636","n1820938967","n1820938760","n1820938842","n1820938067","n1820939077","n1820939224","n1820938185","n1820939110","n1820938372","n1820939757","n1820939063","n1820939660","n1820938813","n1820937528","n1820938369","n1820938896","n1820939551","n1820939683","n1820937660","n1820937873","n1820938810","n1820938478","n1820939662","n1820937595","n1820939052","n1820938113","n1820939070","n1820938733","n1820937878","n1820938300","n1820939760","n1820939718","n1820937646","n1820939057","n1820939443","n1914861306","n1820938013","n1820937529","n1820939764","n1820938826","n1820937885","n1820939588","n1820937865","n1820937833","n1914861112","n1820938761","n1914861007","n1820937905","n1820938541","n1820939092","n1914861057","n1820938153","n1820938267","n1820939265","n1820938085","n1820939018","n1820939755","n1820938474","n1820939027","n1820938593","n1820938202","n1820939599","n1820939695","n1820938077","n1820938012","n1820939545","n1820939596","n1820939337","n1820938227","n1820937698","n1820938475","n1820939465","n1820938165","n1820938698","n1820938525","n1820938529","n1820938553","n1820938940","n1820939498","n1820938501","n1820939533","n1820938924","n1820939634","n1820939220","n1820939657","n1820938887","n1820938838","n1820938114","n1820937823","n1820938778","n1820938801","n1820939096","n1820938981","n1820937953","n1820938732","n1820938980","n1820938960","n1820937949","n1820938026","n1820939273","n1841425201","n1820938629","n1820938864","n1820938554","n1820938088","n1820937685","n1841425222","n1820939729","n1820937665","n1820937838","n1820937739","n1820938780","n1820937821","n1820938825","n1820939055","n1820939485","n1820938041","n1820938746","n1820939562","n1820938459","n1820939489","n1820938050","n1820937980","n1820937695","n1820938413","n1820938555","n1820937703","n1820938536","n1820938196","n1820938287","n1820938169","n1820939279","n1820938531","n1820938959","n1820939741","n1820938665","n1820938963","n1820939611","n1820937653","n1820939618","n1820939492","n1820938600","n1820938628","n1820939312","n1820939616","n1820937738","n1820939001","n1820939062","n1820938794","n1820938558","n1820937822","n1820937532","n1820939073","n1820938200","n1820938241","n1820938968","n1820938927","n1820938306","n1820937630","n1820938456","n1820937694","n1820938908","n1820939076","n1820937522","n1820939659","n1820938522","n1820939318","n1820938932","n1820938841","n1820937579","n1820937540","n1820938560","n1821139530","n1820938964","n1820937662","n1820939281","n1821139533","n1820937797","n1821139532","n1820939751","n1821139531","n1820939291","n1820938420","n1820939696","n1820938904","n1820938484","n1820939448","n1820939009","n1820938735","n1820938986","n1820938937","n1820939030","n1820938734","n1820938745","n1820939106","n1820938987","n1820937858","n1820938673","n1820938620","n1820937808","n1820937700","n1820939573","n1820938540","n1820937661","n1820937570","n1820938396","n1820937875","n1820939048","n1820938233","n1820938793","n1820939584","n1820938412","n1820938394","n1820937846","n1820938800","n1820938690","n1820939331","n1820939630","n1820938762","n1820938710","n1820939322","n1820938992","n1821137608","n1821137607","n1820937924","n1820939139","n1820939463","n1820939574","n1820938294","n1820938071","n1820938307","n1820938061","n1820939260","n1820937899","n1820938310","n1820938983","n1820937530","n1820938993","n1820938890","n1820937915","n1820938231","n1820938040","n1820938920","n1820939585","n1820938135","n1820939700","n1820937824","n1820939667","n1820937930","n1820938134","n1820937551","n1820939405","n1820938232","n1820937716","n1820937848","n1820939765","n1820939068","n1820939766","n1820937933","n1820937720","n1820939222","n1820939772","n1820939022","n1820939732","n1820937702","n1820937691","n1820938945","n1820937756","n1820938451","n1820938410","n1820938798","n1820937945","n1820937654","n1820938598","n1820938836","n1820937571","n1820937556","n1820938994","n1820938919","n1820938863","n1820939064","n1820938018","n1820937658","n1820937537","n1820938142","n1820938666","n1820937535","n1820939571","n1820938465","n1820939638","n1820937533","n1820939656","n1820939422","n1820938109","n1820938405","n1820938028","n1820937649","n1820938829","n1820939031","n1820939155","n1820938350","n1820938463","n1820938425","n1820939047","n1820938831","n1820938494","n1820937697","n1820938504","n1820938900","n1820937784","n1820938414","n1820938076","n1820938723","n1820937722","n1820938739","n1820937791","n1820938985","n1820938352","n1820938293","n1820938274","n1820939692","n1820937871","n1820939059","n1820938868","n1820937877","n1820937743","n1820938429","n1820937545","n1820937575","n1820938302","n1820938505","n1820938916","n1820938374","n1820938329","n1820937790","n1820939735","n1820938930","n1820937995","n1820938512","n1820938130","n1820938194","n1820938671","n1820938802","n1820937542","n1820937602","n1820939069","n1820938901","n1820939654","n1820937727","n1820939569","n1820938375","n1820939306","n1820938479","n1820938376","n1820938667","n1820937766","n1820939467","n1820939567","n1820937806","n1820938943","n1820938931","n1820937745","n1820939452","n1820938738","n1820938053","n1820939653","n1820938640","n1820937604","n1820937536","n1820938701","n1820939625","n1820939744","n1820939572","n1820937577","n1820937541","n1820938891","n1820937597","n1820938469","n1820939194","n1820937539","n1820938911","n1820939017","n1820939650","n1820939103","n1820939578","n1820938132","n1820937549","n1820938634","n1820939743","n1820937544","n1820937826","n1820937598","n1820937547","n1820938032","n1820939142"]},"w17963021":{"id":"w17963021","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:22:17Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331667","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185948706","n185948708","n185948710"]},"w203974069":{"id":"w203974069","version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:34Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139870431","n2139870432","n2139870433","n2139870434","n2139870431"]},"w209816575":{"id":"w209816575","version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199856288","n2199856289","n2199856290","n2199856291","n2199856292","n2199856293","n2199856294","n2199856295","n2199856296","n2199856297","n2199856298","n2199856299","n2199856300","n2199856301","n2199856302","n2199856303","n2199856288"]},"w203841838":{"id":"w203841838","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","natural":"water"},"nodes":["n2138493826","n2138493827","n2138493828","n2138493829","n2138493830","n2138493831","n2138493833","n2138493832","n2138493826"]},"w203972937":{"id":"w203972937","version":"2","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:26Z","tags":{"highway":"path","name":"Riverwalk Trail","surface":"asphalt","width":"3"},"nodes":["n2139858882","n2139858883","n2139858884","n2139858885","n2139858886","n2139858887","n2139858882","n2139858888","n2139858889","n2139858890","n2139858891","n2139858892","n2139858893","n2139858894","n2139858895","n2139858896","n2139858897","n2139858898","n2139858899","n2139858900","n2139858901","n2139858902","n2139858903","n2139858986","n2139858904","n2139858995","n2139858905","n2139858906","n2139858907","n2139858908","n2139858909","n2139858910","n2139858911","n2139858912","n2139858913","n2139858914","n2139858915","n2139858916","n2139858917","n2139858918","n2139858919","n2139858920","n2139858921","n2139858922","n2139858923","n2139858924","n2139858925","n2139858926","n2139858927","n2139858982","n2139858928","n2139858929","n2139858930","n2139858931","n2139858932","n2139858981","n2139858933","n2139858934","n2139858935","n2139858936","n2139858937","n2139858938","n2139858939","n2139858940","n2139858941","n2139858942","n2139858943","n2140006437","n2139858964","n2139858944","n2139858966","n2139858945","n2139858946","n2139858947","n2139858948","n2139858949","n2139858950","n2139858951"]},"w17964015":{"id":"w17964015","version":"2","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326005:15326006","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185954680","n185954683","n185954685","n185954687","n185954689","n185954690","n185954691","n2139870379","n2139870456","n185954692","n185954693","n185954695"]},"w17967315":{"id":"w17967315","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"South Andrews Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Andrews","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981999","n185974477","n185964963"]},"w203974071":{"id":"w203974071","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870439","n2139870440","n2139870441","n2139870442","n2139870443","n2139870444","n2139870445","n2139870446","n2139870447","n2139870448","n2139870449"]},"w170848824":{"id":"w170848824","version":"3","changeset":"15276848","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:54:30Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819858503","n1819858531","n1819858526","n1819858518","n1819858505","n1819858508","n1819858512","n1819858514","n1819858528","n1819858509","n1819858511","n1819858507","n1819858521"]},"w203986458":{"id":"w203986458","version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139989357","n2139989359","n2139989360","n2139989362","n2139989357"]},"w170844917":{"id":"w170844917","version":"7","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"source":"Bing","waterway":"riverbank"},"nodes":["n1819805911","n1819805690","n1819805812","n1819805766","n1819805802","n1819805885","n1819805626","n1819805842","n1819805715","n1819805694","n1819805618","n1819805629","n1819805731","n1819805636","n1819805878","n1819805718","n1819805798","n1819849057","n1819805666","n1819805852","n1819805805","n1819805789","n1819805868","n1819805680","n1819805918","n1819848888","n1819805762","n2139989328","n1819805907","n2139989330","n1819805915","n1819858521","n1819805854","n1819805876","n1819805864","n1819805922","n2139859004","n1819805702","n2139859003","n1819805614","n1819805792","n1819805786","n1819805777","n1819805645","n1819805838","n1819805889","n1819805795","n1819805707","n1819805774","n1819805808","n1819805810","n1819805724","n1819805676","n1819805728","n1819805783","n1819805687","n1819805727","n2189123379","n1819805632","n1819805641","n1819805760","n1819805887","n1819805861","n1819805722","n1819805880","n2139982405","n2139982399","n2139982400","n1819805770","n2139982402","n2139982403","n2139982401","n1819805780","n1819805834","n2139982406","n1819805698","n1819805647","n1819805870","n1819805683","n1819805622","n1819805639","n1819805858","n1819805643","n1819805673","n1819805925","n1819805849","n1819805711","n1819805846","n1819805669","n1819805883","n1819805814","n1819805873","n1819805911"]},"w17967326":{"id":"w17967326","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"North Constantine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185985217","n185985219","n185985221","n185985222","n185985223","n185985225","n2140006431","n185985227","n185985229","n185985231","n185985233","n185985235","n185985238","n185985240","n2140018998","n185964965"]},"w134150789":{"id":"w134150789","version":"5","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964971","n2139870406","n185964972"]},"w17966400":{"id":"w17966400","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"tertiary","name":"South Constantine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958672","n185964965"]},"w203974066":{"id":"w203974066","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139870417","n2139870418","n2139870420","n2139870419"]},"w17965998":{"id":"w17965998","version":"5","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:53Z","tags":{"name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no"},"nodes":["n185972775","n185972777","n185972779","n185972781","n185972783","n185972785","n185972787","n185972788","n185972789","n185972790","n185972791","n185972793","n185972795","n185972797","n185972798","n185972800","n185972802","n185972805","n185972807","n185972809","n185972811","n185972813","n185972814","n185972815","n185972816","n185972817","n185972819","n185972821","n185972824","n185972826","n185972830","n185972832","n185972834","n185972835","n185972836","n185972839","n185990434","n2114807572","n2114807568","n185972845","n2114807583","n185972847","n185972849","n185972851","n2114807578","n1475293254","n2114807593","n1475293226","n185972862","n2114807565","n185951869","n1475293234","n1475293252","n185972868","n1475293264","n1475293222","n185972878","n1475293261","n185972882","n185972885","n1475293260","n1475293240","n185972891","n185972895","n185972897","n185972899","n2130304159","n1475284023","n185972903"]},"w134150795":{"id":"w134150795","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"bridge":"yes","highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964970","n185964971"]},"w203974067":{"id":"w203974067","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139870420","n2139870421"]},"w170995908":{"id":"w170995908","version":"3","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:15Z","tags":{"highway":"residential","name":"Thomas Street","source":"Bing"},"nodes":["n1821006702","n1821006700","n1821006698","n2139858990","n1821006716","n1821006725","n1821006712","n1821006704","n1821006708","n1821006710","n1821006706"]},"w17965834":{"id":"w17965834","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"Spring Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Spring","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185971361","n185971364","n185971366","n185971368","n185954695","n185964968"]},"w203974070":{"id":"w203974070","version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:34Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139870435","n2139870436","n2139870437","n2139870438","n2139870435"]},"w203989879":{"id":"w203989879","version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"highway":"service"},"nodes":["n2140018998","n2140018999","n2140019000"]},"w203974062":{"id":"w203974062","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870387","n2139870388","n2139870389","n2139870390","n2139870391","n2139870392","n2139870397","n2139870393","n2139870396","n2139870395","n2139870394","n2139870387"]},"w203974061":{"id":"w203974061","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"footway"},"nodes":["n2139870382","n2139870383"]},"w203049587":{"id":"w203049587","version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"area":"yes","name":"Scidmore Park Petting Zoo","tourism":"zoo","zoo":"petting_zoo"},"nodes":["n2130304133","n2130304136","n2130304138","n2130304140","n2130304142","n2130304144","n2130304146","n2130304147","n2130304148","n2130304149","n2130304150","n2130304151","n2130304133"]},"w203972941":{"id":"w203972941","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path"},"nodes":["n2139858982","n2139858983","n2139858984","n2139858985","n2139858927"]},"w203974065":{"id":"w203974065","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service"},"nodes":["n2139870406","n2139870407","n2139870408","n2139870417","n2139870409","n2139870410","n2139870411","n2139870412","n2139870426","n2139870413","n2139870414","n2139870415","n2139870419","n2139870416","n2139870421","n2139870408"]},"w203972940":{"id":"w203972940","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858934","n2139858967","n2139858968","n2139858969","n2139858970","n2139858971","n2139858972","n2139858973","n2139858974","n2139858975","n2139858976","n2139858977","n2139858978","n2139858979","n2139858980","n2139858981"]},"w203974072":{"id":"w203974072","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139858925","n2139870450","n2139870453","n2139870451","n2139870452","n2139870441"]},"w203974074":{"id":"w203974074","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870454","n2139870456","n2139870429"]},"w203974060":{"id":"w203974060","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"footway"},"nodes":["n2139870383","n2139870384","n2139870422","n2139870385","n2139870386","n2139870388"]},"w203841837":{"id":"w203841837","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","natural":"water"},"nodes":["n2138493807","n2138493808","n2138493809","n2138493810","n2138493811","n2138493812","n2138493813","n2138493814","n2138493815","n2138493816","n2138493825","n2138493817","n2138493824","n2138493818","n2138493819","n2138493820","n2138493821","n2138493822","n2138493823","n2138493807"]},"w134150845":{"id":"w134150845","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{"bridge":"yes","name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15324560:15329061:15329062:15333515:15333516:15333517:15328802:15312982:15312984:15312980:15326010:15326011:15313203:15322169:15324562:15312971:15312973:15312977:15328799:15328907:15328908:15322175:15329059:15333626:15333627:15325105:15322549:15337756:153","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185972903","n185972905"]},"w203974059":{"id":"w203974059","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"footway"},"nodes":["n2139870430","n2139870439","n2139870429","n2139870428","n2139870379","n2139870455","n2139870380","n2139870381","n2139858925","n2139870382"]},"w203986457":{"id":"w203986457","version":"2","changeset":"15287771","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T21:56:30Z","tags":{"area":"yes","ele":"241","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417887","gnis:state_id":"26","leisure":"park","name":"Scidmore Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2139989333","n2139989335","n2139989337","n2139989339","n1819805762","n2139989328","n1819805907","n2139989330","n1819805915","n2139989341","n2139989344","n2139989346","n2139989348","n2139989350","n2139989351","n2139989353","n2139989355","n2139989333"]},"w170848331":{"id":"w170848331","version":"4","changeset":"15276848","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:54:29Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819848937","n1819849104","n1819849076","n1819849183","n1819848928","n1819848972","n1819848948","n1819848971","n1819848859","n1819849008","n1819848889","n1819849026","n1819849094","n1819849083","n1819849079","n1819849187","n1819848992","n1819849060","n1819849056","n1819849071","n1819849067","n1819849048","n1819849036","n1819849150","n1819849075","n1819849051","n1819849062","n1819848926","n1819849035","n1819848987","n1819849012","n1819848933","n1819848996","n1819848990","n1819849005","n1819849021","n1819848892","n1819849092","n1819848863","n1819848922","n1819848858","n1819848855","n1819848974","n1819848953","n1819849019","n1819849049","n1819848979","n1819849140","n1819849193","n1819849147","n1819849151","n1819849163","n1819849023","n1819848878","n1819849004","n1819848857","n1819848879","n1819849041","n1819849165","n1819849107","n1819849156","n1819848934","n1819848914","n1819848955","n1819848931","n1819848927","n1819849084","n1819849169","n1819849045","n1819848945","n1819849095","n1819848924","n1819849171","n1819849141","n1819849046","n1819849197","n1819849011","n1819849108","n1819849158","n1819849160","n1819848870","n1819849006","n1819849157","n1819848993","n1819848970","n1819849202","n1819848903","n1819848975","n1819848849","n1819849025","n1819849105","n1819849033","n1819849176","n1819849099","n1819849086","n1819848960","n1819848961","n1819849001","n1819848980","n1819849038","n1819848854","n1819849127","n1819849170","n1819849139","n1819848873","n1819848929","n1819849201","n1819849121","n1819849031","n1819849131","n1819848875","n1819849080","n1819849066","n1819849081","n1819849096","n1819849172","n1819849114","n1819849182","n1819848905","n1819849054","n1819848920","n1819848851","n1819848968","n1819848917","n1819849111","n1819849119","n1819849074","n1819848893","n1819849129","n1819848850","n1819848956","n1819849154","n1819848877","n1819848986","n1819849191","n1819848952","n1819848954","n1819848942","n1819849028","n1819849195","n1819848938","n1819848962","n1819849070","n1819849034","n1819849052","n1819849059","n1819848916","n1819849162","n1819849167","n1819849093","n1819849030","n1819849002","n1819849161","n1819848886","n1819848958","n1819849064","n1819849112","n1819849148","n1819848856","n1819848976","n1819848977","n1819849144","n1819848918","n1819849200","n1819848919","n1819849042","n1819849166","n1819849186","n1819849152","n1819849058","n1819849185","n1819849199","n1819849053","n1819849194","n1819849068","n1819849146","n1819849174","n1819848967","n1819848932","n1819849155","n1819849198","n1819848964","n1819848894","n1819848969","n1819849184","n1819849055","n1819849179","n1819848865","n1819848860","n1819849082","n1819848966","n1819849040","n1819849069","n1819849078","n1819849077","n1819848904","n1819848959","n1819849133","n1819849089","n1819849000","n1819849124","n1819849032","n1819849097","n1819848939","n1819849072","n1819848915","n1819849196","n1819848946","n1819849047","n1819849029","n1819849164","n1819848994","n1819849022","n1819858513","n1819849126","n1819849063","n1819848941","n1819849085","n1819848871","n1819848943","n1819849192","n1819858501","n1819849159","n1819858523","n1819848901","n1819849189","n1819858503","n1819849065","n2139877106","n1819848909","n1819848930","n1819848888"]},"w17967397":{"id":"w17967397","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"North Andrews Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Andrews","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964963","n185985217"]},"w17964497":{"id":"w17964497","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:05Z","tags":{"highway":"tertiary","name":"Constantine St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958643","n185958645","n2139795852","n185958647","n185958649","n185958651","n185958653","n185958656","n185958658","n185958660","n185958662","n185958664","n185958666","n185958668","n185958670","n185948710","n185958672"]},"w203974068":{"id":"w203974068","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870422","n2139870423","n2139870424","n2139870425","n2139870426","n2139870427"]},"w203974063":{"id":"w203974063","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870398","n2139870399","n2139870400","n2139870401","n2139870398"]},"w203986459":{"id":"w203986459","version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139989364","n2139989366","n2139989368","n2139989370","n2139989364"]},"w203988286":{"id":"w203988286","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"area":"yes","leisure":"park","name":"Memory Isle Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2140006331","n2140006334","n2140006336","n2140006338","n2140006340","n2140006342","n2140006344","n2140006346","n2140006348","n2140006351","n2140006353","n2140006355","n2140006357","n2140006359","n2140006361","n2140006363","n2140006364","n2140006365","n2140006395","n2140006366","n2140006401","n2140006397","n2140006399","n2140006331"]},"w203974073":{"id":"w203974073","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870453","n2139870454","n2139870455"]},"w203974064":{"id":"w203974064","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870402","n2139870403","n2139870404","n2139870405","n2139870402"]},"n185966959":{"id":"n185966959","loc":[-85.642185,41.946411],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n1475283980":{"id":"n1475283980","loc":[-85.6398249,41.9451425],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284013":{"id":"n1475284013","loc":[-85.6396448,41.9451666],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284042":{"id":"n1475284042","loc":[-85.6386382,41.9454789],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n185975925":{"id":"n185975925","loc":[-85.6393332,41.9452388],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975919":{"id":"n185975919","loc":[-85.6391279,41.9453044],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975917":{"id":"n185975917","loc":[-85.6389034,41.9453872],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n2140006369":{"id":"n2140006369","loc":[-85.6386163,41.9451631],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006370":{"id":"n2140006370","loc":[-85.6385144,41.9449357],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006417":{"id":"n2140006417","loc":[-85.6385785,41.9450299],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006419":{"id":"n2140006419","loc":[-85.6385781,41.9452152],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2189123361":{"id":"n2189123361","loc":[-85.6404948,41.947015],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123363":{"id":"n2189123363","loc":[-85.6395765,41.946495],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123365":{"id":"n2189123365","loc":[-85.6389347,41.9460875],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n185966962":{"id":"n185966962","loc":[-85.644417,41.946364],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185975911":{"id":"n185975911","loc":[-85.637532,41.9458276],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975913":{"id":"n185975913","loc":[-85.6376323,41.9457936],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185975915":{"id":"n185975915","loc":[-85.6383596,41.9455425],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975932":{"id":"n185975932","loc":[-85.644403,41.945088],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185975934":{"id":"n185975934","loc":[-85.645486,41.945084],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185979974":{"id":"n185979974","loc":[-85.644381,41.943831],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:24Z","tags":{}},"n2139795809":{"id":"n2139795809","loc":[-85.6464756,41.9450813],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795810":{"id":"n2139795810","loc":[-85.6466646,41.945174],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139858952":{"id":"n2139858952","loc":[-85.6383567,41.9454039],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858953":{"id":"n2139858953","loc":[-85.6380506,41.9455301],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858954":{"id":"n2139858954","loc":[-85.6377321,41.9455546],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858955":{"id":"n2139858955","loc":[-85.6376571,41.9455245],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858956":{"id":"n2139858956","loc":[-85.6375859,41.9454544],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858957":{"id":"n2139858957","loc":[-85.6376686,41.9453185],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858958":{"id":"n2139858958","loc":[-85.6378936,41.9451712],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858959":{"id":"n2139858959","loc":[-85.6379225,41.9450825],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858960":{"id":"n2139858960","loc":[-85.6379302,41.9447564],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858961":{"id":"n2139858961","loc":[-85.6379763,41.9446963],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858962":{"id":"n2139858962","loc":[-85.6380436,41.9446706],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858963":{"id":"n2139858963","loc":[-85.6381286,41.9445969],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858965":{"id":"n2139858965","loc":[-85.6382523,41.9444134],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2140006367":{"id":"n2140006367","loc":[-85.6380923,41.9454418],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006368":{"id":"n2140006368","loc":[-85.6384089,41.9453146],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006372":{"id":"n2140006372","loc":[-85.6383252,41.9447706],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006374":{"id":"n2140006374","loc":[-85.6381033,41.9447436],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006376":{"id":"n2140006376","loc":[-85.6379759,41.9447815],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006378":{"id":"n2140006378","loc":[-85.6379832,41.9448654],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006380":{"id":"n2140006380","loc":[-85.6380632,41.9450738],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006382":{"id":"n2140006382","loc":[-85.6380414,41.9452064],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006389":{"id":"n2140006389","loc":[-85.6379068,41.9453092],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006391":{"id":"n2140006391","loc":[-85.637925,41.9453904],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006393":{"id":"n2140006393","loc":[-85.6379977,41.94545],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2189123275":{"id":"n2189123275","loc":[-85.6371346,41.9462544],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123278":{"id":"n2189123278","loc":[-85.6368371,41.9466153],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123280":{"id":"n2189123280","loc":[-85.6379537,41.9489088],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123282":{"id":"n2189123282","loc":[-85.6383816,41.9497858],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123285":{"id":"n2189123285","loc":[-85.6393673,41.9512417],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123287":{"id":"n2189123287","loc":[-85.640554,41.9517766],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123289":{"id":"n2189123289","loc":[-85.6411,41.9522344],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123291":{"id":"n2189123291","loc":[-85.6417418,41.9526574],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123293":{"id":"n2189123293","loc":[-85.642321,41.9529407],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123295":{"id":"n2189123295","loc":[-85.6427697,41.9532278],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123297":{"id":"n2189123297","loc":[-85.6433332,41.9538254],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123300":{"id":"n2189123300","loc":[-85.6435785,41.9543648],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123301":{"id":"n2189123301","loc":[-85.6444394,41.9541048],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123303":{"id":"n2189123303","loc":[-85.6450603,41.954],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123312":{"id":"n2189123312","loc":[-85.6454829,41.9539108],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123314":{"id":"n2189123314","loc":[-85.6460464,41.9538526],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123315":{"id":"n2189123315","loc":[-85.6463178,41.9537167],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123316":{"id":"n2189123316","loc":[-85.646276,41.9534141],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123317":{"id":"n2189123317","loc":[-85.6459995,41.9531541],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123318":{"id":"n2189123318","loc":[-85.645222,41.9531929],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123319":{"id":"n2189123319","loc":[-85.6447316,41.9531813],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123320":{"id":"n2189123320","loc":[-85.6440637,41.9532977],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123321":{"id":"n2189123321","loc":[-85.6438185,41.9531774],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123322":{"id":"n2189123322","loc":[-85.6440011,41.9528398],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123323":{"id":"n2189123323","loc":[-85.6442672,41.9525914],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123324":{"id":"n2189123324","loc":[-85.6442881,41.9523276],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123326":{"id":"n2189123326","loc":[-85.644262,41.952153],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123328":{"id":"n2189123328","loc":[-85.6441681,41.9520404],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123330":{"id":"n2189123330","loc":[-85.6442098,41.9517494],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123333":{"id":"n2189123333","loc":[-85.6438498,41.9515864],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123336":{"id":"n2189123336","loc":[-85.6435889,41.9513225],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123339":{"id":"n2189123339","loc":[-85.6425349,41.9510315],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123342":{"id":"n2189123342","loc":[-85.6422688,41.9508802],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123345":{"id":"n2189123345","loc":[-85.6418775,41.9508142],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123348":{"id":"n2189123348","loc":[-85.6415488,41.9508064],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123351":{"id":"n2189123351","loc":[-85.6411027,41.9505488],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123353":{"id":"n2189123353","loc":[-85.6410374,41.9498208],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123355":{"id":"n2189123355","loc":[-85.6410061,41.9494327],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123357":{"id":"n2189123357","loc":[-85.6411522,41.9482569],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123359":{"id":"n2189123359","loc":[-85.6410548,41.9473036],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123368":{"id":"n2189123368","loc":[-85.6380216,41.9458974],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123370":{"id":"n2189123370","loc":[-85.6386721,41.9507782],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"w17968193":{"id":"w17968193","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:56:35Z","tags":{"highway":"residential","name":"French St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"French","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312389:15312396","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185970906","n185982877","n185967774","n185985823","n185979974"]},"w203972939":{"id":"w203972939","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path"},"nodes":["n2139858965","n2139858966"]},"w203988289":{"id":"w203988289","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"area":"yes","natural":"water"},"nodes":["n2140006367","n2140006368","n2140006419","n2140006369","n2140006417","n2140006370","n2140006372","n2140006374","n2140006376","n2140006378","n2140006380","n2140006382","n2140006389","n2140006391","n2140006393","n2140006367"]},"w208640157":{"id":"w208640157","version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"area":"yes","natural":"wetland"},"nodes":["n1819849029","n2189123275","n2189123278","n2189123280","n2189123282","n2189123370","n2189123285","n2189123287","n2189123289","n2189123291","n2189123293","n2189123295","n2189123297","n2189123300","n2189123301","n2189123303","n2189123312","n2189123314","n2189123315","n2189123316","n2189123317","n2189123318","n2189123319","n2189123320","n2189123321","n2189123322","n2189123323","n2189123324","n2189123326","n2189123328","n2189123330","n2189123333","n2189123336","n2189123339","n2189123342","n2189123345","n2189123348","n2189123351","n2189123353","n2189123355","n2189123357","n2189123359","n2189123361","n2189123363","n2189123365","n2189123368","n1819849029"]},"w17966281":{"id":"w17966281","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:03Z","tags":{"highway":"residential","name":"Pealer St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pealer","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312363:15312366:15312367:15312368:15325990:15325991:15324554","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975911","n185975913","n185975915","n1475284042","n185975917","n185975919","n185975925","n185970909","n1475284013","n1475283980","n185975928","n185967775","n185975930","n185975932","n185975934","n2139795809","n2139795810"]},"w17965353":{"id":"w17965353","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:36:24Z","tags":{"highway":"residential","name":"Yauney St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Yauney","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312346:15312347","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185966958","n185966959","n185966960","n185966962"]},"w203972938":{"id":"w203972938","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858964","n2139858965","n2139858963","n2139858962","n2139858961","n2139858960","n2139858959","n2139858958","n2139858957","n2139858956","n2139858955","n2139858954","n2139858953","n2139858952","n2139858951"]},"n354002665":{"id":"n354002665","loc":[-85.6366599,41.9444923],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T21:20:26Z","tags":{"ele":"244","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624726","gnis:state_id":"26","name":"Memory Isle","place":"island"}},"n354031301":{"id":"n354031301","loc":[-85.635,41.9463889],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T22:12:53Z","tags":{"amenity":"post_office","ele":"248","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2418163","gnis:state_id":"26","name":"Three Rivers Post Office"}},"n185963454":{"id":"n185963454","loc":[-85.633686,41.946072],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185963455":{"id":"n185963455","loc":[-85.633815,41.946131],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185963456":{"id":"n185963456","loc":[-85.633951,41.946174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185978375":{"id":"n185978375","loc":[-85.634385,41.94559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978377":{"id":"n185978377","loc":[-85.634544,41.945725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978379":{"id":"n185978379","loc":[-85.634573,41.945764],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978381":{"id":"n185978381","loc":[-85.634616,41.945849],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978383":{"id":"n185978383","loc":[-85.634629,41.945893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185984011":{"id":"n185984011","loc":[-85.636058,41.946201],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984013":{"id":"n185984013","loc":[-85.636112,41.946366],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984015":{"id":"n185984015","loc":[-85.636143,41.946551],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185988237":{"id":"n185988237","loc":[-85.6354162,41.946044],"version":"3","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{}},"n185988969":{"id":"n185988969","loc":[-85.635374,41.945325],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185988971":{"id":"n185988971","loc":[-85.635643,41.945585],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185988972":{"id":"n185988972","loc":[-85.635853,41.94586],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n1475283992":{"id":"n1475283992","loc":[-85.6372968,41.9459007],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284011":{"id":"n1475284011","loc":[-85.6359415,41.9459797],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284019":{"id":"n1475284019","loc":[-85.6364433,41.9460423],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n185984009":{"id":"n185984009","loc":[-85.6360524,41.9460485],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988239":{"id":"n185988239","loc":[-85.6358187,41.9460423],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988243":{"id":"n185988243","loc":[-85.6366156,41.9460282],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988244":{"id":"n185988244","loc":[-85.6368316,41.9460046],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988245":{"id":"n185988245","loc":[-85.6370133,41.9459704],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988241":{"id":"n185988241","loc":[-85.636291,41.9460461],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185964976":{"id":"n185964976","loc":[-85.633923,41.9434157],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185964980":{"id":"n185964980","loc":[-85.6333656,41.9437293],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185978388":{"id":"n185978388","loc":[-85.6346449,41.9460571],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819858504":{"id":"n1819858504","loc":[-85.6365343,41.9447926],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858506":{"id":"n1819858506","loc":[-85.6370546,41.9451882],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858516":{"id":"n1819858516","loc":[-85.6358369,41.9444654],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858519":{"id":"n1819858519","loc":[-85.6361534,41.9446176],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858525":{"id":"n1819858525","loc":[-85.6368025,41.9449442],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858527":{"id":"n1819858527","loc":[-85.6334199,41.9457495],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185963452":{"id":"n185963452","loc":[-85.633564,41.9458519],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185963453":{"id":"n185963453","loc":[-85.6336152,41.9459804],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185963451":{"id":"n185963451","loc":[-85.6332888,41.9456871],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n2130304152":{"id":"n2130304152","loc":[-85.6359466,41.9454599],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304153":{"id":"n2130304153","loc":[-85.6362773,41.9452683],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304154":{"id":"n2130304154","loc":[-85.6352028,41.9442868],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304155":{"id":"n2130304155","loc":[-85.6348756,41.9444769],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304156":{"id":"n2130304156","loc":[-85.6349723,41.9444207],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304157":{"id":"n2130304157","loc":[-85.6338698,41.9434443],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304158":{"id":"n2130304158","loc":[-85.635094,41.9451026],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304160":{"id":"n2130304160","loc":[-85.6353716,41.9449322],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304162":{"id":"n2130304162","loc":[-85.6365942,41.9459352],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304163":{"id":"n2130304163","loc":[-85.6369006,41.9457469],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304164":{"id":"n2130304164","loc":[-85.6363292,41.9452278],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304165":{"id":"n2130304165","loc":[-85.6360248,41.9454175],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2139824683":{"id":"n2139824683","loc":[-85.6339825,41.9446441],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:01Z","tags":{}},"n2139824689":{"id":"n2139824689","loc":[-85.6340437,41.9446925],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:01Z","tags":{}},"n2139824702":{"id":"n2139824702","loc":[-85.6340961,41.9447551],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824705":{"id":"n2139824705","loc":[-85.6337467,41.944809],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824707":{"id":"n2139824707","loc":[-85.6341598,41.9448129],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824710":{"id":"n2139824710","loc":[-85.6342771,41.9448223],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824712":{"id":"n2139824712","loc":[-85.6346058,41.944841],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824713":{"id":"n2139824713","loc":[-85.633808,41.9448574],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824714":{"id":"n2139824714","loc":[-85.6340889,41.9448589],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824716":{"id":"n2139824716","loc":[-85.6343335,41.944871],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824717":{"id":"n2139824717","loc":[-85.6343341,41.9448717],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824720":{"id":"n2139824720","loc":[-85.6338757,41.9449069],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824721":{"id":"n2139824721","loc":[-85.6341445,41.9449071],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824724":{"id":"n2139824724","loc":[-85.6334787,41.9449262],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824726":{"id":"n2139824726","loc":[-85.6347119,41.9449332],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824727":{"id":"n2139824727","loc":[-85.6347175,41.9449418],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824728":{"id":"n2139824728","loc":[-85.6344284,41.9449538],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824729":{"id":"n2139824729","loc":[-85.6339339,41.9449573],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824730":{"id":"n2139824730","loc":[-85.6339179,41.9449682],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824732":{"id":"n2139824732","loc":[-85.6335472,41.9449895],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824733":{"id":"n2139824733","loc":[-85.6339736,41.9450164],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824735":{"id":"n2139824735","loc":[-85.6336034,41.9450415],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824736":{"id":"n2139824736","loc":[-85.6348317,41.945043],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824737":{"id":"n2139824737","loc":[-85.63403,41.9450651],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824738":{"id":"n2139824738","loc":[-85.6336611,41.9450949],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824740":{"id":"n2139824740","loc":[-85.6336582,41.9450966],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824744":{"id":"n2139824744","loc":[-85.6331702,41.9451107],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824745":{"id":"n2139824745","loc":[-85.6333388,41.9451142],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824746":{"id":"n2139824746","loc":[-85.6337131,41.9451341],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824747":{"id":"n2139824747","loc":[-85.6337021,41.9451372],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824748":{"id":"n2139824748","loc":[-85.6341244,41.9451472],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824749":{"id":"n2139824749","loc":[-85.6333952,41.945166],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824750":{"id":"n2139824750","loc":[-85.633395,41.9451661],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824751":{"id":"n2139824751","loc":[-85.6346258,41.9451725],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824752":{"id":"n2139824752","loc":[-85.6332387,41.9451741],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824753":{"id":"n2139824753","loc":[-85.6346901,41.9451853],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824754":{"id":"n2139824754","loc":[-85.6346611,41.9452035],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824755":{"id":"n2139824755","loc":[-85.6346574,41.9452059],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824756":{"id":"n2139824756","loc":[-85.6345611,41.9452133],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824757":{"id":"n2139824757","loc":[-85.633453,41.9452194],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824758":{"id":"n2139824758","loc":[-85.6335508,41.9452283],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824759":{"id":"n2139824759","loc":[-85.6347424,41.9452312],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824760":{"id":"n2139824760","loc":[-85.6342305,41.9452395],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824761":{"id":"n2139824761","loc":[-85.6342319,41.9452449],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824762":{"id":"n2139824762","loc":[-85.6334969,41.94526],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824763":{"id":"n2139824763","loc":[-85.63468,41.9452706],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824764":{"id":"n2139824764","loc":[-85.6346772,41.9452724],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824765":{"id":"n2139824765","loc":[-85.6338611,41.9452763],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824766":{"id":"n2139824766","loc":[-85.6347811,41.9452939],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824767":{"id":"n2139824767","loc":[-85.6347375,41.9453211],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824768":{"id":"n2139824768","loc":[-85.6339171,41.9453301],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824769":{"id":"n2139824769","loc":[-85.6348307,41.9453377],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824770":{"id":"n2139824770","loc":[-85.6347067,41.9453405],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824771":{"id":"n2139824771","loc":[-85.6343461,41.9453461],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824772":{"id":"n2139824772","loc":[-85.6343481,41.9453475],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824773":{"id":"n2139824773","loc":[-85.634805,41.9453538],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824774":{"id":"n2139824774","loc":[-85.6336997,41.9453692],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824775":{"id":"n2139824775","loc":[-85.6339709,41.9453818],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824776":{"id":"n2139824776","loc":[-85.6336229,41.9454134],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824777":{"id":"n2139824777","loc":[-85.6349022,41.9454141],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824778":{"id":"n2139824778","loc":[-85.6348854,41.9454246],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824779":{"id":"n2139824779","loc":[-85.6340286,41.9454373],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824780":{"id":"n2139824780","loc":[-85.6336963,41.9454572],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824781":{"id":"n2139824781","loc":[-85.6336789,41.9454672],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824782":{"id":"n2139824782","loc":[-85.6344933,41.945475],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824783":{"id":"n2139824783","loc":[-85.6340854,41.9454918],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824784":{"id":"n2139824784","loc":[-85.6350036,41.9455034],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824785":{"id":"n2139824785","loc":[-85.6337501,41.9455089],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824786":{"id":"n2139824786","loc":[-85.6337497,41.9455091],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824787":{"id":"n2139824787","loc":[-85.6345425,41.9455186],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824788":{"id":"n2139824788","loc":[-85.6341459,41.9455372],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824789":{"id":"n2139824789","loc":[-85.6341376,41.945542],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824790":{"id":"n2139824790","loc":[-85.6338394,41.9455462],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824791":{"id":"n2139824791","loc":[-85.6349171,41.9455588],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824792":{"id":"n2139824792","loc":[-85.6338074,41.9455646],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824793":{"id":"n2139824793","loc":[-85.6346229,41.9455894],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824794":{"id":"n2139824794","loc":[-85.6338983,41.9455995],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824795":{"id":"n2139824795","loc":[-85.6338962,41.9456007],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824796":{"id":"n2139824796","loc":[-85.6342475,41.9456348],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824797":{"id":"n2139824797","loc":[-85.6339505,41.9456497],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824798":{"id":"n2139824798","loc":[-85.6347243,41.9456788],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824799":{"id":"n2139824799","loc":[-85.635057,41.9456831],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824800":{"id":"n2139824800","loc":[-85.635287,41.9457056],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824801":{"id":"n2139824801","loc":[-85.6350753,41.9457068],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824802":{"id":"n2139824802","loc":[-85.6347753,41.9457252],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824803":{"id":"n2139824803","loc":[-85.6340521,41.9457473],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824804":{"id":"n2139824804","loc":[-85.6352875,41.9457611],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824805":{"id":"n2139824805","loc":[-85.6352941,41.9457611],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824806":{"id":"n2139824806","loc":[-85.6350758,41.9457623],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824807":{"id":"n2139824807","loc":[-85.6348194,41.9457638],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824808":{"id":"n2139824808","loc":[-85.635296,41.9459428],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824809":{"id":"n2139824809","loc":[-85.6348212,41.9459455],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139832635":{"id":"n2139832635","loc":[-85.6354612,41.9448791],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832636":{"id":"n2139832636","loc":[-85.6360241,41.9453844],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832637":{"id":"n2139832637","loc":[-85.6361452,41.9453121],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832639":{"id":"n2139832639","loc":[-85.6355997,41.944797],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832641":{"id":"n2139832641","loc":[-85.6351346,41.9443541],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832647":{"id":"n2139832647","loc":[-85.6329883,41.9453692],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832653":{"id":"n2139832653","loc":[-85.6333643,41.9456293],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832663":{"id":"n2139832663","loc":[-85.6335394,41.9455339],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832665":{"id":"n2139832665","loc":[-85.6332375,41.9452476],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832667":{"id":"n2139832667","loc":[-85.6331664,41.9452161],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832669":{"id":"n2139832669","loc":[-85.6331144,41.9451875],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832671":{"id":"n2139832671","loc":[-85.6330779,41.9451274],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832673":{"id":"n2139832673","loc":[-85.6330664,41.9450802],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832678":{"id":"n2139832678","loc":[-85.6332218,41.9453585],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832686":{"id":"n2139832686","loc":[-85.6334246,41.945541],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832691":{"id":"n2139832691","loc":[-85.6329898,41.9454997],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832693":{"id":"n2139832693","loc":[-85.6343554,41.9443274],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832694":{"id":"n2139832694","loc":[-85.6336339,41.9437089],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832696":{"id":"n2139832696","loc":[-85.633532,41.9437708],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832697":{"id":"n2139832697","loc":[-85.6338316,41.9440868],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832698":{"id":"n2139832698","loc":[-85.6342258,41.9444141],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832699":{"id":"n2139832699","loc":[-85.6339164,41.9442166],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832700":{"id":"n2139832700","loc":[-85.6341389,41.944384],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832701":{"id":"n2139832701","loc":[-85.634235,41.9443259],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832702":{"id":"n2139832702","loc":[-85.633613,41.9437875],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832703":{"id":"n2139832703","loc":[-85.633915,41.9436132],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832704":{"id":"n2139832704","loc":[-85.6340019,41.9435613],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832706":{"id":"n2139832706","loc":[-85.6343197,41.9438427],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832708":{"id":"n2139832708","loc":[-85.6342361,41.9438936],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832709":{"id":"n2139832709","loc":[-85.6353839,41.9460401],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832710":{"id":"n2139832710","loc":[-85.6354032,41.9456763],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832711":{"id":"n2139832711","loc":[-85.6356839,41.9459252],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832712":{"id":"n2139832712","loc":[-85.6356109,41.945735],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832713":{"id":"n2139832713","loc":[-85.6353997,41.9457421],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832714":{"id":"n2139832714","loc":[-85.6353895,41.9459347],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832715":{"id":"n2139832715","loc":[-85.6334777,41.9436628],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832716":{"id":"n2139832716","loc":[-85.6333137,41.9435382],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832717":{"id":"n2139832717","loc":[-85.6330938,41.9435406],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832721":{"id":"n2139832721","loc":[-85.6333023,41.9434922],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832722":{"id":"n2139832722","loc":[-85.6330466,41.943623],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832723":{"id":"n2139832723","loc":[-85.6332746,41.9435624],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832724":{"id":"n2139832724","loc":[-85.6333511,41.9435176],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832725":{"id":"n2139832725","loc":[-85.6332241,41.9434001],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832726":{"id":"n2139832726","loc":[-85.6332355,41.9433686],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139870373":{"id":"n2139870373","loc":[-85.6351783,41.9439117],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870374":{"id":"n2139870374","loc":[-85.6351431,41.9439217],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870375":{"id":"n2139870375","loc":[-85.6348853,41.9439117],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870376":{"id":"n2139870376","loc":[-85.6348317,41.9439105],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870377":{"id":"n2139870377","loc":[-85.6346384,41.944007],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870378":{"id":"n2139870378","loc":[-85.6345563,41.9440523],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2140006403":{"id":"n2140006403","loc":[-85.6359942,41.9450097],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006405":{"id":"n2140006405","loc":[-85.6363884,41.9446079],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006407":{"id":"n2140006407","loc":[-85.6362148,41.9447874],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006409":{"id":"n2140006409","loc":[-85.6379476,41.9445869],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006411":{"id":"n2140006411","loc":[-85.6378485,41.9445674],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006413":{"id":"n2140006413","loc":[-85.6378952,41.9444547],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006415":{"id":"n2140006415","loc":[-85.6379962,41.944477],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006421":{"id":"n2140006421","loc":[-85.6355248,41.9433702],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006423":{"id":"n2140006423","loc":[-85.6378471,41.9439233],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006425":{"id":"n2140006425","loc":[-85.6378913,41.9441238],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006426":{"id":"n2140006426","loc":[-85.6381674,41.9442289],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006427":{"id":"n2140006427","loc":[-85.6382359,41.9440975],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006428":{"id":"n2140006428","loc":[-85.6382071,41.9440252],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006429":{"id":"n2140006429","loc":[-85.6381409,41.9439973],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006430":{"id":"n2140006430","loc":[-85.6380569,41.9440153],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006433":{"id":"n2140006433","loc":[-85.6379071,41.9442467],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006435":{"id":"n2140006435","loc":[-85.6381634,41.9443125],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006436":{"id":"n2140006436","loc":[-85.6382407,41.944301],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006438":{"id":"n2140006438","loc":[-85.6382761,41.9442188],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006439":{"id":"n2140006439","loc":[-85.6382429,41.9441761],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006440":{"id":"n2140006440","loc":[-85.6382016,41.9441632],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006441":{"id":"n2140006441","loc":[-85.6378185,41.9439835],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2166205688":{"id":"n2166205688","loc":[-85.6349963,41.9444392],"version":"1","changeset":"15117845","user":"rolandg","uid":"8703","visible":"true","timestamp":"2013-02-21T23:02:38Z","tags":{}},"n2168544780":{"id":"n2168544780","loc":[-85.633944,41.945807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544781":{"id":"n2168544781","loc":[-85.6340783,41.9458621],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544782":{"id":"n2168544782","loc":[-85.6338184,41.9457548],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544783":{"id":"n2168544783","loc":[-85.6339925,41.9459777],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544784":{"id":"n2168544784","loc":[-85.6337317,41.9458698],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544785":{"id":"n2168544785","loc":[-85.6337297,41.9460042],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544786":{"id":"n2168544786","loc":[-85.633919,41.9460797],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544787":{"id":"n2168544787","loc":[-85.6338672,41.9459263],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544788":{"id":"n2168544788","loc":[-85.6338246,41.9459853],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544789":{"id":"n2168544789","loc":[-85.6337615,41.9459601],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544790":{"id":"n2168544790","loc":[-85.6342079,41.9460399],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544791":{"id":"n2168544791","loc":[-85.6343346,41.9458503],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544792":{"id":"n2168544792","loc":[-85.6343759,41.9458116],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544793":{"id":"n2168544793","loc":[-85.6344394,41.9458109],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544795":{"id":"n2168544795","loc":[-85.6344827,41.945851],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544797":{"id":"n2168544797","loc":[-85.6344807,41.945969],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544798":{"id":"n2168544798","loc":[-85.6344404,41.9459697],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544799":{"id":"n2168544799","loc":[-85.6344413,41.9460333],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544800":{"id":"n2168544800","loc":[-85.6342173,41.9460705],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544801":{"id":"n2168544801","loc":[-85.6342162,41.9460392],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544802":{"id":"n2168544802","loc":[-85.6344251,41.9460351],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544805":{"id":"n2168544805","loc":[-85.6344257,41.9460507],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544807":{"id":"n2168544807","loc":[-85.6344721,41.9460498],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544809":{"id":"n2168544809","loc":[-85.6344754,41.9461427],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544811":{"id":"n2168544811","loc":[-85.6344311,41.9461435],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544813":{"id":"n2168544813","loc":[-85.6344317,41.9461592],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544815":{"id":"n2168544815","loc":[-85.6343708,41.9461604],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544817":{"id":"n2168544817","loc":[-85.6343715,41.9461786],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544819":{"id":"n2168544819","loc":[-85.6343229,41.9461795],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544821":{"id":"n2168544821","loc":[-85.6343222,41.9461606],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544823":{"id":"n2168544823","loc":[-85.6342476,41.9461621],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544825":{"id":"n2168544825","loc":[-85.6342444,41.94607],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544827":{"id":"n2168544827","loc":[-85.634138,41.9461632],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544829":{"id":"n2168544829","loc":[-85.6342016,41.9460703],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544830":{"id":"n2168544830","loc":[-85.6332929,41.9463092],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544831":{"id":"n2168544831","loc":[-85.633122,41.946239],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544832":{"id":"n2168544832","loc":[-85.6332954,41.9460055],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544833":{"id":"n2168544833","loc":[-85.6333954,41.9460466],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544834":{"id":"n2168544834","loc":[-85.6334044,41.9460345],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544835":{"id":"n2168544835","loc":[-85.6334594,41.9460571],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544836":{"id":"n2168544836","loc":[-85.6333871,41.9461544],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544837":{"id":"n2168544837","loc":[-85.633403,41.9461609],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544838":{"id":"n2168544838","loc":[-85.6341683,41.9464167],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544839":{"id":"n2168544839","loc":[-85.6341711,41.9463411],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544840":{"id":"n2168544840","loc":[-85.6344471,41.9463469],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544841":{"id":"n2168544841","loc":[-85.6344441,41.9464243],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544842":{"id":"n2168544842","loc":[-85.6343622,41.9464226],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544843":{"id":"n2168544843","loc":[-85.6343593,41.9464989],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544844":{"id":"n2168544844","loc":[-85.6342812,41.9464973],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544845":{"id":"n2168544845","loc":[-85.634283,41.9464504],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544846":{"id":"n2168544846","loc":[-85.6342609,41.9464499],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544847":{"id":"n2168544847","loc":[-85.6342621,41.9464187],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544848":{"id":"n2168544848","loc":[-85.6348414,41.9463396],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544849":{"id":"n2168544849","loc":[-85.6348387,41.9461872],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544850":{"id":"n2168544850","loc":[-85.6351186,41.9461844],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544851":{"id":"n2168544851","loc":[-85.635119,41.9462112],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544852":{"id":"n2168544852","loc":[-85.6351918,41.9462104],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544853":{"id":"n2168544853","loc":[-85.6351944,41.9463515],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544854":{"id":"n2168544854","loc":[-85.6351049,41.9463524],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544855":{"id":"n2168544855","loc":[-85.6351046,41.946337],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2189153180":{"id":"n2189153180","loc":[-85.6340369,41.9469572],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153181":{"id":"n2189153181","loc":[-85.6342531,41.946953],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153183":{"id":"n2189153183","loc":[-85.6348115,41.9465468],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153184":{"id":"n2189153184","loc":[-85.6348105,41.9464569],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153185":{"id":"n2189153185","loc":[-85.6351431,41.9464549],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153186":{"id":"n2189153186","loc":[-85.6351441,41.9465448],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153187":{"id":"n2189153187","loc":[-85.6350077,41.9465456],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153188":{"id":"n2189153188","loc":[-85.635008,41.9465721],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153189":{"id":"n2189153189","loc":[-85.6348965,41.9465727],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153190":{"id":"n2189153190","loc":[-85.6348962,41.9465463],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153191":{"id":"n2189153191","loc":[-85.6348963,41.9471586],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153192":{"id":"n2189153192","loc":[-85.6348944,41.947032],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153193":{"id":"n2189153193","loc":[-85.6350241,41.947031],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153194":{"id":"n2189153194","loc":[-85.635026,41.9471575],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153195":{"id":"n2189153195","loc":[-85.6352328,41.9471053],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153196":{"id":"n2189153196","loc":[-85.6352359,41.9469906],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153197":{"id":"n2189153197","loc":[-85.6353694,41.9469925],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153198":{"id":"n2189153198","loc":[-85.6353664,41.9471072],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153199":{"id":"n2189153199","loc":[-85.6348241,41.9469287],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153200":{"id":"n2189153200","loc":[-85.6348248,41.9468185],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153201":{"id":"n2189153201","loc":[-85.6351199,41.9468195],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153202":{"id":"n2189153202","loc":[-85.6351192,41.9469298],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153203":{"id":"n2189153203","loc":[-85.6347965,41.9468057],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153204":{"id":"n2189153204","loc":[-85.634792,41.9466044],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153205":{"id":"n2189153205","loc":[-85.6349483,41.9466025],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153206":{"id":"n2189153206","loc":[-85.6349493,41.9466448],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153207":{"id":"n2189153207","loc":[-85.6349753,41.9466445],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153208":{"id":"n2189153208","loc":[-85.6349743,41.9465995],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153209":{"id":"n2189153209","loc":[-85.6351173,41.9465977],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153210":{"id":"n2189153210","loc":[-85.6351219,41.9468015],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153211":{"id":"n2189153211","loc":[-85.6349806,41.9468032],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153212":{"id":"n2189153212","loc":[-85.6349794,41.9467519],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153213":{"id":"n2189153213","loc":[-85.6349521,41.9467523],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153214":{"id":"n2189153214","loc":[-85.6349532,41.9468037],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153215":{"id":"n2189153215","loc":[-85.6346302,41.9468381],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153216":{"id":"n2189153216","loc":[-85.6343028,41.9468449],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153217":{"id":"n2189153217","loc":[-85.6342006,41.9468297],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153218":{"id":"n2189153218","loc":[-85.6336698,41.9465918],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153219":{"id":"n2189153219","loc":[-85.6344663,41.9466639],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153220":{"id":"n2189153220","loc":[-85.6344639,41.9466015],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153221":{"id":"n2189153221","loc":[-85.6342283,41.9466065],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153222":{"id":"n2189153222","loc":[-85.6342303,41.9466587],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153223":{"id":"n2189153223","loc":[-85.6342843,41.9466575],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153224":{"id":"n2189153224","loc":[-85.6342851,41.9466794],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153225":{"id":"n2189153225","loc":[-85.6343475,41.9466781],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153226":{"id":"n2189153226","loc":[-85.634347,41.9466664],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153227":{"id":"n2189153227","loc":[-85.6354428,41.9470148],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153228":{"id":"n2189153228","loc":[-85.6354432,41.9468005],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153229":{"id":"n2189153229","loc":[-85.6360277,41.9468011],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153230":{"id":"n2189153230","loc":[-85.6360273,41.9470154],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153231":{"id":"n2189153231","loc":[-85.6354565,41.9465823],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153232":{"id":"n2189153232","loc":[-85.6354496,41.946218],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153233":{"id":"n2189153233","loc":[-85.6356355,41.9465788],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153234":{"id":"n2189153234","loc":[-85.6357155,41.9468008],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153235":{"id":"n2189153235","loc":[-85.6359539,41.9467969],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153236":{"id":"n2189153236","loc":[-85.6359561,41.9463036],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153237":{"id":"n2189153237","loc":[-85.6360129,41.9464793],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153238":{"id":"n2189153238","loc":[-85.6360152,41.9463898],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153239":{"id":"n2189153239","loc":[-85.6359607,41.9464928],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153240":{"id":"n2189153240","loc":[-85.6356903,41.9462227],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153242":{"id":"n2189153242","loc":[-85.6354163,41.946142],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153243":{"id":"n2189153243","loc":[-85.6357546,41.9462214],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153244":{"id":"n2189153244","loc":[-85.6357937,41.9462542],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153245":{"id":"n2189153245","loc":[-85.6358723,41.9467048],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153246":{"id":"n2189153246","loc":[-85.6361494,41.946757],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153247":{"id":"n2189153247","loc":[-85.6354173,41.9469082],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153248":{"id":"n2189153248","loc":[-85.635443,41.9469079],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153249":{"id":"n2189153249","loc":[-85.6360275,41.9469093],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153250":{"id":"n2189153250","loc":[-85.6361542,41.946915],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153251":{"id":"n2189153251","loc":[-85.6358654,41.9464843],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153252":{"id":"n2189153252","loc":[-85.6359549,41.9467499],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153253":{"id":"n2189153253","loc":[-85.6357172,41.9466335],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153254":{"id":"n2189153254","loc":[-85.6355644,41.9461768],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153255":{"id":"n2189153255","loc":[-85.6355655,41.946528],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153256":{"id":"n2189153256","loc":[-85.6357055,41.9465971],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153257":{"id":"n2189153257","loc":[-85.635869,41.9465971],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153259":{"id":"n2189153259","loc":[-85.6354561,41.9470278],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153260":{"id":"n2189153260","loc":[-85.6357961,41.9470233],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153261":{"id":"n2189153261","loc":[-85.6357977,41.9470907],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153262":{"id":"n2189153262","loc":[-85.6357297,41.9470916],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153263":{"id":"n2189153263","loc":[-85.635733,41.947233],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153264":{"id":"n2189153264","loc":[-85.6362674,41.9468637],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153265":{"id":"n2189153265","loc":[-85.6362646,41.9467047],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153266":{"id":"n2189153266","loc":[-85.6363267,41.9467047],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153267":{"id":"n2189153267","loc":[-85.6362633,41.9465848],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153268":{"id":"n2189153268","loc":[-85.6363805,41.9465468],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153269":{"id":"n2189153269","loc":[-85.6364604,41.9466842],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153270":{"id":"n2189153270","loc":[-85.6364604,41.9468647],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2199109756":{"id":"n2199109756","loc":[-85.6337134,41.9471841],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109757":{"id":"n2199109757","loc":[-85.6336514,41.94716],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109758":{"id":"n2199109758","loc":[-85.6337043,41.9470847],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109759":{"id":"n2199109759","loc":[-85.6335997,41.9470441],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109760":{"id":"n2199109760","loc":[-85.6335064,41.9471771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n185960195":{"id":"n185960195","loc":[-85.6295992,41.9524346],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185960796":{"id":"n185960796","loc":[-85.634723,41.953681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185961396":{"id":"n185961396","loc":[-85.634767,41.959009],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185962625":{"id":"n185962625","loc":[-85.635175,41.97201],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:29Z","tags":{}},"n185964982":{"id":"n185964982","loc":[-85.632799,41.9440543],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185965289":{"id":"n185965289","loc":[-85.634621,41.947323],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:49Z","tags":{}},"n185965291":{"id":"n185965291","loc":[-85.636166,41.947296],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:49Z","tags":{}},"n185965399":{"id":"n185965399","loc":[-85.634776,41.959834],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"n185966937":{"id":"n185966937","loc":[-85.633183,41.947315],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185966948":{"id":"n185966948","loc":[-85.626406,41.957188],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185967422":{"id":"n185967422","loc":[-85.6320229,41.9490123],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185967917":{"id":"n185967917","loc":[-85.634763,41.958292],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:17Z","tags":{}},"n185967918":{"id":"n185967918","loc":[-85.636271,41.958311],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:17Z","tags":{}},"n185968100":{"id":"n185968100","loc":[-85.630835,41.950656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185970515":{"id":"n185970515","loc":[-85.634832,41.963866],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:41Z","tags":{}},"n185971578":{"id":"n185971578","loc":[-85.634641,41.948627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:05Z","tags":{}},"n185971580":{"id":"n185971580","loc":[-85.6361818,41.9486135],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971631":{"id":"n185971631","loc":[-85.634729,41.954667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185971632":{"id":"n185971632","loc":[-85.636236,41.954656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185972155":{"id":"n185972155","loc":[-85.623333,41.961987],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185974583":{"id":"n185974583","loc":[-85.634686,41.951158],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:21Z","tags":{}},"n185974585":{"id":"n185974585","loc":[-85.6362059,41.9511457],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185975064":{"id":"n185975064","loc":[-85.636218,41.953667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185975735":{"id":"n185975735","loc":[-85.634923,41.969269],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:09Z","tags":{}},"n185978390":{"id":"n185978390","loc":[-85.634668,41.949875],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978392":{"id":"n185978392","loc":[-85.634686,41.952415],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978394":{"id":"n185978394","loc":[-85.634726,41.955921],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978399":{"id":"n185978399","loc":[-85.6347861,41.9606613],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978402":{"id":"n185978402","loc":[-85.634806,41.961485],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978406":{"id":"n185978406","loc":[-85.6348298,41.964783],"version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:00Z","tags":{}},"n185978410":{"id":"n185978410","loc":[-85.6348766,41.9677088],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978414":{"id":"n185978414","loc":[-85.634938,41.971566],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978415":{"id":"n185978415","loc":[-85.634942,41.971611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978417":{"id":"n185978417","loc":[-85.634952,41.971655],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978419":{"id":"n185978419","loc":[-85.634989,41.971741],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978420":{"id":"n185978420","loc":[-85.635063,41.971864],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978787":{"id":"n185978787","loc":[-85.627936,41.954693],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978790":{"id":"n185978790","loc":[-85.626832,41.954677],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978967":{"id":"n185978967","loc":[-85.632278,41.948613],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:39Z","tags":{}},"n185980735":{"id":"n185980735","loc":[-85.628639,41.953725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:47Z","tags":{}},"n185982163":{"id":"n185982163","loc":[-85.636233,41.952398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:31Z","tags":{}},"n185982193":{"id":"n185982193","loc":[-85.6313855,41.9499125],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185982195":{"id":"n185982195","loc":[-85.6304857,41.9511945],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185982196":{"id":"n185982196","loc":[-85.626336,41.957291],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982197":{"id":"n185982197","loc":[-85.625578,41.958664],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982198":{"id":"n185982198","loc":[-85.624619,41.960145],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982200":{"id":"n185982200","loc":[-85.624494,41.960338],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185984017":{"id":"n185984017","loc":[-85.636163,41.947382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984020":{"id":"n185984020","loc":[-85.636188,41.9498803],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185984022":{"id":"n185984022","loc":[-85.636276,41.955919],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:47Z","tags":{}},"n185984024":{"id":"n185984024","loc":[-85.636279,41.956901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:47Z","tags":{}},"n185988036":{"id":"n185988036","loc":[-85.631422,41.948294],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:30Z","tags":{}},"n185988867":{"id":"n185988867","loc":[-85.63102,41.948805],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988869":{"id":"n185988869","loc":[-85.630773,41.949209],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988871":{"id":"n185988871","loc":[-85.63005,41.95016],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988872":{"id":"n185988872","loc":[-85.629423,41.951016],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988873":{"id":"n185988873","loc":[-85.629252,41.951256],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988875":{"id":"n185988875","loc":[-85.629126,41.951489],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988877":{"id":"n185988877","loc":[-85.628991,41.951704],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988878":{"id":"n185988878","loc":[-85.628689,41.952112],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988879":{"id":"n185988879","loc":[-85.628313,41.952666],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988880":{"id":"n185988880","loc":[-85.627687,41.953529],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988882":{"id":"n185988882","loc":[-85.627394,41.953947],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988884":{"id":"n185988884","loc":[-85.627287,41.954128],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:14Z","tags":{}},"n1819858502":{"id":"n1819858502","loc":[-85.6328435,41.9455473],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858510":{"id":"n1819858510","loc":[-85.6324841,41.9453438],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858515":{"id":"n1819858515","loc":[-85.6318511,41.9446409],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858520":{"id":"n1819858520","loc":[-85.6326558,41.9454708],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858522":{"id":"n1819858522","loc":[-85.6319048,41.9447407],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858524":{"id":"n1819858524","loc":[-85.6317718,41.9443666],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858530":{"id":"n1819858530","loc":[-85.632055,41.9449128],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n2139795768":{"id":"n2139795768","loc":[-85.6243023,41.9606102],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139832645":{"id":"n2139832645","loc":[-85.6324455,41.9448607],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832649":{"id":"n2139832649","loc":[-85.6328043,41.9454773],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832651":{"id":"n2139832651","loc":[-85.6322547,41.9449621],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832675":{"id":"n2139832675","loc":[-85.6327356,41.944757],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832677":{"id":"n2139832677","loc":[-85.6325433,41.9448599],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832680":{"id":"n2139832680","loc":[-85.6328885,41.9455614],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832682":{"id":"n2139832682","loc":[-85.6320913,41.9449492],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832684":{"id":"n2139832684","loc":[-85.6325366,41.9447133],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832688":{"id":"n2139832688","loc":[-85.6322786,41.94485],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832718":{"id":"n2139832718","loc":[-85.6327486,41.9432475],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832719":{"id":"n2139832719","loc":[-85.6327926,41.9431773],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832720":{"id":"n2139832720","loc":[-85.6329033,41.943153],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832727":{"id":"n2139832727","loc":[-85.6328975,41.9430783],"version":"2","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{}},"n2139844839":{"id":"n2139844839","loc":[-85.6326261,41.9432308],"version":"1","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{}},"n2189015992":{"id":"n2189015992","loc":[-85.6347706,41.9593383],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189153179":{"id":"n2189153179","loc":[-85.6340476,41.9472565],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153182":{"id":"n2189153182","loc":[-85.6342638,41.9472522],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153241":{"id":"n2189153241","loc":[-85.6354184,41.9473091],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153258":{"id":"n2189153258","loc":[-85.6354611,41.9472366],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153277":{"id":"n2189153277","loc":[-85.6328948,41.9462374],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2199109755":{"id":"n2199109755","loc":[-85.6336729,41.9472417],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"w203970139":{"id":"w203970139","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824793","n2139824787","n2139824773","n2139824778","n2139824793"]},"w203970098":{"id":"w203970098","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824748","n2139824712","n2139824726","n2139824760","n2139824748"]},"w208643132":{"id":"w208643132","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153195","n2189153196","n2189153197","n2189153198","n2189153195"]},"w203970094":{"id":"w203970094","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824755","n2139824753","n2139824759","n2139824764","n2139824763","n2139824767","n2139824770","n2139824782","n2139824772","n2139824756","n2139824751","n2139824754","n2139824755"]},"w208643138":{"id":"w208643138","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153231","n2189153232","n2189153240","n2189153244","n2189153236","n2189153238","n2189153237","n2189153239","n2189153252","n2189153235","n2189153234","n2189153253","n2189153233","n2189153231"]},"w203970125":{"id":"w203970125","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824735","n2139824738","n2139824757","n2139824749","n2139824735"]},"w170848823":{"id":"w170848823","version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:39Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819849189","n1819858516","n1819858519","n1819858504","n1819858525","n1819858506","n1819858513"]},"w203970898":{"id":"w203970898","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832645","n2139832647","n2139832649","n2139832651","n2139832645"]},"w203970134":{"id":"w203970134","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824796","n2139824803","n2139824797","n2139824788","n2139824796"]},"w203970104":{"id":"w203970104","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824733","n2139824730","n2139824714","n2139824721","n2139824733"]},"w206805245":{"id":"w206805245","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544780","n2168544781","n2139824796","n2139824803","n2168544780"]},"w206805252":{"id":"w206805252","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544838","n2168544839","n2168544840","n2168544841","n2168544842","n2168544843","n2168544844","n2168544845","n2168544846","n2168544847","n2168544838"]},"w203970099":{"id":"w203970099","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824783","n2139824795","n2139824790","n2139824779","n2139824783"]},"w17967730":{"id":"w17967730","version":"2","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:18Z","tags":{"highway":"residential","name":"Water St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Water","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185963451","n2189153277","n185988036","n185988867","n185988869","n185988871","n185988872","n185988873","n185988875","n185988877","n185988878","n185988879","n185988880","n185988882","n185988884","n185978790"]},"w208643133":{"id":"w208643133","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153199","n2189153200","n2189153201","n2189153202","n2189153199"]},"w203970127":{"id":"w203970127","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824794","n2139824783","n2139824789","n2139824797","n2139824794"]},"w208643139":{"id":"w208643139","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service"},"nodes":["n185988237","n2189153242","n2189153247","n2189153241"]},"w203988297":{"id":"w203988297","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2140006423","n2140006441","n2140006425","n2140006426","n2140006440","n2140006427","n2140006428","n2140006429","n2140006430","n2140006423"]},"w206805250":{"id":"w206805250","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544827","n2168544823","n2168544825","n2168544800","n2168544829","n2168544827"]},"w208643140":{"id":"w208643140","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153242","n2189153254","n2189153243","n2189153244","n2189153251","n2189153257","n2189153245","n2189153252","n2189153246"]},"w203974055":{"id":"w203974055","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870376","n2139870377"]},"w206805247":{"id":"w206805247","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544785","n2168544786","n2168544783","n2168544787","n2168544788","n2168544789","n2168544785"]},"w17964996":{"id":"w17964996","version":"3","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"residential","name":"Foster St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Foster","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312360","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1819858524","n1819858515","n1819858522","n1819858530","n2139832682","n1819858510","n1819858520","n1819858502","n2139832680","n185963451","n1819858527","n185963452","n185963453","n185963454","n185963455","n185963456"]},"w208643144":{"id":"w208643144","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153264","n2189153265","n2189153266","n2189153267","n2189153268","n2189153269","n2189153270","n2189153264"]},"w203970914":{"id":"w203970914","version":"2","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832722","n2139832723","n2139832724","n2139832725","n2139832726","n2139832727","n2139844839","n2139832722"]},"w208643143":{"id":"w208643143","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153258","n2189153259","n2189153260","n2189153261","n2189153262","n2189153263","n2189153258"]},"w203049590":{"id":"w203049590","version":"3","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2130304152","n2130304153","n2140006403","n2130304154","n2130304156","n2130304155","n2130304160","n2130304152"]},"w203974054":{"id":"w203974054","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858971","n2139870373","n2139870374"]},"w203049595":{"id":"w203049595","version":"2","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"service"},"nodes":["n2130304158","n2130304159","n2130304160","n2139832635","n2139832639"]},"w203970913":{"id":"w203970913","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832715","n2139832716","n2139832717","n2139832718","n2139832719","n2139832720","n2139832721","n2139832716"]},"w208643134":{"id":"w208643134","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153203","n2189153204","n2189153205","n2189153206","n2189153207","n2189153208","n2189153209","n2189153210","n2189153211","n2189153212","n2189153213","n2189153214","n2189153203"]},"w134150808":{"id":"w134150808","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:53Z","tags":{"bridge":"yes","highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988239","n185984009","n185988241","n1475284019"]},"w203970115":{"id":"w203970115","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824761","n2139824727","n2139824736","n2139824771","n2139824761"]},"w208643130":{"id":"w208643130","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153183","n2189153184","n2189153185","n2189153186","n2189153187","n2189153188","n2189153189","n2189153190","n2189153183"]},"w206805246":{"id":"w206805246","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544782","n2168544780","n2168544781","n2168544783","n2168544787","n2168544784","n2168544782"]},"w203970138":{"id":"w203970138","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824729","n2139824720","n2139824702","n2139824707","n2139824729"]},"w203970133":{"id":"w203970133","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824748","n2139824737","n2139824717","n2139824728","n2139824748"]},"w203970907":{"id":"w203970907","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832700","n2139832701","n2139832702"]},"w203974056":{"id":"w203974056","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870377","n2139870378"]},"w203970897":{"id":"w203970897","version":"2","changeset":"15117845","user":"rolandg","uid":"8703","visible":"true","timestamp":"2013-02-21T23:02:38Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2130304156","n2166205688","n2139832635","n2139832636","n2139832637","n2139832639","n2139832641","n2166205688"]},"w203974057":{"id":"w203974057","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870375","n2139870376"]},"w203049594":{"id":"w203049594","version":"3","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"service"},"nodes":["n2130304156","n2139870378","n2139832706","n2139832704","n2130304157"]},"w203970122":{"id":"w203970122","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824757","n2139824740","n2139824747","n2139824762","n2139824757"]},"w208643136":{"id":"w208643136","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153219","n2189153220","n2189153221","n2189153222","n2189153223","n2189153224","n2189153225","n2189153226","n2189153219"]},"w203970128":{"id":"w203970128","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824732","n2139824752","n2139824744","n2139824724","n2139824732"]},"w203970097":{"id":"w203970097","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824737","n2139824733","n2139824710","n2139824716","n2139824737"]},"w203970137":{"id":"w203970137","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824765","n2139824774","n2139824758","n2139824746","n2139824765"]},"w134150840":{"id":"w134150840","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:56Z","tags":{"highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1475284019","n185988243","n185988244","n185988245"]},"w17967628":{"id":"w17967628","version":"3","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978388","n2139832709","n185988237","n185988239"]},"w203988292":{"id":"w203988292","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"bridge":"yes","highway":"footway"},"nodes":["n2140006407","n2140006405"]},"w203970118":{"id":"w203970118","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824775","n2139824785","n2139824780","n2139824768","n2139824775"]},"w203970121":{"id":"w203970121","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824768","n2139824781","n2139824776","n2139824765","n2139824768"]},"w17967752":{"id":"w17967752","version":"5","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"residential","name":"Railroad Drive","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Railroad","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964980","n2139832699","n2139832700","n2130304158","n185988969","n185988971","n185988972","n1475284011"]},"w203970136":{"id":"w203970136","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824798","n2139824793","n2139824777","n2139824784","n2139824798"]},"w203970142":{"id":"w203970142","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824808","n2139824809","n2139824807","n2139824806","n2139824801","n2139824800","n2139824804","n2139824805","n2139824808"]},"w208643137":{"id":"w208643137","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153227","n2189153248","n2189153228","n2189153234","n2189153235","n2189153229","n2189153249","n2189153230","n2189153227"]},"w208643129":{"id":"w208643129","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153179","n2189153180","n2189153181","n2189153182","n2189153179"]},"w203970909":{"id":"w203970909","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832703","n2139832704","n2139832706","n2139832708","n2139832703"]},"w203970905":{"id":"w203970905","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832688","n2139832691"]},"w203988298":{"id":"w203988298","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"service"},"nodes":["n2140006431","n2140006433","n2140006435","n2140006436","n2140006437","n2140006438","n2140006439","n2140006440"]},"w203970106":{"id":"w203970106","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824798","n2139824791","n2139824799","n2139824802","n2139824798"]},"w203970129":{"id":"w203970129","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824787","n2139824782","n2139824766","n2139824769","n2139824787"]},"w208643131":{"id":"w208643131","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153191","n2189153192","n2189153193","n2189153194","n2189153191"]},"w206805249":{"id":"w206805249","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544800","n2168544801","n2168544802","n2168544805","n2168544807","n2168544809","n2168544811","n2168544813","n2168544815","n2168544817","n2168544819","n2168544821","n2168544823","n2168544825","n2168544800"]},"w134150800":{"id":"w134150800","version":"3","changeset":"13675000","user":"NE2","uid":"207745","visible":"true","timestamp":"2012-10-29T15:08:54Z","tags":{"bridge":"yes","highway":"primary","name":"W Michigan Ave","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964972","n185964976"]},"w17966984":{"id":"w17966984","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Portage Avenue","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Portage","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978375","n185963456","n2189153218","n185966937","n185978967","n185967422","n185982193","n185968100","n185982195","n185960195","n185980735","n185978787","n185966948","n185982196","n185982197","n185982198","n185982200","n2139795768","n185972155"]},"w203988294":{"id":"w203988294","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2140006409","n2140006411","n2140006413","n2140006415","n2140006409"]},"w203970912":{"id":"w203970912","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832711","n2139832712","n2139832713","n2139832714","n2139832711"]},"w203970119":{"id":"w203970119","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824713","n2139824705","n2139824683","n2139824689","n2139824713"]},"w203970114":{"id":"w203970114","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824735","n2139824750","n2139824745","n2139824732","n2139824735"]},"w208643142":{"id":"w208643142","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153254","n2189153255","n2189153256","n2189153257"]},"w206805253":{"id":"w206805253","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544848","n2168544849","n2168544850","n2168544851","n2168544852","n2168544853","n2168544854","n2168544855","n2168544848"]},"w143497377":{"id":"w143497377","version":"7","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"North Main Street","old_ref":"US 131","ref":"US 131 Business","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_left_1":"49093","tiger:zip_right":"49093","tiger:zip_right_1":"49093"},"nodes":["n185962625","n185978420","n185978419","n185978417","n185978415","n185978414","n185975735","n1475293254","n185978410","n185978406","n185970515","n185978402","n185978399","n185965399","n2189015992","n185961396","n185967917","n185978394","n185971631","n185960796","n185978392","n185974583","n185978390","n185971578","n185965289","n2189153215","n185978388","n185978383","n185978381","n185978379","n185978377","n185978375","n185964982"]},"w134150811":{"id":"w134150811","version":"6","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964976","n2130304157","n1475284023","n2139832715","n185964980","n185964982"]},"w208643135":{"id":"w208643135","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153215","n2189153216","n2189153217","n2189153218"]},"w17967183":{"id":"w17967183","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"West","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n1475284011","n185984011","n185984013","n185984015","n2189153246","n2189153250","n185965291","n185984017","n185971580","n185984020","n185974585","n185982163","n185975064","n185971632","n185984022","n185984024","n185967918"]},"w134150778":{"id":"w134150778","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{"bridge":"yes","highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988245","n1475283992","n185975911"]},"w206805248":{"id":"w206805248","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544790","n2168544791","n2168544792","n2168544793","n2168544795","n2168544797","n2168544798","n2168544799","n2168544802","n2168544801","n2168544790"]},"w203974058":{"id":"w203974058","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870374","n2139870375"]},"w203970902":{"id":"w203970902","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service"},"nodes":["n2139832678","n2139832691","n2139832680"]},"w203988296":{"id":"w203988296","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"path"},"nodes":["n2139858967","n2140006421","n2139858935"]},"w206805251":{"id":"w206805251","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544830","n2168544831","n2168544832","n2168544833","n2168544834","n2168544835","n2168544836","n2168544837","n2168544830"]},"w203970906":{"id":"w203970906","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832693","n2139832694","n2139832696","n2139832697","n2139832698","n2139832693"]},"w203049598":{"id":"w203049598","version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2130304162","n2130304163","n2130304164","n2130304165","n2130304162"]},"w203970911":{"id":"w203970911","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service"},"nodes":["n2139832709","n2139832714","n2139832713","n2139832710","n185988971"]},"w203970105":{"id":"w203970105","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824779","n2139824792","n2139824786","n2139824775","n2139824779"]},"w203988290":{"id":"w203988290","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"footway"},"nodes":["n2140006403","n2140006407"]},"w203970900":{"id":"w203970900","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832653","n2139832663","n2139832665","n2139832667","n2139832669","n2139832671","n2139832673","n2139832675","n2139832677","n2139832653"]},"w209717048":{"id":"w209717048","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109755","n2199109756","n2199109757","n2199109758","n2199109759","n2199109760","n2199109755"]},"w208643141":{"id":"w208643141","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153247","n2189153248","n2189153249","n2189153250"]},"w203970903":{"id":"w203970903","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832682","n2139832688","n2139832684","n2139832678","n2139832686"]},"n354002527":{"id":"n354002527","loc":[-85.6236039,41.9458813],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T21:20:07Z","tags":{"amenity":"school","ele":"246","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:edited":"02/21/2008","gnis:feature_id":"1624371","gnis:state_id":"26","name":"Barrows School"}},"n185963396":{"id":"n185963396","loc":[-85.627401,41.943496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185963397":{"id":"n185963397","loc":[-85.627403,41.943625],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185965101":{"id":"n185965101","loc":[-85.626409,41.943215],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185971474":{"id":"n185971474","loc":[-85.624884,41.943508],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971475":{"id":"n185971475","loc":[-85.625191,41.943509],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971482":{"id":"n185971482","loc":[-85.624882,41.94382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185983135":{"id":"n185983135","loc":[-85.624893,41.945616],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983137":{"id":"n185983137","loc":[-85.624912,41.946524],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185988027":{"id":"n185988027","loc":[-85.622721,41.946535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:30Z","tags":{}},"n185963398":{"id":"n185963398","loc":[-85.6273993,41.9446899],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185983238":{"id":"n185983238","loc":[-85.6227157,41.9456321],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185980374":{"id":"n185980374","loc":[-85.6248856,41.9447242],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185980373":{"id":"n185980373","loc":[-85.6226744,41.9447371],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n2196831342":{"id":"n2196831342","loc":[-85.6250924,41.945063],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831343":{"id":"n2196831343","loc":[-85.6252335,41.9450636],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831344":{"id":"n2196831344","loc":[-85.6252286,41.9448707],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831345":{"id":"n2196831345","loc":[-85.6250661,41.9448707],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831346":{"id":"n2196831346","loc":[-85.6250243,41.9449012],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831347":{"id":"n2196831347","loc":[-85.6250251,41.9449244],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831348":{"id":"n2196831348","loc":[-85.6250867,41.9449257],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831349":{"id":"n2196831349","loc":[-85.625349,41.9445058],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831350":{"id":"n2196831350","loc":[-85.6253471,41.9443882],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831351":{"id":"n2196831351","loc":[-85.6251516,41.94439],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831352":{"id":"n2196831352","loc":[-85.6251522,41.9444308],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831353":{"id":"n2196831353","loc":[-85.6251344,41.9444309],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831354":{"id":"n2196831354","loc":[-85.6251356,41.9445077],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831355":{"id":"n2196831355","loc":[-85.6232357,41.9463406],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831356":{"id":"n2196831356","loc":[-85.6232409,41.9460668],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831357":{"id":"n2196831357","loc":[-85.6232072,41.9460665],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831358":{"id":"n2196831358","loc":[-85.6232117,41.9458272],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831359":{"id":"n2196831359","loc":[-85.6229808,41.9458248],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831360":{"id":"n2196831360","loc":[-85.6229763,41.9460627],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831361":{"id":"n2196831361","loc":[-85.623006,41.946063],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831362":{"id":"n2196831362","loc":[-85.6230023,41.9462557],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831363":{"id":"n2196831363","loc":[-85.6230755,41.9462565],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831364":{"id":"n2196831364","loc":[-85.6230739,41.9463389],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n185947349":{"id":"n185947349","loc":[-85.618327,41.945607],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947359":{"id":"n185947359","loc":[-85.615453,41.945597],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947378":{"id":"n185947378","loc":[-85.617231,41.945603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947474":{"id":"n185947474","loc":[-85.616136,41.945602],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185948972":{"id":"n185948972","loc":[-85.615273,41.945637],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:02Z","tags":{}},"n185955019":{"id":"n185955019","loc":[-85.620172,41.945627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185960682":{"id":"n185960682","loc":[-85.622759,41.951845],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185961369":{"id":"n185961369","loc":[-85.622758,41.947444],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961371":{"id":"n185961371","loc":[-85.624908,41.947416],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185963392":{"id":"n185963392","loc":[-85.6270462,41.9409953],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185963393":{"id":"n185963393","loc":[-85.627295,41.941304],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:51Z","tags":{}},"n185963394":{"id":"n185963394","loc":[-85.627352,41.94148],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185963395":{"id":"n185963395","loc":[-85.62737,41.942261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185965099":{"id":"n185965099","loc":[-85.6264,41.942263],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185965108":{"id":"n185965108","loc":[-85.622769,41.949224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185965110":{"id":"n185965110","loc":[-85.624937,41.949237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185966295":{"id":"n185966295","loc":[-85.6299942,41.9446689],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n185966342":{"id":"n185966342","loc":[-85.624873,41.942022],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185970222":{"id":"n185970222","loc":[-85.622761,41.948357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:17Z","tags":{}},"n185970224":{"id":"n185970224","loc":[-85.624924,41.9483338],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185971477":{"id":"n185971477","loc":[-85.620051,41.94383],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971478":{"id":"n185971478","loc":[-85.621219,41.943801],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971481":{"id":"n185971481","loc":[-85.621812,41.943807],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185973866":{"id":"n185973866","loc":[-85.627629,41.946498],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185974699":{"id":"n185974699","loc":[-85.6227688,41.950119],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185978800":{"id":"n185978800","loc":[-85.623953,41.954684],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185980372":{"id":"n185980372","loc":[-85.621459,41.944756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:37Z","tags":{}},"n185980378":{"id":"n185980378","loc":[-85.6286375,41.9446764],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980380":{"id":"n185980380","loc":[-85.630139,41.944661],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980382":{"id":"n185980382","loc":[-85.630298,41.944635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980384":{"id":"n185980384","loc":[-85.630759,41.94454],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980386":{"id":"n185980386","loc":[-85.6312369,41.9444548],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185983133":{"id":"n185983133","loc":[-85.6248672,41.9415903],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185983139":{"id":"n185983139","loc":[-85.624951,41.950239],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983140":{"id":"n185983140","loc":[-85.624934,41.950681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983141":{"id":"n185983141","loc":[-85.624813,41.950983],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:02Z","tags":{}},"n185983143":{"id":"n185983143","loc":[-85.6246225,41.951591],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983144":{"id":"n185983144","loc":[-85.623908,41.9539165],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983145":{"id":"n185983145","loc":[-85.6238903,41.9540956],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983146":{"id":"n185983146","loc":[-85.623898,41.95431],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:02Z","tags":{}},"n185983236":{"id":"n185983236","loc":[-85.628481,41.945611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:05Z","tags":{}},"n185985914":{"id":"n185985914","loc":[-85.620072,41.946538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185986812":{"id":"n185986812","loc":[-85.6227785,41.9510005],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185988028":{"id":"n185988028","loc":[-85.6281401,41.9469632],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988030":{"id":"n185988030","loc":[-85.6282451,41.9470314],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988032":{"id":"n185988032","loc":[-85.6283312,41.9470656],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"w17964989":{"id":"w17964989","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:33:37Z","tags":{"highway":"residential","name":"Middle St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Middle","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312433:15328741:15312403:15312465","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185963392","n185963393","n185963394","n185963395","n185963396","n185963397","n185963398"]},"w17965158":{"id":"w17965158","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:55Z","tags":{"access":"private","highway":"service","name":"Battle St","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Battle","tiger:name_type":"St","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313281","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965099","n185965101"]},"w41074896":{"id":"w41074896","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980372","n185980373","n185980374","n185963398","n185980378","n185966295","n185980380","n185980382","n185980384","n185980386"]},"w17965846":{"id":"w17965846","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:12Z","tags":{"highway":"residential","name":"2nd Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"2nd","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313726","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971477","n185971478","n185971481","n185971482"]},"w209470306":{"id":"w209470306","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831349","n2196831350","n2196831351","n2196831352","n2196831353","n2196831354","n2196831349"]},"w17965845":{"id":"w17965845","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:12Z","tags":{"highway":"residential","name":"2nd Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"2nd","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335065","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971474","n185971475","n185963396"]},"w209470307":{"id":"w209470307","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831355","n2196831356","n2196831357","n2196831358","n2196831359","n2196831360","n2196831361","n2196831362","n2196831363","n2196831364","n2196831355"]},"w17968192":{"id":"w17968192","version":"2","changeset":"15473162","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:43:17Z","tags":{"highway":"residential","name":"Washington St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Washington","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980373","n185983238","n185988027","n185961369","n185970222","n185965108","n185974699","n185986812","n185960682"]},"w17967603":{"id":"w17967603","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:23Z","tags":{"highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185985914","n185988027","n185983137","n185973866","n185988028","n185988030","n185988032"]},"w209470305":{"id":"w209470305","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831342","n2196831343","n2196831344","n2196831345","n2196831346","n2196831347","n2196831348","n2196831342"]},"w17967092":{"id":"w17967092","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:18Z","tags":{"highway":"residential","name":"Wood St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wood","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313653:15313659:15313679:15314060","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185983133","n185966342","n185971474","n185971482","n185980374","n185983135","n185983137","n185961371","n185970224","n185965110","n185983139","n185983140","n185983141","n185983143","n185983144","n185983145","n185983146","n185978800"]},"w17967107":{"id":"w17967107","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:23Z","tags":{"highway":"residential","name":"4th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"4th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314053:15314054:15313697:15313698:15313700:15313701:15313699:15314427","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185983236","n185983135","n185983238","n185955019","n185947349","n185947378","n185947474","n185947359","n185948972"]},"n354030330":{"id":"n354030330","loc":[-85.6297222,41.9444444],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T22:10:58Z","tags":{"ele":"243","gnis:county_id":"149","gnis:created":"03/21/2008","gnis:feature_id":"2401246","gnis:state_id":"26","leisure":"park","name":"Scouter Park"}},"n185966296":{"id":"n185966296","loc":[-85.629998,41.944078],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966298":{"id":"n185966298","loc":[-85.629972,41.943927],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966300":{"id":"n185966300","loc":[-85.629948,41.943783],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185980391":{"id":"n185980391","loc":[-85.6322992,41.9442766],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980393":{"id":"n185980393","loc":[-85.6324925,41.9442136],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980389":{"id":"n185980389","loc":[-85.6320272,41.9443281],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980388":{"id":"n185980388","loc":[-85.6315778,41.9443959],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n354031320":{"id":"n354031320","loc":[-85.6280556,41.9447222],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:21Z","tags":{"amenity":"place_of_worship","ele":"245","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417881","gnis:state_id":"26","name":"Riverside Church","religion":"christian"}},"n185987309":{"id":"n185987309","loc":[-85.6286497,41.9453531],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185987311":{"id":"n185987311","loc":[-85.6285942,41.9454805],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185988034":{"id":"n185988034","loc":[-85.6285815,41.9471692],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988896":{"id":"n185988896","loc":[-85.6318433,41.9437929],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185977764":{"id":"n185977764","loc":[-85.6322988,41.943472],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819848852":{"id":"n1819848852","loc":[-85.6315188,41.9448808],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848912":{"id":"n1819848912","loc":[-85.6284289,41.9472189],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848925":{"id":"n1819848925","loc":[-85.6314501,41.9451617],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848949":{"id":"n1819848949","loc":[-85.6309394,41.9455192],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848951":{"id":"n1819848951","loc":[-85.6290297,41.9457187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848963":{"id":"n1819848963","loc":[-85.630521,41.9455591],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848981":{"id":"n1819848981","loc":[-85.6292936,41.9455846],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848989":{"id":"n1819848989","loc":[-85.6298451,41.9455431],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848998":{"id":"n1819848998","loc":[-85.6314973,41.9446254],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849018":{"id":"n1819849018","loc":[-85.6302807,41.9455527],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849043":{"id":"n1819849043","loc":[-85.6285533,41.9469731],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849087":{"id":"n1819849087","loc":[-85.6314501,41.9453532],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849090":{"id":"n1819849090","loc":[-85.628843,41.9461033],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849109":{"id":"n1819849109","loc":[-85.6311926,41.9454729],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849116":{"id":"n1819849116","loc":[-85.6288967,41.9459437],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849177":{"id":"n1819849177","loc":[-85.6287894,41.9464544],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819858529":{"id":"n1819858529","loc":[-85.6325485,41.9445625],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n2189112797":{"id":"n2189112797","loc":[-85.6275271,41.944555],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112798":{"id":"n2189112798","loc":[-85.6275196,41.9437258],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112799":{"id":"n2189112799","loc":[-85.6278937,41.943723],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112800":{"id":"n2189112800","loc":[-85.6278969,41.9439191],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112801":{"id":"n2189112801","loc":[-85.6279907,41.9439345],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112802":{"id":"n2189112802","loc":[-85.6280817,41.9439663],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112803":{"id":"n2189112803","loc":[-85.6281768,41.9440145],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112804":{"id":"n2189112804","loc":[-85.6281933,41.9440483],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112805":{"id":"n2189112805","loc":[-85.6281671,41.9440535],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112806":{"id":"n2189112806","loc":[-85.6281933,41.9440935],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112807":{"id":"n2189112807","loc":[-85.6282126,41.9441437],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112808":{"id":"n2189112808","loc":[-85.628214,41.9441991],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112809":{"id":"n2189112809","loc":[-85.6283298,41.944196],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112810":{"id":"n2189112810","loc":[-85.6283285,41.9442616],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112811":{"id":"n2189112811","loc":[-85.6281727,41.9442616],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112812":{"id":"n2189112812","loc":[-85.6281713,41.9442934],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112813":{"id":"n2189112813","loc":[-85.6280386,41.9442963],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112814":{"id":"n2189112814","loc":[-85.6280405,41.9443292],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112815":{"id":"n2189112815","loc":[-85.627829,41.9443349],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112816":{"id":"n2189112816","loc":[-85.6278347,41.9445495],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189153271":{"id":"n2189153271","loc":[-85.6321053,41.9460342],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153272":{"id":"n2189153272","loc":[-85.632278,41.9457841],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153273":{"id":"n2189153273","loc":[-85.632823,41.9459936],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153274":{"id":"n2189153274","loc":[-85.6326845,41.9461963],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153275":{"id":"n2189153275","loc":[-85.6325664,41.9461507],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153276":{"id":"n2189153276","loc":[-85.6325323,41.946198],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153278":{"id":"n2189153278","loc":[-85.6321916,41.9459733],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153279":{"id":"n2189153279","loc":[-85.6322598,41.9458703],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153280":{"id":"n2189153280","loc":[-85.6327208,41.9460358],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153281":{"id":"n2189153281","loc":[-85.6326413,41.9461422],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n185959079":{"id":"n185959079","loc":[-85.6293702,41.9474668],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185966301":{"id":"n185966301","loc":[-85.629692,41.943136],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966304":{"id":"n185966304","loc":[-85.629565,41.942916],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966308":{"id":"n185966308","loc":[-85.629501,41.942751],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966315":{"id":"n185966315","loc":[-85.629472,41.942578],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966319":{"id":"n185966319","loc":[-85.629444,41.942414],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966321":{"id":"n185966321","loc":[-85.629391,41.94205],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966323":{"id":"n185966323","loc":[-85.629369,41.941858],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966327":{"id":"n185966327","loc":[-85.629297,41.941604],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966331":{"id":"n185966331","loc":[-85.629233,41.941549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966336":{"id":"n185966336","loc":[-85.628504,41.941364],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966338":{"id":"n185966338","loc":[-85.628275,41.941303],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966340":{"id":"n185966340","loc":[-85.6269038,41.9410983],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n185973867":{"id":"n185973867","loc":[-85.626843,41.947333],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185977762":{"id":"n185977762","loc":[-85.6318441,41.9429453],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819848853":{"id":"n1819848853","loc":[-85.625854,41.9492218],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848861":{"id":"n1819848861","loc":[-85.6251459,41.9552376],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848874":{"id":"n1819848874","loc":[-85.6267445,41.9482961],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848882":{"id":"n1819848882","loc":[-85.6257209,41.9552396],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848883":{"id":"n1819848883","loc":[-85.624706,41.9523173],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848907":{"id":"n1819848907","loc":[-85.62609,41.9561471],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848908":{"id":"n1819848908","loc":[-85.6244013,41.9549284],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848911":{"id":"n1819848911","loc":[-85.6265578,41.9553672],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848923":{"id":"n1819848923","loc":[-85.6246802,41.9550959],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848936":{"id":"n1819848936","loc":[-85.6241588,41.9539291],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848940":{"id":"n1819848940","loc":[-85.62506,41.9511129],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848944":{"id":"n1819848944","loc":[-85.624942,41.9515912],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848950":{"id":"n1819848950","loc":[-85.6273989,41.9475461],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848957":{"id":"n1819848957","loc":[-85.627695,41.947404],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819849009":{"id":"n1819849009","loc":[-85.6259248,41.94896],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849037":{"id":"n1819849037","loc":[-85.6257252,41.9502112],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849061":{"id":"n1819849061","loc":[-85.6270084,41.9479626],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849073":{"id":"n1819849073","loc":[-85.6243734,41.9534583],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849091":{"id":"n1819849091","loc":[-85.6241373,41.9543918],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849130":{"id":"n1819849130","loc":[-85.6282572,41.9473067],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849143":{"id":"n1819849143","loc":[-85.625281,41.9506596],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849153":{"id":"n1819849153","loc":[-85.6258647,41.9498043],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849168":{"id":"n1819849168","loc":[-85.6265084,41.9559317],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849173":{"id":"n1819849173","loc":[-85.6263325,41.9552156],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849175":{"id":"n1819849175","loc":[-85.6266372,41.9556764],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849178":{"id":"n1819849178","loc":[-85.6242232,41.9545993],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849181":{"id":"n1819849181","loc":[-85.6262187,41.9486712],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849188":{"id":"n1819849188","loc":[-85.6245558,41.9530434],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849190":{"id":"n1819849190","loc":[-85.6255982,41.9563017],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n2168544738":{"id":"n2168544738","loc":[-85.6245707,41.9529711],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"w208643145":{"id":"w208643145","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153271","n2189153272","n2189153273","n2189153274","n2189153275","n2189153276","n2189153271"]},"w17967561":{"id":"w17967561","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:21Z","tags":{"highway":"residential","name":"Garden St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Garden","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312361:15322884:15322885","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980378","n185987309","n185987311","n185983236","n185973866"]},"w134150802":{"id":"w134150802","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"bridge":"yes","highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980386","n185980388"]},"w208639462":{"id":"w208639462","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112797","n2189112798","n2189112799","n2189112800","n2189112801","n2189112802","n2189112803","n2189112804","n2189112805","n2189112806","n2189112807","n2189112808","n2189112809","n2189112810","n2189112811","n2189112812","n2189112813","n2189112814","n2189112815","n2189112816","n2189112797"]},"w134150830":{"id":"w134150830","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"bridge":"yes","highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977762","n185977764"]},"w134150801":{"id":"w134150801","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977764","n185964982"]},"w208643146":{"id":"w208643146","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153277","n2189153281","n2189153278","n2189153279","n2189153280","n2189153281"]},"w17966061":{"id":"w17966061","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:42:00Z","tags":{"highway":"residential","name":"John Glenn Ct","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"John Glenn","tiger:name_type":"Ct","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313190","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185973866","n185973867"]},"w134150772":{"id":"w134150772","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{"highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988034","n185959079","n185988036","n185978967"]},"w134150836":{"id":"w134150836","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980388","n1819858524","n185980389","n185980391","n185980393","n185964982"]},"w17967734":{"id":"w17967734","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"residential","name":"Water Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Water","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988896","n185980391","n1819858529"]},"w17965305":{"id":"w17965305","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:57Z","tags":{"highway":"residential","name":"River Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312440:15338837","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966295","n185966296","n185966298","n185966300","n185966301","n185966304","n185966308","n185966315","n185966319","n185966321","n185966323","n185966327","n185966331","n185966336","n185966338","n185963392","n185966340","n185966342"]},"w134150826":{"id":"w134150826","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:55Z","tags":{"bridge":"yes","highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988032","n185988034"]},"w170848330":{"id":"w170848330","version":"3","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:50Z","tags":{"name":"Portage River","source":"Bing","waterway":"river"},"nodes":["n1819849190","n1819848907","n1819849168","n1819849175","n1819848911","n1819849173","n1819848882","n1819848861","n1819848923","n1819848908","n1819849178","n1819849091","n1819848936","n1819849073","n1819849188","n2168544738","n1819848883","n1819848944","n1819848940","n1819849143","n1819849037","n1819849153","n1819848853","n1819849009","n1819849181","n1819848874","n1819849061","n1819848950","n1819848957","n1819849130","n1819848912","n1819849043","n1819849177","n1819849090","n1819849116","n1819848951","n1819848981","n1819848989","n1819849018","n1819848963","n1819848949","n1819849109","n1819849087","n1819848925","n1819848852","n1819848998","n1819849057"]},"r270264":{"id":"r270264","version":"8","changeset":"13611326","user":"migurski","uid":"8287","visible":"true","timestamp":"2012-10-23T23:35:16Z","tags":{"network":"US:MI","ref":"86","route":"road","state_id":"MI","type":"route","url":"http://en.wikipedia.org/wiki/M-86_%28Michigan_highway%29"},"members":[{"id":"w17737723","type":"way","role":""},{"id":"w17735949","type":"way","role":""},{"id":"w17740404","type":"way","role":""},{"id":"w17966273","type":"way","role":""},{"id":"w17964745","type":"way","role":""},{"id":"w151538068","type":"way","role":""},{"id":"w151538067","type":"way","role":""},{"id":"w17964960","type":"way","role":""},{"id":"w17966099","type":"way","role":""},{"id":"w17968009","type":"way","role":""},{"id":"w41259499","type":"way","role":""},{"id":"w151540401","type":"way","role":""},{"id":"w151540418","type":"way","role":""},{"id":"w17967997","type":"way","role":""},{"id":"w17966029","type":"way","role":""},{"id":"w17964801","type":"way","role":""},{"id":"w41259496","type":"way","role":""},{"id":"w151540399","type":"way","role":""},{"id":"w17968004","type":"way","role":""},{"id":"w17966462","type":"way","role":""},{"id":"w134150830","type":"way","role":""},{"id":"w134150801","type":"way","role":""},{"id":"w17732295","type":"way","role":""}]},"n185980093":{"id":"n185980093","loc":[-85.6271414,41.9407274],"version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964330":{"id":"n185964330","loc":[-85.6235688,41.9399111],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964328":{"id":"n185964328","loc":[-85.6235609,41.9391301],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185958034":{"id":"n185958034","loc":[-85.627102,41.939125],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185964331":{"id":"n185964331","loc":[-85.623571,41.940124],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964329":{"id":"n185964329","loc":[-85.623562,41.9392411],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185972756":{"id":"n185972756","loc":[-85.623802,41.939102],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185972757":{"id":"n185972757","loc":[-85.623584,41.93913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185975325":{"id":"n185975325","loc":[-85.624835,41.939318],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975326":{"id":"n185975326","loc":[-85.624811,41.939435],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975327":{"id":"n185975327","loc":[-85.624635,41.939703],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975328":{"id":"n185975328","loc":[-85.624366,41.940055],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975330":{"id":"n185975330","loc":[-85.624287,41.940113],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975332":{"id":"n185975332","loc":[-85.624215,41.940134],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185980088":{"id":"n185980088","loc":[-85.627127,41.940086],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185988943":{"id":"n185988943","loc":[-85.622643,41.940128],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:15Z","tags":{}},"n185988961":{"id":"n185988961","loc":[-85.627263,41.940082],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185990192":{"id":"n185990192","loc":[-85.622933,41.939224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990194":{"id":"n185990194","loc":[-85.621976,41.939203],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185991378":{"id":"n185991378","loc":[-85.622643,41.940635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:15:34Z","tags":{}},"n1475283999":{"id":"n1475283999","loc":[-85.6271165,41.9408429],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n185980090":{"id":"n185980090","loc":[-85.6271315,41.9402001],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185958036":{"id":"n185958036","loc":[-85.6248366,41.9391615],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819800188":{"id":"n1819800188","loc":[-85.6246947,41.9401644],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800199":{"id":"n1819800199","loc":[-85.6233686,41.9430896],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800204":{"id":"n1819800204","loc":[-85.6223236,41.9408587],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800213":{"id":"n1819800213","loc":[-85.6247526,41.9414138],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800216":{"id":"n1819800216","loc":[-85.6230961,41.9407151],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800218":{"id":"n1819800218","loc":[-85.621991,41.9429336],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800221":{"id":"n1819800221","loc":[-85.6246088,41.9424708],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800227":{"id":"n1819800227","loc":[-85.6241368,41.9403081],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800230":{"id":"n1819800230","loc":[-85.6226776,41.9431012],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800231":{"id":"n1819800231","loc":[-85.6243728,41.9401644],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800232":{"id":"n1819800232","loc":[-85.6249629,41.9408907],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800248":{"id":"n1819800248","loc":[-85.6238685,41.9405555],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800266":{"id":"n1819800266","loc":[-85.6246882,41.9418367],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800271":{"id":"n1819800271","loc":[-85.62492,41.9413695],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800294":{"id":"n1819800294","loc":[-85.6243556,41.9427465],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800304":{"id":"n1819800304","loc":[-85.6251453,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800325":{"id":"n1819800325","loc":[-85.6248234,41.9405714],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800362":{"id":"n1819800362","loc":[-85.6239544,41.9429416],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800368":{"id":"n1819800368","loc":[-85.6243406,41.9402283],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800375":{"id":"n1819800375","loc":[-85.6226562,41.940755],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800377":{"id":"n1819800377","loc":[-85.6232033,41.9406512],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n185945133":{"id":"n185945133","loc":[-85.623501,41.933232],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945135":{"id":"n185945135","loc":[-85.624776,41.933205],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945395":{"id":"n185945395","loc":[-85.624741,41.93019],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:30Z","tags":{}},"n185952239":{"id":"n185952239","loc":[-85.615166,41.9382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:12Z","tags":{}},"n185954490":{"id":"n185954490","loc":[-85.624721,41.929278],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:27Z","tags":{}},"n185957831":{"id":"n185957831","loc":[-85.625041,41.938662],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:57:55Z","tags":{}},"n185958030":{"id":"n185958030","loc":[-85.629033,41.93913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185958032":{"id":"n185958032","loc":[-85.628429,41.939143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185958498":{"id":"n185958498","loc":[-85.621605,41.940143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:27Z","tags":{}},"n185961186":{"id":"n185961186","loc":[-85.624792,41.935214],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:34Z","tags":{}},"n185963099":{"id":"n185963099","loc":[-85.6204461,41.9401485],"version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{}},"n185963698":{"id":"n185963698","loc":[-85.6297342,41.9400783],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185964320":{"id":"n185964320","loc":[-85.623511,41.934216],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964322":{"id":"n185964322","loc":[-85.6235312,41.9362084],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964324":{"id":"n185964324","loc":[-85.6235488,41.9371726],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964326":{"id":"n185964326","loc":[-85.6235512,41.9381718],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185967077":{"id":"n185967077","loc":[-85.617359,41.940161],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:54Z","tags":{}},"n185967634":{"id":"n185967634","loc":[-85.6248039,41.9362012],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185970833":{"id":"n185970833","loc":[-85.6248019,41.9381684],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185972752":{"id":"n185972752","loc":[-85.624582,41.938848],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185972754":{"id":"n185972754","loc":[-85.6242,41.939008],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185973251":{"id":"n185973251","loc":[-85.602727,41.936012],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:49Z","tags":{}},"n185974509":{"id":"n185974509","loc":[-85.62478,41.93217],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:19Z","tags":{}},"n185975315":{"id":"n185975315","loc":[-85.624703,41.925597],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:56Z","tags":{}},"n185975316":{"id":"n185975316","loc":[-85.624716,41.927359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975317":{"id":"n185975317","loc":[-85.62475,41.93119],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975318":{"id":"n185975318","loc":[-85.624782,41.934218],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975320":{"id":"n185975320","loc":[-85.6247949,41.9371708],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:58Z","tags":{}},"n185977754":{"id":"n185977754","loc":[-85.6276,41.937412],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185980075":{"id":"n185980075","loc":[-85.627451,41.937549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980077":{"id":"n185980077","loc":[-85.627375,41.937618],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980078":{"id":"n185980078","loc":[-85.627278,41.937728],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980079":{"id":"n185980079","loc":[-85.627199,41.937842],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980081":{"id":"n185980081","loc":[-85.627141,41.937981],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980083":{"id":"n185980083","loc":[-85.627109,41.938153],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980085":{"id":"n185980085","loc":[-85.627101,41.938699],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185981173":{"id":"n185981173","loc":[-85.61433,41.940167],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:02Z","tags":{}},"n185987021":{"id":"n185987021","loc":[-85.628311,41.942261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:07Z","tags":{}},"n185988963":{"id":"n185988963","loc":[-85.628439,41.940086],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185990195":{"id":"n185990195","loc":[-85.621225,41.939143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990196":{"id":"n185990196","loc":[-85.620576,41.939033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990198":{"id":"n185990198","loc":[-85.619081,41.938804],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990200":{"id":"n185990200","loc":[-85.617593,41.938552],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990202":{"id":"n185990202","loc":[-85.617372,41.938535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990204":{"id":"n185990204","loc":[-85.616087,41.93832],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990206":{"id":"n185990206","loc":[-85.615754,41.938289],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990209":{"id":"n185990209","loc":[-85.615438,41.938251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990211":{"id":"n185990211","loc":[-85.613469,41.937867],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990212":{"id":"n185990212","loc":[-85.610172,41.937298],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990213":{"id":"n185990213","loc":[-85.605537,41.936497],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990214":{"id":"n185990214","loc":[-85.604014,41.936234],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n1819800180":{"id":"n1819800180","loc":[-85.588775,41.9455032],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800181":{"id":"n1819800181","loc":[-85.6074212,41.9408827],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800182":{"id":"n1819800182","loc":[-85.6131397,41.9427022],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800183":{"id":"n1819800183","loc":[-85.6171523,41.9416807],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800184":{"id":"n1819800184","loc":[-85.602465,41.9397415],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800185":{"id":"n1819800185","loc":[-85.6109296,41.9410583],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800186":{"id":"n1819800186","loc":[-85.6165729,41.9418004],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800189":{"id":"n1819800189","loc":[-85.5866293,41.9458224],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800191":{"id":"n1819800191","loc":[-85.5853311,41.9466603],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800201":{"id":"n1819800201","loc":[-85.6101142,41.9433406],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800202":{"id":"n1819800202","loc":[-85.600963,41.9428618],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800206":{"id":"n1819800206","loc":[-85.6154357,41.9427501],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800207":{"id":"n1819800207","loc":[-85.6040309,41.9414094],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800209":{"id":"n1819800209","loc":[-85.6113694,41.943189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800211":{"id":"n1819800211","loc":[-85.618032,41.9416408],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800214":{"id":"n1819800214","loc":[-85.5959419,41.9402602],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800219":{"id":"n1819800219","loc":[-85.5972117,41.9420043],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800223":{"id":"n1819800223","loc":[-85.6117171,41.9430019],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800224":{"id":"n1819800224","loc":[-85.5977873,41.9395579],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800226":{"id":"n1819800226","loc":[-85.5917362,41.9432209],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800228":{"id":"n1819800228","loc":[-85.6055759,41.9419122],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800229":{"id":"n1819800229","loc":[-85.6203395,41.9425595],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n1819800233":{"id":"n1819800233","loc":[-85.6107579,41.9433007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800234":{"id":"n1819800234","loc":[-85.6039773,41.9412498],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800235":{"id":"n1819800235","loc":[-85.6000977,41.9412861],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800236":{"id":"n1819800236","loc":[-85.6026689,41.9407231],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800237":{"id":"n1819800237","loc":[-85.615161,41.9428662],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800238":{"id":"n1819800238","loc":[-85.5878953,41.9454314],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800239":{"id":"n1819800239","loc":[-85.6035267,41.941569],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800240":{"id":"n1819800240","loc":[-85.5929738,41.9450208],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800241":{"id":"n1819800241","loc":[-85.6186329,41.9416488],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800242":{"id":"n1819800242","loc":[-85.5881136,41.9483963],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800243":{"id":"n1819800243","loc":[-85.5909208,41.9466922],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800244":{"id":"n1819800244","loc":[-85.5997721,41.9394941],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800245":{"id":"n1819800245","loc":[-85.6202064,41.9425712],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n1819800246":{"id":"n1819800246","loc":[-85.591071,41.9448808],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800247":{"id":"n1819800247","loc":[-85.5866078,41.9490622],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800250":{"id":"n1819800250","loc":[-85.602383,41.9420841],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800251":{"id":"n1819800251","loc":[-85.5957418,41.9426906],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800255":{"id":"n1819800255","loc":[-85.6157039,41.9416727],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800256":{"id":"n1819800256","loc":[-85.6080328,41.9410982],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800258":{"id":"n1819800258","loc":[-85.6192551,41.9414892],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800260":{"id":"n1819800260","loc":[-85.6104253,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800261":{"id":"n1819800261","loc":[-85.6204503,41.9425709],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800263":{"id":"n1819800263","loc":[-85.5872194,41.9455431],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800264":{"id":"n1819800264","loc":[-85.616176,41.9418244],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800268":{"id":"n1819800268","loc":[-85.6120883,41.9426703],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800269":{"id":"n1819800269","loc":[-85.5894547,41.9474946],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800272":{"id":"n1819800272","loc":[-85.6209181,41.9425027],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800274":{"id":"n1819800274","loc":[-85.6122814,41.9412817],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800276":{"id":"n1819800276","loc":[-85.5895153,41.9452798],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800277":{"id":"n1819800277","loc":[-85.5884317,41.9455272],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800279":{"id":"n1819800279","loc":[-85.5884103,41.9480966],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800287":{"id":"n1819800287","loc":[-85.5904917,41.9453915],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800288":{"id":"n1819800288","loc":[-85.6212292,41.9412977],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800289":{"id":"n1819800289","loc":[-85.5954377,41.9406832],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800290":{"id":"n1819800290","loc":[-85.593721,41.9420957],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800291":{"id":"n1819800291","loc":[-85.6162832,41.9427102],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800292":{"id":"n1819800292","loc":[-85.605018,41.9401804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800293":{"id":"n1819800293","loc":[-85.6086443,41.941146],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800296":{"id":"n1819800296","loc":[-85.6204675,41.9413775],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800297":{"id":"n1819800297","loc":[-85.612496,41.9424947],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800299":{"id":"n1819800299","loc":[-85.6065629,41.9423431],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800301":{"id":"n1819800301","loc":[-85.6036125,41.9398452],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800303":{"id":"n1819800303","loc":[-85.6114767,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800306":{"id":"n1819800306","loc":[-85.592616,41.9428139],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800308":{"id":"n1819800308","loc":[-85.6023041,41.9419521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800310":{"id":"n1819800310","loc":[-85.6218944,41.9411061],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800311":{"id":"n1819800311","loc":[-85.6097816,41.941162],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800312":{"id":"n1819800312","loc":[-85.5922549,41.9457869],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800313":{"id":"n1819800313","loc":[-85.5986027,41.9417206],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800314":{"id":"n1819800314","loc":[-85.5918687,41.946138],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800315":{"id":"n1819800315","loc":[-85.5872875,41.948883],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800316":{"id":"n1819800316","loc":[-85.594272,41.9436642],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800317":{"id":"n1819800317","loc":[-85.6176351,41.941577],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800318":{"id":"n1819800318","loc":[-85.6137834,41.9430853],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800319":{"id":"n1819800319","loc":[-85.6195383,41.942622],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"leisure":"slipway"}},"n1819800320":{"id":"n1819800320","loc":[-85.5971006,41.9398053],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800321":{"id":"n1819800321","loc":[-85.601714,41.9406752],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800322":{"id":"n1819800322","loc":[-85.5908028,41.9453117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800323":{"id":"n1819800323","loc":[-85.6062732,41.9404597],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800324":{"id":"n1819800324","loc":[-85.62124,41.9425905],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800327":{"id":"n1819800327","loc":[-85.6008664,41.942766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800328":{"id":"n1819800328","loc":[-85.6179355,41.9428538],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800330":{"id":"n1819800330","loc":[-85.6045566,41.9415131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800331":{"id":"n1819800331","loc":[-85.5944935,41.9414653],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800333":{"id":"n1819800333","loc":[-85.6088911,41.943181],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800334":{"id":"n1819800334","loc":[-85.5946367,41.943369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800336":{"id":"n1819800336","loc":[-85.6150494,41.9429656],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800343":{"id":"n1819800343","loc":[-85.6096099,41.9433326],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800345":{"id":"n1819800345","loc":[-85.5915216,41.9435401],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800347":{"id":"n1819800347","loc":[-85.607786,41.9428698],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800349":{"id":"n1819800349","loc":[-85.6187616,41.9426623],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800350":{"id":"n1819800350","loc":[-85.6012527,41.9426064],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800352":{"id":"n1819800352","loc":[-85.6214867,41.9428379],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800354":{"id":"n1819800354","loc":[-85.61338,41.94293],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800355":{"id":"n1819800355","loc":[-85.5923156,41.9428139],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800357":{"id":"n1819800357","loc":[-85.5901591,41.9453197],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800359":{"id":"n1819800359","loc":[-85.6033979,41.9408827],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800360":{"id":"n1819800360","loc":[-85.6186543,41.9414653],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800363":{"id":"n1819800363","loc":[-85.6128607,41.9425665],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800365":{"id":"n1819800365","loc":[-85.614234,41.9412977],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800367":{"id":"n1819800367","loc":[-85.6089662,41.9410902],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800369":{"id":"n1819800369","loc":[-85.6197379,41.9413695],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800370":{"id":"n1819800370","loc":[-85.6037348,41.941733],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800371":{"id":"n1819800371","loc":[-85.5993467,41.9415654],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800372":{"id":"n1819800372","loc":[-85.598077,41.94196],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800373":{"id":"n1819800373","loc":[-85.5984203,41.9394781],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800374":{"id":"n1819800374","loc":[-85.6013315,41.9427066],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800376":{"id":"n1819800376","loc":[-85.5934673,41.944167],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800378":{"id":"n1819800378","loc":[-85.6011062,41.9407753],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800379":{"id":"n1819800379","loc":[-85.6150602,41.9415131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800380":{"id":"n1819800380","loc":[-85.6132148,41.9412338],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800381":{"id":"n1819800381","loc":[-85.5889038,41.9453835],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n2139966621":{"id":"n2139966621","loc":[-85.6198719,41.9426184],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:17Z","tags":{}},"n2139966622":{"id":"n2139966622","loc":[-85.6197551,41.9426123],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:17Z","tags":{}},"n2139966623":{"id":"n2139966623","loc":[-85.6196467,41.9426279],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966624":{"id":"n2139966624","loc":[-85.6191519,41.9426221],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966625":{"id":"n2139966625","loc":[-85.6194153,41.9426256],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966626":{"id":"n2139966626","loc":[-85.6200497,41.9425812],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966629":{"id":"n2139966629","loc":[-85.6192123,41.9426229],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2203933101":{"id":"n2203933101","loc":[-85.6030009,41.9360592],"version":"1","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:36Z","tags":{}},"w17967539":{"id":"w17967539","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:52:28Z","tags":{"highway":"residential","name":"1st Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"1st","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335113:15313280","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965099","n185963395","n185987021"]},"w17967751":{"id":"w17967751","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:03Z","tags":{"highway":"residential","name":"River St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312481:15312487","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980088","n185988961","n185988963","n185963698"]},"w17965088":{"id":"w17965088","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:20Z","tags":{"highway":"residential","name":"9th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"9th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314207:15313759:15313772:15313802:15313796:15313781:15314179","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185945133","n185964320","n185964322","n185964324","n185964326","n185964328","n185964329","n185964330","n185964331"]},"w17964467":{"id":"w17964467","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:29:37Z","tags":{"highway":"residential","name":"Mechanic St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Mechanic","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312501:15312497:15335073","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958030","n185958032","n185958034","n185958036"]},"w134150842":{"id":"w134150842","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:56Z","tags":{"bridge":"yes","highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185980090","n185980093"]},"w17966740":{"id":"w17966740","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185977754","n185980075","n185980077","n185980078","n185980079","n185980081","n185980083","n185980085","n185958034","n185980088","n185980090"]},"w170844765":{"id":"w170844765","version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{"waterway":"dam"},"nodes":["n1819800304","n1819800232","n1819800325","n1819800188"]},"w17967745":{"id":"w17967745","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:21Z","tags":{"highway":"residential","name":"River St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981173","n185967077","n185963099","n185958498","n185988943","n185964331","n185975332"]},"w17968113":{"id":"w17968113","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:56:09Z","tags":{"highway":"residential","name":"Green St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Green","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314409","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988943","n185991378"]},"w134150833":{"id":"w134150833","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:55Z","tags":{"highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185980093","n1475283999","n185963392"]},"w17967935":{"id":"w17967935","version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{"name":"Michigan Central Railroad","railway":"abandoned","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan Central Railroad","tiger:reviewed":"no"},"nodes":["n185972757","n185990192","n185990194","n185990195","n185990196","n185990198","n185990200","n185990202","n185990204","n185990206","n185990209","n185952239","n185990211","n185990212","n185990213","n185990214","n2203933101","n185973251"]},"w17965993":{"id":"w17965993","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:19Z","tags":{"name":"Conrail Railroad","railway":"abandoned","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314180:15314177","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185957831","n185972752","n185972754","n185972756","n185972757"]},"w17966211":{"id":"w17966211","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"residential","name":"8th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"8th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313757:15313771:15313791:15313794:15313799:15313811:15313814:15313824:15313846:15314618:15313817:15313788:15314178:15324590","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975315","n185975316","n185954490","n185945395","n185975317","n185974509","n185945135","n185975318","n185961186","n185967634","n185975320","n185970833","n185958036","n185975325","n185975326","n185975327","n185975328","n185975330","n185975332"]},"w170844766":{"id":"w170844766","version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"source":"Bing","waterway":"riverbank"},"nodes":["n1819800229","n1819800245","n2139966626","n2139966621","n2139966622","n2139966623","n1819800319","n2139966625","n2139966629","n2139966624","n1819800349","n1819800328","n1819800291","n1819800206","n1819800237","n1819800336","n1819800318","n1819800354","n1819800182","n1819800363","n1819800297","n1819800268","n1819800223","n1819800209","n1819800233","n1819800201","n1819800343","n1819800333","n1819800347","n1819800299","n1819800228","n1819800330","n1819800370","n1819800250","n1819800374","n1819800202","n1819800327","n1819800350","n1819800308","n1819800239","n1819800207","n1819800234","n1819800359","n1819800236","n1819800321","n1819800378","n1819800235","n1819800371","n1819800313","n1819800372","n1819800219","n1819800251","n1819800334","n1819800316","n1819800376","n1819800240","n1819800312","n1819800314","n1819800243","n1819800269","n1819800279","n1819800242","n1819800315","n1819800247","n1819800191","n1819800189","n1819800263","n1819800238","n1819800277","n1819800180","n1819800381","n1819800276","n1819800357","n1819800287","n1819800322","n1819800246","n1819800345","n1819800226","n1819800355","n1819800306","n1819800290","n1819800331","n1819800289","n1819800214","n1819800320","n1819800224","n1819800373","n1819800244","n1819800184","n1819800301","n1819800292","n1819800323","n1819800181","n1819800256","n1819800293","n1819800367","n1819800311","n1819800260","n1819800185","n1819800303","n1819800274","n1819800380","n1819800365","n1819800379","n1819800255","n1819800264","n1819800186","n1819800183","n1819800317","n1819800211","n1819800241","n1819800360","n1819800258","n1819800369","n1819800296","n1819800288","n1819800310","n1819800204","n1819800375","n1819800216","n1819800377","n1819800248","n1819800227","n1819800368","n1819800231","n1819800188","n1819800325","n1819800232","n1819800304","n1819800271","n1819800213","n1819800266","n1819800221","n1819800294","n1819800362","n1819800199","n1819800230","n1819800218","n1819800352","n1819800324","n1819800272","n1819800261","n1819800229"]},"n1875654132":{"id":"n1875654132","loc":[-85.6297439,41.939808],"version":"1","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:36Z","tags":{}},"n1475293263":{"id":"n1475293263","loc":[-85.6296235,41.939922],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{}},"n185947850":{"id":"n185947850","loc":[-85.631594,41.942613],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:22Z","tags":{}},"n185952745":{"id":"n185952745","loc":[-85.630986,41.941786],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:25Z","tags":{}},"n185972907":{"id":"n185972907","loc":[-85.631797,41.9420055],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972911":{"id":"n185972911","loc":[-85.6309723,41.9411623],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972915":{"id":"n185972915","loc":[-85.6295971,41.939267],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n1475293223":{"id":"n1475293223","loc":[-85.6313962,41.9416114],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293231":{"id":"n1475293231","loc":[-85.6318779,41.9415447],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{}},"n1475293241":{"id":"n1475293241","loc":[-85.6304613,41.9405499],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293246":{"id":"n1475293246","loc":[-85.6297512,41.9395393],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{"railway":"level_crossing"}},"n1475293251":{"id":"n1475293251","loc":[-85.6316633,41.9415128],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n2139982404":{"id":"n2139982404","loc":[-85.6313283,41.9413748],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982407":{"id":"n2139982407","loc":[-85.6325545,41.9417787],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982408":{"id":"n2139982408","loc":[-85.6324499,41.9417693],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982409":{"id":"n2139982409","loc":[-85.6324753,41.9416444],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982410":{"id":"n2139982410","loc":[-85.6325814,41.9416538],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982411":{"id":"n2139982411","loc":[-85.6319572,41.9413515],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982412":{"id":"n2139982412","loc":[-85.6322925,41.941139],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982413":{"id":"n2139982413","loc":[-85.6323153,41.941153],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982414":{"id":"n2139982414","loc":[-85.6323019,41.9412617],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982415":{"id":"n2139982415","loc":[-85.6323703,41.9412667],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982416":{"id":"n2139982416","loc":[-85.6323555,41.941538],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982417":{"id":"n2139982417","loc":[-85.6321343,41.9416777],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982418":{"id":"n2139982418","loc":[-85.6319425,41.9416866],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982419":{"id":"n2139982419","loc":[-85.6320303,41.9416941],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982420":{"id":"n2139982420","loc":[-85.6321665,41.9415554],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982421":{"id":"n2139982421","loc":[-85.632412,41.9414164],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982422":{"id":"n2139982422","loc":[-85.6324801,41.9413421],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982423":{"id":"n2139982423","loc":[-85.6325023,41.9412585],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982424":{"id":"n2139982424","loc":[-85.6324532,41.9411607],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982425":{"id":"n2139982425","loc":[-85.6323502,41.941103],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982426":{"id":"n2139982426","loc":[-85.6322362,41.9411183],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982427":{"id":"n2139982427","loc":[-85.6318941,41.9413551],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982428":{"id":"n2139982428","loc":[-85.6318592,41.9414105],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982429":{"id":"n2139982429","loc":[-85.6320111,41.9415866],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982430":{"id":"n2139982430","loc":[-85.632446,41.9413792],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982431":{"id":"n2139982431","loc":[-85.6325112,41.941416],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982432":{"id":"n2139982432","loc":[-85.6325449,41.9416345],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982433":{"id":"n2139982433","loc":[-85.6326122,41.94164],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982434":{"id":"n2139982434","loc":[-85.6325954,41.9421966],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982435":{"id":"n2139982435","loc":[-85.6325655,41.9422411],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982436":{"id":"n2139982436","loc":[-85.632515,41.9422564],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982437":{"id":"n2139982437","loc":[-85.6324495,41.94223],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982438":{"id":"n2139982438","loc":[-85.6324009,41.9421743],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982439":{"id":"n2139982439","loc":[-85.6323915,41.9421145],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982440":{"id":"n2139982440","loc":[-85.6320287,41.9418585],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982441":{"id":"n2139982441","loc":[-85.6318285,41.9416387],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n1475293258":{"id":"n1475293258","loc":[-85.6318289,41.9415077],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n2168544754":{"id":"n2168544754","loc":[-85.6312814,41.9431198],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544755":{"id":"n2168544755","loc":[-85.6314212,41.9430646],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544756":{"id":"n2168544756","loc":[-85.6313387,41.942949],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544757":{"id":"n2168544757","loc":[-85.6311989,41.9430041],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544758":{"id":"n2168544758","loc":[-85.6311024,41.9429313],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544759":{"id":"n2168544759","loc":[-85.6310087,41.9428087],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544760":{"id":"n2168544760","loc":[-85.6313831,41.9426504],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544761":{"id":"n2168544761","loc":[-85.6314768,41.9427729],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544762":{"id":"n2168544762","loc":[-85.6306376,41.942809],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544763":{"id":"n2168544763","loc":[-85.6307378,41.9429427],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544764":{"id":"n2168544764","loc":[-85.630841,41.9428998],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544765":{"id":"n2168544765","loc":[-85.6307408,41.9427662],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544766":{"id":"n2168544766","loc":[-85.6305404,41.9426029],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544767":{"id":"n2168544767","loc":[-85.6304976,41.9426194],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544768":{"id":"n2168544768","loc":[-85.6305673,41.9427184],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544769":{"id":"n2168544769","loc":[-85.6306164,41.9426984],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544770":{"id":"n2168544770","loc":[-85.6306418,41.9427302],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544771":{"id":"n2168544771","loc":[-85.6306861,41.9427137],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544772":{"id":"n2168544772","loc":[-85.6307146,41.9427537],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544773":{"id":"n2168544773","loc":[-85.6308999,41.9426807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544774":{"id":"n2168544774","loc":[-85.6308429,41.9426053],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544775":{"id":"n2168544775","loc":[-85.6308999,41.9425806],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544776":{"id":"n2168544776","loc":[-85.6308318,41.9424875],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544777":{"id":"n2168544777","loc":[-85.6307732,41.9425087],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544778":{"id":"n2168544778","loc":[-85.6307178,41.9424357],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544779":{"id":"n2168544779","loc":[-85.630485,41.942524],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2189099387":{"id":"n2189099387","loc":[-85.631203,41.9393371],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099404":{"id":"n2189099404","loc":[-85.6301963,41.9391363],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099405":{"id":"n2189099405","loc":[-85.6304447,41.9391352],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099406":{"id":"n2189099406","loc":[-85.6304463,41.9393391],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099407":{"id":"n2189099407","loc":[-85.6308435,41.9393373],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099408":{"id":"n2189099408","loc":[-85.6308418,41.9391251],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099409":{"id":"n2189099409","loc":[-85.6310929,41.939124],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099410":{"id":"n2189099410","loc":[-85.6310946,41.9393376],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189112720":{"id":"n2189112720","loc":[-85.6314677,41.9412327],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112721":{"id":"n2189112721","loc":[-85.6313337,41.9411397],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112722":{"id":"n2189112722","loc":[-85.6320521,41.9405678],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112723":{"id":"n2189112723","loc":[-85.6321899,41.9406633],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112724":{"id":"n2189112724","loc":[-85.6313229,41.9408344],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112725":{"id":"n2189112725","loc":[-85.6311223,41.9410018],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112726":{"id":"n2189112726","loc":[-85.6313205,41.9411333],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112727":{"id":"n2189112727","loc":[-85.6315211,41.9409659],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112728":{"id":"n2189112728","loc":[-85.6311035,41.9402529],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112729":{"id":"n2189112729","loc":[-85.631226,41.9402107],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112730":{"id":"n2189112730","loc":[-85.6315966,41.9408051],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112731":{"id":"n2189112731","loc":[-85.6314741,41.9408473],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112732":{"id":"n2189112732","loc":[-85.6318114,41.940534],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112733":{"id":"n2189112733","loc":[-85.631588,41.94061],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112734":{"id":"n2189112734","loc":[-85.6314379,41.940366],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112735":{"id":"n2189112735","loc":[-85.6316613,41.94029],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112736":{"id":"n2189112736","loc":[-85.6306214,41.9400415],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112737":{"id":"n2189112737","loc":[-85.6304362,41.9397728],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112738":{"id":"n2189112738","loc":[-85.6305899,41.9397142],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112739":{"id":"n2189112739","loc":[-85.6307751,41.9399828],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112740":{"id":"n2189112740","loc":[-85.6304695,41.9401673],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112741":{"id":"n2189112741","loc":[-85.6301298,41.9396855],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112742":{"id":"n2189112742","loc":[-85.6303016,41.9396184],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112743":{"id":"n2189112743","loc":[-85.6306413,41.9401003],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112744":{"id":"n2189112744","loc":[-85.6309656,41.9406189],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112745":{"id":"n2189112745","loc":[-85.6308738,41.940493],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112746":{"id":"n2189112746","loc":[-85.6309333,41.940469],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112747":{"id":"n2189112747","loc":[-85.6307634,41.9402358],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112748":{"id":"n2189112748","loc":[-85.6308798,41.9401889],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112749":{"id":"n2189112749","loc":[-85.6311416,41.940548],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112750":{"id":"n2189112750","loc":[-85.6309577,41.9408708],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112751":{"id":"n2189112751","loc":[-85.630874,41.9407777],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112752":{"id":"n2189112752","loc":[-85.6310622,41.9406841],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112753":{"id":"n2189112753","loc":[-85.6311459,41.9407772],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112754":{"id":"n2189112754","loc":[-85.6320308,41.9405747],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112755":{"id":"n2189112755","loc":[-85.6317769,41.9401857],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112756":{"id":"n2189112756","loc":[-85.6313462,41.9401785],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112757":{"id":"n2189112757","loc":[-85.6313423,41.9401199],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112758":{"id":"n2189112758","loc":[-85.6318308,41.9401184],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112759":{"id":"n2189112759","loc":[-85.6321154,41.9405433],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112760":{"id":"n2189112760","loc":[-85.6310307,41.941683],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112761":{"id":"n2189112761","loc":[-85.6309808,41.9416078],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112762":{"id":"n2189112762","loc":[-85.6312094,41.9415156],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112763":{"id":"n2189112763","loc":[-85.6312636,41.9415865],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112764":{"id":"n2189112764","loc":[-85.6309384,41.94155],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112765":{"id":"n2189112765","loc":[-85.631156,41.9414619],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112766":{"id":"n2189112766","loc":[-85.6311968,41.94152],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112767":{"id":"n2189112767","loc":[-85.6308946,41.9414851],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112768":{"id":"n2189112768","loc":[-85.6308237,41.9413888],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112769":{"id":"n2189112769","loc":[-85.6309858,41.9413228],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112770":{"id":"n2189112770","loc":[-85.6310567,41.9414192],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112771":{"id":"n2189112771","loc":[-85.6307774,41.9413276],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112772":{"id":"n2189112772","loc":[-85.6309068,41.9412735],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112773":{"id":"n2189112773","loc":[-85.6309531,41.9413347],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112774":{"id":"n2189112774","loc":[-85.6307975,41.9412466],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112775":{"id":"n2189112775","loc":[-85.6307006,41.9411699],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112776":{"id":"n2189112776","loc":[-85.6308289,41.941113],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112777":{"id":"n2189112777","loc":[-85.6308997,41.9412012],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112778":{"id":"n2189112778","loc":[-85.630765,41.9412062],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112779":{"id":"n2189112779","loc":[-85.630739,41.9412177],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112780":{"id":"n2189112780","loc":[-85.6305822,41.9410391],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112781":{"id":"n2189112781","loc":[-85.6304117,41.9408177],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112782":{"id":"n2189112782","loc":[-85.6305086,41.9407769],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112783":{"id":"n2189112783","loc":[-85.6306779,41.9410044],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112784":{"id":"n2189112784","loc":[-85.6307734,41.9421663],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112785":{"id":"n2189112785","loc":[-85.630708,41.9420741],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112786":{"id":"n2189112786","loc":[-85.630863,41.9420133],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112787":{"id":"n2189112787","loc":[-85.6309285,41.9421055],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112788":{"id":"n2189112788","loc":[-85.6307014,41.9420263],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112789":{"id":"n2189112789","loc":[-85.6306648,41.941971],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112790":{"id":"n2189112790","loc":[-85.6307927,41.9419178],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112791":{"id":"n2189112791","loc":[-85.6308366,41.9419696],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112792":{"id":"n2189112792","loc":[-85.6307574,41.9418708],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112793":{"id":"n2189112793","loc":[-85.6306288,41.9419231],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112794":{"id":"n2189112794","loc":[-85.6306943,41.9417835],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112795":{"id":"n2189112795","loc":[-85.6305344,41.9418474],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112796":{"id":"n2189112796","loc":[-85.6305981,41.9419355],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189123410":{"id":"n2189123410","loc":[-85.6315476,41.9393801],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123412":{"id":"n2189123412","loc":[-85.6315247,41.9399188],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n2189123415":{"id":"n2189123415","loc":[-85.6316484,41.9400433],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n185945138":{"id":"n185945138","loc":[-85.627073,41.93319],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945142":{"id":"n185945142","loc":[-85.6296891,41.9331674],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185945401":{"id":"n185945401","loc":[-85.6269,41.930199],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:30Z","tags":{}},"n185945405":{"id":"n185945405","loc":[-85.6296598,41.9301676],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185956891":{"id":"n185956891","loc":[-85.6251617,41.9255049],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185959979":{"id":"n185959979","loc":[-85.626333,41.928347],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:03Z","tags":{}},"n185959983":{"id":"n185959983","loc":[-85.6296419,41.9283288],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185961192":{"id":"n185961192","loc":[-85.627053,41.9352031],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185961200":{"id":"n185961200","loc":[-85.6297088,41.9351902],"version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185963655":{"id":"n185963655","loc":[-85.6296112,41.9273948],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185963665":{"id":"n185963665","loc":[-85.626047,41.92737],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:01Z","tags":{}},"n185963688":{"id":"n185963688","loc":[-85.6296503,41.9292199],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963689":{"id":"n185963689","loc":[-85.6296694,41.931157],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963690":{"id":"n185963690","loc":[-85.6296791,41.9321485],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963691":{"id":"n185963691","loc":[-85.6296991,41.9341973],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185967638":{"id":"n185967638","loc":[-85.627089,41.9361884],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185972917":{"id":"n185972917","loc":[-85.6293759,41.9388605],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972919":{"id":"n185972919","loc":[-85.6290337,41.9380234],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185972921":{"id":"n185972921","loc":[-85.628424,41.936212],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:40Z","tags":{}},"n185972923":{"id":"n185972923","loc":[-85.628367,41.936029],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:40Z","tags":{}},"n185974511":{"id":"n185974511","loc":[-85.627064,41.932169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:19Z","tags":{}},"n185977728":{"id":"n185977728","loc":[-85.625605,41.925842],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977729":{"id":"n185977729","loc":[-85.625685,41.926163],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977731":{"id":"n185977731","loc":[-85.6257845,41.9264872],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977733":{"id":"n185977733","loc":[-85.62663,41.929251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977734":{"id":"n185977734","loc":[-85.627008,41.930642],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977736":{"id":"n185977736","loc":[-85.627029,41.930775],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977738":{"id":"n185977738","loc":[-85.627041,41.930946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977739":{"id":"n185977739","loc":[-85.6270379,41.9311746],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977742":{"id":"n185977742","loc":[-85.627055,41.934206],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977744":{"id":"n185977744","loc":[-85.627084,41.936804],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977746":{"id":"n185977746","loc":[-85.627104,41.936914],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977748":{"id":"n185977748","loc":[-85.627156,41.937026],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977750":{"id":"n185977750","loc":[-85.6272406,41.9371672],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977752":{"id":"n185977752","loc":[-85.627317,41.93723],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977753":{"id":"n185977753","loc":[-85.627422,41.937312],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977755":{"id":"n185977755","loc":[-85.627754,41.937504],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977757":{"id":"n185977757","loc":[-85.627883,41.937623],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977761":{"id":"n185977761","loc":[-85.627984,41.93773],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n1475283996":{"id":"n1475283996","loc":[-85.6270514,41.9317122],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{"railway":"level_crossing"}},"n1475284004":{"id":"n1475284004","loc":[-85.6278177,41.9342117],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{"railway":"level_crossing"}},"n1475284014":{"id":"n1475284014","loc":[-85.6251877,41.9255913],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475284017":{"id":"n1475284017","loc":[-85.6274992,41.9331816],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475284021":{"id":"n1475284021","loc":[-85.6297108,41.9353939],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{"railway":"level_crossing"}},"n1475284027":{"id":"n1475284027","loc":[-85.62811,41.935198],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:03Z","tags":{"railway":"level_crossing"}},"n1475284035":{"id":"n1475284035","loc":[-85.626888,41.9311757],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:03Z","tags":{"railway":"level_crossing"}},"n1475293245":{"id":"n1475293245","loc":[-85.6286047,41.9367881],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1875654302":{"id":"n1875654302","loc":[-85.6296367,41.927491],"version":"1","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:43Z","tags":{}},"n2189099388":{"id":"n2189099388","loc":[-85.6312007,41.9389988],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099389":{"id":"n2189099389","loc":[-85.6311003,41.9389992],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099390":{"id":"n2189099390","loc":[-85.6310988,41.9387847],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099391":{"id":"n2189099391","loc":[-85.6312165,41.9387843],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099392":{"id":"n2189099392","loc":[-85.6312152,41.9385857],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099393":{"id":"n2189099393","loc":[-85.6310877,41.9385862],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099394":{"id":"n2189099394","loc":[-85.6310858,41.9383161],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099395":{"id":"n2189099395","loc":[-85.6302002,41.9383196],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099396":{"id":"n2189099396","loc":[-85.6302011,41.9384472],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099397":{"id":"n2189099397","loc":[-85.6301018,41.9384476],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099398":{"id":"n2189099398","loc":[-85.6301025,41.9385419],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099399":{"id":"n2189099399","loc":[-85.6299275,41.9385427],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099400":{"id":"n2189099400","loc":[-85.62993,41.9388653],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099401":{"id":"n2189099401","loc":[-85.630107,41.9388645],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099402":{"id":"n2189099402","loc":[-85.6301079,41.9389908],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099403":{"id":"n2189099403","loc":[-85.6301951,41.9389904],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189123382":{"id":"n2189123382","loc":[-85.6336279,41.9354365],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123384":{"id":"n2189123384","loc":[-85.6328492,41.9355177],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123387":{"id":"n2189123387","loc":[-85.6323762,41.9357396],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123388":{"id":"n2189123388","loc":[-85.6315174,41.9358966],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123389":{"id":"n2189123389","loc":[-85.6304331,41.936124],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123390":{"id":"n2189123390","loc":[-85.6302075,41.9364271],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123391":{"id":"n2189123391","loc":[-85.6303458,41.9367953],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123392":{"id":"n2189123392","loc":[-85.6299601,41.9369739],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123393":{"id":"n2189123393","loc":[-85.6299164,41.9374882],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123394":{"id":"n2189123394","loc":[-85.6299455,41.9378022],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123395":{"id":"n2189123395","loc":[-85.6299771,41.9379053],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123396":{"id":"n2189123396","loc":[-85.6301597,41.9379091],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123397":{"id":"n2189123397","loc":[-85.6308042,41.9377913],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123398":{"id":"n2189123398","loc":[-85.6316885,41.9378082],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123399":{"id":"n2189123399","loc":[-85.6316848,41.9380079],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123400":{"id":"n2189123400","loc":[-85.6318449,41.9381161],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123401":{"id":"n2189123401","loc":[-85.6320705,41.9381811],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123402":{"id":"n2189123402","loc":[-85.6321433,41.9383706],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123404":{"id":"n2189123404","loc":[-85.632056,41.9384355],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123406":{"id":"n2189123406","loc":[-85.6317867,41.9384572],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123409":{"id":"n2189123409","loc":[-85.6316572,41.9387281],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123417":{"id":"n2189123417","loc":[-85.6315946,41.93775],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n2189123419":{"id":"n2189123419","loc":[-85.6302641,41.9378393],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"w208640158":{"id":"w208640158","version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"area":"yes","natural":"wetland"},"nodes":["n2189123379","n2189123382","n2189123384","n2189123387","n2189123388","n2189123389","n2189123390","n2189123391","n2189123392","n2189123393","n2189123394","n2189123395","n2189123396","n2189123419","n2189123397","n2189123417","n2189123398","n2189123399","n2189123400","n2189123401","n2189123402","n2189123404","n2189123406","n2189123409","n2189123410","n2189123412","n2189123415","n1819805722","n1819805861","n1819805887","n1819805760","n1819805641","n1819805632","n2189123379"]},"w134150787":{"id":"w134150787","version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no"},"nodes":["n185972905","n185972907","n1475293223","n185972911","n1475293241","n1475293246","n185972915","n185972917","n185972919","n1475293245","n185972921","n185972923","n1475284027","n1475284004","n1475284017","n1475283996","n1475284035","n1475284014","n185956891"]},"w208639443":{"id":"w208639443","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112720","n2189112721","n2189112722","n2189112723","n2189112720"]},"w17966462":{"id":"w17966462","version":"9","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977728","n185977729","n185977731","n185963665","n185959979","n185977733","n185945401","n185977734","n185977736","n185977738","n185977739","n1475283996","n185974511","n185945138","n185977742","n185961192","n185967638","n185977744","n185977746","n185977748","n185977750","n185977752","n185977753","n185977754","n185977755","n185977757","n185977761","n185958030","n1475293263","n185963698","n185952745","n185947850","n185977762"]},"w203985741":{"id":"w203985741","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{"area":"yes","leisure":"park","name":"Conservation Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2139982404","n2139982405","n2139982399","n2139982400","n1819805770","n2139982402","n2139982403","n2139982401","n1819805780","n1819805834","n2139982406","n2139982404"]},"w17963676":{"id":"w17963676","version":"3","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312976","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1475293258","n2139982428","n2139982427","n2139982426","n2139982425","n2139982424","n2139982423","n2139982422","n2139982430","n2139982421","n2139982420","n2139982429","n1475293231","n1475293258","n1475293251","n1475293223","n185952745"]},"w203985745":{"id":"w203985745","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"footway"},"nodes":["n2139982430","n2139982431","n2139982432","n2139982433","n2139982434","n2139982435","n2139982436","n2139982437","n2139982438","n2139982439","n2139982440","n2139982441","n1475293231"]},"w208639451":{"id":"w208639451","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112754","n2189112755","n2189112756","n2189112757","n2189112758","n2189112759","n2189112754"]},"w208639452":{"id":"w208639452","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112760","n2189112761","n2189112766","n2189112762","n2189112763","n2189112760"]},"w206805244":{"id":"w206805244","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544766","n2168544767","n2168544768","n2168544769","n2168544770","n2168544771","n2168544772","n2168544773","n2168544774","n2168544775","n2168544776","n2168544777","n2168544778","n2168544779","n2168544766"]},"w208639444":{"id":"w208639444","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112724","n2189112725","n2189112726","n2189112727","n2189112724"]},"w208639450":{"id":"w208639450","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112750","n2189112751","n2189112752","n2189112753","n2189112750"]},"w208639448":{"id":"w208639448","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112740","n2189112741","n2189112742","n2189112743","n2189112740"]},"w208637859":{"id":"w208637859","version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:06Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189099387","n2189099388","n2189099389","n2189099390","n2189099391","n2189099392","n2189099393","n2189099394","n2189099395","n2189099396","n2189099397","n2189099398","n2189099399","n2189099400","n2189099401","n2189099402","n2189099403","n2189099404","n2189099405","n2189099406","n2189099407","n2189099408","n2189099409","n2189099410","n2189099387"]},"w208639453":{"id":"w208639453","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112764","n2189112765","n2189112766","n2189112761","n2189112764"]},"w208639456":{"id":"w208639456","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112774","n2189112778","n2189112779","n2189112775","n2189112776","n2189112777","n2189112774"]},"w208639445":{"id":"w208639445","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112728","n2189112729","n2189112730","n2189112731","n2189112728"]},"w17967776":{"id":"w17967776","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:17Z","tags":{"highway":"residential","name":"5th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312495","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958032","n185988963"]},"w208639461":{"id":"w208639461","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112792","n2189112794","n2189112795","n2189112796","n2189112793","n2189112792"]},"w206805241":{"id":"w206805241","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544754","n2168544755","n2168544756","n2168544757","n2168544754"]},"w208639449":{"id":"w208639449","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112744","n2189112745","n2189112746","n2189112747","n2189112748","n2189112749","n2189112744"]},"w208639455":{"id":"w208639455","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112771","n2189112772","n2189112773","n2189112768","n2189112771"]},"w208639457":{"id":"w208639457","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112780","n2189112781","n2189112782","n2189112783","n2189112780"]},"w208639446":{"id":"w208639446","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112732","n2189112733","n2189112734","n2189112735","n2189112732"]},"w208639454":{"id":"w208639454","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112767","n2189112768","n2189112773","n2189112769","n2189112770","n2189112767"]},"w203985743":{"id":"w203985743","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139982411","n2139982412","n2139982413","n2139982414","n2139982415","n2139982416","n2139982417","n2139982419","n2139982418","n2139982411"]},"w17965023":{"id":"w17965023","version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:10Z","tags":{"highway":"residential","name":"4th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"4th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313205","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185963655","n1875654302","n185959983","n185963688","n185945405","n185963689","n185963690","n185945142","n185963691","n185961200","n1475284021","n1475293246","n1875654132","n1475293263"]},"w206805242":{"id":"w206805242","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544758","n2168544759","n2168544760","n2168544761","n2168544758"]},"w208639460":{"id":"w208639460","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112792","n2189112793","n2189112789","n2189112790","n2189112792"]},"w208639447":{"id":"w208639447","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112736","n2189112737","n2189112738","n2189112739","n2189112736"]},"w208639458":{"id":"w208639458","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112784","n2189112785","n2189112786","n2189112787","n2189112784"]},"w203985744":{"id":"w203985744","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"service"},"nodes":["n2139982425","n2139982400"]},"w208639459":{"id":"w208639459","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112788","n2189112789","n2189112790","n2189112791","n2189112788"]},"w203985742":{"id":"w203985742","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139982407","n2139982408","n2139982409","n2139982410","n2139982407"]},"w206805243":{"id":"w206805243","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544762","n2168544763","n2168544764","n2168544765","n2168544762"]},"n185959081":{"id":"n185959081","loc":[-85.628469,41.948674],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:41Z","tags":{}},"n185967427":{"id":"n185967427","loc":[-85.632054,41.951174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967424":{"id":"n185967424","loc":[-85.6320391,41.9499109],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185968101":{"id":"n185968101","loc":[-85.6308395,41.9511969],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185960792":{"id":"n185960792","loc":[-85.632074,41.953707],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185961389":{"id":"n185961389","loc":[-85.630935,41.959037],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185961391":{"id":"n185961391","loc":[-85.632169,41.959025],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185965395":{"id":"n185965395","loc":[-85.63216,41.959859],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"n185966953":{"id":"n185966953","loc":[-85.630894,41.957428],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185966955":{"id":"n185966955","loc":[-85.632122,41.957427],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185967430":{"id":"n185967430","loc":[-85.632077,41.952453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967432":{"id":"n185967432","loc":[-85.632095,41.954685],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967434":{"id":"n185967434","loc":[-85.632121,41.955914],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967436":{"id":"n185967436","loc":[-85.632128,41.9583],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967438":{"id":"n185967438","loc":[-85.632187,41.960681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967440":{"id":"n185967440","loc":[-85.632182,41.961493],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185968102":{"id":"n185968102","loc":[-85.630855,41.952452],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968104":{"id":"n185968104","loc":[-85.630887,41.953714],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968106":{"id":"n185968106","loc":[-85.630883,41.954692],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968108":{"id":"n185968108","loc":[-85.630904,41.955913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968110":{"id":"n185968110","loc":[-85.630904,41.958058],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968112":{"id":"n185968112","loc":[-85.630952,41.960667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968114":{"id":"n185968114","loc":[-85.630972,41.961495],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968116":{"id":"n185968116","loc":[-85.630962,41.961967],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185978969":{"id":"n185978969","loc":[-85.633214,41.948618],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:39Z","tags":{}},"n185985812":{"id":"n185985812","loc":[-85.633274,41.951159],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185986155":{"id":"n185986155","loc":[-85.633258,41.949893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:48Z","tags":{}},"n2208608826":{"id":"n2208608826","loc":[-85.6339222,41.9486225],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"w17964531":{"id":"w17964531","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:22Z","tags":{"highway":"residential","name":"Willow Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Willow","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313189","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n185959079","n185959081"]},"w17967386":{"id":"w17967386","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"East Armitage Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armitage","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185982195","n185968101","n185967427","n185985812","n185974583"]},"w17965502":{"id":"w17965502","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Elm Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Elm","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185968100","n185968101","n185968102","n185968104","n185968106","n185968108","n185966953","n185968110","n185961389","n185968112","n185968114","n185968116"]},"w17967844":{"id":"w17967844","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"East Bennett Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bennett","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185982193","n185967424","n185986155","n185978390"]},"w17966581":{"id":"w17966581","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"E Kelsey St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kelsey","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978967","n185978969","n2208608826","n185971578"]},"w17965402":{"id":"w17965402","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Walnut Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Walnut","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185967422","n185967424","n185967427","n185967430","n185960792","n185967432","n185967434","n185966955","n185967436","n185961391","n185965395","n185967438","n185967440"]},"n2199093506":{"id":"n2199093506","loc":[-85.6251879,41.9478322],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093505":{"id":"n2199093505","loc":[-85.6252076,41.9477749],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093504":{"id":"n2199093504","loc":[-85.6252289,41.9477602],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093503":{"id":"n2199093503","loc":[-85.625201,41.9477492],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093502":{"id":"n2199093502","loc":[-85.6251682,41.9477066],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093501":{"id":"n2199093501","loc":[-85.6251715,41.947609],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093500":{"id":"n2199093500","loc":[-85.6252125,41.9475639],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093499":{"id":"n2199093499","loc":[-85.6252896,41.9475602],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093498":{"id":"n2199093498","loc":[-85.6253027,41.9475334],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093497":{"id":"n2199093497","loc":[-85.6253437,41.9474822],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093496":{"id":"n2199093496","loc":[-85.6254421,41.9474675],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093495":{"id":"n2199093495","loc":[-85.6256503,41.9474944],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093494":{"id":"n2199093494","loc":[-85.6257257,41.9476127],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093493":{"id":"n2199093493","loc":[-85.6257028,41.9477285],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093492":{"id":"n2199093492","loc":[-85.6255339,41.9478102],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093491":{"id":"n2199093491","loc":[-85.6253912,41.9478224],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093490":{"id":"n2199093490","loc":[-85.6253043,41.947859],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093489":{"id":"n2199093489","loc":[-85.6252027,41.9478846],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093458":{"id":"n2199093458","loc":[-85.6246876,41.9486617],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093457":{"id":"n2199093457","loc":[-85.6243127,41.9486583],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093456":{"id":"n2199093456","loc":[-85.624306,41.9490569],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093455":{"id":"n2199093455","loc":[-85.624681,41.9490603],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093514":{"id":"n2199093514","loc":[-85.6236228,41.9496059],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093513":{"id":"n2199093513","loc":[-85.6236231,41.9496997],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093512":{"id":"n2199093512","loc":[-85.623357,41.9497002],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093511":{"id":"n2199093511","loc":[-85.6233567,41.9496136],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093508":{"id":"n2199093508","loc":[-85.6239735,41.9494287],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093507":{"id":"n2199093507","loc":[-85.6239741,41.9496052],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093488":{"id":"n2199093488","loc":[-85.624497,41.9512286],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093487":{"id":"n2199093487","loc":[-85.6244966,41.9511259],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093486":{"id":"n2199093486","loc":[-85.6243151,41.9511263],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093485":{"id":"n2199093485","loc":[-85.6243154,41.951229],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093484":{"id":"n2199093484","loc":[-85.6241205,41.9508665],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093483":{"id":"n2199093483","loc":[-85.624115,41.9505249],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093482":{"id":"n2199093482","loc":[-85.6243149,41.9505231],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093481":{"id":"n2199093481","loc":[-85.6243203,41.9508648],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093480":{"id":"n2199093480","loc":[-85.624393,41.9508668],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093479":{"id":"n2199093479","loc":[-85.6243904,41.9505956],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093478":{"id":"n2199093478","loc":[-85.6246727,41.950594],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093477":{"id":"n2199093477","loc":[-85.624675,41.9508203],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093476":{"id":"n2199093476","loc":[-85.6245097,41.9508212],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093475":{"id":"n2199093475","loc":[-85.6245101,41.9508662],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093474":{"id":"n2199093474","loc":[-85.6241008,41.9493459],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093473":{"id":"n2199093473","loc":[-85.6242442,41.9493459],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093472":{"id":"n2199093472","loc":[-85.6242442,41.9493681],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093471":{"id":"n2199093471","loc":[-85.6243397,41.9493681],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093470":{"id":"n2199093470","loc":[-85.6243417,41.9493511],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093469":{"id":"n2199093469","loc":[-85.6247251,41.9493485],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093468":{"id":"n2199093468","loc":[-85.6247548,41.9504949],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093467":{"id":"n2199093467","loc":[-85.6241214,41.9505017],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093466":{"id":"n2199093466","loc":[-85.6254398,41.950174],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093465":{"id":"n2199093465","loc":[-85.6254412,41.9499872],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093464":{"id":"n2199093464","loc":[-85.6255363,41.9499876],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093463":{"id":"n2199093463","loc":[-85.6255374,41.9498439],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093462":{"id":"n2199093462","loc":[-85.6255638,41.949844],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093461":{"id":"n2199093461","loc":[-85.6255652,41.9496672],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093460":{"id":"n2199093460","loc":[-85.6251823,41.9496656],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093459":{"id":"n2199093459","loc":[-85.6251785,41.9501729],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093510":{"id":"n2199093510","loc":[-85.6229922,41.9496143],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093509":{"id":"n2199093509","loc":[-85.6229915,41.9494306],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n185948903":{"id":"n185948903","loc":[-85.616514,41.947449],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185955120":{"id":"n185955120","loc":[-85.620103,41.951],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185955143":{"id":"n185955143","loc":[-85.619784,41.94746],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185960124":{"id":"n185960124","loc":[-85.615238,41.947468],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:07Z","tags":{}},"n185961362":{"id":"n185961362","loc":[-85.617437,41.947451],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961364":{"id":"n185961364","loc":[-85.61861,41.947456],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961367":{"id":"n185961367","loc":[-85.620088,41.947458],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185965105":{"id":"n185965105","loc":[-85.620087,41.94924],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185970220":{"id":"n185970220","loc":[-85.62156,41.948333],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:17Z","tags":{}},"n185974697":{"id":"n185974697","loc":[-85.6201059,41.950132],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n2138420778":{"id":"n2138420778","loc":[-85.616948,41.9474499],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"w17967535":{"id":"w17967535","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:52:19Z","tags":{"highway":"residential","name":"10th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"10th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313652:15313654","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185955120","n185986812","n185983141"]},"w209716130":{"id":"w209716130","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093485","n2199093486","n2199093487","n2199093488","n2199093485"]},"w17964788":{"id":"w17964788","version":"2","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:15Z","tags":{"highway":"residential","name":"6th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313681:15313682:15329115:15329116:15330465:15330466","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960124","n185948903","n2138420778","n185961362","n185961364","n185955143","n185961367","n185961369","n185961371"]},"w17965159":{"id":"w17965159","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:55Z","tags":{"highway":"residential","name":"8th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"8th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313660","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965105","n185965108","n185965110"]},"w209716125":{"id":"w209716125","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093459","n2199093460","n2199093461","n2199093462","n2199093463","n2199093464","n2199093465","n2199093466","n2199093459"]},"w17965699":{"id":"w17965699","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:03Z","tags":{"highway":"residential","name":"7th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"7th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313667:15314407","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970220","n185970222","n185970224"]},"w209716132":{"id":"w209716132","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093507","n2199093508","n2199093509","n2199093510","n2199093511","n2199093512","n2199093513","n2199093514","n2199093507"]},"w17966129":{"id":"w17966129","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:42:41Z","tags":{"highway":"residential","name":"9th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"9th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313656","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185974697","n185974699"]},"w209716127":{"id":"w209716127","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093475","n2199093476","n2199093477","n2199093478","n2199093479","n2199093480","n2199093475"]},"w209716131":{"id":"w209716131","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","natural":"water","water":"pond"},"nodes":["n2199093489","n2199093490","n2199093491","n2199093492","n2199093493","n2199093494","n2199093495","n2199093496","n2199093497","n2199093498","n2199093499","n2199093500","n2199093501","n2199093502","n2199093503","n2199093504","n2199093505","n2199093506","n2199093489"]},"w209716126":{"id":"w209716126","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093467","n2199093468","n2199093469","n2199093470","n2199093471","n2199093472","n2199093473","n2199093474","n2199093467"]},"w209716124":{"id":"w209716124","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093455","n2199093456","n2199093457","n2199093458","n2199093455"]},"w209716128":{"id":"w209716128","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093481","n2199093482","n2199093483","n2199093484","n2199093481"]},"n185949872":{"id":"n185949872","loc":[-85.643009,41.949264],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949875":{"id":"n185949875","loc":[-85.642598,41.94929],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949877":{"id":"n185949877","loc":[-85.642127,41.949382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949881":{"id":"n185949881","loc":[-85.64169,41.949936],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185988165":{"id":"n185988165","loc":[-85.642167,41.947657],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185988167":{"id":"n185988167","loc":[-85.642347,41.947662],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185988169":{"id":"n185988169","loc":[-85.642621,41.947659],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185965019":{"id":"n185965019","loc":[-85.6385084,41.951127],"version":"4","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1475293248":{"id":"n1475293248","loc":[-85.6386095,41.9512214],"version":"2","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:04Z","tags":{}},"n185962639":{"id":"n185962639","loc":[-85.649669,41.949161],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:30Z","tags":{}},"n185962810":{"id":"n185962810","loc":[-85.649907,41.949157],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:34Z","tags":{}},"n185964355":{"id":"n185964355","loc":[-85.637412,41.9511359],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185965021":{"id":"n185965021","loc":[-85.638661,41.952386],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965023":{"id":"n185965023","loc":[-85.638654,41.953665],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965025":{"id":"n185965025","loc":[-85.638694,41.954649],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965027":{"id":"n185965027","loc":[-85.638724,41.955913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185971415":{"id":"n185971415","loc":[-85.644466,41.949246],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185971417":{"id":"n185971417","loc":[-85.647021,41.949193],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185971420":{"id":"n185971420","loc":[-85.648476,41.949169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185979975":{"id":"n185979975","loc":[-85.644429,41.947633],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:24Z","tags":{}},"n185988171":{"id":"n185988171","loc":[-85.645377,41.947622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:34Z","tags":{}},"w17963211":{"id":"w17963211","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:23:06Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313193","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185949870","n185949872","n185949875","n185949877","n185949881"]},"w17965839":{"id":"w17965839","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:10Z","tags":{"highway":"residential","name":"Arnold St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Arnold","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15327930:15324550:15312304:15324551","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185949870","n185971415","n185971417","n185971420","n185962639","n185962810"]},"w17967618":{"id":"w17967618","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:53:22Z","tags":{"highway":"residential","name":"Pierson St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pierson","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313265:15312333:15324553","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185967777","n185988165","n185988167","n185988169","n185985824","n185979975","n185988171"]},"w17965149":{"id":"w17965149","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:56Z","tags":{"highway":"residential","name":"Oak St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Oak","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331522","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965019","n1475293248","n185965021","n185965023","n185965025","n185965027"]},"w17966118":{"id":"w17966118","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"West Armitage Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armitage","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185974583","n185974585","n185964355","n185965019"]},"n2208608800":{"id":"n2208608800","loc":[-85.6354294,41.9486201],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2199109806":{"id":"n2199109806","loc":[-85.6350474,41.9477884],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109804":{"id":"n2199109804","loc":[-85.6350476,41.9477962],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109802":{"id":"n2199109802","loc":[-85.635002,41.9477969],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109799":{"id":"n2199109799","loc":[-85.6350018,41.9477883],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109797":{"id":"n2199109797","loc":[-85.6349141,41.9477897],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109795":{"id":"n2199109795","loc":[-85.6349131,41.9477535],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109793":{"id":"n2199109793","loc":[-85.6349395,41.9477531],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109791":{"id":"n2199109791","loc":[-85.6349382,41.9477077],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109789":{"id":"n2199109789","loc":[-85.6351236,41.9477049],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109787":{"id":"n2199109787","loc":[-85.6351259,41.9477872],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109785":{"id":"n2199109785","loc":[-85.634972,41.9475992],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109783":{"id":"n2199109783","loc":[-85.6349206,41.9475997],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109770":{"id":"n2199109770","loc":[-85.6348499,41.9475461],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109768":{"id":"n2199109768","loc":[-85.6348499,41.9475084],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109765":{"id":"n2199109765","loc":[-85.6349241,41.9474569],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109763":{"id":"n2199109763","loc":[-85.634967,41.9474564],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109762":{"id":"n2199109762","loc":[-85.6350405,41.9475121],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109761":{"id":"n2199109761","loc":[-85.6350405,41.9475419],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109753":{"id":"n2199109753","loc":[-85.6342443,41.9478391],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109751":{"id":"n2199109751","loc":[-85.6342427,41.9477927],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109745":{"id":"n2199109745","loc":[-85.6342439,41.9476859],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109743":{"id":"n2199109743","loc":[-85.6342429,41.9476575],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109741":{"id":"n2199109741","loc":[-85.6344615,41.9476533],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109739":{"id":"n2199109739","loc":[-85.6344678,41.9478348],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109737":{"id":"n2199109737","loc":[-85.634416,41.9480059],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109735":{"id":"n2199109735","loc":[-85.6344145,41.9478983],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109733":{"id":"n2199109733","loc":[-85.6342749,41.9478993],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109731":{"id":"n2199109731","loc":[-85.6342753,41.9479272],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109729":{"id":"n2199109729","loc":[-85.6342498,41.9479274],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109727":{"id":"n2199109727","loc":[-85.6342505,41.9479762],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109725":{"id":"n2199109725","loc":[-85.6342743,41.947976],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109723":{"id":"n2199109723","loc":[-85.6342747,41.948007],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109721":{"id":"n2199109721","loc":[-85.6343415,41.9476355],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109719":{"id":"n2199109719","loc":[-85.6343391,41.9474973],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109717":{"id":"n2199109717","loc":[-85.6343133,41.9474798],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109715":{"id":"n2199109715","loc":[-85.6342874,41.9474737],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109709":{"id":"n2199109709","loc":[-85.6349804,41.94815],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109707":{"id":"n2199109707","loc":[-85.6348915,41.9481505],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109705":{"id":"n2199109705","loc":[-85.6348917,41.9481692],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109702":{"id":"n2199109702","loc":[-85.6348522,41.9481694],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109700":{"id":"n2199109700","loc":[-85.6348532,41.9482679],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109698":{"id":"n2199109698","loc":[-85.6348315,41.948268],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109696":{"id":"n2199109696","loc":[-85.6348318,41.9482955],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109694":{"id":"n2199109694","loc":[-85.6349653,41.9482946],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109692":{"id":"n2199109692","loc":[-85.6349656,41.9483211],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109690":{"id":"n2199109690","loc":[-85.634999,41.9483209],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109688":{"id":"n2199109688","loc":[-85.6349987,41.9482947],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109686":{"id":"n2199109686","loc":[-85.6351753,41.9482935],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109684":{"id":"n2199109684","loc":[-85.6351749,41.9482617],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109682":{"id":"n2199109682","loc":[-85.6351588,41.9482618],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109680":{"id":"n2199109680","loc":[-85.6351575,41.9481518],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109678":{"id":"n2199109678","loc":[-85.6350671,41.9481524],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109676":{"id":"n2199109676","loc":[-85.6350649,41.9479659],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109674":{"id":"n2199109674","loc":[-85.6349785,41.9479665],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109671":{"id":"n2199109671","loc":[-85.6343069,41.9483263],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109669":{"id":"n2199109669","loc":[-85.6343052,41.9482981],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109658":{"id":"n2199109658","loc":[-85.6343314,41.9480549],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109656":{"id":"n2199109656","loc":[-85.6343305,41.9480461],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109654":{"id":"n2199109654","loc":[-85.634435,41.9480468],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109652":{"id":"n2199109652","loc":[-85.6344342,41.9483746],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109650":{"id":"n2199109650","loc":[-85.6344629,41.9483727],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109648":{"id":"n2199109648","loc":[-85.6344637,41.9484561],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109645":{"id":"n2199109645","loc":[-85.63443,41.9484567],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109642":{"id":"n2199109642","loc":[-85.6344317,41.948505],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n185964352":{"id":"n185964352","loc":[-85.6373958,41.9489943],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185964351":{"id":"n185964351","loc":[-85.637113,41.9486],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n2208608825":{"id":"n2208608825","loc":[-85.6354483,41.9494241],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608823":{"id":"n2208608823","loc":[-85.6360418,41.949416],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608821":{"id":"n2208608821","loc":[-85.6360458,41.9495802],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608811":{"id":"n2208608811","loc":[-85.6357458,41.9495843],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608808":{"id":"n2208608808","loc":[-85.6357508,41.9497835],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608806":{"id":"n2208608806","loc":[-85.6354573,41.9497875],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608795":{"id":"n2208608795","loc":[-85.6354595,41.9498778],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2199109638":{"id":"n2199109638","loc":[-85.6349605,41.949749],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109636":{"id":"n2199109636","loc":[-85.6349605,41.9497639],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109634":{"id":"n2199109634","loc":[-85.6349061,41.94971],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109632":{"id":"n2199109632","loc":[-85.6349048,41.9496569],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109630":{"id":"n2199109630","loc":[-85.6348835,41.9496571],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109628":{"id":"n2199109628","loc":[-85.6348829,41.9497103],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109626":{"id":"n2199109626","loc":[-85.635227,41.9497738],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109624":{"id":"n2199109624","loc":[-85.6352184,41.9497787],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109622":{"id":"n2199109622","loc":[-85.6351181,41.9497806],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109620":{"id":"n2199109620","loc":[-85.6351181,41.9497456],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109618":{"id":"n2199109618","loc":[-85.6348842,41.9497651],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109616":{"id":"n2199109616","loc":[-85.6348827,41.9496238],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109615":{"id":"n2199109615","loc":[-85.6351268,41.9496206],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109614":{"id":"n2199109614","loc":[-85.6351261,41.9495891],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109613":{"id":"n2199109613","loc":[-85.6351957,41.9495881],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109612":{"id":"n2199109612","loc":[-85.6351924,41.9494515],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109611":{"id":"n2199109611","loc":[-85.6353997,41.9494488],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109610":{"id":"n2199109610","loc":[-85.6354074,41.9497715],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2189015681":{"id":"n2189015681","loc":[-85.6344229,41.9509639],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015677":{"id":"n2189015677","loc":[-85.634424,41.9507396],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2138493843":{"id":"n2138493843","loc":[-85.6343935,41.9502836],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493840":{"id":"n2138493840","loc":[-85.634398,41.9506264],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n354002838":{"id":"n354002838","loc":[-85.6345197,41.9510631],"version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{}},"n2114807590":{"id":"n2114807590","loc":[-85.634511,41.9499767],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n185964353":{"id":"n185964353","loc":[-85.6374092,41.9498755],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1819849180":{"id":"n1819849180","loc":[-85.6348236,41.94996],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849115":{"id":"n1819849115","loc":[-85.6354372,41.9499538],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819848921":{"id":"n1819848921","loc":[-85.6348439,41.951064],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848885":{"id":"n1819848885","loc":[-85.6354575,41.9510578],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n185984281":{"id":"n185984281","loc":[-85.638075,41.949872],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:55Z","tags":{}},"n2208608827":{"id":"n2208608827","loc":[-85.6339169,41.9473191],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2199109749":{"id":"n2199109749","loc":[-85.6342082,41.9477934],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109747":{"id":"n2199109747","loc":[-85.6342045,41.9476867],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109713":{"id":"n2199109713","loc":[-85.6342404,41.9474746],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109711":{"id":"n2199109711","loc":[-85.6342404,41.9476355],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109673":{"id":"n2199109673","loc":[-85.6340886,41.9483282],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109667":{"id":"n2199109667","loc":[-85.6342403,41.9482988],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109665":{"id":"n2199109665","loc":[-85.6342386,41.9482116],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109662":{"id":"n2199109662","loc":[-85.6340861,41.9482135],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109660":{"id":"n2199109660","loc":[-85.6340802,41.9480562],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109640":{"id":"n2199109640","loc":[-85.6340928,41.9485063],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n354031366":{"id":"n354031366","loc":[-85.6341667,41.9477778],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:25Z","tags":{"amenity":"place_of_worship","ele":"249","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417877","gnis:state_id":"26","name":"Faith Tabernacle Church","religion":"christian"}},"n2189015686":{"id":"n2189015686","loc":[-85.6337798,41.95099],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015684":{"id":"n2189015684","loc":[-85.6337794,41.9509674],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015673":{"id":"n2189015673","loc":[-85.6337501,41.9507457],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015669":{"id":"n2189015669","loc":[-85.6337501,41.9506974],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015665":{"id":"n2189015665","loc":[-85.6339034,41.9506959],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015662":{"id":"n2189015662","loc":[-85.6339015,41.950436],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015658":{"id":"n2189015658","loc":[-85.6334916,41.9504376],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015655":{"id":"n2189015655","loc":[-85.6334939,41.9507558],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015650":{"id":"n2189015650","loc":[-85.6334543,41.950756],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015649":{"id":"n2189015649","loc":[-85.633456,41.9509915],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2138493842":{"id":"n2138493842","loc":[-85.6339937,41.9502836],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493841":{"id":"n2138493841","loc":[-85.6339983,41.9506281],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2114807579":{"id":"n2114807579","loc":[-85.6333644,41.9510682],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807573":{"id":"n2114807573","loc":[-85.6333557,41.9499819],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n354031330":{"id":"n354031330","loc":[-85.6341667,41.9497222],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:24Z","tags":{"amenity":"place_of_worship","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417879","gnis:state_id":"26","name":"Trinity Episcopal Church","religion":"christian"}},"n185960794":{"id":"n185960794","loc":[-85.633307,41.9537],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185964357":{"id":"n185964357","loc":[-85.637432,41.952399],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964358":{"id":"n185964358","loc":[-85.637452,41.953665],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964359":{"id":"n185964359","loc":[-85.63746,41.954658],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964360":{"id":"n185964360","loc":[-85.637473,41.95592],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964361":{"id":"n185964361","loc":[-85.637468,41.956906],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964362":{"id":"n185964362","loc":[-85.637483,41.958313],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185966957":{"id":"n185966957","loc":[-85.633361,41.957422],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185975351":{"id":"n185975351","loc":[-85.63334,41.9559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:58Z","tags":{}},"n185978784":{"id":"n185978784","loc":[-85.633311,41.954679],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185986157":{"id":"n185986157","loc":[-85.633287,41.952426],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:48Z","tags":{}},"n185986158":{"id":"n185986158","loc":[-85.6333607,41.9582301],"version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:20Z","tags":{"highway":"turning_circle"}},"w17965182":{"id":"w17965182","version":"2","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:17Z","tags":{"highway":"residential","name":"W Prutzman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Prutzman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185965289","n2189153241","n185965291"]},"w208627205":{"id":"w208627205","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015649","n2189015650","n2189015655","n2189015658","n2189015662","n2189015665","n2189015669","n2189015673","n2189015677","n2189015681","n2189015684","n2189015686","n2189015649"]},"w209717042":{"id":"w209717042","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"amenity":"place_of_worship","area":"yes","building":"yes","denomination":"presbyterian","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417878","gnis:state_id":"26","name":"First Presbyterian Church","religion":"christian"},"nodes":["n2199109610","n2199109611","n2199109612","n2199109613","n2199109614","n2199109615","n2199109616","n2199109630","n2199109632","n2199109634","n2199109628","n2199109618","n2199109636","n2199109638","n2199109620","n2199109622","n2199109624","n2199109626","n2199109610"]},"w209717045":{"id":"w209717045","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109711","n2199109713","n2199109715","n2199109717","n2199109719","n2199109721","n2199109711"]},"w209717047":{"id":"w209717047","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109739","n2199109741","n2199109743","n2199109745","n2199109747","n2199109749","n2199109751","n2199109753","n2199109739"]},"w209717044":{"id":"w209717044","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109674","n2199109676","n2199109678","n2199109680","n2199109682","n2199109684","n2199109686","n2199109688","n2199109690","n2199109692","n2199109694","n2199109696","n2199109698","n2199109700","n2199109702","n2199109705","n2199109707","n2199109709","n2199109674"]},"w210822776":{"id":"w210822776","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"service","service":"alley","surface":"unpaved"},"nodes":["n2208608795","n2208608806","n2208608825","n2208608800","n2189153241"]},"w210822778":{"id":"w210822778","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"service","service":"alley"},"nodes":["n2208608826","n2208608827"]},"w209717050":{"id":"w209717050","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109787","n2199109789","n2199109791","n2199109793","n2199109795","n2199109797","n2199109799","n2199109802","n2199109804","n2199109806","n2199109787"]},"w17965097":{"id":"w17965097","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"Maple Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Maple","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185964351","n185964352","n185964353","n185964355","n185964357","n185964358","n185964359","n185964360","n185964361","n185964362"]},"w17965856":{"id":"w17965856","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"W Kelsey St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kelsey","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185971578","n2208608800","n185971580","n185964351"]},"w17967444":{"id":"w17967444","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"East","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966937","n185978969","n185986155","n185985812","n185986157","n185960794","n185978784","n185975351","n185966957","n185986158"]},"w17967764":{"id":"w17967764","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:14Z","tags":{"highway":"residential","name":"Rock River Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Rock River","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312338","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185984017","n185964351"]},"w170848329":{"id":"w170848329","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"ele":"251","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2418164","gnis:state_id":"26","leisure":"park","name":"LaFayette Park","source":"Bing"},"nodes":["n1819849180","n1819849115","n1819848885","n1819848921","n1819849180"]},"w17967208":{"id":"w17967208","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"West Bennett Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bennett","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185978390","n2208608795","n185984020","n185964353","n185984281"]},"w17965349":{"id":"w17965349","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"E Prutzman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Prutzman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185966937","n2208608827","n185965289"]},"w209717049":{"id":"w209717049","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109761","n2199109762","n2199109763","n2199109765","n2199109768","n2199109770","n2199109783","n2199109785","n2199109761"]},"w203841840":{"id":"w203841840","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"playground"},"nodes":["n2138493840","n2138493841","n2138493842","n2138493843","n2138493840"]},"w209717043":{"id":"w209717043","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"amenity":"place_of_worship","area":"yes","building":"church","denomination":"methodist","ele":"249","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417880","gnis:state_id":"26","name":"First United Methodist Church","religion":"christian"},"nodes":["n2199109640","n2199109642","n2199109645","n2199109648","n2199109650","n2199109652","n2199109654","n2199109656","n2199109658","n2199109660","n2199109662","n2199109665","n2199109667","n2199109669","n2199109671","n2199109673","n2199109640"]},"w201484341":{"id":"w201484341","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"amenity":"school","ele":"250","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:edited":"02/22/2008","gnis:feature_id":"1624612","gnis:state_id":"26","name":"Hoppin School"},"nodes":["n354002838","n2114807579","n2114807573","n2114807590","n354002838"]},"w209717046":{"id":"w209717046","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109723","n2199109725","n2199109727","n2199109729","n2199109731","n2199109733","n2199109735","n2199109737","n2199109723"]},"w210822777":{"id":"w210822777","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2208608806","n2208608808","n2208608811","n2208608821","n2208608823","n2208608825","n2208608806"]},"n185954965":{"id":"n185954965","loc":[-85.6191189,41.9441922],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185954968":{"id":"n185954968","loc":[-85.6194384,41.9442405],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954970":{"id":"n185954970","loc":[-85.6196543,41.9443252],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954972":{"id":"n185954972","loc":[-85.6197862,41.9444539],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n354002931":{"id":"n354002931","loc":[-85.6198991,41.9455269],"version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n354030853":{"id":"n354030853","loc":[-85.6219444,41.9455556],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:19Z","tags":{"amenity":"place_of_worship","ele":"246","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417869","gnis:state_id":"26","name":"Grant Chapel","religion":"christian"}},"n367815963":{"id":"n367815963","loc":[-85.6202778,41.9461111],"version":"1","changeset":"871579","user":"amillar","uid":"28145","visible":"true","timestamp":"2009-03-31T07:45:44Z","tags":{"addr:state":"MI","building":"yes","ele":"247","gnis:county_name":"St. Joseph","gnis:feature_id":"2418176","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"George Washington Carver Community Center","source":"USGS Geonames"}},"n185947331":{"id":"n185947331","loc":[-85.618779,41.943269],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947333":{"id":"n185947333","loc":[-85.618795,41.943511],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947336":{"id":"n185947336","loc":[-85.618711,41.94413],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947338":{"id":"n185947338","loc":[-85.618704,41.944189],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947339":{"id":"n185947339","loc":[-85.618597,41.944337],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947340":{"id":"n185947340","loc":[-85.618485,41.944528],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947343":{"id":"n185947343","loc":[-85.618442,41.944716],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947345":{"id":"n185947345","loc":[-85.618457,41.945107],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947347":{"id":"n185947347","loc":[-85.618296,41.945338],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947374":{"id":"n185947374","loc":[-85.616748,41.944453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947375":{"id":"n185947375","loc":[-85.616813,41.944646],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947376":{"id":"n185947376","loc":[-85.616859,41.945196],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947377":{"id":"n185947377","loc":[-85.616941,41.945352],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947406":{"id":"n185947406","loc":[-85.618184,41.944227],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947409":{"id":"n185947409","loc":[-85.617911,41.943875],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947410":{"id":"n185947410","loc":[-85.617579,41.943682],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947411":{"id":"n185947411","loc":[-85.61713,41.943589],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947412":{"id":"n185947412","loc":[-85.616549,41.943559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947414":{"id":"n185947414","loc":[-85.616482,41.943556],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947464":{"id":"n185947464","loc":[-85.616526,41.943788],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947466":{"id":"n185947466","loc":[-85.616504,41.944002],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185948863":{"id":"n185948863","loc":[-85.619017,41.943391],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185948865":{"id":"n185948865","loc":[-85.619059,41.943368],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185955022":{"id":"n185955022","loc":[-85.620088,41.945571],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185955025":{"id":"n185955025","loc":[-85.620051,41.945505],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185955028":{"id":"n185955028","loc":[-85.62001,41.94541],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185980371":{"id":"n185980371","loc":[-85.620982,41.944742],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:37Z","tags":{}},"n185980398":{"id":"n185980398","loc":[-85.621305,41.944782],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980401":{"id":"n185980401","loc":[-85.621174,41.944819],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980403":{"id":"n185980403","loc":[-85.621029,41.944871],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980405":{"id":"n185980405","loc":[-85.620741,41.945011],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980407":{"id":"n185980407","loc":[-85.620616,41.945085],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980409":{"id":"n185980409","loc":[-85.620506,41.945172],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980411":{"id":"n185980411","loc":[-85.620394,41.945273],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980413":{"id":"n185980413","loc":[-85.620316,41.94536],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185980415":{"id":"n185980415","loc":[-85.620257,41.945452],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185980417":{"id":"n185980417","loc":[-85.620212,41.945535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185985910":{"id":"n185985910","loc":[-85.620101,41.945811],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:41Z","tags":{}},"n185985912":{"id":"n185985912","loc":[-85.620081,41.945937],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n1475283972":{"id":"n1475283972","loc":[-85.6198991,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:45Z","tags":{}},"n1475283982":{"id":"n1475283982","loc":[-85.6195022,41.9433463],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284007":{"id":"n1475284007","loc":[-85.6193037,41.9433383],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284040":{"id":"n1475284040","loc":[-85.6197329,41.9434121],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284044":{"id":"n1475284044","loc":[-85.6198756,41.9435363],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284050":{"id":"n1475284050","loc":[-85.6199689,41.9432106],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n1475284053":{"id":"n1475284053","loc":[-85.6198943,41.9432921],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n185954974":{"id":"n185954974","loc":[-85.6198296,41.94473],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954977":{"id":"n185954977","loc":[-85.6200474,41.9447384],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n2196831365":{"id":"n2196831365","loc":[-85.6202259,41.9460883],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831366":{"id":"n2196831366","loc":[-85.6202245,41.9458642],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831367":{"id":"n2196831367","loc":[-85.6205184,41.9458631],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831368":{"id":"n2196831368","loc":[-85.6205189,41.9459437],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831369":{"id":"n2196831369","loc":[-85.6203879,41.9459441],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831370":{"id":"n2196831370","loc":[-85.6203888,41.9460878],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831371":{"id":"n2196831371","loc":[-85.6184046,41.9465663],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831372":{"id":"n2196831372","loc":[-85.6191563,41.9465618],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831373":{"id":"n2196831373","loc":[-85.6191536,41.946319],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831374":{"id":"n2196831374","loc":[-85.6187356,41.9463216],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831375":{"id":"n2196831375","loc":[-85.6187334,41.9461197],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831376":{"id":"n2196831376","loc":[-85.6193167,41.9461162],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831377":{"id":"n2196831377","loc":[-85.6193156,41.9460229],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831378":{"id":"n2196831378","loc":[-85.619622,41.946021],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831379":{"id":"n2196831379","loc":[-85.6196237,41.9461712],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831380":{"id":"n2196831380","loc":[-85.6197702,41.9461703],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831381":{"id":"n2196831381","loc":[-85.6197685,41.9460202],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831382":{"id":"n2196831382","loc":[-85.6197323,41.9460204],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831383":{"id":"n2196831383","loc":[-85.6197305,41.9458563],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831384":{"id":"n2196831384","loc":[-85.6196165,41.945857],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831385":{"id":"n2196831385","loc":[-85.6196156,41.9457764],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831386":{"id":"n2196831386","loc":[-85.6194472,41.9457775],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831387":{"id":"n2196831387","loc":[-85.6194151,41.9457777],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831388":{"id":"n2196831388","loc":[-85.6183779,41.9457883],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831389":{"id":"n2196831389","loc":[-85.6183842,41.9461317],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831390":{"id":"n2196831390","loc":[-85.6185026,41.9461304],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831391":{"id":"n2196831391","loc":[-85.6185061,41.9463194],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831392":{"id":"n2196831392","loc":[-85.6184001,41.9463205],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831393":{"id":"n2196831393","loc":[-85.6182482,41.9464163],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831394":{"id":"n2196831394","loc":[-85.6182467,41.9463193],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831395":{"id":"n2196831395","loc":[-85.6180389,41.946321],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831397":{"id":"n2196831397","loc":[-85.6180404,41.946418],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n185947303":{"id":"n185947303","loc":[-85.611074,41.943389],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947304":{"id":"n185947304","loc":[-85.611332,41.943267],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947305":{"id":"n185947305","loc":[-85.611635,41.943218],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947306":{"id":"n185947306","loc":[-85.612762,41.943311],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947308":{"id":"n185947308","loc":[-85.613027,41.943327],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947310":{"id":"n185947310","loc":[-85.615377,41.942996],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947312":{"id":"n185947312","loc":[-85.615701,41.943007],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947314":{"id":"n185947314","loc":[-85.61604,41.943067],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947315":{"id":"n185947315","loc":[-85.61626,41.943083],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947316":{"id":"n185947316","loc":[-85.616507,41.943048],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947319":{"id":"n185947319","loc":[-85.616702,41.94299],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947321":{"id":"n185947321","loc":[-85.617078,41.942918],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947322":{"id":"n185947322","loc":[-85.617366,41.942973],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947323":{"id":"n185947323","loc":[-85.617601,41.943033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947325":{"id":"n185947325","loc":[-85.617799,41.943027],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947327":{"id":"n185947327","loc":[-85.618264,41.942961],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947328":{"id":"n185947328","loc":[-85.618508,41.942972],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947329":{"id":"n185947329","loc":[-85.618707,41.943076],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947361":{"id":"n185947361","loc":[-85.615356,41.944922],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947363":{"id":"n185947363","loc":[-85.61536,41.944893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947365":{"id":"n185947365","loc":[-85.615406,41.944547],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947367":{"id":"n185947367","loc":[-85.61548,41.944351],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947369":{"id":"n185947369","loc":[-85.615805,41.94419],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947371":{"id":"n185947371","loc":[-85.616166,41.944156],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947373":{"id":"n185947373","loc":[-85.616411,41.944197],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947416":{"id":"n185947416","loc":[-85.616335,41.94343],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947417":{"id":"n185947417","loc":[-85.616069,41.943293],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947419":{"id":"n185947419","loc":[-85.615803,41.943249],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947420":{"id":"n185947420","loc":[-85.615524,41.943342],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947421":{"id":"n185947421","loc":[-85.615311,41.94353],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947422":{"id":"n185947422","loc":[-85.614338,41.943558],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947423":{"id":"n185947423","loc":[-85.61422,41.94369],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947425":{"id":"n185947425","loc":[-85.614221,41.944224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947427":{"id":"n185947427","loc":[-85.614198,41.944888],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947429":{"id":"n185947429","loc":[-85.614221,41.945439],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947468":{"id":"n185947468","loc":[-85.615908,41.944756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947470":{"id":"n185947470","loc":[-85.615871,41.944888],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947472":{"id":"n185947472","loc":[-85.615878,41.94507],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185955153":{"id":"n185955153","loc":[-85.620087,41.947701],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185960690":{"id":"n185960690","loc":[-85.620141,41.951901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185978817":{"id":"n185978817","loc":[-85.617193,41.954706],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185985916":{"id":"n185985916","loc":[-85.620088,41.94758],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985918":{"id":"n185985918","loc":[-85.620133,41.951538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985919":{"id":"n185985919","loc":[-85.62013,41.952104],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985920":{"id":"n185985920","loc":[-85.620104,41.952305],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985921":{"id":"n185985921","loc":[-85.620062,41.952499],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985922":{"id":"n185985922","loc":[-85.619993,41.952702],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985925":{"id":"n185985925","loc":[-85.619879,41.952986],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985927":{"id":"n185985927","loc":[-85.619689,41.95329],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985928":{"id":"n185985928","loc":[-85.619508,41.953521],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985929":{"id":"n185985929","loc":[-85.619286,41.953728],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985930":{"id":"n185985930","loc":[-85.618925,41.954007],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985931":{"id":"n185985931","loc":[-85.618638,41.954189],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985932":{"id":"n185985932","loc":[-85.61831,41.954358],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985934":{"id":"n185985934","loc":[-85.618015,41.954485],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:43Z","tags":{}},"n185985936":{"id":"n185985936","loc":[-85.617606,41.954611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:43Z","tags":{}},"n1475283975":{"id":"n1475283975","loc":[-85.6150935,41.9434118],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283979":{"id":"n1475283979","loc":[-85.6193367,41.9430252],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283989":{"id":"n1475283989","loc":[-85.6104771,41.9455269],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283990":{"id":"n1475283990","loc":[-85.6104771,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283994":{"id":"n1475283994","loc":[-85.6198042,41.9429763],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283998":{"id":"n1475283998","loc":[-85.6192101,41.9426716],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284000":{"id":"n1475284000","loc":[-85.6198622,41.942836],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284002":{"id":"n1475284002","loc":[-85.6163262,41.9427688],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284006":{"id":"n1475284006","loc":[-85.6179527,41.9429168],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284029":{"id":"n1475284029","loc":[-85.6197195,41.9427278],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284038":{"id":"n1475284038","loc":[-85.6194405,41.9427837],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284052":{"id":"n1475284052","loc":[-85.6153225,41.942841],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n1475284055":{"id":"n1475284055","loc":[-85.6129233,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n2139966627":{"id":"n2139966627","loc":[-85.61958,41.9427558],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"w17966773":{"id":"w17966773","version":"3","changeset":"2558583","user":"elliskev","uid":"163338","visible":"true","timestamp":"2009-09-21T16:12:43Z","tags":{"highway":"secondary","name":"E Michigan Ave","ref":"M 60","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313712","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980372","n185980398","n185980401","n185980403","n185980405","n185980407","n185980409","n185980411","n185980413","n185980415","n185980417","n185955019"]},"w17964043":{"id":"w17964043","version":"3","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:19Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326065:15326068","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955019","n185955022","n185955025","n185955028","n185954977","n185971477","n1475284050","n1475284000","n1475284029","n2139966627","n1475284038"]},"w17962834":{"id":"w17962834","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:15Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313719:15313728:15331618","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947316","n185947414","n185947464","n185947466","n185947373","n185947468","n185947470","n185947472","n185947474"]},"w209470310":{"id":"w209470310","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831393","n2196831394","n2196831395","n2196831397","n2196831393"]},"w17963058":{"id":"w17963058","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:05Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326058:15326066:15326067","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947333","n185948863","n185948865","n1475284007","n1475283982","n1475284040","n1475284044"]},"w17962823":{"id":"w17962823","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:14Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313714:15313704:15313720:15313721","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947359","n185947361","n185947363","n185947365","n185947367","n185947369","n185947371","n185947373","n185947374","n185947375","n185947376","n185947377","n185947378"]},"w17962821":{"id":"w17962821","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:15Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313713:15313734:15313731:15313735:15313737:15313723","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947303","n185947304","n185947305","n185947306","n185947308","n185947310","n185947312","n185947314","n185947315","n185947316","n185947319","n185947321","n185947322","n185947323","n185947325","n185947327","n185947328","n185947329","n185947331","n185947333","n185947336","n185947338","n185947339","n185947340","n185947343","n185947345","n185947347","n185947349"]},"w134150798":{"id":"w134150798","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:52Z","tags":{"amenity":"grave_yard","ele":"249","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624862","gnis:state_id":"26","name":"Riverside Cemetery"},"nodes":["n354002931","n1475283972","n1475284053","n1475283994","n1475283979","n1475283998","n1475284006","n1475284002","n1475284052","n1475283975","n1475284055","n1475283990","n1475283989","n354002931"]},"w17964040":{"id":"w17964040","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:02Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326063:15326064","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947336","n185954965","n185954968","n185954970","n185954972","n185954974","n185954977"]},"w209470308":{"id":"w209470308","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831365","n2196831366","n2196831367","n2196831368","n2196831369","n2196831370","n2196831365"]},"w17962828":{"id":"w17962828","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:14Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313715:15313706:15328746:15313727:15313729","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947340","n185947406","n185947409","n185947410","n185947411","n185947412","n185947414","n185947416","n185947417","n185947419","n185947420","n185947421","n185947422","n185947423","n185947425","n185947427","n185947429"]},"w209470309":{"id":"w209470309","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831371","n2196831372","n2196831373","n2196831374","n2196831375","n2196831376","n2196831377","n2196831378","n2196831379","n2196831380","n2196831381","n2196831382","n2196831383","n2196831384","n2196831385","n2196831386","n2196831387","n2196831388","n2196831389","n2196831390","n2196831391","n2196831392","n2196831371"]},"w17967415":{"id":"w17967415","version":"3","changeset":"2558583","user":"elliskev","uid":"163338","visible":"true","timestamp":"2009-09-21T16:12:41Z","tags":{"highway":"secondary","name":"Jefferson St","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Jefferson","tiger:name_base_1":"State Highway 60","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313637:15313662:15313657:15328403","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n185955019","n185985910","n185985912","n185985914","n185961367","n185985916","n185955153","n185965105","n185974697","n185955120","n185985918","n185960690","n185985919","n185985920","n185985921","n185985922","n185985925","n185985927","n185985928","n185985929","n185985930","n185985931","n185985932","n185985934","n185985936","n185978817"]},"w17966772":{"id":"w17966772","version":"4","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"unclassified","name":"E Michigan Ave","name_1":"State Highway 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313710:15313711:15314052:15312385:15312378","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185954977","n185980371","n185980372"]},"n185958500":{"id":"n185958500","loc":[-85.621591,41.941075],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:27Z","tags":{}},"n185963110":{"id":"n185963110","loc":[-85.6204416,41.9408882],"version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{}},"n2139966628":{"id":"n2139966628","loc":[-85.6196431,41.9426467],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"leisure":"fishing"}},"n2139966630":{"id":"n2139966630","loc":[-85.6199354,41.9429616],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2199127051":{"id":"n2199127051","loc":[-85.6170556,41.939696],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127052":{"id":"n2199127052","loc":[-85.6170536,41.9392909],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127053":{"id":"n2199127053","loc":[-85.6172067,41.9392905],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127054":{"id":"n2199127054","loc":[-85.6172061,41.9391853],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127055":{"id":"n2199127055","loc":[-85.6171481,41.9391854],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127060":{"id":"n2199127060","loc":[-85.6167389,41.9392896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127061":{"id":"n2199127061","loc":[-85.6168728,41.9392892],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127062":{"id":"n2199127062","loc":[-85.6168747,41.9396965],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127071":{"id":"n2199127071","loc":[-85.620196,41.9399446],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127072":{"id":"n2199127072","loc":[-85.620193,41.9397316],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127073":{"id":"n2199127073","loc":[-85.6200381,41.9397328],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127074":{"id":"n2199127074","loc":[-85.6200412,41.9399458],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127075":{"id":"n2199127075","loc":[-85.6203606,41.9399939],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127076":{"id":"n2199127076","loc":[-85.6205527,41.9399922],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127077":{"id":"n2199127077","loc":[-85.6205482,41.9397115],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127078":{"id":"n2199127078","loc":[-85.6204132,41.9397124],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127079":{"id":"n2199127079","loc":[-85.6204144,41.9396341],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127080":{"id":"n2199127080","loc":[-85.6205699,41.9396324],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127081":{"id":"n2199127081","loc":[-85.6205722,41.939498],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127082":{"id":"n2199127082","loc":[-85.6204064,41.9394997],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127083":{"id":"n2199127083","loc":[-85.6204087,41.939561],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127084":{"id":"n2199127084","loc":[-85.6203103,41.9395618],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127085":{"id":"n2199127085","loc":[-85.620308,41.9396069],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127086":{"id":"n2199127086","loc":[-85.6200347,41.9396086],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127087":{"id":"n2199127087","loc":[-85.6200382,41.9397141],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127088":{"id":"n2199127088","loc":[-85.6202257,41.9397149],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127089":{"id":"n2199127089","loc":[-85.6202269,41.9399182],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127090":{"id":"n2199127090","loc":[-85.6203595,41.9399199],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127091":{"id":"n2199127091","loc":[-85.6212335,41.939688],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127092":{"id":"n2199127092","loc":[-85.6212328,41.939595],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127093":{"id":"n2199127093","loc":[-85.6208807,41.9395966],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127094":{"id":"n2199127094","loc":[-85.6208815,41.9396896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127095":{"id":"n2199127095","loc":[-85.6208676,41.9396872],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127096":{"id":"n2199127096","loc":[-85.6208583,41.9393539],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127097":{"id":"n2199127097","loc":[-85.6207006,41.9393563],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127098":{"id":"n2199127098","loc":[-85.6207099,41.9396896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n185967054":{"id":"n185967054","loc":[-85.6173384,41.9356126],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967063":{"id":"n185967063","loc":[-85.617371,41.936243],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967065":{"id":"n185967065","loc":[-85.617337,41.936299],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967068":{"id":"n185967068","loc":[-85.617321,41.936373],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967070":{"id":"n185967070","loc":[-85.6173562,41.9366969],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967074":{"id":"n185967074","loc":[-85.6173635,41.9377414],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967075":{"id":"n185967075","loc":[-85.6173696,41.9381886],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:58Z","tags":{}},"n185967076":{"id":"n185967076","loc":[-85.617372,41.938535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:54Z","tags":{}},"n2199127056":{"id":"n2199127056","loc":[-85.617147,41.9389616],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127057":{"id":"n2199127057","loc":[-85.6172136,41.9389614],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127058":{"id":"n2199127058","loc":[-85.6172123,41.9386909],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127059":{"id":"n2199127059","loc":[-85.616736,41.9386922],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2203921041":{"id":"n2203921041","loc":[-85.6173018,41.9346369],"version":"1","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"w203983952":{"id":"w203983952","version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"highway":"service"},"nodes":["n2139966627","n1819800319"]},"w209718301":{"id":"w209718301","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127051","n2199127052","n2199127053","n2199127054","n2199127055","n2199127056","n2199127057","n2199127058","n2199127059","n2199127060","n2199127061","n2199127062","n2199127051"]},"w209718304":{"id":"w209718304","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127071","n2199127072","n2199127073","n2199127074","n2199127071"]},"w17964961":{"id":"w17964961","version":"2","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{"highway":"residential","name":"Whipple St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Whipple","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185963099","n185963110"]},"w17964489":{"id":"w17964489","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:29:56Z","tags":{"highway":"residential","name":"Jackson St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Jackson","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314430","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958498","n185958500"]},"w203983953":{"id":"w203983953","version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"area":"yes","leisure":"park","name":"Marina Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n1475283994","n1475283979","n1475283998","n2139966629","n2139966625","n1819800319","n2139966623","n2139966622","n2139966621","n2139966630","n1475283994"]},"w17965366":{"id":"w17965366","version":"2","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{"highway":"residential","name":"14th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"14th","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n2203921041","n185967054","n185967063","n185967065","n185967068","n185967070","n185967074","n185967075","n185967076","n185967077"]},"w209718306":{"id":"w209718306","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127091","n2199127092","n2199127093","n2199127094","n2199127091"]},"w209718307":{"id":"w209718307","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127095","n2199127096","n2199127097","n2199127098","n2199127095"]},"w209718305":{"id":"w209718305","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127075","n2199127076","n2199127077","n2199127078","n2199127079","n2199127080","n2199127081","n2199127082","n2199127083","n2199127084","n2199127085","n2199127086","n2199127087","n2199127088","n2199127089","n2199127090","n2199127075"]},"n185960199":{"id":"n185960199","loc":[-85.62965,41.95469],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:08Z","tags":{}},"n185980737":{"id":"n185980737","loc":[-85.629083,41.953725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:48Z","tags":{}},"n2114807561":{"id":"n2114807561","loc":[-85.6297681,41.9524688],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807597":{"id":"n2114807597","loc":[-85.6296517,41.952563],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n185960197":{"id":"n185960197","loc":[-85.629676,41.9537314],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978791":{"id":"n185978791","loc":[-85.6244542,41.9547066],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"w17967573":{"id":"w17967573","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"highway":"residential","name":"E Wheeler St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wheeler","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960195","n2114807561","n185968102","n185967430","n185986157","n185978392"]},"w17966553":{"id":"w17966553","version":"5","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Hoffman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971631","n185978784","n185967432","n185968106","n185960199","n185978787","n185978790","n185978791"]},"w17966787":{"id":"w17966787","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"East Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185980735","n185980737","n185960197","n185968104","n185960792"]},"w17964723":{"id":"w17964723","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960792","n185960794","n185960796"]},"w17964654":{"id":"w17964654","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Pine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pine","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960195","n2114807597","n185960197","n185960199"]},"n1819848862":{"id":"n1819848862","loc":[-85.6346087,41.9545845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848935":{"id":"n1819848935","loc":[-85.6345948,41.9537717],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848973":{"id":"n1819848973","loc":[-85.6334247,41.9537827],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848997":{"id":"n1819848997","loc":[-85.6334386,41.9545956],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n2189015861":{"id":"n2189015861","loc":[-85.6375906,41.954836],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015865":{"id":"n2189015865","loc":[-85.6383307,41.9548291],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015867":{"id":"n2189015867","loc":[-85.6383337,41.9550072],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015868":{"id":"n2189015868","loc":[-85.6380986,41.9550094],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015869":{"id":"n2189015869","loc":[-85.6381005,41.9551226],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2199109808":{"id":"n2199109808","loc":[-85.6372702,41.9522894],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109810":{"id":"n2199109810","loc":[-85.6372677,41.9521583],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109812":{"id":"n2199109812","loc":[-85.6369505,41.9521617],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109814":{"id":"n2199109814","loc":[-85.636953,41.9522927],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n185952156":{"id":"n185952156","loc":[-85.640983,41.9546557],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185953423":{"id":"n185953423","loc":[-85.641871,41.954652],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185971637":{"id":"n185971637","loc":[-85.641583,41.95465],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185971639":{"id":"n185971639","loc":[-85.6421344,41.9546444],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971642":{"id":"n185971642","loc":[-85.6428264,41.9545612],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971648":{"id":"n185971648","loc":[-85.6436023,41.9544262],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185975066":{"id":"n185975066","loc":[-85.640532,41.953638],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185975067":{"id":"n185975067","loc":[-85.64079,41.953638],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185982166":{"id":"n185982166","loc":[-85.6399012,41.9523817],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n2189015858":{"id":"n2189015858","loc":[-85.6376104,41.9560138],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015870":{"id":"n2189015870","loc":[-85.6386794,41.9551172],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015871":{"id":"n2189015871","loc":[-85.6386817,41.955256],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015873":{"id":"n2189015873","loc":[-85.6385437,41.9552573],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015876":{"id":"n2189015876","loc":[-85.638555,41.9559278],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015879":{"id":"n2189015879","loc":[-85.6384954,41.9559283],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015882":{"id":"n2189015882","loc":[-85.6384965,41.9559935],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015885":{"id":"n2189015885","loc":[-85.6383533,41.9559949],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015888":{"id":"n2189015888","loc":[-85.638351,41.9558607],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015891":{"id":"n2189015891","loc":[-85.6382178,41.9558619],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015894":{"id":"n2189015894","loc":[-85.6382203,41.956008],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"w208627223":{"id":"w208627223","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015858","n2189015861","n2189015865","n2189015867","n2189015868","n2189015869","n2189015870","n2189015871","n2189015873","n2189015876","n2189015879","n2189015882","n2189015885","n2189015888","n2189015891","n2189015894","n2189015858"]},"w170848328":{"id":"w170848328","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"ele":"250","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624408","gnis:state_id":"26","leisure":"park","name":"Bowman Park","source":"Bing"},"nodes":["n1819848935","n1819848973","n1819848997","n1819848862","n1819848935"]},"w17965866":{"id":"w17965866","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Hoffman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185971631","n185971632","n185964359","n185965025","n1475293264","n185952156","n185971637","n185953423","n185971639","n185971642","n185971648"]},"w209717051":{"id":"w209717051","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"amenity":"place_of_worship","area":"yes","building":"yes","denomination":"baptist","ele":"251","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417886","gnis:state_id":"26","name":"Calvary Missionary Baptist Church","religion":"christian"},"nodes":["n2199109808","n2199109810","n2199109812","n2199109814","n2199109808"]},"w17966172":{"id":"w17966172","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960796","n185975064","n185964358","n185965023","n1475293222","n185975066","n185975067"]},"w17966975":{"id":"w17966975","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:06Z","tags":{"highway":"residential","name":"W Wheeler St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wheeler","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312250:15312254","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978392","n185982163","n185964357","n185965021","n1475293261","n185982166"]},"n185960684":{"id":"n185960684","loc":[-85.622687,41.951885],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185960686":{"id":"n185960686","loc":[-85.622492,41.951901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185978795":{"id":"n185978795","loc":[-85.6240991,41.954708],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978803":{"id":"n185978803","loc":[-85.623348,41.954547],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978806":{"id":"n185978806","loc":[-85.623123,41.954502],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978808":{"id":"n185978808","loc":[-85.622923,41.954469],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978810":{"id":"n185978810","loc":[-85.622787,41.954457],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978811":{"id":"n185978811","loc":[-85.622612,41.954458],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978813":{"id":"n185978813","loc":[-85.622368,41.954472],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n1819790545":{"id":"n1819790545","loc":[-85.6240295,41.9548949],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790621":{"id":"n1819790621","loc":[-85.6235789,41.954855],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790664":{"id":"n1819790664","loc":[-85.6238363,41.9549507],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790683":{"id":"n1819790683","loc":[-85.6224727,41.9545921],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790730":{"id":"n1819790730","loc":[-85.6227527,41.9545795],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790740":{"id":"n1819790740","loc":[-85.6240402,41.9550784],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790831":{"id":"n1819790831","loc":[-85.624126,41.9549986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790861":{"id":"n1819790861","loc":[-85.6231712,41.9546872],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790887":{"id":"n1819790887","loc":[-85.6242762,41.955206],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n2168544739":{"id":"n2168544739","loc":[-85.6249102,41.952801],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544740":{"id":"n2168544740","loc":[-85.6251859,41.9527564],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544741":{"id":"n2168544741","loc":[-85.6255515,41.9527921],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544742":{"id":"n2168544742","loc":[-85.626001,41.9529481],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544743":{"id":"n2168544743","loc":[-85.6265284,41.9529838],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544744":{"id":"n2168544744","loc":[-85.626942,41.9528857],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544745":{"id":"n2168544745","loc":[-85.6270918,41.9526851],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544746":{"id":"n2168544746","loc":[-85.6272117,41.95244],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544747":{"id":"n2168544747","loc":[-85.6271578,41.952226],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544748":{"id":"n2168544748","loc":[-85.6270019,41.9519719],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544749":{"id":"n2168544749","loc":[-85.6268221,41.9518382],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544750":{"id":"n2168544750","loc":[-85.6265284,41.951807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544751":{"id":"n2168544751","loc":[-85.6256534,41.9518516],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544752":{"id":"n2168544752","loc":[-85.6253477,41.9518338],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544753":{"id":"n2168544753","loc":[-85.6251139,41.9517669],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n185955747":{"id":"n185955747","loc":[-85.620674,41.954709],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185960688":{"id":"n185960688","loc":[-85.621032,41.951913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185972054":{"id":"n185972054","loc":[-85.6186728,41.9547335],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185978814":{"id":"n185978814","loc":[-85.6201708,41.9547403],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n1819790532":{"id":"n1819790532","loc":[-85.6244908,41.9555731],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790536":{"id":"n1819790536","loc":[-85.6217925,41.9583135],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790538":{"id":"n1819790538","loc":[-85.6233954,41.9600014],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790539":{"id":"n1819790539","loc":[-85.6204611,41.9562117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790546":{"id":"n1819790546","loc":[-85.6210898,41.9567657],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790548":{"id":"n1819790548","loc":[-85.6202465,41.9562237],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790550":{"id":"n1819790550","loc":[-85.6250165,41.9560677],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790551":{"id":"n1819790551","loc":[-85.6227946,41.9597023],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790553":{"id":"n1819790553","loc":[-85.6215726,41.9584571],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790556":{"id":"n1819790556","loc":[-85.6196306,41.9573002],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790557":{"id":"n1819790557","loc":[-85.6209503,41.9563109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790558":{"id":"n1819790558","loc":[-85.6196939,41.9574085],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790561":{"id":"n1819790561","loc":[-85.621079,41.957751],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790562":{"id":"n1819790562","loc":[-85.6224255,41.9611417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790565":{"id":"n1819790565","loc":[-85.6232506,41.9604841],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790566":{"id":"n1819790566","loc":[-85.6190835,41.9562909],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790567":{"id":"n1819790567","loc":[-85.622227,41.9593028],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790569":{"id":"n1819790569","loc":[-85.620976,41.9591039],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790571":{"id":"n1819790571","loc":[-85.6212078,41.9565303],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790572":{"id":"n1819790572","loc":[-85.6235306,41.9595102],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790581":{"id":"n1819790581","loc":[-85.6235563,41.9579351],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790584":{"id":"n1819790584","loc":[-85.6230371,41.9574598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790586":{"id":"n1819790586","loc":[-85.6211748,41.9564272],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790588":{"id":"n1819790588","loc":[-85.6226508,41.9601086],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790591":{"id":"n1819790591","loc":[-85.6218032,41.9607468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790593":{"id":"n1819790593","loc":[-85.6207915,41.9618735],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790596":{"id":"n1819790596","loc":[-85.6252955,41.9567858],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790598":{"id":"n1819790598","loc":[-85.6196618,41.9568939],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790600":{"id":"n1819790600","loc":[-85.6224416,41.9587084],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790602":{"id":"n1819790602","loc":[-85.6217442,41.9558641],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790603":{"id":"n1819790603","loc":[-85.6213355,41.9592116],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790604":{"id":"n1819790604","loc":[-85.622801,41.9573042],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790608":{"id":"n1819790608","loc":[-85.6199729,41.9574325],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790610":{"id":"n1819790610","loc":[-85.6195555,41.9557165],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790611":{"id":"n1819790611","loc":[-85.622978,41.9586007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790613":{"id":"n1819790613","loc":[-85.6253963,41.9562636],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790614":{"id":"n1819790614","loc":[-85.6235252,41.9580342],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790616":{"id":"n1819790616","loc":[-85.6232988,41.9596305],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790617":{"id":"n1819790617","loc":[-85.6226776,41.9598732],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790619":{"id":"n1819790619","loc":[-85.625553,41.9561794],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790620":{"id":"n1819790620","loc":[-85.6235574,41.959231],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790624":{"id":"n1819790624","loc":[-85.6228429,41.9573726],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790626":{"id":"n1819790626","loc":[-85.6193785,41.9556766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790628":{"id":"n1819790628","loc":[-85.620092,41.9554253],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790630":{"id":"n1819790630","loc":[-85.6226658,41.9604402],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790638":{"id":"n1819790638","loc":[-85.6219964,41.9602561],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790640":{"id":"n1819790640","loc":[-85.6232731,41.9599969],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790643":{"id":"n1819790643","loc":[-85.6247698,41.9568895],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790650":{"id":"n1819790650","loc":[-85.6216412,41.9550149],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790652":{"id":"n1819790652","loc":[-85.6224952,41.9603918],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790656":{"id":"n1819790656","loc":[-85.61918,41.9555649],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790661":{"id":"n1819790661","loc":[-85.6200169,41.955505],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790662":{"id":"n1819790662","loc":[-85.6217389,41.9563149],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790666":{"id":"n1819790666","loc":[-85.6229566,41.9598373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790667":{"id":"n1819790667","loc":[-85.6209117,41.9609189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790669":{"id":"n1819790669","loc":[-85.6252311,41.9562353],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790670":{"id":"n1819790670","loc":[-85.6209758,41.961868],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790672":{"id":"n1819790672","loc":[-85.6209557,41.9589078],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790673":{"id":"n1819790673","loc":[-85.6190352,41.9561393],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790675":{"id":"n1819790675","loc":[-85.6236432,41.9586685],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790676":{"id":"n1819790676","loc":[-85.6194901,41.9565389],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790678":{"id":"n1819790678","loc":[-85.6219266,41.9582417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790680":{"id":"n1819790680","loc":[-85.6208258,41.9557211],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790681":{"id":"n1819790681","loc":[-85.6212024,41.9613212],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790682":{"id":"n1819790682","loc":[-85.624877,41.9559401],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790684":{"id":"n1819790684","loc":[-85.6206499,41.9583693],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790699":{"id":"n1819790699","loc":[-85.6215243,41.956279],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790701":{"id":"n1819790701","loc":[-85.6246625,41.9559321],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790703":{"id":"n1819790703","loc":[-85.6230478,41.9585089],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790708":{"id":"n1819790708","loc":[-85.6211102,41.9575402],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790710":{"id":"n1819790710","loc":[-85.6215082,41.9548468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790711":{"id":"n1819790711","loc":[-85.6206552,41.9586007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790713":{"id":"n1819790713","loc":[-85.6215404,41.9549705],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790715":{"id":"n1819790715","loc":[-85.6216906,41.955521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790717":{"id":"n1819790717","loc":[-85.6215404,41.9547391],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790722":{"id":"n1819790722","loc":[-85.6219964,41.9599131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790723":{"id":"n1819790723","loc":[-85.622286,41.9606989],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790725":{"id":"n1819790725","loc":[-85.6228439,41.9572005],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790727":{"id":"n1819790727","loc":[-85.6202518,41.9554458],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790728":{"id":"n1819790728","loc":[-85.623434,41.9575276],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790729":{"id":"n1819790729","loc":[-85.6234287,41.9568576],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790732":{"id":"n1819790732","loc":[-85.6229566,41.9571369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790733":{"id":"n1819790733","loc":[-85.6225543,41.9590275],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790734":{"id":"n1819790734","loc":[-85.6232892,41.9583135],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790736":{"id":"n1819790736","loc":[-85.622977,41.9608551],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790737":{"id":"n1819790737","loc":[-85.624008,41.9569533],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790741":{"id":"n1819790741","loc":[-85.6212775,41.9608545],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790742":{"id":"n1819790742","loc":[-85.6231282,41.9569932],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790743":{"id":"n1819790743","loc":[-85.6224523,41.9591831],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790744":{"id":"n1819790744","loc":[-85.6210951,41.9610819],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790745":{"id":"n1819790745","loc":[-85.6220114,41.960544],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790755":{"id":"n1819790755","loc":[-85.6216369,41.9553854],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790757":{"id":"n1819790757","loc":[-85.6209986,41.9592709],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790758":{"id":"n1819790758","loc":[-85.6200437,41.9563468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790764":{"id":"n1819790764","loc":[-85.6219363,41.9596823],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790765":{"id":"n1819790765","loc":[-85.6237612,41.9568496],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790769":{"id":"n1819790769","loc":[-85.6212389,41.9593433],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790771":{"id":"n1819790771","loc":[-85.6210726,41.9560123],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790772":{"id":"n1819790772","loc":[-85.6212711,41.9561838],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790776":{"id":"n1819790776","loc":[-85.6234437,41.9577795],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790777":{"id":"n1819790777","loc":[-85.6212502,41.9618599],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790783":{"id":"n1819790783","loc":[-85.6216895,41.9610585],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790784":{"id":"n1819790784","loc":[-85.6200115,41.9556367],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790785":{"id":"n1819790785","loc":[-85.6210576,41.9573002],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790786":{"id":"n1819790786","loc":[-85.621138,41.9576632],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790788":{"id":"n1819790788","loc":[-85.6207733,41.9578946],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790789":{"id":"n1819790789","loc":[-85.6200705,41.9571566],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790790":{"id":"n1819790790","loc":[-85.6245337,41.9558443],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790792":{"id":"n1819790792","loc":[-85.621932,41.9608066],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790793":{"id":"n1819790793","loc":[-85.6233578,41.9581385],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790794":{"id":"n1819790794","loc":[-85.6204557,41.9555136],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790797":{"id":"n1819790797","loc":[-85.6235038,41.9576074],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790800":{"id":"n1819790800","loc":[-85.6214438,41.9607508],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790801":{"id":"n1819790801","loc":[-85.623492,41.9602129],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790802":{"id":"n1819790802","loc":[-85.6216691,41.9546553],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790803":{"id":"n1819790803","loc":[-85.6231057,41.9586851],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790804":{"id":"n1819790804","loc":[-85.6209224,41.9578673],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790813":{"id":"n1819790813","loc":[-85.620092,41.9572962],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790814":{"id":"n1819790814","loc":[-85.6216691,41.9552218],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790816":{"id":"n1819790816","loc":[-85.6216144,41.9609668],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790818":{"id":"n1819790818","loc":[-85.6216906,41.9557324],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790820":{"id":"n1819790820","loc":[-85.6192069,41.9564186],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790823":{"id":"n1819790823","loc":[-85.6211155,41.9566027],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790825":{"id":"n1819790825","loc":[-85.6233106,41.9569294],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790839":{"id":"n1819790839","loc":[-85.625671,41.9564986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790842":{"id":"n1819790842","loc":[-85.6235252,41.9567379],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790844":{"id":"n1819790844","loc":[-85.6253813,41.9566342],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790847":{"id":"n1819790847","loc":[-85.6200963,41.9567702],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790849":{"id":"n1819790849","loc":[-85.6238031,41.9587449],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790851":{"id":"n1819790851","loc":[-85.6234984,41.9584571],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790856":{"id":"n1819790856","loc":[-85.6242226,41.9570092],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790865":{"id":"n1819790865","loc":[-85.6200265,41.9569458],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790869":{"id":"n1819790869","loc":[-85.6230049,41.9601245],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790871":{"id":"n1819790871","loc":[-85.6190727,41.9558322],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790873":{"id":"n1819790873","loc":[-85.6217442,41.9550104],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790875":{"id":"n1819790875","loc":[-85.6208044,41.9587808],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790879":{"id":"n1819790879","loc":[-85.6198444,41.9574484],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790883":{"id":"n1819790883","loc":[-85.623713,41.9588719],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790885":{"id":"n1819790885","loc":[-85.6223289,41.9605075],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790889":{"id":"n1819790889","loc":[-85.6208044,41.9562437],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790893":{"id":"n1819790893","loc":[-85.6218183,41.9559684],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790906":{"id":"n1819790906","loc":[-85.6214052,41.958697],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790913":{"id":"n1819790913","loc":[-85.6209981,41.9609957],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790917":{"id":"n1819790917","loc":[-85.6216208,41.9604436],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790919":{"id":"n1819790919","loc":[-85.6209406,41.9616373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790920":{"id":"n1819790920","loc":[-85.6221948,41.9583334],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790922":{"id":"n1819790922","loc":[-85.6216681,41.9615292],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790924":{"id":"n1819790924","loc":[-85.6210147,41.9570489],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790929":{"id":"n1819790929","loc":[-85.6193678,41.955521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"w17964707":{"id":"w17964707","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:31:34Z","tags":{"highway":"residential","name":"11th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"11th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314405","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960682","n185960684","n185960686","n185960688","n185960690"]},"w201484345":{"id":"w201484345","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"bridge":"yes","highway":"residential","name":"E Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978791","n185978795"]},"w201484348":{"id":"w201484348","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"highway":"residential","name":"E Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978795","n185978800","n185978803","n185978806","n185978808","n185978810","n185978811","n185978813","n185955747","n185978814","n185972054","n185978817"]},"w170843845":{"id":"w170843845","version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:23Z","tags":{"ele":"244","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624607","gnis:state_id":"26","landuse":"reservoir","name":"Hoffman Pond","natural":"water","source":"Bing"},"nodes":["n1819790732","n1819790742","n1819790825","n1819790729","n1819790842","n1819790765","n1819790737","n1819790856","n1819790643","n1819790596","n1819790844","n1819790839","n1819849190","n1819790619","n1819790613","n1819790669","n1819790550","n1819790682","n1819790701","n1819790790","n1819790532","n1819790887","n1819790740","n1819790831","n1819790545","n1819790664","n1819790621","n1819790861","n1819790730","n1819790683","n1819790802","n1819790717","n1819790710","n1819790713","n1819790650","n1819790873","n1819790814","n1819790755","n1819790715","n1819790818","n1819790602","n1819790893","n1819790662","n1819790699","n1819790772","n1819790771","n1819790680","n1819790794","n1819790727","n1819790628","n1819790661","n1819790784","n1819790610","n1819790626","n1819790929","n1819790656","n1819790871","n1819790673","n1819790566","n1819790820","n1819790676","n1819790598","n1819790556","n1819790558","n1819790879","n1819790608","n1819790813","n1819790789","n1819790865","n1819790847","n1819790758","n1819790548","n1819790539","n1819790889","n1819790557","n1819790586","n1819790571","n1819790823","n1819790546","n1819790924","n1819790785","n1819790708","n1819790786","n1819790561","n1819790804","n1819790788","n1819790684","n1819790711","n1819790875","n1819790672","n1819790569","n1819790757","n1819790769","n1819790603","n1819790906","n1819790553","n1819790536","n1819790678","n1819790920","n1819790600","n1819790733","n1819790743","n1819790567","n1819790764","n1819790722","n1819790638","n1819790917","n1819790800","n1819790741","n1819790667","n1819790913","n1819790744","n1819790816","n1819790591","n1819790745","n1819790885","n1819790652","n1819790588","n1819790617","n1819790551","n1819790666","n1819790869","n1819790630","n1819790723","n1819790792","n1819790783","n1819790681","n1819790919","n1819790593","n1819790670","n1819790777","n1819790922","n1819790562","n1819790736","n1819790565","n1819790801","n1819790538","n1819790640","n1819790616","n1819790572","n1819790620","n1819790883","n1819790849","n1819790675","n1819790851","n1819790803","n1819790611","n1819790703","n1819790734","n1819790793","n1819790614","n1819790581","n1819790776","n1819790797","n1819790728","n1819790584","n1819790624","n1819790604","n1819790725","n1819790732"]},"w206805240":{"id":"w206805240","version":"2","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:50Z","tags":{"waterway":"river"},"nodes":["n2168544738","n2168544739","n2168544740","n2168544741","n2168544742","n2168544743","n2168544744","n2168544745","n2168544746","n2168544747","n2168544748","n2168544749","n2168544750","n2168544751","n2168544752","n2168544753","n1819848944"]},"n394490429":{"id":"n394490429","loc":[-85.643883,41.954365],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n185953421":{"id":"n185953421","loc":[-85.641876,41.954946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185953417":{"id":"n185953417","loc":[-85.6418306,41.9551597],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185977233":{"id":"n185977233","loc":[-85.642987,41.95486],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:49Z","tags":{}},"n185977232":{"id":"n185977232","loc":[-85.642894,41.9547842],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1475293244":{"id":"n1475293244","loc":[-85.63974,41.9521543],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1819848890":{"id":"n1819848890","loc":[-85.6410004,41.9552822],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848965":{"id":"n1819848965","loc":[-85.6409795,41.9553892],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n2189015846":{"id":"n2189015846","loc":[-85.6420457,41.9549528],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015849":{"id":"n2189015849","loc":[-85.6425867,41.9551392],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015852":{"id":"n2189015852","loc":[-85.6426877,41.9549771],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2199109816":{"id":"n2199109816","loc":[-85.6399215,41.9540925],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109818":{"id":"n2199109818","loc":[-85.6399182,41.9538236],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109820":{"id":"n2199109820","loc":[-85.6402201,41.9538216],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109822":{"id":"n2199109822","loc":[-85.640222,41.9539771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109825":{"id":"n2199109825","loc":[-85.6402904,41.9539766],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109827":{"id":"n2199109827","loc":[-85.6402918,41.95409],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109829":{"id":"n2199109829","loc":[-85.6395845,41.9544626],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109831":{"id":"n2199109831","loc":[-85.6395792,41.9540671],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109833":{"id":"n2199109833","loc":[-85.6397173,41.9540661],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109835":{"id":"n2199109835","loc":[-85.6397226,41.9544616],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109837":{"id":"n2199109837","loc":[-85.6399641,41.9545058],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109839":{"id":"n2199109839","loc":[-85.6399637,41.9541859],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109841":{"id":"n2199109841","loc":[-85.6401098,41.9541858],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109843":{"id":"n2199109843","loc":[-85.64011,41.9543272],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109845":{"id":"n2199109845","loc":[-85.6400783,41.9543273],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109847":{"id":"n2199109847","loc":[-85.6400785,41.9545058],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109853":{"id":"n2199109853","loc":[-85.6396184,41.9554049],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109855":{"id":"n2199109855","loc":[-85.6396825,41.9553713],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n185949745":{"id":"n185949745","loc":[-85.6442727,41.9553112],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185949748":{"id":"n185949748","loc":[-85.6448804,41.9555238],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185949755":{"id":"n185949755","loc":[-85.6420011,41.9603536],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{}},"n185949763":{"id":"n185949763","loc":[-85.6408843,41.9555822],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185949765":{"id":"n185949765","loc":[-85.6414548,41.9557751],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185952158":{"id":"n185952158","loc":[-85.640066,41.956854],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185952160":{"id":"n185952160","loc":[-85.639848,41.957229],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185952161":{"id":"n185952161","loc":[-85.6396089,41.9576192],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185952163":{"id":"n185952163","loc":[-85.63892,41.957957],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185953413":{"id":"n185953413","loc":[-85.64162,41.955475],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185971651":{"id":"n185971651","loc":[-85.6440766,41.9543462],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185977234":{"id":"n185977234","loc":[-85.645044,41.955581],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:49Z","tags":{}},"n394490395":{"id":"n394490395","loc":[-85.657336,41.936762],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490396":{"id":"n394490396","loc":[-85.653896,41.936978],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490397":{"id":"n394490397","loc":[-85.653732,41.937386],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490398":{"id":"n394490398","loc":[-85.65182,41.937378],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490399":{"id":"n394490399","loc":[-85.651843,41.938445],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490400":{"id":"n394490400","loc":[-85.652536,41.938447],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490401":{"id":"n394490401","loc":[-85.652533,41.938901],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490402":{"id":"n394490402","loc":[-85.652084,41.9389],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490403":{"id":"n394490403","loc":[-85.6521,41.939627],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490404":{"id":"n394490404","loc":[-85.652301,41.939628],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490405":{"id":"n394490405","loc":[-85.652302,41.939755],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490406":{"id":"n394490406","loc":[-85.652783,41.939747],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490407":{"id":"n394490407","loc":[-85.652835,41.94112],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490408":{"id":"n394490408","loc":[-85.651968,41.941123],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490409":{"id":"n394490409","loc":[-85.651983,41.941969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490410":{"id":"n394490410","loc":[-85.652908,41.941961],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490411":{"id":"n394490411","loc":[-85.65292,41.94278],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490412":{"id":"n394490412","loc":[-85.651698,41.942816],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490413":{"id":"n394490413","loc":[-85.651509,41.942823],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490414":{"id":"n394490414","loc":[-85.651272,41.942837],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490415":{"id":"n394490415","loc":[-85.651272,41.943325],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490416":{"id":"n394490416","loc":[-85.65122,41.944053],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490417":{"id":"n394490417","loc":[-85.651193,41.944449],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490418":{"id":"n394490418","loc":[-85.651088,41.944969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490419":{"id":"n394490419","loc":[-85.650949,41.945554],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490420":{"id":"n394490420","loc":[-85.650907,41.945719],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490421":{"id":"n394490421","loc":[-85.650808,41.946016],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490422":{"id":"n394490422","loc":[-85.650712,41.946516],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490423":{"id":"n394490423","loc":[-85.650493,41.947166],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490424":{"id":"n394490424","loc":[-85.650626,41.947213],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490425":{"id":"n394490425","loc":[-85.650201,41.948109],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490426":{"id":"n394490426","loc":[-85.649868,41.948797],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490427":{"id":"n394490427","loc":[-85.649669,41.949161],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490428":{"id":"n394490428","loc":[-85.64659,41.954067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490430":{"id":"n394490430","loc":[-85.644034,41.95444],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490431":{"id":"n394490431","loc":[-85.644248,41.954507],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490432":{"id":"n394490432","loc":[-85.64491,41.954481],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490433":{"id":"n394490433","loc":[-85.645213,41.954433],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490434":{"id":"n394490434","loc":[-85.645426,41.954477],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490435":{"id":"n394490435","loc":[-85.6458,41.954704],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490436":{"id":"n394490436","loc":[-85.64605,41.954804],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490437":{"id":"n394490437","loc":[-85.646125,41.954817],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490438":{"id":"n394490438","loc":[-85.646002,41.954997],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490439":{"id":"n394490439","loc":[-85.645764,41.955366],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490440":{"id":"n394490440","loc":[-85.645525,41.955734],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490441":{"id":"n394490441","loc":[-85.64443,41.957424],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490442":{"id":"n394490442","loc":[-85.641712,41.961723],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490443":{"id":"n394490443","loc":[-85.640747,41.963246],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490444":{"id":"n394490444","loc":[-85.637803,41.967894],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490445":{"id":"n394490445","loc":[-85.637673,41.967861],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490446":{"id":"n394490446","loc":[-85.636637,41.969275],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490447":{"id":"n394490447","loc":[-85.634923,41.969269],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490448":{"id":"n394490448","loc":[-85.634893,41.968537],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490449":{"id":"n394490449","loc":[-85.634544,41.96927],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490450":{"id":"n394490450","loc":[-85.630835,41.969274],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490451":{"id":"n394490451","loc":[-85.630834,41.968348],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490452":{"id":"n394490452","loc":[-85.630857,41.968179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490453":{"id":"n394490453","loc":[-85.630924,41.968044],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490454":{"id":"n394490454","loc":[-85.631004,41.967925],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490455":{"id":"n394490455","loc":[-85.631143,41.967811],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490456":{"id":"n394490456","loc":[-85.631311,41.967736],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490457":{"id":"n394490457","loc":[-85.631595,41.967693],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490458":{"id":"n394490458","loc":[-85.63325,41.967702],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490459":{"id":"n394490459","loc":[-85.633247,41.967021],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490460":{"id":"n394490460","loc":[-85.634858,41.967021],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490461":{"id":"n394490461","loc":[-85.634865,41.967711],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490462":{"id":"n394490462","loc":[-85.634884,41.968231],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490463":{"id":"n394490463","loc":[-85.636559,41.963867],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490464":{"id":"n394490464","loc":[-85.634832,41.963866],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490465":{"id":"n394490465","loc":[-85.63481,41.961899],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490466":{"id":"n394490466","loc":[-85.637219,41.961842],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490467":{"id":"n394490467","loc":[-85.637837,41.960019],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490468":{"id":"n394490468","loc":[-85.637459,41.960022],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490469":{"id":"n394490469","loc":[-85.635295,41.959987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490470":{"id":"n394490470","loc":[-85.634783,41.959979],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490471":{"id":"n394490471","loc":[-85.634776,41.959834],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490472":{"id":"n394490472","loc":[-85.634767,41.959009],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490473":{"id":"n394490473","loc":[-85.634763,41.958292],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490474":{"id":"n394490474","loc":[-85.633346,41.958287],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490475":{"id":"n394490475","loc":[-85.632128,41.9583],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490476":{"id":"n394490476","loc":[-85.631414,41.958318],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490477":{"id":"n394490477","loc":[-85.63137,41.959033],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490478":{"id":"n394490478","loc":[-85.631325,41.959753],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490479":{"id":"n394490479","loc":[-85.631494,41.95977],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490480":{"id":"n394490480","loc":[-85.631456,41.960673],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490481":{"id":"n394490481","loc":[-85.631421,41.961494],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490482":{"id":"n394490482","loc":[-85.631404,41.961887],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490483":{"id":"n394490483","loc":[-85.631401,41.961968],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490484":{"id":"n394490484","loc":[-85.630962,41.961967],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490485":{"id":"n394490485","loc":[-85.6299,41.961973],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490486":{"id":"n394490486","loc":[-85.624929,41.962002],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490487":{"id":"n394490487","loc":[-85.623333,41.961987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490488":{"id":"n394490488","loc":[-85.621894,41.963956],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490489":{"id":"n394490489","loc":[-85.62131,41.963727],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490490":{"id":"n394490490","loc":[-85.621216,41.963868],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490491":{"id":"n394490491","loc":[-85.620356,41.965119],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490492":{"id":"n394490492","loc":[-85.620848,41.965341],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490493":{"id":"n394490493","loc":[-85.620684,41.965558],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490494":{"id":"n394490494","loc":[-85.620621,41.965658],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490495":{"id":"n394490495","loc":[-85.618165,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490496":{"id":"n394490496","loc":[-85.618071,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490497":{"id":"n394490497","loc":[-85.617986,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490498":{"id":"n394490498","loc":[-85.605673,41.965764],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490499":{"id":"n394490499","loc":[-85.605668,41.963548],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490500":{"id":"n394490500","loc":[-85.605664,41.962094],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490501":{"id":"n394490501","loc":[-85.595828,41.962159],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490502":{"id":"n394490502","loc":[-85.587869,41.962169],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490503":{"id":"n394490503","loc":[-85.586289,41.962179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490504":{"id":"n394490504","loc":[-85.583774,41.962178],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490505":{"id":"n394490505","loc":[-85.583774,41.961789],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490506":{"id":"n394490506","loc":[-85.581303,41.961783],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490507":{"id":"n394490507","loc":[-85.581304,41.961616],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490508":{"id":"n394490508","loc":[-85.581292,41.961616],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490509":{"id":"n394490509","loc":[-85.581247,41.959244],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490510":{"id":"n394490510","loc":[-85.581245,41.958394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490511":{"id":"n394490511","loc":[-85.581276,41.958372],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490512":{"id":"n394490512","loc":[-85.581302,41.958353],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490513":{"id":"n394490513","loc":[-85.581376,41.9583],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490514":{"id":"n394490514","loc":[-85.582256,41.957663],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490515":{"id":"n394490515","loc":[-85.585299,41.955483],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490516":{"id":"n394490516","loc":[-85.585588,41.955331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490517":{"id":"n394490517","loc":[-85.586053,41.955163],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490518":{"id":"n394490518","loc":[-85.58632,41.955076],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490519":{"id":"n394490519","loc":[-85.586478,41.955025],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490520":{"id":"n394490520","loc":[-85.58692,41.954947],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490521":{"id":"n394490521","loc":[-85.587327,41.954914],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490522":{"id":"n394490522","loc":[-85.587345,41.954913],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490523":{"id":"n394490523","loc":[-85.587358,41.954913],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490524":{"id":"n394490524","loc":[-85.58963,41.954877],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490525":{"id":"n394490525","loc":[-85.591077,41.954865],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490526":{"id":"n394490526","loc":[-85.594824,41.954843],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490527":{"id":"n394490527","loc":[-85.594804,41.95331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490528":{"id":"n394490528","loc":[-85.599336,41.95331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490529":{"id":"n394490529","loc":[-85.599336,41.954825],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490530":{"id":"n394490530","loc":[-85.597828,41.954839],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490531":{"id":"n394490531","loc":[-85.597833,41.95614],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490532":{"id":"n394490532","loc":[-85.596586,41.956151],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490533":{"id":"n394490533","loc":[-85.596586,41.956394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490534":{"id":"n394490534","loc":[-85.595933,41.956394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490535":{"id":"n394490535","loc":[-85.595933,41.958176],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490536":{"id":"n394490536","loc":[-85.597635,41.958179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490537":{"id":"n394490537","loc":[-85.597717,41.958177],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490538":{"id":"n394490538","loc":[-85.601671,41.958194],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490539":{"id":"n394490539","loc":[-85.605619,41.958194],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490540":{"id":"n394490540","loc":[-85.608054,41.958187],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490542":{"id":"n394490542","loc":[-85.6080762,41.9547864],"version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:47:47Z","tags":{}},"n394490545":{"id":"n394490545","loc":[-85.6104354,41.9548263],"version":"2","changeset":"12747630","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-16T08:22:38Z","tags":{}},"n394490546":{"id":"n394490546","loc":[-85.610274,41.951106],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490547":{"id":"n394490547","loc":[-85.610278,41.950829],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490548":{"id":"n394490548","loc":[-85.610309,41.948377],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490549":{"id":"n394490549","loc":[-85.610314,41.947986],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490550":{"id":"n394490550","loc":[-85.610464,41.947985],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490551":{"id":"n394490551","loc":[-85.610447,41.947468],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490552":{"id":"n394490552","loc":[-85.612469,41.947471],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490553":{"id":"n394490553","loc":[-85.612494,41.945576],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490554":{"id":"n394490554","loc":[-85.610292,41.94558],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490555":{"id":"n394490555","loc":[-85.608412,41.945625],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490556":{"id":"n394490556","loc":[-85.608412,41.943036],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490557":{"id":"n394490557","loc":[-85.608702,41.943087],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490558":{"id":"n394490558","loc":[-85.609196,41.943224],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490559":{"id":"n394490559","loc":[-85.609571,41.943263],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490560":{"id":"n394490560","loc":[-85.610116,41.943295],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490561":{"id":"n394490561","loc":[-85.610273,41.943275],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490562":{"id":"n394490562","loc":[-85.611339,41.943075],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490563":{"id":"n394490563","loc":[-85.611575,41.942997],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490564":{"id":"n394490564","loc":[-85.611847,41.942849],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490565":{"id":"n394490565","loc":[-85.612164,41.942568],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490566":{"id":"n394490566","loc":[-85.612341,41.942529],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490567":{"id":"n394490567","loc":[-85.612562,41.942524],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490568":{"id":"n394490568","loc":[-85.612768,41.942546],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490569":{"id":"n394490569","loc":[-85.612938,41.942633],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490570":{"id":"n394490570","loc":[-85.6131,41.942782],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490571":{"id":"n394490571","loc":[-85.613299,41.942919],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490572":{"id":"n394490572","loc":[-85.613498,41.942996],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490573":{"id":"n394490573","loc":[-85.614698,41.942842],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490574":{"id":"n394490574","loc":[-85.615288,41.942698],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490575":{"id":"n394490575","loc":[-85.616054,41.942693],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490576":{"id":"n394490576","loc":[-85.61603,41.942175],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490577":{"id":"n394490577","loc":[-85.616004,41.941741],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490578":{"id":"n394490578","loc":[-85.615994,41.940156],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490579":{"id":"n394490579","loc":[-85.615144,41.940159],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490580":{"id":"n394490580","loc":[-85.614915,41.940161],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490582":{"id":"n394490582","loc":[-85.614875,41.938532],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490583":{"id":"n394490583","loc":[-85.616167,41.938787],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490585":{"id":"n394490585","loc":[-85.616176,41.938589],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490586":{"id":"n394490586","loc":[-85.614537,41.938282],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490588":{"id":"n394490588","loc":[-85.610141,41.937459],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490589":{"id":"n394490589","loc":[-85.610172,41.937298],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490590":{"id":"n394490590","loc":[-85.609918,41.935495],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490592":{"id":"n394490592","loc":[-85.610092,41.935451],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490594":{"id":"n394490594","loc":[-85.610681,41.935247],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490595":{"id":"n394490595","loc":[-85.611446,41.934955],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490596":{"id":"n394490596","loc":[-85.612057,41.934696],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490598":{"id":"n394490598","loc":[-85.613256,41.934084],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490599":{"id":"n394490599","loc":[-85.613948,41.933682],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490601":{"id":"n394490601","loc":[-85.61436,41.933417],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490602":{"id":"n394490602","loc":[-85.614638,41.933212],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490604":{"id":"n394490604","loc":[-85.615249,41.9332],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490605":{"id":"n394490605","loc":[-85.618218,41.933223],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490607":{"id":"n394490607","loc":[-85.618241,41.933479],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490608":{"id":"n394490608","loc":[-85.618257,41.93365],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490609":{"id":"n394490609","loc":[-85.618298,41.935067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490611":{"id":"n394490611","loc":[-85.619791,41.935067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490612":{"id":"n394490612","loc":[-85.619794,41.933301],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490613":{"id":"n394490613","loc":[-85.619795,41.932692],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490614":{"id":"n394490614","loc":[-85.619729,41.929517],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490615":{"id":"n394490615","loc":[-85.619801,41.929305],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490616":{"id":"n394490616","loc":[-85.619809,41.927391],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490617":{"id":"n394490617","loc":[-85.620883,41.927378],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490618":{"id":"n394490618","loc":[-85.620988,41.927368],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490619":{"id":"n394490619","loc":[-85.621076,41.927368],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490620":{"id":"n394490620","loc":[-85.621156,41.927376],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490621":{"id":"n394490621","loc":[-85.621685,41.92737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490622":{"id":"n394490622","loc":[-85.624716,41.927359],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490623":{"id":"n394490623","loc":[-85.625308,41.92737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490624":{"id":"n394490624","loc":[-85.625655,41.927377],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490625":{"id":"n394490625","loc":[-85.625093,41.925591],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490626":{"id":"n394490626","loc":[-85.625174,41.92559],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490627":{"id":"n394490627","loc":[-85.625249,41.925597],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490628":{"id":"n394490628","loc":[-85.625532,41.925604],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490629":{"id":"n394490629","loc":[-85.625761,41.925597],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490630":{"id":"n394490630","loc":[-85.625955,41.926153],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490631":{"id":"n394490631","loc":[-85.626209,41.926155],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490632":{"id":"n394490632","loc":[-85.627757,41.926151],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490633":{"id":"n394490633","loc":[-85.627825,41.926298],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490634":{"id":"n394490634","loc":[-85.627994,41.926315],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490635":{"id":"n394490635","loc":[-85.628049,41.927196],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490636":{"id":"n394490636","loc":[-85.62949,41.927221],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490637":{"id":"n394490637","loc":[-85.629602,41.927277],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490638":{"id":"n394490638","loc":[-85.6297102,41.9273279],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{}},"n394490639":{"id":"n394490639","loc":[-85.630958,41.927398],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490699":{"id":"n394490699","loc":[-85.632741,41.927388],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490700":{"id":"n394490700","loc":[-85.632997,41.927391],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490701":{"id":"n394490701","loc":[-85.633149,41.927393],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490702":{"id":"n394490702","loc":[-85.633334,41.927393],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490703":{"id":"n394490703","loc":[-85.633468,41.927561],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490704":{"id":"n394490704","loc":[-85.633563,41.927755],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490705":{"id":"n394490705","loc":[-85.633662,41.928192],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490706":{"id":"n394490706","loc":[-85.633679,41.928807],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490707":{"id":"n394490707","loc":[-85.633687,41.929107],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490708":{"id":"n394490708","loc":[-85.633927,41.929109],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490709":{"id":"n394490709","loc":[-85.634126,41.929111],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490710":{"id":"n394490710","loc":[-85.634207,41.92911],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490711":{"id":"n394490711","loc":[-85.634323,41.929111],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490712":{"id":"n394490712","loc":[-85.636712,41.929128],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490713":{"id":"n394490713","loc":[-85.63808,41.9291],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490714":{"id":"n394490714","loc":[-85.639213,41.929088],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490715":{"id":"n394490715","loc":[-85.639189,41.92852],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490716":{"id":"n394490716","loc":[-85.639204,41.925488],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490717":{"id":"n394490717","loc":[-85.644204,41.925452],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490718":{"id":"n394490718","loc":[-85.651425,41.925406],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490719":{"id":"n394490719","loc":[-85.651449,41.926321],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490720":{"id":"n394490720","loc":[-85.651451,41.926969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490721":{"id":"n394490721","loc":[-85.651458,41.928052],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490722":{"id":"n394490722","loc":[-85.651446,41.928892],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490723":{"id":"n394490723","loc":[-85.651456,41.929447],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490724":{"id":"n394490724","loc":[-85.651707,41.929454],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490725":{"id":"n394490725","loc":[-85.652369,41.929473],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490726":{"id":"n394490726","loc":[-85.6525,41.929452],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490727":{"id":"n394490727","loc":[-85.654066,41.92946],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490728":{"id":"n394490728","loc":[-85.654816,41.92946],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490729":{"id":"n394490729","loc":[-85.654816,41.930337],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490730":{"id":"n394490730","loc":[-85.654587,41.930337],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490731":{"id":"n394490731","loc":[-85.654548,41.931072],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490732":{"id":"n394490732","loc":[-85.654538,41.931701],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490733":{"id":"n394490733","loc":[-85.654898,41.931689],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490734":{"id":"n394490734","loc":[-85.654898,41.932505],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490735":{"id":"n394490735","loc":[-85.654854,41.932514],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490736":{"id":"n394490736","loc":[-85.655497,41.932499],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490737":{"id":"n394490737","loc":[-85.656405,41.932493],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490738":{"id":"n394490738","loc":[-85.656422,41.933416],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490739":{"id":"n394490739","loc":[-85.657322,41.933438],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n1475293233":{"id":"n1475293233","loc":[-85.6385522,41.9585167],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{}},"n1475293242":{"id":"n1475293242","loc":[-85.64609,41.9540815],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293249":{"id":"n1475293249","loc":[-85.6358079,41.9692721],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293256":{"id":"n1475293256","loc":[-85.6387369,41.9581583],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293259":{"id":"n1475293259","loc":[-85.6455882,41.9541138],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1475293266":{"id":"n1475293266","loc":[-85.6451008,41.9541821],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1819800253":{"id":"n1819800253","loc":[-85.6134286,41.9429692],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n2114807558":{"id":"n2114807558","loc":[-85.6365609,41.963866],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{"railway":"level_crossing"}},"n2189015728":{"id":"n2189015728","loc":[-85.6383956,41.9590576],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015838":{"id":"n2189015838","loc":[-85.6435144,41.9563705],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015842":{"id":"n2189015842","loc":[-85.6415782,41.9557035],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015855":{"id":"n2189015855","loc":[-85.6440829,41.9554577],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2199109849":{"id":"n2199109849","loc":[-85.6393434,41.9565591],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109851":{"id":"n2199109851","loc":[-85.6393208,41.9565002],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109857":{"id":"n2199109857","loc":[-85.6401986,41.955545],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109859":{"id":"n2199109859","loc":[-85.6402362,41.955587],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109861":{"id":"n2199109861","loc":[-85.6395958,41.9565675],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109863":{"id":"n2199109863","loc":[-85.639528,41.9566011],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"w209717053":{"id":"w209717053","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109829","n2199109831","n2199109833","n2199109835","n2199109829"]},"w17966415":{"id":"w17966415","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"access":"private","highway":"service","name":"Manufacturing Way","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Manufacturing","tiger:name_type":"Way","tiger:reviewed":"no"},"nodes":["n185971642","n185977232","n185977233","n185949745","n185949748","n185977234"]},"w209717054":{"id":"w209717054","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109837","n2199109839","n2199109841","n2199109843","n2199109845","n2199109847","n2199109837"]},"w208627214":{"id":"w208627214","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949755","n2189015728","n1475293233","n1475293256","n185952163","n185952161","n185952160","n185952158","n185949763","n1819848965","n1819848890","n185952156"]},"w17963817":{"id":"w17963817","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"access":"private","highway":"service","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949765","n185953413","n185953417","n185953421","n185953423"]},"w34369809":{"id":"w34369809","version":"7","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:19Z","tags":{"admin_level":"8","boundary":"administrative","landuse":"residential","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490395","n394490396","n394490397","n394490398","n394490399","n394490400","n394490401","n394490402","n394490403","n394490404","n394490405","n394490406","n394490407","n394490408","n394490409","n394490410","n394490411","n394490412","n394490413","n394490414","n394490415","n394490416","n394490417","n394490418","n394490419","n394490420","n394490421","n394490422","n394490423","n394490424","n394490425","n394490426","n394490427","n394490428","n1475293242","n1475293259","n1475293266","n394490429","n394490430","n394490431","n394490432","n394490433","n394490434","n394490435","n394490436","n394490437","n394490438","n394490439","n394490440","n394490441","n394490442","n394490443","n394490444","n394490445","n394490446","n1475293249","n394490447","n394490448","n394490449","n394490450","n394490451","n394490452","n394490453","n394490454","n394490455","n394490456","n394490457","n394490458","n394490459","n394490460","n394490461","n394490462","n2114807558","n394490463","n1475293226","n394490464","n394490465","n394490466","n394490467","n394490468","n394490469","n394490470","n394490471","n394490472","n394490473","n394490474","n394490475","n394490476","n394490477","n394490478","n394490479","n394490480","n394490481","n394490482","n394490483","n394490484","n394490485","n394490486","n394490487","n394490488","n394490489","n394490490","n394490491","n394490492","n394490493","n394490494","n394490495","n394490496","n394490497","n394490498","n394490499","n394490500","n394490501","n394490502","n394490503","n394490504","n394490505","n394490506","n394490507","n394490508","n394490509","n394490510","n394490511","n394490512","n394490513","n394490514","n394490515","n394490516","n394490517","n394490518","n394490519","n394490520","n394490521","n394490522","n394490523","n394490524","n394490525","n394490526","n394490527","n394490528","n394490529","n394490530","n394490531","n394490532","n394490533","n394490534","n394490535","n394490536","n394490537","n394490538","n394490539","n394490540","n394490542","n394490545","n394490546","n394490547","n394490548","n394490549","n394490550","n394490551","n394490552","n394490553","n394490554","n394490555","n394490556","n394490557","n394490558","n394490559","n394490560","n394490561","n394490562","n394490563","n394490564","n394490565","n394490566","n394490567","n394490568","n394490569","n394490570","n394490571","n1819800253","n394490572","n394490573","n394490574","n394490575","n394490576","n394490577","n394490578","n394490579","n394490580","n394490582","n394490583","n394490585","n394490586","n394490588","n394490589","n394490590","n394490592","n394490594","n394490595","n394490596","n394490598","n394490599","n394490601","n394490602","n394490604","n394490605","n394490607","n394490608","n394490609","n394490611","n394490612","n394490613","n394490614","n394490615","n394490616","n394490617","n394490618","n394490619","n394490620","n394490621","n394490622","n394490623","n394490624","n394490625","n394490626","n394490627","n394490628","n394490629","n394490630","n394490631","n394490632","n394490633","n394490634","n394490635","n394490636","n394490637","n394490638","n394490639","n394490699","n394490700","n394490701","n394490702","n394490703","n394490704","n394490705","n394490706","n394490707","n394490708","n394490709","n394490710","n394490711","n394490712","n394490713","n394490714","n394490715","n394490716","n394490717","n394490718","n394490719","n394490720","n394490721","n394490722","n394490723","n394490724","n394490725","n394490726","n394490727","n394490728","n394490729","n394490730","n394490731","n394490732","n394490733","n394490734","n394490735","n394490736","n394490737","n394490738","n394490739","n394490395"]},"w208627221":{"id":"w208627221","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189015838","n2189015842","n2189015846","n2189015849","n2189015852","n2189015855","n2189015838"]},"w209717052":{"id":"w209717052","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109816","n2199109818","n2199109820","n2199109822","n2199109825","n2199109827","n2199109816"]},"w134151784":{"id":"w134151784","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"bridge":"yes","highway":"residential","name":"W Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312195:15312958:15312207:15313273:15328372:15328373","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185971648","n185971651"]},"w209717055":{"id":"w209717055","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","landuse":"basin"},"nodes":["n2199109849","n2199109851","n2199109853","n2199109855","n2199109857","n2199109859","n2199109861","n2199109863","n2199109849"]},"w17967763":{"id":"w17967763","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:04Z","tags":{"highway":"residential","name":"Rock River Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Rock River","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312230:15312252:15335064:15333550","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n1475293244","n185982166","n185975067","n185971637"]},"r134949":{"id":"r134949","version":"2","changeset":"14979874","user":"malenki","uid":"39504","visible":"true","timestamp":"2013-02-10T12:18:08Z","tags":{"admin_level":"8","border_type":"city","boundary":"administrative","is_in":"USA, Michigan","is_in:country":"USA","is_in:country_code":"US","is_in:iso_3166_2":"US:MI","is_in:state":"Michigan","is_in:state_code":"MI","name":"Three Rivers","place":"city","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)","tiger:CLASSFP":"C5","tiger:CPI":"Y","tiger:FUNCSTAT":"A","tiger:LSAD":"25","tiger:MTFCC":"G4110","tiger:NAME":"Three Rivers","tiger:NAMELSAD":"Three Rivers city","tiger:PCICBSA":"N","tiger:PCINECTA":"N","tiger:PLACEFP":"79760","tiger:PLACENS":"01627164","tiger:PLCIDFP":"2679760","tiger:STATEFP":"26","type":"boundary","wikipedia":"en:Three Rivers, Michigan"},"members":[{"id":"w34369809","type":"way","role":"outer"},{"id":"w34369821","type":"way","role":"outer"},{"id":"w34369822","type":"way","role":"outer"},{"id":"w34369823","type":"way","role":"outer"},{"id":"w34369824","type":"way","role":"outer"},{"id":"w34369825","type":"way","role":"outer"},{"id":"w34369826","type":"way","role":"outer"},{"id":"w34369810","type":"way","role":"inner"},{"id":"w34369811","type":"way","role":"inner"},{"id":"w34369812","type":"way","role":"inner"},{"id":"w34367079","type":"way","role":"inner"},{"id":"w34369814","type":"way","role":"inner"},{"id":"w34367080","type":"way","role":"inner"},{"id":"w34369815","type":"way","role":"inner"},{"id":"w34369820","type":"way","role":"inner"}]},"n1819848881":{"id":"n1819848881","loc":[-85.638562,41.9569965],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848947":{"id":"n1819848947","loc":[-85.6384348,41.9576565],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819849044":{"id":"n1819849044","loc":[-85.6385749,41.9573345],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n2114807547":{"id":"n2114807547","loc":[-85.6384626,41.9583756],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807564":{"id":"n2114807564","loc":[-85.638535,41.9581283],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015691":{"id":"n2189015691","loc":[-85.6435584,41.9565243],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015696":{"id":"n2189015696","loc":[-85.6435805,41.9566049],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015722":{"id":"n2189015722","loc":[-85.6435035,41.9567438],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015744":{"id":"n2189015744","loc":[-85.6437991,41.9569582],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015747":{"id":"n2189015747","loc":[-85.6433042,41.9567742],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015750":{"id":"n2189015750","loc":[-85.6433827,41.9566844],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015753":{"id":"n2189015753","loc":[-85.6430447,41.9565588],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015756":{"id":"n2189015756","loc":[-85.6431111,41.956451],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015759":{"id":"n2189015759","loc":[-85.6420247,41.956083],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015760":{"id":"n2189015760","loc":[-85.6419945,41.9561369],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015764":{"id":"n2189015764","loc":[-85.6413729,41.9558945],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015766":{"id":"n2189015766","loc":[-85.6412884,41.9560606],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015770":{"id":"n2189015770","loc":[-85.6411798,41.9560112],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015771":{"id":"n2189015771","loc":[-85.6410651,41.9562132],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015774":{"id":"n2189015774","loc":[-85.6409504,41.9561728],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015778":{"id":"n2189015778","loc":[-85.6407996,41.9564241],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015781":{"id":"n2189015781","loc":[-85.6406889,41.9563892],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015785":{"id":"n2189015785","loc":[-85.6404857,41.9567024],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015789":{"id":"n2189015789","loc":[-85.6406909,41.9567877],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015793":{"id":"n2189015793","loc":[-85.6405642,41.9570165],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015796":{"id":"n2189015796","loc":[-85.6415359,41.9573711],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015800":{"id":"n2189015800","loc":[-85.6411738,41.9579501],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015804":{"id":"n2189015804","loc":[-85.6411119,41.957921],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015808":{"id":"n2189015808","loc":[-85.6403186,41.9591751],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015909":{"id":"n2189015909","loc":[-85.6389293,41.9564636],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015926":{"id":"n2189015926","loc":[-85.6385431,41.9564617],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015929":{"id":"n2189015929","loc":[-85.6385457,41.9561823],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015932":{"id":"n2189015932","loc":[-85.6389319,41.9561843],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2199109865":{"id":"n2199109865","loc":[-85.6400768,41.956776],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109867":{"id":"n2199109867","loc":[-85.639902,41.9567153],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109869":{"id":"n2199109869","loc":[-85.640004,41.956553],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109871":{"id":"n2199109871","loc":[-85.6401788,41.9566137],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109873":{"id":"n2199109873","loc":[-85.6399316,41.9564506],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"man_made":"water_tower"}},"n2199109876":{"id":"n2199109876","loc":[-85.6397689,41.9572354],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109878":{"id":"n2199109878","loc":[-85.6399229,41.9569826],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109880":{"id":"n2199109880","loc":[-85.639706,41.9569095],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109882":{"id":"n2199109882","loc":[-85.639552,41.9571623],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109884":{"id":"n2199109884","loc":[-85.6391028,41.9569517],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109886":{"id":"n2199109886","loc":[-85.6392876,41.956646],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109888":{"id":"n2199109888","loc":[-85.639484,41.9567117],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109889":{"id":"n2199109889","loc":[-85.6394322,41.9567973],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109890":{"id":"n2199109890","loc":[-85.6393718,41.9567771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109891":{"id":"n2199109891","loc":[-85.6392387,41.9569972],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n1819848900":{"id":"n1819848900","loc":[-85.638281,41.9576578],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848978":{"id":"n1819848978","loc":[-85.6377186,41.9580867],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849039":{"id":"n1819849039","loc":[-85.6384217,41.9573405],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849050":{"id":"n1819849050","loc":[-85.6377011,41.9570042],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849088":{"id":"n1819849088","loc":[-85.6382879,41.9580817],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n2114807549":{"id":"n2114807549","loc":[-85.6362551,41.96473],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807587":{"id":"n2114807587","loc":[-85.6368694,41.9629829],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015725":{"id":"n2189015725","loc":[-85.644156,41.9569753],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015741":{"id":"n2189015741","loc":[-85.6419825,41.9597632],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"w208627217":{"id":"w208627217","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015741","n2189015744","n2189015747","n2189015750","n2189015753","n2189015756","n2189015759","n2189015760","n2189015764","n2189015766","n2189015770","n2189015771","n2189015774","n2189015778","n2189015781","n2189015785","n2189015789","n2189015793","n2189015796","n2189015800","n2189015804","n2189015808","n2189015741"]},"w208627212":{"id":"w208627212","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"highway":"service"},"nodes":["n2189015691","n2189015696","n2189015722","n2189015725"]},"w209717057":{"id":"w209717057","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109876","n2199109878","n2199109880","n2199109882","n2199109876"]},"w209717056":{"id":"w209717056","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109865","n2199109867","n2199109869","n2199109871","n2199109865"]},"w208627231":{"id":"w208627231","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015909","n2189015926","n2189015929","n2189015932","n2189015909"]},"w170848326":{"id":"w170848326","version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{"building":"yes","source":"Bing"},"nodes":["n1819848881","n1819849050","n1819848978","n1819849088","n1819848900","n1819848947","n1819849039","n1819849044","n1819848881"]},"w17963182":{"id":"w17963182","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949763","n185949765","n2189015691","n185949745"]},"w201484340":{"id":"w201484340","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807565","n2114807564","n2114807547","n2114807587","n2114807558","n2114807549","n2114807593"]},"w209717058":{"id":"w209717058","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109884","n2199109886","n2199109888","n2199109889","n2199109890","n2199109891","n2199109884"]},"n185954650":{"id":"n185954650","loc":[-85.627331,41.957439],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:31Z","tags":{}},"n185966949":{"id":"n185966949","loc":[-85.626868,41.957314],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185989335":{"id":"n185989335","loc":[-85.62529,41.958568],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989337":{"id":"n185989337","loc":[-85.624962,41.958453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989339":{"id":"n185989339","loc":[-85.624832,41.958399],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989340":{"id":"n185989340","loc":[-85.624707,41.958325],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989342":{"id":"n185989342","loc":[-85.624636,41.958251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989345":{"id":"n185989345","loc":[-85.624578,41.95818],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989347":{"id":"n185989347","loc":[-85.624533,41.958099],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989349":{"id":"n185989349","loc":[-85.624507,41.957985],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989351":{"id":"n185989351","loc":[-85.624495,41.957807],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989353":{"id":"n185989353","loc":[-85.624514,41.957663],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989354":{"id":"n185989354","loc":[-85.624577,41.957593],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989356":{"id":"n185989356","loc":[-85.624685,41.95754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989357":{"id":"n185989357","loc":[-85.624802,41.957523],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989359":{"id":"n185989359","loc":[-85.624996,41.957524],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989361":{"id":"n185989361","loc":[-85.625409,41.957515],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989364":{"id":"n185989364","loc":[-85.625634,41.957496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989367":{"id":"n185989367","loc":[-85.625832,41.957453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989368":{"id":"n185989368","loc":[-85.626044,41.957394],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n354031352":{"id":"n354031352","loc":[-85.6252778,41.9586111],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:26Z","tags":{"amenity":"place_of_worship","denomination":"baptist","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417873","gnis:state_id":"26","name":"First Baptist Church","religion":"christian"}},"n2199109892":{"id":"n2199109892","loc":[-85.6261578,41.9589963],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109893":{"id":"n2199109893","loc":[-85.6263191,41.9586865],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109894":{"id":"n2199109894","loc":[-85.6261186,41.9586288],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109895":{"id":"n2199109895","loc":[-85.6260644,41.9587329],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109896":{"id":"n2199109896","loc":[-85.6261547,41.9587589],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109898":{"id":"n2199109898","loc":[-85.6260476,41.9589646],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n185966951":{"id":"n185966951","loc":[-85.628404,41.957438],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"w17965351":{"id":"w17965351","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:20Z","tags":{"highway":"residential","name":"Flower Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Flower","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185966948","n185966949","n185954650","n185966951","n185966953","n185966955","n185966957"]},"w17967809":{"id":"w17967809","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Azaleamum Drive","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Azaleamum","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185982197","n185989335","n185989337","n185989339","n185989340","n185989342","n185989345","n185989347","n185989349","n185989351","n185989353","n185989354","n185989356","n185989357","n185989359","n185989361","n185989364","n185989367","n185989368","n185982196"]},"w209717059":{"id":"w209717059","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109892","n2199109893","n2199109894","n2199109895","n2199109896","n2199109898","n2199109892"]},"n185961390":{"id":"n185961390","loc":[-85.63137,41.959033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185961393":{"id":"n185961393","loc":[-85.634315,41.959017],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"w17966214":{"id":"w17966214","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Adams Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185975351","n185967434","n185968108"]},"w17964793":{"id":"w17964793","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:32:05Z","tags":{"highway":"residential","name":"Morris Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Morris","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312148:15328241:15328242","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185961389","n185961390","n185961391","n185961393","n185961396"]},"n185952166":{"id":"n185952166","loc":[-85.638174,41.95831],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:11Z","tags":{}},"n2114807552":{"id":"n2114807552","loc":[-85.6383526,41.9593788],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807591":{"id":"n2114807591","loc":[-85.6383741,41.9593968],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015731":{"id":"n2189015731","loc":[-85.6368404,41.9592785],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015734":{"id":"n2189015734","loc":[-85.6368404,41.9585918],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015737":{"id":"n2189015737","loc":[-85.6376009,41.9585918],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015738":{"id":"n2189015738","loc":[-85.6376009,41.9592785],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015897":{"id":"n2189015897","loc":[-85.6376839,41.9566137],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015900":{"id":"n2189015900","loc":[-85.6376831,41.9564865],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015903":{"id":"n2189015903","loc":[-85.6381161,41.9564851],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015906":{"id":"n2189015906","loc":[-85.6381168,41.9566122],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015937":{"id":"n2189015937","loc":[-85.6364789,41.9590634],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015940":{"id":"n2189015940","loc":[-85.6361137,41.9590672],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015943":{"id":"n2189015943","loc":[-85.6361169,41.9594033],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015945":{"id":"n2189015945","loc":[-85.6363456,41.9594021],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015952":{"id":"n2189015952","loc":[-85.636112,41.958892],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015955":{"id":"n2189015955","loc":[-85.6364757,41.9588894],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015957":{"id":"n2189015957","loc":[-85.6364729,41.9586747],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015958":{"id":"n2189015958","loc":[-85.6361103,41.9586765],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015959":{"id":"n2189015959","loc":[-85.6364719,41.9585562],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015960":{"id":"n2189015960","loc":[-85.6361093,41.958558],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015961":{"id":"n2189015961","loc":[-85.6355494,41.9586403],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015962":{"id":"n2189015962","loc":[-85.635549,41.9584711],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015963":{"id":"n2189015963","loc":[-85.6351831,41.9584715],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015964":{"id":"n2189015964","loc":[-85.6351834,41.9586408],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015966":{"id":"n2189015966","loc":[-85.6359579,41.9586359],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015968":{"id":"n2189015968","loc":[-85.6359561,41.9585465],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015971":{"id":"n2189015971","loc":[-85.6355476,41.9585509],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015974":{"id":"n2189015974","loc":[-85.6359516,41.9592934],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015977":{"id":"n2189015977","loc":[-85.635949,41.9586697],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015980":{"id":"n2189015980","loc":[-85.6351329,41.9586716],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015983":{"id":"n2189015983","loc":[-85.6351318,41.9583949],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015986":{"id":"n2189015986","loc":[-85.6349148,41.9583954],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015989":{"id":"n2189015989","loc":[-85.6349186,41.9592958],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015995":{"id":"n2189015995","loc":[-85.6360173,41.9593286],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015998":{"id":"n2189015998","loc":[-85.6360278,41.9583079],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2114807550":{"id":"n2114807550","loc":[-85.6383392,41.9595404],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807551":{"id":"n2114807551","loc":[-85.6375855,41.9616107],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807559":{"id":"n2114807559","loc":[-85.6373978,41.9621273],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807562":{"id":"n2114807562","loc":[-85.6373361,41.9622609],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807563":{"id":"n2114807563","loc":[-85.6376472,41.9613953],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807574":{"id":"n2114807574","loc":[-85.636974,41.9627695],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807589":{"id":"n2114807589","loc":[-85.6383017,41.9595005],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807592":{"id":"n2114807592","loc":[-85.6377169,41.9613494],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807595":{"id":"n2114807595","loc":[-85.6371081,41.962574],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015934":{"id":"n2189015934","loc":[-85.6364855,41.9595098],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015949":{"id":"n2189015949","loc":[-85.6363466,41.9595105],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"w208627244":{"id":"w208627244","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"highway":"service"},"nodes":["n2189015992","n2189015995","n2189015998"]},"w208627240":{"id":"w208627240","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015961","n2189015971","n2189015962","n2189015963","n2189015964","n2189015961"]},"w17967437":{"id":"w17967437","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:44Z","tags":{"highway":"residential","name":"Lyman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lyman","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313234","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185964361","n185984024"]},"w208627237":{"id":"w208627237","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015955","n2189015957","n2189015958","n2189015952","n2189015955"]},"w17967465":{"id":"w17967465","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:57Z","tags":{"highway":"residential","name":"W Adams St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312177","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978394","n185984022","n185964360"]},"w208627228":{"id":"w208627228","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015897","n2189015900","n2189015903","n2189015906","n2189015897"]},"w201484351":{"id":"w201484351","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807587","n2114807574","n2114807595","n2114807562","n2114807559","n2114807551","n2114807563","n2114807589","n2114807552"]},"w208627239":{"id":"w208627239","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015957","n2189015959","n2189015960","n2189015958","n2189015957"]},"w208627233":{"id":"w208627233","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015934","n2189015937","n2189015940","n2189015943","n2189015945","n2189015949","n2189015934"]},"w208627241":{"id":"w208627241","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015961","n2189015966","n2189015968","n2189015971","n2189015961"]},"w17967970":{"id":"w17967970","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:55:20Z","tags":{"highway":"residential","name":"Adams St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312180","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975351","n185978394"]},"w208627235":{"id":"w208627235","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015940","n2189015952","n2189015955","n2189015937","n2189015940"]},"w17965468":{"id":"w17965468","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:56Z","tags":{"highway":"residential","name":"Armstrong Blvd","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armstrong","tiger:name_type":"Blvd","tiger:reviewed":"no"},"nodes":["n185967917","n2189015998","n185967918","n185964362","n185952166"]},"w201484346":{"id":"w201484346","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807551","n2114807592","n2114807550","n2114807591"]},"w208627242":{"id":"w208627242","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189015974","n2189015977","n2189015980","n2189015983","n2189015986","n2189015989","n2189015974"]},"w208627216":{"id":"w208627216","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015731","n2189015734","n2189015737","n2189015738","n2189015731"]},"n185984309":{"id":"n185984309","loc":[-85.631421,41.961494],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:55Z","tags":{}},"n185987987":{"id":"n185987987","loc":[-85.631456,41.960673],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:29Z","tags":{}},"n185965397":{"id":"n185965397","loc":[-85.634603,41.959838],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"w17965196":{"id":"w17965196","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:10Z","tags":{"highway":"residential","name":"Burke Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Burke","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312145","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965395","n185965397","n185965399"]},"w17967215":{"id":"w17967215","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:56Z","tags":{"highway":"residential","name":"Kellogg Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kellogg","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185968114","n185984309","n185967440","n185978402"]},"w17967597":{"id":"w17967597","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"highway":"residential","name":"Barnard Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Barnard","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185968112","n185987987","n185967438","n185978399"]},"n394490857":{"id":"n394490857","loc":[-85.633952,41.960664],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:00Z","tags":{}},"n394490858":{"id":"n394490858","loc":[-85.633938,41.960227],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:00Z","tags":{}},"n394490859":{"id":"n394490859","loc":[-85.634794,41.960212],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490860":{"id":"n394490860","loc":[-85.634815,41.960662],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490861":{"id":"n394490861","loc":[-85.634103,41.961268],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490862":{"id":"n394490862","loc":[-85.634103,41.961001],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490863":{"id":"n394490863","loc":[-85.634504,41.961003],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490864":{"id":"n394490864","loc":[-85.634561,41.961269],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n1057629869":{"id":"n1057629869","loc":[-85.6382599,41.9612134],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:10Z","tags":{}},"n1057629937":{"id":"n1057629937","loc":[-85.6380035,41.9616137],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:11Z","tags":{}},"n2189016014":{"id":"n2189016014","loc":[-85.6360365,41.9626496],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016017":{"id":"n2189016017","loc":[-85.6360374,41.9623228],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016020":{"id":"n2189016020","loc":[-85.6367557,41.9623239],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016022":{"id":"n2189016022","loc":[-85.6367566,41.9619919],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016025":{"id":"n2189016025","loc":[-85.6351794,41.9619893],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016028":{"id":"n2189016028","loc":[-85.6351788,41.9622011],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016031":{"id":"n2189016031","loc":[-85.6350855,41.9622009],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016034":{"id":"n2189016034","loc":[-85.6350845,41.962527],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016037":{"id":"n2189016037","loc":[-85.6352732,41.9625273],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016039":{"id":"n2189016039","loc":[-85.6352738,41.9623178],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016042":{"id":"n2189016042","loc":[-85.6357712,41.9623186],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016044":{"id":"n2189016044","loc":[-85.6357702,41.9626492],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n1057629880":{"id":"n1057629880","loc":[-85.638817,41.9619017],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:10Z","tags":{}},"n1057629923":{"id":"n1057629923","loc":[-85.6390733,41.9615014],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:11Z","tags":{}},"w91092312":{"id":"w91092312","version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:12Z","tags":{"power":"station"},"nodes":["n1057629923","n1057629869","n1057629937","n1057629880","n1057629923"]},"w34369826":{"id":"w34369826","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490861","n394490862","n394490863","n394490864","n394490861"]},"w34369825":{"id":"w34369825","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490857","n394490858","n394490859","n394490860","n394490857"]},"w208627248":{"id":"w208627248","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189016014","n2189016017","n2189016020","n2189016022","n2189016025","n2189016028","n2189016031","n2189016034","n2189016037","n2189016039","n2189016042","n2189016044","n2189016014"]},"n394490766":{"id":"n394490766","loc":[-85.616777,41.955642],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490768":{"id":"n394490768","loc":[-85.617239,41.955644],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490792":{"id":"n394490792","loc":[-85.619034,41.95543],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n185972055":{"id":"n185972055","loc":[-85.6185905,41.9568211],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972057":{"id":"n185972057","loc":[-85.6186688,41.9570086],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972059":{"id":"n185972059","loc":[-85.6186924,41.9581453],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972060":{"id":"n185972060","loc":[-85.6187082,41.9588211],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{"highway":"turning_circle","source":"Bing"}},"n1819790724":{"id":"n1819790724","loc":[-85.6182155,41.9555703],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790735":{"id":"n1819790735","loc":[-85.6184059,41.9566188],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790799":{"id":"n1819790799","loc":[-85.6182372,41.9563771],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790896":{"id":"n1819790896","loc":[-85.6181431,41.9557227],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n185971405":{"id":"n185971405","loc":[-85.6186766,41.9577468],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971565":{"id":"n185971565","loc":[-85.6181613,41.9560879],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185967985":{"id":"n185967985","loc":[-85.6186798,41.9585791],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955753":{"id":"n185955753","loc":[-85.620773,41.9555854],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955755":{"id":"n185955755","loc":[-85.6212652,41.9559891],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955748":{"id":"n185955748","loc":[-85.620722,41.954858],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185955751":{"id":"n185955751","loc":[-85.6206912,41.955367],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185967987":{"id":"n185967987","loc":[-85.6159351,41.9585809],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971407":{"id":"n185971407","loc":[-85.6159142,41.9577578],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971570":{"id":"n185971570","loc":[-85.6162248,41.95603],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971572":{"id":"n185971572","loc":[-85.6160402,41.9560749],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971574":{"id":"n185971574","loc":[-85.61593,41.956201],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185981301":{"id":"n185981301","loc":[-85.6158973,41.9581601],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n394490762":{"id":"n394490762","loc":[-85.617193,41.954706],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490764":{"id":"n394490764","loc":[-85.616773,41.954737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490787":{"id":"n394490787","loc":[-85.618972,41.954737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490790":{"id":"n394490790","loc":[-85.619046,41.954929],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490794":{"id":"n394490794","loc":[-85.619922,41.955296],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490796":{"id":"n394490796","loc":[-85.61991,41.95501],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490798":{"id":"n394490798","loc":[-85.619974,41.954751],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n1819790677":{"id":"n1819790677","loc":[-85.6187031,41.9550522],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790787":{"id":"n1819790787","loc":[-85.6186436,41.9552022],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790828":{"id":"n1819790828","loc":[-85.6185127,41.9553393],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"w17966857":{"id":"w17966857","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:47:55Z","tags":{"access":"private","highway":"service","name":"Sable River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Sable River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326128","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972059","n185981301"]},"w34369814":{"id":"w34369814","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490787","n394490790","n394490792","n394490794","n394490796","n394490798","n394490787"]},"w17964176":{"id":"w17964176","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:27:42Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314404","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955747","n185955748","n185955751","n185955753","n185955755"]},"w17965838":{"id":"w17965838","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:09Z","tags":{"access":"private","highway":"service","name":"Pine River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Pine River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326123","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971405","n185971407"]},"w17965476":{"id":"w17965476","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:37:16Z","tags":{"access":"private","highway":"service","name":"Raisin River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Raisin River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326112","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185967985","n185967987"]},"w17965913":{"id":"w17965913","version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:06Z","tags":{"access":"private","highway":"service","name":"Shiawassee River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Shiawassee River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326124:15326125:15326111:15326113:15326119","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972054","n1819790677","n1819790787","n1819790828","n1819790724","n1819790896","n185971565","n1819790799","n1819790735","n185972055","n185972057","n185971405","n185972059","n185967985","n185972060"]},"w34369811":{"id":"w34369811","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490762","n394490764","n394490766","n394490768","n394490762"]},"w17965854":{"id":"w17965854","version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:06Z","tags":{"access":"private","highway":"service","name":"Sturgeon River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Sturgeon River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326117","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971565","n185971570","n185971572","n185971574"]},"n2139795769":{"id":"n2139795769","loc":[-85.6250804,41.9608796],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795770":{"id":"n2139795770","loc":[-85.6250315,41.9613684],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795771":{"id":"n2139795771","loc":[-85.6249671,41.9614362],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795772":{"id":"n2139795772","loc":[-85.6249698,41.961522],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795773":{"id":"n2139795773","loc":[-85.6250798,41.9615838],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795774":{"id":"n2139795774","loc":[-85.6252273,41.9615639],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795775":{"id":"n2139795775","loc":[-85.6252863,41.9614622],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795776":{"id":"n2139795776","loc":[-85.6252273,41.9613764],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795777":{"id":"n2139795777","loc":[-85.6251227,41.9613525],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795778":{"id":"n2139795778","loc":[-85.6249564,41.9612527],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795779":{"id":"n2139795779","loc":[-85.6249846,41.9610254],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795780":{"id":"n2139795780","loc":[-85.6266725,41.9599647],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795781":{"id":"n2139795781","loc":[-85.6259162,41.9599711],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795782":{"id":"n2139795782","loc":[-85.6257185,41.960019],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795783":{"id":"n2139795783","loc":[-85.6255509,41.9601213],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n185963539":{"id":"n185963539","loc":[-85.615718,41.983893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:58Z","tags":{}},"n185964418":{"id":"n185964418","loc":[-85.616626,42.049512],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:23Z","tags":{}},"n185966614":{"id":"n185966614","loc":[-85.615514,41.976603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:41Z","tags":{}},"n185966635":{"id":"n185966635","loc":[-85.616118,42.013017],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:42Z","tags":{}},"n185969040":{"id":"n185969040","loc":[-85.615632,41.972357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:45Z","tags":{}},"n185969070":{"id":"n185969070","loc":[-85.619145,41.967648],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:46Z","tags":{}},"n185972156":{"id":"n185972156","loc":[-85.621894,41.963956],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972157":{"id":"n185972157","loc":[-85.621806,41.964077],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972158":{"id":"n185972158","loc":[-85.620848,41.965341],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972159":{"id":"n185972159","loc":[-85.620684,41.965558],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972160":{"id":"n185972160","loc":[-85.620621,41.965658],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972161":{"id":"n185972161","loc":[-85.617844,41.969359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972162":{"id":"n185972162","loc":[-85.616843,41.97068],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972164":{"id":"n185972164","loc":[-85.616714,41.970839],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972166":{"id":"n185972166","loc":[-85.615879,41.971969],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972168":{"id":"n185972168","loc":[-85.615748,41.972159],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972170":{"id":"n185972170","loc":[-85.615589,41.972502],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972172":{"id":"n185972172","loc":[-85.615542,41.972733],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972175":{"id":"n185972175","loc":[-85.615524,41.972947],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972177":{"id":"n185972177","loc":[-85.615512,41.973715],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972179":{"id":"n185972179","loc":[-85.615513,41.976496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972180":{"id":"n185972180","loc":[-85.615538,41.977246],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972181":{"id":"n185972181","loc":[-85.61558,41.982139],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972184":{"id":"n185972184","loc":[-85.61557,41.983317],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972186":{"id":"n185972186","loc":[-85.615591,41.983463],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972188":{"id":"n185972188","loc":[-85.615763,41.984146],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972190":{"id":"n185972190","loc":[-85.615814,41.98435],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972192":{"id":"n185972192","loc":[-85.615965,41.998453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972194":{"id":"n185972194","loc":[-85.615982,42.001237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972195":{"id":"n185972195","loc":[-85.616055,42.00555],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972197":{"id":"n185972197","loc":[-85.616134,42.014887],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972199":{"id":"n185972199","loc":[-85.616177,42.018465],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972201":{"id":"n185972201","loc":[-85.616298,42.027627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972203":{"id":"n185972203","loc":[-85.616513,42.042212],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"w203968015":{"id":"w203968015","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential"},"nodes":["n2139795768","n2139795769"]},"w17965932":{"id":"w17965932","version":"2","changeset":"14531170","user":"bot-mode","uid":"451693","visible":"true","timestamp":"2013-01-04T21:15:18Z","tags":{"highway":"residential","name":"Buckhorn Road","name_1":"County Highway 122","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Buckhorn","tiger:name_base_1":"County Highway 122","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972155","n185972156","n185972157","n185972158","n185972159","n185972160","n185969070","n185972161","n185972162","n185972164","n185972166","n185972168","n185969040","n185972170","n185972172","n185972175","n185972177","n185972179","n185966614","n185972180","n185972181","n185972184","n185972186","n185963539","n185972188","n185972190","n185972192","n185972194","n185972195","n185966635","n185972197","n185972199","n185972201","n185972203","n185964418"]},"w203968016":{"id":"w203968016","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential","name":"New Jersey Court"},"nodes":["n2139795770","n2139795771","n2139795772","n2139795773","n2139795774","n2139795775","n2139795776","n2139795777","n2139795770","n2139795778","n2139795779","n2139795769"]},"w203968017":{"id":"w203968017","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential","name":"Oklahoma Drive"},"nodes":["n2139795780","n2139795781","n2139795782","n2139795783","n2139795769"]},"n1819790528":{"id":"n1819790528","loc":[-85.6184827,41.960025],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790530":{"id":"n1819790530","loc":[-85.6168626,41.9605834],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790534":{"id":"n1819790534","loc":[-85.6197379,41.9617163],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790541":{"id":"n1819790541","loc":[-85.6198881,41.9620833],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790543":{"id":"n1819790543","loc":[-85.619695,41.9619397],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790547":{"id":"n1819790547","loc":[-85.6190298,41.9609504],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790555":{"id":"n1819790555","loc":[-85.6180471,41.9609788],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790559":{"id":"n1819790559","loc":[-85.6203817,41.9605436],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790583":{"id":"n1819790583","loc":[-85.6201564,41.9603282],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790590":{"id":"n1819790590","loc":[-85.617045,41.9598894],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790609":{"id":"n1819790609","loc":[-85.6177638,41.9598495],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790618":{"id":"n1819790618","loc":[-85.6195234,41.9610143],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790642":{"id":"n1819790642","loc":[-85.6181179,41.9627933],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790659":{"id":"n1819790659","loc":[-85.6174634,41.962897],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790665":{"id":"n1819790665","loc":[-85.6170343,41.9630885],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790674":{"id":"n1819790674","loc":[-85.6194697,41.9601925],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790685":{"id":"n1819790685","loc":[-85.6207722,41.9610665],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790687":{"id":"n1819790687","loc":[-85.6202315,41.9622109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790697":{"id":"n1819790697","loc":[-85.6184505,41.9624662],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790726":{"id":"n1819790726","loc":[-85.6178926,41.9628492],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790738":{"id":"n1819790738","loc":[-85.6173347,41.9598016],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790762":{"id":"n1819790762","loc":[-85.6186221,41.9609105],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790774":{"id":"n1819790774","loc":[-85.6175922,41.9608308],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790781":{"id":"n1819790781","loc":[-85.6167768,41.9633198],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790796":{"id":"n1819790796","loc":[-85.619856,41.961461],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790811":{"id":"n1819790811","loc":[-85.6208215,41.9620195],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790833":{"id":"n1819790833","loc":[-85.618311,41.9612536],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790854":{"id":"n1819790854","loc":[-85.6183646,41.9626417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790863":{"id":"n1819790863","loc":[-85.6204997,41.9608547],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790867":{"id":"n1819790867","loc":[-85.6184934,41.9621391],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790877":{"id":"n1819790877","loc":[-85.6206928,41.9621152],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790881":{"id":"n1819790881","loc":[-85.6170879,41.960735],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790891":{"id":"n1819790891","loc":[-85.6168304,41.9601207],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790898":{"id":"n1819790898","loc":[-85.619813,41.9612297],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790909":{"id":"n1819790909","loc":[-85.6167982,41.960376],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790912":{"id":"n1819790912","loc":[-85.6205855,41.9610462],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790544":{"id":"n1819790544","loc":[-85.612968,41.9707781],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790549":{"id":"n1819790549","loc":[-85.614395,41.9697172],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790552":{"id":"n1819790552","loc":[-85.6180535,41.9655536],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790554":{"id":"n1819790554","loc":[-85.6111227,41.9703713],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790560":{"id":"n1819790560","loc":[-85.6112729,41.9701958],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790563":{"id":"n1819790563","loc":[-85.6137512,41.9689917],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790564":{"id":"n1819790564","loc":[-85.6181072,41.9659205],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790595":{"id":"n1819790595","loc":[-85.6170021,41.9666863],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790605":{"id":"n1819790605","loc":[-85.6168948,41.9644527],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790606":{"id":"n1819790606","loc":[-85.6128071,41.9701081],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790607":{"id":"n1819790607","loc":[-85.6129251,41.9704032],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790612":{"id":"n1819790612","loc":[-85.6177638,41.9663912],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790615":{"id":"n1819790615","loc":[-85.6152533,41.9670373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790622":{"id":"n1819790622","loc":[-85.6146739,41.9673804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790623":{"id":"n1819790623","loc":[-85.6180428,41.9661838],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790625":{"id":"n1819790625","loc":[-85.6172918,41.9646202],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790645":{"id":"n1819790645","loc":[-85.6178067,41.965043],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790647":{"id":"n1819790647","loc":[-85.6143306,41.9712488],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790649":{"id":"n1819790649","loc":[-85.6147383,41.9707702],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790654":{"id":"n1819790654","loc":[-85.6157361,41.9668459],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790657":{"id":"n1819790657","loc":[-85.6145666,41.9710733],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790668":{"id":"n1819790668","loc":[-85.6166909,41.9642692],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790671":{"id":"n1819790671","loc":[-85.6141482,41.9696538],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790679":{"id":"n1819790679","loc":[-85.6148349,41.9705388],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790686":{"id":"n1819790686","loc":[-85.6139551,41.9695501],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790696":{"id":"n1819790696","loc":[-85.6119703,41.9699087],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790704":{"id":"n1819790704","loc":[-85.6140731,41.9684174],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790706":{"id":"n1819790706","loc":[-85.6124745,41.9699246],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790718":{"id":"n1819790718","loc":[-85.6165407,41.9636868],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790720":{"id":"n1819790720","loc":[-85.61388,41.9687365],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790731":{"id":"n1819790731","loc":[-85.6165193,41.9639421],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790739":{"id":"n1819790739","loc":[-85.6146739,41.9699964],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790753":{"id":"n1819790753","loc":[-85.6173883,41.9665747],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790760":{"id":"n1819790760","loc":[-85.6133221,41.9712089],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790767":{"id":"n1819790767","loc":[-85.6116698,41.9699246],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790779":{"id":"n1819790779","loc":[-85.6130753,41.9710573],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790791":{"id":"n1819790791","loc":[-85.6137083,41.9692869],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790795":{"id":"n1819790795","loc":[-85.6141482,41.9679627],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790798":{"id":"n1819790798","loc":[-85.6137727,41.9694305],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790836":{"id":"n1819790836","loc":[-85.6143842,41.9676037],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790915":{"id":"n1819790915","loc":[-85.6148456,41.9702756],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790926":{"id":"n1819790926","loc":[-85.6138371,41.9713525],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790927":{"id":"n1819790927","loc":[-85.6141053,41.9713525],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790931":{"id":"n1819790931","loc":[-85.6162832,41.966814],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1821014625":{"id":"n1821014625","loc":[-85.5960611,41.9808498],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014627":{"id":"n1821014627","loc":[-85.5565843,42.010982],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014629":{"id":"n1821014629","loc":[-85.5971541,41.9805808],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014632":{"id":"n1821014632","loc":[-85.6061837,41.9725907],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014633":{"id":"n1821014633","loc":[-85.5247773,42.025766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014635":{"id":"n1821014635","loc":[-85.5908938,41.9902384],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014636":{"id":"n1821014636","loc":[-85.5917682,41.9860637],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014637":{"id":"n1821014637","loc":[-85.5456556,42.0166797],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014638":{"id":"n1821014638","loc":[-85.5795749,42.0032352],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014639":{"id":"n1821014639","loc":[-85.6103988,41.9723456],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014642":{"id":"n1821014642","loc":[-85.5818816,42.0022466],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014643":{"id":"n1821014643","loc":[-85.5570604,42.0091586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014644":{"id":"n1821014644","loc":[-85.5952886,41.9803792],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014645":{"id":"n1821014645","loc":[-85.5780366,42.0040343],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014646":{"id":"n1821014646","loc":[-85.6050505,41.9751971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014647":{"id":"n1821014647","loc":[-85.5854435,41.9946162],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014648":{"id":"n1821014648","loc":[-85.5452278,42.0168768],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014649":{"id":"n1821014649","loc":[-85.6023254,41.9780166],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014651":{"id":"n1821014651","loc":[-85.5761899,42.0046783],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014653":{"id":"n1821014653","loc":[-85.5897351,41.9876707],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014657":{"id":"n1821014657","loc":[-85.5963601,41.9808998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014658":{"id":"n1821014658","loc":[-85.5892952,41.9951983],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014660":{"id":"n1821014660","loc":[-85.5778328,42.0037194],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014661":{"id":"n1821014661","loc":[-85.5541475,42.0125705],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014663":{"id":"n1821014663","loc":[-85.5914047,41.9856469],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014664":{"id":"n1821014664","loc":[-85.6101681,41.9727723],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014665":{"id":"n1821014665","loc":[-85.5910172,41.9854696],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014666":{"id":"n1821014666","loc":[-85.5398688,42.0187699],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014667":{"id":"n1821014667","loc":[-85.5218752,42.0282884],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014668":{"id":"n1821014668","loc":[-85.5159582,42.0329384],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014669":{"id":"n1821014669","loc":[-85.5898102,41.9847319],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014670":{"id":"n1821014670","loc":[-85.5734809,42.0066235],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014671":{"id":"n1821014671","loc":[-85.5922939,41.980852],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014672":{"id":"n1821014672","loc":[-85.6023629,41.9781163],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014674":{"id":"n1821014674","loc":[-85.5409953,42.0191724],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014676":{"id":"n1821014676","loc":[-85.584435,41.9949909],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014677":{"id":"n1821014677","loc":[-85.5972399,41.9783835],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014678":{"id":"n1821014678","loc":[-85.5616738,42.0071337],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014681":{"id":"n1821014681","loc":[-85.5202994,42.0310755],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014682":{"id":"n1821014682","loc":[-85.5915912,41.9857767],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014684":{"id":"n1821014684","loc":[-85.6022288,41.977897],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014687":{"id":"n1821014687","loc":[-85.5933024,41.9846362],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014688":{"id":"n1821014688","loc":[-85.5846871,41.9956169],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014689":{"id":"n1821014689","loc":[-85.5898209,41.99037],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014691":{"id":"n1821014691","loc":[-85.5448939,42.0149261],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014692":{"id":"n1821014692","loc":[-85.5977763,41.9786348],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014694":{"id":"n1821014694","loc":[-85.5767706,42.0034523],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014695":{"id":"n1821014695","loc":[-85.6103559,41.9726766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014697":{"id":"n1821014697","loc":[-85.5922134,41.9809876],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014698":{"id":"n1821014698","loc":[-85.5935277,41.9831728],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014700":{"id":"n1821014700","loc":[-85.5674674,42.0078273],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014703":{"id":"n1821014703","loc":[-85.6021,41.9778053],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014704":{"id":"n1821014704","loc":[-85.5756763,42.0053737],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014705":{"id":"n1821014705","loc":[-85.5887695,41.9895207],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014707":{"id":"n1821014707","loc":[-85.6061073,41.9746866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014708":{"id":"n1821014708","loc":[-85.6033446,41.9751692],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014710":{"id":"n1821014710","loc":[-85.5180986,42.0322332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014711":{"id":"n1821014711","loc":[-85.543365,42.0163569],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014712":{"id":"n1821014712","loc":[-85.6030656,41.9753646],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014713":{"id":"n1821014713","loc":[-85.6104417,41.9704792],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014714":{"id":"n1821014714","loc":[-85.5205716,42.030998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014716":{"id":"n1821014716","loc":[-85.516382,42.032536],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014717":{"id":"n1821014717","loc":[-85.5932863,41.9820882],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014718":{"id":"n1821014718","loc":[-85.5361928,42.0194974],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014720":{"id":"n1821014720","loc":[-85.6011613,41.9773586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014721":{"id":"n1821014721","loc":[-85.554287,42.0109124],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014722":{"id":"n1821014722","loc":[-85.5577524,42.0103425],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014725":{"id":"n1821014725","loc":[-85.5867256,41.9921004],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014726":{"id":"n1821014726","loc":[-85.5856045,41.9968807],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014727":{"id":"n1821014727","loc":[-85.5545445,42.0106454],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014728":{"id":"n1821014728","loc":[-85.5923797,41.9842534],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014729":{"id":"n1821014729","loc":[-85.5696346,42.0081462],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014730":{"id":"n1821014730","loc":[-85.5998322,41.9786884],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014735":{"id":"n1821014735","loc":[-85.5337426,42.0218266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014736":{"id":"n1821014736","loc":[-85.5847944,41.994672],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014740":{"id":"n1821014740","loc":[-85.5315271,42.0238669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014741":{"id":"n1821014741","loc":[-85.5248846,42.027085],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014742":{"id":"n1821014742","loc":[-85.5853376,41.997018],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014743":{"id":"n1821014743","loc":[-85.5894883,41.988811],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014745":{"id":"n1821014745","loc":[-85.6095311,41.9726226],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014746":{"id":"n1821014746","loc":[-85.5531511,42.0133416],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014747":{"id":"n1821014747","loc":[-85.5735882,42.007058],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014749":{"id":"n1821014749","loc":[-85.5428554,42.0164366],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014751":{"id":"n1821014751","loc":[-85.5395255,42.0186304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014752":{"id":"n1821014752","loc":[-85.571378,42.0083176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014754":{"id":"n1821014754","loc":[-85.5541918,42.0113925],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014755":{"id":"n1821014755","loc":[-85.5278029,42.0250806],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014756":{"id":"n1821014756","loc":[-85.5936725,41.9827102],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014757":{"id":"n1821014757","loc":[-85.5176266,42.0346677],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014758":{"id":"n1821014758","loc":[-85.6096692,41.9714245],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014759":{"id":"n1821014759","loc":[-85.5770321,42.0034266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014761":{"id":"n1821014761","loc":[-85.5988921,41.9779369],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014762":{"id":"n1821014762","loc":[-85.5811788,42.0024499],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014763":{"id":"n1821014763","loc":[-85.5154003,42.0381101],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014764":{"id":"n1821014764","loc":[-85.5155827,42.0374089],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014765":{"id":"n1821014765","loc":[-85.5891249,41.9884978],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014766":{"id":"n1821014766","loc":[-85.5313863,42.0238293],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014768":{"id":"n1821014768","loc":[-85.593297,41.9833363],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014769":{"id":"n1821014769","loc":[-85.5849446,41.9957245],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014770":{"id":"n1821014770","loc":[-85.5537774,42.0130847],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014771":{"id":"n1821014771","loc":[-85.6111766,41.9706069],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014772":{"id":"n1821014772","loc":[-85.5585477,42.008989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014774":{"id":"n1821014774","loc":[-85.5928142,41.9852623],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014777":{"id":"n1821014777","loc":[-85.5891933,41.9882608],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014778":{"id":"n1821014778","loc":[-85.5926909,41.9817532],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014779":{"id":"n1821014779","loc":[-85.5260272,42.0252201],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014781":{"id":"n1821014781","loc":[-85.5894615,41.9950468],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014782":{"id":"n1821014782","loc":[-85.5461063,42.0143242],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014783":{"id":"n1821014783","loc":[-85.5711527,42.0085886],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014784":{"id":"n1821014784","loc":[-85.5329379,42.0218624],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014786":{"id":"n1821014786","loc":[-85.583047,42.0020252],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014787":{"id":"n1821014787","loc":[-85.5758962,42.0054095],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014788":{"id":"n1821014788","loc":[-85.5626354,42.0077733],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014789":{"id":"n1821014789","loc":[-85.6029852,41.9755999],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014790":{"id":"n1821014790","loc":[-85.5892362,41.9886755],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014791":{"id":"n1821014791","loc":[-85.5157597,42.0372017],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014793":{"id":"n1821014793","loc":[-85.6054582,41.9751094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014794":{"id":"n1821014794","loc":[-85.5986936,41.9778412],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014795":{"id":"n1821014795","loc":[-85.5880775,41.98976],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014796":{"id":"n1821014796","loc":[-85.5858727,41.9963624],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014798":{"id":"n1821014798","loc":[-85.5792543,42.0035958],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014799":{"id":"n1821014799","loc":[-85.5921665,41.9838326],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014801":{"id":"n1821014801","loc":[-85.599214,41.9782599],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014802":{"id":"n1821014802","loc":[-85.5571905,42.0090967],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014803":{"id":"n1821014803","loc":[-85.5426891,42.0173612],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014804":{"id":"n1821014804","loc":[-85.5889626,41.9896404],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014805":{"id":"n1821014805","loc":[-85.5491264,42.0141648],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014806":{"id":"n1821014806","loc":[-85.5618897,42.0072631],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014808":{"id":"n1821014808","loc":[-85.5573501,42.0109802],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014809":{"id":"n1821014809","loc":[-85.5983463,41.9778031],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014810":{"id":"n1821014810","loc":[-85.5885173,41.9895128],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014811":{"id":"n1821014811","loc":[-85.6084998,41.9721143],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014812":{"id":"n1821014812","loc":[-85.5737598,42.0056389],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014814":{"id":"n1821014814","loc":[-85.5542173,42.0118132],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014816":{"id":"n1821014816","loc":[-85.5277868,42.024451],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014817":{"id":"n1821014817","loc":[-85.5403999,42.0191724],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014819":{"id":"n1821014819","loc":[-85.5983879,41.9791452],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014820":{"id":"n1821014820","loc":[-85.5891302,41.9897578],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014822":{"id":"n1821014822","loc":[-85.5930731,41.9805108],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014824":{"id":"n1821014824","loc":[-85.515395,42.0378471],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014825":{"id":"n1821014825","loc":[-85.5352755,42.0205136],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014826":{"id":"n1821014826","loc":[-85.5502744,42.0133398],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014828":{"id":"n1821014828","loc":[-85.5701295,42.0088256],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014830":{"id":"n1821014830","loc":[-85.5888929,41.9953099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014832":{"id":"n1821014832","loc":[-85.5880077,41.9901547],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014833":{"id":"n1821014833","loc":[-85.5451192,42.0157072],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014834":{"id":"n1821014834","loc":[-85.6096478,41.9711932],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014835":{"id":"n1821014835","loc":[-85.5806424,42.0026532],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014836":{"id":"n1821014836","loc":[-85.5911674,41.9868732],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014838":{"id":"n1821014838","loc":[-85.5930302,41.9836571],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014839":{"id":"n1821014839","loc":[-85.588925,41.9938148],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014840":{"id":"n1821014840","loc":[-85.6111874,41.9705311],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014841":{"id":"n1821014841","loc":[-85.5680843,42.0075842],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014842":{"id":"n1821014842","loc":[-85.6012793,41.9775062],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014843":{"id":"n1821014843","loc":[-85.5855562,41.9989777],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014844":{"id":"n1821014844","loc":[-85.5506137,42.0131662],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014845":{"id":"n1821014845","loc":[-85.5270049,42.025457],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014846":{"id":"n1821014846","loc":[-85.5257054,42.025244],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014847":{"id":"n1821014847","loc":[-85.6011184,41.9771832],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014848":{"id":"n1821014848","loc":[-85.515534,42.0389234],"version":"2","changeset":"15306911","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:57:21Z","tags":{}},"n1821014850":{"id":"n1821014850","loc":[-85.5847032,42.0010347],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014853":{"id":"n1821014853","loc":[-85.5361499,42.019063],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014854":{"id":"n1821014854","loc":[-85.5439176,42.0165721],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014855":{"id":"n1821014855","loc":[-85.5838825,42.0017284],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014857":{"id":"n1821014857","loc":[-85.5542173,42.0122317],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014859":{"id":"n1821014859","loc":[-85.5708201,42.0089195],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014860":{"id":"n1821014860","loc":[-85.5844833,41.9954415],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014862":{"id":"n1821014862","loc":[-85.5223204,42.0295396],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014863":{"id":"n1821014863","loc":[-85.5777898,42.0035918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014864":{"id":"n1821014864","loc":[-85.591044,41.9898078],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014865":{"id":"n1821014865","loc":[-85.5973204,41.980182],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014866":{"id":"n1821014866","loc":[-85.5699578,42.0085825],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014867":{"id":"n1821014867","loc":[-85.5210598,42.0305278],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014868":{"id":"n1821014868","loc":[-85.5929108,41.9819008],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014869":{"id":"n1821014869","loc":[-85.5279799,42.0242995],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014870":{"id":"n1821014870","loc":[-85.5196114,42.0320539],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014871":{"id":"n1821014871","loc":[-85.5785449,42.0040883],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014872":{"id":"n1821014872","loc":[-85.588292,41.9895766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014873":{"id":"n1821014873","loc":[-85.5160172,42.0331775],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014874":{"id":"n1821014874","loc":[-85.5688849,42.0077016],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014876":{"id":"n1821014876","loc":[-85.5857976,41.9996036],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014879":{"id":"n1821014879","loc":[-85.5990906,41.9780765],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014881":{"id":"n1821014881","loc":[-85.5483647,42.0144279],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014883":{"id":"n1821014883","loc":[-85.5691209,42.0077972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014885":{"id":"n1821014885","loc":[-85.6076844,41.9721103],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014886":{"id":"n1821014886","loc":[-85.6015489,41.9766147],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014887":{"id":"n1821014887","loc":[-85.574822,42.0052802],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014888":{"id":"n1821014888","loc":[-85.5880024,41.9899593],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014890":{"id":"n1821014890","loc":[-85.5909421,41.9893772],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014892":{"id":"n1821014892","loc":[-85.5497326,42.0138141],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014893":{"id":"n1821014893","loc":[-85.5167106,42.0357811],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014895":{"id":"n1821014895","loc":[-85.5844404,41.9952501],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014896":{"id":"n1821014896","loc":[-85.5362465,42.0192662],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014898":{"id":"n1821014898","loc":[-85.5906095,41.9889147],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014899":{"id":"n1821014899","loc":[-85.5590667,42.0089354],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014900":{"id":"n1821014900","loc":[-85.5921598,41.9844209],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014902":{"id":"n1821014902","loc":[-85.5778971,42.0039266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014903":{"id":"n1821014903","loc":[-85.603012,41.9761981],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014904":{"id":"n1821014904","loc":[-85.6108977,41.9706787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014905":{"id":"n1821014905","loc":[-85.5685738,42.0076139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014906":{"id":"n1821014906","loc":[-85.5392787,42.0186304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014907":{"id":"n1821014907","loc":[-85.5227885,42.0274972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014908":{"id":"n1821014908","loc":[-85.5857547,41.9961431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014910":{"id":"n1821014910","loc":[-85.5610354,42.0072812],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014911":{"id":"n1821014911","loc":[-85.5209632,42.0308705],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014912":{"id":"n1821014912","loc":[-85.5709757,42.0087959],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014913":{"id":"n1821014913","loc":[-85.59231,41.9839344],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014914":{"id":"n1821014914","loc":[-85.5375245,42.0185865],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014916":{"id":"n1821014916","loc":[-85.5901548,41.9839841],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014917":{"id":"n1821014917","loc":[-85.5611213,42.0086405],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014918":{"id":"n1821014918","loc":[-85.5360426,42.0198122],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014919":{"id":"n1821014919","loc":[-85.5862817,41.9948691],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014921":{"id":"n1821014921","loc":[-85.5469807,42.0144438],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014922":{"id":"n1821014922","loc":[-85.5761309,42.0053838],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014924":{"id":"n1821014924","loc":[-85.516264,42.0332971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014925":{"id":"n1821014925","loc":[-85.5277224,42.0246661],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014926":{"id":"n1821014926","loc":[-85.5980016,41.9798231],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014928":{"id":"n1821014928","loc":[-85.5924548,41.9806965],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014930":{"id":"n1821014930","loc":[-85.5899121,41.985023],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014931":{"id":"n1821014931","loc":[-85.5706015,42.0089492],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014932":{"id":"n1821014932","loc":[-85.515926,42.033046],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014933":{"id":"n1821014933","loc":[-85.5982377,41.9796796],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014936":{"id":"n1821014936","loc":[-85.5475721,42.0145253],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014938":{"id":"n1821014938","loc":[-85.5895701,41.9902323],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014939":{"id":"n1821014939","loc":[-85.6030495,41.9759947],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014942":{"id":"n1821014942","loc":[-85.6094721,41.9724989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014944":{"id":"n1821014944","loc":[-85.5921973,41.9811112],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014945":{"id":"n1821014945","loc":[-85.5223526,42.0291332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014946":{"id":"n1821014946","loc":[-85.5965103,41.9808998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014948":{"id":"n1821014948","loc":[-85.517766,42.0349227],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014950":{"id":"n1821014950","loc":[-85.5889894,41.990996],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014951":{"id":"n1821014951","loc":[-85.5601932,42.0092902],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014954":{"id":"n1821014954","loc":[-85.6028135,41.9764055],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014955":{"id":"n1821014955","loc":[-85.5520621,42.0130666],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014956":{"id":"n1821014956","loc":[-85.593002,41.9839344],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014957":{"id":"n1821014957","loc":[-85.515926,42.0369666],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014960":{"id":"n1821014960","loc":[-85.5761255,42.003877],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014961":{"id":"n1821014961","loc":[-85.5716355,42.007911],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014962":{"id":"n1821014962","loc":[-85.5575378,42.0109045],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014963":{"id":"n1821014963","loc":[-85.5735667,42.0068188],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014964":{"id":"n1821014964","loc":[-85.5915214,41.9865861],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014965":{"id":"n1821014965","loc":[-85.5866344,41.9923157],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014967":{"id":"n1821014967","loc":[-85.5283138,42.0242256],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014968":{"id":"n1821014968","loc":[-85.5177875,42.0355801],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014969":{"id":"n1821014969","loc":[-85.548071,42.0144934],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014972":{"id":"n1821014972","loc":[-85.5611159,42.0088557],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014973":{"id":"n1821014973","loc":[-85.541686,42.0188757],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014974":{"id":"n1821014974","loc":[-85.5917628,41.9862631],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014975":{"id":"n1821014975","loc":[-85.5854864,41.9959478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014977":{"id":"n1821014977","loc":[-85.609102,41.9722317],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014980":{"id":"n1821014980","loc":[-85.5761202,42.0042438],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014982":{"id":"n1821014982","loc":[-85.5465944,42.0143601],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014983":{"id":"n1821014983","loc":[-85.5173261,42.0342732],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014984":{"id":"n1821014984","loc":[-85.5897297,41.9888509],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014985":{"id":"n1821014985","loc":[-85.5856688,41.999181],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014986":{"id":"n1821014986","loc":[-85.5344011,42.0217251],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014987":{"id":"n1821014987","loc":[-85.601467,41.9768203],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014988":{"id":"n1821014988","loc":[-85.5457254,42.0165123],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014989":{"id":"n1821014989","loc":[-85.6023482,41.9784332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014991":{"id":"n1821014991","loc":[-85.5361606,42.01823],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014992":{"id":"n1821014992","loc":[-85.5178465,42.0351139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014995":{"id":"n1821014995","loc":[-85.5634293,42.0078092],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014996":{"id":"n1821014996","loc":[-85.573497,42.0072015],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014997":{"id":"n1821014997","loc":[-85.5976328,41.9799725],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014998":{"id":"n1821014998","loc":[-85.5210651,42.0303166],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015003":{"id":"n1821015003","loc":[-85.5222131,42.0288064],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015004":{"id":"n1821015004","loc":[-85.5897941,41.984405],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015005":{"id":"n1821015005","loc":[-85.5975725,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015006":{"id":"n1821015006","loc":[-85.5765708,42.0034903],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015007":{"id":"n1821015007","loc":[-85.5250187,42.026559],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015009":{"id":"n1821015009","loc":[-85.5426998,42.0166279],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015010":{"id":"n1821015010","loc":[-85.5957606,41.9806584],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015011":{"id":"n1821015011","loc":[-85.5262753,42.0252497],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015012":{"id":"n1821015012","loc":[-85.5266455,42.0253374],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015014":{"id":"n1821015014","loc":[-85.5515632,42.0130187],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015015":{"id":"n1821015015","loc":[-85.6024058,41.9765212],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015017":{"id":"n1821015017","loc":[-85.5175032,42.0357156],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015018":{"id":"n1821015018","loc":[-85.5302718,42.0236039],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015019":{"id":"n1821015019","loc":[-85.6024005,41.9782759],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015020":{"id":"n1821015020","loc":[-85.5907758,41.9890821],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015021":{"id":"n1821015021","loc":[-85.6019445,41.9777215],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015022":{"id":"n1821015022","loc":[-85.5942854,41.9800881],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015024":{"id":"n1821015024","loc":[-85.5325826,42.0222711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015029":{"id":"n1821015029","loc":[-85.555093,42.0105316],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015033":{"id":"n1821015033","loc":[-85.5249704,42.0270372],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015034":{"id":"n1821015034","loc":[-85.5243965,42.0272205],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015038":{"id":"n1821015038","loc":[-85.5413426,42.0190749],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015039":{"id":"n1821015039","loc":[-85.5920431,41.9848175],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015041":{"id":"n1821015041","loc":[-85.5577685,42.0106015],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015042":{"id":"n1821015042","loc":[-85.5453606,42.0158866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015045":{"id":"n1821015045","loc":[-85.5333228,42.0217889],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015046":{"id":"n1821015046","loc":[-85.5426891,42.0175924],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015048":{"id":"n1821015048","loc":[-85.5886836,41.9936474],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015050":{"id":"n1821015050","loc":[-85.6001152,41.9786467],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015051":{"id":"n1821015051","loc":[-85.6094064,41.9723655],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015053":{"id":"n1821015053","loc":[-85.605721,41.9749738],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015055":{"id":"n1821015055","loc":[-85.6106791,41.9705048],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015057":{"id":"n1821015057","loc":[-85.5210437,42.0307071],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015059":{"id":"n1821015059","loc":[-85.5995694,41.9786725],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015060":{"id":"n1821015060","loc":[-85.5371638,42.0182938],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015062":{"id":"n1821015062","loc":[-85.6111766,41.9704593],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015065":{"id":"n1821015065","loc":[-85.577704,42.0034921],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015067":{"id":"n1821015067","loc":[-85.5570067,42.0093699],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015068":{"id":"n1821015068","loc":[-85.5920364,41.9845525],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015069":{"id":"n1821015069","loc":[-85.5252065,42.0253954],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015072":{"id":"n1821015072","loc":[-85.5664159,42.0088517],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015073":{"id":"n1821015073","loc":[-85.5880399,41.991905],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015075":{"id":"n1821015075","loc":[-85.6099871,41.9727861],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015076":{"id":"n1821015076","loc":[-85.5319603,42.0231478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015078":{"id":"n1821015078","loc":[-85.6036088,41.9751112],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015080":{"id":"n1821015080","loc":[-85.5983128,41.9789179],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015082":{"id":"n1821015082","loc":[-85.5614069,42.0071395],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015083":{"id":"n1821015083","loc":[-85.60968,41.9709738],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015086":{"id":"n1821015086","loc":[-85.5914195,41.9837351],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015087":{"id":"n1821015087","loc":[-85.5895473,41.9948036],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015090":{"id":"n1821015090","loc":[-85.5929913,41.9851905],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015093":{"id":"n1821015093","loc":[-85.5907396,41.9838485],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015095":{"id":"n1821015095","loc":[-85.5893864,41.9880176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015096":{"id":"n1821015096","loc":[-85.5788024,42.0039807],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015097":{"id":"n1821015097","loc":[-85.5630592,42.0078411],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015098":{"id":"n1821015098","loc":[-85.5350609,42.0211274],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015099":{"id":"n1821015099","loc":[-85.5967195,41.9808679],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015100":{"id":"n1821015100","loc":[-85.5666734,42.0088119],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015101":{"id":"n1821015101","loc":[-85.564694,42.0077675],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015103":{"id":"n1821015103","loc":[-85.6066544,41.9726527],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015104":{"id":"n1821015104","loc":[-85.6011827,41.9769838],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015105":{"id":"n1821015105","loc":[-85.5972131,41.9776697],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015106":{"id":"n1821015106","loc":[-85.5880828,41.9903341],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015107":{"id":"n1821015107","loc":[-85.5510268,42.0130626],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015108":{"id":"n1821015108","loc":[-85.6102164,41.970543],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015109":{"id":"n1821015109","loc":[-85.5905344,41.9853899],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015111":{"id":"n1821015111","loc":[-85.5888821,41.9913429],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015112":{"id":"n1821015112","loc":[-85.606295,41.9741921],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015114":{"id":"n1821015114","loc":[-85.5969556,41.9807443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015115":{"id":"n1821015115","loc":[-85.5882223,41.9934081],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015116":{"id":"n1821015116","loc":[-85.6104471,41.9724971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015118":{"id":"n1821015118","loc":[-85.5406091,42.0192162],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015120":{"id":"n1821015120","loc":[-85.589955,41.9888429],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015121":{"id":"n1821015121","loc":[-85.5598821,42.0092304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015122":{"id":"n1821015122","loc":[-85.545598,42.0144097],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015123":{"id":"n1821015123","loc":[-85.5649528,42.0079965],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015125":{"id":"n1821015125","loc":[-85.5883993,41.9917814],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015126":{"id":"n1821015126","loc":[-85.5295785,42.0239967],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015129":{"id":"n1821015129","loc":[-85.5648723,42.0078809],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015132":{"id":"n1821015132","loc":[-85.564989,42.0081103],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015133":{"id":"n1821015133","loc":[-85.5946127,41.9800841],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015134":{"id":"n1821015134","loc":[-85.583448,42.0019078],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015135":{"id":"n1821015135","loc":[-85.5905934,41.9871842],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015137":{"id":"n1821015137","loc":[-85.610608,41.9704752],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015138":{"id":"n1821015138","loc":[-85.5752257,42.0052939],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015139":{"id":"n1821015139","loc":[-85.5893864,41.9943491],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015140":{"id":"n1821015140","loc":[-85.5426247,42.0169866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015141":{"id":"n1821015141","loc":[-85.562001,42.0074526],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015142":{"id":"n1821015142","loc":[-85.5212046,42.0301094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015143":{"id":"n1821015143","loc":[-85.602214,41.9784531],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015144":{"id":"n1821015144","loc":[-85.5858687,41.9948293],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015145":{"id":"n1821015145","loc":[-85.5608477,42.0074805],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015146":{"id":"n1821015146","loc":[-85.5651607,42.0083614],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015147":{"id":"n1821015147","loc":[-85.5288288,42.0242495],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015149":{"id":"n1821015149","loc":[-85.5450334,42.0146989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015151":{"id":"n1821015151","loc":[-85.5578275,42.0092304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015154":{"id":"n1821015154","loc":[-85.6056634,41.9724511],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015155":{"id":"n1821015155","loc":[-85.5902179,41.9852742],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015156":{"id":"n1821015156","loc":[-85.5156256,42.0387157],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015157":{"id":"n1821015157","loc":[-85.5734433,42.0059459],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015158":{"id":"n1821015158","loc":[-85.6050773,41.9731273],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015160":{"id":"n1821015160","loc":[-85.5223419,42.0275233],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015163":{"id":"n1821015163","loc":[-85.6053562,41.972525],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015164":{"id":"n1821015164","loc":[-85.5850412,41.9946082],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015165":{"id":"n1821015165","loc":[-85.5359031,42.0186326],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015166":{"id":"n1821015166","loc":[-85.5608745,42.0077635],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015169":{"id":"n1821015169","loc":[-85.572876,42.0073189],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015171":{"id":"n1821015171","loc":[-85.5875424,41.9919188],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015172":{"id":"n1821015172","loc":[-85.5240116,42.0272581],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015173":{"id":"n1821015173","loc":[-85.5318369,42.0236818],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015174":{"id":"n1821015174","loc":[-85.566888,42.0086923],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015175":{"id":"n1821015175","loc":[-85.5931522,41.9850669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015176":{"id":"n1821015176","loc":[-85.5604842,42.0093199],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015177":{"id":"n1821015177","loc":[-85.5868168,41.9927543],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015178":{"id":"n1821015178","loc":[-85.6052275,41.9732549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015179":{"id":"n1821015179","loc":[-85.5910118,41.9900431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015182":{"id":"n1821015182","loc":[-85.5610032,42.0082897],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015183":{"id":"n1821015183","loc":[-85.5425443,42.0179431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015184":{"id":"n1821015184","loc":[-85.5843277,42.0014055],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015186":{"id":"n1821015186","loc":[-85.5733307,42.0063564],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015188":{"id":"n1821015188","loc":[-85.5277385,42.0248694],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015189":{"id":"n1821015189","loc":[-85.5558427,42.0108168],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015190":{"id":"n1821015190","loc":[-85.5650587,42.0082618],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015191":{"id":"n1821015191","loc":[-85.5660351,42.0088278],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015192":{"id":"n1821015192","loc":[-85.5849768,41.9980049],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015194":{"id":"n1821015194","loc":[-85.5359139,42.0188199],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015195":{"id":"n1821015195","loc":[-85.593238,41.9849194],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015197":{"id":"n1821015197","loc":[-85.5850841,41.9983239],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015199":{"id":"n1821015199","loc":[-85.5983396,41.9794283],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015204":{"id":"n1821015204","loc":[-85.5452801,42.0145355],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015205":{"id":"n1821015205","loc":[-85.5340685,42.0218407],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015207":{"id":"n1821015207","loc":[-85.5773272,42.0034186],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015209":{"id":"n1821015209","loc":[-85.5535212,42.0132419],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015211":{"id":"n1821015211","loc":[-85.6107703,41.9706045],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015212":{"id":"n1821015212","loc":[-85.6030066,41.9758193],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015213":{"id":"n1821015213","loc":[-85.5359943,42.0184213],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015214":{"id":"n1821015214","loc":[-85.5922993,41.9813305],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015215":{"id":"n1821015215","loc":[-85.5672689,42.0080465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015217":{"id":"n1821015217","loc":[-85.5160494,42.0365682],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015218":{"id":"n1821015218","loc":[-85.5401142,42.0190351],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015219":{"id":"n1821015219","loc":[-85.5607632,42.0092282],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015220":{"id":"n1821015220","loc":[-85.5866197,41.9947894],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015221":{"id":"n1821015221","loc":[-85.6017889,41.9765132],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015222":{"id":"n1821015222","loc":[-85.5595978,42.009059],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015226":{"id":"n1821015226","loc":[-85.5871494,41.9929018],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015227":{"id":"n1821015227","loc":[-85.5857708,41.9998866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015228":{"id":"n1821015228","loc":[-85.5317135,42.0238094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015231":{"id":"n1821015231","loc":[-85.5733521,42.0061372],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015233":{"id":"n1821015233","loc":[-85.5855991,42.0001936],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015234":{"id":"n1821015234","loc":[-85.5213924,42.029962],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015235":{"id":"n1821015235","loc":[-85.6052221,41.9726567],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015236":{"id":"n1821015236","loc":[-85.5763723,42.0035422],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015237":{"id":"n1821015237","loc":[-85.5858512,41.9966215],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015238":{"id":"n1821015238","loc":[-85.567061,42.008439],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015239":{"id":"n1821015239","loc":[-85.5250563,42.0269057],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015240":{"id":"n1821015240","loc":[-85.5347551,42.0214263],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015241":{"id":"n1821015241","loc":[-85.6098463,41.9707066],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015242":{"id":"n1821015242","loc":[-85.5676927,42.0076519],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015243":{"id":"n1821015243","loc":[-85.516775,42.0322669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015244":{"id":"n1821015244","loc":[-85.5762275,42.0036538],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015245":{"id":"n1821015245","loc":[-85.5583639,42.0090949],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015246":{"id":"n1821015246","loc":[-85.5554041,42.0106432],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015247":{"id":"n1821015247","loc":[-85.5973364,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015248":{"id":"n1821015248","loc":[-85.6098945,41.9717513],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015249":{"id":"n1821015249","loc":[-85.6045315,41.9751511],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015250":{"id":"n1821015250","loc":[-85.5579938,42.0092264],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015253":{"id":"n1821015253","loc":[-85.6058873,41.9724652],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015254":{"id":"n1821015254","loc":[-85.5869456,41.9947517],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015255":{"id":"n1821015255","loc":[-85.5936565,41.9823713],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015256":{"id":"n1821015256","loc":[-85.5218269,42.0278102],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015258":{"id":"n1821015258","loc":[-85.5887802,41.9905534],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015259":{"id":"n1821015259","loc":[-85.5901924,41.9904515],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015263":{"id":"n1821015263","loc":[-85.5249222,42.0255787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015265":{"id":"n1821015265","loc":[-85.5175206,42.0321672],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015266":{"id":"n1821015266","loc":[-85.5275722,42.0254034],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015267":{"id":"n1821015267","loc":[-85.6016226,41.9765451],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015269":{"id":"n1821015269","loc":[-85.5569316,42.011032],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015271":{"id":"n1821015271","loc":[-85.6010714,41.9785209],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015272":{"id":"n1821015272","loc":[-85.6050666,41.9729917],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015273":{"id":"n1821015273","loc":[-85.5891235,41.99529],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015274":{"id":"n1821015274","loc":[-85.515454,42.0376439],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015276":{"id":"n1821015276","loc":[-85.5776021,42.0034443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015277":{"id":"n1821015277","loc":[-85.6041707,41.9751453],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015278":{"id":"n1821015278","loc":[-85.5444701,42.0167435],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015280":{"id":"n1821015280","loc":[-85.5923274,41.9852202],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015283":{"id":"n1821015283","loc":[-85.5893649,41.9900271],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015284":{"id":"n1821015284","loc":[-85.5933453,41.9804412],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015285":{"id":"n1821015285","loc":[-85.5247237,42.026017],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015286":{"id":"n1821015286","loc":[-85.5286182,42.0242477],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015287":{"id":"n1821015287","loc":[-85.5904003,41.9888549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015288":{"id":"n1821015288","loc":[-85.6062146,41.9739369],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015290":{"id":"n1821015290","loc":[-85.5762596,42.0052602],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015292":{"id":"n1821015292","loc":[-85.5849715,41.9975465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015293":{"id":"n1821015293","loc":[-85.585229,42.0006241],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015294":{"id":"n1821015294","loc":[-85.5926922,41.9805946],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015295":{"id":"n1821015295","loc":[-85.5703387,42.0089133],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015299":{"id":"n1821015299","loc":[-85.5789955,42.0038611],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015301":{"id":"n1821015301","loc":[-85.6072888,41.9721918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015302":{"id":"n1821015302","loc":[-85.5356349,42.0200992],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015304":{"id":"n1821015304","loc":[-85.5891772,41.994066],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015306":{"id":"n1821015306","loc":[-85.606295,41.9744952],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015307":{"id":"n1821015307","loc":[-85.538871,42.0186583],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015308":{"id":"n1821015308","loc":[-85.587997,41.994971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015311":{"id":"n1821015311","loc":[-85.606869,41.9725809],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015312":{"id":"n1821015312","loc":[-85.5171974,42.0339943],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015314":{"id":"n1821015314","loc":[-85.5327435,42.0220479],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015315":{"id":"n1821015315","loc":[-85.5383439,42.0187282],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015316":{"id":"n1821015316","loc":[-85.5248095,42.0263119],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015318":{"id":"n1821015318","loc":[-85.5732502,42.0073051],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015319":{"id":"n1821015319","loc":[-85.5924226,41.9852663],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015321":{"id":"n1821015321","loc":[-85.5179001,42.0353052],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015322":{"id":"n1821015322","loc":[-85.5456771,42.0162413],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015323":{"id":"n1821015323","loc":[-85.5936618,41.9829096],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015325":{"id":"n1821015325","loc":[-85.5656931,42.0086582],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015326":{"id":"n1821015326","loc":[-85.5448456,42.0150975],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015327":{"id":"n1821015327","loc":[-85.5220039,42.027615],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015329":{"id":"n1821015329","loc":[-85.517884,42.0354885],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015330":{"id":"n1821015330","loc":[-85.5576666,42.0101671],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015332":{"id":"n1821015332","loc":[-85.5368754,42.0181402],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015333":{"id":"n1821015333","loc":[-85.5367078,42.0181145],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015334":{"id":"n1821015334","loc":[-85.5903909,41.9904316],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015335":{"id":"n1821015335","loc":[-85.5430767,42.0163587],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015336":{"id":"n1821015336","loc":[-85.5277492,42.0252878],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015337":{"id":"n1821015337","loc":[-85.5312146,42.0236898],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015338":{"id":"n1821015338","loc":[-85.5886568,41.991614],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015339":{"id":"n1821015339","loc":[-85.5782498,42.0040883],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015341":{"id":"n1821015341","loc":[-85.562233,42.0076457],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015342":{"id":"n1821015342","loc":[-85.588626,41.9952479],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015343":{"id":"n1821015343","loc":[-85.5762865,42.005033],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015344":{"id":"n1821015344","loc":[-85.5850841,41.9971478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015346":{"id":"n1821015346","loc":[-85.5643144,42.0076936],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015347":{"id":"n1821015347","loc":[-85.5164893,42.0359467],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015348":{"id":"n1821015348","loc":[-85.5906846,41.9903541],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015349":{"id":"n1821015349","loc":[-85.557688,42.0107769],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015350":{"id":"n1821015350","loc":[-85.5363698,42.0181424],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015351":{"id":"n1821015351","loc":[-85.5939636,41.9801918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015352":{"id":"n1821015352","loc":[-85.5524041,42.0131644],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015354":{"id":"n1821015354","loc":[-85.5308606,42.0236221],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015355":{"id":"n1821015355","loc":[-85.5877449,41.9932367],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015356":{"id":"n1821015356","loc":[-85.519885,42.0318586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015357":{"id":"n1821015357","loc":[-85.5454035,42.0168431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015358":{"id":"n1821015358","loc":[-85.5970629,41.9781881],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015359":{"id":"n1821015359","loc":[-85.5932541,41.9844767],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015360":{"id":"n1821015360","loc":[-85.5970736,41.9778252],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015361":{"id":"n1821015361","loc":[-85.537031,42.0181601],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015362":{"id":"n1821015362","loc":[-85.5548355,42.0105156],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015363":{"id":"n1821015363","loc":[-85.5168648,42.0336158],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015365":{"id":"n1821015365","loc":[-85.5870435,41.9919507],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015366":{"id":"n1821015366","loc":[-85.5719681,42.0075443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015367":{"id":"n1821015367","loc":[-85.5969985,41.9780446],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015368":{"id":"n1821015368","loc":[-85.5926761,41.98528],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015369":{"id":"n1821015369","loc":[-85.5224009,42.0293444],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015371":{"id":"n1821015371","loc":[-85.518737,42.0322651],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015372":{"id":"n1821015372","loc":[-85.6064573,41.9726465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015373":{"id":"n1821015373","loc":[-85.5201103,42.0313088],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015375":{"id":"n1821015375","loc":[-85.5378182,42.0186844],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015376":{"id":"n1821015376","loc":[-85.6109741,41.9706882],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015377":{"id":"n1821015377","loc":[-85.5993333,41.9785488],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015378":{"id":"n1821015378","loc":[-85.5889787,41.9907368],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015380":{"id":"n1821015380","loc":[-85.6060161,41.9737375],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015381":{"id":"n1821015381","loc":[-85.5743016,42.0053679],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015382":{"id":"n1821015382","loc":[-85.6014724,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015383":{"id":"n1821015383","loc":[-85.5574426,42.0091644],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015385":{"id":"n1821015385","loc":[-85.5208613,42.0309302],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015386":{"id":"n1821015386","loc":[-85.5919023,41.9837789],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015387":{"id":"n1821015387","loc":[-85.5455484,42.0160221],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015392":{"id":"n1821015392","loc":[-85.5801757,42.0028964],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015395":{"id":"n1821015395","loc":[-85.5493785,42.0139974],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015396":{"id":"n1821015396","loc":[-85.5449475,42.015488],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015398":{"id":"n1821015398","loc":[-85.611123,41.9706627],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015400":{"id":"n1821015400","loc":[-85.5935706,41.9822477],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015401":{"id":"n1821015401","loc":[-85.5724254,42.0073508],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015403":{"id":"n1821015403","loc":[-85.5486812,42.0143442],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015404":{"id":"n1821015404","loc":[-85.5161835,42.0327711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015406":{"id":"n1821015406","loc":[-85.5921705,41.9851107],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015407":{"id":"n1821015407","loc":[-85.531912,42.0234069],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015410":{"id":"n1821015410","loc":[-85.5292566,42.024176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015411":{"id":"n1821015411","loc":[-85.5845316,41.9948315],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015413":{"id":"n1821015413","loc":[-85.5217947,42.0280413],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015414":{"id":"n1821015414","loc":[-85.5527367,42.013272],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015415":{"id":"n1821015415","loc":[-85.5191179,42.0321973],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015416":{"id":"n1821015416","loc":[-85.5540241,42.0128655],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015418":{"id":"n1821015418","loc":[-85.5272892,42.0254849],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015419":{"id":"n1821015419","loc":[-85.5449744,42.016867],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015420":{"id":"n1821015420","loc":[-85.5852665,41.9986787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015421":{"id":"n1821015421","loc":[-85.6102701,41.972186],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015423":{"id":"n1821015423","loc":[-85.6026365,41.9764972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015427":{"id":"n1821015427","loc":[-85.5898692,41.9841498],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015429":{"id":"n1821015429","loc":[-85.5422546,42.0183855],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015430":{"id":"n1821015430","loc":[-85.5866505,41.9925549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015431":{"id":"n1821015431","loc":[-85.5234376,42.0273577],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015432":{"id":"n1821015432","loc":[-85.6096746,41.9727284],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015433":{"id":"n1821015433","loc":[-85.5824891,42.0021567],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015434":{"id":"n1821015434","loc":[-85.5923905,41.9841139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015435":{"id":"n1821015435","loc":[-85.5874565,41.9948014],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015437":{"id":"n1821015437","loc":[-85.6055279,41.9734423],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015438":{"id":"n1821015438","loc":[-85.5299379,42.0237376],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015439":{"id":"n1821015439","loc":[-85.5155022,42.0383651],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015442":{"id":"n1821015442","loc":[-85.527422,42.0254711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015443":{"id":"n1821015443","loc":[-85.5920699,41.9849291],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015444":{"id":"n1821015444","loc":[-85.5639711,42.0077494],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015445":{"id":"n1821015445","loc":[-85.5162586,42.0361777],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015446":{"id":"n1821015446","loc":[-85.5220039,42.029695],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015448":{"id":"n1821015448","loc":[-85.5176641,42.0356956],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015449":{"id":"n1821015449","loc":[-85.5930556,41.9841577],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015451":{"id":"n1821015451","loc":[-85.5320783,42.0228848],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015452":{"id":"n1821015452","loc":[-85.5170096,42.0357235],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015453":{"id":"n1821015453","loc":[-85.5571355,42.009613],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015454":{"id":"n1821015454","loc":[-85.5609979,42.009059],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015455":{"id":"n1821015455","loc":[-85.6097336,41.9708342],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015456":{"id":"n1821015456","loc":[-85.5884476,41.9904218],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"w170843846":{"id":"w170843846","version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{"source":"Bing","waterway":"river"},"nodes":["n1819790555","n1819790762","n1819790547","n1819790618","n1819790898","n1819790796","n1819790534","n1819790543","n1819790541","n1819790687","n1819790877","n1819790811","n1819790670"]},"w209083541":{"id":"w209083541","version":"1","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:46Z","tags":{"name":"Portage River","source":"Bing","waterway":"river"},"nodes":["n1821014848","n1821015156","n1821015439","n1821014763","n1821014824","n1821015274","n1821014764","n1821014791","n1821014957","n1821015217","n1821015445","n1821015347","n1821014893","n1821015452","n1821015017","n1821015448","n1821014968","n1821015329","n1821015321","n1821014992","n1821014948","n1821014757","n1821014983","n1821015312","n1821015363","n1821014924","n1821014873","n1821014932","n1821014668","n1821015404","n1821014716","n1821015243","n1821015265","n1821014710","n1821015371","n1821015415","n1821014870","n1821015356","n1821015373","n1821014681","n1821014714","n1821015385","n1821014911","n1821015057","n1821014867","n1821014998","n1821015142","n1821015234","n1821015446","n1821014862","n1821015369","n1821014945","n1821015003","n1821014667","n1821015413","n1821015256","n1821015327","n1821015160","n1821014907","n1821015431","n1821015172","n1821015034","n1821014741","n1821015033","n1821015239","n1821015007","n1821015316","n1821015285","n1821014633","n1821015263","n1821015069","n1821014846","n1821014779","n1821015011","n1821015012","n1821014845","n1821015418","n1821015442","n1821015266","n1821015336","n1821014755","n1821015188","n1821014925","n1821014816","n1821014869","n1821014967","n1821015286","n1821015147","n1821015410","n1821015126","n1821015438","n1821015018","n1821015354","n1821015337","n1821014766","n1821014740","n1821015228","n1821015173","n1821015407","n1821015076","n1821015451","n1821015024","n1821015314","n1821014784","n1821015045","n1821014735","n1821015205","n1821014986","n1821015240","n1821015098","n1821014825","n1821015302","n1821014918","n1821014718","n1821014896","n1821014853","n1821015194","n1821015165","n1821015213","n1821014991","n1821015350","n1821015333","n1821015332","n1821015361","n1821015060","n1821014914","n1821015375","n1821015315","n1821015307","n1821014906","n1821014751","n1821014666","n1821015218","n1821014817","n1821015118","n1821014674","n1821015038","n1821014973","n1821015429","n1821015183","n1821015046","n1821014803","n1821015140","n1821015009","n1821014749","n1821015335","n1821014711","n1821014854","n1821015278","n1821015419","n1821014648","n1821015357","n1821014637","n1821014988","n1821015322","n1821015387","n1821015042","n1821014833","n1821015396","n1821015326","n1821014691","n1821015149","n1821015204","n1821015122","n1821014782","n1821014982","n1821014921","n1821014936","n1821014969","n1821014881","n1821015403","n1821014805","n1821015395","n1821014892","n1821014826","n1821014844","n1821015107","n1821015014","n1821014955","n1821015352","n1821015414","n1821014746","n1821015209","n1821014770","n1821015416","n1821014661","n1821014857","n1821014814","n1821014754","n1821014721","n1821014727","n1821015362","n1821015029","n1821015246","n1821015189","n1821014627","n1821015269","n1821014808","n1821014962","n1821015349","n1821015041","n1821014722","n1821015330","n1821015453","n1821015067","n1821014643","n1821014802","n1821015383","n1821015151","n1821015250","n1821015245","n1821014772","n1821014899","n1821015222","n1821015121","n1821014951","n1821015176","n1821015219","n1821015454","n1821014972","n1821014917","n1821015182","n1821015166","n1821015145","n1821014910","n1821015082","n1821014678","n1821014806","n1821015141","n1821015341","n1821014788","n1821015097","n1821014995","n1821015444","n1821015346","n1821015101","n1821015129","n1821015123","n1821015132","n1821015190","n1821015146","n1821015325","n1821015191","n1821015072","n1821015100","n1821015174","n1821015238","n1821015215","n1821014700","n1821015242","n1821014841","n1821014905","n1821014874","n1821014883","n1821014729","n1821014866","n1821014828","n1821015295","n1821014931","n1821014859","n1821014912","n1821014783","n1821014752","n1821014961","n1821015366","n1821015401","n1821015169","n1821015318","n1821014996","n1821014747","n1821014963","n1821014670","n1821015186","n1821015231","n1821015157","n1821014812","n1821015381","n1821014887","n1821015138","n1821014704","n1821014787","n1821014922","n1821015290","n1821015343","n1821014651","n1821014980","n1821014960","n1821015244","n1821015236","n1821015006","n1821014694","n1821014759","n1821015207","n1821015276","n1821015065","n1821014863","n1821014660","n1821014902","n1821014645","n1821015339","n1821014871","n1821015096","n1821015299","n1821014798","n1821014638","n1821015392","n1821014835","n1821014762","n1821014642","n1821015433","n1821014786","n1821015134","n1821014855","n1821015184","n1821014850","n1821015293","n1821015233","n1821015227","n1821014876","n1821014985","n1821014843","n1821015420","n1821015197","n1821015192","n1821015292","n1821015344","n1821014742","n1821014726","n1821015237","n1821014796","n1821014908","n1821014975","n1821014769","n1821014688","n1821014860","n1821014895","n1821014676","n1821015411","n1821014736","n1821015164","n1821014647","n1821015144","n1821014919","n1821015220","n1821015254","n1821015435","n1821015308","n1821015342","n1821014830","n1821015273","n1821014658","n1821014781","n1821015087","n1821015139","n1821015304","n1821014839","n1821015048","n1821015115","n1821015355","n1821015226","n1821015177","n1821015430","n1821014965","n1821014725","n1821015365","n1821015171","n1821015073","n1821015125","n1821015338","n1821015111","n1821014950","n1821015378","n1821015258","n1821015456","n1821015106","n1821014832","n1821014888","n1821014795","n1821014872","n1821014810","n1821014705","n1821014804","n1821014820","n1821015283","n1821014938","n1821014689","n1821015259","n1821015334","n1821015348","n1821014635","n1821015179","n1821014864","n1821014890","n1821015020","n1821014898","n1821015287","n1821015120","n1821014984","n1821014743","n1821014790","n1821014765","n1821014777","n1821015095","n1821014653","n1821015135","n1821014836","n1821014964","n1821014974","n1821014636","n1821014682","n1821014663","n1821014665","n1821015109","n1821015155","n1821014930","n1821014669","n1821015004","n1821015427","n1821014916","n1821015093","n1821015086","n1821015386","n1821014799","n1821014913","n1821015434","n1821014728","n1821014900","n1821015068","n1821015039","n1821015443","n1821015406","n1821015280","n1821015319","n1821015368","n1821014774","n1821015090","n1821015175","n1821015195","n1821014687","n1821015359","n1821015449","n1821014956","n1821014838","n1821014768","n1821014698","n1821015323","n1821014756","n1821015255","n1821015400","n1821014717","n1821014868","n1821014778","n1821015214","n1821014944","n1821014697","n1821014671","n1821014928","n1821015294","n1821014822","n1821015284","n1821015351","n1821015022","n1821015133","n1821014644","n1821015010","n1821014625","n1821014657","n1821014946","n1821015099","n1821015114","n1821014629","n1821014865","n1821014997","n1821014926","n1821014933","n1821015199","n1821014819","n1821015080","n1821014692","n1821014677","n1821015358","n1821015367","n1821015360","n1821015105","n1821015247","n1821015005","n1821014809","n1821014794","n1821014761","n1821014879","n1821014801","n1821015377","n1821015059","n1821014730","n1821015050","n1821015271","n1821015143","n1821014989","n1821015019","n1821014672","n1821014649","n1821014684","n1821014703","n1821015021","n1821015382","n1821014842","n1821014720","n1821014847","n1821015104","n1821014987","n1821014886","n1821015267","n1821015221","n1821015015","n1821015423","n1821014954","n1821014903","n1821014939","n1821015212","n1821014789","n1821014712","n1821014708","n1821015078","n1821015277","n1821015249","n1821014646","n1821014793","n1821015053","n1821014707","n1821015306","n1821015112","n1821015288","n1821015380","n1821015437","n1821015178","n1821015158","n1821015272","n1821015235","n1821015163","n1821015154","n1821015253","n1821014632","n1821015372","n1821015103","n1821015311","n1821015301","n1821014885","n1821014811","n1821014977","n1821015051","n1821014942","n1821014745","n1821015432","n1821015075","n1821014664","n1821014695","n1821015116","n1821014639","n1821015421","n1821015248","n1821014758","n1821014834","n1821015083","n1821015455","n1821015241","n1821015108","n1821014713","n1821015137","n1821015055","n1821015211","n1821014904","n1821015376","n1821015398","n1821014771","n1821014840","n1821015062","n1819790554","n1819790560","n1819790767","n1819790696","n1819790706","n1819790606","n1819790607","n1819790544","n1819790779","n1819790760","n1819790926","n1819790927","n1819790647","n1819790657","n1819790649","n1819790679","n1819790915","n1819790739","n1819790549","n1819790671","n1819790686","n1819790798","n1819790791","n1819790563","n1819790720","n1819790704","n1819790795","n1819790836","n1819790622","n1819790615","n1819790654","n1819790931","n1819790595","n1819790753","n1819790612","n1819790623","n1819790564","n1819790552","n1819790645","n1819790625","n1819790605","n1819790668","n1819790731","n1819790718","n1819790781","n1819790665","n1819790659","n1819790726","n1819790642","n1819790854","n1819790697","n1819790867","n1819790833","n1819790555","n1819790774","n1819790881","n1819790530","n1819790909","n1819790891","n1819790590","n1819790738","n1819790609","n1819790528","n1819790674","n1819790583","n1819790559","n1819790863","n1819790912","n1819790685","n1819790913"]},"n185955128":{"id":"n185955128","loc":[-85.6189367,41.9519432],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185948818":{"id":"n185948818","loc":[-85.616755,41.952231],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:44Z","tags":{}},"n185978819":{"id":"n185978819","loc":[-85.616773,41.954737],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978821":{"id":"n185978821","loc":[-85.616699,41.954742],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n2138420714":{"id":"n2138420714","loc":[-85.6176304,41.9515154],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420715":{"id":"n2138420715","loc":[-85.6177355,41.9515717],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420716":{"id":"n2138420716","loc":[-85.6192901,41.951573],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420718":{"id":"n2138420718","loc":[-85.6171481,41.9513579],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420719":{"id":"n2138420719","loc":[-85.6165981,41.9519199],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420720":{"id":"n2138420720","loc":[-85.6165719,41.9519922],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420721":{"id":"n2138420721","loc":[-85.6165832,41.9520757],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420722":{"id":"n2138420722","loc":[-85.6166355,41.9521453],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420723":{"id":"n2138420723","loc":[-85.6169161,41.9522788],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420724":{"id":"n2138420724","loc":[-85.6170882,41.9522538],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420725":{"id":"n2138420725","loc":[-85.6189204,41.9514674],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420726":{"id":"n2138420726","loc":[-85.6180346,41.9514735],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420727":{"id":"n2138420727","loc":[-85.6180362,41.9515719],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420728":{"id":"n2138420728","loc":[-85.6189204,41.9515727],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420744":{"id":"n2138420744","loc":[-85.618919,41.9519571],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420745":{"id":"n2138420745","loc":[-85.6194575,41.9522374],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420746":{"id":"n2138420746","loc":[-85.6181777,41.9536179],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420747":{"id":"n2138420747","loc":[-85.6176582,41.9533658],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420748":{"id":"n2138420748","loc":[-85.6179871,41.9530242],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420749":{"id":"n2138420749","loc":[-85.618429,41.9532476],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420750":{"id":"n2138420750","loc":[-85.6185538,41.9531194],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420751":{"id":"n2138420751","loc":[-85.6180765,41.9528677],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420752":{"id":"n2138420752","loc":[-85.6180394,41.9528855],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420753":{"id":"n2138420753","loc":[-85.6193752,41.9521695],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420754":{"id":"n2138420754","loc":[-85.6181374,41.9535376],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420755":{"id":"n2138420755","loc":[-85.6179898,41.9535545],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420756":{"id":"n2138420756","loc":[-85.6177286,41.9534228],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420757":{"id":"n2138420757","loc":[-85.6181011,41.9530292],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420759":{"id":"n2138420759","loc":[-85.6185158,41.9531194],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420760":{"id":"n2138420760","loc":[-85.6191318,41.9520425],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420761":{"id":"n2138420761","loc":[-85.6182348,41.9529815],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420762":{"id":"n2138420762","loc":[-85.6184853,41.9524248],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420763":{"id":"n2138420763","loc":[-85.6186764,41.9525193],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420764":{"id":"n2138420764","loc":[-85.6189421,41.9526483],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420765":{"id":"n2138420765","loc":[-85.6182875,41.9531222],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420766":{"id":"n2138420766","loc":[-85.6179141,41.9535163],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420767":{"id":"n2138420767","loc":[-85.6178363,41.9535735],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n185948824":{"id":"n185948824","loc":[-85.6165667,41.9529715],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n2138420758":{"id":"n2138420758","loc":[-85.6184408,41.953201],"version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:47Z","tags":{}},"n2138422349":{"id":"n2138422349","loc":[-85.6175136,41.9533346],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422350":{"id":"n2138422350","loc":[-85.6171867,41.9531679],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422351":{"id":"n2138422351","loc":[-85.61722,41.9531305],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422352":{"id":"n2138422352","loc":[-85.6171889,41.9531158],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422353":{"id":"n2138422353","loc":[-85.6171733,41.9531284],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422354":{"id":"n2138422354","loc":[-85.616765,41.9529207],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422355":{"id":"n2138422355","loc":[-85.6167565,41.9529355],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422356":{"id":"n2138422356","loc":[-85.6164772,41.9527911],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422357":{"id":"n2138422357","loc":[-85.6168227,41.9524261],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422358":{"id":"n2138422358","loc":[-85.6171913,41.9526158],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422359":{"id":"n2138422359","loc":[-85.6172403,41.9525589],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422360":{"id":"n2138422360","loc":[-85.6172097,41.952542],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422361":{"id":"n2138422361","loc":[-85.6173948,41.9523512],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422362":{"id":"n2138422362","loc":[-85.6174256,41.9523678],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422363":{"id":"n2138422363","loc":[-85.6174831,41.9523086],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422364":{"id":"n2138422364","loc":[-85.6173316,41.9522289],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422365":{"id":"n2138422365","loc":[-85.6174507,41.9521024],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422366":{"id":"n2138422366","loc":[-85.6174773,41.9521155],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422367":{"id":"n2138422367","loc":[-85.6176577,41.9519232],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422368":{"id":"n2138422368","loc":[-85.6176336,41.9519105],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422369":{"id":"n2138422369","loc":[-85.617747,41.9517861],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422370":{"id":"n2138422370","loc":[-85.6182675,41.9520559],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422371":{"id":"n2138422371","loc":[-85.6182105,41.9521219],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422372":{"id":"n2138422372","loc":[-85.6183863,41.9522203],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422373":{"id":"n2138422373","loc":[-85.6180984,41.9525266],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422374":{"id":"n2138422374","loc":[-85.6179159,41.9524295],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422375":{"id":"n2138422375","loc":[-85.617854,41.9524979],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422376":{"id":"n2138422376","loc":[-85.6177686,41.9524531],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422377":{"id":"n2138422377","loc":[-85.6174716,41.9527765],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422378":{"id":"n2138422378","loc":[-85.6178545,41.9529756],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138425424":{"id":"n2138425424","loc":[-85.6171736,41.9536385],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425425":{"id":"n2138425425","loc":[-85.6180159,41.9535782],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425426":{"id":"n2138425426","loc":[-85.6181068,41.9536282],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425427":{"id":"n2138425427","loc":[-85.6180673,41.9542678],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425428":{"id":"n2138425428","loc":[-85.6178636,41.9542634],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425429":{"id":"n2138425429","loc":[-85.6176204,41.9542046],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425430":{"id":"n2138425430","loc":[-85.6174366,41.9541031],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425431":{"id":"n2138425431","loc":[-85.6172942,41.9539781],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425432":{"id":"n2138425432","loc":[-85.6172171,41.9538399],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425433":{"id":"n2138425433","loc":[-85.6168138,41.9543266],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425434":{"id":"n2138425434","loc":[-85.6167779,41.9538098],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425435":{"id":"n2138425435","loc":[-85.6165849,41.9537073],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425441":{"id":"n2138425441","loc":[-85.616458,41.9543184],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425442":{"id":"n2138425442","loc":[-85.6166428,41.954345],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425445":{"id":"n2138425445","loc":[-85.6181332,41.9514117],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425446":{"id":"n2138425446","loc":[-85.6183263,41.9514111],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425447":{"id":"n2138425447","loc":[-85.6185033,41.9514102],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425449":{"id":"n2138425449","loc":[-85.6186809,41.9514093],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425451":{"id":"n2138425451","loc":[-85.6188681,41.9514082],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138436008":{"id":"n2138436008","loc":[-85.6170474,41.9513604],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436009":{"id":"n2138436009","loc":[-85.6164937,41.9519586],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436010":{"id":"n2138436010","loc":[-85.616497,41.9520725],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436011":{"id":"n2138436011","loc":[-85.6165654,41.9521645],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436012":{"id":"n2138436012","loc":[-85.6166631,41.9522178],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436013":{"id":"n2138436013","loc":[-85.6167327,41.9522554],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436014":{"id":"n2138436014","loc":[-85.6172383,41.9525125],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138439319":{"id":"n2138439319","loc":[-85.6170432,41.9524057],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439320":{"id":"n2138439320","loc":[-85.617691,41.9517107],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439321":{"id":"n2138439321","loc":[-85.6177727,41.9516794],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439322":{"id":"n2138439322","loc":[-85.619085,41.9516811],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439323":{"id":"n2138439323","loc":[-85.6179432,41.952895],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439324":{"id":"n2138439324","loc":[-85.6180389,41.9529384],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439325":{"id":"n2138439325","loc":[-85.6176303,41.9533604],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439326":{"id":"n2138439326","loc":[-85.6175538,41.9534396],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439327":{"id":"n2138439327","loc":[-85.6173806,41.9523658],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439328":{"id":"n2138439328","loc":[-85.6171841,41.9522542],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439329":{"id":"n2138439329","loc":[-85.6172077,41.9524958],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439330":{"id":"n2138439330","loc":[-85.6171235,41.9525809],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439331":{"id":"n2138439331","loc":[-85.6180938,41.9527349],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439332":{"id":"n2138439332","loc":[-85.6177023,41.9525253],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439333":{"id":"n2138439333","loc":[-85.6175543,41.9526865],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439334":{"id":"n2138439334","loc":[-85.6179589,41.9528783],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n185948820":{"id":"n185948820","loc":[-85.6163249,41.952701],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185948822":{"id":"n185948822","loc":[-85.6163757,41.952855],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185955123":{"id":"n185955123","loc":[-85.6198103,41.9510408],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185958839":{"id":"n185958839","loc":[-85.611651,41.954761],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185965033":{"id":"n185965033","loc":[-85.614195,41.954754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185976502":{"id":"n185976502","loc":[-85.617375,41.947559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:32Z","tags":{}},"n185976504":{"id":"n185976504","loc":[-85.6174164,41.9510804],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185978828":{"id":"n185978828","loc":[-85.613542,41.954756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:36Z","tags":{}},"n185978830":{"id":"n185978830","loc":[-85.610373,41.954774],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:36Z","tags":{}},"n2138420713":{"id":"n2138420713","loc":[-85.6174641,41.9506942],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:11Z","tags":{}},"n2138420717":{"id":"n2138420717","loc":[-85.6173027,41.9512895],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420768":{"id":"n2138420768","loc":[-85.61745,41.9501974],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420773":{"id":"n2138420773","loc":[-85.6174135,41.9489136],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138425436":{"id":"n2138425436","loc":[-85.6159148,41.9538036],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425437":{"id":"n2138425437","loc":[-85.6159534,41.9539677],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425438":{"id":"n2138425438","loc":[-85.6160306,41.9540846],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425439":{"id":"n2138425439","loc":[-85.6161354,41.954181],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425440":{"id":"n2138425440","loc":[-85.6162733,41.954263],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425443":{"id":"n2138425443","loc":[-85.6183273,41.9510826],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425444":{"id":"n2138425444","loc":[-85.6181354,41.9510835],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425448":{"id":"n2138425448","loc":[-85.6185033,41.9510816],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425450":{"id":"n2138425450","loc":[-85.6186816,41.9510808],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425452":{"id":"n2138425452","loc":[-85.6188641,41.9510818],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138435984":{"id":"n2138435984","loc":[-85.6167607,41.9501009],"version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:47Z","tags":{}},"n2138436000":{"id":"n2138436000","loc":[-85.6173169,41.947558],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436001":{"id":"n2138436001","loc":[-85.6173362,41.948883],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436002":{"id":"n2138436002","loc":[-85.6167791,41.9492952],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436003":{"id":"n2138436003","loc":[-85.6167543,41.949349],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436004":{"id":"n2138436004","loc":[-85.6167648,41.9509125],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436005":{"id":"n2138436005","loc":[-85.6168832,41.9510412],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436006":{"id":"n2138436006","loc":[-85.6170045,41.9511417],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436007":{"id":"n2138436007","loc":[-85.6170624,41.9512483],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436017":{"id":"n2138436017","loc":[-85.6168094,41.9492729],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436021":{"id":"n2138436021","loc":[-85.6167553,41.9494886],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436023":{"id":"n2138436023","loc":[-85.6167585,41.9499707],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436025":{"id":"n2138436025","loc":[-85.6167567,41.9497018],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"w203838284":{"id":"w203838284","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"baseball"},"nodes":["n2138425424","n2138425425","n2138425426","n2138425427","n2138425428","n2138425429","n2138425430","n2138425431","n2138425432","n2138425424"]},"w203837928":{"id":"w203837928","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"highway":"service"},"nodes":["n2138420717","n2138420718","n2138420719","n2138420720","n2138420721","n2138420722","n185948818","n2138420723","n2138420724","n2138420715"]},"w203839364":{"id":"w203839364","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439331","n2138439332"]},"w203837932":{"id":"w203837932","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2138420744","n2138420745","n2138420746","n2138420747","n2138420748","n2138420749","n2138420750","n2138420751","n2138420744"]},"w203839362":{"id":"w203839362","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439327","n2138439328"]},"w203839363":{"id":"w203839363","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439329","n2138439330"]},"w203837933":{"id":"w203837933","version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:42Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n185955128","n2138420760","n2138420753","n2138420764","n2138420759","n2138420758","n2138420754","n2138420755","n2138420766","n2138420756"]},"w203837936":{"id":"w203837936","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420765","n2138420766"]},"w17966364":{"id":"w17966364","version":"2","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"access":"private","highway":"service","name":"Collins Dr","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Collins","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313686","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185961362","n185976502","n2138420773","n2138420768","n2138420713","n185976504","n2138420717","n2138420714","n2138420715","n2138420727","n2138420728","n2138420716"]},"w203838040":{"id":"w203838040","version":"3","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:19Z","tags":{"amenity":"school","area":"yes","building":"yes","name":"Three Rivers Middle School"},"nodes":["n2138422349","n2138422350","n2138422351","n2138422352","n2138422353","n2138422354","n2138422355","n2138422356","n2138422357","n2138439330","n2138422358","n2138422359","n2138422360","n2138436014","n2138439327","n2138422361","n2138422362","n2138422363","n2138422364","n2138422365","n2138422366","n2138422367","n2138422368","n2138422369","n2138422370","n2138422371","n2138422372","n2138422373","n2138422374","n2138422375","n2138422376","n2138439332","n2138439333","n2138422377","n2138422378","n2138422349"]},"w17964049":{"id":"w17964049","version":"3","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:46Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335181","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955120","n185955123","n2138420716","n185955128","n2138420762","n2138420752","n2138420761","n2138420759"]},"w41074899":{"id":"w41074899","version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"highway":"secondary","name":"E Hoffman St","ref":"M 60","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978817","n185978819","n185978821","n185965033","n185978828","n185958839","n185978830"]},"w203839365":{"id":"w203839365","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439333","n2138439334"]},"w203837935":{"id":"w203837935","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420762","n2138420763","n2138420764"]},"w203838287":{"id":"w203838287","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425446","n2138425447","n2138425448","n2138425443","n2138425446"]},"w203837934":{"id":"w203837934","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420760","n2138420763","n2138420761"]},"w203838289":{"id":"w203838289","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425449","n2138425451","n2138425452","n2138425450","n2138425449"]},"w17963047":{"id":"w17963047","version":"4","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:19Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331535","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185948818","n2138436013","n185948820","n185948822","n185948824","n2138439326","n2138420767","n2138420766"]},"w203839091":{"id":"w203839091","version":"3","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:44Z","tags":{"highway":"footway"},"nodes":["n185976502","n2138436000","n2138436001","n2138436017","n2138436002","n2138436003","n2138436021","n2138436025","n2138436023","n2138435984","n2138436004","n2138436005","n2138436006","n2138436007","n2138436008","n2138436009","n2138436010","n2138436011","n2138436012","n2138436013","n2138439319","n2138439329","n2138436014"]},"w204830797":{"id":"w204830797","version":"1","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:37Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420756","n2138420757","n2138420765","n2138420758"]},"w203838288":{"id":"w203838288","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425447","n2138425449","n2138425450","n2138425448","n2138425447"]},"w203838285":{"id":"w203838285","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"baseball"},"nodes":["n2138425433","n2138425434","n2138425435","n2138425436","n2138425437","n2138425438","n2138425439","n2138425440","n2138425441","n2138425442","n2138425433"]},"w203838286":{"id":"w203838286","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425443","n2138425444","n2138425445","n2138425446","n2138425443"]},"w203837929":{"id":"w203837929","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2138420725","n2138420726","n2138420727","n2138420728","n2138420725"]},"w203839361":{"id":"w203839361","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439319","n2138439328","n2138439320","n2138439321","n2138439322","n2138439331","n2138439334","n2138439323","n2138439324","n2138439325","n2138439326"]},"n394381698":{"id":"n394381698","loc":[-85.614471,41.954755],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381699":{"id":"n394381699","loc":[-85.6152,41.954744],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381700":{"id":"n394381700","loc":[-85.615201,41.954081],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381701":{"id":"n394381701","loc":[-85.614426,41.954042],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381702":{"id":"n394381702","loc":[-85.616319,41.954749],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381704":{"id":"n394381704","loc":[-85.616152,41.954752],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381706":{"id":"n394381706","loc":[-85.615201,41.95483],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394490775":{"id":"n394490775","loc":[-85.613971,41.954839],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490782":{"id":"n394490782","loc":[-85.614372,41.954841],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n185958835":{"id":"n185958835","loc":[-85.611615,41.953704],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958837":{"id":"n185958837","loc":[-85.611636,41.953938],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958842":{"id":"n185958842","loc":[-85.611187,41.951686],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958844":{"id":"n185958844","loc":[-85.611087,41.951741],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958845":{"id":"n185958845","loc":[-85.611034,41.951852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958847":{"id":"n185958847","loc":[-85.611016,41.95196],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958849":{"id":"n185958849","loc":[-85.610989,41.95328],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958851":{"id":"n185958851","loc":[-85.611021,41.953484],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958852":{"id":"n185958852","loc":[-85.611091,41.953603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958853":{"id":"n185958853","loc":[-85.6112,41.953661],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958855":{"id":"n185958855","loc":[-85.611364,41.953686],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185965031":{"id":"n185965031","loc":[-85.614204,41.953696],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965032":{"id":"n185965032","loc":[-85.6142,41.953978],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965062":{"id":"n185965062","loc":[-85.614617,41.951639],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965064":{"id":"n185965064","loc":[-85.61463,41.951852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965066":{"id":"n185965066","loc":[-85.614642,41.953436],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965068":{"id":"n185965068","loc":[-85.6146,41.953551],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965071":{"id":"n185965071","loc":[-85.614487,41.95363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965073":{"id":"n185965073","loc":[-85.614354,41.953672],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185966288":{"id":"n185966288","loc":[-85.61179,41.953695],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966290":{"id":"n185966290","loc":[-85.612232,41.953685],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966293":{"id":"n185966293","loc":[-85.613438,41.953677],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966349":{"id":"n185966349","loc":[-85.611323,41.951653],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966351":{"id":"n185966351","loc":[-85.611892,41.951642],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966352":{"id":"n185966352","loc":[-85.612216,41.951641],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966353":{"id":"n185966353","loc":[-85.613111,41.951639],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966354":{"id":"n185966354","loc":[-85.613396,41.95164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966355":{"id":"n185966355","loc":[-85.614221,41.95164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185973839":{"id":"n185973839","loc":[-85.61341,41.951919],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185973840":{"id":"n185973840","loc":[-85.613438,41.953308],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185980222":{"id":"n185980222","loc":[-85.613781,41.955164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980223":{"id":"n185980223","loc":[-85.613815,41.955237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980225":{"id":"n185980225","loc":[-85.613837,41.955316],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185990345":{"id":"n185990345","loc":[-85.612211,41.951977],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:15:01Z","tags":{}},"n185955743":{"id":"n185955743","loc":[-85.613873,41.95635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185980227":{"id":"n185980227","loc":[-85.613851,41.955415],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980229":{"id":"n185980229","loc":[-85.613918,41.957134],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n394381703":{"id":"n394381703","loc":[-85.616287,41.955674],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381705":{"id":"n394381705","loc":[-85.615164,41.955676],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394490777":{"id":"n394490777","loc":[-85.613973,41.955979],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490780":{"id":"n394490780","loc":[-85.614364,41.955987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"w17965307":{"id":"w17965307","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:58Z","tags":{"highway":"residential","name":"Bates Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bates","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313640:15313641","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958842","n185966349","n185966351","n185966352","n185966353","n185966354","n185966355","n185965062"]},"w17967957":{"id":"w17967957","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:55:16Z","tags":{"highway":"residential","name":"Krum Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Krum","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313643","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966352","n185990345","n185966290"]},"w17964508":{"id":"w17964508","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:11Z","tags":{"highway":"residential","name":"Blossom Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Blossom","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15324628","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958842","n185958844","n185958845","n185958847","n185958849","n185958851","n185958852","n185958853","n185958855","n185958835"]},"w17964507":{"id":"w17964507","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:10Z","tags":{"highway":"residential","name":"Blossom Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Blossom","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313629","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958835","n185958837","n185958839"]},"w34367080":{"id":"w34367080","version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394381699","n394381706","n394381705","n394381703","n394381702","n394381704","n394381699"]},"w17965302":{"id":"w17965302","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:55Z","tags":{"highway":"residential","name":"Clausen Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Clausen","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313630:15313631:15313632","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958835","n185966288","n185966290","n185966293","n185965031"]},"w17965156":{"id":"w17965156","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:54Z","tags":{"highway":"residential","name":"Orchard Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Orchard","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15327962","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965062","n185965064","n185965066","n185965068","n185965071","n185965073","n185965031"]},"w34369812":{"id":"w34369812","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490775","n394490777","n394490780","n394490782","n394490775"]},"w17965151":{"id":"w17965151","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:52Z","tags":{"highway":"residential","name":"Orchard Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Orchard","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313628","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965031","n185965032","n185965033"]},"w17966756":{"id":"w17966756","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:47:10Z","tags":{"access":"private","highway":"service","name":"Lockport Dr","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Lockport","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313621:15314402","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978828","n185980222","n185980223","n185980225","n185980227","n185955743","n185980229"]},"w17966056":{"id":"w17966056","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:57Z","tags":{"highway":"residential","name":"Angell Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Angell","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313639","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966354","n185973839","n185973840","n185966293"]},"w34367079":{"id":"w34367079","version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394381700","n394381701","n394381698","n394381699","n394381700"]},"n185955744":{"id":"n185955744","loc":[-85.611753,41.956208],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185988932":{"id":"n185988932","loc":[-85.6159,41.956336],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185988934":{"id":"n185988934","loc":[-85.6159158,41.9590646],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185988935":{"id":"n185988935","loc":[-85.6157358,41.959364],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{"highway":"turning_circle","source":"Bing"}},"n2138447007":{"id":"n2138447007","loc":[-85.6130784,41.9590689],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447008":{"id":"n2138447008","loc":[-85.6133328,41.9593805],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447003":{"id":"n2138447003","loc":[-85.610238,41.9547745],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447004":{"id":"n2138447004","loc":[-85.6102652,41.9566041],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447005":{"id":"n2138447005","loc":[-85.610325,41.9568823],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447006":{"id":"n2138447006","loc":[-85.6105644,41.9571383],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447009":{"id":"n2138447009","loc":[-85.6135946,41.959948],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447010":{"id":"n2138447010","loc":[-85.6136071,41.9629372],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447011":{"id":"n2138447011","loc":[-85.6134392,41.9633182],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447012":{"id":"n2138447012","loc":[-85.6130151,41.9636073],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447013":{"id":"n2138447013","loc":[-85.6122729,41.9637125],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447014":{"id":"n2138447014","loc":[-85.6056682,41.963752],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"w17964174":{"id":"w17964174","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:27:41Z","tags":{"access":"private","highway":"service","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314401","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955743","n185955744"]},"w17967743":{"id":"w17967743","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:06Z","tags":{"access":"private","highway":"service","name":"Manistee River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Manistee River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326121:15326126:15326127:15326116","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971574","n185988932","n185971407","n185981301","n185967987","n185988934","n185988935"]},"w203839666":{"id":"w203839666","version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{"highway":"residential","name":"Hov Aire Drive"},"nodes":["n2138447003","n2138447004","n2138447005","n2138447006","n2138447007","n2138447008","n2138447009","n2138447010","n2138447011","n2138447012","n2138447013","n2138447014"]}}';iD.data = {
39434     "deprecated": [
39435         {
39436             "old": {
39437                 "amenity": "firepit"
39438             },
39439             "replace": {
39440                 "leisure": "firepit"
39441             }
39442         },
39443         {
39444             "old": {
39445                 "barrier": "wire_fence"
39446             },
39447             "replace": {
39448                 "barrier": "fence",
39449                 "fence_type": "chain"
39450             }
39451         },
39452         {
39453             "old": {
39454                 "barrier": "wood_fence"
39455             },
39456             "replace": {
39457                 "barrier": "fence",
39458                 "fence_type": "wood"
39459             }
39460         },
39461         {
39462             "old": {
39463                 "highway": "ford"
39464             },
39465             "replace": {
39466                 "ford": "yes"
39467             }
39468         },
39469         {
39470             "old": {
39471                 "highway": "stile"
39472             },
39473             "replace": {
39474                 "barrier": "stile"
39475             }
39476         },
39477         {
39478             "old": {
39479                 "highway": "incline"
39480             },
39481             "replace": {
39482                 "highway": "road",
39483                 "incline": "up"
39484             }
39485         },
39486         {
39487             "old": {
39488                 "highway": "incline_steep"
39489             },
39490             "replace": {
39491                 "highway": "road",
39492                 "incline": "up"
39493             }
39494         },
39495         {
39496             "old": {
39497                 "highway": "unsurfaced"
39498             },
39499             "replace": {
39500                 "highway": "road",
39501                 "incline": "unpaved"
39502             }
39503         },
39504         {
39505             "old": {
39506                 "landuse": "wood"
39507             },
39508             "replace": {
39509                 "landuse": "forest",
39510                 "natural": "wood"
39511             }
39512         },
39513         {
39514             "old": {
39515                 "natural": "marsh"
39516             },
39517             "replace": {
39518                 "natural": "wetland",
39519                 "wetland": "marsh"
39520             }
39521         },
39522         {
39523             "old": {
39524                 "power_source": "*"
39525             },
39526             "replace": {
39527                 "generator:source": "$1"
39528             }
39529         },
39530         {
39531             "old": {
39532                 "power_rating": "*"
39533             },
39534             "replace": {
39535                 "generator:output": "$1"
39536             }
39537         },
39538         {
39539             "old": {
39540                 "shop": "organic"
39541             },
39542             "replace": {
39543                 "shop": "supermarket",
39544                 "organic": "only"
39545             }
39546         }
39547     ],
39548     "discarded": [
39549         "created_by",
39550         "odbl",
39551         "odbl:note",
39552         "tiger:upload_uuid",
39553         "tiger:tlid",
39554         "tiger:source",
39555         "tiger:separated",
39556         "geobase:datasetName",
39557         "geobase:uuid",
39558         "sub_sea:type",
39559         "KSJ2:ADS",
39560         "KSJ2:ARE",
39561         "KSJ2:AdminArea",
39562         "KSJ2:COP_label",
39563         "KSJ2:DFD",
39564         "KSJ2:INT",
39565         "KSJ2:INT_label",
39566         "KSJ2:LOC",
39567         "KSJ2:LPN",
39568         "KSJ2:OPC",
39569         "KSJ2:PubFacAdmin",
39570         "KSJ2:RAC",
39571         "KSJ2:RAC_label",
39572         "KSJ2:RIC",
39573         "KSJ2:RIN",
39574         "KSJ2:WSC",
39575         "KSJ2:coordinate",
39576         "KSJ2:curve_id",
39577         "KSJ2:curve_type",
39578         "KSJ2:filename",
39579         "KSJ2:lake_id",
39580         "KSJ2:lat",
39581         "KSJ2:long",
39582         "KSJ2:river_id",
39583         "yh:LINE_NAME",
39584         "yh:LINE_NUM",
39585         "yh:STRUCTURE",
39586         "yh:TOTYUMONO",
39587         "yh:TYPE",
39588         "yh:WIDTH",
39589         "yh:WIDTH_RANK",
39590         "SK53_bulk:load"
39591     ],
39592     "wikipedia": [
39593         [
39594             "Abkhazian",
39595             "Аҧсшәа",
39596             "ab"
39597         ],
39598         [
39599             "Achinese",
39600             "Acèh",
39601             "ace"
39602         ],
39603         [
39604             "Afrikaans",
39605             "Afrikaans",
39606             "af"
39607         ],
39608         [
39609             "Akan",
39610             "Akan",
39611             "ak"
39612         ],
39613         [
39614             "Alemannisch",
39615             "Alemannisch",
39616             "als"
39617         ],
39618         [
39619             "Amharic",
39620             "አማርኛ",
39621             "am"
39622         ],
39623         [
39624             "Aragonese",
39625             "aragonés",
39626             "an"
39627         ],
39628         [
39629             "Old English",
39630             "Ænglisc",
39631             "ang"
39632         ],
39633         [
39634             "Arabic",
39635             "العربية",
39636             "ar"
39637         ],
39638         [
39639             "Aramaic",
39640             "ܐܪܡܝܐ",
39641             "arc"
39642         ],
39643         [
39644             "Egyptian Arabic",
39645             "مصرى",
39646             "arz"
39647         ],
39648         [
39649             "Assamese",
39650             "অসমীয়া",
39651             "as"
39652         ],
39653         [
39654             "Asturian",
39655             "asturianu",
39656             "ast"
39657         ],
39658         [
39659             "Avaric",
39660             "авар",
39661             "av"
39662         ],
39663         [
39664             "Aymara",
39665             "Aymar aru",
39666             "ay"
39667         ],
39668         [
39669             "Azerbaijani",
39670             "azərbaycanca",
39671             "az"
39672         ],
39673         [
39674             "South Azerbaijani",
39675             "تۆرکجه",
39676             "azb"
39677         ],
39678         [
39679             "Bashkir",
39680             "башҡортса",
39681             "ba"
39682         ],
39683         [
39684             "Bavarian",
39685             "Boarisch",
39686             "bar"
39687         ],
39688         [
39689             "Samogitian",
39690             "žemaitėška",
39691             "bat-smg"
39692         ],
39693         [
39694             "Bikol Central",
39695             "Bikol Central",
39696             "bcl"
39697         ],
39698         [
39699             "Belarusian",
39700             "беларуская",
39701             "be"
39702         ],
39703         [
39704             "беларуская (тарашкевіца)‎",
39705             "беларуская (тарашкевіца)‎",
39706             "be-x-old"
39707         ],
39708         [
39709             "Bulgarian",
39710             "български",
39711             "bg"
39712         ],
39713         [
39714             "भोजपुरी",
39715             "भोजपुरी",
39716             "bh"
39717         ],
39718         [
39719             "Bislama",
39720             "Bislama",
39721             "bi"
39722         ],
39723         [
39724             "Banjar",
39725             "Bahasa Banjar",
39726             "bjn"
39727         ],
39728         [
39729             "Bambara",
39730             "bamanankan",
39731             "bm"
39732         ],
39733         [
39734             "Bengali",
39735             "বাংলা",
39736             "bn"
39737         ],
39738         [
39739             "Tibetan",
39740             "བོད་ཡིག",
39741             "bo"
39742         ],
39743         [
39744             "Bishnupriya",
39745             "বিষ্ণুপ্রিয়া মণিপুরী",
39746             "bpy"
39747         ],
39748         [
39749             "Breton",
39750             "brezhoneg",
39751             "br"
39752         ],
39753         [
39754             "Bosnian",
39755             "bosanski",
39756             "bs"
39757         ],
39758         [
39759             "Buginese",
39760             "ᨅᨔ ᨕᨘᨁᨗ",
39761             "bug"
39762         ],
39763         [
39764             "буряад",
39765             "буряад",
39766             "bxr"
39767         ],
39768         [
39769             "Catalan",
39770             "català",
39771             "ca"
39772         ],
39773         [
39774             "Chavacano de Zamboanga",
39775             "Chavacano de Zamboanga",
39776             "cbk-zam"
39777         ],
39778         [
39779             "Min Dong Chinese",
39780             "Mìng-dĕ̤ng-ngṳ̄",
39781             "cdo"
39782         ],
39783         [
39784             "Chechen",
39785             "нохчийн",
39786             "ce"
39787         ],
39788         [
39789             "Cebuano",
39790             "Cebuano",
39791             "ceb"
39792         ],
39793         [
39794             "Chamorro",
39795             "Chamoru",
39796             "ch"
39797         ],
39798         [
39799             "Cherokee",
39800             "ᏣᎳᎩ",
39801             "chr"
39802         ],
39803         [
39804             "Cheyenne",
39805             "Tsetsêhestâhese",
39806             "chy"
39807         ],
39808         [
39809             "Central Kurdish",
39810             "کوردیی ناوەندی",
39811             "ckb"
39812         ],
39813         [
39814             "Corsican",
39815             "corsu",
39816             "co"
39817         ],
39818         [
39819             "Cree",
39820             "Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ",
39821             "cr"
39822         ],
39823         [
39824             "Crimean Turkish",
39825             "qırımtatarca",
39826             "crh"
39827         ],
39828         [
39829             "Czech",
39830             "čeština",
39831             "cs"
39832         ],
39833         [
39834             "Kashubian",
39835             "kaszëbsczi",
39836             "csb"
39837         ],
39838         [
39839             "Church Slavic",
39840             "словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ",
39841             "cu"
39842         ],
39843         [
39844             "Chuvash",
39845             "Чӑвашла",
39846             "cv"
39847         ],
39848         [
39849             "Welsh",
39850             "Cymraeg",
39851             "cy"
39852         ],
39853         [
39854             "Danish",
39855             "dansk",
39856             "da"
39857         ],
39858         [
39859             "German",
39860             "Deutsch",
39861             "de"
39862         ],
39863         [
39864             "Zazaki",
39865             "Zazaki",
39866             "diq"
39867         ],
39868         [
39869             "Lower Sorbian",
39870             "dolnoserbski",
39871             "dsb"
39872         ],
39873         [
39874             "Divehi",
39875             "ދިވެހިބަސް",
39876             "dv"
39877         ],
39878         [
39879             "Dzongkha",
39880             "ཇོང་ཁ",
39881             "dz"
39882         ],
39883         [
39884             "Ewe",
39885             "eʋegbe",
39886             "ee"
39887         ],
39888         [
39889             "Greek",
39890             "Ελληνικά",
39891             "el"
39892         ],
39893         [
39894             "Emiliano-Romagnolo",
39895             "emiliàn e rumagnòl",
39896             "eml"
39897         ],
39898         [
39899             "English",
39900             "English",
39901             "en"
39902         ],
39903         [
39904             "Esperanto",
39905             "Esperanto",
39906             "eo"
39907         ],
39908         [
39909             "Spanish",
39910             "español",
39911             "es"
39912         ],
39913         [
39914             "Estonian",
39915             "eesti",
39916             "et"
39917         ],
39918         [
39919             "Basque",
39920             "euskara",
39921             "eu"
39922         ],
39923         [
39924             "Extremaduran",
39925             "estremeñu",
39926             "ext"
39927         ],
39928         [
39929             "Persian",
39930             "فارسی",
39931             "fa"
39932         ],
39933         [
39934             "Fulah",
39935             "Fulfulde",
39936             "ff"
39937         ],
39938         [
39939             "Finnish",
39940             "suomi",
39941             "fi"
39942         ],
39943         [
39944             "Võro",
39945             "Võro",
39946             "fiu-vro"
39947         ],
39948         [
39949             "Fijian",
39950             "Na Vosa Vakaviti",
39951             "fj"
39952         ],
39953         [
39954             "Faroese",
39955             "føroyskt",
39956             "fo"
39957         ],
39958         [
39959             "French",
39960             "français",
39961             "fr"
39962         ],
39963         [
39964             "Arpitan",
39965             "arpetan",
39966             "frp"
39967         ],
39968         [
39969             "Northern Frisian",
39970             "Nordfriisk",
39971             "frr"
39972         ],
39973         [
39974             "Friulian",
39975             "furlan",
39976             "fur"
39977         ],
39978         [
39979             "Western Frisian",
39980             "Frysk",
39981             "fy"
39982         ],
39983         [
39984             "Irish",
39985             "Gaeilge",
39986             "ga"
39987         ],
39988         [
39989             "Gagauz",
39990             "Gagauz",
39991             "gag"
39992         ],
39993         [
39994             "Gan Chinese",
39995             "贛語",
39996             "gan"
39997         ],
39998         [
39999             "Scottish Gaelic",
40000             "Gàidhlig",
40001             "gd"
40002         ],
40003         [
40004             "Galician",
40005             "galego",
40006             "gl"
40007         ],
40008         [
40009             "Gilaki",
40010             "گیلکی",
40011             "glk"
40012         ],
40013         [
40014             "Guarani",
40015             "Avañe'ẽ",
40016             "gn"
40017         ],
40018         [
40019             "Goan Konkani",
40020             "गोवा कोंकणी / Gova Konknni",
40021             "gom"
40022         ],
40023         [
40024             "Gothic",
40025             "𐌲𐌿𐍄𐌹𐍃𐌺",
40026             "got"
40027         ],
40028         [
40029             "Gujarati",
40030             "ગુજરાતી",
40031             "gu"
40032         ],
40033         [
40034             "Manx",
40035             "Gaelg",
40036             "gv"
40037         ],
40038         [
40039             "Hausa",
40040             "Hausa",
40041             "ha"
40042         ],
40043         [
40044             "Hakka Chinese",
40045             "客家語/Hak-kâ-ngî",
40046             "hak"
40047         ],
40048         [
40049             "Hawaiian",
40050             "Hawai`i",
40051             "haw"
40052         ],
40053         [
40054             "Hebrew",
40055             "עברית",
40056             "he"
40057         ],
40058         [
40059             "Hindi",
40060             "हिन्दी",
40061             "hi"
40062         ],
40063         [
40064             "Fiji Hindi",
40065             "Fiji Hindi",
40066             "hif"
40067         ],
40068         [
40069             "Croatian",
40070             "hrvatski",
40071             "hr"
40072         ],
40073         [
40074             "Upper Sorbian",
40075             "hornjoserbsce",
40076             "hsb"
40077         ],
40078         [
40079             "Haitian",
40080             "Kreyòl ayisyen",
40081             "ht"
40082         ],
40083         [
40084             "Hungarian",
40085             "magyar",
40086             "hu"
40087         ],
40088         [
40089             "Armenian",
40090             "Հայերեն",
40091             "hy"
40092         ],
40093         [
40094             "Interlingua",
40095             "interlingua",
40096             "ia"
40097         ],
40098         [
40099             "Indonesian",
40100             "Bahasa Indonesia",
40101             "id"
40102         ],
40103         [
40104             "Interlingue",
40105             "Interlingue",
40106             "ie"
40107         ],
40108         [
40109             "Igbo",
40110             "Igbo",
40111             "ig"
40112         ],
40113         [
40114             "Inupiaq",
40115             "Iñupiak",
40116             "ik"
40117         ],
40118         [
40119             "Iloko",
40120             "Ilokano",
40121             "ilo"
40122         ],
40123         [
40124             "Ido",
40125             "Ido",
40126             "io"
40127         ],
40128         [
40129             "Icelandic",
40130             "íslenska",
40131             "is"
40132         ],
40133         [
40134             "Italian",
40135             "italiano",
40136             "it"
40137         ],
40138         [
40139             "Inuktitut",
40140             "ᐃᓄᒃᑎᑐᑦ/inuktitut",
40141             "iu"
40142         ],
40143         [
40144             "Japanese",
40145             "日本語",
40146             "ja"
40147         ],
40148         [
40149             "Lojban",
40150             "Lojban",
40151             "jbo"
40152         ],
40153         [
40154             "Javanese",
40155             "Basa Jawa",
40156             "jv"
40157         ],
40158         [
40159             "Georgian",
40160             "ქართული",
40161             "ka"
40162         ],
40163         [
40164             "Kara-Kalpak",
40165             "Qaraqalpaqsha",
40166             "kaa"
40167         ],
40168         [
40169             "Kabyle",
40170             "Taqbaylit",
40171             "kab"
40172         ],
40173         [
40174             "Kabardian",
40175             "Адыгэбзэ",
40176             "kbd"
40177         ],
40178         [
40179             "Kongo",
40180             "Kongo",
40181             "kg"
40182         ],
40183         [
40184             "Kikuyu",
40185             "Gĩkũyũ",
40186             "ki"
40187         ],
40188         [
40189             "Kazakh",
40190             "қазақша",
40191             "kk"
40192         ],
40193         [
40194             "Kalaallisut",
40195             "kalaallisut",
40196             "kl"
40197         ],
40198         [
40199             "Khmer",
40200             "ភាសាខ្មែរ",
40201             "km"
40202         ],
40203         [
40204             "Kannada",
40205             "ಕನ್ನಡ",
40206             "kn"
40207         ],
40208         [
40209             "Korean",
40210             "한국어",
40211             "ko"
40212         ],
40213         [
40214             "Komi-Permyak",
40215             "Перем Коми",
40216             "koi"
40217         ],
40218         [
40219             "Karachay-Balkar",
40220             "къарачай-малкъар",
40221             "krc"
40222         ],
40223         [
40224             "Kashmiri",
40225             "कॉशुर / کٲشُر",
40226             "ks"
40227         ],
40228         [
40229             "Colognian",
40230             "Ripoarisch",
40231             "ksh"
40232         ],
40233         [
40234             "Kurdish",
40235             "Kurdî",
40236             "ku"
40237         ],
40238         [
40239             "Komi",
40240             "коми",
40241             "kv"
40242         ],
40243         [
40244             "Cornish",
40245             "kernowek",
40246             "kw"
40247         ],
40248         [
40249             "Kyrgyz",
40250             "Кыргызча",
40251             "ky"
40252         ],
40253         [
40254             "Latin",
40255             "Latina",
40256             "la"
40257         ],
40258         [
40259             "Ladino",
40260             "Ladino",
40261             "lad"
40262         ],
40263         [
40264             "Luxembourgish",
40265             "Lëtzebuergesch",
40266             "lb"
40267         ],
40268         [
40269             "лакку",
40270             "лакку",
40271             "lbe"
40272         ],
40273         [
40274             "Lezghian",
40275             "лезги",
40276             "lez"
40277         ],
40278         [
40279             "Ganda",
40280             "Luganda",
40281             "lg"
40282         ],
40283         [
40284             "Limburgish",
40285             "Limburgs",
40286             "li"
40287         ],
40288         [
40289             "Ligurian",
40290             "Ligure",
40291             "lij"
40292         ],
40293         [
40294             "Lombard",
40295             "lumbaart",
40296             "lmo"
40297         ],
40298         [
40299             "Lingala",
40300             "lingála",
40301             "ln"
40302         ],
40303         [
40304             "Lao",
40305             "ລາວ",
40306             "lo"
40307         ],
40308         [
40309             "Northern Luri",
40310             "لۊری شومالی",
40311             "lrc"
40312         ],
40313         [
40314             "Lithuanian",
40315             "lietuvių",
40316             "lt"
40317         ],
40318         [
40319             "Latgalian",
40320             "latgaļu",
40321             "ltg"
40322         ],
40323         [
40324             "Latvian",
40325             "latviešu",
40326             "lv"
40327         ],
40328         [
40329             "Maithili",
40330             "मैथिली",
40331             "mai"
40332         ],
40333         [
40334             "Basa Banyumasan",
40335             "Basa Banyumasan",
40336             "map-bms"
40337         ],
40338         [
40339             "Moksha",
40340             "мокшень",
40341             "mdf"
40342         ],
40343         [
40344             "Malagasy",
40345             "Malagasy",
40346             "mg"
40347         ],
40348         [
40349             "Eastern Mari",
40350             "олык марий",
40351             "mhr"
40352         ],
40353         [
40354             "Maori",
40355             "Māori",
40356             "mi"
40357         ],
40358         [
40359             "Minangkabau",
40360             "Baso Minangkabau",
40361             "min"
40362         ],
40363         [
40364             "Macedonian",
40365             "македонски",
40366             "mk"
40367         ],
40368         [
40369             "Malayalam",
40370             "മലയാളം",
40371             "ml"
40372         ],
40373         [
40374             "Mongolian",
40375             "монгол",
40376             "mn"
40377         ],
40378         [
40379             "Marathi",
40380             "मराठी",
40381             "mr"
40382         ],
40383         [
40384             "Western Mari",
40385             "кырык мары",
40386             "mrj"
40387         ],
40388         [
40389             "Malay",
40390             "Bahasa Melayu",
40391             "ms"
40392         ],
40393         [
40394             "Maltese",
40395             "Malti",
40396             "mt"
40397         ],
40398         [
40399             "Mirandese",
40400             "Mirandés",
40401             "mwl"
40402         ],
40403         [
40404             "Burmese",
40405             "မြန်မာဘာသာ",
40406             "my"
40407         ],
40408         [
40409             "Erzya",
40410             "эрзянь",
40411             "myv"
40412         ],
40413         [
40414             "Mazanderani",
40415             "مازِرونی",
40416             "mzn"
40417         ],
40418         [
40419             "Nauru",
40420             "Dorerin Naoero",
40421             "na"
40422         ],
40423         [
40424             "Nāhuatl",
40425             "Nāhuatl",
40426             "nah"
40427         ],
40428         [
40429             "Neapolitan",
40430             "Napulitano",
40431             "nap"
40432         ],
40433         [
40434             "Low German",
40435             "Plattdüütsch",
40436             "nds"
40437         ],
40438         [
40439             "Low Saxon (Netherlands)",
40440             "Nedersaksies",
40441             "nds-nl"
40442         ],
40443         [
40444             "Nepali",
40445             "नेपाली",
40446             "ne"
40447         ],
40448         [
40449             "Newari",
40450             "नेपाल भाषा",
40451             "new"
40452         ],
40453         [
40454             "Dutch",
40455             "Nederlands",
40456             "nl"
40457         ],
40458         [
40459             "Norwegian Nynorsk",
40460             "norsk nynorsk",
40461             "nn"
40462         ],
40463         [
40464             "Norwegian",
40465             "norsk bokmål",
40466             "no"
40467         ],
40468         [
40469             "Novial",
40470             "Novial",
40471             "nov"
40472         ],
40473         [
40474             "Nouormand",
40475             "Nouormand",
40476             "nrm"
40477         ],
40478         [
40479             "Northern Sotho",
40480             "Sesotho sa Leboa",
40481             "nso"
40482         ],
40483         [
40484             "Navajo",
40485             "Diné bizaad",
40486             "nv"
40487         ],
40488         [
40489             "Nyanja",
40490             "Chi-Chewa",
40491             "ny"
40492         ],
40493         [
40494             "Occitan",
40495             "occitan",
40496             "oc"
40497         ],
40498         [
40499             "Oromo",
40500             "Oromoo",
40501             "om"
40502         ],
40503         [
40504             "Oriya",
40505             "ଓଡ଼ିଆ",
40506             "or"
40507         ],
40508         [
40509             "Ossetic",
40510             "Ирон",
40511             "os"
40512         ],
40513         [
40514             "Punjabi",
40515             "ਪੰਜਾਬੀ",
40516             "pa"
40517         ],
40518         [
40519             "Pangasinan",
40520             "Pangasinan",
40521             "pag"
40522         ],
40523         [
40524             "Pampanga",
40525             "Kapampangan",
40526             "pam"
40527         ],
40528         [
40529             "Papiamento",
40530             "Papiamentu",
40531             "pap"
40532         ],
40533         [
40534             "Picard",
40535             "Picard",
40536             "pcd"
40537         ],
40538         [
40539             "Pennsylvania German",
40540             "Deitsch",
40541             "pdc"
40542         ],
40543         [
40544             "Palatine German",
40545             "Pälzisch",
40546             "pfl"
40547         ],
40548         [
40549             "Pali",
40550             "पालि",
40551             "pi"
40552         ],
40553         [
40554             "Norfuk / Pitkern",
40555             "Norfuk / Pitkern",
40556             "pih"
40557         ],
40558         [
40559             "Polish",
40560             "polski",
40561             "pl"
40562         ],
40563         [
40564             "Piedmontese",
40565             "Piemontèis",
40566             "pms"
40567         ],
40568         [
40569             "Western Punjabi",
40570             "پنجابی",
40571             "pnb"
40572         ],
40573         [
40574             "Pontic",
40575             "Ποντιακά",
40576             "pnt"
40577         ],
40578         [
40579             "Pashto",
40580             "پښتو",
40581             "ps"
40582         ],
40583         [
40584             "Portuguese",
40585             "português",
40586             "pt"
40587         ],
40588         [
40589             "Quechua",
40590             "Runa Simi",
40591             "qu"
40592         ],
40593         [
40594             "Romansh",
40595             "rumantsch",
40596             "rm"
40597         ],
40598         [
40599             "Romani",
40600             "Romani",
40601             "rmy"
40602         ],
40603         [
40604             "Rundi",
40605             "Kirundi",
40606             "rn"
40607         ],
40608         [
40609             "Romanian",
40610             "română",
40611             "ro"
40612         ],
40613         [
40614             "Aromanian",
40615             "armãneashti",
40616             "roa-rup"
40617         ],
40618         [
40619             "tarandíne",
40620             "tarandíne",
40621             "roa-tara"
40622         ],
40623         [
40624             "Russian",
40625             "русский",
40626             "ru"
40627         ],
40628         [
40629             "Rusyn",
40630             "русиньскый",
40631             "rue"
40632         ],
40633         [
40634             "Kinyarwanda",
40635             "Kinyarwanda",
40636             "rw"
40637         ],
40638         [
40639             "Sanskrit",
40640             "संस्कृतम्",
40641             "sa"
40642         ],
40643         [
40644             "Sakha",
40645             "саха тыла",
40646             "sah"
40647         ],
40648         [
40649             "Sardinian",
40650             "sardu",
40651             "sc"
40652         ],
40653         [
40654             "Sicilian",
40655             "sicilianu",
40656             "scn"
40657         ],
40658         [
40659             "Scots",
40660             "Scots",
40661             "sco"
40662         ],
40663         [
40664             "Sindhi",
40665             "سنڌي",
40666             "sd"
40667         ],
40668         [
40669             "Northern Sami",
40670             "sámegiella",
40671             "se"
40672         ],
40673         [
40674             "Sango",
40675             "Sängö",
40676             "sg"
40677         ],
40678         [
40679             "Serbo-Croatian",
40680             "srpskohrvatski / српскохрватски",
40681             "sh"
40682         ],
40683         [
40684             "Sinhala",
40685             "සිංහල",
40686             "si"
40687         ],
40688         [
40689             "Simple English",
40690             "Simple English",
40691             "simple"
40692         ],
40693         [
40694             "Slovak",
40695             "slovenčina",
40696             "sk"
40697         ],
40698         [
40699             "Slovenian",
40700             "slovenščina",
40701             "sl"
40702         ],
40703         [
40704             "Samoan",
40705             "Gagana Samoa",
40706             "sm"
40707         ],
40708         [
40709             "Shona",
40710             "chiShona",
40711             "sn"
40712         ],
40713         [
40714             "Somali",
40715             "Soomaaliga",
40716             "so"
40717         ],
40718         [
40719             "Albanian",
40720             "shqip",
40721             "sq"
40722         ],
40723         [
40724             "Serbian",
40725             "српски / srpski",
40726             "sr"
40727         ],
40728         [
40729             "Sranan Tongo",
40730             "Sranantongo",
40731             "srn"
40732         ],
40733         [
40734             "Swati",
40735             "SiSwati",
40736             "ss"
40737         ],
40738         [
40739             "Southern Sotho",
40740             "Sesotho",
40741             "st"
40742         ],
40743         [
40744             "Saterland Frisian",
40745             "Seeltersk",
40746             "stq"
40747         ],
40748         [
40749             "Sundanese",
40750             "Basa Sunda",
40751             "su"
40752         ],
40753         [
40754             "Swedish",
40755             "svenska",
40756             "sv"
40757         ],
40758         [
40759             "Swahili",
40760             "Kiswahili",
40761             "sw"
40762         ],
40763         [
40764             "Silesian",
40765             "ślůnski",
40766             "szl"
40767         ],
40768         [
40769             "Tamil",
40770             "தமிழ்",
40771             "ta"
40772         ],
40773         [
40774             "Telugu",
40775             "తెలుగు",
40776             "te"
40777         ],
40778         [
40779             "Tetum",
40780             "tetun",
40781             "tet"
40782         ],
40783         [
40784             "Tajik",
40785             "тоҷикӣ",
40786             "tg"
40787         ],
40788         [
40789             "Thai",
40790             "ไทย",
40791             "th"
40792         ],
40793         [
40794             "Tigrinya",
40795             "ትግርኛ",
40796             "ti"
40797         ],
40798         [
40799             "Turkmen",
40800             "Türkmençe",
40801             "tk"
40802         ],
40803         [
40804             "Tagalog",
40805             "Tagalog",
40806             "tl"
40807         ],
40808         [
40809             "Tswana",
40810             "Setswana",
40811             "tn"
40812         ],
40813         [
40814             "Tongan",
40815             "lea faka-Tonga",
40816             "to"
40817         ],
40818         [
40819             "Tok Pisin",
40820             "Tok Pisin",
40821             "tpi"
40822         ],
40823         [
40824             "Turkish",
40825             "Türkçe",
40826             "tr"
40827         ],
40828         [
40829             "Tsonga",
40830             "Xitsonga",
40831             "ts"
40832         ],
40833         [
40834             "Tatar",
40835             "татарча/tatarça",
40836             "tt"
40837         ],
40838         [
40839             "Tumbuka",
40840             "chiTumbuka",
40841             "tum"
40842         ],
40843         [
40844             "Twi",
40845             "Twi",
40846             "tw"
40847         ],
40848         [
40849             "Tahitian",
40850             "reo tahiti",
40851             "ty"
40852         ],
40853         [
40854             "Tuvinian",
40855             "тыва дыл",
40856             "tyv"
40857         ],
40858         [
40859             "Udmurt",
40860             "удмурт",
40861             "udm"
40862         ],
40863         [
40864             "Uyghur",
40865             "ئۇيغۇرچە / Uyghurche",
40866             "ug"
40867         ],
40868         [
40869             "Ukrainian",
40870             "українська",
40871             "uk"
40872         ],
40873         [
40874             "Urdu",
40875             "اردو",
40876             "ur"
40877         ],
40878         [
40879             "Uzbek",
40880             "oʻzbekcha/ўзбекча",
40881             "uz"
40882         ],
40883         [
40884             "Venda",
40885             "Tshivenda",
40886             "ve"
40887         ],
40888         [
40889             "Venetian",
40890             "vèneto",
40891             "vec"
40892         ],
40893         [
40894             "Veps",
40895             "vepsän kel’",
40896             "vep"
40897         ],
40898         [
40899             "Vietnamese",
40900             "Tiếng Việt",
40901             "vi"
40902         ],
40903         [
40904             "West Flemish",
40905             "West-Vlams",
40906             "vls"
40907         ],
40908         [
40909             "Volapük",
40910             "Volapük",
40911             "vo"
40912         ],
40913         [
40914             "Walloon",
40915             "walon",
40916             "wa"
40917         ],
40918         [
40919             "Waray",
40920             "Winaray",
40921             "war"
40922         ],
40923         [
40924             "Wolof",
40925             "Wolof",
40926             "wo"
40927         ],
40928         [
40929             "Wu Chinese",
40930             "吴语",
40931             "wuu"
40932         ],
40933         [
40934             "Kalmyk",
40935             "хальмг",
40936             "xal"
40937         ],
40938         [
40939             "Xhosa",
40940             "isiXhosa",
40941             "xh"
40942         ],
40943         [
40944             "Mingrelian",
40945             "მარგალური",
40946             "xmf"
40947         ],
40948         [
40949             "Yiddish",
40950             "ייִדיש",
40951             "yi"
40952         ],
40953         [
40954             "Yoruba",
40955             "Yorùbá",
40956             "yo"
40957         ],
40958         [
40959             "Zhuang",
40960             "Vahcuengh",
40961             "za"
40962         ],
40963         [
40964             "Zeelandic",
40965             "Zeêuws",
40966             "zea"
40967         ],
40968         [
40969             "Chinese",
40970             "中文",
40971             "zh"
40972         ],
40973         [
40974             "Classical Chinese",
40975             "文言",
40976             "zh-classical"
40977         ],
40978         [
40979             "Chinese (Min Nan)",
40980             "Bân-lâm-gú",
40981             "zh-min-nan"
40982         ],
40983         [
40984             "Cantonese",
40985             "粵語",
40986             "zh-yue"
40987         ],
40988         [
40989             "Zulu",
40990             "isiZulu",
40991             "zu"
40992         ]
40993     ],
40994     "imperial": {
40995         "type": "FeatureCollection",
40996         "features": [
40997             {
40998                 "type": "Feature",
40999                 "properties": {
41000                     "id": 0
41001                 },
41002                 "geometry": {
41003                     "type": "MultiPolygon",
41004                     "coordinates": [
41005                         [
41006                             [
41007                                 [
41008                                     -1.426496,
41009                                     50.639342
41010                                 ],
41011                                 [
41012                                     -1.445953,
41013                                     50.648139
41014                                 ],
41015                                 [
41016                                     -1.452789,
41017                                     50.654283
41018                                 ],
41019                                 [
41020                                     -1.485951,
41021                                     50.669338
41022                                 ],
41023                                 [
41024                                     -1.497426,
41025                                     50.672309
41026                                 ],
41027                                 [
41028                                     -1.535146,
41029                                     50.669379
41030                                 ],
41031                                 [
41032                                     -1.551503,
41033                                     50.665107
41034                                 ],
41035                                 [
41036                                     -1.569488,
41037                                     50.658026
41038                                 ],
41039                                 [
41040                                     -1.545318,
41041                                     50.686103
41042                                 ],
41043                                 [
41044                                     -1.50593,
41045                                     50.707709
41046                                 ],
41047                                 [
41048                                     -1.418691,
41049                                     50.733791
41050                                 ],
41051                                 [
41052                                     -1.420888,
41053                                     50.730455
41054                                 ],
41055                                 [
41056                                     -1.423451,
41057                                     50.7237
41058                                 ],
41059                                 [
41060                                     -1.425364,
41061                                     50.72012
41062                                 ],
41063                                 [
41064                                     -1.400868,
41065                                     50.721991
41066                                 ],
41067                                 [
41068                                     -1.377553,
41069                                     50.734198
41070                                 ],
41071                                 [
41072                                     -1.343495,
41073                                     50.761054
41074                                 ],
41075                                 [
41076                                     -1.318512,
41077                                     50.772162
41078                                 ],
41079                                 [
41080                                     -1.295766,
41081                                     50.773179
41082                                 ],
41083                                 [
41084                                     -1.144276,
41085                                     50.733791
41086                                 ],
41087                                 [
41088                                     -1.119537,
41089                                     50.734198
41090                                 ],
41091                                 [
41092                                     -1.10912,
41093                                     50.732856
41094                                 ],
41095                                 [
41096                                     -1.097035,
41097                                     50.726955
41098                                 ],
41099                                 [
41100                                     -1.096425,
41101                                     50.724433
41102                                 ],
41103                                 [
41104                                     -1.097646,
41105                                     50.71601
41106                                 ],
41107                                 [
41108                                     -1.097035,
41109                                     50.713324
41110                                 ],
41111                                 [
41112                                     -1.094228,
41113                                     50.712633
41114                                 ],
41115                                 [
41116                                     -1.085561,
41117                                     50.714016
41118                                 ],
41119                                 [
41120                                     -1.082753,
41121                                     50.713324
41122                                 ],
41123                                 [
41124                                     -1.062327,
41125                                     50.692816
41126                                 ],
41127                                 [
41128                                     -1.062327,
41129                                     50.685289
41130                                 ],
41131                                 [
41132                                     -1.066965,
41133                                     50.685248
41134                                 ],
41135                                 [
41136                                     -1.069651,
41137                                     50.683498
41138                                 ],
41139                                 [
41140                                     -1.071889,
41141                                     50.680976
41142                                 ],
41143                                 [
41144                                     -1.075307,
41145                                     50.678534
41146                                 ],
41147                                 [
41148                                     -1.112701,
41149                                     50.671454
41150                                 ],
41151                                 [
41152                                     -1.128651,
41153                                     50.666449
41154                                 ],
41155                                 [
41156                                     -1.156361,
41157                                     50.650784
41158                                 ],
41159                                 [
41160                                     -1.162221,
41161                                     50.645982
41162                                 ],
41163                                 [
41164                                     -1.164703,
41165                                     50.640937
41166                                 ],
41167                                 [
41168                                     -1.164666,
41169                                     50.639543
41170                                 ],
41171                                 [
41172                                     -1.426496,
41173                                     50.639342
41174                                 ]
41175                             ]
41176                         ],
41177                         [
41178                             [
41179                                 [
41180                                     -7.240314,
41181                                     55.050389
41182                                 ],
41183                                 [
41184                                     -7.013736,
41185                                     55.1615
41186                                 ],
41187                                 [
41188                                     -6.958913,
41189                                     55.20349
41190                                 ],
41191                                 [
41192                                     -6.571562,
41193                                     55.268366
41194                                 ],
41195                                 [
41196                                     -6.509633,
41197                                     55.31398
41198                                 ],
41199                                 [
41200                                     -6.226158,
41201                                     55.344406
41202                                 ],
41203                                 [
41204                                     -6.07105,
41205                                     55.25001
41206                                 ],
41207                                 [
41208                                     -5.712696,
41209                                     55.017635
41210                                 ],
41211                                 [
41212                                     -5.242021,
41213                                     54.415204
41214                                 ],
41215                                 [
41216                                     -5.695554,
41217                                     54.14284
41218                                 ],
41219                                 [
41220                                     -5.72473,
41221                                     54.07455
41222                                 ],
41223                                 [
41224                                     -6.041633,
41225                                     54.006238
41226                                 ],
41227                                 [
41228                                     -6.153953,
41229                                     54.054931
41230                                 ],
41231                                 [
41232                                     -6.220539,
41233                                     54.098803
41234                                 ],
41235                                 [
41236                                     -6.242502,
41237                                     54.099758
41238                                 ],
41239                                 [
41240                                     -6.263661,
41241                                     54.104682
41242                                 ],
41243                                 [
41244                                     -6.269887,
41245                                     54.097927
41246                                 ],
41247                                 [
41248                                     -6.28465,
41249                                     54.105226
41250                                 ],
41251                                 [
41252                                     -6.299585,
41253                                     54.104037
41254                                 ],
41255                                 [
41256                                     -6.313796,
41257                                     54.099696
41258                                 ],
41259                                 [
41260                                     -6.327128,
41261                                     54.097888
41262                                 ],
41263                                 [
41264                                     -6.338962,
41265                                     54.102952
41266                                 ],
41267                                 [
41268                                     -6.346662,
41269                                     54.109877
41270                                 ],
41271                                 [
41272                                     -6.354827,
41273                                     54.110652
41274                                 ],
41275                                 [
41276                                     -6.368108,
41277                                     54.097319
41278                                 ],
41279                                 [
41280                                     -6.369348,
41281                                     54.091118
41282                                 ],
41283                                 [
41284                                     -6.367643,
41285                                     54.083418
41286                                 ],
41287                                 [
41288                                     -6.366919,
41289                                     54.075098
41290                                 ],
41291                                 [
41292                                     -6.371157,
41293                                     54.066778
41294                                 ],
41295                                 [
41296                                     -6.377513,
41297                                     54.063264
41298                                 ],
41299                                 [
41300                                     -6.401026,
41301                                     54.060887
41302                                 ],
41303                                 [
41304                                     -6.426761,
41305                                     54.05541
41306                                 ],
41307                                 [
41308                                     -6.433892,
41309                                     54.055306
41310                                 ],
41311                                 [
41312                                     -6.4403,
41313                                     54.057993
41314                                 ],
41315                                 [
41316                                     -6.446243,
41317                                     54.062438
41318                                 ],
41319                                 [
41320                                     -6.450222,
41321                                     54.066675
41322                                 ],
41323                                 [
41324                                     -6.450894,
41325                                     54.068432
41326                                 ],
41327                                 [
41328                                     -6.47854,
41329                                     54.067709
41330                                 ],
41331                                 [
41332                                     -6.564013,
41333                                     54.04895
41334                                 ],
41335                                 [
41336                                     -6.571868,
41337                                     54.049519
41338                                 ],
41339                                 [
41340                                     -6.587164,
41341                                     54.053343
41342                                 ],
41343                                 [
41344                                     -6.595071,
41345                                     54.052412
41346                                 ],
41347                                 [
41348                                     -6.60029,
41349                                     54.04895
41350                                 ],
41351                                 [
41352                                     -6.605217,
41353                                     54.044475
41354                                 ],
41355                                 [
41356                                     -6.610987,
41357                                     54.039235
41358                                 ],
41359                                 [
41360                                     -6.616465,
41361                                     54.037271
41362                                 ],
41363                                 [
41364                                     -6.630624,
41365                                     54.041819
41366                                 ],
41367                                 [
41368                                     -6.657289,
41369                                     54.061146
41370                                 ],
41371                                 [
41372                                     -6.672534,
41373                                     54.068432
41374                                 ],
41375                                 [
41376                                     -6.657082,
41377                                     54.091945
41378                                 ],
41379                                 [
41380                                     -6.655791,
41381                                     54.103314
41382                                 ],
41383                                 [
41384                                     -6.666436,
41385                                     54.114786
41386                                 ],
41387                                 [
41388                                     -6.643957,
41389                                     54.131839
41390                                 ],
41391                                 [
41392                                     -6.634552,
41393                                     54.150133
41394                                 ],
41395                                 [
41396                                     -6.640339,
41397                                     54.168013
41398                                 ],
41399                                 [
41400                                     -6.648448,
41401                                     54.173665
41402                                 ],
41403                                 [
41404                                     -6.663025,
41405                                     54.183826
41406                                 ],
41407                                 [
41408                                     -6.683954,
41409                                     54.194368
41410                                 ],
41411                                 [
41412                                     -6.694651,
41413                                     54.197985
41414                                 ],
41415                                 [
41416                                     -6.706537,
41417                                     54.198915
41418                                 ],
41419                                 [
41420                                     -6.717234,
41421                                     54.195143
41422                                 ],
41423                                 [
41424                                     -6.724779,
41425                                     54.188631
41426                                 ],
41427                                 [
41428                                     -6.73284,
41429                                     54.183567
41430                                 ],
41431                                 [
41432                                     -6.744777,
41433                                     54.184187
41434                                 ],
41435                                 [
41436                                     -6.766481,
41437                                     54.192352
41438                                 ],
41439                                 [
41440                                     -6.787824,
41441                                     54.202998
41442                                 ],
41443                                 [
41444                                     -6.807358,
41445                                     54.21633
41446                                 ],
41447                                 [
41448                                     -6.823946,
41449                                     54.23235
41450                                 ],
41451                                 [
41452                                     -6.829733,
41453                                     54.242375
41454                                 ],
41455                                 [
41456                                     -6.833196,
41457                                     54.25209
41458                                 ],
41459                                 [
41460                                     -6.837743,
41461                                     54.260513
41462                                 ],
41463                                 [
41464                                     -6.846683,
41465                                     54.266456
41466                                 ],
41467                                 [
41468                                     -6.882185,
41469                                     54.277257
41470                                 ],
41471                                 [
41472                                     -6.864667,
41473                                     54.282734
41474                                 ],
41475                                 [
41476                                     -6.856657,
41477                                     54.292811
41478                                 ],
41479                                 [
41480                                     -6.858414,
41481                                     54.307332
41482                                 ],
41483                                 [
41484                                     -6.870015,
41485                                     54.326001
41486                                 ],
41487                                 [
41488                                     -6.879705,
41489                                     54.341594
41490                                 ],
41491                                 [
41492                                     -6.885957,
41493                                     54.345624
41494                                 ],
41495                                 [
41496                                     -6.897895,
41497                                     54.346193
41498                                 ],
41499                                 [
41500                                     -6.905956,
41501                                     54.349035
41502                                 ],
41503                                 [
41504                                     -6.915051,
41505                                     54.365933
41506                                 ],
41507                                 [
41508                                     -6.922028,
41509                                     54.372703
41510                                 ],
41511                                 [
41512                                     -6.984091,
41513                                     54.403089
41514                                 ],
41515                                 [
41516                                     -7.017836,
41517                                     54.413166
41518                                 ],
41519                                 [
41520                                     -7.049255,
41521                                     54.411512
41522                                 ],
41523                                 [
41524                                     -7.078504,
41525                                     54.394717
41526                                 ],
41527                                 [
41528                                     -7.127028,
41529                                     54.349759
41530                                 ],
41531                                 [
41532                                     -7.159894,
41533                                     54.335186
41534                                 ],
41535                                 [
41536                                     -7.168059,
41537                                     54.335031
41538                                 ],
41539                                 [
41540                                     -7.185629,
41541                                     54.336943
41542                                 ],
41543                                 [
41544                                     -7.18947,
41545                                     54.335692
41546                                 ],
41547                                 [
41548                                     -7.19245,
41549                                     54.334721
41550                                 ],
41551                                 [
41552                                     -7.193949,
41553                                     54.329967
41554                                 ],
41555                                 [
41556                                     -7.191468,
41557                                     54.323869
41558                                 ],
41559                                 [
41560                                     -7.187644,
41561                                     54.318804
41562                                 ],
41563                                 [
41564                                     -7.185009,
41565                                     54.317254
41566                                 ],
41567                                 [
41568                                     -7.184647,
41569                                     54.316634
41570                                 ],
41571                                 [
41572                                     -7.192399,
41573                                     54.307384
41574                                 ],
41575                                 [
41576                                     -7.193691,
41577                                     54.307539
41578                                 ],
41579                                 [
41580                                     -7.199168,
41581                                     54.303457
41582                                 ],
41583                                 [
41584                                     -7.206661,
41585                                     54.304903
41586                                 ],
41587                                 [
41588                                     -7.211467,
41589                                     54.30418
41590                                 ],
41591                                 [
41592                                     -7.209038,
41593                                     54.293431
41594                                 ],
41595                                 [
41596                                     -7.1755,
41597                                     54.283664
41598                                 ],
41599                                 [
41600                                     -7.181495,
41601                                     54.269763
41602                                 ],
41603                                 [
41604                                     -7.14589,
41605                                     54.25209
41606                                 ],
41607                                 [
41608                                     -7.159739,
41609                                     54.24067
41610                                 ],
41611                                 [
41612                                     -7.153331,
41613                                     54.224237
41614                                 ],
41615                                 [
41616                                     -7.174725,
41617                                     54.216072
41618                                 ],
41619                                 [
41620                                     -7.229502,
41621                                     54.207545
41622                                 ],
41623                                 [
41624                                     -7.240871,
41625                                     54.202326
41626                                 ],
41627                                 [
41628                                     -7.249088,
41629                                     54.197416
41630                                 ],
41631                                 [
41632                                     -7.255496,
41633                                     54.190854
41634                                 ],
41635                                 [
41636                                     -7.261128,
41637                                     54.18088
41638                                 ],
41639                                 [
41640                                     -7.256322,
41641                                     54.176901
41642                                 ],
41643                                 [
41644                                     -7.247021,
41645                                     54.17225
41646                                 ],
41647                                 [
41648                                     -7.24578,
41649                                     54.166979
41650                                 ],
41651                                 [
41652                                     -7.265366,
41653                                     54.16114
41654                                 ],
41655                                 [
41656                                     -7.26087,
41657                                     54.151166
41658                                 ],
41659                                 [
41660                                     -7.263505,
41661                                     54.140986
41662                                 ],
41663                                 [
41664                                     -7.27074,
41665                                     54.132253
41666                                 ],
41667                                 [
41668                                     -7.280042,
41669                                     54.126155
41670                                 ],
41671                                 [
41672                                     -7.293788,
41673                                     54.122021
41674                                 ],
41675                                 [
41676                                     -7.297353,
41677                                     54.125896
41678                                 ],
41679                                 [
41680                                     -7.29632,
41681                                     54.134991
41682                                 ],
41683                                 [
41684                                     -7.296423,
41685                                     54.146515
41686                                 ],
41687                                 [
41688                                     -7.295028,
41689                                     54.155404
41690                                 ],
41691                                 [
41692                                     -7.292134,
41693                                     54.162638
41694                                 ],
41695                                 [
41696                                     -7.295545,
41697                                     54.165119
41698                                 ],
41699                                 [
41700                                     -7.325982,
41701                                     54.154577
41702                                 ],
41703                                 [
41704                                     -7.333165,
41705                                     54.149409
41706                                 ],
41707                                 [
41708                                     -7.333165,
41709                                     54.142743
41710                                 ],
41711                                 [
41712                                     -7.310324,
41713                                     54.114683
41714                                 ],
41715                                 [
41716                                     -7.316489,
41717                                     54.11428
41718                                 ],
41719                                 [
41720                                     -7.326964,
41721                                     54.113597
41722                                 ],
41723                                 [
41724                                     -7.375488,
41725                                     54.123312
41726                                 ],
41727                                 [
41728                                     -7.390216,
41729                                     54.121194
41730                                 ],
41731                                 [
41732                                     -7.39466,
41733                                     54.121917
41734                                 ],
41735                                 [
41736                                     -7.396624,
41737                                     54.126258
41738                                 ],
41739                                 [
41740                                     -7.403962,
41741                                     54.135043
41742                                 ],
41743                                 [
41744                                     -7.41223,
41745                                     54.136438
41746                                 ],
41747                                 [
41748                                     -7.422255,
41749                                     54.135456
41750                                 ],
41751                                 [
41752                                     -7.425769,
41753                                     54.136955
41754                                 ],
41755                                 [
41756                                     -7.414659,
41757                                     54.145688
41758                                 ],
41759                                 [
41760                                     -7.439619,
41761                                     54.146929
41762                                 ],
41763                                 [
41764                                     -7.480753,
41765                                     54.127653
41766                                 ],
41767                                 [
41768                                     -7.502302,
41769                                     54.125121
41770                                 ],
41771                                 [
41772                                     -7.609014,
41773                                     54.139901
41774                                 ],
41775                                 [
41776                                     -7.620796,
41777                                     54.144965
41778                                 ],
41779                                 [
41780                                     -7.624052,
41781                                     54.153336
41782                                 ],
41783                                 [
41784                                     -7.625706,
41785                                     54.162173
41786                                 ],
41787                                 [
41788                                     -7.632682,
41789                                     54.168529
41790                                 ],
41791                                 [
41792                                     -7.70477,
41793                                     54.200362
41794                                 ],
41795                                 [
41796                                     -7.722599,
41797                                     54.202326
41798                                 ],
41799                                 [
41800                                     -7.782078,
41801                                     54.2
41802                                 ],
41803                                 [
41804                                     -7.836959,
41805                                     54.204341
41806                                 ],
41807                                 [
41808                                     -7.856441,
41809                                     54.211421
41810                                 ],
41811                                 [
41812                                     -7.86967,
41813                                     54.226872
41814                                 ],
41815                                 [
41816                                     -7.873649,
41817                                     54.271055
41818                                 ],
41819                                 [
41820                                     -7.880264,
41821                                     54.287023
41822                                 ],
41823                                 [
41824                                     -7.894966,
41825                                     54.293586
41826                                 ],
41827                                 [
41828                                     -7.93411,
41829                                     54.297049
41830                                 ],
41831                                 [
41832                                     -7.942075,
41833                                     54.298873
41834                                 ],
41835                                 [
41836                                     -7.950802,
41837                                     54.300873
41838                                 ],
41839                                 [
41840                                     -7.96801,
41841                                     54.31219
41842                                 ],
41843                                 [
41844                                     -7.981033,
41845                                     54.326556
41846                                 ],
41847                                 [
41848                                     -8.002194,
41849                                     54.357923
41850                                 ],
41851                                 [
41852                                     -8.03134,
41853                                     54.358027
41854                                 ],
41855                                 [
41856                                     -8.05648,
41857                                     54.365882
41858                                 ],
41859                                 [
41860                                     -8.079941,
41861                                     54.380196
41862                                 ],
41863                                 [
41864                                     -8.122419,
41865                                     54.415233
41866                                 ],
41867                                 [
41868                                     -8.146346,
41869                                     54.430736
41870                                 ],
41871                                 [
41872                                     -8.156035,
41873                                     54.439055
41874                                 ],
41875                                 [
41876                                     -8.158128,
41877                                     54.447117
41878                                 ],
41879                                 [
41880                                     -8.161177,
41881                                     54.454817
41882                                 ],
41883                                 [
41884                                     -8.173837,
41885                                     54.461741
41886                                 ],
41887                                 [
41888                                     -8.168467,
41889                                     54.463477
41890                                 ],
41891                                 [
41892                                     -8.15017,
41893                                     54.46939
41894                                 ],
41895                                 [
41896                                     -8.097046,
41897                                     54.478588
41898                                 ],
41899                                 [
41900                                     -8.072448,
41901                                     54.487063
41902                                 ],
41903                                 [
41904                                     -8.060976,
41905                                     54.493316
41906                                 ],
41907                                 [
41908                                     -8.05586,
41909                                     54.497553
41910                                 ],
41911                                 [
41912                                     -8.043561,
41913                                     54.512229
41914                                 ],
41915                                 [
41916                                     -8.023278,
41917                                     54.529696
41918                                 ],
41919                                 [
41920                                     -8.002194,
41921                                     54.543442
41922                                 ],
41923                                 [
41924                                     -7.926411,
41925                                     54.533055
41926                                 ],
41927                                 [
41928                                     -7.887137,
41929                                     54.532125
41930                                 ],
41931                                 [
41932                                     -7.848844,
41933                                     54.54091
41934                                 ],
41935                                 [
41936                                     -7.749264,
41937                                     54.596152
41938                                 ],
41939                                 [
41940                                     -7.707871,
41941                                     54.604162
41942                                 ],
41943                                 [
41944                                     -7.707944,
41945                                     54.604708
41946                                 ],
41947                                 [
41948                                     -7.707951,
41949                                     54.604763
41950                                 ],
41951                                 [
41952                                     -7.710558,
41953                                     54.624264
41954                                 ],
41955                                 [
41956                                     -7.721204,
41957                                     54.625866
41958                                 ],
41959                                 [
41960                                     -7.736758,
41961                                     54.619251
41962                                 ],
41963                                 [
41964                                     -7.753553,
41965                                     54.614497
41966                                 ],
41967                                 [
41968                                     -7.769159,
41969                                     54.618011
41970                                 ],
41971                                 [
41972                                     -7.801199,
41973                                     54.634806
41974                                 ],
41975                                 [
41976                                     -7.814996,
41977                                     54.639457
41978                                 ],
41979                                 [
41980                                     -7.822541,
41981                                     54.638113
41982                                 ],
41983                                 [
41984                                     -7.838044,
41985                                     54.63124
41986                                 ],
41987                                 [
41988                                     -7.846416,
41989                                     54.631447
41990                                 ],
41991                                 [
41992                                     -7.85427,
41993                                     54.636408
41994                                 ],
41995                                 [
41996                                     -7.864347,
41997                                     54.649069
41998                                 ],
41999                                 [
42000                                     -7.872771,
42001                                     54.652221
42002                                 ],
42003                                 [
42004                                     -7.890082,
42005                                     54.655063
42006                                 ],
42007                                 [
42008                                     -7.906619,
42009                                     54.661316
42010                                 ],
42011                                 [
42012                                     -7.914835,
42013                                     54.671651
42014                                 ],
42015                                 [
42016                                     -7.907135,
42017                                     54.686689
42018                                 ],
42019                                 [
42020                                     -7.913233,
42021                                     54.688653
42022                                 ],
42023                                 [
42024                                     -7.929666,
42025                                     54.696714
42026                                 ],
42027                                 [
42028                                     -7.880109,
42029                                     54.711029
42030                                 ],
42031                                 [
42032                                     -7.845899,
42033                                     54.731027
42034                                 ],
42035                                 [
42036                                     -7.832153,
42037                                     54.730614
42038                                 ],
42039                                 [
42040                                     -7.803576,
42041                                     54.716145
42042                                 ],
42043                                 [
42044                                     -7.770503,
42045                                     54.706016
42046                                 ],
42047                                 [
42048                                     -7.736603,
42049                                     54.707463
42050                                 ],
42051                                 [
42052                                     -7.70229,
42053                                     54.718883
42054                                 ],
42055                                 [
42056                                     -7.667512,
42057                                     54.738779
42058                                 ],
42059                                 [
42060                                     -7.649683,
42061                                     54.744877
42062                                 ],
42063                                 [
42064                                     -7.61537,
42065                                     54.739347
42066                                 ],
42067                                 [
42068                                     -7.585398,
42069                                     54.744722
42070                                 ],
42071                                 [
42072                                     -7.566639,
42073                                     54.738675
42074                                 ],
42075                                 [
42076                                     -7.556149,
42077                                     54.738365
42078                                 ],
42079                                 [
42080                                     -7.543075,
42081                                     54.741673
42082                                 ],
42083                                 [
42084                                     -7.543023,
42085                                     54.743791
42086                                 ],
42087                                 [
42088                                     -7.548398,
42089                                     54.747202
42090                                 ],
42091                                 [
42092                                     -7.551705,
42093                                     54.754695
42094                                 ],
42095                                 [
42096                                     -7.549741,
42097                                     54.779603
42098                                 ],
42099                                 [
42100                                     -7.543385,
42101                                     54.793091
42102                                 ],
42103                                 [
42104                                     -7.470831,
42105                                     54.845284
42106                                 ],
42107                                 [
42108                                     -7.45507,
42109                                     54.863009
42110                                 ],
42111                                 [
42112                                     -7.444735,
42113                                     54.884455
42114                                 ],
42115                                 [
42116                                     -7.444735,
42117                                     54.894893
42118                                 ],
42119                                 [
42120                                     -7.448972,
42121                                     54.920318
42122                                 ],
42123                                 [
42124                                     -7.445251,
42125                                     54.932152
42126                                 ],
42127                                 [
42128                                     -7.436983,
42129                                     54.938301
42130                                 ],
42131                                 [
42132                                     -7.417139,
42133                                     54.943056
42134                                 ],
42135                                 [
42136                                     -7.415755,
42137                                     54.944372
42138                                 ],
42139                                 [
42140                                     -7.408665,
42141                                     54.951117
42142                                 ],
42143                                 [
42144                                     -7.407424,
42145                                     54.959437
42146                                 ],
42147                                 [
42148                                     -7.413109,
42149                                     54.984965
42150                                 ],
42151                                 [
42152                                     -7.409078,
42153                                     54.992045
42154                                 ],
42155                                 [
42156                                     -7.403755,
42157                                     54.99313
42158                                 ],
42159                                 [
42160                                     -7.40112,
42161                                     54.994836
42162                                 ],
42163                                 [
42164                                     -7.405254,
42165                                     55.003569
42166                                 ],
42167                                 [
42168                                     -7.376987,
42169                                     55.02889
42170                                 ],
42171                                 [
42172                                     -7.366962,
42173                                     55.035557
42174                                 ],
42175                                 [
42176                                     -7.355024,
42177                                     55.040931
42178                                 ],
42179                                 [
42180                                     -7.291152,
42181                                     55.046615
42182                                 ],
42183                                 [
42184                                     -7.282987,
42185                                     55.051835
42186                                 ],
42187                                 [
42188                                     -7.275288,
42189                                     55.058863
42190                                 ],
42191                                 [
42192                                     -7.266503,
42193                                     55.065167
42194                                 ],
42195                                 [
42196                                     -7.247097,
42197                                     55.069328
42198                                 ],
42199                                 [
42200                                     -7.2471,
42201                                     55.069322
42202                                 ],
42203                                 [
42204                                     -7.256744,
42205                                     55.050686
42206                                 ],
42207                                 [
42208                                     -7.240956,
42209                                     55.050279
42210                                 ],
42211                                 [
42212                                     -7.240314,
42213                                     55.050389
42214                                 ]
42215                             ]
42216                         ],
42217                         [
42218                             [
42219                                 [
42220                                     -13.688588,
42221                                     57.596259
42222                                 ],
42223                                 [
42224                                     -13.690419,
42225                                     57.596259
42226                                 ],
42227                                 [
42228                                     -13.691314,
42229                                     57.596503
42230                                 ],
42231                                 [
42232                                     -13.691314,
42233                                     57.597154
42234                                 ],
42235                                 [
42236                                     -13.690419,
42237                                     57.597805
42238                                 ],
42239                                 [
42240                                     -13.688588,
42241                                     57.597805
42242                                 ],
42243                                 [
42244                                     -13.687652,
42245                                     57.597154
42246                                 ],
42247                                 [
42248                                     -13.687652,
42249                                     57.596869
42250                                 ],
42251                                 [
42252                                     -13.688588,
42253                                     57.596259
42254                                 ]
42255                             ]
42256                         ],
42257                         [
42258                             [
42259                                 [
42260                                     -4.839121,
42261                                     54.469789
42262                                 ],
42263                                 [
42264                                     -4.979941,
42265                                     54.457977
42266                                 ],
42267                                 [
42268                                     -5.343644,
42269                                     54.878637
42270                                 ],
42271                                 [
42272                                     -5.308469,
42273                                     55.176452
42274                                 ],
42275                                 [
42276                                     -6.272566,
42277                                     55.418443
42278                                 ],
42279                                 [
42280                                     -8.690528,
42281                                     57.833706
42282                                 ],
42283                                 [
42284                                     -6.344705,
42285                                     59.061083
42286                                 ],
42287                                 [
42288                                     -4.204785,
42289                                     58.63305
42290                                 ],
42291                                 [
42292                                     -2.31566,
42293                                     60.699068
42294                                 ],
42295                                 [
42296                                     -1.695335,
42297                                     60.76432
42298                                 ],
42299                                 [
42300                                     -1.58092,
42301                                     60.866001
42302                                 ],
42303                                 [
42304                                     -0.17022,
42305                                     60.897204
42306                                 ],
42307                                 [
42308                                     -0.800508,
42309                                     59.770037
42310                                 ],
42311                                 [
42312                                     -1.292368,
42313                                     57.732574
42314                                 ],
42315                                 [
42316                                     -1.850077,
42317                                     55.766368
42318                                 ],
42319                                 [
42320                                     -1.73054,
42321                                     55.782219
42322                                 ],
42323                                 [
42324                                     1.892395,
42325                                     52.815229
42326                                 ],
42327                                 [
42328                                     1.742775,
42329                                     51.364209
42330                                 ],
42331                                 [
42332                                     1.080173,
42333                                     50.847526
42334                                 ],
42335                                 [
42336                                     0.000774,
42337                                     50.664982
42338                                 ],
42339                                 [
42340                                     -0.162997,
42341                                     50.752401
42342                                 ],
42343                                 [
42344                                     -0.725152,
42345                                     50.731879
42346                                 ],
42347                                 [
42348                                     -0.768853,
42349                                     50.741516
42350                                 ],
42351                                 [
42352                                     -0.770985,
42353                                     50.736884
42354                                 ],
42355                                 [
42356                                     -0.789947,
42357                                     50.730048
42358                                 ],
42359                                 [
42360                                     -0.812815,
42361                                     50.734768
42362                                 ],
42363                                 [
42364                                     -0.877742,
42365                                     50.761156
42366                                 ],
42367                                 [
42368                                     -0.942879,
42369                                     50.758338
42370                                 ],
42371                                 [
42372                                     -0.992581,
42373                                     50.737379
42374                                 ],
42375                                 [
42376                                     -1.18513,
42377                                     50.766989
42378                                 ],
42379                                 [
42380                                     -1.282741,
42381                                     50.792353
42382                                 ],
42383                                 [
42384                                     -1.375004,
42385                                     50.772063
42386                                 ],
42387                                 [
42388                                     -1.523427,
42389                                     50.719605
42390                                 ],
42391                                 [
42392                                     -1.630649,
42393                                     50.695128
42394                                 ],
42395                                 [
42396                                     -1.663617,
42397                                     50.670508
42398                                 ],
42399                                 [
42400                                     -1.498021,
42401                                     50.40831
42402                                 ],
42403                                 [
42404                                     -4.097427,
42405                                     49.735486
42406                                 ],
42407                                 [
42408                                     -6.825199,
42409                                     49.700905
42410                                 ],
42411                                 [
42412                                     -5.541541,
42413                                     51.446591
42414                                 ],
42415                                 [
42416                                     -6.03361,
42417                                     51.732369
42418                                 ],
42419                                 [
42420                                     -4.791746,
42421                                     52.635365
42422                                 ],
42423                                 [
42424                                     -4.969244,
42425                                     52.637413
42426                                 ],
42427                                 [
42428                                     -5.049473,
42429                                     53.131209
42430                                 ],
42431                                 [
42432                                     -4.787393,
42433                                     53.409491
42434                                 ],
42435                                 [
42436                                     -4.734148,
42437                                     53.424866
42438                                 ],
42439                                 [
42440                                     -4.917096,
42441                                     53.508212
42442                                 ],
42443                                 [
42444                                     -4.839121,
42445                                     54.469789
42446                                 ]
42447                             ]
42448                         ]
42449                     ]
42450                 }
42451             },
42452             {
42453                 "type": "Feature",
42454                 "properties": {
42455                     "id": 0
42456                 },
42457                 "geometry": {
42458                     "type": "MultiPolygon",
42459                     "coordinates": [
42460                         [
42461                             [
42462                                 [
42463                                     -157.018938,
42464                                     19.300864
42465                                 ],
42466                                 [
42467                                     -179.437336,
42468                                     27.295312
42469                                 ],
42470                                 [
42471                                     -179.480084,
42472                                     28.991459
42473                                 ],
42474                                 [
42475                                     -168.707465,
42476                                     26.30325
42477                                 ],
42478                                 [
42479                                     -163.107414,
42480                                     24.60499
42481                                 ],
42482                                 [
42483                                     -153.841679,
42484                                     20.079306
42485                                 ],
42486                                 [
42487                                     -154.233846,
42488                                     19.433391
42489                                 ],
42490                                 [
42491                                     -153.61725,
42492                                     18.900587
42493                                 ],
42494                                 [
42495                                     -154.429471,
42496                                     18.171036
42497                                 ],
42498                                 [
42499                                     -156.780638,
42500                                     18.718492
42501                                 ],
42502                                 [
42503                                     -157.018938,
42504                                     19.300864
42505                                 ]
42506                             ]
42507                         ],
42508                         [
42509                             [
42510                                 [
42511                                     -78.91269,
42512                                     43.037032
42513                                 ],
42514                                 [
42515                                     -78.964351,
42516                                     42.976393
42517                                 ],
42518                                 [
42519                                     -78.981718,
42520                                     42.979043
42521                                 ],
42522                                 [
42523                                     -78.998055,
42524                                     42.991111
42525                                 ],
42526                                 [
42527                                     -79.01189,
42528                                     43.004358
42529                                 ],
42530                                 [
42531                                     -79.022046,
42532                                     43.010539
42533                                 ],
42534                                 [
42535                                     -79.023076,
42536                                     43.017015
42537                                 ],
42538                                 [
42539                                     -79.00983,
42540                                     43.050867
42541                                 ],
42542                                 [
42543                                     -79.011449,
42544                                     43.065291
42545                                 ],
42546                                 [
42547                                     -78.993051,
42548                                     43.066174
42549                                 ],
42550                                 [
42551                                     -78.975536,
42552                                     43.069707
42553                                 ],
42554                                 [
42555                                     -78.958905,
42556                                     43.070884
42557                                 ],
42558                                 [
42559                                     -78.943304,
42560                                     43.065291
42561                                 ],
42562                                 [
42563                                     -78.917399,
42564                                     43.058521
42565                                 ],
42566                                 [
42567                                     -78.908569,
42568                                     43.049396
42569                                 ],
42570                                 [
42571                                     -78.91269,
42572                                     43.037032
42573                                 ]
42574                             ]
42575                         ],
42576                         [
42577                             [
42578                                 [
42579                                     -123.03529,
42580                                     48.992515
42581                                 ],
42582                                 [
42583                                     -123.035308,
42584                                     48.992499
42585                                 ],
42586                                 [
42587                                     -123.045277,
42588                                     48.984361
42589                                 ],
42590                                 [
42591                                     -123.08849,
42592                                     48.972235
42593                                 ],
42594                                 [
42595                                     -123.089345,
42596                                     48.987982
42597                                 ],
42598                                 [
42599                                     -123.090484,
42600                                     48.992499
42601                                 ],
42602                                 [
42603                                     -123.090488,
42604                                     48.992515
42605                                 ],
42606                                 [
42607                                     -123.035306,
42608                                     48.992515
42609                                 ],
42610                                 [
42611                                     -123.03529,
42612                                     48.992515
42613                                 ]
42614                             ]
42615                         ],
42616                         [
42617                             [
42618                                 [
42619                                     -103.837038,
42620                                     29.279906
42621                                 ],
42622                                 [
42623                                     -103.864121,
42624                                     29.281366
42625                                 ],
42626                                 [
42627                                     -103.928122,
42628                                     29.293019
42629                                 ],
42630                                 [
42631                                     -104.01915,
42632                                     29.32033
42633                                 ],
42634                                 [
42635                                     -104.057313,
42636                                     29.339037
42637                                 ],
42638                                 [
42639                                     -104.105424,
42640                                     29.385675
42641                                 ],
42642                                 [
42643                                     -104.139789,
42644                                     29.400584
42645                                 ],
42646                                 [
42647                                     -104.161648,
42648                                     29.416759
42649                                 ],
42650                                 [
42651                                     -104.194514,
42652                                     29.448927
42653                                 ],
42654                                 [
42655                                     -104.212291,
42656                                     29.484661
42657                                 ],
42658                                 [
42659                                     -104.218698,
42660                                     29.489829
42661                                 ],
42662                                 [
42663                                     -104.227148,
42664                                     29.493033
42665                                 ],
42666                                 [
42667                                     -104.251022,
42668                                     29.508588
42669                                 ],
42670                                 [
42671                                     -104.267171,
42672                                     29.526571
42673                                 ],
42674                                 [
42675                                     -104.292751,
42676                                     29.532824
42677                                 ],
42678                                 [
42679                                     -104.320604,
42680                                     29.532255
42681                                 ],
42682                                 [
42683                                     -104.338484,
42684                                     29.524013
42685                                 ],
42686                                 [
42687                                     -104.349026,
42688                                     29.537578
42689                                 ],
42690                                 [
42691                                     -104.430443,
42692                                     29.582795
42693                                 ],
42694                                 [
42695                                     -104.437832,
42696                                     29.58543
42697                                 ],
42698                                 [
42699                                     -104.444008,
42700                                     29.589203
42701                                 ],
42702                                 [
42703                                     -104.448555,
42704                                     29.597678
42705                                 ],
42706                                 [
42707                                     -104.452069,
42708                                     29.607109
42709                                 ],
42710                                 [
42711                                     -104.455222,
42712                                     29.613387
42713                                 ],
42714                                 [
42715                                     -104.469381,
42716                                     29.625402
42717                                 ],
42718                                 [
42719                                     -104.516639,
42720                                     29.654315
42721                                 ],
42722                                 [
42723                                     -104.530824,
42724                                     29.667906
42725                                 ],
42726                                 [
42727                                     -104.535036,
42728                                     29.677802
42729                                 ],
42730                                 [
42731                                     -104.535191,
42732                                     29.687853
42733                                 ],
42734                                 [
42735                                     -104.537103,
42736                                     29.702116
42737                                 ],
42738                                 [
42739                                     -104.543666,
42740                                     29.71643
42741                                 ],
42742                                 [
42743                                     -104.561391,
42744                                     29.745421
42745                                 ],
42746                                 [
42747                                     -104.570279,
42748                                     29.787511
42749                                 ],
42750                                 [
42751                                     -104.583586,
42752                                     29.802575
42753                                 ],
42754                                 [
42755                                     -104.601207,
42756                                     29.81477
42757                                 ],
42758                                 [
42759                                     -104.619682,
42760                                     29.833064
42761                                 ],
42762                                 [
42763                                     -104.623764,
42764                                     29.841487
42765                                 ],
42766                                 [
42767                                     -104.637588,
42768                                     29.887996
42769                                 ],
42770                                 [
42771                                     -104.656346,
42772                                     29.908201
42773                                 ],
42774                                 [
42775                                     -104.660635,
42776                                     29.918433
42777                                 ],
42778                                 [
42779                                     -104.663478,
42780                                     29.923084
42781                                 ],
42782                                 [
42783                                     -104.676526,
42784                                     29.93683
42785                                 ],
42786                                 [
42787                                     -104.680479,
42788                                     29.942308
42789                                 ],
42790                                 [
42791                                     -104.682469,
42792                                     29.952126
42793                                 ],
42794                                 [
42795                                     -104.680117,
42796                                     29.967784
42797                                 ],
42798                                 [
42799                                     -104.680479,
42800                                     29.976466
42801                                 ],
42802                                 [
42803                                     -104.699108,
42804                                     30.03145
42805                                 ],
42806                                 [
42807                                     -104.701589,
42808                                     30.055324
42809                                 ],
42810                                 [
42811                                     -104.698592,
42812                                     30.075271
42813                                 ],
42814                                 [
42815                                     -104.684639,
42816                                     30.111135
42817                                 ],
42818                                 [
42819                                     -104.680479,
42820                                     30.134131
42821                                 ],
42822                                 [
42823                                     -104.67867,
42824                                     30.170356
42825                                 ],
42826                                 [
42827                                     -104.681564,
42828                                     30.192939
42829                                 ],
42830                                 [
42831                                     -104.695853,
42832                                     30.208441
42833                                 ],
42834                                 [
42835                                     -104.715231,
42836                                     30.243995
42837                                 ],
42838                                 [
42839                                     -104.724585,
42840                                     30.252211
42841                                 ],
42842                                 [
42843                                     -104.742155,
42844                                     30.25986
42845                                 ],
42846                                 [
42847                                     -104.74939,
42848                                     30.264459
42849                                 ],
42850                                 [
42851                                     -104.761689,
42852                                     30.284199
42853                                 ],
42854                                 [
42855                                     -104.774143,
42856                                     30.311588
42857                                 ],
42858                                 [
42859                                     -104.788767,
42860                                     30.335927
42861                                 ],
42862                                 [
42863                                     -104.807732,
42864                                     30.346418
42865                                 ],
42866                                 [
42867                                     -104.8129,
42868                                     30.350707
42869                                 ],
42870                                 [
42871                                     -104.814967,
42872                                     30.360577
42873                                 ],
42874                                 [
42875                                     -104.816001,
42876                                     30.371997
42877                                 ],
42878                                 [
42879                                     -104.818274,
42880                                     30.380524
42881                                 ],
42882                                 [
42883                                     -104.824269,
42884                                     30.38719
42885                                 ],
42886                                 [
42887                                     -104.83755,
42888                                     30.394063
42889                                 ],
42890                                 [
42891                                     -104.844939,
42892                                     30.40104
42893                                 ],
42894                                 [
42895                                     -104.853259,
42896                                     30.41215
42897                                 ],
42898                                 [
42899                                     -104.855016,
42900                                     30.417473
42901                                 ],
42902                                 [
42903                                     -104.853621,
42904                                     30.423984
42905                                 ],
42906                                 [
42907                                     -104.852432,
42908                                     30.438867
42909                                 ],
42910                                 [
42911                                     -104.854655,
42912                                     30.448737
42913                                 ],
42914                                 [
42915                                     -104.864473,
42916                                     30.462018
42917                                 ],
42918                                 [
42919                                     -104.866695,
42920                                     30.473025
42921                                 ],
42922                                 [
42923                                     -104.865248,
42924                                     30.479898
42925                                 ],
42926                                 [
42927                                     -104.859615,
42928                                     30.491112
42929                                 ],
42930                                 [
42931                                     -104.859254,
42932                                     30.497261
42933                                 ],
42934                                 [
42935                                     -104.863026,
42936                                     30.502377
42937                                 ],
42938                                 [
42939                                     -104.879718,
42940                                     30.510852
42941                                 ],
42942                                 [
42943                                     -104.882146,
42944                                     30.520929
42945                                 ],
42946                                 [
42947                                     -104.884007,
42948                                     30.541858
42949                                 ],
42950                                 [
42951                                     -104.886591,
42952                                     30.551883
42953                                 ],
42954                                 [
42955                                     -104.898166,
42956                                     30.569401
42957                                 ],
42958                                 [
42959                                     -104.928242,
42960                                     30.599529
42961                                 ],
42962                                 [
42963                                     -104.93434,
42964                                     30.610536
42965                                 ],
42966                                 [
42967                                     -104.941057,
42968                                     30.61405
42969                                 ],
42970                                 [
42971                                     -104.972735,
42972                                     30.618029
42973                                 ],
42974                                 [
42975                                     -104.98276,
42976                                     30.620716
42977                                 ],
42978                                 [
42979                                     -104.989117,
42980                                     30.629553
42981                                 ],
42982                                 [
42983                                     -104.991649,
42984                                     30.640301
42985                                 ],
42986                                 [
42987                                     -104.992941,
42988                                     30.651464
42989                                 ],
42990                                 [
42991                                     -104.995783,
42992                                     30.661747
42993                                 ],
42994                                 [
42995                                     -105.008495,
42996                                     30.676992
42997                                 ],
42998                                 [
42999                                     -105.027977,
43000                                     30.690117
43001                                 ],
43002                                 [
43003                                     -105.049475,
43004                                     30.699264
43005                                 ],
43006                                 [
43007                                     -105.06813,
43008                                     30.702675
43009                                 ],
43010                                 [
43011                                     -105.087043,
43012                                     30.709806
43013                                 ],
43014                                 [
43015                                     -105.133604,
43016                                     30.757917
43017                                 ],
43018                                 [
43019                                     -105.140425,
43020                                     30.750476
43021                                 ],
43022                                 [
43023                                     -105.153241,
43024                                     30.763188
43025                                 ],
43026                                 [
43027                                     -105.157788,
43028                                     30.76572
43029                                 ],
43030                                 [
43031                                     -105.160889,
43032                                     30.764118
43033                                 ],
43034                                 [
43035                                     -105.162698,
43036                                     30.774919
43037                                 ],
43038                                 [
43039                                     -105.167297,
43040                                     30.781171
43041                                 ],
43042                                 [
43043                                     -105.17479,
43044                                     30.783962
43045                                 ],
43046                                 [
43047                                     -105.185125,
43048                                     30.784634
43049                                 ],
43050                                 [
43051                                     -105.195306,
43052                                     30.787941
43053                                 ],
43054                                 [
43055                                     -105.204917,
43056                                     30.80241
43057                                 ],
43058                                 [
43059                                     -105.2121,
43060                                     30.805718
43061                                 ],
43062                                 [
43063                                     -105.21825,
43064                                     30.806803
43065                                 ],
43066                                 [
43067                                     -105.229257,
43068                                     30.810214
43069                                 ],
43070                                 [
43071                                     -105.232874,
43072                                     30.809128
43073                                 ],
43074                                 [
43075                                     -105.239851,
43076                                     30.801532
43077                                 ],
43078                                 [
43079                                     -105.243985,
43080                                     30.799103
43081                                 ],
43082                                 [
43083                                     -105.249049,
43084                                     30.798845
43085                                 ],
43086                                 [
43087                                     -105.259488,
43088                                     30.802979
43089                                 ],
43090                                 [
43091                                     -105.265844,
43092                                     30.808405
43093                                 ],
43094                                 [
43095                                     -105.270753,
43096                                     30.814348
43097                                 ],
43098                                 [
43099                                     -105.277006,
43100                                     30.819412
43101                                 ],
43102                                 [
43103                                     -105.334315,
43104                                     30.843803
43105                                 ],
43106                                 [
43107                                     -105.363771,
43108                                     30.850366
43109                                 ],
43110                                 [
43111                                     -105.376173,
43112                                     30.859565
43113                                 ],
43114                                 [
43115                                     -105.41555,
43116                                     30.902456
43117                                 ],
43118                                 [
43119                                     -105.496682,
43120                                     30.95651
43121                                 ],
43122                                 [
43123                                     -105.530789,
43124                                     30.991701
43125                                 ],
43126                                 [
43127                                     -105.555955,
43128                                     31.002605
43129                                 ],
43130                                 [
43131                                     -105.565722,
43132                                     31.016661
43133                                 ],
43134                                 [
43135                                     -105.578641,
43136                                     31.052163
43137                                 ],
43138                                 [
43139                                     -105.59094,
43140                                     31.071438
43141                                 ],
43142                                 [
43143                                     -105.605875,
43144                                     31.081928
43145                                 ],
43146                                 [
43147                                     -105.623496,
43148                                     31.090351
43149                                 ],
43150                                 [
43151                                     -105.643805,
43152                                     31.103684
43153                                 ],
43154                                 [
43155                                     -105.668042,
43156                                     31.127869
43157                                 ],
43158                                 [
43159                                     -105.675225,
43160                                     31.131951
43161                                 ],
43162                                 [
43163                                     -105.692278,
43164                                     31.137635
43165                                 ],
43166                                 [
43167                                     -105.76819,
43168                                     31.18001
43169                                 ],
43170                                 [
43171                                     -105.777854,
43172                                     31.192722
43173                                 ],
43174                                 [
43175                                     -105.78483,
43176                                     31.211016
43177                                 ],
43178                                 [
43179                                     -105.861983,
43180                                     31.288376
43181                                 ],
43182                                 [
43183                                     -105.880147,
43184                                     31.300881
43185                                 ],
43186                                 [
43187                                     -105.896994,
43188                                     31.305997
43189                                 ],
43190                                 [
43191                                     -105.897149,
43192                                     31.309511
43193                                 ],
43194                                 [
43195                                     -105.908802,
43196                                     31.317004
43197                                 ],
43198                                 [
43199                                     -105.928052,
43200                                     31.326461
43201                                 ],
43202                                 [
43203                                     -105.934563,
43204                                     31.335504
43205                                 ],
43206                                 [
43207                                     -105.941772,
43208                                     31.352351
43209                                 ],
43210                                 [
43211                                     -105.948515,
43212                                     31.361239
43213                                 ],
43214                                 [
43215                                     -105.961202,
43216                                     31.371006
43217                                 ],
43218                                 [
43219                                     -106.004739,
43220                                     31.396948
43221                                 ],
43222                                 [
43223                                     -106.021147,
43224                                     31.402167
43225                                 ],
43226                                 [
43227                                     -106.046261,
43228                                     31.404648
43229                                 ],
43230                                 [
43231                                     -106.065304,
43232                                     31.410952
43233                                 ],
43234                                 [
43235                                     -106.099385,
43236                                     31.428884
43237                                 ],
43238                                 [
43239                                     -106.141113,
43240                                     31.439167
43241                                 ],
43242                                 [
43243                                     -106.164316,
43244                                     31.447797
43245                                 ],
43246                                 [
43247                                     -106.174471,
43248                                     31.460251
43249                                 ],
43250                                 [
43251                                     -106.209249,
43252                                     31.477305
43253                                 ],
43254                                 [
43255                                     -106.215424,
43256                                     31.483919
43257                                 ],
43258                                 [
43259                                     -106.21744,
43260                                     31.488725
43261                                 ],
43262                                 [
43263                                     -106.218731,
43264                                     31.494616
43265                                 ],
43266                                 [
43267                                     -106.222891,
43268                                     31.50459
43269                                 ],
43270                                 [
43271                                     -106.232658,
43272                                     31.519938
43273                                 ],
43274                                 [
43275                                     -106.274749,
43276                                     31.562622
43277                                 ],
43278                                 [
43279                                     -106.286298,
43280                                     31.580141
43281                                 ],
43282                                 [
43283                                     -106.312292,
43284                                     31.648612
43285                                 ],
43286                                 [
43287                                     -106.331309,
43288                                     31.68215
43289                                 ],
43290                                 [
43291                                     -106.35849,
43292                                     31.717548
43293                                 ],
43294                                 [
43295                                     -106.39177,
43296                                     31.745919
43297                                 ],
43298                                 [
43299                                     -106.428951,
43300                                     31.758476
43301                                 ],
43302                                 [
43303                                     -106.473135,
43304                                     31.755065
43305                                 ],
43306                                 [
43307                                     -106.492797,
43308                                     31.759044
43309                                 ],
43310                                 [
43311                                     -106.501425,
43312                                     31.766344
43313                                 ],
43314                                 [
43315                                     -106.506052,
43316                                     31.770258
43317                                 ],
43318                                 [
43319                                     -106.517189,
43320                                     31.773824
43321                                 ],
43322                                 [
43323                                     -106.558969,
43324                                     31.773876
43325                                 ],
43326                                 [
43327                                     -106.584859,
43328                                     31.773927
43329                                 ],
43330                                 [
43331                                     -106.610697,
43332                                     31.773979
43333                                 ],
43334                                 [
43335                                     -106.636587,
43336                                     31.774082
43337                                 ],
43338                                 [
43339                                     -106.662477,
43340                                     31.774134
43341                                 ],
43342                                 [
43343                                     -106.688315,
43344                                     31.774237
43345                                 ],
43346                                 [
43347                                     -106.714205,
43348                                     31.774237
43349                                 ],
43350                                 [
43351                                     -106.740095,
43352                                     31.774289
43353                                 ],
43354                                 [
43355                                     -106.765933,
43356                                     31.774392
43357                                 ],
43358                                 [
43359                                     -106.791823,
43360                                     31.774444
43361                                 ],
43362                                 [
43363                                     -106.817713,
43364                                     31.774496
43365                                 ],
43366                                 [
43367                                     -106.843603,
43368                                     31.774547
43369                                 ],
43370                                 [
43371                                     -106.869441,
43372                                     31.774599
43373                                 ],
43374                                 [
43375                                     -106.895331,
43376                                     31.774702
43377                                 ],
43378                                 [
43379                                     -106.921221,
43380                                     31.774702
43381                                 ],
43382                                 [
43383                                     -106.947111,
43384                                     31.774754
43385                                 ],
43386                                 [
43387                                     -106.973001,
43388                                     31.774857
43389                                 ],
43390                                 [
43391                                     -106.998891,
43392                                     31.774909
43393                                 ],
43394                                 [
43395                                     -107.02478,
43396                                     31.774961
43397                                 ],
43398                                 [
43399                                     -107.05067,
43400                                     31.775013
43401                                 ],
43402                                 [
43403                                     -107.076509,
43404                                     31.775064
43405                                 ],
43406                                 [
43407                                     -107.102398,
43408                                     31.775168
43409                                 ],
43410                                 [
43411                                     -107.128288,
43412                                     31.775168
43413                                 ],
43414                                 [
43415                                     -107.154127,
43416                                     31.775219
43417                                 ],
43418                                 [
43419                                     -107.180016,
43420                                     31.775374
43421                                 ],
43422                                 [
43423                                     -107.205906,
43424                                     31.775374
43425                                 ],
43426                                 [
43427                                     -107.231796,
43428                                     31.775426
43429                                 ],
43430                                 [
43431                                     -107.257634,
43432                                     31.775478
43433                                 ],
43434                                 [
43435                                     -107.283524,
43436                                     31.775529
43437                                 ],
43438                                 [
43439                                     -107.309414,
43440                                     31.775633
43441                                 ],
43442                                 [
43443                                     -107.335252,
43444                                     31.775684
43445                                 ],
43446                                 [
43447                                     -107.361142,
43448                                     31.775788
43449                                 ],
43450                                 [
43451                                     -107.387032,
43452                                     31.775788
43453                                 ],
43454                                 [
43455                                     -107.412896,
43456                                     31.775839
43457                                 ],
43458                                 [
43459                                     -107.438786,
43460                                     31.775943
43461                                 ],
43462                                 [
43463                                     -107.464676,
43464                                     31.775994
43465                                 ],
43466                                 [
43467                                     -107.490566,
43468                                     31.776098
43469                                 ],
43470                                 [
43471                                     -107.516404,
43472                                     31.776149
43473                                 ],
43474                                 [
43475                                     -107.542294,
43476                                     31.776201
43477                                 ],
43478                                 [
43479                                     -107.568184,
43480                                     31.776253
43481                                 ],
43482                                 [
43483                                     -107.594074,
43484                                     31.776304
43485                                 ],
43486                                 [
43487                                     -107.619964,
43488                                     31.776408
43489                                 ],
43490                                 [
43491                                     -107.645854,
43492                                     31.776459
43493                                 ],
43494                                 [
43495                                     -107.671744,
43496                                     31.776459
43497                                 ],
43498                                 [
43499                                     -107.697633,
43500                                     31.776563
43501                                 ],
43502                                 [
43503                                     -107.723472,
43504                                     31.776614
43505                                 ],
43506                                 [
43507                                     -107.749362,
43508                                     31.776666
43509                                 ],
43510                                 [
43511                                     -107.775251,
43512                                     31.776718
43513                                 ],
43514                                 [
43515                                     -107.801141,
43516                                     31.77677
43517                                 ],
43518                                 [
43519                                     -107.82698,
43520                                     31.776873
43521                                 ],
43522                                 [
43523                                     -107.852869,
43524                                     31.776925
43525                                 ],
43526                                 [
43527                                     -107.878759,
43528                                     31.776925
43529                                 ],
43530                                 [
43531                                     -107.904598,
43532                                     31.777028
43533                                 ],
43534                                 [
43535                                     -107.930487,
43536                                     31.77708
43537                                 ],
43538                                 [
43539                                     -107.956377,
43540                                     31.777131
43541                                 ],
43542                                 [
43543                                     -107.982216,
43544                                     31.777183
43545                                 ],
43546                                 [
43547                                     -108.008105,
43548                                     31.777235
43549                                 ],
43550                                 [
43551                                     -108.033995,
43552                                     31.777338
43553                                 ],
43554                                 [
43555                                     -108.059885,
43556                                     31.77739
43557                                 ],
43558                                 [
43559                                     -108.085723,
43560                                     31.77739
43561                                 ],
43562                                 [
43563                                     -108.111613,
43564                                     31.777545
43565                                 ],
43566                                 [
43567                                     -108.137503,
43568                                     31.777545
43569                                 ],
43570                                 [
43571                                     -108.163341,
43572                                     31.777648
43573                                 ],
43574                                 [
43575                                     -108.189283,
43576                                     31.7777
43577                                 ],
43578                                 [
43579                                     -108.215121,
43580                                     31.777751
43581                                 ],
43582                                 [
43583                                     -108.215121,
43584                                     31.770723
43585                                 ],
43586                                 [
43587                                     -108.215121,
43588                                     31.763695
43589                                 ],
43590                                 [
43591                                     -108.215121,
43592                                     31.756667
43593                                 ],
43594                                 [
43595                                     -108.215121,
43596                                     31.749639
43597                                 ],
43598                                 [
43599                                     -108.215121,
43600                                     31.74256
43601                                 ],
43602                                 [
43603                                     -108.215121,
43604                                     31.735583
43605                                 ],
43606                                 [
43607                                     -108.215121,
43608                                     31.728555
43609                                 ],
43610                                 [
43611                                     -108.215121,
43612                                     31.721476
43613                                 ],
43614                                 [
43615                                     -108.215121,
43616                                     31.714396
43617                                 ],
43618                                 [
43619                                     -108.215121,
43620                                     31.70742
43621                                 ],
43622                                 [
43623                                     -108.215121,
43624                                     31.700392
43625                                 ],
43626                                 [
43627                                     -108.215121,
43628                                     31.693312
43629                                 ],
43630                                 [
43631                                     -108.215121,
43632                                     31.686284
43633                                 ],
43634                                 [
43635                                     -108.215121,
43636                                     31.679256
43637                                 ],
43638                                 [
43639                                     -108.215121,
43640                                     31.672176
43641                                 ],
43642                                 [
43643                                     -108.21507,
43644                                     31.665148
43645                                 ],
43646                                 [
43647                                     -108.215018,
43648                                     31.658172
43649                                 ],
43650                                 [
43651                                     -108.215018,
43652                                     31.651092
43653                                 ],
43654                                 [
43655                                     -108.215018,
43656                                     31.644064
43657                                 ],
43658                                 [
43659                                     -108.215018,
43660                                     31.637036
43661                                 ],
43662                                 [
43663                                     -108.215018,
43664                                     31.630008
43665                                 ],
43666                                 [
43667                                     -108.215018,
43668                                     31.62298
43669                                 ],
43670                                 [
43671                                     -108.215018,
43672                                     31.615952
43673                                 ],
43674                                 [
43675                                     -108.215018,
43676                                     31.608873
43677                                 ],
43678                                 [
43679                                     -108.215018,
43680                                     31.601845
43681                                 ],
43682                                 [
43683                                     -108.215018,
43684                                     31.594817
43685                                 ],
43686                                 [
43687                                     -108.215018,
43688                                     31.587789
43689                                 ],
43690                                 [
43691                                     -108.215018,
43692                                     31.580761
43693                                 ],
43694                                 [
43695                                     -108.215018,
43696                                     31.573733
43697                                 ],
43698                                 [
43699                                     -108.215018,
43700                                     31.566653
43701                                 ],
43702                                 [
43703                                     -108.215018,
43704                                     31.559625
43705                                 ],
43706                                 [
43707                                     -108.214966,
43708                                     31.552597
43709                                 ],
43710                                 [
43711                                     -108.214966,
43712                                     31.545569
43713                                 ],
43714                                 [
43715                                     -108.214966,
43716                                     31.538489
43717                                 ],
43718                                 [
43719                                     -108.214966,
43720                                     31.531461
43721                                 ],
43722                                 [
43723                                     -108.214966,
43724                                     31.524485
43725                                 ],
43726                                 [
43727                                     -108.214966,
43728                                     31.517405
43729                                 ],
43730                                 [
43731                                     -108.214966,
43732                                     31.510378
43733                                 ],
43734                                 [
43735                                     -108.214966,
43736                                     31.503401
43737                                 ],
43738                                 [
43739                                     -108.214966,
43740                                     31.496322
43741                                 ],
43742                                 [
43743                                     -108.214966,
43744                                     31.489242
43745                                 ],
43746                                 [
43747                                     -108.214966,
43748                                     31.482214
43749                                 ],
43750                                 [
43751                                     -108.214966,
43752                                     31.475238
43753                                 ],
43754                                 [
43755                                     -108.214966,
43756                                     31.468158
43757                                 ],
43758                                 [
43759                                     -108.214966,
43760                                     31.46113
43761                                 ],
43762                                 [
43763                                     -108.214966,
43764                                     31.454102
43765                                 ],
43766                                 [
43767                                     -108.214966,
43768                                     31.447074
43769                                 ],
43770                                 [
43771                                     -108.214915,
43772                                     31.440046
43773                                 ],
43774                                 [
43775                                     -108.214863,
43776                                     31.432966
43777                                 ],
43778                                 [
43779                                     -108.214863,
43780                                     31.425938
43781                                 ],
43782                                 [
43783                                     -108.214863,
43784                                     31.41891
43785                                 ],
43786                                 [
43787                                     -108.214863,
43788                                     31.411882
43789                                 ],
43790                                 [
43791                                     -108.214863,
43792                                     31.404803
43793                                 ],
43794                                 [
43795                                     -108.214863,
43796                                     31.397826
43797                                 ],
43798                                 [
43799                                     -108.214863,
43800                                     31.390798
43801                                 ],
43802                                 [
43803                                     -108.214863,
43804                                     31.383719
43805                                 ],
43806                                 [
43807                                     -108.214863,
43808                                     31.376639
43809                                 ],
43810                                 [
43811                                     -108.214863,
43812                                     31.369663
43813                                 ],
43814                                 [
43815                                     -108.214863,
43816                                     31.362635
43817                                 ],
43818                                 [
43819                                     -108.214863,
43820                                     31.355555
43821                                 ],
43822                                 [
43823                                     -108.214863,
43824                                     31.348527
43825                                 ],
43826                                 [
43827                                     -108.214863,
43828                                     31.341551
43829                                 ],
43830                                 [
43831                                     -108.214863,
43832                                     31.334471
43833                                 ],
43834                                 [
43835                                     -108.214811,
43836                                     31.327443
43837                                 ],
43838                                 [
43839                                     -108.257573,
43840                                     31.327391
43841                                 ],
43842                                 [
43843                                     -108.300336,
43844                                     31.327391
43845                                 ],
43846                                 [
43847                                     -108.34302,
43848                                     31.327391
43849                                 ],
43850                                 [
43851                                     -108.385731,
43852                                     31.327391
43853                                 ],
43854                                 [
43855                                     -108.428442,
43856                                     31.327391
43857                                 ],
43858                                 [
43859                                     -108.471152,
43860                                     31.327391
43861                                 ],
43862                                 [
43863                                     -108.513837,
43864                                     31.327391
43865                                 ],
43866                                 [
43867                                     -108.556547,
43868                                     31.327391
43869                                 ],
43870                                 [
43871                                     -108.59931,
43872                                     31.327391
43873                                 ],
43874                                 [
43875                                     -108.64202,
43876                                     31.327391
43877                                 ],
43878                                 [
43879                                     -108.684757,
43880                                     31.327391
43881                                 ],
43882                                 [
43883                                     -108.727467,
43884                                     31.327391
43885                                 ],
43886                                 [
43887                                     -108.770178,
43888                                     31.327391
43889                                 ],
43890                                 [
43891                                     -108.812914,
43892                                     31.327391
43893                                 ],
43894                                 [
43895                                     -108.855625,
43896                                     31.327391
43897                                 ],
43898                                 [
43899                                     -108.898335,
43900                                     31.327391
43901                                 ],
43902                                 [
43903                                     -108.941046,
43904                                     31.327391
43905                                 ],
43906                                 [
43907                                     -108.968282,
43908                                     31.327391
43909                                 ],
43910                                 [
43911                                     -108.983731,
43912                                     31.327391
43913                                 ],
43914                                 [
43915                                     -109.026493,
43916                                     31.327391
43917                                 ],
43918                                 [
43919                                     -109.04743,
43920                                     31.327391
43921                                 ],
43922                                 [
43923                                     -109.069203,
43924                                     31.327391
43925                                 ],
43926                                 [
43927                                     -109.111914,
43928                                     31.327391
43929                                 ],
43930                                 [
43931                                     -109.154599,
43932                                     31.327391
43933                                 ],
43934                                 [
43935                                     -109.197361,
43936                                     31.327391
43937                                 ],
43938                                 [
43939                                     -109.240072,
43940                                     31.32734
43941                                 ],
43942                                 [
43943                                     -109.282782,
43944                                     31.32734
43945                                 ],
43946                                 [
43947                                     -109.325519,
43948                                     31.32734
43949                                 ],
43950                                 [
43951                                     -109.368229,
43952                                     31.32734
43953                                 ],
43954                                 [
43955                                     -109.410914,
43956                                     31.32734
43957                                 ],
43958                                 [
43959                                     -109.45365,
43960                                     31.32734
43961                                 ],
43962                                 [
43963                                     -109.496387,
43964                                     31.32734
43965                                 ],
43966                                 [
43967                                     -109.539071,
43968                                     31.32734
43969                                 ],
43970                                 [
43971                                     -109.581808,
43972                                     31.32734
43973                                 ],
43974                                 [
43975                                     -109.624493,
43976                                     31.32734
43977                                 ],
43978                                 [
43979                                     -109.667177,
43980                                     31.32734
43981                                 ],
43982                                 [
43983                                     -109.709965,
43984                                     31.32734
43985                                 ],
43986                                 [
43987                                     -109.75265,
43988                                     31.32734
43989                                 ],
43990                                 [
43991                                     -109.795335,
43992                                     31.32734
43993                                 ],
43994                                 [
43995                                     -109.838123,
43996                                     31.32734
43997                                 ],
43998                                 [
43999                                     -109.880808,
44000                                     31.32734
44001                                 ],
44002                                 [
44003                                     -109.923596,
44004                                     31.327288
44005                                 ],
44006                                 [
44007                                     -109.96628,
44008                                     31.327236
44009                                 ],
44010                                 [
44011                                     -110.008965,
44012                                     31.327236
44013                                 ],
44014                                 [
44015                                     -110.051702,
44016                                     31.327236
44017                                 ],
44018                                 [
44019                                     -110.094386,
44020                                     31.327236
44021                                 ],
44022                                 [
44023                                     -110.137071,
44024                                     31.327236
44025                                 ],
44026                                 [
44027                                     -110.179807,
44028                                     31.327236
44029                                 ],
44030                                 [
44031                                     -110.222544,
44032                                     31.327236
44033                                 ],
44034                                 [
44035                                     -110.265229,
44036                                     31.327236
44037                                 ],
44038                                 [
44039                                     -110.308017,
44040                                     31.327236
44041                                 ],
44042                                 [
44043                                     -110.350753,
44044                                     31.327236
44045                                 ],
44046                                 [
44047                                     -110.39349,
44048                                     31.327236
44049                                 ],
44050                                 [
44051                                     -110.436174,
44052                                     31.327236
44053                                 ],
44054                                 [
44055                                     -110.478859,
44056                                     31.327236
44057                                 ],
44058                                 [
44059                                     -110.521595,
44060                                     31.327236
44061                                 ],
44062                                 [
44063                                     -110.56428,
44064                                     31.327236
44065                                 ],
44066                                 [
44067                                     -110.606965,
44068                                     31.327236
44069                                 ],
44070                                 [
44071                                     -110.649727,
44072                                     31.327236
44073                                 ],
44074                                 [
44075                                     -110.692438,
44076                                     31.327236
44077                                 ],
44078                                 [
44079                                     -110.7352,
44080                                     31.327236
44081                                 ],
44082                                 [
44083                                     -110.777885,
44084                                     31.327236
44085                                 ],
44086                                 [
44087                                     -110.820595,
44088                                     31.327236
44089                                 ],
44090                                 [
44091                                     -110.863358,
44092                                     31.327236
44093                                 ],
44094                                 [
44095                                     -110.906068,
44096                                     31.327236
44097                                 ],
44098                                 [
44099                                     -110.948753,
44100                                     31.327185
44101                                 ],
44102                                 [
44103                                     -111.006269,
44104                                     31.327185
44105                                 ],
44106                                 [
44107                                     -111.067118,
44108                                     31.333644
44109                                 ],
44110                                 [
44111                                     -111.094455,
44112                                     31.342532
44113                                 ],
44114                                 [
44115                                     -111.145924,
44116                                     31.359069
44117                                 ],
44118                                 [
44119                                     -111.197446,
44120                                     31.375554
44121                                 ],
44122                                 [
44123                                     -111.248864,
44124                                     31.392142
44125                                 ],
44126                                 [
44127                                     -111.300333,
44128                                     31.40873
44129                                 ],
44130                                 [
44131                                     -111.351803,
44132                                     31.425318
44133                                 ],
44134                                 [
44135                                     -111.403299,
44136                                     31.441855
44137                                 ],
44138                                 [
44139                                     -111.454768,
44140                                     31.458339
44141                                 ],
44142                                 [
44143                                     -111.506238,
44144                                     31.474979
44145                                 ],
44146                                 [
44147                                     -111.915464,
44148                                     31.601431
44149                                 ],
44150                                 [
44151                                     -112.324715,
44152                                     31.727987
44153                                 ],
44154                                 [
44155                                     -112.733967,
44156                                     31.854543
44157                                 ],
44158                                 [
44159                                     -113.143218,
44160                                     31.981046
44161                                 ],
44162                                 [
44163                                     -113.552444,
44164                                     32.107602
44165                                 ],
44166                                 [
44167                                     -113.961696,
44168                                     32.234132
44169                                 ],
44170                                 [
44171                                     -114.370921,
44172                                     32.360687
44173                                 ],
44174                                 [
44175                                     -114.780147,
44176                                     32.487243
44177                                 ],
44178                                 [
44179                                     -114.816785,
44180                                     32.498534
44181                                 ],
44182                                 [
44183                                     -114.819373,
44184                                     32.499363
44185                                 ],
44186                                 [
44187                                     -114.822108,
44188                                     32.50024
44189                                 ],
44190                                 [
44191                                     -114.809447,
44192                                     32.511324
44193                                 ],
44194                                 [
44195                                     -114.795546,
44196                                     32.552226
44197                                 ],
44198                                 [
44199                                     -114.794203,
44200                                     32.574111
44201                                 ],
44202                                 [
44203                                     -114.802678,
44204                                     32.594497
44205                                 ],
44206                                 [
44207                                     -114.786813,
44208                                     32.621033
44209                                 ],
44210                                 [
44211                                     -114.781542,
44212                                     32.628061
44213                                 ],
44214                                 [
44215                                     -114.758804,
44216                                     32.64483
44217                                 ],
44218                                 [
44219                                     -114.751156,
44220                                     32.65222
44221                                 ],
44222                                 [
44223                                     -114.739477,
44224                                     32.669066
44225                                 ],
44226                                 [
44227                                     -114.731209,
44228                                     32.686636
44229                                 ],
44230                                 [
44231                                     -114.723871,
44232                                     32.711519
44233                                 ],
44234                                 [
44235                                     -114.724284,
44236                                     32.712835
44237                                 ],
44238                                 [
44239                                     -114.724285,
44240                                     32.712836
44241                                 ],
44242                                 [
44243                                     -114.764541,
44244                                     32.709839
44245                                 ],
44246                                 [
44247                                     -114.838076,
44248                                     32.704206
44249                                 ],
44250                                 [
44251                                     -114.911612,
44252                                     32.698703
44253                                 ],
44254                                 [
44255                                     -114.985199,
44256                                     32.693122
44257                                 ],
44258                                 [
44259                                     -115.058734,
44260                                     32.687567
44261                                 ],
44262                                 [
44263                                     -115.13227,
44264                                     32.681986
44265                                 ],
44266                                 [
44267                                     -115.205806,
44268                                     32.676456
44269                                 ],
44270                                 [
44271                                     -115.27929,
44272                                     32.670823
44273                                 ],
44274                                 [
44275                                     -115.352851,
44276                                     32.665346
44277                                 ],
44278                                 [
44279                                     -115.426386,
44280                                     32.659765
44281                                 ],
44282                                 [
44283                                     -115.499922,
44284                                     32.654209
44285                                 ],
44286                                 [
44287                                     -115.573535,
44288                                     32.648654
44289                                 ],
44290                                 [
44291                                     -115.647019,
44292                                     32.643073
44293                                 ],
44294                                 [
44295                                     -115.720529,
44296                                     32.637518
44297                                 ],
44298                                 [
44299                                     -115.794064,
44300                                     32.631963
44301                                 ],
44302                                 [
44303                                     -115.8676,
44304                                     32.626408
44305                                 ],
44306                                 [
44307                                     -115.941213,
44308                                     32.620827
44309                                 ],
44310                                 [
44311                                     -116.014748,
44312                                     32.615271
44313                                 ],
44314                                 [
44315                                     -116.088232,
44316                                     32.609664
44317                                 ],
44318                                 [
44319                                     -116.161742,
44320                                     32.604161
44321                                 ],
44322                                 [
44323                                     -116.235329,
44324                                     32.598554
44325                                 ],
44326                                 [
44327                                     -116.308891,
44328                                     32.593025
44329                                 ],
44330                                 [
44331                                     -116.382426,
44332                                     32.587469
44333                                 ],
44334                                 [
44335                                     -116.455962,
44336                                     32.581888
44337                                 ],
44338                                 [
44339                                     -116.529472,
44340                                     32.576333
44341                                 ],
44342                                 [
44343                                     -116.603007,
44344                                     32.570804
44345                                 ],
44346                                 [
44347                                     -116.676543,
44348                                     32.565223
44349                                 ],
44350                                 [
44351                                     -116.750104,
44352                                     32.559667
44353                                 ],
44354                                 [
44355                                     -116.82364,
44356                                     32.554086
44357                                 ],
44358                                 [
44359                                     -116.897201,
44360                                     32.548531
44361                                 ],
44362                                 [
44363                                     -116.970737,
44364                                     32.542976
44365                                 ],
44366                                 [
44367                                     -117.044221,
44368                                     32.537421
44369                                 ],
44370                                 [
44371                                     -117.125121,
44372                                     32.531669
44373                                 ],
44374                                 [
44375                                     -117.125969,
44376                                     32.538258
44377                                 ],
44378                                 [
44379                                     -117.239623,
44380                                     32.531308
44381                                 ],
44382                                 [
44383                                     -120.274098,
44384                                     32.884264
44385                                 ],
44386                                 [
44387                                     -121.652736,
44388                                     34.467248
44389                                 ],
44390                                 [
44391                                     -124.367265,
44392                                     37.662798
44393                                 ],
44394                                 [
44395                                     -126.739806,
44396                                     41.37928
44397                                 ],
44398                                 [
44399                                     -126.996297,
44400                                     45.773888
44401                                 ],
44402                                 [
44403                                     -124.770704,
44404                                     48.44258
44405                                 ],
44406                                 [
44407                                     -123.734053,
44408                                     48.241906
44409                                 ],
44410                                 [
44411                                     -123.1663,
44412                                     48.27837
44413                                 ],
44414                                 [
44415                                     -123.193018,
44416                                     48.501035
44417                                 ],
44418                                 [
44419                                     -123.176987,
44420                                     48.65482
44421                                 ],
44422                                 [
44423                                     -122.912481,
44424                                     48.753561
44425                                 ],
44426                                 [
44427                                     -122.899122,
44428                                     48.897797
44429                                 ],
44430                                 [
44431                                     -122.837671,
44432                                     48.97502
44433                                 ],
44434                                 [
44435                                     -122.743986,
44436                                     48.980582
44437                                 ],
44438                                 [
44439                                     -122.753,
44440                                     48.992499
44441                                 ],
44442                                 [
44443                                     -122.753012,
44444                                     48.992515
44445                                 ],
44446                                 [
44447                                     -122.653258,
44448                                     48.992515
44449                                 ],
44450                                 [
44451                                     -122.433375,
44452                                     48.992515
44453                                 ],
44454                                 [
44455                                     -122.213517,
44456                                     48.992515
44457                                 ],
44458                                 [
44459                                     -121.993763,
44460                                     48.992515
44461                                 ],
44462                                 [
44463                                     -121.773958,
44464                                     48.992515
44465                                 ],
44466                                 [
44467                                     -121.554152,
44468                                     48.992515
44469                                 ],
44470                                 [
44471                                     -121.33432,
44472                                     48.992515
44473                                 ],
44474                                 [
44475                                     -121.114515,
44476                                     48.992515
44477                                 ],
44478                                 [
44479                                     -95.396937,
44480                                     48.99267
44481                                 ],
44482                                 [
44483                                     -95.177106,
44484                                     48.99267
44485                                 ],
44486                                 [
44487                                     -95.168527,
44488                                     48.995047
44489                                 ],
44490                                 [
44491                                     -95.161887,
44492                                     49.001145
44493                                 ],
44494                                 [
44495                                     -95.159329,
44496                                     49.01179
44497                                 ],
44498                                 [
44499                                     -95.159665,
44500                                     49.10951
44501                                 ],
44502                                 [
44503                                     -95.160027,
44504                                     49.223353
44505                                 ],
44506                                 [
44507                                     -95.160337,
44508                                     49.313012
44509                                 ],
44510                                 [
44511                                     -95.160569,
44512                                     49.369494
44513                                 ],
44514                                 [
44515                                     -95.102821,
44516                                     49.35394
44517                                 ],
44518                                 [
44519                                     -94.982518,
44520                                     49.356162
44521                                 ],
44522                                 [
44523                                     -94.926087,
44524                                     49.345568
44525                                 ],
44526                                 [
44527                                     -94.856195,
44528                                     49.318283
44529                                 ],
44530                                 [
44531                                     -94.839142,
44532                                     49.308878
44533                                 ],
44534                                 [
44535                                     -94.827256,
44536                                     49.292858
44537                                 ],
44538                                 [
44539                                     -94.819892,
44540                                     49.252034
44541                                 ],
44542                                 [
44543                                     -94.810358,
44544                                     49.229606
44545                                 ],
44546                                 [
44547                                     -94.806121,
44548                                     49.210899
44549                                 ],
44550                                 [
44551                                     -94.811185,
44552                                     49.166561
44553                                 ],
44554                                 [
44555                                     -94.803743,
44556                                     49.146407
44557                                 ],
44558                                 [
44559                                     -94.792039,
44560                                     49.12646
44561                                 ],
44562                                 [
44563                                     -94.753772,
44564                                     49.026156
44565                                 ],
44566                                 [
44567                                     -94.711217,
44568                                     48.914586
44569                                 ],
44570                                 [
44571                                     -94.711734,
44572                                     48.862755
44573                                 ],
44574                                 [
44575                                     -94.712147,
44576                                     48.842446
44577                                 ],
44578                                 [
44579                                     -94.713284,
44580                                     48.823843
44581                                 ],
44582                                 [
44583                                     -94.710907,
44584                                     48.807513
44585                                 ],
44586                                 [
44587                                     -94.701786,
44588                                     48.790098
44589                                 ],
44590                                 [
44591                                     -94.688893,
44592                                     48.778832
44593                                 ],
44594                                 [
44595                                     -94.592852,
44596                                     48.726433
44597                                 ],
44598                                 [
44599                                     -94.519161,
44600                                     48.70447
44601                                 ],
44602                                 [
44603                                     -94.4795,
44604                                     48.700698
44605                                 ],
44606                                 [
44607                                     -94.311577,
44608                                     48.713927
44609                                 ],
44610                                 [
44611                                     -94.292586,
44612                                     48.711912
44613                                 ],
44614                                 [
44615                                     -94.284034,
44616                                     48.709069
44617                                 ],
44618                                 [
44619                                     -94.274499,
44620                                     48.704108
44621                                 ],
44622                                 [
44623                                     -94.265482,
44624                                     48.697752
44625                                 ],
44626                                 [
44627                                     -94.258454,
44628                                     48.690828
44629                                 ],
44630                                 [
44631                                     -94.255767,
44632                                     48.683541
44633                                 ],
44634                                 [
44635                                     -94.252459,
44636                                     48.662405
44637                                 ],
44638                                 [
44639                                     -94.251038,
44640                                     48.65729
44641                                 ],
44642                                 [
44643                                     -94.23215,
44644                                     48.652019
44645                                 ],
44646                                 [
44647                                     -94.03485,
44648                                     48.643311
44649                                 ],
44650                                 [
44651                                     -93.874885,
44652                                     48.636206
44653                                 ],
44654                                 [
44655                                     -93.835741,
44656                                     48.617137
44657                                 ],
44658                                 [
44659                                     -93.809386,
44660                                     48.543576
44661                                 ],
44662                                 [
44663                                     -93.778664,
44664                                     48.519468
44665                                 ],
44666                                 [
44667                                     -93.756779,
44668                                     48.516549
44669                                 ],
44670                                 [
44671                                     -93.616297,
44672                                     48.531302
44673                                 ],
44674                                 [
44675                                     -93.599889,
44676                                     48.526341
44677                                 ],
44678                                 [
44679                                     -93.566584,
44680                                     48.538279
44681                                 ],
44682                                 [
44683                                     -93.491756,
44684                                     48.542309
44685                                 ],
44686                                 [
44687                                     -93.459924,
44688                                     48.557399
44689                                 ],
44690                                 [
44691                                     -93.45225,
44692                                     48.572721
44693                                 ],
44694                                 [
44695                                     -93.453774,
44696                                     48.586958
44697                                 ],
44698                                 [
44699                                     -93.451475,
44700                                     48.597422
44701                                 ],
44702                                 [
44703                                     -93.417316,
44704                                     48.604114
44705                                 ],
44706                                 [
44707                                     -93.385716,
44708                                     48.614863
44709                                 ],
44710                                 [
44711                                     -93.25774,
44712                                     48.630314
44713                                 ],
44714                                 [
44715                                     -93.131701,
44716                                     48.62463
44717                                 ],
44718                                 [
44719                                     -92.97972,
44720                                     48.61768
44721                                 ],
44722                                 [
44723                                     -92.955588,
44724                                     48.612228
44725                                 ],
44726                                 [
44727                                     -92.884197,
44728                                     48.579878
44729                                 ],
44730                                 [
44731                                     -92.72555,
44732                                     48.548692
44733                                 ],
44734                                 [
44735                                     -92.648604,
44736                                     48.536263
44737                                 ],
44738                                 [
44739                                     -92.630181,
44740                                     48.519468
44741                                 ],
44742                                 [
44743                                     -92.627468,
44744                                     48.502777
44745                                 ],
44746                                 [
44747                                     -92.646743,
44748                                     48.497428
44749                                 ],
44750                                 [
44751                                     -92.691366,
44752                                     48.489858
44753                                 ],
44754                                 [
44755                                     -92.710641,
44756                                     48.482882
44757                                 ],
44758                                 [
44759                                     -92.718909,
44760                                     48.459782
44761                                 ],
44762                                 [
44763                                     -92.704052,
44764                                     48.445158
44765                                 ],
44766                                 [
44767                                     -92.677129,
44768                                     48.441747
44769                                 ],
44770                                 [
44771                                     -92.657053,
44772                                     48.438233
44773                                 ],
44774                                 [
44775                                     -92.570521,
44776                                     48.446656
44777                                 ],
44778                                 [
44779                                     -92.526932,
44780                                     48.445623
44781                                 ],
44782                                 [
44783                                     -92.490629,
44784                                     48.433117
44785                                 ],
44786                                 [
44787                                     -92.474532,
44788                                     48.410483
44789                                 ],
44790                                 [
44791                                     -92.467581,
44792                                     48.394282
44793                                 ],
44794                                 [
44795                                     -92.467064,
44796                                     48.353225
44797                                 ],
44798                                 [
44799                                     -92.462465,
44800                                     48.329299
44801                                 ],
44802                                 [
44803                                     -92.451381,
44804                                     48.312685
44805                                 ],
44806                                 [
44807                                     -92.41823,
44808                                     48.282041
44809                                 ],
44810                                 [
44811                                     -92.38464,
44812                                     48.232406
44813                                 ],
44814                                 [
44815                                     -92.371851,
44816                                     48.222587
44817                                 ],
44818                                 [
44819                                     -92.353815,
44820                                     48.222897
44821                                 ],
44822                                 [
44823                                     -92.327874,
44824                                     48.229435
44825                                 ],
44826                                 [
44827                                     -92.303663,
44828                                     48.239279
44829                                 ],
44830                                 [
44831                                     -92.291029,
44832                                     48.249562
44833                                 ],
44834                                 [
44835                                     -92.292062,
44836                                     48.270336
44837                                 ],
44838                                 [
44839                                     -92.301416,
44840                                     48.290645
44841                                 ],
44842                                 [
44843                                     -92.303095,
44844                                     48.310928
44845                                 ],
44846                                 [
44847                                     -92.281598,
44848                                     48.33178
44849                                 ],
44850                                 [
44851                                     -92.259118,
44852                                     48.339635
44853                                 ],
44854                                 [
44855                                     -92.154732,
44856                                     48.350125
44857                                 ],
44858                                 [
44859                                     -92.070499,
44860                                     48.346714
44861                                 ],
44862                                 [
44863                                     -92.043421,
44864                                     48.334596
44865                                 ],
44866                                 [
44867                                     -92.030114,
44868                                     48.313176
44869                                 ],
44870                                 [
44871                                     -92.021355,
44872                                     48.287441
44873                                 ],
44874                                 [
44875                                     -92.007997,
44876                                     48.262482
44877                                 ],
44878                                 [
44879                                     -91.992158,
44880                                     48.247909
44881                                 ],
44882                                 [
44883                                     -91.975492,
44884                                     48.236566
44885                                 ],
44886                                 [
44887                                     -91.957302,
44888                                     48.228323
44889                                 ],
44890                                 [
44891                                     -91.852244,
44892                                     48.195974
44893                                 ],
44894                                 [
44895                                     -91.764988,
44896                                     48.187344
44897                                 ],
44898                                 [
44899                                     -91.744137,
44900                                     48.179593
44901                                 ],
44902                                 [
44903                                     -91.727575,
44904                                     48.168327
44905                                 ],
44906                                 [
44907                                     -91.695509,
44908                                     48.13758
44909                                 ],
44910                                 [
44911                                     -91.716438,
44912                                     48.112051
44913                                 ],
44914                                 [
44915                                     -91.692512,
44916                                     48.097866
44917                                 ],
44918                                 [
44919                                     -91.618615,
44920                                     48.089572
44921                                 ],
44922                                 [
44923                                     -91.597479,
44924                                     48.090399
44925                                 ],
44926                                 [
44927                                     -91.589676,
44928                                     48.088332
44929                                 ],
44930                                 [
44931                                     -91.581098,
44932                                     48.080942
44933                                 ],
44934                                 [
44935                                     -91.579806,
44936                                     48.070969
44937                                 ],
44938                                 [
44939                                     -91.585129,
44940                                     48.06084
44941                                 ],
44942                                 [
44943                                     -91.586989,
44944                                     48.052572
44945                                 ],
44946                                 [
44947                                     -91.574845,
44948                                     48.048205
44949                                 ],
44950                                 [
44951                                     -91.487098,
44952                                     48.053476
44953                                 ],
44954                                 [
44955                                     -91.464722,
44956                                     48.048955
44957                                 ],
44958                                 [
44959                                     -91.446274,
44960                                     48.040738
44961                                 ],
44962                                 [
44963                                     -91.427929,
44964                                     48.036449
44965                                 ],
44966                                 [
44967                                     -91.3654,
44968                                     48.057843
44969                                 ],
44970                                 [
44971                                     -91.276362,
44972                                     48.064768
44973                                 ],
44974                                 [
44975                                     -91.23807,
44976                                     48.082648
44977                                 ],
44978                                 [
44979                                     -91.203963,
44980                                     48.107659
44981                                 ],
44982                                 [
44983                                     -91.071103,
44984                                     48.170859
44985                                 ],
44986                                 [
44987                                     -91.02816,
44988                                     48.184838
44989                                 ],
44990                                 [
44991                                     -91.008109,
44992                                     48.194372
44993                                 ],
44994                                 [
44995                                     -90.923153,
44996                                     48.227109
44997                                 ],
44998                                 [
44999                                     -90.873802,
45000                                     48.234344
45001                                 ],
45002                                 [
45003                                     -90.840678,
45004                                     48.220107
45005                                 ],
45006                                 [
45007                                     -90.837939,
45008                                     48.210547
45009                                 ],
45010                                 [
45011                                     -90.848843,
45012                                     48.198713
45013                                 ],
45014                                 [
45015                                     -90.849721,
45016                                     48.189566
45017                                 ],
45018                                 [
45019                                     -90.843003,
45020                                     48.176983
45021                                 ],
45022                                 [
45023                                     -90.83427,
45024                                     48.171789
45025                                 ],
45026                                 [
45027                                     -90.823883,
45028                                     48.168327
45029                                 ],
45030                                 [
45031                                     -90.812307,
45032                                     48.160989
45033                                 ],
45034                                 [
45035                                     -90.803057,
45036                                     48.147166
45037                                 ],
45038                                 [
45039                                     -90.796701,
45040                                     48.117064
45041                                 ],
45042                                 [
45043                                     -90.786469,
45044                                     48.10045
45045                                 ],
45046                                 [
45047                                     -90.750347,
45048                                     48.083991
45049                                 ],
45050                                 [
45051                                     -90.701307,
45052                                     48.08456
45053                                 ],
45054                                 [
45055                                     -90.611079,
45056                                     48.103499
45057                                 ],
45058                                 [
45059                                     -90.586843,
45060                                     48.104817
45061                                 ],
45062                                 [
45063                                     -90.573872,
45064                                     48.097892
45065                                 ],
45066                                 [
45067                                     -90.562194,
45068                                     48.088849
45069                                 ],
45070                                 [
45071                                     -90.542014,
45072                                     48.083733
45073                                 ],
45074                                 [
45075                                     -90.531601,
45076                                     48.08456
45077                                 ],
45078                                 [
45079                                     -90.501887,
45080                                     48.094275
45081                                 ],
45082                                 [
45083                                     -90.490493,
45084                                     48.096239
45085                                 ],
45086                                 [
45087                                     -90.483465,
45088                                     48.094482
45089                                 ],
45090                                 [
45091                                     -90.477858,
45092                                     48.091536
45093                                 ],
45094                                 [
45095                                     -90.470623,
45096                                     48.089882
45097                                 ],
45098                                 [
45099                                     -90.178625,
45100                                     48.116444
45101                                 ],
45102                                 [
45103                                     -90.120386,
45104                                     48.115359
45105                                 ],
45106                                 [
45107                                     -90.073257,
45108                                     48.101199
45109                                 ],
45110                                 [
45111                                     -90.061036,
45112                                     48.091019
45113                                 ],
45114                                 [
45115                                     -90.008222,
45116                                     48.029731
45117                                 ],
45118                                 [
45119                                     -89.995329,
45120                                     48.018595
45121                                 ],
45122                                 [
45123                                     -89.980317,
45124                                     48.010094
45125                                 ],
45126                                 [
45127                                     -89.92045,
45128                                     47.98746
45129                                 ],
45130                                 [
45131                                     -89.902441,
45132                                     47.985909
45133                                 ],
45134                                 [
45135                                     -89.803454,
45136                                     48.013763
45137                                 ],
45138                                 [
45139                                     -89.780975,
45140                                     48.017199
45141                                 ],
45142                                 [
45143                                     -89.763302,
45144                                     48.017303
45145                                 ],
45146                                 [
45147                                     -89.745964,
45148                                     48.013763
45149                                 ],
45150                                 [
45151                                     -89.724596,
45152                                     48.005908
45153                                 ],
45154                                 [
45155                                     -89.712788,
45156                                     48.003376
45157                                 ],
45158                                 [
45159                                     -89.678656,
45160                                     48.008699
45161                                 ],
45162                                 [
45163                                     -89.65659,
45164                                     48.007975
45165                                 ],
45166                                 [
45167                                     -89.593105,
45168                                     47.996503
45169                                 ],
45170                                 [
45171                                     -89.581753,
45172                                     47.996333
45173                                 ],
45174                                 [
45175                                     -89.586724,
45176                                     47.992938
45177                                 ],
45178                                 [
45179                                     -89.310872,
45180                                     47.981097
45181                                 ],
45182                                 [
45183                                     -89.072861,
45184                                     48.046842
45185                                 ],
45186                                 [
45187                                     -88.49789,
45188                                     48.212841
45189                                 ],
45190                                 [
45191                                     -88.286621,
45192                                     48.156675
45193                                 ],
45194                                 [
45195                                     -85.939935,
45196                                     47.280501
45197                                 ],
45198                                 [
45199                                     -84.784644,
45200                                     46.770068
45201                                 ],
45202                                 [
45203                                     -84.516909,
45204                                     46.435083
45205                                 ],
45206                                 [
45207                                     -84.489712,
45208                                     46.446652
45209                                 ],
45210                                 [
45211                                     -84.491052,
45212                                     46.457658
45213                                 ],
45214                                 [
45215                                     -84.478301,
45216                                     46.466467
45217                                 ],
45218                                 [
45219                                     -84.465408,
45220                                     46.478172
45221                                 ],
45222                                 [
45223                                     -84.448096,
45224                                     46.489722
45225                                 ],
45226                                 [
45227                                     -84.42324,
45228                                     46.511581
45229                                 ],
45230                                 [
45231                                     -84.389702,
45232                                     46.520262
45233                                 ],
45234                                 [
45235                                     -84.352469,
45236                                     46.522743
45237                                 ],
45238                                 [
45239                                     -84.30534,
45240                                     46.501607
45241                                 ],
45242                                 [
45243                                     -84.242011,
45244                                     46.526464
45245                                 ],
45246                                 [
45247                                     -84.197285,
45248                                     46.546359
45249                                 ],
45250                                 [
45251                                     -84.147676,
45252                                     46.541346
45253                                 ],
45254                                 [
45255                                     -84.110443,
45256                                     46.526464
45257                                 ],
45258                                 [
45259                                     -84.158812,
45260                                     46.433343
45261                                 ],
45262                                 [
45263                                     -84.147676,
45264                                     46.399882
45265                                 ],
45266                                 [
45267                                     -84.129046,
45268                                     46.375026
45269                                 ],
45270                                 [
45271                                     -84.10543,
45272                                     46.347741
45273                                 ],
45274                                 [
45275                                     -84.105944,
45276                                     46.346374
45277                                 ],
45278                                 [
45279                                     -84.117195,
45280                                     46.347157
45281                                 ],
45282                                 [
45283                                     -84.117489,
45284                                     46.338326
45285                                 ],
45286                                 [
45287                                     -84.122361,
45288                                     46.331922
45289                                 ],
45290                                 [
45291                                     -84.112061,
45292                                     46.287102
45293                                 ],
45294                                 [
45295                                     -84.092672,
45296                                     46.227469
45297                                 ],
45298                                 [
45299                                     -84.111983,
45300                                     46.20337
45301                                 ],
45302                                 [
45303                                     -84.015118,
45304                                     46.149712
45305                                 ],
45306                                 [
45307                                     -83.957038,
45308                                     46.045736
45309                                 ],
45310                                 [
45311                                     -83.676821,
45312                                     46.15388
45313                                 ],
45314                                 [
45315                                     -83.429449,
45316                                     46.086221
45317                                 ],
45318                                 [
45319                                     -83.523049,
45320                                     45.892052
45321                                 ],
45322                                 [
45323                                     -83.574563,
45324                                     45.890259
45325                                 ],
45326                                 [
45327                                     -82.551615,
45328                                     44.857931
45329                                 ],
45330                                 [
45331                                     -82.655591,
45332                                     43.968545
45333                                 ],
45334                                 [
45335                                     -82.440632,
45336                                     43.096285
45337                                 ],
45338                                 [
45339                                     -82.460131,
45340                                     43.084392
45341                                 ],
45342                                 [
45343                                     -82.458894,
45344                                     43.083247
45345                                 ],
45346                                 [
45347                                     -82.431813,
45348                                     43.039387
45349                                 ],
45350                                 [
45351                                     -82.424748,
45352                                     43.02408
45353                                 ],
45354                                 [
45355                                     -82.417242,
45356                                     43.01731
45357                                 ],
45358                                 [
45359                                     -82.416369,
45360                                     43.01742
45361                                 ],
45362                                 [
45363                                     -82.416412,
45364                                     43.017143
45365                                 ],
45366                                 [
45367                                     -82.414603,
45368                                     42.983243
45369                                 ],
45370                                 [
45371                                     -82.430442,
45372                                     42.951307
45373                                 ],
45374                                 [
45375                                     -82.453179,
45376                                     42.918983
45377                                 ],
45378                                 [
45379                                     -82.464781,
45380                                     42.883637
45381                                 ],
45382                                 [
45383                                     -82.468036,
45384                                     42.863974
45385                                 ],
45386                                 [
45387                                     -82.482325,
45388                                     42.835113
45389                                 ],
45390                                 [
45391                                     -82.485271,
45392                                     42.818524
45393                                 ],
45394                                 [
45395                                     -82.473618,
45396                                     42.798164
45397                                 ],
45398                                 [
45399                                     -82.470982,
45400                                     42.790568
45401                                 ],
45402                                 [
45403                                     -82.471344,
45404                                     42.779845
45405                                 ],
45406                                 [
45407                                     -82.476951,
45408                                     42.761474
45409                                 ],
45410                                 [
45411                                     -82.48341,
45412                                     42.719254
45413                                 ],
45414                                 [
45415                                     -82.511264,
45416                                     42.646675
45417                                 ],
45418                                 [
45419                                     -82.526224,
45420                                     42.619906
45421                                 ],
45422                                 [
45423                                     -82.549246,
45424                                     42.590941
45425                                 ],
45426                                 [
45427                                     -82.575833,
45428                                     42.571795
45429                                 ],
45430                                 [
45431                                     -82.608467,
45432                                     42.561098
45433                                 ],
45434                                 [
45435                                     -82.644331,
45436                                     42.557817
45437                                 ],
45438                                 [
45439                                     -82.644698,
45440                                     42.557533
45441                                 ],
45442                                 [
45443                                     -82.644932,
45444                                     42.561634
45445                                 ],
45446                                 [
45447                                     -82.637132,
45448                                     42.568405
45449                                 ],
45450                                 [
45451                                     -82.60902,
45452                                     42.579296
45453                                 ],
45454                                 [
45455                                     -82.616673,
45456                                     42.582828
45457                                 ],
45458                                 [
45459                                     -82.636985,
45460                                     42.599607
45461                                 ],
45462                                 [
45463                                     -82.625357,
45464                                     42.616092
45465                                 ],
45466                                 [
45467                                     -82.629331,
45468                                     42.626394
45469                                 ],
45470                                 [
45471                                     -82.638751,
45472                                     42.633459
45473                                 ],
45474                                 [
45475                                     -82.644344,
45476                                     42.640524
45477                                 ],
45478                                 [
45479                                     -82.644166,
45480                                     42.641056
45481                                 ],
45482                                 [
45483                                     -82.716083,
45484                                     42.617461
45485                                 ],
45486                                 [
45487                                     -82.777592,
45488                                     42.408506
45489                                 ],
45490                                 [
45491                                     -82.888693,
45492                                     42.406093
45493                                 ],
45494                                 [
45495                                     -82.889991,
45496                                     42.403266
45497                                 ],
45498                                 [
45499                                     -82.905739,
45500                                     42.387665
45501                                 ],
45502                                 [
45503                                     -82.923842,
45504                                     42.374419
45505                                 ],
45506                                 [
45507                                     -82.937972,
45508                                     42.366176
45509                                 ],
45510                                 [
45511                                     -82.947686,
45512                                     42.363527
45513                                 ],
45514                                 [
45515                                     -82.979624,
45516                                     42.359406
45517                                 ],
45518                                 [
45519                                     -83.042618,
45520                                     42.340861
45521                                 ],
45522                                 [
45523                                     -83.061899,
45524                                     42.32732
45525                                 ],
45526                                 [
45527                                     -83.081622,
45528                                     42.30907
45529                                 ],
45530                                 [
45531                                     -83.11342,
45532                                     42.279619
45533                                 ],
45534                                 [
45535                                     -83.145306,
45536                                     42.066968
45537                                 ],
45538                                 [
45539                                     -83.177398,
45540                                     41.960666
45541                                 ],
45542                                 [
45543                                     -83.21512,
45544                                     41.794493
45545                                 ],
45546                                 [
45547                                     -82.219051,
45548                                     41.516445
45549                                 ],
45550                                 [
45551                                     -80.345329,
45552                                     42.13344
45553                                 ],
45554                                 [
45555                                     -80.316455,
45556                                     42.123137
45557                                 ],
45558                                 [
45559                                     -79.270266,
45560                                     42.591872
45561                                 ],
45562                                 [
45563                                     -79.221058,
45564                                     42.582892
45565                                 ],
45566                                 [
45567                                     -78.871842,
45568                                     42.860012
45569                                 ],
45570                                 [
45571                                     -78.875011,
45572                                     42.867184
45573                                 ],
45574                                 [
45575                                     -78.896205,
45576                                     42.897209
45577                                 ],
45578                                 [
45579                                     -78.901651,
45580                                     42.908101
45581                                 ],
45582                                 [
45583                                     -78.90901,
45584                                     42.952255
45585                                 ],
45586                                 [
45587                                     -78.913426,
45588                                     42.957848
45589                                 ],
45590                                 [
45591                                     -78.932118,
45592                                     42.9708
45593                                 ],
45594                                 [
45595                                     -78.936386,
45596                                     42.979631
45597                                 ],
45598                                 [
45599                                     -78.927997,
45600                                     43.002003
45601                                 ],
45602                                 [
45603                                     -78.893114,
45604                                     43.029379
45605                                 ],
45606                                 [
45607                                     -78.887963,
45608                                     43.051456
45609                                 ],
45610                                 [
45611                                     -78.914897,
45612                                     43.076477
45613                                 ],
45614                                 [
45615                                     -79.026167,
45616                                     43.086485
45617                                 ],
45618                                 [
45619                                     -79.065231,
45620                                     43.10573
45621                                 ],
45622                                 [
45623                                     -79.065273,
45624                                     43.105897
45625                                 ],
45626                                 [
45627                                     -79.065738,
45628                                     43.120237
45629                                 ],
45630                                 [
45631                                     -79.061423,
45632                                     43.130288
45633                                 ],
45634                                 [
45635                                     -79.055583,
45636                                     43.138427
45637                                 ],
45638                                 [
45639                                     -79.051604,
45640                                     43.146851
45641                                 ],
45642                                 [
45643                                     -79.04933,
45644                                     43.159847
45645                                 ],
45646                                 [
45647                                     -79.048607,
45648                                     43.170622
45649                                 ],
45650                                 [
45651                                     -79.053775,
45652                                     43.260358
45653                                 ],
45654                                 [
45655                                     -79.058425,
45656                                     43.277799
45657                                 ],
45658                                 [
45659                                     -79.058631,
45660                                     43.2782
45661                                 ],
45662                                 [
45663                                     -78.990696,
45664                                     43.286947
45665                                 ],
45666                                 [
45667                                     -78.862059,
45668                                     43.324332
45669                                 ],
45670                                 [
45671                                     -78.767813,
45672                                     43.336418
45673                                 ],
45674                                 [
45675                                     -78.516117,
45676                                     43.50645
45677                                 ],
45678                                 [
45679                                     -76.363317,
45680                                     43.943219
45681                                 ],
45682                                 [
45683                                     -76.396746,
45684                                     44.106667
45685                                 ],
45686                                 [
45687                                     -76.364697,
45688                                     44.111631
45689                                 ],
45690                                 [
45691                                     -76.366146,
45692                                     44.117349
45693                                 ],
45694                                 [
45695                                     -76.357462,
45696                                     44.131478
45697                                 ],
45698                                 [
45699                                     -76.183493,
45700                                     44.223025
45701                                 ],
45702                                 [
45703                                     -76.162644,
45704                                     44.229888
45705                                 ],
45706                                 [
45707                                     -76.176117,
45708                                     44.30795
45709                                 ],
45710                                 [
45711                                     -76.046414,
45712                                     44.354817
45713                                 ],
45714                                 [
45715                                     -75.928746,
45716                                     44.391137
45717                                 ],
45718                                 [
45719                                     -75.852508,
45720                                     44.381639
45721                                 ],
45722                                 [
45723                                     -75.849095,
45724                                     44.386103
45725                                 ],
45726                                 [
45727                                     -75.847623,
45728                                     44.392579
45729                                 ],
45730                                 [
45731                                     -75.84674,
45732                                     44.398172
45733                                 ],
45734                                 [
45735                                     -75.845415,
45736                                     44.40141
45737                                 ],
45738                                 [
45739                                     -75.780803,
45740                                     44.432318
45741                                 ],
45742                                 [
45743                                     -75.770205,
45744                                     44.446153
45745                                 ],
45746                                 [
45747                                     -75.772266,
45748                                     44.463815
45749                                 ],
45750                                 [
45751                                     -75.779184,
45752                                     44.48236
45753                                 ],
45754                                 [
45755                                     -75.791496,
45756                                     44.496513
45757                                 ],
45758                                 [
45759                                     -75.791183,
45760                                     44.496768
45761                                 ],
45762                                 [
45763                                     -75.754622,
45764                                     44.527567
45765                                 ],
45766                                 [
45767                                     -75.69969,
45768                                     44.581673
45769                                 ],
45770                                 [
45771                                     -75.578199,
45772                                     44.661513
45773                                 ],
45774                                 [
45775                                     -75.455958,
45776                                     44.741766
45777                                 ],
45778                                 [
45779                                     -75.341831,
45780                                     44.816749
45781                                 ],
45782                                 [
45783                                     -75.270233,
45784                                     44.863774
45785                                 ],
45786                                 [
45787                                     -75.129647,
45788                                     44.925166
45789                                 ],
45790                                 [
45791                                     -75.075594,
45792                                     44.935501
45793                                 ],
45794                                 [
45795                                     -75.058721,
45796                                     44.941031
45797                                 ],
45798                                 [
45799                                     -75.0149,
45800                                     44.96599
45801                                 ],
45802                                 [
45803                                     -74.998647,
45804                                     44.972398
45805                                 ],
45806                                 [
45807                                     -74.940201,
45808                                     44.987746
45809                                 ],
45810                                 [
45811                                     -74.903744,
45812                                     45.005213
45813                                 ],
45814                                 [
45815                                     -74.88651,
45816                                     45.009398
45817                                 ],
45818                                 [
45819                                     -74.868474,
45820                                     45.010122
45821                                 ],
45822                                 [
45823                                     -74.741557,
45824                                     44.998857
45825                                 ],
45826                                 [
45827                                     -74.712961,
45828                                     44.999254
45829                                 ],
45830                                 [
45831                                     -74.695875,
45832                                     44.99803
45833                                 ],
45834                                 [
45835                                     -74.596114,
45836                                     44.998495
45837                                 ],
45838                                 [
45839                                     -74.496352,
45840                                     44.999012
45841                                 ],
45842                                 [
45843                                     -74.197146,
45844                                     45.000458
45845                                 ],
45846                                 [
45847                                     -71.703551,
45848                                     45.012757
45849                                 ],
45850                                 [
45851                                     -71.603816,
45852                                     45.013274
45853                                 ],
45854                                 [
45855                                     -71.505848,
45856                                     45.013731
45857                                 ],
45858                                 [
45859                                     -71.50408,
45860                                     45.013739
45861                                 ],
45862                                 [
45863                                     -71.506613,
45864                                     45.037045
45865                                 ],
45866                                 [
45867                                     -71.504752,
45868                                     45.052962
45869                                 ],
45870                                 [
45871                                     -71.497259,
45872                                     45.066553
45873                                 ],
45874                                 [
45875                                     -71.45659,
45876                                     45.110994
45877                                 ],
45878                                 [
45879                                     -71.451215,
45880                                     45.121691
45881                                 ],
45882                                 [
45883                                     -71.445996,
45884                                     45.140295
45885                                 ],
45886                                 [
45887                                     -71.441604,
45888                                     45.150682
45889                                 ],
45890                                 [
45891                                     -71.413026,
45892                                     45.186184
45893                                 ],
45894                                 [
45895                                     -71.406567,
45896                                     45.204942
45897                                 ],
45898                                 [
45899                                     -71.42269,
45900                                     45.217189
45901                                 ],
45902                                 [
45903                                     -71.449045,
45904                                     45.226905
45905                                 ],
45906                                 [
45907                                     -71.438813,
45908                                     45.233468
45909                                 ],
45910                                 [
45911                                     -71.394888,
45912                                     45.241529
45913                                 ],
45914                                 [
45915                                     -71.381245,
45916                                     45.250779
45917                                 ],
45918                                 [
45919                                     -71.3521,
45920                                     45.278323
45921                                 ],
45922                                 [
45923                                     -71.334323,
45924                                     45.28871
45925                                 ],
45926                                 [
45927                                     -71.311534,
45928                                     45.294136
45929                                 ],
45930                                 [
45931                                     -71.293396,
45932                                     45.292327
45933                                 ],
45934                                 [
45935                                     -71.20937,
45936                                     45.254758
45937                                 ],
45938                                 [
45939                                     -71.185133,
45940                                     45.248557
45941                                 ],
45942                                 [
45943                                     -71.160329,
45944                                     45.245767
45945                                 ],
45946                                 [
45947                                     -71.141725,
45948                                     45.252329
45949                                 ],
45950                                 [
45951                                     -71.111029,
45952                                     45.287108
45953                                 ],
45954                                 [
45955                                     -71.095242,
45956                                     45.300905
45957                                 ],
45958                                 [
45959                                     -71.085553,
45960                                     45.304213
45961                                 ],
45962                                 [
45963                                     -71.084952,
45964                                     45.304293
45965                                 ],
45966                                 [
45967                                     -71.064211,
45968                                     45.307055
45969                                 ],
45970                                 [
45971                                     -71.054418,
45972                                     45.310362
45973                                 ],
45974                                 [
45975                                     -71.036667,
45976                                     45.323385
45977                                 ],
45978                                 [
45979                                     -71.027598,
45980                                     45.33465
45981                                 ],
45982                                 [
45983                                     -71.016539,
45984                                     45.343125
45985                                 ],
45986                                 [
45987                                     -70.993155,
45988                                     45.347827
45989                                 ],
45990                                 [
45991                                     -70.968118,
45992                                     45.34452
45993                                 ],
45994                                 [
45995                                     -70.951608,
45996                                     45.332014
45997                                 ],
45998                                 [
45999                                     -70.906908,
46000                                     45.246232
46001                                 ],
46002                                 [
46003                                     -70.892412,
46004                                     45.234604
46005                                 ],
46006                                 [
46007                                     -70.874351,
46008                                     45.245663
46009                                 ],
46010                                 [
46011                                     -70.870605,
46012                                     45.255275
46013                                 ],
46014                                 [
46015                                     -70.872491,
46016                                     45.274189
46017                                 ],
46018                                 [
46019                                     -70.870243,
46020                                     45.283129
46021                                 ],
46022                                 [
46023                                     -70.862621,
46024                                     45.290363
46025                                 ],
46026                                 [
46027                                     -70.842389,
46028                                     45.301215
46029                                 ],
46030                                 [
46031                                     -70.835258,
46032                                     45.309794
46033                                 ],
46034                                 [
46035                                     -70.83208,
46036                                     45.328552
46037                                 ],
46038                                 [
46039                                     -70.835465,
46040                                     45.373097
46041                                 ],
46042                                 [
46043                                     -70.833837,
46044                                     45.393096
46045                                 ],
46046                                 [
46047                                     -70.825982,
46048                                     45.410459
46049                                 ],
46050                                 [
46051                                     -70.812986,
46052                                     45.42343
46053                                 ],
46054                                 [
46055                                     -70.794873,
46056                                     45.430406
46057                                 ],
46058                                 [
46059                                     -70.771877,
46060                                     45.430045
46061                                 ],
46062                                 [
46063                                     -70.75255,
46064                                     45.422345
46065                                 ],
46066                                 [
46067                                     -70.718004,
46068                                     45.397282
46069                                 ],
46070                                 [
46071                                     -70.696739,
46072                                     45.388652
46073                                 ],
46074                                 [
46075                                     -70.675785,
46076                                     45.388704
46077                                 ],
46078                                 [
46079                                     -70.65359,
46080                                     45.395473
46081                                 ],
46082                                 [
46083                                     -70.641316,
46084                                     45.408496
46085                                 ],
46086                                 [
46087                                     -70.650257,
46088                                     45.427461
46089                                 ],
46090                                 [
46091                                     -70.668162,
46092                                     45.439036
46093                                 ],
46094                                 [
46095                                     -70.707385,
46096                                     45.4564
46097                                 ],
46098                                 [
46099                                     -70.722836,
46100                                     45.470921
46101                                 ],
46102                                 [
46103                                     -70.732009,
46104                                     45.491591
46105                                 ],
46106                                 [
46107                                     -70.730329,
46108                                     45.507973
46109                                 ],
46110                                 [
46111                                     -70.686792,
46112                                     45.572723
46113                                 ],
46114                                 [
46115                                     -70.589614,
46116                                     45.651788
46117                                 ],
46118                                 [
46119                                     -70.572406,
46120                                     45.662279
46121                                 ],
46122                                 [
46123                                     -70.514735,
46124                                     45.681709
46125                                 ],
46126                                 [
46127                                     -70.484763,
46128                                     45.699641
46129                                 ],
46130                                 [
46131                                     -70.4728,
46132                                     45.703568
46133                                 ],
46134                                 [
46135                                     -70.450424,
46136                                     45.703723
46137                                 ],
46138                                 [
46139                                     -70.439132,
46140                                     45.705893
46141                                 ],
46142                                 [
46143                                     -70.419315,
46144                                     45.716901
46145                                 ],
46146                                 [
46147                                     -70.407351,
46148                                     45.731525
46149                                 ],
46150                                 [
46151                                     -70.402442,
46152                                     45.749663
46153                                 ],
46154                                 [
46155                                     -70.403941,
46156                                     45.771161
46157                                 ],
46158                                 [
46159                                     -70.408282,
46160                                     45.781651
46161                                 ],
46162                                 [
46163                                     -70.413682,
46164                                     45.787697
46165                                 ],
46166                                 [
46167                                     -70.41717,
46168                                     45.793795
46169                                 ],
46170                                 [
46171                                     -70.415232,
46172                                     45.804389
46173                                 ],
46174                                 [
46175                                     -70.409935,
46176                                     45.810745
46177                                 ],
46178                                 [
46179                                     -70.389807,
46180                                     45.825059
46181                                 ],
46182                                 [
46183                                     -70.312654,
46184                                     45.867641
46185                                 ],
46186                                 [
46187                                     -70.283173,
46188                                     45.890482
46189                                 ],
46190                                 [
46191                                     -70.262528,
46192                                     45.923038
46193                                 ],
46194                                 [
46195                                     -70.255939,
46196                                     45.948876
46197                                 ],
46198                                 [
46199                                     -70.263148,
46200                                     45.956834
46201                                 ],
46202                                 [
46203                                     -70.280434,
46204                                     45.959315
46205                                 ],
46206                                 [
46207                                     -70.303947,
46208                                     45.968616
46209                                 ],
46210                                 [
46211                                     -70.316298,
46212                                     45.982982
46213                                 ],
46214                                 [
46215                                     -70.316892,
46216                                     45.999002
46217                                 ],
46218                                 [
46219                                     -70.306143,
46220                                     46.035331
46221                                 ],
46222                                 [
46223                                     -70.303637,
46224                                     46.038483
46225                                 ],
46226                                 [
46227                                     -70.294309,
46228                                     46.044943
46229                                 ],
46230                                 [
46231                                     -70.29201,
46232                                     46.048663
46233                                 ],
46234                                 [
46235                                     -70.293017,
46236                                     46.054038
46237                                 ],
46238                                 [
46239                                     -70.296092,
46240                                     46.057862
46241                                 ],
46242                                 [
46243                                     -70.300795,
46244                                     46.061737
46245                                 ],
46246                                 [
46247                                     -70.304774,
46248                                     46.065975
46249                                 ],
46250                                 [
46251                                     -70.311362,
46252                                     46.071866
46253                                 ],
46254                                 [
46255                                     -70.312629,
46256                                     46.079566
46257                                 ],
46258                                 [
46259                                     -70.30033,
46260                                     46.089281
46261                                 ],
46262                                 [
46263                                     -70.26444,
46264                                     46.106593
46265                                 ],
46266                                 [
46267                                     -70.24948,
46268                                     46.120597
46269                                 ],
46270                                 [
46271                                     -70.244002,
46272                                     46.141009
46273                                 ],
46274                                 [
46275                                     -70.249247,
46276                                     46.162765
46277                                 ],
46278                                 [
46279                                     -70.263329,
46280                                     46.183229
46281                                 ],
46282                                 [
46283                                     -70.284801,
46284                                     46.191859
46285                                 ],
46286                                 [
46287                                     -70.280899,
46288                                     46.211857
46289                                 ],
46290                                 [
46291                                     -70.253407,
46292                                     46.251493
46293                                 ],
46294                                 [
46295                                     -70.236173,
46296                                     46.288339
46297                                 ],
46298                                 [
46299                                     -70.223693,
46300                                     46.300793
46301                                 ],
46302                                 [
46303                                     -70.201886,
46304                                     46.305495
46305                                 ],
46306                                 [
46307                                     -70.199509,
46308                                     46.315262
46309                                 ],
46310                                 [
46311                                     -70.197028,
46312                                     46.336863
46313                                 ],
46314                                 [
46315                                     -70.188398,
46316                                     46.358412
46317                                 ],
46318                                 [
46319                                     -70.167418,
46320                                     46.368179
46321                                 ],
46322                                 [
46323                                     -70.153052,
46324                                     46.372829
46325                                 ],
46326                                 [
46327                                     -70.074323,
46328                                     46.419545
46329                                 ],
46330                                 [
46331                                     -70.061817,
46332                                     46.445409
46333                                 ],
46334                                 [
46335                                     -70.050086,
46336                                     46.511271
46337                                 ],
46338                                 [
46339                                     -70.032723,
46340                                     46.609766
46341                                 ],
46342                                 [
46343                                     -70.023628,
46344                                     46.661287
46345                                 ],
46346                                 [
46347                                     -70.007763,
46348                                     46.704075
46349                                 ],
46350                                 [
46351                                     -69.989961,
46352                                     46.721697
46353                                 ],
46354                                 [
46355                                     -69.899708,
46356                                     46.811562
46357                                 ],
46358                                 [
46359                                     -69.809403,
46360                                     46.901299
46361                                 ],
46362                                 [
46363                                     -69.719099,
46364                                     46.991086
46365                                 ],
46366                                 [
46367                                     -69.628794,
46368                                     47.080797
46369                                 ],
46370                                 [
46371                                     -69.538464,
46372                                     47.17061
46373                                 ],
46374                                 [
46375                                     -69.448159,
46376                                     47.260346
46377                                 ],
46378                                 [
46379                                     -69.357906,
46380                                     47.350134
46381                                 ],
46382                                 [
46383                                     -69.267628,
46384                                     47.439844
46385                                 ],
46386                                 [
46387                                     -69.25091,
46388                                     47.452919
46389                                 ],
46390                                 [
46391                                     -69.237268,
46392                                     47.45881
46393                                 ],
46394                                 [
46395                                     -69.221972,
46396                                     47.459688
46397                                 ],
46398                                 [
46399                                     -69.069655,
46400                                     47.431886
46401                                 ],
46402                                 [
46403                                     -69.054023,
46404                                     47.418399
46405                                 ],
46406                                 [
46407                                     -69.054333,
46408                                     47.389253
46409                                 ],
46410                                 [
46411                                     -69.066193,
46412                                     47.32967
46413                                 ],
46414                                 [
46415                                     -69.065134,
46416                                     47.296339
46417                                 ],
46418                                 [
46419                                     -69.06356,
46420                                     47.290809
46421                                 ],
46422                                 [
46423                                     -69.057486,
46424                                     47.269467
46425                                 ],
46426                                 [
46427                                     -69.0402,
46428                                     47.249055
46429                                 ],
46430                                 [
46431                                     -68.906229,
46432                                     47.190221
46433                                 ],
46434                                 [
46435                                     -68.889718,
46436                                     47.190609
46437                                 ],
46438                                 [
46439                                     -68.761819,
46440                                     47.23704
46441                                 ],
46442                                 [
46443                                     -68.71779,
46444                                     47.245231
46445                                 ],
46446                                 [
46447                                     -68.668801,
46448                                     47.243422
46449                                 ],
46450                                 [
46451                                     -68.644203,
46452                                     47.245283
46453                                 ],
46454                                 [
46455                                     -68.6256,
46456                                     47.255205
46457                                 ],
46458                                 [
46459                                     -68.607926,
46460                                     47.269829
46461                                 ],
46462                                 [
46463                                     -68.58524,
46464                                     47.28249
46465                                 ],
46466                                 [
46467                                     -68.539662,
46468                                     47.299853
46469                                 ],
46470                                 [
46471                                     -68.518009,
46472                                     47.304762
46473                                 ],
46474                                 [
46475                                     -68.492016,
46476                                     47.307553
46477                                 ],
46478                                 [
46479                                     -68.466746,
46480                                     47.305692
46481                                 ],
46482                                 [
46483                                     -68.435327,
46484                                     47.291275
46485                                 ],
46486                                 [
46487                                     -68.422563,
46488                                     47.293109
46489                                 ],
46490                                 [
46491                                     -68.410212,
46492                                     47.297424
46493                                 ],
46494                                 [
46495                                     -68.385614,
46496                                     47.301713
46497                                 ],
46498                                 [
46499                                     -68.383392,
46500                                     47.307139
46501                                 ],
46502                                 [
46503                                     -68.384839,
46504                                     47.315873
46505                                 ],
46506                                 [
46507                                     -68.382049,
46508                                     47.32781
46509                                 ],
46510                                 [
46511                                     -68.347839,
46512                                     47.358506
46513                                 ],
46514                                 [
46515                                     -68.299728,
46516                                     47.367833
46517                                 ],
46518                                 [
46519                                     -68.24645,
46520                                     47.360573
46521                                 ],
46522                                 [
46523                                     -68.197047,
46524                                     47.341401
46525                                 ],
46526                                 [
46527                                     -68.184335,
46528                                     47.333133
46529                                 ],
46530                                 [
46531                                     -68.156068,
46532                                     47.306674
46533                                 ],
46534                                 [
46535                                     -68.145061,
46536                                     47.301455
46537                                 ],
46538                                 [
46539                                     -68.115398,
46540                                     47.292282
46541                                 ],
46542                                 [
46543                                     -68.101446,
46544                                     47.286185
46545                                 ],
46546                                 [
46547                                     -68.039382,
46548                                     47.245231
46549                                 ],
46550                                 [
46551                                     -67.993184,
46552                                     47.223217
46553                                 ],
46554                                 [
46555                                     -67.962436,
46556                                     47.197689
46557                                 ],
46558                                 [
46559                                     -67.953703,
46560                                     47.18663
46561                                 ],
46562                                 [
46563                                     -67.949982,
46564                                     47.172936
46565                                 ],
46566                                 [
46567                                     -67.943419,
46568                                     47.164538
46569                                 ],
46570                                 [
46571                                     -67.899132,
46572                                     47.138778
46573                                 ],
46574                                 [
46575                                     -67.870607,
46576                                     47.107358
46577                                 ],
46578                                 [
46579                                     -67.854742,
46580                                     47.09785
46581                                 ],
46582                                 [
46583                                     -67.813556,
46584                                     47.081908
46585                                 ],
46586                                 [
46587                                     -67.808699,
46588                                     47.075138
46589                                 ],
46590                                 [
46591                                     -67.805185,
46592                                     47.035631
46593                                 ],
46594                                 [
46595                                     -67.802549,
46596                                     46.901247
46597                                 ],
46598                                 [
46599                                     -67.800017,
46600                                     46.766785
46601                                 ],
46602                                 [
46603                                     -67.797433,
46604                                     46.632297
46605                                 ],
46606                                 [
46607                                     -67.794849,
46608                                     46.497861
46609                                 ],
46610                                 [
46611                                     -67.792317,
46612                                     46.363476
46613                                 ],
46614                                 [
46615                                     -67.789733,
46616                                     46.229014
46617                                 ],
46618                                 [
46619                                     -67.78715,
46620                                     46.094552
46621                                 ],
46622                                 [
46623                                     -67.784566,
46624                                     45.960142
46625                                 ],
46626                                 [
46627                                     -67.782757,
46628                                     45.95053
46629                                 ],
46630                                 [
46631                                     -67.776556,
46632                                     45.942933
46633                                 ],
46634                                 [
46635                                     -67.767461,
46636                                     45.935957
46637                                 ],
46638                                 [
46639                                     -67.759658,
46640                                     45.928567
46641                                 ],
46642                                 [
46643                                     -67.757849,
46644                                     45.919472
46645                                 ],
46646                                 [
46647                                     -67.769425,
46648                                     45.903969
46649                                 ],
46650                                 [
46651                                     -67.787356,
46652                                     45.890017
46653                                 ],
46654                                 [
46655                                     -67.799242,
46656                                     45.875651
46657                                 ],
46658                                 [
46659                                     -67.792627,
46660                                     45.858907
46661                                 ],
46662                                 [
46663                                     -67.776091,
46664                                     45.840821
46665                                 ],
46666                                 [
46667                                     -67.772835,
46668                                     45.828057
46669                                 ],
46670                                 [
46671                                     -67.779863,
46672                                     45.815706
46673                                 ],
46674                                 [
46675                                     -67.794126,
46676                                     45.799169
46677                                 ],
46678                                 [
46679                                     -67.80627,
46680                                     45.781754
46681                                 ],
46682                                 [
46683                                     -67.811127,
46684                                     45.76651
46685                                 ],
46686                                 [
46687                                     -67.810816,
46688                                     45.762414
46689                                 ],
46690                                 [
46691                                     -67.817811,
46692                                     45.754896
46693                                 ],
46694                                 [
46695                                     -67.821785,
46696                                     45.740767
46697                                 ],
46698                                 [
46699                                     -67.827673,
46700                                     45.739001
46701                                 ],
46702                                 [
46703                                     -67.868884,
46704                                     45.744593
46705                                 ],
46706                                 [
46707                                     -67.856815,
46708                                     45.723694
46709                                 ],
46710                                 [
46711                                     -67.835768,
46712                                     45.703971
46713                                 ],
46714                                 [
46715                                     -67.793821,
46716                                     45.676301
46717                                 ],
46718                                 [
46719                                     -67.733034,
46720                                     45.651869
46721                                 ],
46722                                 [
46723                                     -67.723173,
46724                                     45.645393
46725                                 ],
46726                                 [
46727                                     -67.711546,
46728                                     45.642155
46729                                 ],
46730                                 [
46731                                     -67.697564,
46732                                     45.64922
46733                                 ],
46734                                 [
46735                                     -67.66695,
46736                                     45.620077
46737                                 ],
46738                                 [
46739                                     -67.649435,
46740                                     45.611247
46741                                 ],
46742                                 [
46743                                     -67.603073,
46744                                     45.605948
46745                                 ],
46746                                 [
46747                                     -67.561862,
46748                                     45.596234
46749                                 ],
46750                                 [
46751                                     -67.54052,
46752                                     45.593879
46753                                 ],
46754                                 [
46755                                     -67.442056,
46756                                     45.603593
46757                                 ],
46758                                 [
46759                                     -67.440939,
46760                                     45.604586
46761                                 ],
46762                                 [
46763                                     -67.431306,
46764                                     45.597941
46765                                 ],
46766                                 [
46767                                     -67.422107,
46768                                     45.568796
46769                                 ],
46770                                 [
46771                                     -67.42619,
46772                                     45.533449
46773                                 ],
46774                                 [
46775                                     -67.443036,
46776                                     45.522184
46777                                 ],
46778                                 [
46779                                     -67.467531,
46780                                     45.508283
46781                                 ],
46782                                 [
46783                                     -67.493214,
46784                                     45.493142
46785                                 ],
46786                                 [
46787                                     -67.48231,
46788                                     45.455521
46789                                 ],
46790                                 [
46791                                     -67.428825,
46792                                     45.38705
46793                                 ],
46794                                 [
46795                                     -67.434561,
46796                                     45.350308
46797                                 ],
46798                                 [
46799                                     -67.459056,
46800                                     45.318424
46801                                 ],
46802                                 [
46803                                     -67.468668,
46804                                     45.301835
46805                                 ],
46806                                 [
46807                                     -67.475024,
46808                                     45.282353
46809                                 ],
46810                                 [
46811                                     -67.471303,
46812                                     45.266282
46813                                 ],
46814                                 [
46815                                     -67.427585,
46816                                     45.236568
46817                                 ],
46818                                 [
46819                                     -67.390533,
46820                                     45.193108
46821                                 ],
46822                                 [
46823                                     -67.356272,
46824                                     45.165926
46825                                 ],
46826                                 [
46827                                     -67.31922,
46828                                     45.153886
46829                                 ],
46830                                 [
46831                                     -67.284648,
46832                                     45.169699
46833                                 ],
46834                                 [
46835                                     -67.279584,
46836                                     45.179052
46837                                 ],
46838                                 [
46839                                     -67.279222,
46840                                     45.187372
46841                                 ],
46842                                 [
46843                                     -67.277207,
46844                                     45.195072
46845                                 ],
46846                                 [
46847                                     -67.267336,
46848                                     45.202513
46849                                 ],
46850                                 [
46851                                     -67.254986,
46852                                     45.205045
46853                                 ],
46854                                 [
46855                                     -67.242428,
46856                                     45.202565
46857                                 ],
46858                                 [
46859                                     -67.219071,
46860                                     45.192126
46861                                 ],
46862                                 [
46863                                     -67.206166,
46864                                     45.189401
46865                                 ],
46866                                 [
46867                                     -67.176015,
46868                                     45.178656
46869                                 ],
46870                                 [
46871                                     -67.191274,
46872                                     45.180365
46873                                 ],
46874                                 [
46875                                     -67.204376,
46876                                     45.178209
46877                                 ],
46878                                 [
46879                                     -67.204724,
46880                                     45.177791
46881                                 ],
46882                                 [
46883                                     -67.152423,
46884                                     45.148932
46885                                 ],
46886                                 [
46887                                     -67.048033,
46888                                     45.043407
46889                                 ],
46890                                 [
46891                                     -66.962727,
46892                                     45.047088
46893                                 ],
46894                                 [
46895                                     -66.857192,
46896                                     44.968696
46897                                 ],
46898                                 [
46899                                     -66.897268,
46900                                     44.817275
46901                                 ],
46902                                 [
46903                                     -67.2159,
46904                                     44.593511
46905                                 ],
46906                                 [
46907                                     -67.122366,
46908                                     44.423624
46909                                 ],
46910                                 [
46911                                     -67.68447,
46912                                     44.192544
46913                                 ],
46914                                 [
46915                                     -67.459678,
46916                                     40.781645
46917                                 ],
46918                                 [
46919                                     -76.607854,
46920                                     32.495823
46921                                 ],
46922                                 [
46923                                     -76.798479,
46924                                     32.713735
46925                                 ],
46926                                 [
46927                                     -78.561892,
46928                                     29.037718
46929                                 ],
46930                                 [
46931                                     -78.892446,
46932                                     29.039659
46933                                 ],
46934                                 [
46935                                     -79.762295,
46936                                     26.719312
46937                                 ],
46938                                 [
46939                                     -80.026352,
46940                                     24.932961
46941                                 ],
46942                                 [
46943                                     -82.368794,
46944                                     23.994833
46945                                 ],
46946                                 [
46947                                     -83.806281,
46948                                     29.068506
46949                                 ],
46950                                 [
46951                                     -87.460772,
46952                                     29.089961
46953                                 ],
46954                                 [
46955                                     -87.922646,
46956                                     28.666131
46957                                 ],
46958                                 [
46959                                     -90.461001,
46960                                     28.246758
46961                                 ],
46962                                 [
46963                                     -91.787336,
46964                                     29.11536
46965                                 ],
46966                                 [
46967                                     -93.311871,
46968                                     29.12431
46969                                 ],
46970                                 [
46971                                     -96.423449,
46972                                     26.057857
46973                                 ],
46974                                 [
46975                                     -97.129057,
46976                                     25.991017
46977                                 ],
46978                                 [
46979                                     -97.129509,
46980                                     25.966833
46981                                 ],
46982                                 [
46983                                     -97.139358,
46984                                     25.965876
46985                                 ],
46986                                 [
46987                                     -97.202171,
46988                                     25.960893
46989                                 ],
46990                                 [
46991                                     -97.202176,
46992                                     25.960857
46993                                 ],
46994                                 [
46995                                     -97.204941,
46996                                     25.960639
46997                                 ],
46998                                 [
46999                                     -97.253051,
47000                                     25.963481
47001                                 ],
47002                                 [
47003                                     -97.266358,
47004                                     25.960639
47005                                 ],
47006                                 [
47007                                     -97.2692,
47008                                     25.944361
47009                                 ],
47010                                 [
47011                                     -97.287649,
47012                                     25.928651
47013                                 ],
47014                                 [
47015                                     -97.310981,
47016                                     25.922088
47017                                 ],
47018                                 [
47019                                     -97.328447,
47020                                     25.933302
47021                                 ],
47022                                 [
47023                                     -97.351107,
47024                                     25.918419
47025                                 ],
47026                                 [
47027                                     -97.355112,
47028                                     25.912786
47029                                 ],
47030                                 [
47031                                     -97.35227,
47032                                     25.894493
47033                                 ],
47034                                 [
47035                                     -97.345165,
47036                                     25.871704
47037                                 ],
47038                                 [
47039                                     -97.345733,
47040                                     25.852222
47041                                 ],
47042                                 [
47043                                     -97.36599,
47044                                     25.843902
47045                                 ],
47046                                 [
47047                                     -97.376015,
47048                                     25.846744
47049                                 ],
47050                                 [
47051                                     -97.380124,
47052                                     25.853203
47053                                 ],
47054                                 [
47055                                     -97.383121,
47056                                     25.860541
47057                                 ],
47058                                 [
47059                                     -97.389891,
47060                                     25.865657
47061                                 ],
47062                                 [
47063                                     -97.397823,
47064                                     25.865812
47065                                 ],
47066                                 [
47067                                     -97.399476,
47068                                     25.861162
47069                                 ],
47070                                 [
47071                                     -97.39989,
47072                                     25.855115
47073                                 ],
47074                                 [
47075                                     -97.404179,
47076                                     25.851395
47077                                 ],
47078                                 [
47079                                     -97.425418,
47080                                     25.854857
47081                                 ],
47082                                 [
47083                                     -97.435727,
47084                                     25.869275
47085                                 ],
47086                                 [
47087                                     -97.441309,
47088                                     25.884933
47089                                 ],
47090                                 [
47091                                     -97.448259,
47092                                     25.892322
47093                                 ],
47094                                 [
47095                                     -97.469421,
47096                                     25.892943
47097                                 ],
47098                                 [
47099                                     -97.486319,
47100                                     25.895733
47101                                 ],
47102                                 [
47103                                     -97.502209,
47104                                     25.901883
47105                                 ],
47106                                 [
47107                                     -97.52027,
47108                                     25.912786
47109                                 ],
47110                                 [
47111                                     -97.565177,
47112                                     25.954748
47113                                 ],
47114                                 [
47115                                     -97.594322,
47116                                     25.966375
47117                                 ],
47118                                 [
47119                                     -97.604787,
47120                                     25.979966
47121                                 ],
47122                                 [
47123                                     -97.613055,
47124                                     25.995985
47125                                 ],
47126                                 [
47127                                     -97.622641,
47128                                     26.00906
47129                                 ],
47130                                 [
47131                                     -97.641451,
47132                                     26.022495
47133                                 ],
47134                                 [
47135                                     -97.659874,
47136                                     26.03066
47137                                 ],
47138                                 [
47139                                     -97.679614,
47140                                     26.034639
47141                                 ],
47142                                 [
47143                                     -97.766948,
47144                                     26.039652
47145                                 ],
47146                                 [
47147                                     -97.780306,
47148                                     26.043218
47149                                 ],
47150                                 [
47151                                     -97.782321,
47152                                     26.058617
47153                                 ],
47154                                 [
47155                                     -97.80201,
47156                                     26.063733
47157                                 ],
47158                                 [
47159                                     -97.878181,
47160                                     26.063733
47161                                 ],
47162                                 [
47163                                     -97.941666,
47164                                     26.056809
47165                                 ],
47166                                 [
47167                                     -97.999233,
47168                                     26.064302
47169                                 ],
47170                                 [
47171                                     -98.013057,
47172                                     26.063682
47173                                 ],
47174                                 [
47175                                     -98.044166,
47176                                     26.048799
47177                                 ],
47178                                 [
47179                                     -98.065457,
47180                                     26.042184
47181                                 ],
47182                                 [
47183                                     -98.075146,
47184                                     26.046628
47185                                 ],
47186                                 [
47187                                     -98.083311,
47188                                     26.070916
47189                                 ],
47190                                 [
47191                                     -98.103103,
47192                                     26.074947
47193                                 ],
47194                                 [
47195                                     -98.150232,
47196                                     26.063682
47197                                 ],
47198                                 [
47199                                     -98.185062,
47200                                     26.065232
47201                                 ],
47202                                 [
47203                                     -98.222656,
47204                                     26.075412
47205                                 ],
47206                                 [
47207                                     -98.300429,
47208                                     26.111431
47209                                 ],
47210                                 [
47211                                     -98.309809,
47212                                     26.121094
47213                                 ],
47214                                 [
47215                                     -98.333037,
47216                                     26.15303
47217                                 ],
47218                                 [
47219                                     -98.339264,
47220                                     26.159851
47221                                 ],
47222                                 [
47223                                     -98.365774,
47224                                     26.160161
47225                                 ],
47226                                 [
47227                                     -98.377272,
47228                                     26.163572
47229                                 ],
47230                                 [
47231                                     -98.377272,
47232                                     26.173649
47233                                 ],
47234                                 [
47235                                     -98.36934,
47236                                     26.19401
47237                                 ],
47238                                 [
47239                                     -98.397193,
47240                                     26.201141
47241                                 ],
47242                                 [
47243                                     -98.428845,
47244                                     26.217729
47245                                 ],
47246                                 [
47247                                     -98.456544,
47248                                     26.225946
47249                                 ],
47250                                 [
47251                                     -98.472383,
47252                                     26.207652
47253                                 ],
47254                                 [
47255                                     -98.49295,
47256                                     26.230596
47257                                 ],
47258                                 [
47259                                     -98.521527,
47260                                     26.240932
47261                                 ],
47262                                 [
47263                                     -98.552791,
47264                                     26.248321
47265                                 ],
47266                                 [
47267                                     -98.581627,
47268                                     26.262274
47269                                 ],
47270                                 [
47271                                     -98.640564,
47272                                     26.24181
47273                                 ],
47274                                 [
47275                                     -98.653663,
47276                                     26.244291
47277                                 ],
47278                                 [
47279                                     -98.664696,
47280                                     26.250647
47281                                 ],
47282                                 [
47283                                     -98.685289,
47284                                     26.268475
47285                                 ],
47286                                 [
47287                                     -98.693325,
47288                                     26.270542
47289                                 ],
47290                                 [
47291                                     -98.702239,
47292                                     26.271628
47293                                 ],
47294                                 [
47295                                     -98.704255,
47296                                     26.27664
47297                                 ],
47298                                 [
47299                                     -98.691465,
47300                                     26.290231
47301                                 ],
47302                                 [
47303                                     -98.701413,
47304                                     26.299119
47305                                 ],
47306                                 [
47307                                     -98.713169,
47308                                     26.303357
47309                                 ],
47310                                 [
47311                                     -98.726217,
47312                                     26.30439
47313                                 ],
47314                                 [
47315                                     -98.739911,
47316                                     26.303253
47317                                 ],
47318                                 [
47319                                     -98.735932,
47320                                     26.320048
47321                                 ],
47322                                 [
47323                                     -98.746397,
47324                                     26.332141
47325                                 ],
47326                                 [
47327                                     -98.780839,
47328                                     26.351674
47329                                 ],
47330                                 [
47331                                     -98.795851,
47332                                     26.368314
47333                                 ],
47334                                 [
47335                                     -98.801329,
47336                                     26.372138
47337                                 ],
47338                                 [
47339                                     -98.810295,
47340                                     26.372448
47341                                 ],
47342                                 [
47343                                     -98.817323,
47344                                     26.368521
47345                                 ],
47346                                 [
47347                                     -98.825023,
47348                                     26.366454
47349                                 ],
47350                                 [
47351                                     -98.836081,
47352                                     26.372138
47353                                 ],
47354                                 [
47355                                     -98.842334,
47356                                     26.365834
47357                                 ],
47358                                 [
47359                                     -98.850835,
47360                                     26.364077
47361                                 ],
47362                                 [
47363                                     -98.860524,
47364                                     26.366299
47365                                 ],
47366                                 [
47367                                     -98.870214,
47368                                     26.372138
47369                                 ],
47370                                 [
47371                                     -98.893029,
47372                                     26.367849
47373                                 ],
47374                                 [
47375                                     -98.9299,
47376                                     26.39224
47377                                 ],
47378                                 [
47379                                     -98.945377,
47380                                     26.378288
47381                                 ],
47382                                 [
47383                                     -98.954136,
47384                                     26.393946
47385                                 ],
47386                                 [
47387                                     -98.962844,
47388                                     26.399527
47389                                 ],
47390                                 [
47391                                     -98.986951,
47392                                     26.400095
47393                                 ],
47394                                 [
47395                                     -99.004056,
47396                                     26.393842
47397                                 ],
47398                                 [
47399                                     -99.010515,
47400                                     26.392602
47401                                 ],
47402                                 [
47403                                     -99.016432,
47404                                     26.394462
47405                                 ],
47406                                 [
47407                                     -99.022995,
47408                                     26.403351
47409                                 ],
47410                                 [
47411                                     -99.027878,
47412                                     26.406245
47413                                 ],
47414                                 [
47415                                     -99.047645,
47416                                     26.406968
47417                                 ],
47418                                 [
47419                                     -99.066351,
47420                                     26.404746
47421                                 ],
47422                                 [
47423                                     -99.085498,
47424                                     26.40764
47425                                 ],
47426                                 [
47427                                     -99.106427,
47428                                     26.423039
47429                                 ],
47430                                 [
47431                                     -99.108907,
47432                                     26.434253
47433                                 ],
47434                                 [
47435                                     -99.102525,
47436                                     26.446966
47437                                 ],
47438                                 [
47439                                     -99.09374,
47440                                     26.459781
47441                                 ],
47442                                 [
47443                                     -99.089373,
47444                                     26.47115
47445                                 ],
47446                                 [
47447                                     -99.091492,
47448                                     26.484018
47449                                 ],
47450                                 [
47451                                     -99.10299,
47452                                     26.512078
47453                                 ],
47454                                 [
47455                                     -99.115108,
47456                                     26.525617
47457                                 ],
47458                                 [
47459                                     -99.140946,
47460                                     26.531405
47461                                 ],
47462                                 [
47463                                     -99.164873,
47464                                     26.540448
47465                                 ],
47466                                 [
47467                                     -99.17128,
47468                                     26.563961
47469                                 ],
47470                                 [
47471                                     -99.171548,
47472                                     26.56583
47473                                 ],
47474                                 [
47475                                     -99.213953,
47476                                     26.568537
47477                                 ],
47478                                 [
47479                                     -99.242801,
47480                                     26.579723
47481                                 ],
47482                                 [
47483                                     -99.254575,
47484                                     26.6018
47485                                 ],
47486                                 [
47487                                     -99.258844,
47488                                     26.614752
47489                                 ],
47490                                 [
47491                                     -99.277683,
47492                                     26.638007
47493                                 ],
47494                                 [
47495                                     -99.281951,
47496                                     26.649781
47497                                 ],
47498                                 [
47499                                     -99.277389,
47500                                     26.657729
47501                                 ],
47502                                 [
47503                                     -99.26635,
47504                                     26.653314
47505                                 ],
47506                                 [
47507                                     -99.252662,
47508                                     26.644483
47509                                 ],
47510                                 [
47511                                     -99.240299,
47512                                     26.639184
47513                                 ],
47514                                 [
47515                                     -99.244861,
47516                                     26.652431
47517                                 ],
47518                                 [
47519                                     -99.240299,
47520                                     26.697763
47521                                 ],
47522                                 [
47523                                     -99.242507,
47524                                     26.713658
47525                                 ],
47526                                 [
47527                                     -99.252368,
47528                                     26.743683
47529                                 ],
47530                                 [
47531                                     -99.254575,
47532                                     26.75899
47533                                 ],
47534                                 [
47535                                     -99.252368,
47536                                     26.799024
47537                                 ],
47538                                 [
47539                                     -99.254575,
47540                                     26.810504
47541                                 ],
47542                                 [
47543                                     -99.257666,
47544                                     26.813153
47545                                 ],
47546                                 [
47547                                     -99.262229,
47548                                     26.814036
47549                                 ],
47550                                 [
47551                                     -99.266497,
47552                                     26.817863
47553                                 ],
47554                                 [
47555                                     -99.268263,
47556                                     26.827872
47557                                 ],
47558                                 [
47559                                     -99.271649,
47560                                     26.832876
47561                                 ],
47562                                 [
47563                                     -99.289458,
47564                                     26.84465
47565                                 ],
47566                                 [
47567                                     -99.308444,
47568                                     26.830521
47569                                 ],
47570                                 [
47571                                     -99.316539,
47572                                     26.822279
47573                                 ],
47574                                 [
47575                                     -99.323457,
47576                                     26.810504
47577                                 ],
47578                                 [
47579                                     -99.328166,
47580                                     26.797258
47581                                 ],
47582                                 [
47583                                     -99.329197,
47584                                     26.789016
47585                                 ],
47586                                 [
47587                                     -99.331699,
47588                                     26.78254
47589                                 ],
47590                                 [
47591                                     -99.340383,
47592                                     26.77312
47593                                 ],
47594                                 [
47595                                     -99.366728,
47596                                     26.761345
47597                                 ],
47598                                 [
47599                                     -99.380269,
47600                                     26.777241
47601                                 ],
47602                                 [
47603                                     -99.391896,
47604                                     26.796963
47605                                 ],
47606                                 [
47607                                     -99.412207,
47608                                     26.796963
47609                                 ],
47610                                 [
47611                                     -99.410883,
47612                                     26.808149
47613                                 ],
47614                                 [
47615                                     -99.405437,
47616                                     26.818452
47617                                 ],
47618                                 [
47619                                     -99.396606,
47620                                     26.824928
47621                                 ],
47622                                 [
47623                                     -99.384979,
47624                                     26.824928
47625                                 ],
47626                                 [
47627                                     -99.377178,
47628                                     26.816686
47629                                 ],
47630                                 [
47631                                     -99.374823,
47632                                     26.804028
47633                                 ],
47634                                 [
47635                                     -99.374234,
47636                                     26.791076
47637                                 ],
47638                                 [
47639                                     -99.371291,
47640                                     26.783128
47641                                 ],
47642                                 [
47643                                     -99.360694,
47644                                     26.780479
47645                                 ],
47646                                 [
47647                                     -99.359369,
47648                                     26.790487
47649                                 ],
47650                                 [
47651                                     -99.36452,
47652                                     26.810504
47653                                 ],
47654                                 [
47655                                     -99.357897,
47656                                     26.822279
47657                                 ],
47658                                 [
47659                                     -99.351274,
47660                                     26.83111
47661                                 ],
47662                                 [
47663                                     -99.346123,
47664                                     26.840824
47665                                 ],
47666                                 [
47667                                     -99.344062,
47668                                     26.855247
47669                                 ],
47670                                 [
47671                                     -99.348772,
47672                                     26.899696
47673                                 ],
47674                                 [
47675                                     -99.355101,
47676                                     26.920302
47677                                 ],
47678                                 [
47679                                     -99.36452,
47680                                     26.934726
47681                                 ],
47682                                 [
47683                                     -99.403377,
47684                                     26.952093
47685                                 ],
47686                                 [
47687                                     -99.413974,
47688                                     26.964162
47689                                 ],
47690                                 [
47691                                     -99.401758,
47692                                     26.985651
47693                                 ],
47694                                 [
47695                                     -99.399991,
47696                                     26.999192
47697                                 ],
47698                                 [
47699                                     -99.418831,
47700                                     27.007728
47701                                 ],
47702                                 [
47703                                     -99.441938,
47704                                     27.013615
47705                                 ],
47706                                 [
47707                                     -99.453271,
47708                                     27.019797
47709                                 ],
47710                                 [
47711                                     -99.455332,
47712                                     27.025979
47713                                 ],
47714                                 [
47715                                     -99.464751,
47716                                     27.039225
47717                                 ],
47718                                 [
47719                                     -99.466959,
47720                                     27.047467
47721                                 ],
47722                                 [
47723                                     -99.462544,
47724                                     27.057181
47725                                 ],
47726                                 [
47727                                     -99.461635,
47728                                     27.056839
47729                                 ],
47730                                 [
47731                                     -99.461728,
47732                                     27.056954
47733                                 ],
47734                                 [
47735                                     -99.442039,
47736                                     27.089614
47737                                 ],
47738                                 [
47739                                     -99.439404,
47740                                     27.098347
47741                                 ],
47742                                 [
47743                                     -99.441419,
47744                                     27.107494
47745                                 ],
47746                                 [
47747                                     -99.445734,
47748                                     27.114728
47749                                 ],
47750                                 [
47751                                     -99.450178,
47752                                     27.120465
47753                                 ],
47754                                 [
47755                                     -99.452452,
47756                                     27.125012
47757                                 ],
47758                                 [
47759                                     -99.450333,
47760                                     27.145166
47761                                 ],
47762                                 [
47763                                     -99.435786,
47764                                     27.188419
47765                                 ],
47766                                 [
47767                                     -99.431988,
47768                                     27.207591
47769                                 ],
47770                                 [
47771                                     -99.434029,
47772                                     27.22697
47773                                 ],
47774                                 [
47775                                     -99.440902,
47776                                     27.244798
47777                                 ],
47778                                 [
47779                                     -99.451832,
47780                                     27.26118
47781                                 ],
47782                                 [
47783                                     -99.46612,
47784                                     27.276527
47785                                 ],
47786                                 [
47787                                     -99.468963,
47788                                     27.278233
47789                                 ],
47790                                 [
47791                                     -99.480409,
47792                                     27.283297
47793                                 ],
47794                                 [
47795                                     -99.482941,
47796                                     27.286708
47797                                 ],
47798                                 [
47799                                     -99.484879,
47800                                     27.294821
47801                                 ],
47802                                 [
47803                                     -99.486584,
47804                                     27.297611
47805                                 ],
47806                                 [
47807                                     -99.493199,
47808                                     27.30128
47809                                 ],
47810                                 [
47811                                     -99.521362,
47812                                     27.311254
47813                                 ],
47814                                 [
47815                                     -99.5148,
47816                                     27.321796
47817                                 ],
47818                                 [
47819                                     -99.497591,
47820                                     27.338798
47821                                 ],
47822                                 [
47823                                     -99.494026,
47824                                     27.348203
47825                                 ],
47826                                 [
47827                                     -99.492889,
47828                                     27.358848
47829                                 ],
47830                                 [
47831                                     -99.487721,
47832                                     27.37187
47833                                 ],
47834                                 [
47835                                     -99.484621,
47836                                     27.391766
47837                                 ],
47838                                 [
47839                                     -99.475706,
47840                                     27.414762
47841                                 ],
47842                                 [
47843                                     -99.472916,
47844                                     27.426647
47845                                 ],
47846                                 [
47847                                     -99.473639,
47848                                     27.463803
47849                                 ],
47850                                 [
47851                                     -99.472916,
47852                                     27.468299
47853                                 ],
47854                                 [
47855                                     -99.47643,
47856                                     27.48251
47857                                 ],
47858                                 [
47859                                     -99.480409,
47860                                     27.490778
47861                                 ],
47862                                 [
47863                                     -99.48829,
47864                                     27.494654
47865                                 ],
47866                                 [
47867                                     -99.503689,
47868                                     27.495584
47869                                 ],
47870                                 [
47871                                     -99.509503,
47872                                     27.500028
47873                                 ],
47874                                 [
47875                                     -99.510071,
47876                                     27.510518
47877                                 ],
47878                                 [
47879                                     -99.507074,
47880                                     27.533437
47881                                 ],
47882                                 [
47883                                     -99.507203,
47884                                     27.57377
47885                                 ],
47886                                 [
47887                                     -99.515006,
47888                                     27.588601
47889                                 ],
47890                                 [
47891                                     -99.535031,
47892                                     27.604828
47893                                 ],
47894                                 [
47895                                     -99.55503,
47896                                     27.613509
47897                                 ],
47898                                 [
47899                                     -99.572264,
47900                                     27.61847
47901                                 ],
47902                                 [
47903                                     -99.578232,
47904                                     27.622811
47905                                 ],
47906                                 [
47907                                     -99.590247,
47908                                     27.642061
47909                                 ],
47910                                 [
47911                                     -99.600169,
47912                                     27.646427
47913                                 ],
47914                                 [
47915                                     -99.612442,
47916                                     27.643637
47917                                 ],
47918                                 [
47919                                     -99.633526,
47920                                     27.633069
47921                                 ],
47922                                 [
47923                                     -99.644869,
47924                                     27.632733
47925                                 ],
47926                                 [
47927                                     -99.648642,
47928                                     27.636919
47929                                 ],
47930                                 [
47931                                     -99.658693,
47932                                     27.654024
47933                                 ],
47934                                 [
47935                                     -99.664739,
47936                                     27.659398
47937                                 ],
47938                                 [
47939                                     -99.70037,
47940                                     27.659191
47941                                 ],
47942                                 [
47943                                     -99.705692,
47944                                     27.66317
47945                                 ],
47946                                 [
47947                                     -99.710674,
47948                                     27.670116
47949                                 ],
47950                                 [
47951                                     -99.723056,
47952                                     27.687381
47953                                 ],
47954                                 [
47955                                     -99.730652,
47956                                     27.691825
47957                                 ],
47958                                 [
47959                                     -99.734037,
47960                                     27.702031
47961                                 ],
47962                                 [
47963                                     -99.736311,
47964                                     27.713607
47965                                 ],
47966                                 [
47967                                     -99.740445,
47968                                     27.722159
47969                                 ],
47970                                 [
47971                                     -99.747344,
47972                                     27.726009
47973                                 ],
47974                                 [
47975                                     -99.765198,
47976                                     27.731177
47977                                 ],
47978                                 [
47979                                     -99.774577,
47980                                     27.735828
47981                                 ],
47982                                 [
47983                                     -99.78685,
47984                                     27.748488
47985                                 ],
47986                                 [
47987                                     -99.795428,
47988                                     27.761924
47989                                 ],
47990                                 [
47991                                     -99.806963,
47992                                     27.771423
47993                                 ],
47994                                 [
47995                                     -99.808167,
47996                                     27.772414
47997                                 ],
47998                                 [
47999                                     -99.83292,
48000                                     27.776755
48001                                 ],
48002                                 [
48003                                     -99.832971,
48004                                     27.782181
48005                                 ],
48006                                 [
48007                                     -99.844779,
48008                                     27.793576
48009                                 ],
48010                                 [
48011                                     -99.858241,
48012                                     27.803524
48013                                 ],
48014                                 [
48015                                     -99.863357,
48016                                     27.804661
48017                                 ],
48018                                 [
48019                                     -99.864727,
48020                                     27.814324
48021                                 ],
48022                                 [
48023                                     -99.861858,
48024                                     27.83608
48025                                 ],
48026                                 [
48027                                     -99.863357,
48028                                     27.845666
48029                                 ],
48030                                 [
48031                                     -99.870928,
48032                                     27.854477
48033                                 ],
48034                                 [
48035                                     -99.880204,
48036                                     27.859231
48037                                 ],
48038                                 [
48039                                     -99.888007,
48040                                     27.864812
48041                                 ],
48042                                 [
48043                                     -99.891288,
48044                                     27.876026
48045                                 ],
48046                                 [
48047                                     -99.882684,
48048                                     27.89158
48049                                 ],
48050                                 [
48051                                     -99.878808,
48052                                     27.901838
48053                                 ],
48054                                 [
48055                                     -99.88134,
48056                                     27.906463
48057                                 ],
48058                                 [
48059                                     -99.896766,
48060                                     27.912923
48061                                 ],
48062                                 [
48063                                     -99.914336,
48064                                     27.928245
48065                                 ],
48066                                 [
48067                                     -99.929916,
48068                                     27.946331
48069                                 ],
48070                                 [
48071                                     -99.939683,
48072                                     27.961085
48073                                 ],
48074                                 [
48075                                     -99.928289,
48076                                     27.975761
48077                                 ],
48078                                 [
48079                                     -99.940717,
48080                                     27.983254
48081                                 ],
48082                                 [
48083                                     -99.961852,
48084                                     27.987492
48085                                 ],
48086                                 [
48087                                     -99.976606,
48088                                     27.992453
48089                                 ],
48090                                 [
48091                                     -99.991127,
48092                                     28.007801
48093                                 ],
48094                                 [
48095                                     -100.000584,
48096                                     28.02041
48097                                 ],
48098                                 [
48099                                     -100.007457,
48100                                     28.033561
48101                                 ],
48102                                 [
48103                                     -100.014123,
48104                                     28.050459
48105                                 ],
48106                                 [
48107                                     -100.013503,
48108                                     28.056971
48109                                 ],
48110                                 [
48111                                     -100.010506,
48112                                     28.063611
48113                                 ],
48114                                 [
48115                                     -100.010196,
48116                                     28.068882
48117                                 ],
48118                                 [
48119                                     -100.017585,
48120                                     28.070949
48121                                 ],
48122                                 [
48123                                     -100.031538,
48124                                     28.081801
48125                                 ],
48126                                 [
48127                                     -100.045077,
48128                                     28.095289
48129                                 ],
48130                                 [
48131                                     -100.048023,
48132                                     28.102523
48133                                 ],
48134                                 [
48135                                     -100.048901,
48136                                     28.115959
48137                                 ],
48138                                 [
48139                                     -100.056498,
48140                                     28.137922
48141                                 ],
48142                                 [
48143                                     -100.074895,
48144                                     28.154407
48145                                 ],
48146                                 [
48147                                     -100.172873,
48148                                     28.198538
48149                                 ],
48150                                 [
48151                                     -100.189203,
48152                                     28.201329
48153                                 ],
48154                                 [
48155                                     -100.197626,
48156                                     28.207168
48157                                 ],
48158                                 [
48159                                     -100.201192,
48160                                     28.220346
48161                                 ],
48162                                 [
48163                                     -100.202949,
48164                                     28.234428
48165                                 ],
48166                                 [
48167                                     -100.205946,
48168                                     28.242877
48169                                 ],
48170                                 [
48171                                     -100.212819,
48172                                     28.245073
48173                                 ],
48174                                 [
48175                                     -100.240724,
48176                                     28.249698
48177                                 ],
48178                                 [
48179                                     -100.257932,
48180                                     28.260524
48181                                 ],
48182                                 [
48183                                     -100.275089,
48184                                     28.277242
48185                                 ],
48186                                 [
48187                                     -100.284339,
48188                                     28.296517
48189                                 ],
48190                                 [
48191                                     -100.277931,
48192                                     28.314888
48193                                 ],
48194                                 [
48195                                     -100.278551,
48196                                     28.331088
48197                                 ],
48198                                 [
48199                                     -100.293899,
48200                                     28.353413
48201                                 ],
48202                                 [
48203                                     -100.322631,
48204                                     28.386899
48205                                 ],
48206                                 [
48207                                     -100.331675,
48208                                     28.422013
48209                                 ],
48210                                 [
48211                                     -100.336326,
48212                                     28.458574
48213                                 ],
48214                                 [
48215                                     -100.340201,
48216                                     28.464259
48217                                 ],
48218                                 [
48219                                     -100.348315,
48220                                     28.470253
48221                                 ],
48222                                 [
48223                                     -100.355549,
48224                                     28.478185
48225                                 ],
48226                                 [
48227                                     -100.35679,
48228                                     28.489322
48229                                 ],
48230                                 [
48231                                     -100.351622,
48232                                     28.496711
48233                                 ],
48234                                 [
48235                                     -100.322631,
48236                                     28.510406
48237                                 ],
48238                                 [
48239                                     -100.364024,
48240                                     28.524797
48241                                 ],
48242                                 [
48243                                     -100.38423,
48244                                     28.537174
48245                                 ],
48246                                 [
48247                                     -100.397769,
48248                                     28.557586
48249                                 ],
48250                                 [
48251                                     -100.398751,
48252                                     28.568645
48253                                 ],
48254                                 [
48255                                     -100.397097,
48256                                     28.592726
48257                                 ],
48258                                 [
48259                                     -100.401438,
48260                                     28.60226
48261                                 ],
48262                                 [
48263                                     -100.411463,
48264                                     28.609314
48265                                 ],
48266                                 [
48267                                     -100.434821,
48268                                     28.619133
48269                                 ],
48270                                 [
48271                                     -100.44619,
48272                                     28.626497
48273                                 ],
48274                                 [
48275                                     -100.444898,
48276                                     28.643782
48277                                 ],
48278                                 [
48279                                     -100.481381,
48280                                     28.686054
48281                                 ],
48282                                 [
48283                                     -100.493939,
48284                                     28.708378
48285                                 ],
48286                                 [
48287                                     -100.519054,
48288                                     28.804961
48289                                 ],
48290                                 [
48291                                     -100.524996,
48292                                     28.814831
48293                                 ],
48294                                 [
48295                                     -100.529285,
48296                                     28.819947
48297                                 ],
48298                                 [
48299                                     -100.534453,
48300                                     28.830231
48301                                 ],
48302                                 [
48303                                     -100.538639,
48304                                     28.835631
48305                                 ],
48306                                 [
48307                                     -100.54515,
48308                                     28.83899
48309                                 ],
48310                                 [
48311                                     -100.559671,
48312                                     28.839378
48313                                 ],
48314                                 [
48315                                     -100.566234,
48316                                     28.842504
48317                                 ],
48318                                 [
48319                                     -100.569696,
48320                                     28.84961
48321                                 ],
48322                                 [
48323                                     -100.56334,
48324                                     28.86209
48325                                 ],
48326                                 [
48327                                     -100.566234,
48328                                     28.869789
48329                                 ],
48330                                 [
48331                                     -100.571763,
48332                                     28.8732
48333                                 ],
48334                                 [
48335                                     -100.586543,
48336                                     28.879789
48337                                 ],
48338                                 [
48339                                     -100.58954,
48340                                     28.883458
48341                                 ],
48342                                 [
48343                                     -100.594966,
48344                                     28.899322
48345                                 ],
48346                                 [
48347                                     -100.606955,
48348                                     28.910123
48349                                 ],
48350                                 [
48351                                     -100.618841,
48352                                     28.917926
48353                                 ],
48354                                 [
48355                                     -100.624318,
48356                                     28.924721
48357                                 ],
48358                                 [
48359                                     -100.624783,
48360                                     28.93777
48361                                 ],
48362                                 [
48363                                     -100.626696,
48364                                     28.948338
48365                                 ],
48366                                 [
48367                                     -100.630778,
48368                                     28.956683
48369                                 ],
48370                                 [
48371                                     -100.637909,
48372                                     28.962884
48373                                 ],
48374                                 [
48375                                     -100.628918,
48376                                     28.98433
48377                                 ],
48378                                 [
48379                                     -100.632793,
48380                                     29.005156
48381                                 ],
48382                                 [
48383                                     -100.652224,
48384                                     29.044817
48385                                 ],
48386                                 [
48387                                     -100.660854,
48388                                     29.102669
48389                                 ],
48390                                 [
48391                                     -100.668967,
48392                                     29.116208
48393                                 ],
48394                                 [
48395                                     -100.678165,
48396                                     29.119412
48397                                 ],
48398                                 [
48399                                     -100.690826,
48400                                     29.121014
48401                                 ],
48402                                 [
48403                                     -100.70204,
48404                                     29.12365
48405                                 ],
48406                                 [
48407                                     -100.706846,
48408                                     29.130187
48409                                 ],
48410                                 [
48411                                     -100.70974,
48412                                     29.135561
48413                                 ],
48414                                 [
48415                                     -100.762501,
48416                                     29.173776
48417                                 ],
48418                                 [
48419                                     -100.770098,
48420                                     29.187289
48421                                 ],
48422                                 [
48423                                     -100.762088,
48424                                     29.208658
48425                                 ],
48426                                 [
48427                                     -100.783172,
48428                                     29.243074
48429                                 ],
48430                                 [
48431                                     -100.796143,
48432                                     29.257673
48433                                 ],
48434                                 [
48435                                     -100.81609,
48436                                     29.270773
48437                                 ],
48438                                 [
48439                                     -100.86389,
48440                                     29.290616
48441                                 ],
48442                                 [
48443                                     -100.871797,
48444                                     29.296456
48445                                 ],
48446                                 [
48447                                     -100.891227,
48448                                     29.318547
48449                                 ],
48450                                 [
48451                                     -100.91474,
48452                                     29.337048
48453                                 ],
48454                                 [
48455                                     -100.987397,
48456                                     29.366322
48457                                 ],
48458                                 [
48459                                     -100.998301,
48460                                     29.372472
48461                                 ],
48462                                 [
48463                                     -101.008068,
48464                                     29.380585
48465                                 ],
48466                                 [
48467                                     -101.016232,
48468                                     29.390068
48469                                 ],
48470                                 [
48471                                     -101.022175,
48472                                     29.40048
48473                                 ],
48474                                 [
48475                                     -101.025948,
48476                                     29.414356
48477                                 ],
48478                                 [
48479                                     -101.029617,
48480                                     29.442984
48481                                 ],
48482                                 [
48483                                     -101.037782,
48484                                     29.460063
48485                                 ],
48486                                 [
48487                                     -101.039026,
48488                                     29.460452
48489                                 ],
48490                                 [
48491                                     -101.040188,
48492                                     29.457132
48493                                 ],
48494                                 [
48495                                     -101.045487,
48496                                     29.451245
48497                                 ],
48498                                 [
48499                                     -101.060205,
48500                                     29.449184
48501                                 ],
48502                                 [
48503                                     -101.067711,
48504                                     29.45095
48505                                 ],
48506                                 [
48507                                     -101.076101,
48508                                     29.453894
48509                                 ],
48510                                 [
48511                                     -101.085962,
48512                                     29.454483
48513                                 ],
48514                                 [
48515                                     -101.098031,
48516                                     29.449184
48517                                 ],
48518                                 [
48519                                     -101.113043,
48520                                     29.466552
48521                                 ],
48522                                 [
48523                                     -101.142774,
48524                                     29.475383
48525                                 ],
48526                                 [
48527                                     -101.174124,
48528                                     29.475971
48529                                 ],
48530                                 [
48531                                     -101.193699,
48532                                     29.469495
48533                                 ],
48534                                 [
48535                                     -101.198703,
48536                                     29.473911
48537                                 ],
48538                                 [
48539                                     -101.198851,
48540                                     29.476854
48541                                 ],
48542                                 [
48543                                     -101.184132,
48544                                     29.497754
48545                                 ],
48546                                 [
48547                                     -101.184868,
48548                                     29.512767
48549                                 ],
48550                                 [
48551                                     -101.195171,
48552                                     29.521892
48553                                 ],
48554                                 [
48555                                     -101.214157,
48556                                     29.518065
48557                                 ],
48558                                 [
48559                                     -101.245213,
48560                                     29.493044
48561                                 ],
48562                                 [
48563                                     -101.265818,
48564                                     29.487157
48565                                 ],
48566                                 [
48567                                     -101.290545,
48568                                     29.49746
48569                                 ],
48570                                 [
48571                                     -101.297315,
48572                                     29.503936
48573                                 ],
48574                                 [
48575                                     -101.300995,
48576                                     29.512767
48577                                 ],
48578                                 [
48579                                     -101.294372,
48580                                     29.520715
48581                                 ],
48582                                 [
48583                                     -101.273177,
48584                                     29.524247
48585                                 ],
48586                                 [
48587                                     -101.259195,
48588                                     29.533372
48589                                 ],
48590                                 [
48591                                     -101.243888,
48592                                     29.554861
48593                                 ],
48594                                 [
48595                                     -101.231966,
48596                                     29.580176
48597                                 ],
48598                                 [
48599                                     -101.227845,
48600                                     29.599899
48601                                 ],
48602                                 [
48603                                     -101.239178,
48604                                     29.616677
48605                                 ],
48606                                 [
48607                                     -101.26052,
48608                                     29.613439
48609                                 ],
48610                                 [
48611                                     -101.281272,
48612                                     29.597249
48613                                 ],
48614                                 [
48615                                     -101.290545,
48616                                     29.575761
48617                                 ],
48618                                 [
48619                                     -101.295255,
48620                                     29.570168
48621                                 ],
48622                                 [
48623                                     -101.306146,
48624                                     29.574583
48625                                 ],
48626                                 [
48627                                     -101.317626,
48628                                     29.584003
48629                                 ],
48630                                 [
48631                                     -101.323955,
48632                                     29.592539
48633                                 ],
48634                                 [
48635                                     -101.323661,
48636                                     29.603137
48637                                 ],
48638                                 [
48639                                     -101.318804,
48640                                     29.616383
48641                                 ],
48642                                 [
48643                                     -101.311445,
48644                                     29.628158
48645                                 ],
48646                                 [
48647                                     -101.303497,
48648                                     29.634045
48649                                 ],
48650                                 [
48651                                     -101.303669,
48652                                     29.631411
48653                                 ],
48654                                 [
48655                                     -101.302727,
48656                                     29.633851
48657                                 ],
48658                                 [
48659                                     -101.301073,
48660                                     29.649509
48661                                 ],
48662                                 [
48663                                     -101.30978,
48664                                     29.654548
48665                                 ],
48666                                 [
48667                                     -101.336239,
48668                                     29.654315
48669                                 ],
48670                                 [
48671                                     -101.349029,
48672                                     29.660103
48673                                 ],
48674                                 [
48675                                     -101.357684,
48676                                     29.667441
48677                                 ],
48678                                 [
48679                                     -101.364351,
48680                                     29.676665
48681                                 ],
48682                                 [
48683                                     -101.376624,
48684                                     29.700643
48685                                 ],
48686                                 [
48687                                     -101.383368,
48688                                     29.718497
48689                                 ],
48690                                 [
48691                                     -101.39962,
48692                                     29.740718
48693                                 ],
48694                                 [
48695                                     -101.406545,
48696                                     29.752888
48697                                 ],
48698                                 [
48699                                     -101.409309,
48700                                     29.765781
48701                                 ],
48702                                 [
48703                                     -101.405098,
48704                                     29.778442
48705                                 ],
48706                                 [
48707                                     -101.414012,
48708                                     29.774411
48709                                 ],
48710                                 [
48711                                     -101.424218,
48712                                     29.771414
48713                                 ],
48714                                 [
48715                                     -101.435096,
48716                                     29.770122
48717                                 ],
48718                                 [
48719                                     -101.446103,
48720                                     29.771052
48721                                 ],
48722                                 [
48723                                     -101.455689,
48724                                     29.77591
48725                                 ],
48726                                 [
48727                                     -101.462433,
48728                                     29.788932
48729                                 ],
48730                                 [
48731                                     -101.470908,
48732                                     29.791516
48733                                 ],
48734                                 [
48735                                     -101.490286,
48736                                     29.785547
48737                                 ],
48738                                 [
48739                                     -101.505763,
48740                                     29.773894
48741                                 ],
48742                                 [
48743                                     -101.521809,
48744                                     29.765936
48745                                 ],
48746                                 [
48747                                     -101.542893,
48748                                     29.771052
48749                                 ],
48750                                 [
48751                                     -101.539689,
48752                                     29.779191
48753                                 ],
48754                                 [
48755                                     -101.530516,
48756                                     29.796477
48757                                 ],
48758                                 [
48759                                     -101.528604,
48760                                     29.801438
48761                                 ],
48762                                 [
48763                                     -101.531912,
48764                                     29.811101
48765                                 ],
48766                                 [
48767                                     -101.539172,
48768                                     29.817974
48769                                 ],
48770                                 [
48771                                     -101.546458,
48772                                     29.820145
48773                                 ],
48774                                 [
48775                                     -101.549766,
48776                                     29.815701
48777                                 ],
48778                                 [
48779                                     -101.553977,
48780                                     29.796684
48781                                 ],
48782                                 [
48783                                     -101.564907,
48784                                     29.786478
48785                                 ],
48786                                 [
48787                                     -101.580281,
48788                                     29.781568
48789                                 ],
48790                                 [
48791                                     -101.632216,
48792                                     29.775651
48793                                 ],
48794                                 [
48795                                     -101.794531,
48796                                     29.795857
48797                                 ],
48798                                 [
48799                                     -101.80298,
48800                                     29.801438
48801                                 ],
48802                                 [
48803                                     -101.805978,
48804                                     29.811928
48805                                 ],
48806                                 [
48807                                     -101.812695,
48808                                     29.812032
48809                                 ],
48810                                 [
48811                                     -101.82409,
48812                                     29.805184
48813                                 ],
48814                                 [
48815                                     -101.857602,
48816                                     29.805184
48817                                 ],
48818                                 [
48819                                     -101.877524,
48820                                     29.810843
48821                                 ],
48822                                 [
48823                                     -101.88742,
48824                                     29.81229
48825                                 ],
48826                                 [
48827                                     -101.895455,
48828                                     29.808621
48829                                 ],
48830                                 [
48831                                     -101.90238,
48832                                     29.803247
48833                                 ],
48834                                 [
48835                                     -101.910881,
48836                                     29.799888
48837                                 ],
48838                                 [
48839                                     -101.920157,
48840                                     29.798182
48841                                 ],
48842                                 [
48843                                     -101.929613,
48844                                     29.797717
48845                                 ],
48846                                 [
48847                                     -101.942662,
48848                                     29.803608
48849                                 ],
48850                                 [
48851                                     -101.957054,
48852                                     29.814047
48853                                 ],
48854                                 [
48855                                     -101.972246,
48856                                     29.818181
48857                                 ],
48858                                 [
48859                                     -101.98793,
48860                                     29.805184
48861                                 ],
48862                                 [
48863                                     -102.014595,
48864                                     29.810998
48865                                 ],
48866                                 [
48867                                     -102.109344,
48868                                     29.80211
48869                                 ],
48870                                 [
48871                                     -102.145647,
48872                                     29.815701
48873                                 ],
48874                                 [
48875                                     -102.157248,
48876                                     29.824537
48877                                 ],
48878                                 [
48879                                     -102.203679,
48880                                     29.846138
48881                                 ],
48882                                 [
48883                                     -102.239775,
48884                                     29.849135
48885                                 ],
48886                                 [
48887                                     -102.253444,
48888                                     29.855285
48889                                 ],
48890                                 [
48891                                     -102.258276,
48892                                     29.873475
48893                                 ],
48894                                 [
48895                                     -102.276181,
48896                                     29.869547
48897                                 ],
48898                                 [
48899                                     -102.289023,
48900                                     29.878126
48901                                 ],
48902                                 [
48903                                     -102.302175,
48904                                     29.889391
48905                                 ],
48906                                 [
48907                                     -102.321011,
48908                                     29.893939
48909                                 ],
48910                                 [
48911                                     -102.330235,
48912                                     29.888926
48913                                 ],
48914                                 [
48915                                     -102.339769,
48916                                     29.870633
48917                                 ],
48918                                 [
48919                                     -102.351061,
48920                                     29.866602
48921                                 ],
48922                                 [
48923                                     -102.36323,
48924                                     29.864276
48925                                 ],
48926                                 [
48927                                     -102.370723,
48928                                     29.857765
48929                                 ],
48930                                 [
48931                                     -102.374547,
48932                                     29.848102
48933                                 ],
48934                                 [
48935                                     -102.376589,
48936                                     29.821488
48937                                 ],
48938                                 [
48939                                     -102.380051,
48940                                     29.811386
48941                                 ],
48942                                 [
48943                                     -102.404132,
48944                                     29.780793
48945                                 ],
48946                                 [
48947                                     -102.406096,
48948                                     29.777279
48949                                 ],
48950                                 [
48951                                     -102.515288,
48952                                     29.784721
48953                                 ],
48954                                 [
48955                                     -102.523066,
48956                                     29.782318
48957                                 ],
48958                                 [
48959                                     -102.531127,
48960                                     29.769915
48961                                 ],
48962                                 [
48963                                     -102.54154,
48964                                     29.762474
48965                                 ],
48966                                 [
48967                                     -102.543349,
48968                                     29.760123
48969                                 ],
48970                                 [
48971                                     -102.546578,
48972                                     29.757875
48973                                 ],
48974                                 [
48975                                     -102.553141,
48976                                     29.756738
48977                                 ],
48978                                 [
48979                                     -102.558309,
48980                                     29.759089
48981                                 ],
48982                                 [
48983                                     -102.562882,
48984                                     29.769347
48985                                 ],
48986                                 [
48987                                     -102.566758,
48988                                     29.771052
48989                                 ],
48990                                 [
48991                                     -102.58531,
48992                                     29.764696
48993                                 ],
48994                                 [
48995                                     -102.621225,
48996                                     29.747281
48997                                 ],
48998                                 [
48999                                     -102.638743,
49000                                     29.743715
49001                                 ],
49002                                 [
49003                                     -102.676054,
49004                                     29.74449
49005                                 ],
49006                                 [
49007                                     -102.683469,
49008                                     29.743715
49009                                 ],
49010                                 [
49011                                     -102.69104,
49012                                     29.736817
49013                                 ],
49014                                 [
49015                                     -102.693624,
49016                                     29.729401
49017                                 ],
49018                                 [
49019                                     -102.694709,
49020                                     29.720616
49021                                 ],
49022                                 [
49023                                     -102.697758,
49024                                     29.709557
49025                                 ],
49026                                 [
49027                                     -102.726748,
49028                                     29.664495
49029                                 ],
49030                                 [
49031                                     -102.73127,
49032                                     29.650594
49033                                 ],
49034                                 [
49035                                     -102.735507,
49036                                     29.649509
49037                                 ],
49038                                 [
49039                                     -102.751656,
49040                                     29.622457
49041                                 ],
49042                                 [
49043                                     -102.75176,
49044                                     29.620157
49045                                 ],
49046                                 [
49047                                     -102.761346,
49048                                     29.603414
49049                                 ],
49050                                 [
49051                                     -102.767598,
49052                                     29.59729
49053                                 ],
49054                                 [
49055                                     -102.779665,
49056                                     29.592303
49057                                 ],
49058                                 [
49059                                     -102.774084,
49060                                     29.579617
49061                                 ],
49062                                 [
49063                                     -102.776461,
49064                                     29.575948
49065                                 ],
49066                                 [
49067                                     -102.785892,
49068                                     29.571814
49069                                 ],
49070                                 [
49071                                     -102.78075,
49072                                     29.558249
49073                                 ],
49074                                 [
49075                                     -102.786512,
49076                                     29.550497
49077                                 ],
49078                                 [
49079                                     -102.795478,
49080                                     29.54427
49081                                 ],
49082                                 [
49083                                     -102.827311,
49084                                     29.470502
49085                                 ],
49086                                 [
49087                                     -102.833951,
49088                                     29.461355
49089                                 ],
49090                                 [
49091                                     -102.839067,
49092                                     29.45195
49093                                 ],
49094                                 [
49095                                     -102.841134,
49096                                     29.438308
49097                                 ],
49098                                 [
49099                                     -102.838705,
49100                                     29.426939
49101                                 ],
49102                                 [
49103                                     -102.834984,
49104                                     29.415699
49105                                 ],
49106                                 [
49107                                     -102.835191,
49108                                     29.403839
49109                                 ],
49110                                 [
49111                                     -102.844545,
49112                                     29.390533
49113                                 ],
49114                                 [
49115                                     -102.845578,
49116                                     29.384719
49117                                 ],
49118                                 [
49119                                     -102.838033,
49120                                     29.370534
49121                                 ],
49122                                 [
49123                                     -102.837672,
49124                                     29.366322
49125                                 ],
49126                                 [
49127                                     -102.84656,
49128                                     29.361749
49129                                 ],
49130                                 [
49131                                     -102.853872,
49132                                     29.361
49133                                 ],
49134                                 [
49135                                     -102.859867,
49136                                     29.361155
49137                                 ],
49138                                 [
49139                                     -102.864957,
49140                                     29.359527
49141                                 ],
49142                                 [
49143                                     -102.876972,
49144                                     29.350871
49145                                 ],
49146                                 [
49147                                     -102.883069,
49148                                     29.343766
49149                                 ],
49150                                 [
49151                                     -102.885188,
49152                                     29.333379
49153                                 ],
49154                                 [
49155                                     -102.885498,
49156                                     29.314801
49157                                 ],
49158                                 [
49159                                     -102.899399,
49160                                     29.276095
49161                                 ],
49162                                 [
49163                                     -102.899709,
49164                                     29.2639
49165                                 ],
49166                                 [
49167                                     -102.892139,
49168                                     29.254391
49169                                 ],
49170                                 [
49171                                     -102.867954,
49172                                     29.240387
49173                                 ],
49174                                 [
49175                                     -102.858781,
49176                                     29.229147
49177                                 ],
49178                                 [
49179                                     -102.869866,
49180                                     29.224781
49181                                 ],
49182                                 [
49183                                     -102.896893,
49184                                     29.220285
49185                                 ],
49186                                 [
49187                                     -102.942265,
49188                                     29.190209
49189                                 ],
49190                                 [
49191                                     -102.947536,
49192                                     29.182018
49193                                 ],
49194                                 [
49195                                     -102.969757,
49196                                     29.192845
49197                                 ],
49198                                 [
49199                                     -102.988386,
49200                                     29.177135
49201                                 ],
49202                                 [
49203                                     -103.015826,
49204                                     29.126776
49205                                 ],
49206                                 [
49207                                     -103.024275,
49208                                     29.116157
49209                                 ],
49210                                 [
49211                                     -103.032621,
49212                                     29.110214
49213                                 ],
49214                                 [
49215                                     -103.072541,
49216                                     29.091404
49217                                 ],
49218                                 [
49219                                     -103.080758,
49220                                     29.085203
49221                                 ],
49222                                 [
49223                                     -103.085589,
49224                                     29.07572
49225                                 ],
49226                                 [
49227                                     -103.091532,
49228                                     29.057866
49229                                 ],
49230                                 [
49231                                     -103.095356,
49232                                     29.060294
49233                                 ],
49234                                 [
49235                                     -103.104684,
49236                                     29.057866
49237                                 ],
49238                                 [
49239                                     -103.109205,
49240                                     29.023372
49241                                 ],
49242                                 [
49243                                     -103.122771,
49244                                     28.996474
49245                                 ],
49246                                 [
49247                                     -103.147989,
49248                                     28.985105
49249                                 ],
49250                                 [
49251                                     -103.187108,
49252                                     28.990221
49253                                 ],
49254                                 [
49255                                     -103.241756,
49256                                     29.003502
49257                                 ],
49258                                 [
49259                                     -103.301545,
49260                                     29.002365
49261                                 ],
49262                                 [
49263                                     -103.316247,
49264                                     29.010065
49265                                 ],
49266                                 [
49267                                     -103.311514,
49268                                     29.026043
49269                                 ],
49270                                 [
49271                                     -103.309994,
49272                                     29.031175
49273                                 ],
49274                                 [
49275                                     -103.3248,
49276                                     29.026808
49277                                 ],
49278                                 [
49279                                     -103.330484,
49280                                     29.023733
49281                                 ],
49282                                 [
49283                                     -103.342602,
49284                                     29.041226
49285                                 ],
49286                                 [
49287                                     -103.351671,
49288                                     29.039417
49289                                 ],
49290                                 [
49291                                     -103.360534,
49292                                     29.029831
49293                                 ],
49294                                 [
49295                                     -103.372083,
49296                                     29.023733
49297                                 ],
49298                                 [
49299                                     -103.38663,
49300                                     29.028798
49301                                 ],
49302                                 [
49303                                     -103.414639,
49304                                     29.052414
49305                                 ],
49306                                 [
49307                                     -103.423605,
49308                                     29.057866
49309                                 ],
49310                                 [
49311                                     -103.435697,
49312                                     29.061121
49313                                 ],
49314                                 [
49315                                     -103.478537,
49316                                     29.08205
49317                                 ],
49318                                 [
49319                                     -103.529748,
49320                                     29.126776
49321                                 ],
49322                                 [
49323                                     -103.535588,
49324                                     29.135122
49325                                 ],
49326                                 [
49327                                     -103.538223,
49328                                     29.142408
49329                                 ],
49330                                 [
49331                                     -103.541711,
49332                                     29.148816
49333                                 ],
49334                                 [
49335                                     -103.550238,
49336                                     29.154656
49337                                 ],
49338                                 [
49339                                     -103.558015,
49340                                     29.156206
49341                                 ],
49342                                 [
49343                                     -103.58499,
49344                                     29.154656
49345                                 ],
49346                                 [
49347                                     -103.673125,
49348                                     29.173569
49349                                 ],
49350                                 [
49351                                     -103.702477,
49352                                     29.187858
49353                                 ],
49354                                 [
49355                                     -103.749476,
49356                                     29.222972
49357                                 ],
49358                                 [
49359                                     -103.759062,
49360                                     29.226848
49361                                 ],
49362                                 [
49363                                     -103.770767,
49364                                     29.229845
49365                                 ],
49366                                 [
49367                                     -103.777718,
49368                                     29.235297
49369                                 ],
49370                                 [
49371                                     -103.769424,
49372                                     29.257543
49373                                 ],
49374                                 [
49375                                     -103.774229,
49376                                     29.267517
49377                                 ],
49378                                 [
49379                                     -103.78366,
49380                                     29.274803
49381                                 ],
49382                                 [
49383                                     -103.794177,
49384                                     29.277594
49385                                 ],
49386                                 [
49387                                     -103.837038,
49388                                     29.279906
49389                                 ]
49390                             ]
49391                         ],
49392                         [
49393                             [
49394                                 [
49395                                     178.301106,
49396                                     52.056551
49397                                 ],
49398                                 [
49399                                     179.595462,
49400                                     52.142083
49401                                 ],
49402                                 [
49403                                     179.825447,
49404                                     51.992849
49405                                 ],
49406                                 [
49407                                     179.661729,
49408                                     51.485763
49409                                 ],
49410                                 [
49411                                     179.723231,
49412                                     51.459963
49413                                 ],
49414                                 [
49415                                     179.408066,
49416                                     51.209841
49417                                 ],
49418                                 [
49419                                     178.411463,
49420                                     51.523605
49421                                 ],
49422                                 [
49423                                     177.698335,
49424                                     51.877899
49425                                 ],
49426                                 [
49427                                     177.16784,
49428                                     51.581866
49429                                 ],
49430                                 [
49431                                     176.487008,
49432                                     52.175325
49433                                 ],
49434                                 [
49435                                     174.484678,
49436                                     52.08716
49437                                 ],
49438                                 [
49439                                     172.866263,
49440                                     52.207379
49441                                 ],
49442                                 [
49443                                     172.825506,
49444                                     52.716846
49445                                 ],
49446                                 [
49447                                     172.747012,
49448                                     52.654022
49449                                 ],
49450                                 [
49451                                     172.08261,
49452                                     52.952695
49453                                 ],
49454                                 [
49455                                     172.942925,
49456                                     53.183013
49457                                 ],
49458                                 [
49459                                     173.029416,
49460                                     52.993628
49461                                 ],
49462                                 [
49463                                     173.127208,
49464                                     52.99494
49465                                 ],
49466                                 [
49467                                     173.143321,
49468                                     52.990383
49469                                 ],
49470                                 [
49471                                     173.175059,
49472                                     52.971747
49473                                 ],
49474                                 [
49475                                     173.182932,
49476                                     52.968373
49477                                 ],
49478                                 [
49479                                     176.45233,
49480                                     52.628178
49481                                 ],
49482                                 [
49483                                     176.468135,
49484                                     52.488358
49485                                 ],
49486                                 [
49487                                     177.900385,
49488                                     52.488358
49489                                 ],
49490                                 [
49491                                     178.007601,
49492                                     52.179677
49493                                 ],
49494                                 [
49495                                     178.301106,
49496                                     52.056551
49497                                 ]
49498                             ]
49499                         ],
49500                         [
49501                             [
49502                                 [
49503                                     -168.899607,
49504                                     65.747626
49505                                 ],
49506                                 [
49507                                     -168.909861,
49508                                     65.739569
49509                                 ],
49510                                 [
49511                                     -168.926218,
49512                                     65.739895
49513                                 ],
49514                                 [
49515                                     -168.942128,
49516                                     65.74372
49517                                 ],
49518                                 [
49519                                     -168.951731,
49520                                     65.75316
49521                                 ],
49522                                 [
49523                                     -168.942983,
49524                                     65.764716
49525                                 ],
49526                                 [
49527                                     -168.920115,
49528                                     65.768866
49529                                 ],
49530                                 [
49531                                     -168.907908,
49532                                     65.768297
49533                                 ],
49534                                 [
49535                                     -168.902781,
49536                                     65.761542
49537                                 ],
49538                                 [
49539                                     -168.899607,
49540                                     65.747626
49541                                 ]
49542                             ]
49543                         ],
49544                         [
49545                             [
49546                                 [
49547                                     -131.160718,
49548                                     54.787192
49549                                 ],
49550                                 [
49551                                     -132.853508,
49552                                     54.482536
49553                                 ],
49554                                 [
49555                                     -134.77719,
49556                                     54.717786
49557                                 ],
49558                                 [
49559                                     -142.6966,
49560                                     55.845503
49561                                 ],
49562                                 [
49563                                     -142.861997,
49564                                     49.948308
49565                                 ],
49566                                 [
49567                                     -155.675916,
49568                                     51.109976
49569                                 ],
49570                                 [
49571                                     -164.492732,
49572                                     50.603976
49573                                 ],
49574                                 [
49575                                     -164.691217,
49576                                     50.997975
49577                                 ],
49578                                 [
49579                                     -171.246993,
49580                                     49.948308
49581                                 ],
49582                                 [
49583                                     -171.215436,
49584                                     50.576636
49585                                 ],
49586                                 [
49587                                     -173.341669,
49588                                     50.968826
49589                                 ],
49590                                 [
49591                                     -173.362022,
49592                                     51.082198
49593                                 ],
49594                                 [
49595                                     -177.799603,
49596                                     51.272899
49597                                 ],
49598                                 [
49599                                     -179.155463,
49600                                     50.982285
49601                                 ],
49602                                 [
49603                                     -179.476076,
49604                                     52.072632
49605                                 ],
49606                                 [
49607                                     -177.11459,
49608                                     52.248701
49609                                 ],
49610                                 [
49611                                     -177.146284,
49612                                     52.789384
49613                                 ],
49614                                 [
49615                                     -174.777218,
49616                                     52.443779
49617                                 ],
49618                                 [
49619                                     -174.773743,
49620                                     52.685853
49621                                 ],
49622                                 [
49623                                     -173.653194,
49624                                     52.704099
49625                                 ],
49626                                 [
49627                                     -173.790528,
49628                                     53.469081
49629                                 ],
49630                                 [
49631                                     -171.063371,
49632                                     53.604473
49633                                 ],
49634                                 [
49635                                     -170.777733,
49636                                     59.291898
49637                                 ],
49638                                 [
49639                                     -174.324884,
49640                                     60.332184
49641                                 ],
49642                                 [
49643                                     -171.736408,
49644                                     62.68026
49645                                 ],
49646                                 [
49647                                     -172.315705,
49648                                     62.725352
49649                                 ],
49650                                 [
49651                                     -171.995091,
49652                                     63.999658
49653                                 ],
49654                                 [
49655                                     -168.501424,
49656                                     65.565173
49657                                 ],
49658                                 [
49659                                     -168.714145,
49660                                     65.546708
49661                                 ],
49662                                 [
49663                                     -168.853077,
49664                                     68.370871
49665                                 ],
49666                                 [
49667                                     -161.115601,
49668                                     72.416214
49669                                 ],
49670                                 [
49671                                     -146.132257,
49672                                     70.607941
49673                                 ],
49674                                 [
49675                                     -140.692512,
49676                                     69.955349
49677                                 ],
49678                                 [
49679                                     -141.145395,
49680                                     69.671641
49681                                 ],
49682                                 [
49683                                     -141.015207,
49684                                     69.654202
49685                                 ],
49686                                 [
49687                                     -141.006459,
49688                                     69.651272
49689                                 ],
49690                                 [
49691                                     -141.005564,
49692                                     69.650946
49693                                 ],
49694                                 [
49695                                     -141.005549,
49696                                     69.650941
49697                                 ],
49698                                 [
49699                                     -141.005471,
49700                                     69.505164
49701                                 ],
49702                                 [
49703                                     -141.001208,
49704                                     60.466879
49705                                 ],
49706                                 [
49707                                     -141.001156,
49708                                     60.321074
49709                                 ],
49710                                 [
49711                                     -140.994929,
49712                                     60.304382
49713                                 ],
49714                                 [
49715                                     -140.979555,
49716                                     60.295804
49717                                 ],
49718                                 [
49719                                     -140.909146,
49720                                     60.28366
49721                                 ],
49722                                 [
49723                                     -140.768457,
49724                                     60.259269
49725                                 ],
49726                                 [
49727                                     -140.660505,
49728                                     60.24051
49729                                 ],
49730                                 [
49731                                     -140.533743,
49732                                     60.218548
49733                                 ],
49734                                 [
49735                                     -140.518705,
49736                                     60.22387
49737                                 ],
49738                                 [
49739                                     -140.506664,
49740                                     60.236324
49741                                 ],
49742                                 [
49743                                     -140.475323,
49744                                     60.276477
49745                                 ],
49746                                 [
49747                                     -140.462791,
49748                                     60.289138
49749                                 ],
49750                                 [
49751                                     -140.447805,
49752                                     60.29446
49753                                 ],
49754                                 [
49755                                     -140.424111,
49756                                     60.293168
49757                                 ],
49758                                 [
49759                                     -140.32497,
49760                                     60.267537
49761                                 ],
49762                                 [
49763                                     -140.169243,
49764                                     60.227229
49765                                 ],
49766                                 [
49767                                     -140.01579,
49768                                     60.187387
49769                                 ],
49770                                 [
49771                                     -139.967757,
49772                                     60.188369
49773                                 ],
49774                                 [
49775                                     -139.916933,
49776                                     60.207851
49777                                 ],
49778                                 [
49779                                     -139.826318,
49780                                     60.256478
49781                                 ],
49782                                 [
49783                                     -139.728417,
49784                                     60.309033
49785                                 ],
49786                                 [
49787                                     -139.679816,
49788                                     60.32681
49789                                 ],
49790                                 [
49791                                     -139.628346,
49792                                     60.334096
49793                                 ],
49794                                 [
49795                                     -139.517965,
49796                                     60.336732
49797                                 ],
49798                                 [
49799                                     -139.413992,
49800                                     60.339212
49801                                 ],
49802                                 [
49803                                     -139.262193,
49804                                     60.342778
49805                                 ],
49806                                 [
49807                                     -139.101608,
49808                                     60.346602
49809                                 ],
49810                                 [
49811                                     -139.079465,
49812                                     60.341021
49813                                 ],
49814                                 [
49815                                     -139.06869,
49816                                     60.322056
49817                                 ],
49818                                 [
49819                                     -139.073186,
49820                                     60.299835
49821                                 ],
49822                                 [
49823                                     -139.113468,
49824                                     60.226816
49825                                 ],
49826                                 [
49827                                     -139.149615,
49828                                     60.161187
49829                                 ],
49830                                 [
49831                                     -139.183231,
49832                                     60.100157
49833                                 ],
49834                                 [
49835                                     -139.182146,
49836                                     60.073389
49837                                 ],
49838                                 [
49839                                     -139.112305,
49840                                     60.031376
49841                                 ],
49842                                 [
49843                                     -139.060207,
49844                                     60.000059
49845                                 ],
49846                                 [
49847                                     -139.051611,
49848                                     59.994892
49849                                 ],
49850                                 [
49851                                     -139.003759,
49852                                     59.977219
49853                                 ],
49854                                 [
49855                                     -138.842425,
49856                                     59.937686
49857                                 ],
49858                                 [
49859                                     -138.742586,
49860                                     59.913192
49861                                 ],
49862                                 [
49863                                     -138.704888,
49864                                     59.898464
49865                                 ],
49866                                 [
49867                                     -138.697188,
49868                                     59.89371
49869                                 ],
49870                                 [
49871                                     -138.692098,
49872                                     59.886888
49873                                 ],
49874                                 [
49875                                     -138.654349,
49876                                     59.805498
49877                                 ],
49878                                 [
49879                                     -138.63745,
49880                                     59.784052
49881                                 ],
49882                                 [
49883                                     -138.59921,
49884                                     59.753822
49885                                 ],
49886                                 [
49887                                     -138.488881,
49888                                     59.696357
49889                                 ],
49890                                 [
49891                                     -138.363617,
49892                                     59.631142
49893                                 ],
49894                                 [
49895                                     -138.219543,
49896                                     59.556004
49897                                 ],
49898                                 [
49899                                     -138.067614,
49900                                     59.476991
49901                                 ],
49902                                 [
49903                                     -137.91057,
49904                                     59.395187
49905                                 ],
49906                                 [
49907                                     -137.758305,
49908                                     59.315915
49909                                 ],
49910                                 [
49911                                     -137.611363,
49912                                     59.239331
49913                                 ],
49914                                 [
49915                                     -137.594181,
49916                                     59.225275
49917                                 ],
49918                                 [
49919                                     -137.582088,
49920                                     59.206568
49921                                 ],
49922                                 [
49923                                     -137.5493,
49924                                     59.134531
49925                                 ],
49926                                 [
49927                                     -137.521007,
49928                                     59.072364
49929                                 ],
49930                                 [
49931                                     -137.484394,
49932                                     58.991904
49933                                 ],
49934                                 [
49935                                     -137.507752,
49936                                     58.939969
49937                                 ],
49938                                 [
49939                                     -137.50876,
49940                                     58.914906
49941                                 ],
49942                                 [
49943                                     -137.486875,
49944                                     58.900075
49945                                 ],
49946                                 [
49947                                     -137.453466,
49948                                     58.899145
49949                                 ],
49950                                 [
49951                                     -137.423106,
49952                                     58.907723
49953                                 ],
49954                                 [
49955                                     -137.338098,
49956                                     58.955472
49957                                 ],
49958                                 [
49959                                     -137.2819,
49960                                     58.98715
49961                                 ],
49962                                 [
49963                                     -137.172346,
49964                                     59.027148
49965                                 ],
49966                                 [
49967                                     -137.062367,
49968                                     59.067572
49969                                 ],
49970                                 [
49971                                     -137.047109,
49972                                     59.07331
49973                                 ],
49974                                 [
49975                                     -136.942282,
49976                                     59.11107
49977                                 ],
49978                                 [
49979                                     -136.840816,
49980                                     59.148174
49981                                 ],
49982                                 [
49983                                     -136.785496,
49984                                     59.157217
49985                                 ],
49986                                 [
49987                                     -136.671911,
49988                                     59.150809
49989                                 ],
49990                                 [
49991                                     -136.613491,
49992                                     59.15422
49993                                 ],
49994                                 [
49995                                     -136.569489,
49996                                     59.172152
49997                                 ],
49998                                 [
49999                                     -136.484791,
50000                                     59.2538
50001                                 ],
50002                                 [
50003                                     -136.483551,
50004                                     59.257469
50005                                 ],
50006                                 [
50007                                     -136.466549,
50008                                     59.287803
50009                                 ],
50010                                 [
50011                                     -136.467092,
50012                                     59.38449
50013                                 ],
50014                                 [
50015                                     -136.467557,
50016                                     59.461643
50017                                 ],
50018                                 [
50019                                     -136.415958,
50020                                     59.452238
50021                                 ],
50022                                 [
50023                                     -136.36684,
50024                                     59.449551
50025                                 ],
50026                                 [
50027                                     -136.319995,
50028                                     59.459059
50029                                 ],
50030                                 [
50031                                     -136.275036,
50032                                     59.486448
50033                                 ],
50034                                 [
50035                                     -136.244728,
50036                                     59.528202
50037                                 ],
50038                                 [
50039                                     -136.258474,
50040                                     59.556107
50041                                 ],
50042                                 [
50043                                     -136.29935,
50044                                     59.575745
50045                                 ],
50046                                 [
50047                                     -136.350329,
50048                                     59.592384
50049                                 ],
50050                                 [
50051                                     -136.2585,
50052                                     59.621582
50053                                 ],
50054                                 [
50055                                     -136.145406,
50056                                     59.636826
50057                                 ],
50058                                 [
50059                                     -136.02686,
50060                                     59.652846
50061                                 ],
50062                                 [
50063                                     -135.923818,
50064                                     59.666747
50065                                 ],
50066                                 [
50067                                     -135.830955,
50068                                     59.693257
50069                                 ],
50070                                 [
50071                                     -135.641251,
50072                                     59.747362
50073                                 ],
50074                                 [
50075                                     -135.482759,
50076                                     59.792475
50077                                 ],
50078                                 [
50079                                     -135.465137,
50080                                     59.789685
50081                                 ],
50082                                 [
50083                                     -135.404392,
50084                                     59.753305
50085                                 ],
50086                                 [
50087                                     -135.345791,
50088                                     59.731032
50089                                 ],
50090                                 [
50091                                     -135.259879,
50092                                     59.698218
50093                                 ],
50094                                 [
50095                                     -135.221897,
50096                                     59.675273
50097                                 ],
50098                                 [
50099                                     -135.192028,
50100                                     59.64711
50101                                 ],
50102                                 [
50103                                     -135.157792,
50104                                     59.623287
50105                                 ],
50106                                 [
50107                                     -135.106684,
50108                                     59.613158
50109                                 ],
50110                                 [
50111                                     -135.087874,
50112                                     59.606544
50113                                 ],
50114                                 [
50115                                     -135.032942,
50116                                     59.573109
50117                                 ],
50118                                 [
50119                                     -135.018524,
50120                                     59.559363
50121                                 ],
50122                                 [
50123                                     -135.016198,
50124                                     59.543447
50125                                 ],
50126                                 [
50127                                     -135.01948,
50128                                     59.493166
50129                                 ],
50130                                 [
50131                                     -135.023252,
50132                                     59.477146
50133                                 ],
50134                                 [
50135                                     -135.037489,
50136                                     59.461591
50137                                 ],
50138                                 [
50139                                     -135.078598,
50140                                     59.438337
50141                                 ],
50142                                 [
50143                                     -135.095754,
50144                                     59.418855
50145                                 ],
50146                                 [
50147                                     -134.993254,
50148                                     59.381906
50149                                 ],
50150                                 [
50151                                     -135.00483,
50152                                     59.367127
50153                                 ],
50154                                 [
50155                                     -135.014441,
50156                                     59.35152
50157                                 ],
50158                                 [
50159                                     -135.016198,
50160                                     59.336173
50161                                 ],
50162                                 [
50163                                     -134.979973,
50164                                     59.297415
50165                                 ],
50166                                 [
50167                                     -134.95783,
50168                                     59.280982
50169                                 ],
50170                                 [
50171                                     -134.932431,
50172                                     59.270647
50173                                 ],
50174                                 [
50175                                     -134.839465,
50176                                     59.258141
50177                                 ],
50178                                 [
50179                                     -134.74345,
50180                                     59.245119
50181                                 ],
50182                                 [
50183                                     -134.70552,
50184                                     59.240106
50185                                 ],
50186                                 [
50187                                     -134.692084,
50188                                     59.235249
50189                                 ],
50190                                 [
50191                                     -134.68286,
50192                                     59.223001
50193                                 ],
50194                                 [
50195                                     -134.671439,
50196                                     59.193752
50197                                 ],
50198                                 [
50199                                     -134.66038,
50200                                     59.181298
50201                                 ],
50202                                 [
50203                                     -134.610771,
50204                                     59.144556
50205                                 ],
50206                                 [
50207                                     -134.582788,
50208                                     59.128847
50209                                 ],
50210                                 [
50211                                     -134.556717,
50212                                     59.123059
50213                                 ],
50214                                 [
50215                                     -134.509072,
50216                                     59.122801
50217                                 ],
50218                                 [
50219                                     -134.477575,
50220                                     59.114946
50221                                 ],
50222                                 [
50223                                     -134.451013,
50224                                     59.097893
50225                                 ],
50226                                 [
50227                                     -134.398019,
50228                                     59.051952
50229                                 ],
50230                                 [
50231                                     -134.387167,
50232                                     59.036863
50233                                 ],
50234                                 [
50235                                     -134.385591,
50236                                     59.018828
50237                                 ],
50238                                 [
50239                                     -134.399389,
50240                                     58.974954
50241                                 ],
50242                                 [
50243                                     -134.343423,
50244                                     58.968857
50245                                 ],
50246                                 [
50247                                     -134.329651,
50248                                     58.963017
50249                                 ],
50250                                 [
50251                                     -134.320039,
50252                                     58.952682
50253                                 ],
50254                                 [
50255                                     -134.32314,
50256                                     58.949168
50257                                 ],
50258                                 [
50259                                     -134.330323,
50260                                     58.945344
50261                                 ],
50262                                 [
50263                                     -134.333036,
50264                                     58.93413
50265                                 ],
50266                                 [
50267                                     -134.327403,
50268                                     58.916457
50269                                 ],
50270                                 [
50271                                     -134.316939,
50272                                     58.903796
50273                                 ],
50274                                 [
50275                                     -134.22219,
50276                                     58.842714
50277                                 ],
50278                                 [
50279                                     -134.108838,
50280                                     58.808246
50281                                 ],
50282                                 [
50283                                     -133.983109,
50284                                     58.769902
50285                                 ],
50286                                 [
50287                                     -133.87123,
50288                                     58.735899
50289                                 ],
50290                                 [
50291                                     -133.831129,
50292                                     58.718019
50293                                 ],
50294                                 [
50295                                     -133.796402,
50296                                     58.693421
50297                                 ],
50298                                 [
50299                                     -133.700077,
50300                                     58.59937
50301                                 ],
50302                                 [
50303                                     -133.626283,
50304                                     58.546402
50305                                 ],
50306                                 [
50307                                     -133.547063,
50308                                     58.505577
50309                                 ],
50310                                 [
50311                                     -133.463089,
50312                                     58.462221
50313                                 ],
50314                                 [
50315                                     -133.392241,
50316                                     58.403878
50317                                 ],
50318                                 [
50319                                     -133.43012,
50320                                     58.372097
50321                                 ],
50322                                 [
50323                                     -133.41503,
50324                                     58.330549
50325                                 ],
50326                                 [
50327                                     -133.374567,
50328                                     58.290965
50329                                 ],
50330                                 [
50331                                     -133.257262,
50332                                     58.210298
50333                                 ],
50334                                 [
50335                                     -133.165588,
50336                                     58.147305
50337                                 ],
50338                                 [
50339                                     -133.142127,
50340                                     58.120588
50341                                 ],
50342                                 [
50343                                     -133.094843,
50344                                     58.0331
50345                                 ],
50346                                 [
50347                                     -133.075154,
50348                                     58.007882
50349                                 ],
50350                                 [
50351                                     -132.99335,
50352                                     57.941917
50353                                 ],
50354                                 [
50355                                     -132.917153,
50356                                     57.880499
50357                                 ],
50358                                 [
50359                                     -132.83212,
50360                                     57.791564
50361                                 ],
50362                                 [
50363                                     -132.70944,
50364                                     57.663303
50365                                 ],
50366                                 [
50367                                     -132.629057,
50368                                     57.579277
50369                                 ],
50370                                 [
50371                                     -132.552447,
50372                                     57.499075
50373                                 ],
50374                                 [
50375                                     -132.455735,
50376                                     57.420992
50377                                 ],
50378                                 [
50379                                     -132.362304,
50380                                     57.3457
50381                                 ],
50382                                 [
50383                                     -132.304684,
50384                                     57.280355
50385                                 ],
50386                                 [
50387                                     -132.230994,
50388                                     57.19682
50389                                 ],
50390                                 [
50391                                     -132.276366,
50392                                     57.14889
50393                                 ],
50394                                 [
50395                                     -132.34122,
50396                                     57.080393
50397                                 ],
50398                                 [
50399                                     -132.16229,
50400                                     57.050317
50401                                 ],
50402                                 [
50403                                     -132.031859,
50404                                     57.028406
50405                                 ],
50406                                 [
50407                                     -132.107384,
50408                                     56.858753
50409                                 ],
50410                                 [
50411                                     -131.871558,
50412                                     56.79346
50413                                 ],
50414                                 [
50415                                     -131.865874,
50416                                     56.785708
50417                                 ],
50418                                 [
50419                                     -131.872411,
50420                                     56.77297
50421                                 ],
50422                                 [
50423                                     -131.882617,
50424                                     56.759146
50425                                 ],
50426                                 [
50427                                     -131.887966,
50428                                     56.747958
50429                                 ],
50430                                 [
50431                                     -131.886028,
50432                                     56.737055
50433                                 ],
50434                                 [
50435                                     -131.880705,
50436                                     56.728838
50437                                 ],
50438                                 [
50439                                     -131.864789,
50440                                     56.71349
50441                                 ],
50442                                 [
50443                                     -131.838976,
50444                                     56.682278
50445                                 ],
50446                                 [
50447                                     -131.830424,
50448                                     56.664759
50449                                 ],
50450                                 [
50451                                     -131.826574,
50452                                     56.644606
50453                                 ],
50454                                 [
50455                                     -131.832103,
50456                                     56.603368
50457                                 ],
50458                                 [
50459                                     -131.825592,
50460                                     56.593343
50461                                 ],
50462                                 [
50463                                     -131.799108,
50464                                     56.587658
50465                                 ],
50466                                 [
50467                                     -131.692293,
50468                                     56.585074
50469                                 ],
50470                                 [
50471                                     -131.585891,
50472                                     56.595048
50473                                 ],
50474                                 [
50475                                     -131.560363,
50476                                     56.594066
50477                                 ],
50478                                 [
50479                                     -131.536437,
50480                                     56.585229
50481                                 ],
50482                                 [
50483                                     -131.491659,
50484                                     56.560166
50485                                 ],
50486                                 [
50487                                     -131.345699,
50488                                     56.503271
50489                                 ],
50490                                 [
50491                                     -131.215604,
50492                                     56.45255
50493                                 ],
50494                                 [
50495                                     -131.100546,
50496                                     56.407669
50497                                 ],
50498                                 [
50499                                     -131.016934,
50500                                     56.38705
50501                                 ],
50502                                 [
50503                                     -130.839089,
50504                                     56.372452
50505                                 ],
50506                                 [
50507                                     -130.760334,
50508                                     56.345192
50509                                 ],
50510                                 [
50511                                     -130.645768,
50512                                     56.261942
50513                                 ],
50514                                 [
50515                                     -130.602256,
50516                                     56.247059
50517                                 ],
50518                                 [
50519                                     -130.495518,
50520                                     56.232434
50521                                 ],
50522                                 [
50523                                     -130.47229,
50524                                     56.22489
50525                                 ],
50526                                 [
50527                                     -130.458053,
50528                                     56.210653
50529                                 ],
50530                                 [
50531                                     -130.427926,
50532                                     56.143964
50533                                 ],
50534                                 [
50535                                     -130.418159,
50536                                     56.129702
50537                                 ],
50538                                 [
50539                                     -130.403974,
50540                                     56.121898
50541                                 ],
50542                                 [
50543                                     -130.290311,
50544                                     56.10097
50545                                 ],
50546                                 [
50547                                     -130.243156,
50548                                     56.092391
50549                                 ],
50550                                 [
50551                                     -130.211246,
50552                                     56.089962
50553                                 ],
50554                                 [
50555                                     -130.116756,
50556                                     56.105646
50557                                 ],
50558                                 [
50559                                     -130.094328,
50560                                     56.101486
50561                                 ],
50562                                 [
50563                                     -130.071539,
50564                                     56.084123
50565                                 ],
50566                                 [
50567                                     -130.039319,
50568                                     56.045521
50569                                 ],
50570                                 [
50571                                     -130.026632,
50572                                     56.024101
50573                                 ],
50574                                 [
50575                                     -130.01901,
50576                                     56.002216
50577                                 ],
50578                                 [
50579                                     -130.014695,
50580                                     55.963252
50581                                 ],
50582                                 [
50583                                     -130.016788,
50584                                     55.918913
50585                                 ],
50586                                 [
50587                                     -130.019612,
50588                                     55.907978
50589                                 ],
50590                                 [
50591                                     -130.019618,
50592                                     55.907952
50593                                 ],
50594                                 [
50595                                     -130.022817,
50596                                     55.901353
50597                                 ],
50598                                 [
50599                                     -130.049387,
50600                                     55.871405
50601                                 ],
50602                                 [
50603                                     -130.104726,
50604                                     55.825263
50605                                 ],
50606                                 [
50607                                     -130.136627,
50608                                     55.806464
50609                                 ],
50610                                 [
50611                                     -130.148834,
50612                                     55.795356
50613                                 ],
50614                                 [
50615                                     -130.163482,
50616                                     55.771145
50617                                 ],
50618                                 [
50619                                     -130.167307,
50620                                     55.766262
50621                                 ],
50622                                 [
50623                                     -130.170806,
50624                                     55.759833
50625                                 ],
50626                                 [
50627                                     -130.173655,
50628                                     55.749498
50629                                 ],
50630                                 [
50631                                     -130.170806,
50632                                     55.740953
50633                                 ],
50634                                 [
50635                                     -130.163808,
50636                                     55.734565
50637                                 ],
50638                                 [
50639                                     -130.160064,
50640                                     55.727118
50641                                 ],
50642                                 [
50643                                     -130.167388,
50644                                     55.715399
50645                                 ],
50646                                 [
50647                                     -130.155914,
50648                                     55.700141
50649                                 ],
50650                                 [
50651                                     -130.142893,
50652                                     55.689521
50653                                 ],
50654                                 [
50655                                     -130.131825,
50656                                     55.676581
50657                                 ],
50658                                 [
50659                                     -130.126454,
50660                                     55.653998
50661                                 ],
50662                                 [
50663                                     -130.12857,
50664                                     55.63642
50665                                 ],
50666                                 [
50667                                     -130.135121,
50668                                     55.619127
50669                                 ],
50670                                 [
50671                                     -130.153147,
50672                                     55.58511
50673                                 ],
50674                                 [
50675                                     -130.148671,
50676                                     55.578192
50677                                 ],
50678                                 [
50679                                     -130.146881,
50680                                     55.569322
50681                                 ],
50682                                 [
50683                                     -130.146962,
50684                                     55.547187
50685                                 ],
50686                                 [
50687                                     -130.112172,
50688                                     55.509345
50689                                 ],
50690                                 [
50691                                     -130.101674,
50692                                     55.481147
50693                                 ],
50694                                 [
50695                                     -130.095082,
50696                                     55.472113
50697                                 ],
50698                                 [
50699                                     -130.065419,
50700                                     55.446112
50701                                 ],
50702                                 [
50703                                     -130.057525,
50704                                     55.434882
50705                                 ],
50706                                 [
50707                                     -130.052561,
50708                                     55.414008
50709                                 ],
50710                                 [
50711                                     -130.054311,
50712                                     55.366645
50713                                 ],
50714                                 [
50715                                     -130.05012,
50716                                     55.345445
50717                                 ],
50718                                 [
50719                                     -130.039296,
50720                                     55.330756
50721                                 ],
50722                                 [
50723                                     -129.989247,
50724                                     55.284003
50725                                 ],
50726                                 [
50727                                     -130.031239,
50728                                     55.26435
50729                                 ],
50730                                 [
50731                                     -130.050038,
50732                                     55.252875
50733                                 ],
50734                                 [
50735                                     -130.067494,
50736                                     55.239
50737                                 ],
50738                                 [
50739                                     -130.078236,
50740                                     55.233791
50741                                 ],
50742                                 [
50743                                     -130.100494,
50744                                     55.230292
50745                                 ],
50746                                 [
50747                                     -130.104726,
50748                                     55.225653
50749                                 ],
50750                                 [
50751                                     -130.105702,
50752                                     55.211127
50753                                 ],
50754                                 [
50755                                     -130.10912,
50756                                     55.200751
50757                                 ],
50758                                 [
50759                                     -130.115793,
50760                                     55.191596
50761                                 ],
50762                                 [
50763                                     -130.126454,
50764                                     55.180976
50765                                 ],
50766                                 [
50767                                     -130.151967,
50768                                     55.163275
50769                                 ],
50770                                 [
50771                                     -130.159983,
50772                                     55.153713
50773                                 ],
50774                                 [
50775                                     -130.167592,
50776                                     55.129584
50777                                 ],
50778                                 [
50779                                     -130.173695,
50780                                     55.117743
50781                                 ],
50782                                 [
50783                                     -130.200266,
50784                                     55.104153
50785                                 ],
50786                                 [
50787                                     -130.211781,
50788                                     55.084133
50789                                 ],
50790                                 [
50791                                     -130.228871,
50792                                     55.04385
50793                                 ],
50794                                 [
50795                                     -130.238678,
50796                                     55.03441
50797                                 ],
50798                                 [
50799                                     -130.261342,
50800                                     55.022895
50801                                 ],
50802                                 [
50803                                     -130.269846,
50804                                     55.016547
50805                                 ],
50806                                 [
50807                                     -130.275706,
50808                                     55.006985
50809                                 ],
50810                                 [
50811                                     -130.286366,
50812                                     54.983222
50813                                 ],
50814                                 [
50815                                     -130.294342,
50816                                     54.971869
50817                                 ],
50818                                 [
50819                                     -130.326568,
50820                                     54.952094
50821                                 ],
50822                                 [
50823                                     -130.335561,
50824                                     54.938707
50825                                 ],
50826                                 [
50827                                     -130.365387,
50828                                     54.907294
50829                                 ],
50830                                 [
50831                                     -130.385243,
50832                                     54.896552
50833                                 ],
50834                                 [
50835                                     -130.430816,
50836                                     54.881252
50837                                 ],
50838                                 [
50839                                     -130.488759,
50840                                     54.844184
50841                                 ],
50842                                 [
50843                                     -130.580312,
50844                                     54.806383
50845                                 ],
50846                                 [
50847                                     -130.597485,
50848                                     54.803391
50849                                 ],
50850                                 [
50851                                     -130.71074,
50852                                     54.733215
50853                                 ],
50854                                 [
50855                                     -131.160718,
50856                                     54.787192
50857                                 ]
50858                             ]
50859                         ]
50860                     ]
50861                 }
50862             }
50863         ]
50864     },
50865     "featureIcons": {
50866         "circle-stroked-24": {
50867             "x": 0,
50868             "y": 0,
50869             "width": 24,
50870             "height": 24
50871         },
50872         "circle-stroked-18": {
50873             "x": 24,
50874             "y": 0,
50875             "width": 18,
50876             "height": 18
50877         },
50878         "circle-stroked-12": {
50879             "x": 42,
50880             "y": 0,
50881             "width": 12,
50882             "height": 12
50883         },
50884         "circle-24": {
50885             "x": 54,
50886             "y": 0,
50887             "width": 24,
50888             "height": 24
50889         },
50890         "circle-18": {
50891             "x": 78,
50892             "y": 0,
50893             "width": 18,
50894             "height": 18
50895         },
50896         "circle-12": {
50897             "x": 96,
50898             "y": 0,
50899             "width": 12,
50900             "height": 12
50901         },
50902         "square-stroked-24": {
50903             "x": 108,
50904             "y": 0,
50905             "width": 24,
50906             "height": 24
50907         },
50908         "square-stroked-18": {
50909             "x": 132,
50910             "y": 0,
50911             "width": 18,
50912             "height": 18
50913         },
50914         "square-stroked-12": {
50915             "x": 150,
50916             "y": 0,
50917             "width": 12,
50918             "height": 12
50919         },
50920         "square-24": {
50921             "x": 162,
50922             "y": 0,
50923             "width": 24,
50924             "height": 24
50925         },
50926         "square-18": {
50927             "x": 186,
50928             "y": 0,
50929             "width": 18,
50930             "height": 18
50931         },
50932         "square-12": {
50933             "x": 204,
50934             "y": 0,
50935             "width": 12,
50936             "height": 12
50937         },
50938         "triangle-stroked-24": {
50939             "x": 216,
50940             "y": 0,
50941             "width": 24,
50942             "height": 24
50943         },
50944         "triangle-stroked-18": {
50945             "x": 240,
50946             "y": 0,
50947             "width": 18,
50948             "height": 18
50949         },
50950         "triangle-stroked-12": {
50951             "x": 258,
50952             "y": 0,
50953             "width": 12,
50954             "height": 12
50955         },
50956         "triangle-24": {
50957             "x": 0,
50958             "y": 24,
50959             "width": 24,
50960             "height": 24
50961         },
50962         "triangle-18": {
50963             "x": 24,
50964             "y": 24,
50965             "width": 18,
50966             "height": 18
50967         },
50968         "triangle-12": {
50969             "x": 42,
50970             "y": 24,
50971             "width": 12,
50972             "height": 12
50973         },
50974         "star-stroked-24": {
50975             "x": 54,
50976             "y": 24,
50977             "width": 24,
50978             "height": 24
50979         },
50980         "star-stroked-18": {
50981             "x": 78,
50982             "y": 24,
50983             "width": 18,
50984             "height": 18
50985         },
50986         "star-stroked-12": {
50987             "x": 96,
50988             "y": 24,
50989             "width": 12,
50990             "height": 12
50991         },
50992         "star-24": {
50993             "x": 108,
50994             "y": 24,
50995             "width": 24,
50996             "height": 24
50997         },
50998         "star-18": {
50999             "x": 132,
51000             "y": 24,
51001             "width": 18,
51002             "height": 18
51003         },
51004         "star-12": {
51005             "x": 150,
51006             "y": 24,
51007             "width": 12,
51008             "height": 12
51009         },
51010         "cross-24": {
51011             "x": 162,
51012             "y": 24,
51013             "width": 24,
51014             "height": 24
51015         },
51016         "cross-18": {
51017             "x": 186,
51018             "y": 24,
51019             "width": 18,
51020             "height": 18
51021         },
51022         "cross-12": {
51023             "x": 204,
51024             "y": 24,
51025             "width": 12,
51026             "height": 12
51027         },
51028         "marker-stroked-24": {
51029             "x": 216,
51030             "y": 24,
51031             "width": 24,
51032             "height": 24
51033         },
51034         "marker-stroked-18": {
51035             "x": 240,
51036             "y": 24,
51037             "width": 18,
51038             "height": 18
51039         },
51040         "marker-stroked-12": {
51041             "x": 258,
51042             "y": 24,
51043             "width": 12,
51044             "height": 12
51045         },
51046         "marker-24": {
51047             "x": 0,
51048             "y": 48,
51049             "width": 24,
51050             "height": 24
51051         },
51052         "marker-18": {
51053             "x": 24,
51054             "y": 48,
51055             "width": 18,
51056             "height": 18
51057         },
51058         "marker-12": {
51059             "x": 42,
51060             "y": 48,
51061             "width": 12,
51062             "height": 12
51063         },
51064         "religious-jewish-24": {
51065             "x": 54,
51066             "y": 48,
51067             "width": 24,
51068             "height": 24
51069         },
51070         "religious-jewish-18": {
51071             "x": 78,
51072             "y": 48,
51073             "width": 18,
51074             "height": 18
51075         },
51076         "religious-jewish-12": {
51077             "x": 96,
51078             "y": 48,
51079             "width": 12,
51080             "height": 12
51081         },
51082         "religious-christian-24": {
51083             "x": 108,
51084             "y": 48,
51085             "width": 24,
51086             "height": 24
51087         },
51088         "religious-christian-18": {
51089             "x": 132,
51090             "y": 48,
51091             "width": 18,
51092             "height": 18
51093         },
51094         "religious-christian-12": {
51095             "x": 150,
51096             "y": 48,
51097             "width": 12,
51098             "height": 12
51099         },
51100         "religious-muslim-24": {
51101             "x": 162,
51102             "y": 48,
51103             "width": 24,
51104             "height": 24
51105         },
51106         "religious-muslim-18": {
51107             "x": 186,
51108             "y": 48,
51109             "width": 18,
51110             "height": 18
51111         },
51112         "religious-muslim-12": {
51113             "x": 204,
51114             "y": 48,
51115             "width": 12,
51116             "height": 12
51117         },
51118         "cemetery-24": {
51119             "x": 216,
51120             "y": 48,
51121             "width": 24,
51122             "height": 24
51123         },
51124         "cemetery-18": {
51125             "x": 240,
51126             "y": 48,
51127             "width": 18,
51128             "height": 18
51129         },
51130         "cemetery-12": {
51131             "x": 258,
51132             "y": 48,
51133             "width": 12,
51134             "height": 12
51135         },
51136         "rocket-24": {
51137             "x": 0,
51138             "y": 72,
51139             "width": 24,
51140             "height": 24
51141         },
51142         "rocket-18": {
51143             "x": 24,
51144             "y": 72,
51145             "width": 18,
51146             "height": 18
51147         },
51148         "rocket-12": {
51149             "x": 42,
51150             "y": 72,
51151             "width": 12,
51152             "height": 12
51153         },
51154         "airport-24": {
51155             "x": 54,
51156             "y": 72,
51157             "width": 24,
51158             "height": 24
51159         },
51160         "airport-18": {
51161             "x": 78,
51162             "y": 72,
51163             "width": 18,
51164             "height": 18
51165         },
51166         "airport-12": {
51167             "x": 96,
51168             "y": 72,
51169             "width": 12,
51170             "height": 12
51171         },
51172         "heliport-24": {
51173             "x": 108,
51174             "y": 72,
51175             "width": 24,
51176             "height": 24
51177         },
51178         "heliport-18": {
51179             "x": 132,
51180             "y": 72,
51181             "width": 18,
51182             "height": 18
51183         },
51184         "heliport-12": {
51185             "x": 150,
51186             "y": 72,
51187             "width": 12,
51188             "height": 12
51189         },
51190         "rail-24": {
51191             "x": 162,
51192             "y": 72,
51193             "width": 24,
51194             "height": 24
51195         },
51196         "rail-18": {
51197             "x": 186,
51198             "y": 72,
51199             "width": 18,
51200             "height": 18
51201         },
51202         "rail-12": {
51203             "x": 204,
51204             "y": 72,
51205             "width": 12,
51206             "height": 12
51207         },
51208         "rail-metro-24": {
51209             "x": 216,
51210             "y": 72,
51211             "width": 24,
51212             "height": 24
51213         },
51214         "rail-metro-18": {
51215             "x": 240,
51216             "y": 72,
51217             "width": 18,
51218             "height": 18
51219         },
51220         "rail-metro-12": {
51221             "x": 258,
51222             "y": 72,
51223             "width": 12,
51224             "height": 12
51225         },
51226         "rail-light-24": {
51227             "x": 0,
51228             "y": 96,
51229             "width": 24,
51230             "height": 24
51231         },
51232         "rail-light-18": {
51233             "x": 24,
51234             "y": 96,
51235             "width": 18,
51236             "height": 18
51237         },
51238         "rail-light-12": {
51239             "x": 42,
51240             "y": 96,
51241             "width": 12,
51242             "height": 12
51243         },
51244         "bus-24": {
51245             "x": 54,
51246             "y": 96,
51247             "width": 24,
51248             "height": 24
51249         },
51250         "bus-18": {
51251             "x": 78,
51252             "y": 96,
51253             "width": 18,
51254             "height": 18
51255         },
51256         "bus-12": {
51257             "x": 96,
51258             "y": 96,
51259             "width": 12,
51260             "height": 12
51261         },
51262         "fuel-24": {
51263             "x": 108,
51264             "y": 96,
51265             "width": 24,
51266             "height": 24
51267         },
51268         "fuel-18": {
51269             "x": 132,
51270             "y": 96,
51271             "width": 18,
51272             "height": 18
51273         },
51274         "fuel-12": {
51275             "x": 150,
51276             "y": 96,
51277             "width": 12,
51278             "height": 12
51279         },
51280         "parking-24": {
51281             "x": 162,
51282             "y": 96,
51283             "width": 24,
51284             "height": 24
51285         },
51286         "parking-18": {
51287             "x": 186,
51288             "y": 96,
51289             "width": 18,
51290             "height": 18
51291         },
51292         "parking-12": {
51293             "x": 204,
51294             "y": 96,
51295             "width": 12,
51296             "height": 12
51297         },
51298         "parking-garage-24": {
51299             "x": 216,
51300             "y": 96,
51301             "width": 24,
51302             "height": 24
51303         },
51304         "parking-garage-18": {
51305             "x": 240,
51306             "y": 96,
51307             "width": 18,
51308             "height": 18
51309         },
51310         "parking-garage-12": {
51311             "x": 258,
51312             "y": 96,
51313             "width": 12,
51314             "height": 12
51315         },
51316         "airfield-24": {
51317             "x": 0,
51318             "y": 120,
51319             "width": 24,
51320             "height": 24
51321         },
51322         "airfield-18": {
51323             "x": 24,
51324             "y": 120,
51325             "width": 18,
51326             "height": 18
51327         },
51328         "airfield-12": {
51329             "x": 42,
51330             "y": 120,
51331             "width": 12,
51332             "height": 12
51333         },
51334         "roadblock-24": {
51335             "x": 54,
51336             "y": 120,
51337             "width": 24,
51338             "height": 24
51339         },
51340         "roadblock-18": {
51341             "x": 78,
51342             "y": 120,
51343             "width": 18,
51344             "height": 18
51345         },
51346         "roadblock-12": {
51347             "x": 96,
51348             "y": 120,
51349             "width": 12,
51350             "height": 12
51351         },
51352         "ferry-24": {
51353             "x": 108,
51354             "y": 120,
51355             "width": 24,
51356             "height": 24
51357         },
51358         "ferry-18": {
51359             "x": 132,
51360             "y": 120,
51361             "width": 18,
51362             "height": 18
51363         },
51364         "ferry-12": {
51365             "x": 150,
51366             "y": 120,
51367             "width": 12,
51368             "height": 12
51369         },
51370         "harbor-24": {
51371             "x": 162,
51372             "y": 120,
51373             "width": 24,
51374             "height": 24
51375         },
51376         "harbor-18": {
51377             "x": 186,
51378             "y": 120,
51379             "width": 18,
51380             "height": 18
51381         },
51382         "harbor-12": {
51383             "x": 204,
51384             "y": 120,
51385             "width": 12,
51386             "height": 12
51387         },
51388         "bicycle-24": {
51389             "x": 216,
51390             "y": 120,
51391             "width": 24,
51392             "height": 24
51393         },
51394         "bicycle-18": {
51395             "x": 240,
51396             "y": 120,
51397             "width": 18,
51398             "height": 18
51399         },
51400         "bicycle-12": {
51401             "x": 258,
51402             "y": 120,
51403             "width": 12,
51404             "height": 12
51405         },
51406         "park-24": {
51407             "x": 0,
51408             "y": 144,
51409             "width": 24,
51410             "height": 24
51411         },
51412         "park-18": {
51413             "x": 24,
51414             "y": 144,
51415             "width": 18,
51416             "height": 18
51417         },
51418         "park-12": {
51419             "x": 42,
51420             "y": 144,
51421             "width": 12,
51422             "height": 12
51423         },
51424         "park2-24": {
51425             "x": 54,
51426             "y": 144,
51427             "width": 24,
51428             "height": 24
51429         },
51430         "park2-18": {
51431             "x": 78,
51432             "y": 144,
51433             "width": 18,
51434             "height": 18
51435         },
51436         "park2-12": {
51437             "x": 96,
51438             "y": 144,
51439             "width": 12,
51440             "height": 12
51441         },
51442         "museum-24": {
51443             "x": 108,
51444             "y": 144,
51445             "width": 24,
51446             "height": 24
51447         },
51448         "museum-18": {
51449             "x": 132,
51450             "y": 144,
51451             "width": 18,
51452             "height": 18
51453         },
51454         "museum-12": {
51455             "x": 150,
51456             "y": 144,
51457             "width": 12,
51458             "height": 12
51459         },
51460         "lodging-24": {
51461             "x": 162,
51462             "y": 144,
51463             "width": 24,
51464             "height": 24
51465         },
51466         "lodging-18": {
51467             "x": 186,
51468             "y": 144,
51469             "width": 18,
51470             "height": 18
51471         },
51472         "lodging-12": {
51473             "x": 204,
51474             "y": 144,
51475             "width": 12,
51476             "height": 12
51477         },
51478         "monument-24": {
51479             "x": 216,
51480             "y": 144,
51481             "width": 24,
51482             "height": 24
51483         },
51484         "monument-18": {
51485             "x": 240,
51486             "y": 144,
51487             "width": 18,
51488             "height": 18
51489         },
51490         "monument-12": {
51491             "x": 258,
51492             "y": 144,
51493             "width": 12,
51494             "height": 12
51495         },
51496         "zoo-24": {
51497             "x": 0,
51498             "y": 168,
51499             "width": 24,
51500             "height": 24
51501         },
51502         "zoo-18": {
51503             "x": 24,
51504             "y": 168,
51505             "width": 18,
51506             "height": 18
51507         },
51508         "zoo-12": {
51509             "x": 42,
51510             "y": 168,
51511             "width": 12,
51512             "height": 12
51513         },
51514         "garden-24": {
51515             "x": 54,
51516             "y": 168,
51517             "width": 24,
51518             "height": 24
51519         },
51520         "garden-18": {
51521             "x": 78,
51522             "y": 168,
51523             "width": 18,
51524             "height": 18
51525         },
51526         "garden-12": {
51527             "x": 96,
51528             "y": 168,
51529             "width": 12,
51530             "height": 12
51531         },
51532         "campsite-24": {
51533             "x": 108,
51534             "y": 168,
51535             "width": 24,
51536             "height": 24
51537         },
51538         "campsite-18": {
51539             "x": 132,
51540             "y": 168,
51541             "width": 18,
51542             "height": 18
51543         },
51544         "campsite-12": {
51545             "x": 150,
51546             "y": 168,
51547             "width": 12,
51548             "height": 12
51549         },
51550         "theatre-24": {
51551             "x": 162,
51552             "y": 168,
51553             "width": 24,
51554             "height": 24
51555         },
51556         "theatre-18": {
51557             "x": 186,
51558             "y": 168,
51559             "width": 18,
51560             "height": 18
51561         },
51562         "theatre-12": {
51563             "x": 204,
51564             "y": 168,
51565             "width": 12,
51566             "height": 12
51567         },
51568         "art-gallery-24": {
51569             "x": 216,
51570             "y": 168,
51571             "width": 24,
51572             "height": 24
51573         },
51574         "art-gallery-18": {
51575             "x": 240,
51576             "y": 168,
51577             "width": 18,
51578             "height": 18
51579         },
51580         "art-gallery-12": {
51581             "x": 258,
51582             "y": 168,
51583             "width": 12,
51584             "height": 12
51585         },
51586         "pitch-24": {
51587             "x": 0,
51588             "y": 192,
51589             "width": 24,
51590             "height": 24
51591         },
51592         "pitch-18": {
51593             "x": 24,
51594             "y": 192,
51595             "width": 18,
51596             "height": 18
51597         },
51598         "pitch-12": {
51599             "x": 42,
51600             "y": 192,
51601             "width": 12,
51602             "height": 12
51603         },
51604         "soccer-24": {
51605             "x": 54,
51606             "y": 192,
51607             "width": 24,
51608             "height": 24
51609         },
51610         "soccer-18": {
51611             "x": 78,
51612             "y": 192,
51613             "width": 18,
51614             "height": 18
51615         },
51616         "soccer-12": {
51617             "x": 96,
51618             "y": 192,
51619             "width": 12,
51620             "height": 12
51621         },
51622         "america-football-24": {
51623             "x": 108,
51624             "y": 192,
51625             "width": 24,
51626             "height": 24
51627         },
51628         "america-football-18": {
51629             "x": 132,
51630             "y": 192,
51631             "width": 18,
51632             "height": 18
51633         },
51634         "america-football-12": {
51635             "x": 150,
51636             "y": 192,
51637             "width": 12,
51638             "height": 12
51639         },
51640         "tennis-24": {
51641             "x": 162,
51642             "y": 192,
51643             "width": 24,
51644             "height": 24
51645         },
51646         "tennis-18": {
51647             "x": 186,
51648             "y": 192,
51649             "width": 18,
51650             "height": 18
51651         },
51652         "tennis-12": {
51653             "x": 204,
51654             "y": 192,
51655             "width": 12,
51656             "height": 12
51657         },
51658         "basketball-24": {
51659             "x": 216,
51660             "y": 192,
51661             "width": 24,
51662             "height": 24
51663         },
51664         "basketball-18": {
51665             "x": 240,
51666             "y": 192,
51667             "width": 18,
51668             "height": 18
51669         },
51670         "basketball-12": {
51671             "x": 258,
51672             "y": 192,
51673             "width": 12,
51674             "height": 12
51675         },
51676         "baseball-24": {
51677             "x": 0,
51678             "y": 216,
51679             "width": 24,
51680             "height": 24
51681         },
51682         "baseball-18": {
51683             "x": 24,
51684             "y": 216,
51685             "width": 18,
51686             "height": 18
51687         },
51688         "baseball-12": {
51689             "x": 42,
51690             "y": 216,
51691             "width": 12,
51692             "height": 12
51693         },
51694         "golf-24": {
51695             "x": 54,
51696             "y": 216,
51697             "width": 24,
51698             "height": 24
51699         },
51700         "golf-18": {
51701             "x": 78,
51702             "y": 216,
51703             "width": 18,
51704             "height": 18
51705         },
51706         "golf-12": {
51707             "x": 96,
51708             "y": 216,
51709             "width": 12,
51710             "height": 12
51711         },
51712         "swimming-24": {
51713             "x": 108,
51714             "y": 216,
51715             "width": 24,
51716             "height": 24
51717         },
51718         "swimming-18": {
51719             "x": 132,
51720             "y": 216,
51721             "width": 18,
51722             "height": 18
51723         },
51724         "swimming-12": {
51725             "x": 150,
51726             "y": 216,
51727             "width": 12,
51728             "height": 12
51729         },
51730         "cricket-24": {
51731             "x": 162,
51732             "y": 216,
51733             "width": 24,
51734             "height": 24
51735         },
51736         "cricket-18": {
51737             "x": 186,
51738             "y": 216,
51739             "width": 18,
51740             "height": 18
51741         },
51742         "cricket-12": {
51743             "x": 204,
51744             "y": 216,
51745             "width": 12,
51746             "height": 12
51747         },
51748         "skiing-24": {
51749             "x": 216,
51750             "y": 216,
51751             "width": 24,
51752             "height": 24
51753         },
51754         "skiing-18": {
51755             "x": 240,
51756             "y": 216,
51757             "width": 18,
51758             "height": 18
51759         },
51760         "skiing-12": {
51761             "x": 258,
51762             "y": 216,
51763             "width": 12,
51764             "height": 12
51765         },
51766         "school-24": {
51767             "x": 0,
51768             "y": 240,
51769             "width": 24,
51770             "height": 24
51771         },
51772         "school-18": {
51773             "x": 24,
51774             "y": 240,
51775             "width": 18,
51776             "height": 18
51777         },
51778         "school-12": {
51779             "x": 42,
51780             "y": 240,
51781             "width": 12,
51782             "height": 12
51783         },
51784         "college-24": {
51785             "x": 54,
51786             "y": 240,
51787             "width": 24,
51788             "height": 24
51789         },
51790         "college-18": {
51791             "x": 78,
51792             "y": 240,
51793             "width": 18,
51794             "height": 18
51795         },
51796         "college-12": {
51797             "x": 96,
51798             "y": 240,
51799             "width": 12,
51800             "height": 12
51801         },
51802         "library-24": {
51803             "x": 108,
51804             "y": 240,
51805             "width": 24,
51806             "height": 24
51807         },
51808         "library-18": {
51809             "x": 132,
51810             "y": 240,
51811             "width": 18,
51812             "height": 18
51813         },
51814         "library-12": {
51815             "x": 150,
51816             "y": 240,
51817             "width": 12,
51818             "height": 12
51819         },
51820         "post-24": {
51821             "x": 162,
51822             "y": 240,
51823             "width": 24,
51824             "height": 24
51825         },
51826         "post-18": {
51827             "x": 186,
51828             "y": 240,
51829             "width": 18,
51830             "height": 18
51831         },
51832         "post-12": {
51833             "x": 204,
51834             "y": 240,
51835             "width": 12,
51836             "height": 12
51837         },
51838         "fire-station-24": {
51839             "x": 216,
51840             "y": 240,
51841             "width": 24,
51842             "height": 24
51843         },
51844         "fire-station-18": {
51845             "x": 240,
51846             "y": 240,
51847             "width": 18,
51848             "height": 18
51849         },
51850         "fire-station-12": {
51851             "x": 258,
51852             "y": 240,
51853             "width": 12,
51854             "height": 12
51855         },
51856         "town-hall-24": {
51857             "x": 0,
51858             "y": 264,
51859             "width": 24,
51860             "height": 24
51861         },
51862         "town-hall-18": {
51863             "x": 24,
51864             "y": 264,
51865             "width": 18,
51866             "height": 18
51867         },
51868         "town-hall-12": {
51869             "x": 42,
51870             "y": 264,
51871             "width": 12,
51872             "height": 12
51873         },
51874         "police-24": {
51875             "x": 54,
51876             "y": 264,
51877             "width": 24,
51878             "height": 24
51879         },
51880         "police-18": {
51881             "x": 78,
51882             "y": 264,
51883             "width": 18,
51884             "height": 18
51885         },
51886         "police-12": {
51887             "x": 96,
51888             "y": 264,
51889             "width": 12,
51890             "height": 12
51891         },
51892         "prison-24": {
51893             "x": 108,
51894             "y": 264,
51895             "width": 24,
51896             "height": 24
51897         },
51898         "prison-18": {
51899             "x": 132,
51900             "y": 264,
51901             "width": 18,
51902             "height": 18
51903         },
51904         "prison-12": {
51905             "x": 150,
51906             "y": 264,
51907             "width": 12,
51908             "height": 12
51909         },
51910         "embassy-24": {
51911             "x": 162,
51912             "y": 264,
51913             "width": 24,
51914             "height": 24
51915         },
51916         "embassy-18": {
51917             "x": 186,
51918             "y": 264,
51919             "width": 18,
51920             "height": 18
51921         },
51922         "embassy-12": {
51923             "x": 204,
51924             "y": 264,
51925             "width": 12,
51926             "height": 12
51927         },
51928         "beer-24": {
51929             "x": 216,
51930             "y": 264,
51931             "width": 24,
51932             "height": 24
51933         },
51934         "beer-18": {
51935             "x": 240,
51936             "y": 264,
51937             "width": 18,
51938             "height": 18
51939         },
51940         "beer-12": {
51941             "x": 258,
51942             "y": 264,
51943             "width": 12,
51944             "height": 12
51945         },
51946         "restaurant-24": {
51947             "x": 0,
51948             "y": 288,
51949             "width": 24,
51950             "height": 24
51951         },
51952         "restaurant-18": {
51953             "x": 24,
51954             "y": 288,
51955             "width": 18,
51956             "height": 18
51957         },
51958         "restaurant-12": {
51959             "x": 42,
51960             "y": 288,
51961             "width": 12,
51962             "height": 12
51963         },
51964         "cafe-24": {
51965             "x": 54,
51966             "y": 288,
51967             "width": 24,
51968             "height": 24
51969         },
51970         "cafe-18": {
51971             "x": 78,
51972             "y": 288,
51973             "width": 18,
51974             "height": 18
51975         },
51976         "cafe-12": {
51977             "x": 96,
51978             "y": 288,
51979             "width": 12,
51980             "height": 12
51981         },
51982         "shop-24": {
51983             "x": 108,
51984             "y": 288,
51985             "width": 24,
51986             "height": 24
51987         },
51988         "shop-18": {
51989             "x": 132,
51990             "y": 288,
51991             "width": 18,
51992             "height": 18
51993         },
51994         "shop-12": {
51995             "x": 150,
51996             "y": 288,
51997             "width": 12,
51998             "height": 12
51999         },
52000         "fast-food-24": {
52001             "x": 162,
52002             "y": 288,
52003             "width": 24,
52004             "height": 24
52005         },
52006         "fast-food-18": {
52007             "x": 186,
52008             "y": 288,
52009             "width": 18,
52010             "height": 18
52011         },
52012         "fast-food-12": {
52013             "x": 204,
52014             "y": 288,
52015             "width": 12,
52016             "height": 12
52017         },
52018         "bar-24": {
52019             "x": 216,
52020             "y": 288,
52021             "width": 24,
52022             "height": 24
52023         },
52024         "bar-18": {
52025             "x": 240,
52026             "y": 288,
52027             "width": 18,
52028             "height": 18
52029         },
52030         "bar-12": {
52031             "x": 258,
52032             "y": 288,
52033             "width": 12,
52034             "height": 12
52035         },
52036         "bank-24": {
52037             "x": 0,
52038             "y": 312,
52039             "width": 24,
52040             "height": 24
52041         },
52042         "bank-18": {
52043             "x": 24,
52044             "y": 312,
52045             "width": 18,
52046             "height": 18
52047         },
52048         "bank-12": {
52049             "x": 42,
52050             "y": 312,
52051             "width": 12,
52052             "height": 12
52053         },
52054         "grocery-24": {
52055             "x": 54,
52056             "y": 312,
52057             "width": 24,
52058             "height": 24
52059         },
52060         "grocery-18": {
52061             "x": 78,
52062             "y": 312,
52063             "width": 18,
52064             "height": 18
52065         },
52066         "grocery-12": {
52067             "x": 96,
52068             "y": 312,
52069             "width": 12,
52070             "height": 12
52071         },
52072         "cinema-24": {
52073             "x": 108,
52074             "y": 312,
52075             "width": 24,
52076             "height": 24
52077         },
52078         "cinema-18": {
52079             "x": 132,
52080             "y": 312,
52081             "width": 18,
52082             "height": 18
52083         },
52084         "cinema-12": {
52085             "x": 150,
52086             "y": 312,
52087             "width": 12,
52088             "height": 12
52089         },
52090         "pharmacy-24": {
52091             "x": 162,
52092             "y": 312,
52093             "width": 24,
52094             "height": 24
52095         },
52096         "pharmacy-18": {
52097             "x": 186,
52098             "y": 312,
52099             "width": 18,
52100             "height": 18
52101         },
52102         "pharmacy-12": {
52103             "x": 204,
52104             "y": 312,
52105             "width": 12,
52106             "height": 12
52107         },
52108         "hospital-24": {
52109             "x": 216,
52110             "y": 312,
52111             "width": 24,
52112             "height": 24
52113         },
52114         "hospital-18": {
52115             "x": 240,
52116             "y": 312,
52117             "width": 18,
52118             "height": 18
52119         },
52120         "hospital-12": {
52121             "x": 258,
52122             "y": 312,
52123             "width": 12,
52124             "height": 12
52125         },
52126         "danger-24": {
52127             "x": 0,
52128             "y": 336,
52129             "width": 24,
52130             "height": 24
52131         },
52132         "danger-18": {
52133             "x": 24,
52134             "y": 336,
52135             "width": 18,
52136             "height": 18
52137         },
52138         "danger-12": {
52139             "x": 42,
52140             "y": 336,
52141             "width": 12,
52142             "height": 12
52143         },
52144         "industrial-24": {
52145             "x": 54,
52146             "y": 336,
52147             "width": 24,
52148             "height": 24
52149         },
52150         "industrial-18": {
52151             "x": 78,
52152             "y": 336,
52153             "width": 18,
52154             "height": 18
52155         },
52156         "industrial-12": {
52157             "x": 96,
52158             "y": 336,
52159             "width": 12,
52160             "height": 12
52161         },
52162         "warehouse-24": {
52163             "x": 108,
52164             "y": 336,
52165             "width": 24,
52166             "height": 24
52167         },
52168         "warehouse-18": {
52169             "x": 132,
52170             "y": 336,
52171             "width": 18,
52172             "height": 18
52173         },
52174         "warehouse-12": {
52175             "x": 150,
52176             "y": 336,
52177             "width": 12,
52178             "height": 12
52179         },
52180         "commercial-24": {
52181             "x": 162,
52182             "y": 336,
52183             "width": 24,
52184             "height": 24
52185         },
52186         "commercial-18": {
52187             "x": 186,
52188             "y": 336,
52189             "width": 18,
52190             "height": 18
52191         },
52192         "commercial-12": {
52193             "x": 204,
52194             "y": 336,
52195             "width": 12,
52196             "height": 12
52197         },
52198         "building-24": {
52199             "x": 216,
52200             "y": 336,
52201             "width": 24,
52202             "height": 24
52203         },
52204         "building-18": {
52205             "x": 240,
52206             "y": 336,
52207             "width": 18,
52208             "height": 18
52209         },
52210         "building-12": {
52211             "x": 258,
52212             "y": 336,
52213             "width": 12,
52214             "height": 12
52215         },
52216         "place-of-worship-24": {
52217             "x": 0,
52218             "y": 360,
52219             "width": 24,
52220             "height": 24
52221         },
52222         "place-of-worship-18": {
52223             "x": 24,
52224             "y": 360,
52225             "width": 18,
52226             "height": 18
52227         },
52228         "place-of-worship-12": {
52229             "x": 42,
52230             "y": 360,
52231             "width": 12,
52232             "height": 12
52233         },
52234         "alcohol-shop-24": {
52235             "x": 54,
52236             "y": 360,
52237             "width": 24,
52238             "height": 24
52239         },
52240         "alcohol-shop-18": {
52241             "x": 78,
52242             "y": 360,
52243             "width": 18,
52244             "height": 18
52245         },
52246         "alcohol-shop-12": {
52247             "x": 96,
52248             "y": 360,
52249             "width": 12,
52250             "height": 12
52251         },
52252         "logging-24": {
52253             "x": 108,
52254             "y": 360,
52255             "width": 24,
52256             "height": 24
52257         },
52258         "logging-18": {
52259             "x": 132,
52260             "y": 360,
52261             "width": 18,
52262             "height": 18
52263         },
52264         "logging-12": {
52265             "x": 150,
52266             "y": 360,
52267             "width": 12,
52268             "height": 12
52269         },
52270         "oil-well-24": {
52271             "x": 162,
52272             "y": 360,
52273             "width": 24,
52274             "height": 24
52275         },
52276         "oil-well-18": {
52277             "x": 186,
52278             "y": 360,
52279             "width": 18,
52280             "height": 18
52281         },
52282         "oil-well-12": {
52283             "x": 204,
52284             "y": 360,
52285             "width": 12,
52286             "height": 12
52287         },
52288         "slaughterhouse-24": {
52289             "x": 216,
52290             "y": 360,
52291             "width": 24,
52292             "height": 24
52293         },
52294         "slaughterhouse-18": {
52295             "x": 240,
52296             "y": 360,
52297             "width": 18,
52298             "height": 18
52299         },
52300         "slaughterhouse-12": {
52301             "x": 258,
52302             "y": 360,
52303             "width": 12,
52304             "height": 12
52305         },
52306         "dam-24": {
52307             "x": 0,
52308             "y": 384,
52309             "width": 24,
52310             "height": 24
52311         },
52312         "dam-18": {
52313             "x": 24,
52314             "y": 384,
52315             "width": 18,
52316             "height": 18
52317         },
52318         "dam-12": {
52319             "x": 42,
52320             "y": 384,
52321             "width": 12,
52322             "height": 12
52323         },
52324         "water-24": {
52325             "x": 54,
52326             "y": 384,
52327             "width": 24,
52328             "height": 24
52329         },
52330         "water-18": {
52331             "x": 78,
52332             "y": 384,
52333             "width": 18,
52334             "height": 18
52335         },
52336         "water-12": {
52337             "x": 96,
52338             "y": 384,
52339             "width": 12,
52340             "height": 12
52341         },
52342         "wetland-24": {
52343             "x": 108,
52344             "y": 384,
52345             "width": 24,
52346             "height": 24
52347         },
52348         "wetland-18": {
52349             "x": 132,
52350             "y": 384,
52351             "width": 18,
52352             "height": 18
52353         },
52354         "wetland-12": {
52355             "x": 150,
52356             "y": 384,
52357             "width": 12,
52358             "height": 12
52359         },
52360         "disability-24": {
52361             "x": 162,
52362             "y": 384,
52363             "width": 24,
52364             "height": 24
52365         },
52366         "disability-18": {
52367             "x": 186,
52368             "y": 384,
52369             "width": 18,
52370             "height": 18
52371         },
52372         "disability-12": {
52373             "x": 204,
52374             "y": 384,
52375             "width": 12,
52376             "height": 12
52377         },
52378         "telephone-24": {
52379             "x": 216,
52380             "y": 384,
52381             "width": 24,
52382             "height": 24
52383         },
52384         "telephone-18": {
52385             "x": 240,
52386             "y": 384,
52387             "width": 18,
52388             "height": 18
52389         },
52390         "telephone-12": {
52391             "x": 258,
52392             "y": 384,
52393             "width": 12,
52394             "height": 12
52395         },
52396         "emergency-telephone-24": {
52397             "x": 0,
52398             "y": 408,
52399             "width": 24,
52400             "height": 24
52401         },
52402         "emergency-telephone-18": {
52403             "x": 24,
52404             "y": 408,
52405             "width": 18,
52406             "height": 18
52407         },
52408         "emergency-telephone-12": {
52409             "x": 42,
52410             "y": 408,
52411             "width": 12,
52412             "height": 12
52413         },
52414         "toilets-24": {
52415             "x": 54,
52416             "y": 408,
52417             "width": 24,
52418             "height": 24
52419         },
52420         "toilets-18": {
52421             "x": 78,
52422             "y": 408,
52423             "width": 18,
52424             "height": 18
52425         },
52426         "toilets-12": {
52427             "x": 96,
52428             "y": 408,
52429             "width": 12,
52430             "height": 12
52431         },
52432         "waste-basket-24": {
52433             "x": 108,
52434             "y": 408,
52435             "width": 24,
52436             "height": 24
52437         },
52438         "waste-basket-18": {
52439             "x": 132,
52440             "y": 408,
52441             "width": 18,
52442             "height": 18
52443         },
52444         "waste-basket-12": {
52445             "x": 150,
52446             "y": 408,
52447             "width": 12,
52448             "height": 12
52449         },
52450         "music-24": {
52451             "x": 162,
52452             "y": 408,
52453             "width": 24,
52454             "height": 24
52455         },
52456         "music-18": {
52457             "x": 186,
52458             "y": 408,
52459             "width": 18,
52460             "height": 18
52461         },
52462         "music-12": {
52463             "x": 204,
52464             "y": 408,
52465             "width": 12,
52466             "height": 12
52467         },
52468         "land-use-24": {
52469             "x": 216,
52470             "y": 408,
52471             "width": 24,
52472             "height": 24
52473         },
52474         "land-use-18": {
52475             "x": 240,
52476             "y": 408,
52477             "width": 18,
52478             "height": 18
52479         },
52480         "land-use-12": {
52481             "x": 258,
52482             "y": 408,
52483             "width": 12,
52484             "height": 12
52485         },
52486         "city-24": {
52487             "x": 0,
52488             "y": 432,
52489             "width": 24,
52490             "height": 24
52491         },
52492         "city-18": {
52493             "x": 24,
52494             "y": 432,
52495             "width": 18,
52496             "height": 18
52497         },
52498         "city-12": {
52499             "x": 42,
52500             "y": 432,
52501             "width": 12,
52502             "height": 12
52503         },
52504         "town-24": {
52505             "x": 54,
52506             "y": 432,
52507             "width": 24,
52508             "height": 24
52509         },
52510         "town-18": {
52511             "x": 78,
52512             "y": 432,
52513             "width": 18,
52514             "height": 18
52515         },
52516         "town-12": {
52517             "x": 96,
52518             "y": 432,
52519             "width": 12,
52520             "height": 12
52521         },
52522         "village-24": {
52523             "x": 108,
52524             "y": 432,
52525             "width": 24,
52526             "height": 24
52527         },
52528         "village-18": {
52529             "x": 132,
52530             "y": 432,
52531             "width": 18,
52532             "height": 18
52533         },
52534         "village-12": {
52535             "x": 150,
52536             "y": 432,
52537             "width": 12,
52538             "height": 12
52539         },
52540         "farm-24": {
52541             "x": 162,
52542             "y": 432,
52543             "width": 24,
52544             "height": 24
52545         },
52546         "farm-18": {
52547             "x": 186,
52548             "y": 432,
52549             "width": 18,
52550             "height": 18
52551         },
52552         "farm-12": {
52553             "x": 204,
52554             "y": 432,
52555             "width": 12,
52556             "height": 12
52557         },
52558         "bakery-24": {
52559             "x": 216,
52560             "y": 432,
52561             "width": 24,
52562             "height": 24
52563         },
52564         "bakery-18": {
52565             "x": 240,
52566             "y": 432,
52567             "width": 18,
52568             "height": 18
52569         },
52570         "bakery-12": {
52571             "x": 258,
52572             "y": 432,
52573             "width": 12,
52574             "height": 12
52575         },
52576         "dog-park-24": {
52577             "x": 0,
52578             "y": 456,
52579             "width": 24,
52580             "height": 24
52581         },
52582         "dog-park-18": {
52583             "x": 24,
52584             "y": 456,
52585             "width": 18,
52586             "height": 18
52587         },
52588         "dog-park-12": {
52589             "x": 42,
52590             "y": 456,
52591             "width": 12,
52592             "height": 12
52593         },
52594         "lighthouse-24": {
52595             "x": 54,
52596             "y": 456,
52597             "width": 24,
52598             "height": 24
52599         },
52600         "lighthouse-18": {
52601             "x": 78,
52602             "y": 456,
52603             "width": 18,
52604             "height": 18
52605         },
52606         "lighthouse-12": {
52607             "x": 96,
52608             "y": 456,
52609             "width": 12,
52610             "height": 12
52611         },
52612         "clothing-store-24": {
52613             "x": 108,
52614             "y": 456,
52615             "width": 24,
52616             "height": 24
52617         },
52618         "clothing-store-18": {
52619             "x": 132,
52620             "y": 456,
52621             "width": 18,
52622             "height": 18
52623         },
52624         "clothing-store-12": {
52625             "x": 150,
52626             "y": 456,
52627             "width": 12,
52628             "height": 12
52629         },
52630         "polling-place-24": {
52631             "x": 162,
52632             "y": 456,
52633             "width": 24,
52634             "height": 24
52635         },
52636         "polling-place-18": {
52637             "x": 186,
52638             "y": 456,
52639             "width": 18,
52640             "height": 18
52641         },
52642         "polling-place-12": {
52643             "x": 204,
52644             "y": 456,
52645             "width": 12,
52646             "height": 12
52647         },
52648         "playground-24": {
52649             "x": 216,
52650             "y": 456,
52651             "width": 24,
52652             "height": 24
52653         },
52654         "playground-18": {
52655             "x": 240,
52656             "y": 456,
52657             "width": 18,
52658             "height": 18
52659         },
52660         "playground-12": {
52661             "x": 258,
52662             "y": 456,
52663             "width": 12,
52664             "height": 12
52665         },
52666         "entrance-24": {
52667             "x": 0,
52668             "y": 480,
52669             "width": 24,
52670             "height": 24
52671         },
52672         "entrance-18": {
52673             "x": 24,
52674             "y": 480,
52675             "width": 18,
52676             "height": 18
52677         },
52678         "entrance-12": {
52679             "x": 42,
52680             "y": 480,
52681             "width": 12,
52682             "height": 12
52683         },
52684         "heart-24": {
52685             "x": 54,
52686             "y": 480,
52687             "width": 24,
52688             "height": 24
52689         },
52690         "heart-18": {
52691             "x": 78,
52692             "y": 480,
52693             "width": 18,
52694             "height": 18
52695         },
52696         "heart-12": {
52697             "x": 96,
52698             "y": 480,
52699             "width": 12,
52700             "height": 12
52701         },
52702         "london-underground-24": {
52703             "x": 108,
52704             "y": 480,
52705             "width": 24,
52706             "height": 24
52707         },
52708         "london-underground-18": {
52709             "x": 132,
52710             "y": 480,
52711             "width": 18,
52712             "height": 18
52713         },
52714         "london-underground-12": {
52715             "x": 150,
52716             "y": 480,
52717             "width": 12,
52718             "height": 12
52719         },
52720         "minefield-24": {
52721             "x": 162,
52722             "y": 480,
52723             "width": 24,
52724             "height": 24
52725         },
52726         "minefield-18": {
52727             "x": 186,
52728             "y": 480,
52729             "width": 18,
52730             "height": 18
52731         },
52732         "minefield-12": {
52733             "x": 204,
52734             "y": 480,
52735             "width": 12,
52736             "height": 12
52737         },
52738         "rail-underground-24": {
52739             "x": 216,
52740             "y": 480,
52741             "width": 24,
52742             "height": 24
52743         },
52744         "rail-underground-18": {
52745             "x": 240,
52746             "y": 480,
52747             "width": 18,
52748             "height": 18
52749         },
52750         "rail-underground-12": {
52751             "x": 258,
52752             "y": 480,
52753             "width": 12,
52754             "height": 12
52755         },
52756         "rail-above-24": {
52757             "x": 0,
52758             "y": 504,
52759             "width": 24,
52760             "height": 24
52761         },
52762         "rail-above-18": {
52763             "x": 24,
52764             "y": 504,
52765             "width": 18,
52766             "height": 18
52767         },
52768         "rail-above-12": {
52769             "x": 42,
52770             "y": 504,
52771             "width": 12,
52772             "height": 12
52773         },
52774         "camera-24": {
52775             "x": 54,
52776             "y": 504,
52777             "width": 24,
52778             "height": 24
52779         },
52780         "camera-18": {
52781             "x": 78,
52782             "y": 504,
52783             "width": 18,
52784             "height": 18
52785         },
52786         "camera-12": {
52787             "x": 96,
52788             "y": 504,
52789             "width": 12,
52790             "height": 12
52791         },
52792         "laundry-24": {
52793             "x": 108,
52794             "y": 504,
52795             "width": 24,
52796             "height": 24
52797         },
52798         "laundry-18": {
52799             "x": 132,
52800             "y": 504,
52801             "width": 18,
52802             "height": 18
52803         },
52804         "laundry-12": {
52805             "x": 150,
52806             "y": 504,
52807             "width": 12,
52808             "height": 12
52809         },
52810         "car-24": {
52811             "x": 162,
52812             "y": 504,
52813             "width": 24,
52814             "height": 24
52815         },
52816         "car-18": {
52817             "x": 186,
52818             "y": 504,
52819             "width": 18,
52820             "height": 18
52821         },
52822         "car-12": {
52823             "x": 204,
52824             "y": 504,
52825             "width": 12,
52826             "height": 12
52827         },
52828         "suitcase-24": {
52829             "x": 216,
52830             "y": 504,
52831             "width": 24,
52832             "height": 24
52833         },
52834         "suitcase-18": {
52835             "x": 240,
52836             "y": 504,
52837             "width": 18,
52838             "height": 18
52839         },
52840         "suitcase-12": {
52841             "x": 258,
52842             "y": 504,
52843             "width": 12,
52844             "height": 12
52845         },
52846         "hairdresser-24": {
52847             "x": 0,
52848             "y": 528,
52849             "width": 24,
52850             "height": 24
52851         },
52852         "hairdresser-18": {
52853             "x": 24,
52854             "y": 528,
52855             "width": 18,
52856             "height": 18
52857         },
52858         "hairdresser-12": {
52859             "x": 42,
52860             "y": 528,
52861             "width": 12,
52862             "height": 12
52863         },
52864         "chemist-24": {
52865             "x": 54,
52866             "y": 528,
52867             "width": 24,
52868             "height": 24
52869         },
52870         "chemist-18": {
52871             "x": 78,
52872             "y": 528,
52873             "width": 18,
52874             "height": 18
52875         },
52876         "chemist-12": {
52877             "x": 96,
52878             "y": 528,
52879             "width": 12,
52880             "height": 12
52881         },
52882         "mobilephone-24": {
52883             "x": 108,
52884             "y": 528,
52885             "width": 24,
52886             "height": 24
52887         },
52888         "mobilephone-18": {
52889             "x": 132,
52890             "y": 528,
52891             "width": 18,
52892             "height": 18
52893         },
52894         "mobilephone-12": {
52895             "x": 150,
52896             "y": 528,
52897             "width": 12,
52898             "height": 12
52899         },
52900         "scooter-24": {
52901             "x": 162,
52902             "y": 528,
52903             "width": 24,
52904             "height": 24
52905         },
52906         "scooter-18": {
52907             "x": 186,
52908             "y": 528,
52909             "width": 18,
52910             "height": 18
52911         },
52912         "scooter-12": {
52913             "x": 204,
52914             "y": 528,
52915             "width": 12,
52916             "height": 12
52917         },
52918         "gift-24": {
52919             "x": 216,
52920             "y": 528,
52921             "width": 24,
52922             "height": 24
52923         },
52924         "gift-18": {
52925             "x": 240,
52926             "y": 528,
52927             "width": 18,
52928             "height": 18
52929         },
52930         "gift-12": {
52931             "x": 258,
52932             "y": 528,
52933             "width": 12,
52934             "height": 12
52935         },
52936         "ice-cream-24": {
52937             "x": 0,
52938             "y": 552,
52939             "width": 24,
52940             "height": 24
52941         },
52942         "ice-cream-18": {
52943             "x": 24,
52944             "y": 552,
52945             "width": 18,
52946             "height": 18
52947         },
52948         "ice-cream-12": {
52949             "x": 42,
52950             "y": 552,
52951             "width": 12,
52952             "height": 12
52953         }
52954     },
52955     "locales": [
52956         "af",
52957         "sq",
52958         "ar",
52959         "ar-AA",
52960         "hy",
52961         "ast",
52962         "bn",
52963         "bs",
52964         "bg-BG",
52965         "ca",
52966         "zh",
52967         "zh-CN",
52968         "zh-HK",
52969         "zh-TW",
52970         "yue",
52971         "hr",
52972         "cs",
52973         "da",
52974         "nl",
52975         "en-GB",
52976         "eo",
52977         "et",
52978         "fi",
52979         "fr",
52980         "gl",
52981         "de",
52982         "el",
52983         "hu",
52984         "is",
52985         "id",
52986         "it",
52987         "ja",
52988         "kn",
52989         "ko",
52990         "ko-KR",
52991         "lv",
52992         "lt",
52993         "no",
52994         "fa",
52995         "pl",
52996         "pt",
52997         "pt-BR",
52998         "ro",
52999         "ru",
53000         "sc",
53001         "sr",
53002         "si",
53003         "sk",
53004         "sl",
53005         "es",
53006         "sv",
53007         "tl",
53008         "ta",
53009         "te",
53010         "tr",
53011         "uk",
53012         "vi"
53013     ],
53014     "en": {
53015         "modes": {
53016             "add_area": {
53017                 "title": "Area",
53018                 "description": "Add parks, buildings, lakes or other areas to the map.",
53019                 "tail": "Click on the map to start drawing an area, like a park, lake, or building."
53020             },
53021             "add_line": {
53022                 "title": "Line",
53023                 "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.",
53024                 "tail": "Click on the map to start drawing a road, path, or route."
53025             },
53026             "add_point": {
53027                 "title": "Point",
53028                 "description": "Add restaurants, monuments, postal boxes or other points to the map.",
53029                 "tail": "Click on the map to add a point."
53030             },
53031             "browse": {
53032                 "title": "Browse",
53033                 "description": "Pan and zoom the map."
53034             },
53035             "draw_area": {
53036                 "tail": "Click to add nodes to your area. Click the first node to finish the area."
53037             },
53038             "draw_line": {
53039                 "tail": "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line."
53040             }
53041         },
53042         "operations": {
53043             "add": {
53044                 "annotation": {
53045                     "point": "Added a point.",
53046                     "vertex": "Added a node to a way.",
53047                     "relation": "Added a relation."
53048                 }
53049             },
53050             "start": {
53051                 "annotation": {
53052                     "line": "Started a line.",
53053                     "area": "Started an area."
53054                 }
53055             },
53056             "continue": {
53057                 "key": "A",
53058                 "title": "Continue",
53059                 "description": "Continue this line.",
53060                 "not_eligible": "No line can be continued here.",
53061                 "multiple": "Several lines can be continued here. To choose a line, press the Shift key and click on it to select it.",
53062                 "annotation": {
53063                     "line": "Continued a line.",
53064                     "area": "Continued an area."
53065                 }
53066             },
53067             "cancel_draw": {
53068                 "annotation": "Canceled drawing."
53069             },
53070             "change_role": {
53071                 "annotation": "Changed the role of a relation member."
53072             },
53073             "change_tags": {
53074                 "annotation": "Changed tags."
53075             },
53076             "circularize": {
53077                 "title": "Circularize",
53078                 "description": {
53079                     "line": "Make this line circular.",
53080                     "area": "Make this area circular."
53081                 },
53082                 "key": "O",
53083                 "annotation": {
53084                     "line": "Made a line circular.",
53085                     "area": "Made an area circular."
53086                 },
53087                 "not_closed": "This can't be made circular because it's not a loop.",
53088                 "too_large": "This can't be made circular because not enough of it is currently visible.",
53089                 "connected_to_hidden": "This can't be made circular because it is connected to a hidden feature."
53090             },
53091             "orthogonalize": {
53092                 "title": "Square",
53093                 "description": {
53094                     "line": "Square the corners of this line.",
53095                     "area": "Square the corners of this area."
53096                 },
53097                 "key": "S",
53098                 "annotation": {
53099                     "line": "Squared the corners of a line.",
53100                     "area": "Squared the corners of an area."
53101                 },
53102                 "not_squarish": "This can't be made square because it is not squarish.",
53103                 "too_large": "This can't be made square because not enough of it is currently visible.",
53104                 "connected_to_hidden": "This can't be made square because it is connected to a hidden feature."
53105             },
53106             "straighten": {
53107                 "title": "Straighten",
53108                 "description": "Straighten this line.",
53109                 "key": "S",
53110                 "annotation": "Straightened a line.",
53111                 "too_bendy": "This can't be straightened because it bends too much.",
53112                 "connected_to_hidden": "This line can't be straightened because it is connected to a hidden feature."
53113             },
53114             "delete": {
53115                 "title": "Delete",
53116                 "description": "Delete object permanently.",
53117                 "annotation": {
53118                     "point": "Deleted a point.",
53119                     "vertex": "Deleted a node from a way.",
53120                     "line": "Deleted a line.",
53121                     "area": "Deleted an area.",
53122                     "relation": "Deleted a relation.",
53123                     "multiple": "Deleted {n} objects."
53124                 },
53125                 "incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded.",
53126                 "part_of_relation": "This feature can't be deleted because it's part of a larger relation. You must remove it from the relation first.",
53127                 "connected_to_hidden": "This can't be deleted because it is connected to a hidden feature."
53128             },
53129             "add_member": {
53130                 "annotation": "Added a member to a relation."
53131             },
53132             "delete_member": {
53133                 "annotation": "Removed a member from a relation."
53134             },
53135             "connect": {
53136                 "annotation": {
53137                     "point": "Connected a way to a point.",
53138                     "vertex": "Connected a way to another.",
53139                     "line": "Connected a way to a line.",
53140                     "area": "Connected a way to an area."
53141                 }
53142             },
53143             "disconnect": {
53144                 "title": "Disconnect",
53145                 "description": "Disconnect these lines/areas from each other.",
53146                 "key": "D",
53147                 "annotation": "Disconnected lines/areas.",
53148                 "not_connected": "There aren't enough lines/areas here to disconnect.",
53149                 "connected_to_hidden": "This can't be disconnected because it is connected to a hidden feature."
53150             },
53151             "merge": {
53152                 "title": "Merge",
53153                 "description": "Merge these features.",
53154                 "key": "C",
53155                 "annotation": "Merged {n} features.",
53156                 "not_eligible": "These features can't be merged.",
53157                 "not_adjacent": "These features can't be merged because they aren't connected.",
53158                 "restriction": "These features can't be merged because at least one is a member of a \"{relation}\" relation.",
53159                 "incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded.",
53160                 "conflicting_tags": "These features can't be merged because some of their tags have conflicting values."
53161             },
53162             "move": {
53163                 "title": "Move",
53164                 "description": "Move this to a different location.",
53165                 "key": "M",
53166                 "annotation": {
53167                     "point": "Moved a point.",
53168                     "vertex": "Moved a node in a way.",
53169                     "line": "Moved a line.",
53170                     "area": "Moved an area.",
53171                     "multiple": "Moved multiple objects."
53172                 },
53173                 "incomplete_relation": "This feature can't be moved because it hasn't been fully downloaded.",
53174                 "too_large": "This can't be moved because not enough of it is currently visible.",
53175                 "connected_to_hidden": "This can't be moved because it is connected to a hidden feature."
53176             },
53177             "rotate": {
53178                 "title": "Rotate",
53179                 "description": "Rotate this object around its center point.",
53180                 "key": "R",
53181                 "annotation": {
53182                     "line": "Rotated a line.",
53183                     "area": "Rotated an area."
53184                 },
53185                 "too_large": "This can't be rotated because not enough of it is currently visible.",
53186                 "connected_to_hidden": "This can't be rotated because it is connected to a hidden feature."
53187             },
53188             "reverse": {
53189                 "title": "Reverse",
53190                 "description": "Make this line go in the opposite direction.",
53191                 "key": "V",
53192                 "annotation": "Reversed a line."
53193             },
53194             "split": {
53195                 "title": "Split",
53196                 "description": {
53197                     "line": "Split this line into two at this node.",
53198                     "area": "Split the boundary of this area into two.",
53199                     "multiple": "Split the lines/area boundaries at this node into two."
53200                 },
53201                 "key": "X",
53202                 "annotation": {
53203                     "line": "Split a line.",
53204                     "area": "Split an area boundary.",
53205                     "multiple": "Split {n} lines/area boundaries."
53206                 },
53207                 "not_eligible": "Lines can't be split at their beginning or end.",
53208                 "multiple_ways": "There are too many lines here to split.",
53209                 "connected_to_hidden": "This can't be split because it is connected to a hidden feature."
53210             },
53211             "restriction": {
53212                 "help": {
53213                     "select": "Click to select a road segment.",
53214                     "toggle": "Click to toggle turn restrictions.",
53215                     "toggle_on": "Click to add a \"{restriction}\" restriction.",
53216                     "toggle_off": "Click to remove the \"{restriction}\" restriction."
53217                 },
53218                 "annotation": {
53219                     "create": "Added a turn restriction",
53220                     "delete": "Deleted a turn restriction"
53221                 }
53222             }
53223         },
53224         "undo": {
53225             "tooltip": "Undo: {action}",
53226             "nothing": "Nothing to undo."
53227         },
53228         "redo": {
53229             "tooltip": "Redo: {action}",
53230             "nothing": "Nothing to redo."
53231         },
53232         "tooltip_keyhint": "Shortcut:",
53233         "browser_notice": "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 11 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
53234         "translate": {
53235             "translate": "Translate",
53236             "localized_translation_label": "Multilingual name",
53237             "localized_translation_language": "Choose language",
53238             "localized_translation_name": "Name"
53239         },
53240         "zoom_in_edit": "Zoom in to Edit",
53241         "logout": "logout",
53242         "loading_auth": "Connecting to OpenStreetMap...",
53243         "report_a_bug": "Report a bug",
53244         "help_translate": "Help translate",
53245         "feature_info": {
53246             "hidden_warning": "{count} hidden features",
53247             "hidden_details": "These features are currently hidden: {details}"
53248         },
53249         "status": {
53250             "error": "Unable to connect to API.",
53251             "offline": "The API is offline. Please try editing later.",
53252             "readonly": "The API is read-only. You will need to wait to save your changes."
53253         },
53254         "commit": {
53255             "title": "Save Changes",
53256             "description_placeholder": "Brief description of your contributions",
53257             "message_label": "Changeset comment",
53258             "upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.",
53259             "upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
53260             "save": "Save",
53261             "cancel": "Cancel",
53262             "changes": "{count} Changes",
53263             "warnings": "Warnings",
53264             "modified": "Modified",
53265             "deleted": "Deleted",
53266             "created": "Created"
53267         },
53268         "contributors": {
53269             "list": "Edits by {users}",
53270             "truncated_list": "Edits by {users} and {count} others"
53271         },
53272         "infobox": {
53273             "selected": "{n} selected",
53274             "geometry": "Geometry",
53275             "closed": "closed",
53276             "center": "Center",
53277             "perimeter": "Perimeter",
53278             "length": "Length",
53279             "area": "Area",
53280             "centroid": "Centroid",
53281             "location": "Location",
53282             "metric": "Metric",
53283             "imperial": "Imperial"
53284         },
53285         "geometry": {
53286             "point": "point",
53287             "vertex": "vertex",
53288             "line": "line",
53289             "area": "area",
53290             "relation": "relation"
53291         },
53292         "geocoder": {
53293             "search": "Search worldwide...",
53294             "no_results_visible": "No results in visible map area",
53295             "no_results_worldwide": "No results found"
53296         },
53297         "geolocate": {
53298             "title": "Show My Location"
53299         },
53300         "inspector": {
53301             "no_documentation_combination": "There is no documentation available for this tag combination",
53302             "no_documentation_key": "There is no documentation available for this key",
53303             "show_more": "Show More",
53304             "view_on_osm": "View on openstreetmap.org",
53305             "all_tags": "All tags",
53306             "all_members": "All members",
53307             "all_relations": "All relations",
53308             "new_relation": "New relation...",
53309             "role": "Role",
53310             "choose": "Select feature type",
53311             "results": "{n} results for {search}",
53312             "reference": "View on OpenStreetMap Wiki",
53313             "back_tooltip": "Change feature",
53314             "remove": "Remove",
53315             "search": "Search",
53316             "multiselect": "Selected items",
53317             "unknown": "Unknown",
53318             "incomplete": "<not downloaded>",
53319             "feature_list": "Search features",
53320             "edit": "Edit feature",
53321             "check": {
53322                 "yes": "Yes",
53323                 "no": "No"
53324             },
53325             "none": "None",
53326             "node": "Node",
53327             "way": "Way",
53328             "relation": "Relation",
53329             "location": "Location",
53330             "add_fields": "Add field:"
53331         },
53332         "background": {
53333             "title": "Background",
53334             "description": "Background settings",
53335             "percent_brightness": "{opacity}% brightness",
53336             "none": "None",
53337             "custom": "Custom",
53338             "custom_button": "Edit custom background",
53339             "custom_prompt": "Enter a tile URL template. Valid tokens are {z}, {x}, {y} for Z/X/Y scheme and {u} for quadtile scheme.",
53340             "fix_misalignment": "Fix alignment",
53341             "reset": "reset",
53342             "minimap": {
53343                 "description": "Minimap",
53344                 "tooltip": "Show a zoomed out map to help locate the area currently displayed."
53345             }
53346         },
53347         "map_data": {
53348             "title": "Map Data",
53349             "description": "Map Data",
53350             "data_layers": "Data Layers",
53351             "fill_area": "Fill Areas",
53352             "map_features": "Map Features",
53353             "autohidden": "These features have been automatically hidden because too many would be shown on the screen.  You can zoom in to edit them."
53354         },
53355         "feature": {
53356             "points": {
53357                 "description": "Points",
53358                 "tooltip": "Points of Interest"
53359             },
53360             "major_roads": {
53361                 "description": "Major Roads",
53362                 "tooltip": "Highways, Streets, etc."
53363             },
53364             "minor_roads": {
53365                 "description": "Minor Roads",
53366                 "tooltip": "Service Roads, Parking Aisles, Tracks, etc."
53367             },
53368             "paths": {
53369                 "description": "Paths",
53370                 "tooltip": "Sidewalks, Foot Paths, Cycle Paths, etc."
53371             },
53372             "buildings": {
53373                 "description": "Buildings",
53374                 "tooltip": "Buildings, Shelters, Garages, etc."
53375             },
53376             "landuse": {
53377                 "description": "Landuse Features",
53378                 "tooltip": "Forests, Farmland, Parks, Residential, Commercial, etc."
53379             },
53380             "boundaries": {
53381                 "description": "Boundaries",
53382                 "tooltip": "Administrative Boundaries"
53383             },
53384             "water": {
53385                 "description": "Water Features",
53386                 "tooltip": "Rivers, Lakes, Ponds, Basins, etc."
53387             },
53388             "rail": {
53389                 "description": "Rail Features",
53390                 "tooltip": "Railways"
53391             },
53392             "power": {
53393                 "description": "Power Features",
53394                 "tooltip": "Power Lines, Power Plants, Substations, etc."
53395             },
53396             "past_future": {
53397                 "description": "Past/Future",
53398                 "tooltip": "Proposed, Construction, Abandoned, Demolished, etc."
53399             },
53400             "others": {
53401                 "description": "Others",
53402                 "tooltip": "Everything Else"
53403             }
53404         },
53405         "area_fill": {
53406             "wireframe": {
53407                 "description": "No Fill (Wireframe)",
53408                 "tooltip": "Enabling wireframe mode makes it easy to see the background imagery."
53409             },
53410             "partial": {
53411                 "description": "Partial Fill",
53412                 "tooltip": "Areas are drawn with fill only around their inner edges. (Recommended for beginner mappers)"
53413             },
53414             "full": {
53415                 "description": "Full Fill",
53416                 "tooltip": "Areas are drawn fully filled."
53417             }
53418         },
53419         "restore": {
53420             "heading": "You have unsaved changes",
53421             "description": "Do you wish to restore unsaved changes from a previous editing session?",
53422             "restore": "Restore",
53423             "reset": "Reset"
53424         },
53425         "save": {
53426             "title": "Save",
53427             "help": "Save changes to OpenStreetMap, making them visible to other users.",
53428             "no_changes": "No changes to save.",
53429             "error": "Errors occurred while trying to save",
53430             "status_code": "Server returned status code {code}",
53431             "unknown_error_details": "Please ensure you are connected to the internet.",
53432             "uploading": "Uploading changes to OpenStreetMap.",
53433             "unsaved_changes": "You have unsaved changes",
53434             "conflict": {
53435                 "header": "Resolve conflicting edits",
53436                 "count": "Conflict {num} of {total}",
53437                 "previous": "< Previous",
53438                 "next": "Next >",
53439                 "keep_local": "Keep mine",
53440                 "keep_remote": "Use theirs",
53441                 "restore": "Restore",
53442                 "delete": "Leave Deleted",
53443                 "download_changes": "Or download your changes.",
53444                 "done": "All conflicts resolved!",
53445                 "help": "Another user changed some of the same map features you changed.\nClick on each item below for more details about the conflict, and choose whether to keep\nyour changes or the other user's changes.\n"
53446             }
53447         },
53448         "merge_remote_changes": {
53449             "conflict": {
53450                 "deleted": "This object has been deleted by {user}.",
53451                 "location": "This object was moved by both you and {user}.",
53452                 "nodelist": "Nodes were changed by both you and {user}.",
53453                 "memberlist": "Relation members were changed by both you and {user}.",
53454                 "tags": "You changed the <b>{tag}</b> tag to \"{local}\" and {user} changed it to \"{remote}\"."
53455             }
53456         },
53457         "success": {
53458             "edited_osm": "Edited OSM!",
53459             "just_edited": "You just edited OpenStreetMap!",
53460             "view_on_osm": "View on OSM",
53461             "facebook": "Share on Facebook",
53462             "twitter": "Share on Twitter",
53463             "google": "Share on Google+",
53464             "help_html": "Your changes should appear in the \"Standard\" layer in a few minutes. Other layers, and certain features, may take longer\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
53465         },
53466         "confirm": {
53467             "okay": "Okay",
53468             "cancel": "Cancel"
53469         },
53470         "splash": {
53471             "welcome": "Welcome to the iD OpenStreetMap editor",
53472             "text": "iD is a friendly but powerful tool for contributing to the world's best free world map. This is version {version}. For more information see {website} and report bugs at {github}.",
53473             "walkthrough": "Start the Walkthrough",
53474             "start": "Edit Now"
53475         },
53476         "source_switch": {
53477             "live": "live",
53478             "lose_changes": "You have unsaved changes. Switching the map server will discard them. Are you sure you want to switch servers?",
53479             "dev": "dev"
53480         },
53481         "tag_reference": {
53482             "description": "Description",
53483             "on_wiki": "{tag} on wiki.osm.org",
53484             "used_with": "used with {type}"
53485         },
53486         "validations": {
53487             "untagged_point": "Untagged point",
53488             "untagged_line": "Untagged line",
53489             "untagged_area": "Untagged area",
53490             "many_deletions": "You're deleting {n} objects. Are you sure you want to do this? This will delete them from the map that everyone else sees on openstreetmap.org.",
53491             "tag_suggests_area": "The tag {tag} suggests line should be area, but it is not an area",
53492             "untagged_point_tooltip": "Select a feature type that describes what this point is.",
53493             "untagged_line_tooltip": "Select a feature type that describes what this line is.",
53494             "untagged_area_tooltip": "Select a feature type that describes what this area is.",
53495             "deprecated_tags": "Deprecated tags: {tags}"
53496         },
53497         "zoom": {
53498             "in": "Zoom In",
53499             "out": "Zoom Out"
53500         },
53501         "cannot_zoom": "Cannot zoom out further in current mode.",
53502         "full_screen": "Toggle Full Screen",
53503         "gpx": {
53504             "local_layer": "Local GPX file",
53505             "drag_drop": "Drag and drop a .gpx file on the page, or click the button to the right to browse",
53506             "zoom": "Zoom to GPX track",
53507             "browse": "Browse for a .gpx file"
53508         },
53509         "mapillary": {
53510             "tooltip": "Street-level photos from Mapillary",
53511             "title": "Photo Overlay (Mapillary)",
53512             "view_on_mapillary": "View this image on Mapillary"
53513         },
53514         "help": {
53515             "title": "Help",
53516             "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
53517             "editing_saving": "# Editing & Saving\n\nThis editor is designed to work primarily online, and you're accessing\nit through a website right now.\n\n### Selecting Features\n\nTo select a map feature, like a road or point of interest, click\non it on the map. This will highlight the selected feature, open a panel with\ndetails about it, and show a menu of things you can do with the feature.\n\nTo select multiple features, hold down the 'Shift' key. Then either click\non the features you want to select, or drag on the map to draw a rectangle.\nThis will draw a box and select all the points within it.\n\n### Saving Edits\n\nWhen you make changes like editing roads, buildings, and places, these are\nstored locally until you save them to the server. Don't worry if you make\na mistake - you can undo changes by clicking the undo button, and redo\nchanges by clicking the redo button.\n\nClick 'Save' to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n\nIf everything looks good, you can enter a short comment explaining the change\nyou made, and click 'Save' again to post the changes\nto [OpenStreetMap.org](http://www.openstreetmap.org/), where they are visible\nto all other users and available for others to build and improve upon.\n\nIf you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor application will offer to restore your work.\n\n### Using the editor\n\nA list of available keyboard shortcuts can be found [here](http://wiki.openstreetmap.org/wiki/ID/Shortcuts).\n",
53518             "roads": "# Roads\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycleways, and more - any often-crossed\nsegment should be mappable.\n\n### Selecting\n\nClick on a road to select it. An outline should become visible, along\nwith a small tools menu on the map and a sidebar showing more information\nabout the road.\n\n### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them\nor to a GPS track. You can adjust these roads so they are in the correct\nplace.\n\nFirst click on the road you want to change. This will highlight it and show\ncontrol points along it that you can drag to better locations. If\nyou want to add new control points for more detail, double-click a part\nof the road without a node, and one will be added.\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its control points onto the other road in\norder to join them. Having roads connect is important for the map\nand essential for providing driving directions.\n\nYou can also click the 'Move' tool or press the `M` shortcut key to move the entire road at\none time, and then click again to save that movement.\n\n### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n\n### Creating\n\nFound somewhere there should be a road but there isn't? Click the 'Line'\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n",
53519             "gps": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create)\nfor other users to use.\n",
53520             "imagery": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the 'Background Settings' menu on the right.\n\nBy default a [Bing Maps](http://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources will become available. Some countries, like the United\nStates, France, and Denmark have very high-quality imagery available for some areas.\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings UI.\n",
53521             "addresses": "# Addresses\n\nAddresses are some of the most useful information for the map.\n\nAlthough addresses are often represented as parts of streets, in OpenStreetMap\nthey're recorded as attributes of buildings and places along streets.\n\nYou can add address information to places mapped as building outlines\nas well as those mapped as single points. The optimal source of address\ndata is from an on-the-ground survey or personal knowledge - as with any\nother feature, copying from commercial sources like Google Maps is strictly\nforbidden.\n",
53522             "inspector": "# Using the Inspector\n\nThe inspector is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n\n### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe inspector will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the bottom-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n\n### Using Forms and Editing Tags\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the inspector will display fields with details about\nthe feature like its name and address.\n\nBelow the fields you see, you can click the 'Add field' dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n\nAt the bottom of the inspector, click 'Additional tags' to add arbitrary\nother tags to the element. [Taginfo](http://taginfo.openstreetmap.org/) is a\ngreat resource for learn more about popular tag combinations.\n\nChanges you make in the inspector are automatically applied to the map.\nYou can undo them at any time by clicking the 'Undo' button.\n",
53523             "buildings": "# Buildings\n\nOpenStreetMap is the world's largest database of buildings. You can create\nand improve this database.\n\n### Selecting\n\nYou can select a building by clicking on its border. This will highlight the\nbuilding and open a small tools menu and a sidebar showing more information\nabout the building.\n\n### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\n\nTo move an entire building, select it, then click the 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n\n### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the 'Area' button in the top\nleft of the interface, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn to close the shape.\n\n### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n",
53524             "relations": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. For example, two common types of relations are *route relations*,\nwhich group together sections of road that belong to a specific freeway or\nhighway, and *multipolygons*, which group together several lines that define\na complex area (one with several pieces or holes in it like a donut).\n\nThe group of features in a relation are called *members*. In the sidebar, you can\nsee which relations a feature is a member of, and click on a relation there\nto select the it. When the relation is selected, you can see all of its\nmembers listed in the sidebar and highlighted on the map.\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n\n## Editing Relations\n\nIf you want to edit relations, here are the basics.\n\nTo add a feature to a relation, select the feature, click the \"+\" button in the\n\"All relations\" section of the sidebar, and select or type the name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the \"+\" button in the \"All relations\" section, and select \"New relation...\".\n\nTo remove a feature from a relation, select the feature and click the trash\nbutton next to the relation you want to remove it from.\n\nYou can create multipolygons with holes using the \"Merge\" tool. Draw two areas (inner\nand outer), hold the Shift key and click on each of them to select them both, and then\nclick the \"Merge\" (+) button.\n"
53525         },
53526         "intro": {
53527             "navigation": {
53528                 "title": "Navigation",
53529                 "drag": "The main map area shows OpenStreetMap data on top of a background. You can navigate by dragging and scrolling, just like any web map. **Drag the map!**",
53530                 "select": "Map features are represented three ways: using points, lines or areas. All features can be selected by clicking on them. **Click on the point to select it.**",
53531                 "header": "The header shows us the feature type.",
53532                 "pane": "When a feature is selected, the feature editor is displayed. The header shows us the feature type and the main pane shows the feature's attributes, such as its name and address. **Close the feature editor with the close button in the top right.**"
53533             },
53534             "points": {
53535                 "title": "Points",
53536                 "add": "Points can be used to represent features such as shops, restaurants and monuments. They mark a specific location, and describe what's there. **Click the Point button to add a new point.**",
53537                 "place": "The point can be placed by clicking on the map. **Place the point on top of the building.**",
53538                 "search": "There are many different features that can be represented by points. The point you just added is a Cafe. **Search for '{name}'**",
53539                 "choose": "**Choose Cafe from the list.**",
53540                 "describe": "The point is now marked as a cafe. Using the feature editor, we can add more information about the feature. **Add a name**",
53541                 "close": "The feature editor can be closed by clicking on the close button. **Close the feature editor**",
53542                 "reselect": "Often points will already exist, but have mistakes or be incomplete. We can edit existing points. **Select the point you just created.**",
53543                 "fixname": "**Change the name and close the feature editor.**",
53544                 "reselect_delete": "All features on the map can be deleted. **Click on the point you created.**",
53545                 "delete": "The menu around the point contains operations that can be performed on it, including delete. **Delete the point.**"
53546             },
53547             "areas": {
53548                 "title": "Areas",
53549                 "add": "Areas are used to show the boundaries of features like lakes, buildings, and residential areas. They can be also be used for more detailed mapping of many features you might normally map as points. **Click the Area button to add a new area.**",
53550                 "corner": "Areas are drawn by placing nodes that mark the boundary of the area. **Place the starting node on one of the corners of the playground.**",
53551                 "place": "Draw the area by placing more nodes. Finish the area by clicking on the starting node. **Draw an area for the playground.**",
53552                 "search": "**Search for '{name}'.**",
53553                 "choose": "**Choose Playground from the list.**",
53554                 "describe": "**Add a name, and close the feature editor**"
53555             },
53556             "lines": {
53557                 "title": "Lines",
53558                 "add": "Lines are used to represent features such as roads, railroads and rivers. **Click the Line button to add a new line.**",
53559                 "start": "**Start the line by clicking on the end of the road.**",
53560                 "intersect": "Click to add more nodes to the line. You can drag the map while drawing if necessary. Roads, and many other types of lines, are part of a larger network. It is important for these lines to be connected properly in order for routing applications to work. **Click on Flower Street, to create an intersection connecting the two lines.**",
53561                 "finish": "Lines can be finished by clicking on the last node again. **Finish drawing the road.**",
53562                 "road": "**Select Road from the list**",
53563                 "residential": "There are different types of roads, the most common of which is Residential. **Choose the Residential road type**",
53564                 "describe": "**Name the road and close the feature editor.**",
53565                 "restart": "The road needs to intersect Flower Street.",
53566                 "wrong_preset": "You didn't select the Residential road type. **Click here to choose again**"
53567             },
53568             "startediting": {
53569                 "title": "Start Editing",
53570                 "help": "More documentation and this walkthrough are available here.",
53571                 "save": "Don't forget to regularly save your changes!",
53572                 "start": "Start mapping!"
53573             }
53574         },
53575         "presets": {
53576             "categories": {
53577                 "category-building": {
53578                     "name": "Building"
53579                 },
53580                 "category-golf": {
53581                     "name": "Golf"
53582                 },
53583                 "category-landuse": {
53584                     "name": "Land Use"
53585                 },
53586                 "category-path": {
53587                     "name": "Path"
53588                 },
53589                 "category-rail": {
53590                     "name": "Rail"
53591                 },
53592                 "category-restriction": {
53593                     "name": "Restriction"
53594                 },
53595                 "category-road": {
53596                     "name": "Road"
53597                 },
53598                 "category-route": {
53599                     "name": "Route"
53600                 },
53601                 "category-water-area": {
53602                     "name": "Water"
53603                 },
53604                 "category-water-line": {
53605                     "name": "Water"
53606                 }
53607             },
53608             "fields": {
53609                 "access": {
53610                     "label": "Allowed Access",
53611                     "placeholder": "Not Specified",
53612                     "types": {
53613                         "access": "All",
53614                         "foot": "Foot",
53615                         "motor_vehicle": "Motor Vehicles",
53616                         "bicycle": "Bicycles",
53617                         "horse": "Horses"
53618                     },
53619                     "options": {
53620                         "yes": {
53621                             "title": "Allowed",
53622                             "description": "Access permitted by law; a right of way"
53623                         },
53624                         "no": {
53625                             "title": "Prohibited",
53626                             "description": "Access not permitted to the general public"
53627                         },
53628                         "permissive": {
53629                             "title": "Permissive",
53630                             "description": "Access permitted until such time as the owner revokes the permission"
53631                         },
53632                         "private": {
53633                             "title": "Private",
53634                             "description": "Access permitted only with permission of the owner on an individual basis"
53635                         },
53636                         "designated": {
53637                             "title": "Designated",
53638                             "description": "Access permitted according to signs or specific local laws"
53639                         },
53640                         "destination": {
53641                             "title": "Destination",
53642                             "description": "Access permitted only to reach a destination"
53643                         },
53644                         "dismount": {
53645                             "title": "Dismount",
53646                             "description": "Access permitted but rider must dismount"
53647                         }
53648                     }
53649                 },
53650                 "access_simple": {
53651                     "label": "Allowed Access",
53652                     "placeholder": "yes"
53653                 },
53654                 "access_toilets": {
53655                     "label": "Access"
53656                 },
53657                 "address": {
53658                     "label": "Address",
53659                     "placeholders": {
53660                         "housename": "Housename",
53661                         "housenumber": "123",
53662                         "conscriptionnumber": "123",
53663                         "street": "Street",
53664                         "city": "City",
53665                         "postcode": "Postcode",
53666                         "place": "Place",
53667                         "hamlet": "Hamlet",
53668                         "suburb": "Suburb",
53669                         "subdistrict": "Subdistrict",
53670                         "district": "District",
53671                         "province": "Province",
53672                         "state": "State",
53673                         "country": "Country"
53674                     }
53675                 },
53676                 "admin_level": {
53677                     "label": "Admin Level"
53678                 },
53679                 "aerialway": {
53680                     "label": "Type"
53681                 },
53682                 "aerialway/access": {
53683                     "label": "Access",
53684                     "options": {
53685                         "entry": "Entry",
53686                         "exit": "Exit",
53687                         "both": "Both"
53688                     }
53689                 },
53690                 "aerialway/bubble": {
53691                     "label": "Bubble"
53692                 },
53693                 "aerialway/capacity": {
53694                     "label": "Capacity (per hour)",
53695                     "placeholder": "500, 2500, 5000..."
53696                 },
53697                 "aerialway/duration": {
53698                     "label": "Duration (minutes)",
53699                     "placeholder": "1, 2, 3..."
53700                 },
53701                 "aerialway/heating": {
53702                     "label": "Heated"
53703                 },
53704                 "aerialway/occupancy": {
53705                     "label": "Occupancy",
53706                     "placeholder": "2, 4, 8..."
53707                 },
53708                 "aerialway/summer/access": {
53709                     "label": "Access (summer)",
53710                     "options": {
53711                         "entry": "Entry",
53712                         "exit": "Exit",
53713                         "both": "Both"
53714                     }
53715                 },
53716                 "aeroway": {
53717                     "label": "Type"
53718                 },
53719                 "amenity": {
53720                     "label": "Type"
53721                 },
53722                 "area/highway": {
53723                     "label": "Type"
53724                 },
53725                 "artist": {
53726                     "label": "Artist"
53727                 },
53728                 "artwork_type": {
53729                     "label": "Type"
53730                 },
53731                 "atm": {
53732                     "label": "ATM"
53733                 },
53734                 "backrest": {
53735                     "label": "Backrest"
53736                 },
53737                 "barrier": {
53738                     "label": "Type"
53739                 },
53740                 "bench": {
53741                     "label": "Bench"
53742                 },
53743                 "bicycle_parking": {
53744                     "label": "Type"
53745                 },
53746                 "boundary": {
53747                     "label": "Type"
53748                 },
53749                 "brand": {
53750                     "label": "Brand"
53751                 },
53752                 "building": {
53753                     "label": "Building"
53754                 },
53755                 "building_area": {
53756                     "label": "Building"
53757                 },
53758                 "capacity": {
53759                     "label": "Capacity",
53760                     "placeholder": "50, 100, 200..."
53761                 },
53762                 "cardinal_direction": {
53763                     "label": "Direction",
53764                     "options": {
53765                         "N": "North",
53766                         "E": "East",
53767                         "S": "South",
53768                         "W": "West",
53769                         "NE": "Northeast",
53770                         "SE": "Southeast",
53771                         "SW": "Southwest",
53772                         "NW": "Northwest",
53773                         "NNE": "North-northeast",
53774                         "ENE": "East-northeast",
53775                         "ESE": "East-southeast",
53776                         "SSE": "South-southeast",
53777                         "SSW": "South-southwest",
53778                         "WSW": "West-southwest",
53779                         "WNW": "West-northwest",
53780                         "NNW": "North-northwest"
53781                     }
53782                 },
53783                 "clock_direction": {
53784                     "label": "Direction",
53785                     "options": {
53786                         "clockwise": "Clockwise",
53787                         "anticlockwise": "Counterclockwise"
53788                     }
53789                 },
53790                 "collection_times": {
53791                     "label": "Collection Times"
53792                 },
53793                 "construction": {
53794                     "label": "Type"
53795                 },
53796                 "content": {
53797                     "label": "Contents"
53798                 },
53799                 "country": {
53800                     "label": "Country"
53801                 },
53802                 "covered": {
53803                     "label": "Covered"
53804                 },
53805                 "craft": {
53806                     "label": "Type"
53807                 },
53808                 "crop": {
53809                     "label": "Crop"
53810                 },
53811                 "crossing": {
53812                     "label": "Type"
53813                 },
53814                 "cuisine": {
53815                     "label": "Cuisine"
53816                 },
53817                 "cycleway": {
53818                     "label": "Bike Lanes",
53819                     "placeholder": "none",
53820                     "types": {
53821                         "cycleway:left": "Left side",
53822                         "cycleway:right": "Right side"
53823                     },
53824                     "options": {
53825                         "none": {
53826                             "title": "None",
53827                             "description": "No bike lane"
53828                         },
53829                         "lane": {
53830                             "title": "Standard bike lane",
53831                             "description": "A bike lane separated from auto traffic by a painted line"
53832                         },
53833                         "shared_lane": {
53834                             "title": "Shared bike lane",
53835                             "description": "A bike lane with no separation from auto traffic"
53836                         },
53837                         "track": {
53838                             "title": "Bike track",
53839                             "description": "A bike lane separated from traffic by a physical barrier"
53840                         },
53841                         "share_busway": {
53842                             "title": "Bike lane shared with bus",
53843                             "description": "A bike lane shared with a bus lane"
53844                         },
53845                         "opposite_lane": {
53846                             "title": "Opposite bike lane",
53847                             "description": "A bike lane that travels in the opposite direction of traffic"
53848                         },
53849                         "opposite": {
53850                             "title": "Contraflow bike lane",
53851                             "description": "A bike lane that travels in both directions on a one-way street"
53852                         }
53853                     }
53854                 },
53855                 "delivery": {
53856                     "label": "Delivery"
53857                 },
53858                 "denomination": {
53859                     "label": "Denomination"
53860                 },
53861                 "denotation": {
53862                     "label": "Denotation"
53863                 },
53864                 "description": {
53865                     "label": "Description"
53866                 },
53867                 "drive_through": {
53868                     "label": "Drive-Through"
53869                 },
53870                 "electrified": {
53871                     "label": "Electrification",
53872                     "placeholder": "Contact Line, Electrified Rail...",
53873                     "options": {
53874                         "contact_line": "Contact Line",
53875                         "rail": "Electrified Rail",
53876                         "yes": "Yes (unspecified)",
53877                         "no": "No"
53878                     }
53879                 },
53880                 "elevation": {
53881                     "label": "Elevation"
53882                 },
53883                 "emergency": {
53884                     "label": "Emergency"
53885                 },
53886                 "entrance": {
53887                     "label": "Type"
53888                 },
53889                 "except": {
53890                     "label": "Exceptions"
53891                 },
53892                 "fax": {
53893                     "label": "Fax",
53894                     "placeholder": "+31 42 123 4567"
53895                 },
53896                 "fee": {
53897                     "label": "Fee"
53898                 },
53899                 "fire_hydrant/type": {
53900                     "label": "Type",
53901                     "options": {
53902                         "pillar": "Pillar/Aboveground",
53903                         "underground": "Underground",
53904                         "wall": "Wall",
53905                         "pond": "Pond"
53906                     }
53907                 },
53908                 "fixme": {
53909                     "label": "Fix Me"
53910                 },
53911                 "fuel": {
53912                     "label": "Fuel"
53913                 },
53914                 "fuel/biodiesel": {
53915                     "label": "Sells Biodiesel"
53916                 },
53917                 "fuel/diesel": {
53918                     "label": "Sells Diesel"
53919                 },
53920                 "fuel/e10": {
53921                     "label": "Sells E10"
53922                 },
53923                 "fuel/e85": {
53924                     "label": "Sells E85"
53925                 },
53926                 "fuel/lpg": {
53927                     "label": "Sells Propane"
53928                 },
53929                 "fuel/octane_100": {
53930                     "label": "Sells Racing Gasoline"
53931                 },
53932                 "fuel/octane_91": {
53933                     "label": "Sells Regular Gasoline"
53934                 },
53935                 "fuel/octane_95": {
53936                     "label": "Sells Midgrade Gasoline"
53937                 },
53938                 "fuel/octane_98": {
53939                     "label": "Sells Premium Gasoline"
53940                 },
53941                 "gauge": {
53942                     "label": "Gauge"
53943                 },
53944                 "gender": {
53945                     "label": "Gender",
53946                     "placeholder": "Unknown",
53947                     "options": {
53948                         "male": "Male",
53949                         "female": "Female",
53950                         "unisex": "Unisex"
53951                     }
53952                 },
53953                 "generator/method": {
53954                     "label": "Method"
53955                 },
53956                 "generator/source": {
53957                     "label": "Source"
53958                 },
53959                 "generator/type": {
53960                     "label": "Type"
53961                 },
53962                 "golf_hole": {
53963                     "label": "Reference",
53964                     "placeholder": "Hole number (1-18)"
53965                 },
53966                 "handicap": {
53967                     "label": "Handicap",
53968                     "placeholder": "1-18"
53969                 },
53970                 "handrail": {
53971                     "label": "Handrail"
53972                 },
53973                 "highway": {
53974                     "label": "Type"
53975                 },
53976                 "historic": {
53977                     "label": "Type"
53978                 },
53979                 "hoops": {
53980                     "label": "Hoops",
53981                     "placeholder": "1, 2, 4..."
53982                 },
53983                 "iata": {
53984                     "label": "IATA"
53985                 },
53986                 "icao": {
53987                     "label": "ICAO"
53988                 },
53989                 "incline": {
53990                     "label": "Incline"
53991                 },
53992                 "incline_steps": {
53993                     "label": "Incline",
53994                     "options": {
53995                         "up": "Up",
53996                         "down": "Down"
53997                     }
53998                 },
53999                 "information": {
54000                     "label": "Type"
54001                 },
54002                 "internet_access": {
54003                     "label": "Internet Access",
54004                     "options": {
54005                         "yes": "Yes",
54006                         "no": "No",
54007                         "wlan": "Wifi",
54008                         "wired": "Wired",
54009                         "terminal": "Terminal"
54010                     }
54011                 },
54012                 "lamp_type": {
54013                     "label": "Type"
54014                 },
54015                 "landuse": {
54016                     "label": "Type"
54017                 },
54018                 "lanes": {
54019                     "label": "Lanes",
54020                     "placeholder": "1, 2, 3..."
54021                 },
54022                 "layer": {
54023                     "label": "Layer"
54024                 },
54025                 "leaf_cycle": {
54026                     "label": "Leaf Cycle",
54027                     "options": {
54028                         "evergreen": "Evergreen",
54029                         "deciduous": "Deciduous",
54030                         "semi_evergreen": "Semi-Evergreen",
54031                         "semi_deciduous": "Semi-Deciduous",
54032                         "mixed": "Mixed"
54033                     }
54034                 },
54035                 "leaf_cycle_singular": {
54036                     "label": "Leaf Cycle",
54037                     "options": {
54038                         "evergreen": "Evergreen",
54039                         "deciduous": "Deciduous",
54040                         "semi_evergreen": "Semi-Evergreen",
54041                         "semi_deciduous": "Semi-Deciduous"
54042                     }
54043                 },
54044                 "leaf_type": {
54045                     "label": "Leaf Type",
54046                     "options": {
54047                         "broadleaved": "Broadleaved",
54048                         "needleleaved": "Needleleaved",
54049                         "mixed": "Mixed",
54050                         "leafless": "Leafless"
54051                     }
54052                 },
54053                 "leaf_type_singular": {
54054                     "label": "Leaf Type",
54055                     "options": {
54056                         "broadleaved": "Broadleaved",
54057                         "needleleaved": "Needleleaved",
54058                         "leafless": "Leafless"
54059                     }
54060                 },
54061                 "leisure": {
54062                     "label": "Type"
54063                 },
54064                 "length": {
54065                     "label": "Length (Meters)"
54066                 },
54067                 "level": {
54068                     "label": "Level"
54069                 },
54070                 "levels": {
54071                     "label": "Levels",
54072                     "placeholder": "2, 4, 6..."
54073                 },
54074                 "lit": {
54075                     "label": "Lit"
54076                 },
54077                 "location": {
54078                     "label": "Location"
54079                 },
54080                 "man_made": {
54081                     "label": "Type"
54082                 },
54083                 "maxspeed": {
54084                     "label": "Speed Limit",
54085                     "placeholder": "40, 50, 60..."
54086                 },
54087                 "maxstay": {
54088                     "label": "Max Stay"
54089                 },
54090                 "mtb/scale": {
54091                     "label": "Mountain Biking Difficulty",
54092                     "placeholder": "0, 1, 2, 3...",
54093                     "options": {
54094                         "0": "0: Solid gravel/packed earth, no obstacles, wide curves",
54095                         "1": "1: Some loose surface, small obstacles, wide curves",
54096                         "2": "2: Much loose surface, large obstacles, easy hairpins",
54097                         "3": "3: Slippery surface, large obstacles, tight hairpins",
54098                         "4": "4: Loose surface or boulders, dangerous hairpins",
54099                         "5": "5: Maximum difficulty, boulder fields, landslides",
54100                         "6": "6: Not rideable except by the very best mountain bikers"
54101                     }
54102                 },
54103                 "mtb/scale/imba": {
54104                     "label": "IMBA Trail Difficulty",
54105                     "placeholder": "Easy, Medium, Difficult...",
54106                     "options": {
54107                         "0": "Easiest (white circle)",
54108                         "1": "Easy (green circle)",
54109                         "2": "Medium (blue square)",
54110                         "3": "Difficult (black diamond)",
54111                         "4": "Extremely Difficult (double black diamond)"
54112                     }
54113                 },
54114                 "mtb/scale/uphill": {
54115                     "label": "Mountain Biking Uphill Difficulty",
54116                     "placeholder": "0, 1, 2, 3...",
54117                     "options": {
54118                         "0": "0: Avg. incline <10%, gravel/packed earth, no obstacles",
54119                         "1": "1: Avg. incline <15%, gravel/packed earth, few small objects",
54120                         "2": "2: Avg. incline <20%, stable surface, fistsize rocks/roots",
54121                         "3": "3: Avg. incline <25%, variable surface, fistsize rocks/branches",
54122                         "4": "4: Avg. incline <30%, poor condition, big rocks/branches",
54123                         "5": "5: Very steep, bike generally needs to be pushed or carried"
54124                     }
54125                 },
54126                 "name": {
54127                     "label": "Name",
54128                     "placeholder": "Common name (if any)"
54129                 },
54130                 "natural": {
54131                     "label": "Natural"
54132                 },
54133                 "network": {
54134                     "label": "Network"
54135                 },
54136                 "note": {
54137                     "label": "Note"
54138                 },
54139                 "office": {
54140                     "label": "Type"
54141                 },
54142                 "oneway": {
54143                     "label": "One Way",
54144                     "options": {
54145                         "undefined": "Assumed to be No",
54146                         "yes": "Yes",
54147                         "no": "No"
54148                     }
54149                 },
54150                 "oneway_yes": {
54151                     "label": "One Way",
54152                     "options": {
54153                         "undefined": "Assumed to be Yes",
54154                         "yes": "Yes",
54155                         "no": "No"
54156                     }
54157                 },
54158                 "opening_hours": {
54159                     "label": "Hours"
54160                 },
54161                 "operator": {
54162                     "label": "Operator"
54163                 },
54164                 "par": {
54165                     "label": "Par",
54166                     "placeholder": "3, 4, 5..."
54167                 },
54168                 "park_ride": {
54169                     "label": "Park and Ride"
54170                 },
54171                 "parking": {
54172                     "label": "Type",
54173                     "options": {
54174                         "surface": "Surface",
54175                         "multi-storey": "Multilevel",
54176                         "underground": "Underground",
54177                         "sheds": "Sheds",
54178                         "carports": "Carports",
54179                         "garage_boxes": "Garage Boxes",
54180                         "lane": "Roadside Lane"
54181                     }
54182                 },
54183                 "phone": {
54184                     "label": "Phone",
54185                     "placeholder": "+31 42 123 4567"
54186                 },
54187                 "piste/difficulty": {
54188                     "label": "Difficulty",
54189                     "placeholder": "Easy, Intermediate, Advanced...",
54190                     "options": {
54191                         "novice": "Novice (instructional)",
54192                         "easy": "Easy (green circle)",
54193                         "intermediate": "Intermediate (blue square)",
54194                         "advanced": "Advanced (black diamond)",
54195                         "expert": "Expert (double black diamond)",
54196                         "freeride": "Freeride (off-piste)",
54197                         "extreme": "Extreme (climbing equipment required)"
54198                     }
54199                 },
54200                 "piste/grooming": {
54201                     "label": "Grooming",
54202                     "options": {
54203                         "classic": "Classic",
54204                         "mogul": "Mogul",
54205                         "backcountry": "Backcountry",
54206                         "classic+skating": "Classic and Skating",
54207                         "scooter": "Scooter/Snowmobile",
54208                         "skating": "Skating"
54209                     }
54210                 },
54211                 "piste/type": {
54212                     "label": "Type",
54213                     "options": {
54214                         "downhill": "Downhill",
54215                         "nordic": "Nordic",
54216                         "skitour": "Skitour",
54217                         "sled": "Sled",
54218                         "hike": "Hike",
54219                         "sleigh": "Sleigh",
54220                         "ice_skate": "Ice Skate",
54221                         "snow_park": "Snow Park",
54222                         "playground": "Playground"
54223                     }
54224                 },
54225                 "place": {
54226                     "label": "Type"
54227                 },
54228                 "population": {
54229                     "label": "Population"
54230                 },
54231                 "power": {
54232                     "label": "Type"
54233                 },
54234                 "power_supply": {
54235                     "label": "Power Supply"
54236                 },
54237                 "railway": {
54238                     "label": "Type"
54239                 },
54240                 "recycling/cans": {
54241                     "label": "Accepts Cans"
54242                 },
54243                 "recycling/clothes": {
54244                     "label": "Accepts Clothes"
54245                 },
54246                 "recycling/glass": {
54247                     "label": "Accepts Glass"
54248                 },
54249                 "recycling/glass_bottles": {
54250                     "label": "Accepts Glass Bottles"
54251                 },
54252                 "recycling/paper": {
54253                     "label": "Accepts Paper"
54254                 },
54255                 "recycling/plastic": {
54256                     "label": "Accepts Plastic"
54257                 },
54258                 "recycling/type": {
54259                     "label": "Recycling Type",
54260                     "options": {
54261                         "container": "Container",
54262                         "centre": "Recycling Center"
54263                     }
54264                 },
54265                 "ref": {
54266                     "label": "Reference"
54267                 },
54268                 "relation": {
54269                     "label": "Type"
54270                 },
54271                 "religion": {
54272                     "label": "Religion"
54273                 },
54274                 "restriction": {
54275                     "label": "Type"
54276                 },
54277                 "restrictions": {
54278                     "label": "Turn Restrictions"
54279                 },
54280                 "route": {
54281                     "label": "Type"
54282                 },
54283                 "route_master": {
54284                     "label": "Type"
54285                 },
54286                 "sac_scale": {
54287                     "label": "Hiking Difficulty",
54288                     "placeholder": "Mountain Hiking, Alpine Hiking...",
54289                     "options": {
54290                         "hiking": "T1: Hiking",
54291                         "mountain_hiking": "T2: Mountain Hiking",
54292                         "demanding_mountain_hiking": "T3: Demanding Mountain Hiking",
54293                         "alpine_hiking": "T4: Alpine Hiking",
54294                         "demanding_alpine_hiking": "T5: Demanding Alpine Hiking",
54295                         "difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
54296                     }
54297                 },
54298                 "sanitary_dump_station": {
54299                     "label": "Toilet Disposal"
54300                 },
54301                 "seasonal": {
54302                     "label": "Seasonal"
54303                 },
54304                 "service": {
54305                     "label": "Type"
54306                 },
54307                 "service/bicycle/chain_tool": {
54308                     "label": "Chain Tool",
54309                     "options": {
54310                         "undefined": "Assumed to be No",
54311                         "yes": "Yes",
54312                         "no": "No"
54313                     }
54314                 },
54315                 "service/bicycle/pump": {
54316                     "label": "Air Pump",
54317                     "options": {
54318                         "undefined": "Assumed to be No",
54319                         "yes": "Yes",
54320                         "no": "No"
54321                     }
54322                 },
54323                 "service_rail": {
54324                     "label": "Service Type",
54325                     "options": {
54326                         "spur": "Spur",
54327                         "yard": "Yard",
54328                         "siding": "Siding",
54329                         "crossover": "Crossover"
54330                     }
54331                 },
54332                 "shelter": {
54333                     "label": "Shelter"
54334                 },
54335                 "shelter_type": {
54336                     "label": "Type"
54337                 },
54338                 "shop": {
54339                     "label": "Type"
54340                 },
54341                 "sloped_curb": {
54342                     "label": "Sloped Curb"
54343                 },
54344                 "smoking": {
54345                     "label": "Smoking",
54346                     "placeholder": "No, Separated, Yes...",
54347                     "options": {
54348                         "no": "No smoking anywhere",
54349                         "separated": "In smoking areas, not physically isolated",
54350                         "isolated": "In smoking areas, physically isolated",
54351                         "outside": "Allowed outside",
54352                         "yes": "Allowed everywhere",
54353                         "dedicated": "Dedicated to smokers (e.g. smokers' club)"
54354                     }
54355                 },
54356                 "smoothness": {
54357                     "label": "Smoothness",
54358                     "placeholder": "Thin Rollers, Wheels, Off-Road...",
54359                     "options": {
54360                         "excellent": "Thin Rollers: rollerblade, skateboard",
54361                         "good": "Thin Wheels: racing bike",
54362                         "intermediate": "Wheels: city bike, wheelchair, scooter",
54363                         "bad": "Robust Wheels: trekking bike, car, rickshaw",
54364                         "very_bad": "High Clearance: light duty off-road vehicle",
54365                         "horrible": "Off-Road: heavy duty off-road vehicle",
54366                         "very_horrible": "Specialized off-road: tractor, ATV",
54367                         "impassable": "Impassable / No wheeled vehicle"
54368                     }
54369                 },
54370                 "social_facility_for": {
54371                     "label": "People served",
54372                     "placeholder": "Homeless, Disabled, Child, etc"
54373                 },
54374                 "source": {
54375                     "label": "Source"
54376                 },
54377                 "sport": {
54378                     "label": "Sport"
54379                 },
54380                 "sport_ice": {
54381                     "label": "Sport"
54382                 },
54383                 "sport_racing": {
54384                     "label": "Sport"
54385                 },
54386                 "structure": {
54387                     "label": "Structure",
54388                     "placeholder": "Unknown",
54389                     "options": {
54390                         "bridge": "Bridge",
54391                         "tunnel": "Tunnel",
54392                         "embankment": "Embankment",
54393                         "cutting": "Cutting",
54394                         "ford": "Ford"
54395                     }
54396                 },
54397                 "studio_type": {
54398                     "label": "Type"
54399                 },
54400                 "substation": {
54401                     "label": "Type"
54402                 },
54403                 "supervised": {
54404                     "label": "Supervised"
54405                 },
54406                 "surface": {
54407                     "label": "Surface"
54408                 },
54409                 "tactile_paving": {
54410                     "label": "Tactile Paving"
54411                 },
54412                 "takeaway": {
54413                     "label": "Takeaway",
54414                     "placeholder": "Yes, No, Takeaway Only...",
54415                     "options": {
54416                         "yes": "Yes",
54417                         "no": "No",
54418                         "only": "Takeaway Only"
54419                     }
54420                 },
54421                 "toilets/disposal": {
54422                     "label": "Disposal",
54423                     "options": {
54424                         "flush": "Flush",
54425                         "pitlatrine": "Pit/Latrine",
54426                         "chemical": "Chemical",
54427                         "bucket": "Bucket"
54428                     }
54429                 },
54430                 "tourism": {
54431                     "label": "Type"
54432                 },
54433                 "towertype": {
54434                     "label": "Tower type"
54435                 },
54436                 "tracktype": {
54437                     "label": "Track Type",
54438                     "placeholder": "Solid, Mostly Solid, Soft...",
54439                     "options": {
54440                         "grade1": "Solid: paved or heavily compacted hardcore surface",
54441                         "grade2": "Mostly Solid: gravel/rock with some soft material mixed in",
54442                         "grade3": "Even mixture of hard and soft materials",
54443                         "grade4": "Mostly Soft: soil/sand/grass with some hard material mixed in",
54444                         "grade5": "Soft: soil/sand/grass"
54445                     }
54446                 },
54447                 "traffic_signals": {
54448                     "label": "Type"
54449                 },
54450                 "trail_visibility": {
54451                     "label": "Trail Visibility",
54452                     "placeholder": "Excellent, Good, Bad...",
54453                     "options": {
54454                         "excellent": "Excellent: unambiguous path or markers everywhere",
54455                         "good": "Good: markers visible, sometimes require searching",
54456                         "intermediate": "Intermediate: few markers, path mostly visible",
54457                         "bad": "Bad: no markers, path sometimes invisible/pathless",
54458                         "horrible": "Horrible: often pathless, some orientation skills required",
54459                         "no": "No: pathless, excellent orientation skills required"
54460                     }
54461                 },
54462                 "trees": {
54463                     "label": "Trees"
54464                 },
54465                 "tunnel": {
54466                     "label": "Tunnel"
54467                 },
54468                 "vending": {
54469                     "label": "Type of Goods"
54470                 },
54471                 "water": {
54472                     "label": "Type"
54473                 },
54474                 "water_point": {
54475                     "label": "Water Point"
54476                 },
54477                 "waterway": {
54478                     "label": "Type"
54479                 },
54480                 "website": {
54481                     "label": "Website",
54482                     "placeholder": "http://example.com/"
54483                 },
54484                 "wetland": {
54485                     "label": "Type"
54486                 },
54487                 "wheelchair": {
54488                     "label": "Wheelchair Access"
54489                 },
54490                 "width": {
54491                     "label": "Width (Meters)"
54492                 },
54493                 "wikipedia": {
54494                     "label": "Wikipedia"
54495                 }
54496             },
54497             "presets": {
54498                 "address": {
54499                     "name": "Address",
54500                     "terms": ""
54501                 },
54502                 "aerialway": {
54503                     "name": "Aerialway",
54504                     "terms": "ski lift,funifor,funitel"
54505                 },
54506                 "aerialway/cable_car": {
54507                     "name": "Cable Car",
54508                     "terms": "tramway,ropeway"
54509                 },
54510                 "aerialway/chair_lift": {
54511                     "name": "Chair Lift",
54512                     "terms": ""
54513                 },
54514                 "aerialway/gondola": {
54515                     "name": "Gondola",
54516                     "terms": ""
54517                 },
54518                 "aerialway/magic_carpet": {
54519                     "name": "Magic Carpet Lift",
54520                     "terms": ""
54521                 },
54522                 "aerialway/platter": {
54523                     "name": "Platter Lift",
54524                     "terms": "button lift,poma lift"
54525                 },
54526                 "aerialway/pylon": {
54527                     "name": "Aerialway Pylon",
54528                     "terms": ""
54529                 },
54530                 "aerialway/rope_tow": {
54531                     "name": "Rope Tow Lift",
54532                     "terms": "handle tow,bugel lift"
54533                 },
54534                 "aerialway/station": {
54535                     "name": "Aerialway Station",
54536                     "terms": ""
54537                 },
54538                 "aerialway/t-bar": {
54539                     "name": "T-bar Lift",
54540                     "terms": ""
54541                 },
54542                 "aeroway": {
54543                     "name": "Aeroway",
54544                     "terms": ""
54545                 },
54546                 "aeroway/aerodrome": {
54547                     "name": "Airport",
54548                     "terms": "airplane,airport,aerodrome"
54549                 },
54550                 "aeroway/apron": {
54551                     "name": "Apron",
54552                     "terms": "ramp"
54553                 },
54554                 "aeroway/gate": {
54555                     "name": "Airport gate",
54556                     "terms": ""
54557                 },
54558                 "aeroway/hangar": {
54559                     "name": "Hangar",
54560                     "terms": ""
54561                 },
54562                 "aeroway/helipad": {
54563                     "name": "Helipad",
54564                     "terms": "helicopter,helipad,heliport"
54565                 },
54566                 "aeroway/runway": {
54567                     "name": "Runway",
54568                     "terms": "landing strip"
54569                 },
54570                 "aeroway/taxiway": {
54571                     "name": "Taxiway",
54572                     "terms": ""
54573                 },
54574                 "aeroway/terminal": {
54575                     "name": "Airport terminal",
54576                     "terms": "airport,aerodrome"
54577                 },
54578                 "amenity": {
54579                     "name": "Amenity",
54580                     "terms": ""
54581                 },
54582                 "amenity/arts_centre": {
54583                     "name": "Arts Center",
54584                     "terms": ""
54585                 },
54586                 "amenity/atm": {
54587                     "name": "ATM",
54588                     "terms": "money,cash,machine"
54589                 },
54590                 "amenity/bank": {
54591                     "name": "Bank",
54592                     "terms": "credit union,check,deposit,fund,investment,repository,reserve,safe,savings,stock,treasury,trust,vault"
54593                 },
54594                 "amenity/bar": {
54595                     "name": "Bar",
54596                     "terms": "dive,beer,bier,booze"
54597                 },
54598                 "amenity/bbq": {
54599                     "name": "Barbecue/Grill",
54600                     "terms": "bbq"
54601                 },
54602                 "amenity/bench": {
54603                     "name": "Bench",
54604                     "terms": ""
54605                 },
54606                 "amenity/bicycle_parking": {
54607                     "name": "Bicycle Parking",
54608                     "terms": "bike"
54609                 },
54610                 "amenity/bicycle_rental": {
54611                     "name": "Bicycle Rental",
54612                     "terms": "bike"
54613                 },
54614                 "amenity/bicycle_repair_station": {
54615                     "name": "Bicycle Repair Station",
54616                     "terms": "bike"
54617                 },
54618                 "amenity/biergarten": {
54619                     "name": "Beer Garden",
54620                     "terms": "beer,bier,booze"
54621                 },
54622                 "amenity/boat_rental": {
54623                     "name": "Boat Rental",
54624                     "terms": ""
54625                 },
54626                 "amenity/bureau_de_change": {
54627                     "name": "Currency Exchange",
54628                     "terms": "bureau de change,money changer"
54629                 },
54630                 "amenity/bus_station": {
54631                     "name": "Bus Station",
54632                     "terms": ""
54633                 },
54634                 "amenity/cafe": {
54635                     "name": "Cafe",
54636                     "terms": "coffee,tea"
54637                 },
54638                 "amenity/car_rental": {
54639                     "name": "Car Rental",
54640                     "terms": ""
54641                 },
54642                 "amenity/car_sharing": {
54643                     "name": "Car Sharing",
54644                     "terms": ""
54645                 },
54646                 "amenity/car_wash": {
54647                     "name": "Car Wash",
54648                     "terms": ""
54649                 },
54650                 "amenity/casino": {
54651                     "name": "Casino",
54652                     "terms": "gambling,roulette,craps,poker,blackjack"
54653                 },
54654                 "amenity/charging_station": {
54655                     "name": "Charging Station",
54656                     "terms": "EV,Electric Vehicle,Supercharger"
54657                 },
54658                 "amenity/childcare": {
54659                     "name": "Nursery/Childcare",
54660                     "terms": "daycare,orphanage,playgroup"
54661                 },
54662                 "amenity/cinema": {
54663                     "name": "Cinema",
54664                     "terms": "drive-in,film,flick,movie,theater,picture,show,screen"
54665                 },
54666                 "amenity/clinic": {
54667                     "name": "Clinic",
54668                     "terms": "medical,urgentcare"
54669                 },
54670                 "amenity/clock": {
54671                     "name": "Clock",
54672                     "terms": ""
54673                 },
54674                 "amenity/college": {
54675                     "name": "College Grounds",
54676                     "terms": "university"
54677                 },
54678                 "amenity/community_centre": {
54679                     "name": "Community Center",
54680                     "terms": "event,hall"
54681                 },
54682                 "amenity/compressed_air": {
54683                     "name": "Compressed Air",
54684                     "terms": ""
54685                 },
54686                 "amenity/courthouse": {
54687                     "name": "Courthouse",
54688                     "terms": ""
54689                 },
54690                 "amenity/dentist": {
54691                     "name": "Dentist",
54692                     "terms": "tooth,teeth"
54693                 },
54694                 "amenity/doctor": {
54695                     "name": "Doctor",
54696                     "terms": "medic*"
54697                 },
54698                 "amenity/dojo": {
54699                     "name": "Dojo / Martial Arts Academy",
54700                     "terms": "martial arts,dojang"
54701                 },
54702                 "amenity/drinking_water": {
54703                     "name": "Drinking Water",
54704                     "terms": "fountain,potable"
54705                 },
54706                 "amenity/embassy": {
54707                     "name": "Embassy",
54708                     "terms": ""
54709                 },
54710                 "amenity/fast_food": {
54711                     "name": "Fast Food",
54712                     "terms": "restaurant"
54713                 },
54714                 "amenity/fire_station": {
54715                     "name": "Fire Station",
54716                     "terms": ""
54717                 },
54718                 "amenity/fountain": {
54719                     "name": "Fountain",
54720                     "terms": ""
54721                 },
54722                 "amenity/fuel": {
54723                     "name": "Gas Station",
54724                     "terms": "petrol,fuel,propane,diesel,lng,cng,biodiesel"
54725                 },
54726                 "amenity/grave_yard": {
54727                     "name": "Graveyard",
54728                     "terms": ""
54729                 },
54730                 "amenity/grit_bin": {
54731                     "name": "Grit Bin",
54732                     "terms": "salt,sand"
54733                 },
54734                 "amenity/hospital": {
54735                     "name": "Hospital Grounds",
54736                     "terms": "clinic,doctor,emergency room,health service,hospice,infirmary,institution,nursing home,sanatorium,sanitarium,sick,surgery,ward"
54737                 },
54738                 "amenity/kindergarten": {
54739                     "name": "Preschool/Kindergarten Grounds",
54740                     "terms": "kindergarden,pre-school"
54741                 },
54742                 "amenity/library": {
54743                     "name": "Library",
54744                     "terms": "book"
54745                 },
54746                 "amenity/marketplace": {
54747                     "name": "Marketplace",
54748                     "terms": ""
54749                 },
54750                 "amenity/motorcycle_parking": {
54751                     "name": "Motorcycle Parking",
54752                     "terms": ""
54753                 },
54754                 "amenity/nightclub": {
54755                     "name": "Nightclub",
54756                     "terms": "disco*,night club,dancing,dance club"
54757                 },
54758                 "amenity/parking": {
54759                     "name": "Car Parking",
54760                     "terms": ""
54761                 },
54762                 "amenity/parking_entrance": {
54763                     "name": "Parking Garage Entrance/Exit",
54764                     "terms": ""
54765                 },
54766                 "amenity/pharmacy": {
54767                     "name": "Pharmacy",
54768                     "terms": "drug,medicine"
54769                 },
54770                 "amenity/place_of_worship": {
54771                     "name": "Place of Worship",
54772                     "terms": "abbey,basilica,bethel,cathedral,chancel,chantry,chapel,church,fold,house of God,house of prayer,house of worship,minster,mission,mosque,oratory,parish,sacellum,sanctuary,shrine,synagogue,tabernacle,temple"
54773                 },
54774                 "amenity/place_of_worship/buddhist": {
54775                     "name": "Buddhist Temple",
54776                     "terms": "stupa,vihara,monastery,temple,pagoda,zendo,dojo"
54777                 },
54778                 "amenity/place_of_worship/christian": {
54779                     "name": "Church",
54780                     "terms": "christian,abbey,basilica,bethel,cathedral,chancel,chantry,chapel,fold,house of God,house of prayer,house of worship,minster,mission,oratory,parish,sacellum,sanctuary,shrine,tabernacle,temple"
54781                 },
54782                 "amenity/place_of_worship/jewish": {
54783                     "name": "Synagogue",
54784                     "terms": "jewish"
54785                 },
54786                 "amenity/place_of_worship/muslim": {
54787                     "name": "Mosque",
54788                     "terms": "muslim"
54789                 },
54790                 "amenity/police": {
54791                     "name": "Police",
54792                     "terms": "badge,constable,constabulary,cop,detective,fed,law,enforcement,officer,patrol"
54793                 },
54794                 "amenity/post_box": {
54795                     "name": "Mailbox",
54796                     "terms": "letter,post"
54797                 },
54798                 "amenity/post_office": {
54799                     "name": "Post Office",
54800                     "terms": "letter,mail"
54801                 },
54802                 "amenity/pub": {
54803                     "name": "Pub",
54804                     "terms": "dive,beer,bier,booze"
54805                 },
54806                 "amenity/public_bookcase": {
54807                     "name": "Public Bookcase",
54808                     "terms": "library,bookcrossing"
54809                 },
54810                 "amenity/ranger_station": {
54811                     "name": "Ranger Station",
54812                     "terms": "visitor center,visitor centre,permit center,permit centre,backcountry office,warden office,warden center"
54813                 },
54814                 "amenity/recycling": {
54815                     "name": "Recycling",
54816                     "terms": "can,bottle,garbage,scrap,trash"
54817                 },
54818                 "amenity/register_office": {
54819                     "name": "Register Office",
54820                     "terms": ""
54821                 },
54822                 "amenity/restaurant": {
54823                     "name": "Restaurant",
54824                     "terms": "bar,breakfast,cafe,café,canteen,coffee,dine,dining,dinner,drive-in,eat,grill,lunch,table"
54825                 },
54826                 "amenity/sanitary_dump_station": {
54827                     "name": "RV Toilet Disposal",
54828                     "terms": "Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
54829                 },
54830                 "amenity/school": {
54831                     "name": "School Grounds",
54832                     "terms": "academy,elementary school,middle school,high school"
54833                 },
54834                 "amenity/shelter": {
54835                     "name": "Shelter",
54836                     "terms": "lean-to,gazebo,picnic"
54837                 },
54838                 "amenity/social_facility": {
54839                     "name": "Social Facility",
54840                     "terms": ""
54841                 },
54842                 "amenity/social_facility/food_bank": {
54843                     "name": "Food Bank",
54844                     "terms": ""
54845                 },
54846                 "amenity/social_facility/group_home": {
54847                     "name": "Elderly Group Home",
54848                     "terms": "old,senior,living"
54849                 },
54850                 "amenity/social_facility/homeless_shelter": {
54851                     "name": "Homeless Shelter",
54852                     "terms": "houseless,unhoused,displaced"
54853                 },
54854                 "amenity/studio": {
54855                     "name": "Studio",
54856                     "terms": "recording,radio,television"
54857                 },
54858                 "amenity/swimming_pool": {
54859                     "name": "Swimming Pool",
54860                     "terms": ""
54861                 },
54862                 "amenity/taxi": {
54863                     "name": "Taxi Stand",
54864                     "terms": "cab"
54865                 },
54866                 "amenity/telephone": {
54867                     "name": "Telephone",
54868                     "terms": "phone"
54869                 },
54870                 "amenity/theatre": {
54871                     "name": "Theater",
54872                     "terms": "theatre,performance,play,musical"
54873                 },
54874                 "amenity/toilets": {
54875                     "name": "Toilets",
54876                     "terms": "bathroom,restroom,outhouse,privy,head,lavatory,latrine,water closet,WC,W.C."
54877                 },
54878                 "amenity/townhall": {
54879                     "name": "Town Hall",
54880                     "terms": "village,city,government,courthouse,municipal"
54881                 },
54882                 "amenity/university": {
54883                     "name": "University Grounds",
54884                     "terms": "college"
54885                 },
54886                 "amenity/vending_machine/cigarettes": {
54887                     "name": "Cigarette Vending Machine",
54888                     "terms": "cigarette"
54889                 },
54890                 "amenity/vending_machine/condoms": {
54891                     "name": "Condom Vending Machine",
54892                     "terms": "condom"
54893                 },
54894                 "amenity/vending_machine/drinks": {
54895                     "name": "Drink Vending Machine",
54896                     "terms": "drink,soda,beverage,juice,pop"
54897                 },
54898                 "amenity/vending_machine/excrement_bags": {
54899                     "name": "Excrement Bag Vending Machine",
54900                     "terms": "excrement bags,poop,dog,animal"
54901                 },
54902                 "amenity/vending_machine/news_papers": {
54903                     "name": "Newspaper Vending Machine",
54904                     "terms": "newspaper"
54905                 },
54906                 "amenity/vending_machine/parcel_pickup_dropoff": {
54907                     "name": "Parcel Pickup/Dropoff Vending Machine",
54908                     "terms": "parcel,mail,pickup"
54909                 },
54910                 "amenity/vending_machine/parking_tickets": {
54911                     "name": "Parking Ticket Vending Machine",
54912                     "terms": "parking,ticket"
54913                 },
54914                 "amenity/vending_machine/public_transport_tickets": {
54915                     "name": "Transit Ticket Vending Machine",
54916                     "terms": "bus,train,ferry,rail,ticket,transportation"
54917                 },
54918                 "amenity/vending_machine/sweets": {
54919                     "name": "Snack Vending Machine",
54920                     "terms": "candy,gum,chip,pretzel,cookie,cracker"
54921                 },
54922                 "amenity/vending_machine/vending_machine": {
54923                     "name": "Vending Machine",
54924                     "terms": ""
54925                 },
54926                 "amenity/veterinary": {
54927                     "name": "Veterinary",
54928                     "terms": "pet clinic,veterinarian,animal hospital,pet doctor"
54929                 },
54930                 "amenity/waste_basket": {
54931                     "name": "Waste Basket",
54932                     "terms": "rubbish,litter,trash,garbage"
54933                 },
54934                 "area": {
54935                     "name": "Area",
54936                     "terms": ""
54937                 },
54938                 "area/highway": {
54939                     "name": "Road Surface",
54940                     "terms": ""
54941                 },
54942                 "barrier": {
54943                     "name": "Barrier",
54944                     "terms": ""
54945                 },
54946                 "barrier/block": {
54947                     "name": "Block",
54948                     "terms": ""
54949                 },
54950                 "barrier/bollard": {
54951                     "name": "Bollard",
54952                     "terms": ""
54953                 },
54954                 "barrier/cattle_grid": {
54955                     "name": "Cattle Grid",
54956                     "terms": ""
54957                 },
54958                 "barrier/city_wall": {
54959                     "name": "City Wall",
54960                     "terms": ""
54961                 },
54962                 "barrier/cycle_barrier": {
54963                     "name": "Cycle Barrier",
54964                     "terms": ""
54965                 },
54966                 "barrier/ditch": {
54967                     "name": "Ditch",
54968                     "terms": ""
54969                 },
54970                 "barrier/entrance": {
54971                     "name": "Entrance",
54972                     "terms": ""
54973                 },
54974                 "barrier/fence": {
54975                     "name": "Fence",
54976                     "terms": ""
54977                 },
54978                 "barrier/gate": {
54979                     "name": "Gate",
54980                     "terms": ""
54981                 },
54982                 "barrier/hedge": {
54983                     "name": "Hedge",
54984                     "terms": ""
54985                 },
54986                 "barrier/kissing_gate": {
54987                     "name": "Kissing Gate",
54988                     "terms": ""
54989                 },
54990                 "barrier/lift_gate": {
54991                     "name": "Lift Gate",
54992                     "terms": ""
54993                 },
54994                 "barrier/retaining_wall": {
54995                     "name": "Retaining Wall",
54996                     "terms": ""
54997                 },
54998                 "barrier/stile": {
54999                     "name": "Stile",
55000                     "terms": ""
55001                 },
55002                 "barrier/toll_booth": {
55003                     "name": "Toll Booth",
55004                     "terms": ""
55005                 },
55006                 "barrier/wall": {
55007                     "name": "Wall",
55008                     "terms": ""
55009                 },
55010                 "boundary/administrative": {
55011                     "name": "Administrative Boundary",
55012                     "terms": ""
55013                 },
55014                 "building": {
55015                     "name": "Building",
55016                     "terms": ""
55017                 },
55018                 "building/apartments": {
55019                     "name": "Apartments",
55020                     "terms": ""
55021                 },
55022                 "building/barn": {
55023                     "name": "Barn",
55024                     "terms": ""
55025                 },
55026                 "building/bunker": {
55027                     "name": "Bunker",
55028                     "terms": ""
55029                 },
55030                 "building/cabin": {
55031                     "name": "Cabin",
55032                     "terms": ""
55033                 },
55034                 "building/cathedral": {
55035                     "name": "Cathedral Building",
55036                     "terms": ""
55037                 },
55038                 "building/chapel": {
55039                     "name": "Chapel Building",
55040                     "terms": ""
55041                 },
55042                 "building/church": {
55043                     "name": "Church Building",
55044                     "terms": ""
55045                 },
55046                 "building/college": {
55047                     "name": "College Building",
55048                     "terms": "university"
55049                 },
55050                 "building/commercial": {
55051                     "name": "Commercial Building",
55052                     "terms": ""
55053                 },
55054                 "building/construction": {
55055                     "name": "Building Under Construction",
55056                     "terms": ""
55057                 },
55058                 "building/detached": {
55059                     "name": "Detached House",
55060                     "terms": "home,single,family,residence,dwelling"
55061                 },
55062                 "building/dormitory": {
55063                     "name": "Dormitory",
55064                     "terms": ""
55065                 },
55066                 "building/entrance": {
55067                     "name": "Entrance/Exit",
55068                     "terms": ""
55069                 },
55070                 "building/garage": {
55071                     "name": "Garage",
55072                     "terms": ""
55073                 },
55074                 "building/garages": {
55075                     "name": "Garages",
55076                     "terms": ""
55077                 },
55078                 "building/greenhouse": {
55079                     "name": "Greenhouse",
55080                     "terms": ""
55081                 },
55082                 "building/hospital": {
55083                     "name": "Hospital Building",
55084                     "terms": ""
55085                 },
55086                 "building/hotel": {
55087                     "name": "Hotel Building",
55088                     "terms": ""
55089                 },
55090                 "building/house": {
55091                     "name": "House",
55092                     "terms": "home,family,residence,dwelling"
55093                 },
55094                 "building/hut": {
55095                     "name": "Hut",
55096                     "terms": ""
55097                 },
55098                 "building/industrial": {
55099                     "name": "Industrial Building",
55100                     "terms": ""
55101                 },
55102                 "building/kindergarten": {
55103                     "name": "Preschool/Kindergarten Building",
55104                     "terms": "kindergarden,pre-school"
55105                 },
55106                 "building/public": {
55107                     "name": "Public Building",
55108                     "terms": ""
55109                 },
55110                 "building/residential": {
55111                     "name": "Residential Building",
55112                     "terms": ""
55113                 },
55114                 "building/retail": {
55115                     "name": "Retail Building",
55116                     "terms": ""
55117                 },
55118                 "building/roof": {
55119                     "name": "Roof",
55120                     "terms": ""
55121                 },
55122                 "building/school": {
55123                     "name": "School Building",
55124                     "terms": "academy,elementary school,middle school,high school"
55125                 },
55126                 "building/semidetached_house": {
55127                     "name": "Semi-Detached House",
55128                     "terms": "home,double,duplex,twin,family,residence,dwelling"
55129                 },
55130                 "building/shed": {
55131                     "name": "Shed",
55132                     "terms": ""
55133                 },
55134                 "building/stable": {
55135                     "name": "Stable",
55136                     "terms": ""
55137                 },
55138                 "building/static_caravan": {
55139                     "name": "Static Mobile Home",
55140                     "terms": ""
55141                 },
55142                 "building/terrace": {
55143                     "name": "Row Houses",
55144                     "terms": "home,terrace,brownstone,family,residence,dwelling"
55145                 },
55146                 "building/train_station": {
55147                     "name": "Train Station",
55148                     "terms": ""
55149                 },
55150                 "building/university": {
55151                     "name": "University Building",
55152                     "terms": "college"
55153                 },
55154                 "building/warehouse": {
55155                     "name": "Warehouse",
55156                     "terms": ""
55157                 },
55158                 "craft": {
55159                     "name": "Craft",
55160                     "terms": ""
55161                 },
55162                 "craft/basket_maker": {
55163                     "name": "Basket Maker",
55164                     "terms": ""
55165                 },
55166                 "craft/beekeeper": {
55167                     "name": "Beekeeper",
55168                     "terms": ""
55169                 },
55170                 "craft/blacksmith": {
55171                     "name": "Blacksmith",
55172                     "terms": ""
55173                 },
55174                 "craft/boatbuilder": {
55175                     "name": "Boat Builder",
55176                     "terms": ""
55177                 },
55178                 "craft/bookbinder": {
55179                     "name": "Bookbinder",
55180                     "terms": "book repair"
55181                 },
55182                 "craft/brewery": {
55183                     "name": "Brewery",
55184                     "terms": "beer,bier"
55185                 },
55186                 "craft/carpenter": {
55187                     "name": "Carpenter",
55188                     "terms": "woodworker"
55189                 },
55190                 "craft/carpet_layer": {
55191                     "name": "Carpet Layer",
55192                     "terms": ""
55193                 },
55194                 "craft/caterer": {
55195                     "name": "Caterer",
55196                     "terms": ""
55197                 },
55198                 "craft/clockmaker": {
55199                     "name": "Clockmaker",
55200                     "terms": ""
55201                 },
55202                 "craft/confectionery": {
55203                     "name": "Confectionery",
55204                     "terms": "sweets,candy"
55205                 },
55206                 "craft/dressmaker": {
55207                     "name": "Dressmaker",
55208                     "terms": "seamstress"
55209                 },
55210                 "craft/electrician": {
55211                     "name": "Electrician",
55212                     "terms": "power,wire"
55213                 },
55214                 "craft/gardener": {
55215                     "name": "Gardener",
55216                     "terms": "landscaper,grounds keeper"
55217                 },
55218                 "craft/glaziery": {
55219                     "name": "Glaziery",
55220                     "terms": "glass,stained-glass,window"
55221                 },
55222                 "craft/handicraft": {
55223                     "name": "Handicraft",
55224                     "terms": ""
55225                 },
55226                 "craft/hvac": {
55227                     "name": "HVAC",
55228                     "terms": "heat*,vent*,air conditioning"
55229                 },
55230                 "craft/insulator": {
55231                     "name": "Insulator",
55232                     "terms": ""
55233                 },
55234                 "craft/jeweler": {
55235                     "name": "Jeweler",
55236                     "terms": ""
55237                 },
55238                 "craft/key_cutter": {
55239                     "name": "Key Cutter",
55240                     "terms": ""
55241                 },
55242                 "craft/locksmith": {
55243                     "name": "Locksmith",
55244                     "terms": ""
55245                 },
55246                 "craft/metal_construction": {
55247                     "name": "Metal Construction",
55248                     "terms": ""
55249                 },
55250                 "craft/optician": {
55251                     "name": "Optician",
55252                     "terms": ""
55253                 },
55254                 "craft/painter": {
55255                     "name": "Painter",
55256                     "terms": ""
55257                 },
55258                 "craft/photographer": {
55259                     "name": "Photographer",
55260                     "terms": ""
55261                 },
55262                 "craft/photographic_laboratory": {
55263                     "name": "Photographic Laboratory",
55264                     "terms": "film"
55265                 },
55266                 "craft/plasterer": {
55267                     "name": "Plasterer",
55268                     "terms": ""
55269                 },
55270                 "craft/plumber": {
55271                     "name": "Plumber",
55272                     "terms": "pipe"
55273                 },
55274                 "craft/pottery": {
55275                     "name": "Pottery",
55276                     "terms": "ceramic"
55277                 },
55278                 "craft/rigger": {
55279                     "name": "Rigger",
55280                     "terms": ""
55281                 },
55282                 "craft/roofer": {
55283                     "name": "Roofer",
55284                     "terms": ""
55285                 },
55286                 "craft/saddler": {
55287                     "name": "Saddler",
55288                     "terms": ""
55289                 },
55290                 "craft/sailmaker": {
55291                     "name": "Sailmaker",
55292                     "terms": ""
55293                 },
55294                 "craft/sawmill": {
55295                     "name": "Sawmill",
55296                     "terms": "lumber"
55297                 },
55298                 "craft/scaffolder": {
55299                     "name": "Scaffolder",
55300                     "terms": ""
55301                 },
55302                 "craft/sculpter": {
55303                     "name": "Sculpter",
55304                     "terms": ""
55305                 },
55306                 "craft/shoemaker": {
55307                     "name": "Shoemaker",
55308                     "terms": "cobbler"
55309                 },
55310                 "craft/stonemason": {
55311                     "name": "Stonemason",
55312                     "terms": "masonry"
55313                 },
55314                 "craft/sweep": {
55315                     "name": "Chimney Sweep",
55316                     "terms": ""
55317                 },
55318                 "craft/tailor": {
55319                     "name": "Tailor",
55320                     "terms": "clothes,suit"
55321                 },
55322                 "craft/tiler": {
55323                     "name": "Tiler",
55324                     "terms": ""
55325                 },
55326                 "craft/tinsmith": {
55327                     "name": "Tinsmith",
55328                     "terms": ""
55329                 },
55330                 "craft/upholsterer": {
55331                     "name": "Upholsterer",
55332                     "terms": ""
55333                 },
55334                 "craft/watchmaker": {
55335                     "name": "Watchmaker",
55336                     "terms": ""
55337                 },
55338                 "craft/window_construction": {
55339                     "name": "Window Construction",
55340                     "terms": "glass"
55341                 },
55342                 "craft/winery": {
55343                     "name": "Winery",
55344                     "terms": ""
55345                 },
55346                 "embankment": {
55347                     "name": "Embankment",
55348                     "terms": ""
55349                 },
55350                 "emergency/ambulance_station": {
55351                     "name": "Ambulance Station",
55352                     "terms": "EMS,EMT,rescue"
55353                 },
55354                 "emergency/fire_hydrant": {
55355                     "name": "Fire Hydrant",
55356                     "terms": ""
55357                 },
55358                 "emergency/phone": {
55359                     "name": "Emergency Phone",
55360                     "terms": ""
55361                 },
55362                 "entrance": {
55363                     "name": "Entrance/Exit",
55364                     "terms": ""
55365                 },
55366                 "footway/crossing": {
55367                     "name": "Street Crossing",
55368                     "terms": ""
55369                 },
55370                 "footway/crosswalk": {
55371                     "name": "Pedestrian Crosswalk",
55372                     "terms": "zebra crossing"
55373                 },
55374                 "footway/sidewalk": {
55375                     "name": "Sidewalk",
55376                     "terms": ""
55377                 },
55378                 "ford": {
55379                     "name": "Ford",
55380                     "terms": ""
55381                 },
55382                 "golf/bunker": {
55383                     "name": "Sand Trap",
55384                     "terms": "hazard,bunker"
55385                 },
55386                 "golf/fairway": {
55387                     "name": "Fairway",
55388                     "terms": ""
55389                 },
55390                 "golf/green": {
55391                     "name": "Putting Green",
55392                     "terms": ""
55393                 },
55394                 "golf/hole": {
55395                     "name": "Golf Hole",
55396                     "terms": ""
55397                 },
55398                 "golf/lateral_water_hazard": {
55399                     "name": "Lateral Water Hazard",
55400                     "terms": ""
55401                 },
55402                 "golf/rough": {
55403                     "name": "Rough",
55404                     "terms": ""
55405                 },
55406                 "golf/tee": {
55407                     "name": "Tee Box",
55408                     "terms": "teeing ground"
55409                 },
55410                 "golf/water_hazard": {
55411                     "name": "Water Hazard",
55412                     "terms": ""
55413                 },
55414                 "highway": {
55415                     "name": "Highway",
55416                     "terms": ""
55417                 },
55418                 "highway/bridleway": {
55419                     "name": "Bridle Path",
55420                     "terms": "bridleway,equestrian,horse"
55421                 },
55422                 "highway/bus_stop": {
55423                     "name": "Bus Stop",
55424                     "terms": ""
55425                 },
55426                 "highway/corridor": {
55427                     "name": "Indoor Corridor",
55428                     "terms": "gallery,hall,hallway,indoor,passage,passageway"
55429                 },
55430                 "highway/crossing": {
55431                     "name": "Street Crossing",
55432                     "terms": ""
55433                 },
55434                 "highway/crosswalk": {
55435                     "name": "Pedestrian Crosswalk",
55436                     "terms": "zebra crossing"
55437                 },
55438                 "highway/cycleway": {
55439                     "name": "Cycle Path",
55440                     "terms": "bike"
55441                 },
55442                 "highway/footway": {
55443                     "name": "Foot Path",
55444                     "terms": "hike,hiking,trackway,trail,walk"
55445                 },
55446                 "highway/living_street": {
55447                     "name": "Living Street",
55448                     "terms": ""
55449                 },
55450                 "highway/mini_roundabout": {
55451                     "name": "Mini-Roundabout",
55452                     "terms": ""
55453                 },
55454                 "highway/motorway": {
55455                     "name": "Motorway",
55456                     "terms": ""
55457                 },
55458                 "highway/motorway_junction": {
55459                     "name": "Motorway Junction / Exit",
55460                     "terms": ""
55461                 },
55462                 "highway/motorway_link": {
55463                     "name": "Motorway Link",
55464                     "terms": "ramp,on ramp,off ramp"
55465                 },
55466                 "highway/path": {
55467                     "name": "Path",
55468                     "terms": "hike,hiking,trackway,trail,walk"
55469                 },
55470                 "highway/pedestrian": {
55471                     "name": "Pedestrian Street",
55472                     "terms": ""
55473                 },
55474                 "highway/primary": {
55475                     "name": "Primary Road",
55476                     "terms": ""
55477                 },
55478                 "highway/primary_link": {
55479                     "name": "Primary Link",
55480                     "terms": "ramp,on ramp,off ramp"
55481                 },
55482                 "highway/raceway": {
55483                     "name": "Motor Raceway",
55484                     "terms": "auto*,race*,nascar"
55485                 },
55486                 "highway/residential": {
55487                     "name": "Residential Road",
55488                     "terms": ""
55489                 },
55490                 "highway/rest_area": {
55491                     "name": "Rest Area",
55492                     "terms": "rest stop"
55493                 },
55494                 "highway/road": {
55495                     "name": "Unknown Road",
55496                     "terms": ""
55497                 },
55498                 "highway/secondary": {
55499                     "name": "Secondary Road",
55500                     "terms": ""
55501                 },
55502                 "highway/secondary_link": {
55503                     "name": "Secondary Link",
55504                     "terms": "ramp,on ramp,off ramp"
55505                 },
55506                 "highway/service": {
55507                     "name": "Service Road",
55508                     "terms": ""
55509                 },
55510                 "highway/service/alley": {
55511                     "name": "Alley",
55512                     "terms": ""
55513                 },
55514                 "highway/service/drive-through": {
55515                     "name": "Drive-Through",
55516                     "terms": ""
55517                 },
55518                 "highway/service/driveway": {
55519                     "name": "Driveway",
55520                     "terms": ""
55521                 },
55522                 "highway/service/emergency_access": {
55523                     "name": "Emergency Access",
55524                     "terms": ""
55525                 },
55526                 "highway/service/parking_aisle": {
55527                     "name": "Parking Aisle",
55528                     "terms": ""
55529                 },
55530                 "highway/services": {
55531                     "name": "Service Area",
55532                     "terms": "services,travel plaza,service station"
55533                 },
55534                 "highway/steps": {
55535                     "name": "Steps",
55536                     "terms": "stairs,staircase"
55537                 },
55538                 "highway/stop": {
55539                     "name": "Stop Sign",
55540                     "terms": "stop sign"
55541                 },
55542                 "highway/street_lamp": {
55543                     "name": "Street Lamp",
55544                     "terms": "streetlight,street light,lamp,light,gaslight"
55545                 },
55546                 "highway/tertiary": {
55547                     "name": "Tertiary Road",
55548                     "terms": ""
55549                 },
55550                 "highway/tertiary_link": {
55551                     "name": "Tertiary Link",
55552                     "terms": "ramp,on ramp,off ramp"
55553                 },
55554                 "highway/track": {
55555                     "name": "Track",
55556                     "terms": "woods road,fire road"
55557                 },
55558                 "highway/traffic_signals": {
55559                     "name": "Traffic Signals",
55560                     "terms": "light,stoplight,traffic light"
55561                 },
55562                 "highway/trunk": {
55563                     "name": "Trunk Road",
55564                     "terms": ""
55565                 },
55566                 "highway/trunk_link": {
55567                     "name": "Trunk Link",
55568                     "terms": "ramp,on ramp,off ramp"
55569                 },
55570                 "highway/turning_circle": {
55571                     "name": "Turning Circle",
55572                     "terms": "cul-de-sac"
55573                 },
55574                 "highway/unclassified": {
55575                     "name": "Unclassified Road",
55576                     "terms": ""
55577                 },
55578                 "historic": {
55579                     "name": "Historic Site",
55580                     "terms": ""
55581                 },
55582                 "historic/archaeological_site": {
55583                     "name": "Archaeological Site",
55584                     "terms": ""
55585                 },
55586                 "historic/boundary_stone": {
55587                     "name": "Boundary Stone",
55588                     "terms": ""
55589                 },
55590                 "historic/castle": {
55591                     "name": "Castle",
55592                     "terms": ""
55593                 },
55594                 "historic/memorial": {
55595                     "name": "Memorial",
55596                     "terms": ""
55597                 },
55598                 "historic/monument": {
55599                     "name": "Monument",
55600                     "terms": ""
55601                 },
55602                 "historic/ruins": {
55603                     "name": "Ruins",
55604                     "terms": ""
55605                 },
55606                 "historic/wayside_cross": {
55607                     "name": "Wayside Cross",
55608                     "terms": ""
55609                 },
55610                 "historic/wayside_shrine": {
55611                     "name": "Wayside Shrine",
55612                     "terms": ""
55613                 },
55614                 "junction": {
55615                     "name": "Junction",
55616                     "terms": ""
55617                 },
55618                 "landuse": {
55619                     "name": "Land Use",
55620                     "terms": ""
55621                 },
55622                 "landuse/allotments": {
55623                     "name": "Community Garden",
55624                     "terms": "allotment,garden"
55625                 },
55626                 "landuse/basin": {
55627                     "name": "Basin",
55628                     "terms": ""
55629                 },
55630                 "landuse/cemetery": {
55631                     "name": "Cemetery",
55632                     "terms": ""
55633                 },
55634                 "landuse/churchyard": {
55635                     "name": "Churchyard",
55636                     "terms": ""
55637                 },
55638                 "landuse/commercial": {
55639                     "name": "Commercial Area",
55640                     "terms": ""
55641                 },
55642                 "landuse/construction": {
55643                     "name": "Construction",
55644                     "terms": ""
55645                 },
55646                 "landuse/farm": {
55647                     "name": "Farmland",
55648                     "terms": ""
55649                 },
55650                 "landuse/farmland": {
55651                     "name": "Farmland",
55652                     "terms": ""
55653                 },
55654                 "landuse/farmyard": {
55655                     "name": "Farmyard",
55656                     "terms": ""
55657                 },
55658                 "landuse/forest": {
55659                     "name": "Forest",
55660                     "terms": "tree"
55661                 },
55662                 "landuse/garages": {
55663                     "name": "Garages",
55664                     "terms": ""
55665                 },
55666                 "landuse/grass": {
55667                     "name": "Grass",
55668                     "terms": ""
55669                 },
55670                 "landuse/industrial": {
55671                     "name": "Industrial Area",
55672                     "terms": ""
55673                 },
55674                 "landuse/landfill": {
55675                     "name": "Landfill",
55676                     "terms": "dump"
55677                 },
55678                 "landuse/meadow": {
55679                     "name": "Meadow",
55680                     "terms": ""
55681                 },
55682                 "landuse/military": {
55683                     "name": "Military Area",
55684                     "terms": ""
55685                 },
55686                 "landuse/orchard": {
55687                     "name": "Orchard",
55688                     "terms": ""
55689                 },
55690                 "landuse/plant_nursery": {
55691                     "name": "Plant Nursery",
55692                     "terms": "vivero"
55693                 },
55694                 "landuse/quarry": {
55695                     "name": "Quarry",
55696                     "terms": ""
55697                 },
55698                 "landuse/residential": {
55699                     "name": "Residential Area",
55700                     "terms": ""
55701                 },
55702                 "landuse/retail": {
55703                     "name": "Retail Area",
55704                     "terms": ""
55705                 },
55706                 "landuse/vineyard": {
55707                     "name": "Vineyard",
55708                     "terms": ""
55709                 },
55710                 "leisure": {
55711                     "name": "Leisure",
55712                     "terms": ""
55713                 },
55714                 "leisure/adult_gaming_centre": {
55715                     "name": "Adult Gaming Center",
55716                     "terms": "gambling,slot machine"
55717                 },
55718                 "leisure/bowling_alley": {
55719                     "name": "Bowling Alley",
55720                     "terms": ""
55721                 },
55722                 "leisure/common": {
55723                     "name": "Common",
55724                     "terms": "open space"
55725                 },
55726                 "leisure/dog_park": {
55727                     "name": "Dog Park",
55728                     "terms": ""
55729                 },
55730                 "leisure/firepit": {
55731                     "name": "Firepit",
55732                     "terms": "fireplace,campfire"
55733                 },
55734                 "leisure/garden": {
55735                     "name": "Garden",
55736                     "terms": ""
55737                 },
55738                 "leisure/golf_course": {
55739                     "name": "Golf Course",
55740                     "terms": "links"
55741                 },
55742                 "leisure/ice_rink": {
55743                     "name": "Ice Rink",
55744                     "terms": "hockey,skating,curling"
55745                 },
55746                 "leisure/marina": {
55747                     "name": "Marina",
55748                     "terms": "boat"
55749                 },
55750                 "leisure/nature_reserve": {
55751                     "name": "Nature Reserve",
55752                     "terms": "protected,wildlife"
55753                 },
55754                 "leisure/park": {
55755                     "name": "Park",
55756                     "terms": "esplanade,estate,forest,garden,grass,green,grounds,lawn,lot,meadow,parkland,place,playground,plaza,pleasure garden,recreation area,square,tract,village green,woodland"
55757                 },
55758                 "leisure/picnic_table": {
55759                     "name": "Picnic Table",
55760                     "terms": "bench"
55761                 },
55762                 "leisure/pitch": {
55763                     "name": "Sport Pitch",
55764                     "terms": "field"
55765                 },
55766                 "leisure/pitch/american_football": {
55767                     "name": "American Football Field",
55768                     "terms": ""
55769                 },
55770                 "leisure/pitch/baseball": {
55771                     "name": "Baseball Diamond",
55772                     "terms": ""
55773                 },
55774                 "leisure/pitch/basketball": {
55775                     "name": "Basketball Court",
55776                     "terms": ""
55777                 },
55778                 "leisure/pitch/rugby_league": {
55779                     "name": "Rugby League Field",
55780                     "terms": ""
55781                 },
55782                 "leisure/pitch/rugby_union": {
55783                     "name": "Rugby Union Field",
55784                     "terms": ""
55785                 },
55786                 "leisure/pitch/skateboard": {
55787                     "name": "Skate Park",
55788                     "terms": ""
55789                 },
55790                 "leisure/pitch/soccer": {
55791                     "name": "Soccer Field",
55792                     "terms": ""
55793                 },
55794                 "leisure/pitch/tennis": {
55795                     "name": "Tennis Court",
55796                     "terms": ""
55797                 },
55798                 "leisure/pitch/volleyball": {
55799                     "name": "Volleyball Court",
55800                     "terms": ""
55801                 },
55802                 "leisure/playground": {
55803                     "name": "Playground",
55804                     "terms": "jungle gym,play area"
55805                 },
55806                 "leisure/running_track": {
55807                     "name": "Running Track",
55808                     "terms": ""
55809                 },
55810                 "leisure/slipway": {
55811                     "name": "Slipway",
55812                     "terms": "boat launch,boat ramp"
55813                 },
55814                 "leisure/sports_center": {
55815                     "name": "Sports Center / Gym",
55816                     "terms": "gym"
55817                 },
55818                 "leisure/stadium": {
55819                     "name": "Stadium",
55820                     "terms": ""
55821                 },
55822                 "leisure/swimming_pool": {
55823                     "name": "Swimming Pool",
55824                     "terms": ""
55825                 },
55826                 "leisure/track": {
55827                     "name": "Racetrack (non-Motorsport)",
55828                     "terms": ""
55829                 },
55830                 "line": {
55831                     "name": "Line",
55832                     "terms": ""
55833                 },
55834                 "man_made": {
55835                     "name": "Man Made",
55836                     "terms": ""
55837                 },
55838                 "man_made/adit": {
55839                     "name": "Adit",
55840                     "terms": "entrance,underground,mine,cave"
55841                 },
55842                 "man_made/breakwater": {
55843                     "name": "Breakwater",
55844                     "terms": ""
55845                 },
55846                 "man_made/cutline": {
55847                     "name": "Cut line",
55848                     "terms": ""
55849                 },
55850                 "man_made/embankment": {
55851                     "name": "Embankment",
55852                     "terms": ""
55853                 },
55854                 "man_made/flagpole": {
55855                     "name": "Flagpole",
55856                     "terms": ""
55857                 },
55858                 "man_made/lighthouse": {
55859                     "name": "Lighthouse",
55860                     "terms": ""
55861                 },
55862                 "man_made/mast": {
55863                     "name": "Radio Mast",
55864                     "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower"
55865                 },
55866                 "man_made/observation": {
55867                     "name": "Observation Tower",
55868                     "terms": "lookout tower,fire tower"
55869                 },
55870                 "man_made/petroleum_well": {
55871                     "name": "Oil Well",
55872                     "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack"
55873                 },
55874                 "man_made/pier": {
55875                     "name": "Pier",
55876                     "terms": ""
55877                 },
55878                 "man_made/pipeline": {
55879                     "name": "Pipeline",
55880                     "terms": ""
55881                 },
55882                 "man_made/silo": {
55883                     "name": "Silo",
55884                     "terms": "grain,corn,wheat"
55885                 },
55886                 "man_made/storage_tank": {
55887                     "name": "Storage Tank",
55888                     "terms": "water,oil,gas,petrol"
55889                 },
55890                 "man_made/survey_point": {
55891                     "name": "Survey Point",
55892                     "terms": ""
55893                 },
55894                 "man_made/tower": {
55895                     "name": "Tower",
55896                     "terms": ""
55897                 },
55898                 "man_made/wastewater_plant": {
55899                     "name": "Wastewater Plant",
55900                     "terms": "sewage*,water treatment plant,reclamation plant"
55901                 },
55902                 "man_made/water_tower": {
55903                     "name": "Water Tower",
55904                     "terms": ""
55905                 },
55906                 "man_made/water_well": {
55907                     "name": "Water Well",
55908                     "terms": ""
55909                 },
55910                 "man_made/water_works": {
55911                     "name": "Water Works",
55912                     "terms": ""
55913                 },
55914                 "military/airfield": {
55915                     "name": "Airfield",
55916                     "terms": ""
55917                 },
55918                 "military/barracks": {
55919                     "name": "Barracks",
55920                     "terms": ""
55921                 },
55922                 "military/bunker": {
55923                     "name": "Bunker",
55924                     "terms": ""
55925                 },
55926                 "military/checkpoint": {
55927                     "name": "Checkpoint",
55928                     "terms": ""
55929                 },
55930                 "military/danger_area": {
55931                     "name": "Danger Area",
55932                     "terms": ""
55933                 },
55934                 "military/naval_base": {
55935                     "name": "Naval Base",
55936                     "terms": ""
55937                 },
55938                 "military/obstacle_course": {
55939                     "name": "Obstacle Course",
55940                     "terms": ""
55941                 },
55942                 "military/range": {
55943                     "name": "Military Range",
55944                     "terms": ""
55945                 },
55946                 "military/training_area": {
55947                     "name": "Training area",
55948                     "terms": ""
55949                 },
55950                 "natural": {
55951                     "name": "Natural",
55952                     "terms": ""
55953                 },
55954                 "natural/bay": {
55955                     "name": "Bay",
55956                     "terms": ""
55957                 },
55958                 "natural/beach": {
55959                     "name": "Beach",
55960                     "terms": ""
55961                 },
55962                 "natural/cave_entrance": {
55963                     "name": "Cave Entrance",
55964                     "terms": "cavern,hollow,grotto,shelter,cavity"
55965                 },
55966                 "natural/cliff": {
55967                     "name": "Cliff",
55968                     "terms": ""
55969                 },
55970                 "natural/coastline": {
55971                     "name": "Coastline",
55972                     "terms": "shore"
55973                 },
55974                 "natural/fell": {
55975                     "name": "Fell",
55976                     "terms": ""
55977                 },
55978                 "natural/glacier": {
55979                     "name": "Glacier",
55980                     "terms": ""
55981                 },
55982                 "natural/grassland": {
55983                     "name": "Grassland",
55984                     "terms": ""
55985                 },
55986                 "natural/heath": {
55987                     "name": "Heath",
55988                     "terms": ""
55989                 },
55990                 "natural/peak": {
55991                     "name": "Peak",
55992                     "terms": "acme,aiguille,alp,climax,crest,crown,hill,mount,mountain,pinnacle,summit,tip,top"
55993                 },
55994                 "natural/saddle": {
55995                     "name": "Saddle",
55996                     "terms": "pass,mountain pass,top"
55997                 },
55998                 "natural/scree": {
55999                     "name": "Scree",
56000                     "terms": "loose rocks"
56001                 },
56002                 "natural/scrub": {
56003                     "name": "Scrub",
56004                     "terms": "bush,shrubs"
56005                 },
56006                 "natural/spring": {
56007                     "name": "Spring",
56008                     "terms": ""
56009                 },
56010                 "natural/tree": {
56011                     "name": "Tree",
56012                     "terms": ""
56013                 },
56014                 "natural/tree_row": {
56015                     "name": "Tree row",
56016                     "terms": ""
56017                 },
56018                 "natural/volcano": {
56019                     "name": "Volcano",
56020                     "terms": "mountain,crater"
56021                 },
56022                 "natural/water": {
56023                     "name": "Water",
56024                     "terms": ""
56025                 },
56026                 "natural/water/lake": {
56027                     "name": "Lake",
56028                     "terms": "lakelet,loch,mere"
56029                 },
56030                 "natural/water/pond": {
56031                     "name": "Pond",
56032                     "terms": "lakelet,millpond,tarn,pool,mere"
56033                 },
56034                 "natural/water/reservoir": {
56035                     "name": "Reservoir",
56036                     "terms": ""
56037                 },
56038                 "natural/wetland": {
56039                     "name": "Wetland",
56040                     "terms": ""
56041                 },
56042                 "natural/wood": {
56043                     "name": "Wood",
56044                     "terms": "tree"
56045                 },
56046                 "office": {
56047                     "name": "Office",
56048                     "terms": ""
56049                 },
56050                 "office/accountant": {
56051                     "name": "Accountant",
56052                     "terms": ""
56053                 },
56054                 "office/administrative": {
56055                     "name": "Administrative Office",
56056                     "terms": ""
56057                 },
56058                 "office/architect": {
56059                     "name": "Architect",
56060                     "terms": ""
56061                 },
56062                 "office/company": {
56063                     "name": "Company Office",
56064                     "terms": ""
56065                 },
56066                 "office/educational_institution": {
56067                     "name": "Educational Institution",
56068                     "terms": ""
56069                 },
56070                 "office/employment_agency": {
56071                     "name": "Employment Agency",
56072                     "terms": "job"
56073                 },
56074                 "office/estate_agent": {
56075                     "name": "Real Estate Office",
56076                     "terms": ""
56077                 },
56078                 "office/financial": {
56079                     "name": "Financial Office",
56080                     "terms": ""
56081                 },
56082                 "office/government": {
56083                     "name": "Government Office",
56084                     "terms": ""
56085                 },
56086                 "office/insurance": {
56087                     "name": "Insurance Office",
56088                     "terms": ""
56089                 },
56090                 "office/it": {
56091                     "name": "IT Office",
56092                     "terms": ""
56093                 },
56094                 "office/lawyer": {
56095                     "name": "Law Office",
56096                     "terms": ""
56097                 },
56098                 "office/newspaper": {
56099                     "name": "Newspaper",
56100                     "terms": ""
56101                 },
56102                 "office/ngo": {
56103                     "name": "NGO Office",
56104                     "terms": ""
56105                 },
56106                 "office/physician": {
56107                     "name": "Physician",
56108                     "terms": ""
56109                 },
56110                 "office/political_party": {
56111                     "name": "Political Party",
56112                     "terms": ""
56113                 },
56114                 "office/research": {
56115                     "name": "Research Office",
56116                     "terms": ""
56117                 },
56118                 "office/telecommunication": {
56119                     "name": "Telecom Office",
56120                     "terms": ""
56121                 },
56122                 "office/therapist": {
56123                     "name": "Therapist",
56124                     "terms": ""
56125                 },
56126                 "office/travel_agent": {
56127                     "name": "Travel Agency",
56128                     "terms": ""
56129                 },
56130                 "piste": {
56131                     "name": "Piste/Ski Trail",
56132                     "terms": "ski,sled,sleigh,snowboard,nordic,downhill,snowmobile"
56133                 },
56134                 "place": {
56135                     "name": "Place",
56136                     "terms": ""
56137                 },
56138                 "place/city": {
56139                     "name": "City",
56140                     "terms": ""
56141                 },
56142                 "place/farm": {
56143                     "name": "Farm",
56144                     "terms": ""
56145                 },
56146                 "place/hamlet": {
56147                     "name": "Hamlet",
56148                     "terms": ""
56149                 },
56150                 "place/island": {
56151                     "name": "Island",
56152                     "terms": "archipelago,atoll,bar,cay,isle,islet,key,reef"
56153                 },
56154                 "place/isolated_dwelling": {
56155                     "name": "Isolated Dwelling",
56156                     "terms": ""
56157                 },
56158                 "place/locality": {
56159                     "name": "Locality",
56160                     "terms": ""
56161                 },
56162                 "place/neighbourhood": {
56163                     "name": "Neighborhood",
56164                     "terms": "neighbourhood"
56165                 },
56166                 "place/suburb": {
56167                     "name": "Borough",
56168                     "terms": "Boro,Quarter"
56169                 },
56170                 "place/town": {
56171                     "name": "Town",
56172                     "terms": ""
56173                 },
56174                 "place/village": {
56175                     "name": "Village",
56176                     "terms": ""
56177                 },
56178                 "point": {
56179                     "name": "Point",
56180                     "terms": ""
56181                 },
56182                 "power": {
56183                     "name": "Power",
56184                     "terms": ""
56185                 },
56186                 "power/generator": {
56187                     "name": "Power Generator",
56188                     "terms": ""
56189                 },
56190                 "power/line": {
56191                     "name": "Power Line",
56192                     "terms": ""
56193                 },
56194                 "power/minor_line": {
56195                     "name": "Minor Power Line",
56196                     "terms": ""
56197                 },
56198                 "power/pole": {
56199                     "name": "Power Pole",
56200                     "terms": ""
56201                 },
56202                 "power/sub_station": {
56203                     "name": "Substation",
56204                     "terms": ""
56205                 },
56206                 "power/substation": {
56207                     "name": "Substation",
56208                     "terms": ""
56209                 },
56210                 "power/tower": {
56211                     "name": "High-Voltage Tower",
56212                     "terms": ""
56213                 },
56214                 "power/transformer": {
56215                     "name": "Transformer",
56216                     "terms": ""
56217                 },
56218                 "public_transport/platform": {
56219                     "name": "Platform",
56220                     "terms": ""
56221                 },
56222                 "public_transport/stop_position": {
56223                     "name": "Stop Position",
56224                     "terms": ""
56225                 },
56226                 "railway": {
56227                     "name": "Railway",
56228                     "terms": ""
56229                 },
56230                 "railway/abandoned": {
56231                     "name": "Abandoned Railway",
56232                     "terms": ""
56233                 },
56234                 "railway/disused": {
56235                     "name": "Disused Railway",
56236                     "terms": ""
56237                 },
56238                 "railway/funicular": {
56239                     "name": "Funicular",
56240                     "terms": "venicular,cliff railway,cable car,cable railway,funicular railway"
56241                 },
56242                 "railway/halt": {
56243                     "name": "Railway Halt",
56244                     "terms": "break,interrupt,rest,wait,interruption"
56245                 },
56246                 "railway/level_crossing": {
56247                     "name": "Railway Crossing",
56248                     "terms": "crossing,railroad crossing,level crossing,grade crossing,road through railroad,train crossing"
56249                 },
56250                 "railway/monorail": {
56251                     "name": "Monorail",
56252                     "terms": ""
56253                 },
56254                 "railway/narrow_gauge": {
56255                     "name": "Narrow Gauge Rail",
56256                     "terms": "narrow gauge railway,narrow gauge railroad"
56257                 },
56258                 "railway/platform": {
56259                     "name": "Railway Platform",
56260                     "terms": ""
56261                 },
56262                 "railway/rail": {
56263                     "name": "Rail",
56264                     "terms": ""
56265                 },
56266                 "railway/station": {
56267                     "name": "Railway Station",
56268                     "terms": "train station,station"
56269                 },
56270                 "railway/subway": {
56271                     "name": "Subway",
56272                     "terms": ""
56273                 },
56274                 "railway/subway_entrance": {
56275                     "name": "Subway Entrance",
56276                     "terms": ""
56277                 },
56278                 "railway/tram": {
56279                     "name": "Tram",
56280                     "terms": "streetcar"
56281                 },
56282                 "relation": {
56283                     "name": "Relation",
56284                     "terms": ""
56285                 },
56286                 "roundabout": {
56287                     "name": "Roundabout",
56288                     "terms": ""
56289                 },
56290                 "route/ferry": {
56291                     "name": "Ferry Route",
56292                     "terms": ""
56293                 },
56294                 "shop": {
56295                     "name": "Shop",
56296                     "terms": ""
56297                 },
56298                 "shop/alcohol": {
56299                     "name": "Liquor Store",
56300                     "terms": "alcohol,beer,booze,wine"
56301                 },
56302                 "shop/anime": {
56303                     "name": "Anime Shop",
56304                     "terms": ""
56305                 },
56306                 "shop/antiques": {
56307                     "name": "Antiques Shop",
56308                     "terms": ""
56309                 },
56310                 "shop/art": {
56311                     "name": "Art Gallery",
56312                     "terms": ""
56313                 },
56314                 "shop/baby_goods": {
56315                     "name": "Baby Goods Store",
56316                     "terms": ""
56317                 },
56318                 "shop/bag": {
56319                     "name": "Bag/Luggage Store",
56320                     "terms": "handbag,purse"
56321                 },
56322                 "shop/bakery": {
56323                     "name": "Bakery",
56324                     "terms": ""
56325                 },
56326                 "shop/bathroom_furnishing": {
56327                     "name": "Bathroom Furnishing Store",
56328                     "terms": ""
56329                 },
56330                 "shop/beauty": {
56331                     "name": "Beauty Shop",
56332                     "terms": "nail spa,spa,salon,tanning"
56333                 },
56334                 "shop/bed": {
56335                     "name": "Bedding/Mattress Store",
56336                     "terms": ""
56337                 },
56338                 "shop/beverages": {
56339                     "name": "Beverage Store",
56340                     "terms": ""
56341                 },
56342                 "shop/bicycle": {
56343                     "name": "Bicycle Shop",
56344                     "terms": ""
56345                 },
56346                 "shop/bookmaker": {
56347                     "name": "Bookmaker",
56348                     "terms": ""
56349                 },
56350                 "shop/books": {
56351                     "name": "Book Store",
56352                     "terms": ""
56353                 },
56354                 "shop/boutique": {
56355                     "name": "Boutique",
56356                     "terms": ""
56357                 },
56358                 "shop/butcher": {
56359                     "name": "Butcher",
56360                     "terms": "meat"
56361                 },
56362                 "shop/candles": {
56363                     "name": "Candle Shop",
56364                     "terms": ""
56365                 },
56366                 "shop/car": {
56367                     "name": "Car Dealership",
56368                     "terms": "auto"
56369                 },
56370                 "shop/car_parts": {
56371                     "name": "Car Parts Store",
56372                     "terms": "auto"
56373                 },
56374                 "shop/car_repair": {
56375                     "name": "Car Repair Shop",
56376                     "terms": "auto"
56377                 },
56378                 "shop/carpet": {
56379                     "name": "Carpet Store",
56380                     "terms": "rug"
56381                 },
56382                 "shop/cheese": {
56383                     "name": "Cheese Store",
56384                     "terms": ""
56385                 },
56386                 "shop/chemist": {
56387                     "name": "Chemist",
56388                     "terms": ""
56389                 },
56390                 "shop/chocolate": {
56391                     "name": "Chocolate Store",
56392                     "terms": ""
56393                 },
56394                 "shop/clothes": {
56395                     "name": "Clothing Store",
56396                     "terms": ""
56397                 },
56398                 "shop/computer": {
56399                     "name": "Computer Store",
56400                     "terms": ""
56401                 },
56402                 "shop/confectionery": {
56403                     "name": "Candy Store",
56404                     "terms": ""
56405                 },
56406                 "shop/convenience": {
56407                     "name": "Convenience Store",
56408                     "terms": ""
56409                 },
56410                 "shop/copyshop": {
56411                     "name": "Copy Store",
56412                     "terms": ""
56413                 },
56414                 "shop/cosmetics": {
56415                     "name": "Cosmetics Store",
56416                     "terms": ""
56417                 },
56418                 "shop/craft": {
56419                     "name": "Arts and Crafts Store",
56420                     "terms": ""
56421                 },
56422                 "shop/curtain": {
56423                     "name": "Curtain Store",
56424                     "terms": "drape*,window"
56425                 },
56426                 "shop/dairy": {
56427                     "name": "Dairy Store",
56428                     "terms": "milk,egg,cheese"
56429                 },
56430                 "shop/deli": {
56431                     "name": "Deli",
56432                     "terms": "lunch,meat,sandwich"
56433                 },
56434                 "shop/department_store": {
56435                     "name": "Department Store",
56436                     "terms": ""
56437                 },
56438                 "shop/doityourself": {
56439                     "name": "DIY Store",
56440                     "terms": ""
56441                 },
56442                 "shop/dry_cleaning": {
56443                     "name": "Dry Cleaner",
56444                     "terms": ""
56445                 },
56446                 "shop/electronics": {
56447                     "name": "Electronics Store",
56448                     "terms": "appliance,audio,computer,tv"
56449                 },
56450                 "shop/erotic": {
56451                     "name": "Erotic Store",
56452                     "terms": "sex,porn"
56453                 },
56454                 "shop/fabric": {
56455                     "name": "Fabric Store",
56456                     "terms": "sew"
56457                 },
56458                 "shop/farm": {
56459                     "name": "Produce Stand",
56460                     "terms": "farm shop,farm stand"
56461                 },
56462                 "shop/fashion": {
56463                     "name": "Fashion Store",
56464                     "terms": ""
56465                 },
56466                 "shop/fishmonger": {
56467                     "name": "Fishmonger",
56468                     "terms": ""
56469                 },
56470                 "shop/florist": {
56471                     "name": "Florist",
56472                     "terms": "flower"
56473                 },
56474                 "shop/frame": {
56475                     "name": "Framing Shop",
56476                     "terms": ""
56477                 },
56478                 "shop/funeral_directors": {
56479                     "name": "Funeral Home",
56480                     "terms": "undertaker,memorial home"
56481                 },
56482                 "shop/furnace": {
56483                     "name": "Furnace Store",
56484                     "terms": "oven,stove"
56485                 },
56486                 "shop/furniture": {
56487                     "name": "Furniture Store",
56488                     "terms": "chair,sofa,table"
56489                 },
56490                 "shop/garden_centre": {
56491                     "name": "Garden Center",
56492                     "terms": "landscape,mulch,shrub,tree"
56493                 },
56494                 "shop/gift": {
56495                     "name": "Gift Shop",
56496                     "terms": ""
56497                 },
56498                 "shop/greengrocer": {
56499                     "name": "Greengrocer",
56500                     "terms": "fruit,vegetable"
56501                 },
56502                 "shop/hairdresser": {
56503                     "name": "Hairdresser",
56504                     "terms": ""
56505                 },
56506                 "shop/hardware": {
56507                     "name": "Hardware Store",
56508                     "terms": ""
56509                 },
56510                 "shop/hearing_aids": {
56511                     "name": "Hearing Aids Store",
56512                     "terms": ""
56513                 },
56514                 "shop/herbalist": {
56515                     "name": "Herbalist",
56516                     "terms": ""
56517                 },
56518                 "shop/hifi": {
56519                     "name": "Hifi Store",
56520                     "terms": "stereo,video"
56521                 },
56522                 "shop/houseware": {
56523                     "name": "Houseware Store",
56524                     "terms": "home,household"
56525                 },
56526                 "shop/interior_decoration": {
56527                     "name": "Interior Decoration Store",
56528                     "terms": ""
56529                 },
56530                 "shop/jewelry": {
56531                     "name": "Jeweler",
56532                     "terms": "diamond,gem,ring"
56533                 },
56534                 "shop/kiosk": {
56535                     "name": "News Kiosk",
56536                     "terms": ""
56537                 },
56538                 "shop/kitchen": {
56539                     "name": "Kitchen Design Store",
56540                     "terms": ""
56541                 },
56542                 "shop/laundry": {
56543                     "name": "Laundry",
56544                     "terms": ""
56545                 },
56546                 "shop/leather": {
56547                     "name": "Leather Store",
56548                     "terms": ""
56549                 },
56550                 "shop/locksmith": {
56551                     "name": "Locksmith",
56552                     "terms": "key,lockpick"
56553                 },
56554                 "shop/lottery": {
56555                     "name": "Lottery Shop",
56556                     "terms": ""
56557                 },
56558                 "shop/mall": {
56559                     "name": "Mall",
56560                     "terms": ""
56561                 },
56562                 "shop/massage": {
56563                     "name": "Massage Shop",
56564                     "terms": ""
56565                 },
56566                 "shop/medical_supply": {
56567                     "name": "Medical Supply Store",
56568                     "terms": ""
56569                 },
56570                 "shop/mobile_phone": {
56571                     "name": "Mobile Phone Store",
56572                     "terms": ""
56573                 },
56574                 "shop/money_lender": {
56575                     "name": "Money Lender",
56576                     "terms": ""
56577                 },
56578                 "shop/motorcycle": {
56579                     "name": "Motorcycle Dealership",
56580                     "terms": ""
56581                 },
56582                 "shop/music": {
56583                     "name": "Music Store",
56584                     "terms": "CD,vinyl"
56585                 },
56586                 "shop/musical_instrument": {
56587                     "name": "Musical Instrument Store",
56588                     "terms": ""
56589                 },
56590                 "shop/newsagent": {
56591                     "name": "Newspaper/Magazine Shop",
56592                     "terms": ""
56593                 },
56594                 "shop/optician": {
56595                     "name": "Optician",
56596                     "terms": "eye,glasses"
56597                 },
56598                 "shop/organic": {
56599                     "name": "Organic Goods Store",
56600                     "terms": ""
56601                 },
56602                 "shop/outdoor": {
56603                     "name": "Outdoors Store",
56604                     "terms": "camping,climbing,hiking"
56605                 },
56606                 "shop/paint": {
56607                     "name": "Paint Store",
56608                     "terms": ""
56609                 },
56610                 "shop/pawnbroker": {
56611                     "name": "Pawn Shop",
56612                     "terms": ""
56613                 },
56614                 "shop/pet": {
56615                     "name": "Pet Store",
56616                     "terms": "cat,dog,fish"
56617                 },
56618                 "shop/photo": {
56619                     "name": "Photography Store",
56620                     "terms": "camera,film"
56621                 },
56622                 "shop/pyrotechnics": {
56623                     "name": "Fireworks Store",
56624                     "terms": ""
56625                 },
56626                 "shop/radiotechnics": {
56627                     "name": "Radio/Electronic Component Store",
56628                     "terms": ""
56629                 },
56630                 "shop/religion": {
56631                     "name": "Religious Store",
56632                     "terms": ""
56633                 },
56634                 "shop/scuba_diving": {
56635                     "name": "Scuba Diving Shop",
56636                     "terms": ""
56637                 },
56638                 "shop/seafood": {
56639                     "name": "Seafood Shop",
56640                     "terms": "fishmonger"
56641                 },
56642                 "shop/second_hand": {
56643                     "name": "Consignment/Thrift Store",
56644                     "terms": "secondhand,second hand,resale,thrift,used"
56645                 },
56646                 "shop/shoes": {
56647                     "name": "Shoe Store",
56648                     "terms": ""
56649                 },
56650                 "shop/sports": {
56651                     "name": "Sporting Goods Store",
56652                     "terms": ""
56653                 },
56654                 "shop/stationery": {
56655                     "name": "Stationery Store",
56656                     "terms": "card,paper"
56657                 },
56658                 "shop/supermarket": {
56659                     "name": "Supermarket",
56660                     "terms": "grocery,store,shop"
56661                 },
56662                 "shop/tailor": {
56663                     "name": "Tailor",
56664                     "terms": "clothes,suit"
56665                 },
56666                 "shop/tattoo": {
56667                     "name": "Tattoo Parlor",
56668                     "terms": ""
56669                 },
56670                 "shop/tea": {
56671                     "name": "Tea Store",
56672                     "terms": ""
56673                 },
56674                 "shop/ticket": {
56675                     "name": "Ticket Seller",
56676                     "terms": ""
56677                 },
56678                 "shop/tobacco": {
56679                     "name": "Tobacco Shop",
56680                     "terms": ""
56681                 },
56682                 "shop/toys": {
56683                     "name": "Toy Store",
56684                     "terms": ""
56685                 },
56686                 "shop/travel_agency": {
56687                     "name": "Travel Agency",
56688                     "terms": ""
56689                 },
56690                 "shop/tyres": {
56691                     "name": "Tire Store",
56692                     "terms": ""
56693                 },
56694                 "shop/vacant": {
56695                     "name": "Vacant Shop",
56696                     "terms": ""
56697                 },
56698                 "shop/vacuum_cleaner": {
56699                     "name": "Vacuum Cleaner Store",
56700                     "terms": ""
56701                 },
56702                 "shop/variety_store": {
56703                     "name": "Variety Store",
56704                     "terms": ""
56705                 },
56706                 "shop/video": {
56707                     "name": "Video Store",
56708                     "terms": "DVD"
56709                 },
56710                 "shop/video_games": {
56711                     "name": "Video Game Store",
56712                     "terms": ""
56713                 },
56714                 "shop/water_sports": {
56715                     "name": "Watersport/Swim Shop",
56716                     "terms": ""
56717                 },
56718                 "shop/weapons": {
56719                     "name": "Weapon Shop",
56720                     "terms": "ammo,gun,knife,knives"
56721                 },
56722                 "shop/window_blind": {
56723                     "name": "Window Blind Store",
56724                     "terms": ""
56725                 },
56726                 "shop/wine": {
56727                     "name": "Wine Shop",
56728                     "terms": ""
56729                 },
56730                 "tourism": {
56731                     "name": "Tourism",
56732                     "terms": ""
56733                 },
56734                 "tourism/alpine_hut": {
56735                     "name": "Alpine Hut",
56736                     "terms": ""
56737                 },
56738                 "tourism/artwork": {
56739                     "name": "Artwork",
56740                     "terms": "mural,sculpture,statue"
56741                 },
56742                 "tourism/attraction": {
56743                     "name": "Tourist Attraction",
56744                     "terms": ""
56745                 },
56746                 "tourism/camp_site": {
56747                     "name": "Camp Site",
56748                     "terms": "Tent"
56749                 },
56750                 "tourism/caravan_site": {
56751                     "name": "RV Park",
56752                     "terms": "Motor Home,Camper"
56753                 },
56754                 "tourism/chalet": {
56755                     "name": "Chalet",
56756                     "terms": ""
56757                 },
56758                 "tourism/guest_house": {
56759                     "name": "Guest House",
56760                     "terms": "B&B,Bed and Breakfast"
56761                 },
56762                 "tourism/hostel": {
56763                     "name": "Hostel",
56764                     "terms": ""
56765                 },
56766                 "tourism/hotel": {
56767                     "name": "Hotel",
56768                     "terms": ""
56769                 },
56770                 "tourism/information": {
56771                     "name": "Information",
56772                     "terms": ""
56773                 },
56774                 "tourism/motel": {
56775                     "name": "Motel",
56776                     "terms": ""
56777                 },
56778                 "tourism/museum": {
56779                     "name": "Museum",
56780                     "terms": "exhibition,foundation,gallery,hall,institution"
56781                 },
56782                 "tourism/picnic_site": {
56783                     "name": "Picnic Site",
56784                     "terms": "camp"
56785                 },
56786                 "tourism/theme_park": {
56787                     "name": "Theme Park",
56788                     "terms": ""
56789                 },
56790                 "tourism/viewpoint": {
56791                     "name": "Viewpoint",
56792                     "terms": ""
56793                 },
56794                 "tourism/zoo": {
56795                     "name": "Zoo",
56796                     "terms": ""
56797                 },
56798                 "traffic_calming/bump": {
56799                     "name": "Speed Bump",
56800                     "terms": "speed hump"
56801                 },
56802                 "traffic_calming/hump": {
56803                     "name": "Speed Hump",
56804                     "terms": "speed bump"
56805                 },
56806                 "traffic_calming/rumble_strip": {
56807                     "name": "Rumble Strip",
56808                     "terms": "sleeper lines,audible lines,growlers"
56809                 },
56810                 "traffic_calming/table": {
56811                     "name": "Raised Pedestrian Crossing",
56812                     "terms": "speed table,flat top hump"
56813                 },
56814                 "type/boundary": {
56815                     "name": "Boundary",
56816                     "terms": ""
56817                 },
56818                 "type/boundary/administrative": {
56819                     "name": "Administrative Boundary",
56820                     "terms": ""
56821                 },
56822                 "type/multipolygon": {
56823                     "name": "Multipolygon",
56824                     "terms": ""
56825                 },
56826                 "type/restriction": {
56827                     "name": "Restriction",
56828                     "terms": ""
56829                 },
56830                 "type/restriction/no_left_turn": {
56831                     "name": "No Left Turn",
56832                     "terms": ""
56833                 },
56834                 "type/restriction/no_right_turn": {
56835                     "name": "No Right Turn",
56836                     "terms": ""
56837                 },
56838                 "type/restriction/no_straight_on": {
56839                     "name": "No Straight On",
56840                     "terms": ""
56841                 },
56842                 "type/restriction/no_u_turn": {
56843                     "name": "No U-turn",
56844                     "terms": ""
56845                 },
56846                 "type/restriction/only_left_turn": {
56847                     "name": "Left Turn Only",
56848                     "terms": ""
56849                 },
56850                 "type/restriction/only_right_turn": {
56851                     "name": "Right Turn Only",
56852                     "terms": ""
56853                 },
56854                 "type/restriction/only_straight_on": {
56855                     "name": "No Turns",
56856                     "terms": ""
56857                 },
56858                 "type/route": {
56859                     "name": "Route",
56860                     "terms": ""
56861                 },
56862                 "type/route/bicycle": {
56863                     "name": "Cycle Route",
56864                     "terms": ""
56865                 },
56866                 "type/route/bus": {
56867                     "name": "Bus Route",
56868                     "terms": ""
56869                 },
56870                 "type/route/detour": {
56871                     "name": "Detour Route",
56872                     "terms": ""
56873                 },
56874                 "type/route/ferry": {
56875                     "name": "Ferry Route",
56876                     "terms": ""
56877                 },
56878                 "type/route/foot": {
56879                     "name": "Foot Route",
56880                     "terms": ""
56881                 },
56882                 "type/route/hiking": {
56883                     "name": "Hiking Route",
56884                     "terms": ""
56885                 },
56886                 "type/route/pipeline": {
56887                     "name": "Pipeline Route",
56888                     "terms": ""
56889                 },
56890                 "type/route/power": {
56891                     "name": "Power Route",
56892                     "terms": ""
56893                 },
56894                 "type/route/road": {
56895                     "name": "Road Route",
56896                     "terms": ""
56897                 },
56898                 "type/route/train": {
56899                     "name": "Train Route",
56900                     "terms": ""
56901                 },
56902                 "type/route/tram": {
56903                     "name": "Tram Route",
56904                     "terms": ""
56905                 },
56906                 "type/route_master": {
56907                     "name": "Route Master",
56908                     "terms": ""
56909                 },
56910                 "vertex": {
56911                     "name": "Other",
56912                     "terms": ""
56913                 },
56914                 "waterway": {
56915                     "name": "Waterway",
56916                     "terms": ""
56917                 },
56918                 "waterway/canal": {
56919                     "name": "Canal",
56920                     "terms": ""
56921                 },
56922                 "waterway/dam": {
56923                     "name": "Dam",
56924                     "terms": ""
56925                 },
56926                 "waterway/ditch": {
56927                     "name": "Ditch",
56928                     "terms": ""
56929                 },
56930                 "waterway/drain": {
56931                     "name": "Drain",
56932                     "terms": ""
56933                 },
56934                 "waterway/fuel": {
56935                     "name": "Marine Fuel Station",
56936                     "terms": "petrol,gas,diesel,boat"
56937                 },
56938                 "waterway/river": {
56939                     "name": "River",
56940                     "terms": "beck,branch,brook,course,creek,estuary,rill,rivulet,run,runnel,stream,tributary,watercourse"
56941                 },
56942                 "waterway/riverbank": {
56943                     "name": "Riverbank",
56944                     "terms": ""
56945                 },
56946                 "waterway/sanitary_dump_station": {
56947                     "name": "Marine Toilet Disposal",
56948                     "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet"
56949                 },
56950                 "waterway/stream": {
56951                     "name": "Stream",
56952                     "terms": "beck,branch,brook,burn,course,creek,current,drift,flood,flow,freshet,race,rill,rindle,rivulet,run,runnel,rush,spate,spritz,surge,tide,torrent,tributary,watercourse"
56953                 },
56954                 "waterway/weir": {
56955                     "name": "Weir",
56956                     "terms": ""
56957                 }
56958             }
56959         }
56960     },
56961     "suggestions": {
56962         "amenity": {
56963             "fuel": {
56964                 "76": {
56965                     "count": 314
56966                 },
56967                 "Neste": {
56968                     "count": 189
56969                 },
56970                 "BP": {
56971                     "count": 2511
56972                 },
56973                 "Shell": {
56974                     "count": 8380
56975                 },
56976                 "Agip": {
56977                     "count": 2651
56978                 },
56979                 "Migrol": {
56980                     "count": 65
56981                 },
56982                 "Avia": {
56983                     "count": 897
56984                 },
56985                 "Texaco": {
56986                     "count": 680
56987                 },
56988                 "Total": {
56989                     "count": 2607
56990                 },
56991                 "Statoil": {
56992                     "count": 596
56993                 },
56994                 "Esso": {
56995                     "count": 3652
56996                 },
56997                 "Jet": {
56998                     "count": 441
56999                 },
57000                 "Avanti": {
57001                     "count": 90
57002                 },
57003                 "Sainsbury's": {
57004                     "count": 58
57005                 },
57006                 "OMV": {
57007                     "count": 701
57008                 },
57009                 "Aral": {
57010                     "count": 1339
57011                 },
57012                 "Tesco": {
57013                     "count": 197
57014                 },
57015                 "JET": {
57016                     "count": 180
57017                 },
57018                 "Morrisons": {
57019                     "count": 111
57020                 },
57021                 "United": {
57022                     "count": 91
57023                 },
57024                 "Canadian Tire": {
57025                     "count": 66
57026                 },
57027                 "Mobil": {
57028                     "count": 613
57029                 },
57030                 "Caltex": {
57031                     "count": 1001
57032                 },
57033                 "Sunoco": {
57034                     "count": 355
57035                 },
57036                 "Q8": {
57037                     "count": 1161
57038                 },
57039                 "ABC": {
57040                     "count": 79
57041                 },
57042                 "ARAL": {
57043                     "count": 375
57044                 },
57045                 "CEPSA": {
57046                     "count": 1018
57047                 },
57048                 "BFT": {
57049                     "count": 89
57050                 },
57051                 "Petron": {
57052                     "count": 878
57053                 },
57054                 "Intermarché": {
57055                     "count": 434
57056                 },
57057                 "Total Access": {
57058                     "count": 51
57059                 },
57060                 "Super U": {
57061                     "count": 124
57062                 },
57063                 "Auchan": {
57064                     "count": 53
57065                 },
57066                 "Elf": {
57067                     "count": 129
57068                 },
57069                 "Carrefour": {
57070                     "count": 205
57071                 },
57072                 "Station Service E. Leclerc": {
57073                     "count": 530
57074                 },
57075                 "Shell Express": {
57076                     "count": 131
57077                 },
57078                 "Hess": {
57079                     "count": 127
57080                 },
57081                 "Flying V": {
57082                     "count": 129
57083                 },
57084                 "bft": {
57085                     "count": 168
57086                 },
57087                 "Gulf": {
57088                     "count": 199
57089                 },
57090                 "PTT": {
57091                     "count": 191
57092                 },
57093                 "St1": {
57094                     "count": 100
57095                 },
57096                 "Teboil": {
57097                     "count": 115
57098                 },
57099                 "HEM": {
57100                     "count": 212
57101                 },
57102                 "GALP": {
57103                     "count": 626
57104                 },
57105                 "OK": {
57106                     "count": 163
57107                 },
57108                 "ÖMV": {
57109                     "count": 101
57110                 },
57111                 "Tinq": {
57112                     "count": 215
57113                 },
57114                 "OKQ8": {
57115                     "count": 186
57116                 },
57117                 "Repsol": {
57118                     "count": 424
57119                 },
57120                 "Westfalen": {
57121                     "count": 96
57122                 },
57123                 "Esso Express": {
57124                     "count": 98
57125                 },
57126                 "Raiffeisenbank": {
57127                     "count": 117
57128                 },
57129                 "Tamoil": {
57130                     "count": 866
57131                 },
57132                 "Engen": {
57133                     "count": 241
57134                 },
57135                 "Sasol": {
57136                     "count": 59
57137                 },
57138                 "Topaz": {
57139                     "count": 78
57140                 },
57141                 "LPG": {
57142                     "count": 174
57143                 },
57144                 "Coop": {
57145                     "count": 62
57146                 },
57147                 "Orlen": {
57148                     "count": 598
57149                 },
57150                 "Oilibya": {
57151                     "count": 68
57152                 },
57153                 "Tango": {
57154                     "count": 122
57155                 },
57156                 "Star": {
57157                     "count": 319
57158                 },
57159                 "Петрол": {
57160                     "count": 84
57161                 },
57162                 "Cepsa": {
57163                     "count": 96
57164                 },
57165                 "OIL!": {
57166                     "count": 63
57167                 },
57168                 "Ultramar": {
57169                     "count": 125
57170                 },
57171                 "Irving": {
57172                     "count": 87
57173                 },
57174                 "Lukoil": {
57175                     "count": 701
57176                 },
57177                 "Petro-Canada": {
57178                     "count": 489
57179                 },
57180                 "7-Eleven": {
57181                     "count": 488
57182                 },
57183                 "Agrola": {
57184                     "count": 69
57185                 },
57186                 "Husky": {
57187                     "count": 126
57188                 },
57189                 "Slovnaft": {
57190                     "count": 219
57191                 },
57192                 "Sheetz": {
57193                     "count": 134
57194                 },
57195                 "Mol": {
57196                     "count": 61
57197                 },
57198                 "Petronas": {
57199                     "count": 159
57200                 },
57201                 "Газпромнефть": {
57202                     "count": 748
57203                 },
57204                 "Лукойл": {
57205                     "count": 1477
57206                 },
57207                 "Elan": {
57208                     "count": 112
57209                 },
57210                 "Роснефть": {
57211                     "count": 638
57212                 },
57213                 "Turmöl": {
57214                     "count": 57
57215                 },
57216                 "Neste A24": {
57217                     "count": 55
57218                 },
57219                 "Marathon": {
57220                     "count": 189
57221                 },
57222                 "Valero": {
57223                     "count": 366
57224                 },
57225                 "Eni": {
57226                     "count": 236
57227                 },
57228                 "Chevron": {
57229                     "count": 954
57230                 },
57231                 "ТНК": {
57232                     "count": 520
57233                 },
57234                 "REPSOL": {
57235                     "count": 1603
57236                 },
57237                 "MOL": {
57238                     "count": 228
57239                 },
57240                 "Bliska": {
57241                     "count": 150
57242                 },
57243                 "Api": {
57244                     "count": 302
57245                 },
57246                 "Arco": {
57247                     "count": 179
57248                 },
57249                 "Pemex": {
57250                     "count": 423
57251                 },
57252                 "Exxon": {
57253                     "count": 506
57254                 },
57255                 "Coles Express": {
57256                     "count": 115
57257                 },
57258                 "Petrom": {
57259                     "count": 259
57260                 },
57261                 "PETRONOR": {
57262                     "count": 207
57263                 },
57264                 "Rompetrol": {
57265                     "count": 174
57266                 },
57267                 "Lotos": {
57268                     "count": 178
57269                 },
57270                 "ОМВ": {
57271                     "count": 60
57272                 },
57273                 "BR": {
57274                     "count": 129
57275                 },
57276                 "Copec": {
57277                     "count": 505
57278                 },
57279                 "Petrobras": {
57280                     "count": 270
57281                 },
57282                 "Liberty": {
57283                     "count": 55
57284                 },
57285                 "IP": {
57286                     "count": 871
57287                 },
57288                 "Erg": {
57289                     "count": 596
57290                 },
57291                 "Eneos": {
57292                     "count": 97
57293                 },
57294                 "Citgo": {
57295                     "count": 279
57296                 },
57297                 "Metano": {
57298                     "count": 208
57299                 },
57300                 "Сургутнефтегаз": {
57301                     "count": 61
57302                 },
57303                 "EKO": {
57304                     "count": 59
57305                 },
57306                 "Eko": {
57307                     "count": 58
57308                 },
57309                 "Indipend.": {
57310                     "count": 172
57311                 },
57312                 "IES": {
57313                     "count": 63
57314                 },
57315                 "TotalErg": {
57316                     "count": 89
57317                 },
57318                 "Cenex": {
57319                     "count": 115
57320                 },
57321                 "ПТК": {
57322                     "count": 82
57323                 },
57324                 "HP": {
57325                     "count": 79
57326                 },
57327                 "Phillips 66": {
57328                     "count": 216
57329                 },
57330                 "CARREFOUR": {
57331                     "count": 74
57332                 },
57333                 "ERG": {
57334                     "count": 76
57335                 },
57336                 "Speedway": {
57337                     "count": 148
57338                 },
57339                 "Benzina": {
57340                     "count": 96
57341                 },
57342                 "Татнефть": {
57343                     "count": 264
57344                 },
57345                 "Terpel": {
57346                     "count": 259
57347                 },
57348                 "WOG": {
57349                     "count": 189
57350                 },
57351                 "Seaoil": {
57352                     "count": 54
57353                 },
57354                 "АЗС": {
57355                     "count": 1077
57356                 },
57357                 "Kwik Trip": {
57358                     "count": 108
57359                 },
57360                 "Wawa": {
57361                     "count": 89
57362                 },
57363                 "Pertamina": {
57364                     "count": 186
57365                 },
57366                 "COSMO": {
57367                     "count": 64
57368                 },
57369                 "Z": {
57370                     "count": 76
57371                 },
57372                 "Indian Oil": {
57373                     "count": 183
57374                 },
57375                 "АГЗС": {
57376                     "count": 494
57377                 },
57378                 "INA": {
57379                     "count": 121
57380                 },
57381                 "JOMO": {
57382                     "count": 62
57383                 },
57384                 "Holiday": {
57385                     "count": 97
57386                 },
57387                 "YPF": {
57388                     "count": 70
57389                 },
57390                 "IDEMITSU": {
57391                     "count": 87
57392                 },
57393                 "ENEOS": {
57394                     "count": 736
57395                 },
57396                 "Bharat Petroleum": {
57397                     "count": 64
57398                 },
57399                 "CAMPSA": {
57400                     "count": 615
57401                 },
57402                 "Casey's General Store": {
57403                     "count": 190
57404                 },
57405                 "Башнефть": {
57406                     "count": 60
57407                 },
57408                 "Kangaroo": {
57409                     "count": 60
57410                 },
57411                 "コスモ石油 (COSMO)": {
57412                     "count": 136
57413                 },
57414                 "MEROIL": {
57415                     "count": 77
57416                 },
57417                 "1-2-3": {
57418                     "count": 71
57419                 },
57420                 "出光": {
57421                     "count": 228,
57422                     "tags": {
57423                         "name:en": "IDEMITSU"
57424                     }
57425                 },
57426                 "НК Альянс": {
57427                     "count": 88
57428                 },
57429                 "Sinclair": {
57430                     "count": 100
57431                 },
57432                 "Conoco": {
57433                     "count": 189
57434                 },
57435                 "SPBU": {
57436                     "count": 54
57437                 },
57438                 "Макпетрол": {
57439                     "count": 109
57440                 },
57441                 "Circle K": {
57442                     "count": 166
57443                 },
57444                 "Posto Ipiranga": {
57445                     "count": 70
57446                 },
57447                 "Posto Shell": {
57448                     "count": 54
57449                 },
57450                 "Phoenix": {
57451                     "count": 144
57452                 },
57453                 "Ipiranga": {
57454                     "count": 119
57455                 },
57456                 "OKKO": {
57457                     "count": 85
57458                 },
57459                 "ОККО": {
57460                     "count": 119
57461                 },
57462                 "บางจาก": {
57463                     "count": 60
57464                 },
57465                 "QuikTrip": {
57466                     "count": 105
57467                 },
57468                 "Stewart's": {
57469                     "count": 63
57470                 },
57471                 "Posto BR": {
57472                     "count": 68
57473                 },
57474                 "ป ต ท": {
57475                     "count": 152
57476                 },
57477                 "ปตท": {
57478                     "count": 88
57479                 },
57480                 "ANP": {
57481                     "count": 80
57482                 },
57483                 "Kum & Go": {
57484                     "count": 80
57485                 },
57486                 "Petrolimex": {
57487                     "count": 55
57488                 },
57489                 "Sokimex": {
57490                     "count": 66
57491                 },
57492                 "Tela": {
57493                     "count": 154
57494                 },
57495                 "Posto": {
57496                     "count": 71
57497                 },
57498                 "H-E-B": {
57499                     "count": 182
57500                 },
57501                 "Укрнафта": {
57502                     "count": 58
57503                 },
57504                 "Татнефтепродукт": {
57505                     "count": 54
57506                 },
57507                 "Afriquia": {
57508                     "count": 88
57509                 },
57510                 "Murphy USA": {
57511                     "count": 67
57512                 },
57513                 "昭和シェル (Showa-shell)": {
57514                     "count": 94
57515                 },
57516                 "エネオス": {
57517                     "count": 53
57518                 },
57519                 "CNG": {
57520                     "count": 94
57521                 }
57522             },
57523             "pub": {
57524                 "Kings Arms": {
57525                     "count": 67
57526                 },
57527                 "The Ship": {
57528                     "count": 89
57529                 },
57530                 "The White Horse": {
57531                     "count": 204
57532                 },
57533                 "The White Hart": {
57534                     "count": 226
57535                 },
57536                 "Royal Oak": {
57537                     "count": 150
57538                 },
57539                 "The Red Lion": {
57540                     "count": 233
57541                 },
57542                 "The Kings Arms": {
57543                     "count": 58
57544                 },
57545                 "The Star": {
57546                     "count": 73
57547                 },
57548                 "The Anchor": {
57549                     "count": 64
57550                 },
57551                 "The Cross Keys": {
57552                     "count": 55
57553                 },
57554                 "The Wheatsheaf": {
57555                     "count": 117
57556                 },
57557                 "The Crown Inn": {
57558                     "count": 67
57559                 },
57560                 "The Kings Head": {
57561                     "count": 53
57562                 },
57563                 "The Castle": {
57564                     "count": 62
57565                 },
57566                 "The Railway": {
57567                     "count": 102
57568                 },
57569                 "The White Lion": {
57570                     "count": 118
57571                 },
57572                 "The Bell": {
57573                     "count": 121
57574                 },
57575                 "The Bull": {
57576                     "count": 68
57577                 },
57578                 "The Plough": {
57579                     "count": 179
57580                 },
57581                 "The George": {
57582                     "count": 110
57583                 },
57584                 "The Royal Oak": {
57585                     "count": 209
57586                 },
57587                 "The Fox": {
57588                     "count": 74
57589                 },
57590                 "Prince of Wales": {
57591                     "count": 77
57592                 },
57593                 "The Rising Sun": {
57594                     "count": 71
57595                 },
57596                 "The Prince of Wales": {
57597                     "count": 51
57598                 },
57599                 "The Crown": {
57600                     "count": 244
57601                 },
57602                 "The Chequers": {
57603                     "count": 66
57604                 },
57605                 "The Swan": {
57606                     "count": 152
57607                 },
57608                 "Rose and Crown": {
57609                     "count": 79
57610                 },
57611                 "The Victoria": {
57612                     "count": 67
57613                 },
57614                 "New Inn": {
57615                     "count": 90
57616                 },
57617                 "Royal Hotel": {
57618                     "count": 57
57619                 },
57620                 "Red Lion": {
57621                     "count": 207
57622                 },
57623                 "Cross Keys": {
57624                     "count": 61
57625                 },
57626                 "The Greyhound": {
57627                     "count": 96
57628                 },
57629                 "The Black Horse": {
57630                     "count": 94
57631                 },
57632                 "The New Inn": {
57633                     "count": 105
57634                 },
57635                 "Kings Head": {
57636                     "count": 59
57637                 },
57638                 "The Albion": {
57639                     "count": 51
57640                 },
57641                 "The Angel": {
57642                     "count": 52
57643                 },
57644                 "The Queens Head": {
57645                     "count": 52
57646                 },
57647                 "The Ship Inn": {
57648                     "count": 83
57649                 },
57650                 "Rose & Crown": {
57651                     "count": 51
57652                 },
57653                 "Queens Head": {
57654                     "count": 52
57655                 },
57656                 "Irish Pub": {
57657                     "count": 76
57658                 }
57659             },
57660             "fast_food": {
57661                 "Quick": {
57662                     "count": 484
57663                 },
57664                 "McDonald's": {
57665                     "count": 12376,
57666                     "tags": {
57667                         "cuisine": "burger"
57668                     }
57669                 },
57670                 "Subway": {
57671                     "count": 5576,
57672                     "tags": {
57673                         "cuisine": "sandwich"
57674                     }
57675                 },
57676                 "Burger King": {
57677                     "count": 3734,
57678                     "tags": {
57679                         "cuisine": "burger"
57680                     }
57681                 },
57682                 "Ali Baba": {
57683                     "count": 61
57684                 },
57685                 "Hungry Jacks": {
57686                     "count": 173,
57687                     "tags": {
57688                         "cuisine": "burger"
57689                     }
57690                 },
57691                 "Red Rooster": {
57692                     "count": 148
57693                 },
57694                 "KFC": {
57695                     "count": 3198,
57696                     "tags": {
57697                         "cuisine": "chicken"
57698                     }
57699                 },
57700                 "Domino's Pizza": {
57701                     "count": 985,
57702                     "tags": {
57703                         "cuisine": "pizza"
57704                     }
57705                 },
57706                 "Chowking": {
57707                     "count": 142
57708                 },
57709                 "Jollibee": {
57710                     "count": 396
57711                 },
57712                 "Hesburger": {
57713                     "count": 102
57714                 },
57715                 "肯德基": {
57716                     "count": 86
57717                 },
57718                 "Wendy's": {
57719                     "count": 1621,
57720                     "tags": {
57721                         "cuisine": "burger"
57722                     }
57723                 },
57724                 "Tim Hortons": {
57725                     "count": 323
57726                 },
57727                 "Steers": {
57728                     "count": 151
57729                 },
57730                 "Hardee's": {
57731                     "count": 268,
57732                     "tags": {
57733                         "cuisine": "burger"
57734                     }
57735                 },
57736                 "Arby's": {
57737                     "count": 782
57738                 },
57739                 "A&W": {
57740                     "count": 283
57741                 },
57742                 "Dairy Queen": {
57743                     "count": 791
57744                 },
57745                 "Hallo Pizza": {
57746                     "count": 76
57747                 },
57748                 "Fish & Chips": {
57749                     "count": 93
57750                 },
57751                 "Harvey's": {
57752                     "count": 90
57753                 },
57754                 "麥當勞": {
57755                     "count": 65
57756                 },
57757                 "Pizza Pizza": {
57758                     "count": 215
57759                 },
57760                 "Kotipizza": {
57761                     "count": 74
57762                 },
57763                 "Jack in the Box": {
57764                     "count": 546,
57765                     "tags": {
57766                         "cuisine": "burger"
57767                     }
57768                 },
57769                 "Istanbul": {
57770                     "count": 56
57771                 },
57772                 "Kochlöffel": {
57773                     "count": 68
57774                 },
57775                 "Döner": {
57776                     "count": 228
57777                 },
57778                 "Telepizza": {
57779                     "count": 201
57780                 },
57781                 "Sibylla": {
57782                     "count": 61
57783                 },
57784                 "Carl's Jr.": {
57785                     "count": 298,
57786                     "tags": {
57787                         "cuisine": "burger"
57788                     }
57789                 },
57790                 "Quiznos": {
57791                     "count": 266,
57792                     "tags": {
57793                         "cuisine": "sandwich"
57794                     }
57795                 },
57796                 "Wimpy": {
57797                     "count": 141
57798                 },
57799                 "Sonic": {
57800                     "count": 566,
57801                     "tags": {
57802                         "cuisine": "burger"
57803                     }
57804                 },
57805                 "Taco Bell": {
57806                     "count": 1423,
57807                     "tags": {
57808                         "cuisine": "mexican"
57809                     }
57810                 },
57811                 "Pizza Nova": {
57812                     "count": 63
57813                 },
57814                 "Papa John's": {
57815                     "count": 304,
57816                     "tags": {
57817                         "cuisine": "pizza"
57818                     }
57819                 },
57820                 "Nordsee": {
57821                     "count": 159
57822                 },
57823                 "Mr. Sub": {
57824                     "count": 103
57825                 },
57826                 "Макдоналдс": {
57827                     "count": 324,
57828                     "tags": {
57829                         "name:en": "McDonald's"
57830                     }
57831                 },
57832                 "Asia Imbiss": {
57833                     "count": 111
57834                 },
57835                 "Chipotle": {
57836                     "count": 290,
57837                     "tags": {
57838                         "cuisine": "mexican"
57839                     }
57840                 },
57841                 "マクドナルド": {
57842                     "count": 692,
57843                     "tags": {
57844                         "name:en": "McDonald's",
57845                         "cuisine": "burger"
57846                     }
57847                 },
57848                 "In-N-Out Burger": {
57849                     "count": 65
57850                 },
57851                 "Jimmy John's": {
57852                     "count": 141
57853                 },
57854                 "Jamba Juice": {
57855                     "count": 68
57856                 },
57857                 "Робин Сдобин": {
57858                     "count": 82
57859                 },
57860                 "Baskin Robbins": {
57861                     "count": 74
57862                 },
57863                 "ケンタッキーフライドチキン": {
57864                     "count": 164,
57865                     "tags": {
57866                         "name:en": "KFC",
57867                         "cuisine": "chicken"
57868                     }
57869                 },
57870                 "吉野家": {
57871                     "count": 191
57872                 },
57873                 "Taco Time": {
57874                     "count": 88
57875                 },
57876                 "松屋": {
57877                     "count": 281,
57878                     "tags": {
57879                         "name:en": "Matsuya"
57880                     }
57881                 },
57882                 "Little Caesars": {
57883                     "count": 81
57884                 },
57885                 "El Pollo Loco": {
57886                     "count": 63
57887                 },
57888                 "Del Taco": {
57889                     "count": 141
57890                 },
57891                 "White Castle": {
57892                     "count": 80
57893                 },
57894                 "Boston Market": {
57895                     "count": 66
57896                 },
57897                 "Chick-fil-A": {
57898                     "count": 257,
57899                     "tags": {
57900                         "cuisine": "chicken"
57901                     }
57902                 },
57903                 "Panda Express": {
57904                     "count": 238,
57905                     "tags": {
57906                         "cuisine": "chinese"
57907                     }
57908                 },
57909                 "Whataburger": {
57910                     "count": 364
57911                 },
57912                 "Taco John's": {
57913                     "count": 78
57914                 },
57915                 "Теремок": {
57916                     "count": 68
57917                 },
57918                 "Culver's": {
57919                     "count": 425
57920                 },
57921                 "Five Guys": {
57922                     "count": 141
57923                 },
57924                 "Church's Chicken": {
57925                     "count": 95
57926                 },
57927                 "Popeye's": {
57928                     "count": 167,
57929                     "tags": {
57930                         "cuisine": "chicken"
57931                     }
57932                 },
57933                 "Long John Silver's": {
57934                     "count": 93
57935                 },
57936                 "Pollo Campero": {
57937                     "count": 62
57938                 },
57939                 "Zaxby's": {
57940                     "count": 51
57941                 },
57942                 "すき家": {
57943                     "count": 276,
57944                     "tags": {
57945                         "name:en": "SUKIYA"
57946                     }
57947                 },
57948                 "モスバーガー": {
57949                     "count": 257,
57950                     "tags": {
57951                         "name:en": "MOS BURGER"
57952                     }
57953                 },
57954                 "Русский Аппетит": {
57955                     "count": 69
57956                 },
57957                 "なか卯": {
57958                     "count": 63
57959                 }
57960             },
57961             "restaurant": {
57962                 "Pizza Hut": {
57963                     "count": 1180,
57964                     "tags": {
57965                         "cuisine": "pizza"
57966                     }
57967                 },
57968                 "Little Chef": {
57969                     "count": 64
57970                 },
57971                 "Adler": {
57972                     "count": 158
57973                 },
57974                 "Zur Krone": {
57975                     "count": 90
57976                 },
57977                 "Deutsches Haus": {
57978                     "count": 90
57979                 },
57980                 "Krone": {
57981                     "count": 171
57982                 },
57983                 "Akropolis": {
57984                     "count": 152
57985                 },
57986                 "Schützenhaus": {
57987                     "count": 124
57988                 },
57989                 "Kreuz": {
57990                     "count": 74
57991                 },
57992                 "Waldschänke": {
57993                     "count": 55
57994                 },
57995                 "La Piazza": {
57996                     "count": 69
57997                 },
57998                 "Lamm": {
57999                     "count": 66
58000                 },
58001                 "Zur Sonne": {
58002                     "count": 73
58003                 },
58004                 "Zur Linde": {
58005                     "count": 204
58006                 },
58007                 "Poseidon": {
58008                     "count": 110
58009                 },
58010                 "Shanghai": {
58011                     "count": 82
58012                 },
58013                 "Red Lobster": {
58014                     "count": 235
58015                 },
58016                 "Zum Löwen": {
58017                     "count": 84
58018                 },
58019                 "Swiss Chalet": {
58020                     "count": 107
58021                 },
58022                 "Olympia": {
58023                     "count": 74
58024                 },
58025                 "Wagamama": {
58026                     "count": 64
58027                 },
58028                 "Frankie & Benny's": {
58029                     "count": 66
58030                 },
58031                 "Hooters": {
58032                     "count": 103
58033                 },
58034                 "Sternen": {
58035                     "count": 78
58036                 },
58037                 "Hirschen": {
58038                     "count": 79
58039                 },
58040                 "Denny's": {
58041                     "count": 450
58042                 },
58043                 "Athen": {
58044                     "count": 68
58045                 },
58046                 "Sonne": {
58047                     "count": 126
58048                 },
58049                 "Hirsch": {
58050                     "count": 79
58051                 },
58052                 "Ratskeller": {
58053                     "count": 150
58054                 },
58055                 "La Cantina": {
58056                     "count": 56
58057                 },
58058                 "Gasthaus Krone": {
58059                     "count": 56
58060                 },
58061                 "El Greco": {
58062                     "count": 86
58063                 },
58064                 "Gasthof zur Post": {
58065                     "count": 79
58066                 },
58067                 "Nando's": {
58068                     "count": 246
58069                 },
58070                 "Löwen": {
58071                     "count": 112
58072                 },
58073                 "La Pataterie": {
58074                     "count": 51
58075                 },
58076                 "Bella Napoli": {
58077                     "count": 53
58078                 },
58079                 "Pizza Express": {
58080                     "count": 262
58081                 },
58082                 "Mandarin": {
58083                     "count": 65
58084                 },
58085                 "Hong Kong": {
58086                     "count": 83
58087                 },
58088                 "Zizzi": {
58089                     "count": 68
58090                 },
58091                 "Cracker Barrel": {
58092                     "count": 183
58093                 },
58094                 "Rhodos": {
58095                     "count": 81
58096                 },
58097                 "Lindenhof": {
58098                     "count": 79
58099                 },
58100                 "Milano": {
58101                     "count": 54
58102                 },
58103                 "Dolce Vita": {
58104                     "count": 77
58105                 },
58106                 "Kirchenwirt": {
58107                     "count": 81
58108                 },
58109                 "Kantine": {
58110                     "count": 52
58111                 },
58112                 "Ochsen": {
58113                     "count": 95
58114                 },
58115                 "Spur": {
58116                     "count": 62
58117                 },
58118                 "Mykonos": {
58119                     "count": 59
58120                 },
58121                 "Lotus": {
58122                     "count": 66
58123                 },
58124                 "Applebee's": {
58125                     "count": 531
58126                 },
58127                 "Flunch": {
58128                     "count": 72
58129                 },
58130                 "Zur Post": {
58131                     "count": 116
58132                 },
58133                 "China Town": {
58134                     "count": 76
58135                 },
58136                 "La Dolce Vita": {
58137                     "count": 73
58138                 },
58139                 "Waffle House": {
58140                     "count": 207
58141                 },
58142                 "Delphi": {
58143                     "count": 88
58144                 },
58145                 "Linde": {
58146                     "count": 103
58147                 },
58148                 "Outback Steakhouse": {
58149                     "count": 218
58150                 },
58151                 "Dionysos": {
58152                     "count": 69
58153                 },
58154                 "Kelsey's": {
58155                     "count": 57
58156                 },
58157                 "Boston Pizza": {
58158                     "count": 165
58159                 },
58160                 "Bella Italia": {
58161                     "count": 132
58162                 },
58163                 "Sizzler": {
58164                     "count": 53
58165                 },
58166                 "Grüner Baum": {
58167                     "count": 116
58168                 },
58169                 "Taj Mahal": {
58170                     "count": 104
58171                 },
58172                 "Rössli": {
58173                     "count": 68
58174                 },
58175                 "Wimpy": {
58176                     "count": 51
58177                 },
58178                 "Traube": {
58179                     "count": 65
58180                 },
58181                 "Adria": {
58182                     "count": 52
58183                 },
58184                 "Red Robin": {
58185                     "count": 185
58186                 },
58187                 "Roma": {
58188                     "count": 61
58189                 },
58190                 "San Marco": {
58191                     "count": 67
58192                 },
58193                 "Hellas": {
58194                     "count": 55
58195                 },
58196                 "La Perla": {
58197                     "count": 67
58198                 },
58199                 "Vips": {
58200                     "count": 53
58201                 },
58202                 "Panera Bread": {
58203                     "count": 218
58204                 },
58205                 "Da Vinci": {
58206                     "count": 54
58207                 },
58208                 "Hippopotamus": {
58209                     "count": 96
58210                 },
58211                 "Prezzo": {
58212                     "count": 75
58213                 },
58214                 "Courtepaille": {
58215                     "count": 106
58216                 },
58217                 "Hard Rock Cafe": {
58218                     "count": 70
58219                 },
58220                 "Panorama": {
58221                     "count": 61
58222                 },
58223                 "デニーズ": {
58224                     "count": 82
58225                 },
58226                 "Sportheim": {
58227                     "count": 65
58228                 },
58229                 "餃子の王将": {
58230                     "count": 57
58231                 },
58232                 "Bären": {
58233                     "count": 60
58234                 },
58235                 "Alte Post": {
58236                     "count": 60
58237                 },
58238                 "Pizzeria Roma": {
58239                     "count": 51
58240                 },
58241                 "China Garden": {
58242                     "count": 66
58243                 },
58244                 "Vapiano": {
58245                     "count": 82
58246                 },
58247                 "Mamma Mia": {
58248                     "count": 64
58249                 },
58250                 "Schwarzer Adler": {
58251                     "count": 57
58252                 },
58253                 "IHOP": {
58254                     "count": 317
58255                 },
58256                 "Chili's": {
58257                     "count": 328
58258                 },
58259                 "Asia": {
58260                     "count": 51
58261                 },
58262                 "Olive Garden": {
58263                     "count": 279
58264                 },
58265                 "TGI Friday's": {
58266                     "count": 159
58267                 },
58268                 "Friendly's": {
58269                     "count": 78
58270                 },
58271                 "Buffalo Grill": {
58272                     "count": 202
58273                 },
58274                 "Texas Roadhouse": {
58275                     "count": 110
58276                 },
58277                 "ガスト": {
58278                     "count": 230,
58279                     "tags": {
58280                         "name:en": "Gusto"
58281                     }
58282                 },
58283                 "Sakura": {
58284                     "count": 75
58285                 },
58286                 "Mensa": {
58287                     "count": 99
58288                 },
58289                 "The Keg": {
58290                     "count": 53
58291                 },
58292                 "サイゼリヤ": {
58293                     "count": 93
58294                 },
58295                 "La Strada": {
58296                     "count": 52
58297                 },
58298                 "Village Inn": {
58299                     "count": 92
58300                 },
58301                 "Buffalo Wild Wings": {
58302                     "count": 176
58303                 },
58304                 "Peking": {
58305                     "count": 59
58306                 },
58307                 "Boston Market": {
58308                     "count": 61
58309                 },
58310                 "Round Table Pizza": {
58311                     "count": 53
58312                 },
58313                 "Jimmy John's": {
58314                     "count": 69
58315                 },
58316                 "California Pizza Kitchen": {
58317                     "count": 61
58318                 },
58319                 "Якитория": {
58320                     "count": 77
58321                 },
58322                 "Golden Corral": {
58323                     "count": 101
58324                 },
58325                 "Perkins": {
58326                     "count": 105
58327                 },
58328                 "Ruby Tuesday": {
58329                     "count": 162
58330                 },
58331                 "Shari's": {
58332                     "count": 65
58333                 },
58334                 "Bob Evans": {
58335                     "count": 129
58336                 },
58337                 "바다횟집 (Bada Fish Restaurant)": {
58338                     "count": 55
58339                 },
58340                 "Mang Inasal": {
58341                     "count": 84
58342                 },
58343                 "Евразия": {
58344                     "count": 102
58345                 },
58346                 "ジョナサン": {
58347                     "count": 59
58348                 },
58349                 "Longhorn Steakhouse": {
58350                     "count": 66
58351                 }
58352             },
58353             "bank": {
58354                 "Chase": {
58355                     "count": 721
58356                 },
58357                 "Commonwealth Bank": {
58358                     "count": 232
58359                 },
58360                 "Citibank": {
58361                     "count": 277
58362                 },
58363                 "HSBC": {
58364                     "count": 1102
58365                 },
58366                 "Barclays": {
58367                     "count": 965
58368                 },
58369                 "Westpac": {
58370                     "count": 208
58371                 },
58372                 "NAB": {
58373                     "count": 131
58374                 },
58375                 "ANZ": {
58376                     "count": 218
58377                 },
58378                 "Lloyds Bank": {
58379                     "count": 547
58380                 },
58381                 "Landbank": {
58382                     "count": 81
58383                 },
58384                 "Sparkasse": {
58385                     "count": 4555
58386                 },
58387                 "UCPB": {
58388                     "count": 92
58389                 },
58390                 "PNB": {
58391                     "count": 244
58392                 },
58393                 "Metrobank": {
58394                     "count": 269
58395                 },
58396                 "BDO": {
58397                     "count": 290
58398                 },
58399                 "Volksbank": {
58400                     "count": 2591
58401                 },
58402                 "BPI": {
58403                     "count": 415
58404                 },
58405                 "Postbank": {
58406                     "count": 443
58407                 },
58408                 "NatWest": {
58409                     "count": 628
58410                 },
58411                 "Raiffeisenbank": {
58412                     "count": 2119
58413                 },
58414                 "Yorkshire Bank": {
58415                     "count": 63
58416                 },
58417                 "ABSA": {
58418                     "count": 95
58419                 },
58420                 "Standard Bank": {
58421                     "count": 109
58422                 },
58423                 "FNB": {
58424                     "count": 97
58425                 },
58426                 "Deutsche Bank": {
58427                     "count": 855
58428                 },
58429                 "SEB": {
58430                     "count": 133
58431                 },
58432                 "Commerzbank": {
58433                     "count": 806
58434                 },
58435                 "Targobank": {
58436                     "count": 166
58437                 },
58438                 "ABN AMRO": {
58439                     "count": 130
58440                 },
58441                 "Handelsbanken": {
58442                     "count": 184
58443                 },
58444                 "Swedbank": {
58445                     "count": 223
58446                 },
58447                 "Kreissparkasse": {
58448                     "count": 600
58449                 },
58450                 "UniCredit Bank": {
58451                     "count": 408
58452                 },
58453                 "Monte dei Paschi di Siena": {
58454                     "count": 132
58455                 },
58456                 "Caja Rural": {
58457                     "count": 99
58458                 },
58459                 "Dresdner Bank": {
58460                     "count": 66
58461                 },
58462                 "Sparda-Bank": {
58463                     "count": 320
58464                 },
58465                 "VÚB": {
58466                     "count": 107
58467                 },
58468                 "Slovenská sporiteľňa": {
58469                     "count": 134
58470                 },
58471                 "Bank of Montreal": {
58472                     "count": 118
58473                 },
58474                 "KBC": {
58475                     "count": 203
58476                 },
58477                 "Royal Bank of Scotland": {
58478                     "count": 111
58479                 },
58480                 "TSB": {
58481                     "count": 80
58482                 },
58483                 "US Bank": {
58484                     "count": 256
58485                 },
58486                 "HypoVereinsbank": {
58487                     "count": 561
58488                 },
58489                 "Bank Austria": {
58490                     "count": 176
58491                 },
58492                 "ING": {
58493                     "count": 496
58494                 },
58495                 "Erste Bank": {
58496                     "count": 180
58497                 },
58498                 "CIBC": {
58499                     "count": 326
58500                 },
58501                 "Scotiabank": {
58502                     "count": 413
58503                 },
58504                 "Caisse d'Épargne": {
58505                     "count": 882
58506                 },
58507                 "Santander": {
58508                     "count": 1323
58509                 },
58510                 "Bank of Scotland": {
58511                     "count": 89
58512                 },
58513                 "TD Canada Trust": {
58514                     "count": 450
58515                 },
58516                 "BMO": {
58517                     "count": 169
58518                 },
58519                 "Danske Bank": {
58520                     "count": 131
58521                 },
58522                 "OTP": {
58523                     "count": 192
58524                 },
58525                 "Crédit Agricole": {
58526                     "count": 1239
58527                 },
58528                 "LCL": {
58529                     "count": 553
58530                 },
58531                 "VR-Bank": {
58532                     "count": 430
58533                 },
58534                 "ČSOB": {
58535                     "count": 160
58536                 },
58537                 "Česká spořitelna": {
58538                     "count": 212
58539                 },
58540                 "BNP": {
58541                     "count": 112
58542                 },
58543                 "Royal Bank": {
58544                     "count": 65
58545                 },
58546                 "Nationwide": {
58547                     "count": 209
58548                 },
58549                 "Halifax": {
58550                     "count": 225
58551                 },
58552                 "BAWAG PSK": {
58553                     "count": 102
58554                 },
58555                 "National Bank": {
58556                     "count": 84
58557                 },
58558                 "Nedbank": {
58559                     "count": 80
58560                 },
58561                 "First National Bank": {
58562                     "count": 85
58563                 },
58564                 "Nordea": {
58565                     "count": 319
58566                 },
58567                 "Rabobank": {
58568                     "count": 609
58569                 },
58570                 "Sparkasse KölnBonn": {
58571                     "count": 69
58572                 },
58573                 "Tatra banka": {
58574                     "count": 67
58575                 },
58576                 "Berliner Sparkasse": {
58577                     "count": 62
58578                 },
58579                 "Berliner Volksbank": {
58580                     "count": 77
58581                 },
58582                 "Wells Fargo": {
58583                     "count": 874
58584                 },
58585                 "Credit Suisse": {
58586                     "count": 71
58587                 },
58588                 "Société Générale": {
58589                     "count": 634
58590                 },
58591                 "Osuuspankki": {
58592                     "count": 75
58593                 },
58594                 "Sparkasse Aachen": {
58595                     "count": 56
58596                 },
58597                 "Hamburger Sparkasse": {
58598                     "count": 156
58599                 },
58600                 "Cassa di Risparmio del Veneto": {
58601                     "count": 68
58602                 },
58603                 "BNP Paribas": {
58604                     "count": 617
58605                 },
58606                 "Banque Populaire": {
58607                     "count": 433
58608                 },
58609                 "BNP Paribas Fortis": {
58610                     "count": 209
58611                 },
58612                 "Banco Popular": {
58613                     "count": 291
58614                 },
58615                 "Bancaja": {
58616                     "count": 55
58617                 },
58618                 "Banesto": {
58619                     "count": 208
58620                 },
58621                 "La Caixa": {
58622                     "count": 583
58623                 },
58624                 "Santander Consumer Bank": {
58625                     "count": 88
58626                 },
58627                 "BRD": {
58628                     "count": 191
58629                 },
58630                 "BCR": {
58631                     "count": 143
58632                 },
58633                 "Banca Transilvania": {
58634                     "count": 141
58635                 },
58636                 "BW-Bank": {
58637                     "count": 97
58638                 },
58639                 "Komerční banka": {
58640                     "count": 132
58641                 },
58642                 "Banco Pastor": {
58643                     "count": 64
58644                 },
58645                 "Stadtsparkasse": {
58646                     "count": 86
58647                 },
58648                 "Ulster Bank": {
58649                     "count": 86
58650                 },
58651                 "Sberbank": {
58652                     "count": 58
58653                 },
58654                 "CIC": {
58655                     "count": 427
58656                 },
58657                 "Bancpost": {
58658                     "count": 56
58659                 },
58660                 "Caja Madrid": {
58661                     "count": 115
58662                 },
58663                 "Maybank": {
58664                     "count": 94
58665                 },
58666                 "中国银行": {
58667                     "count": 85
58668                 },
58669                 "Unicredit Banca": {
58670                     "count": 243
58671                 },
58672                 "Crédit Mutuel": {
58673                     "count": 690
58674                 },
58675                 "BBVA": {
58676                     "count": 647
58677                 },
58678                 "Intesa San Paolo": {
58679                     "count": 69
58680                 },
58681                 "TD Bank": {
58682                     "count": 206
58683                 },
58684                 "Belfius": {
58685                     "count": 231
58686                 },
58687                 "Bank of America": {
58688                     "count": 924
58689                 },
58690                 "RBC": {
58691                     "count": 230
58692                 },
58693                 "Alpha Bank": {
58694                     "count": 123
58695                 },
58696                 "Сбербанк": {
58697                     "count": 4794
58698                 },
58699                 "Россельхозбанк": {
58700                     "count": 201
58701                 },
58702                 "Crédit du Nord": {
58703                     "count": 96
58704                 },
58705                 "BancoEstado": {
58706                     "count": 80
58707                 },
58708                 "Millennium Bank": {
58709                     "count": 414
58710                 },
58711                 "State Bank of India": {
58712                     "count": 151
58713                 },
58714                 "Беларусбанк": {
58715                     "count": 242
58716                 },
58717                 "ING Bank Śląski": {
58718                     "count": 67
58719                 },
58720                 "Caixa Geral de Depósitos": {
58721                     "count": 129
58722                 },
58723                 "Kreissparkasse Köln": {
58724                     "count": 65
58725                 },
58726                 "Banco BCI": {
58727                     "count": 51
58728                 },
58729                 "Banco de Chile": {
58730                     "count": 98
58731                 },
58732                 "ВТБ24": {
58733                     "count": 326
58734                 },
58735                 "UBS": {
58736                     "count": 134
58737                 },
58738                 "PKO BP": {
58739                     "count": 265
58740                 },
58741                 "Chinabank": {
58742                     "count": 55
58743                 },
58744                 "PSBank": {
58745                     "count": 59
58746                 },
58747                 "Union Bank": {
58748                     "count": 124
58749                 },
58750                 "China Bank": {
58751                     "count": 66
58752                 },
58753                 "RCBC": {
58754                     "count": 122
58755                 },
58756                 "Unicaja": {
58757                     "count": 83
58758                 },
58759                 "BBK": {
58760                     "count": 79
58761                 },
58762                 "Ibercaja": {
58763                     "count": 69
58764                 },
58765                 "RBS": {
58766                     "count": 143
58767                 },
58768                 "Commercial Bank of Ceylon PLC": {
58769                     "count": 79
58770                 },
58771                 "Bank of Ireland": {
58772                     "count": 109
58773                 },
58774                 "BNL": {
58775                     "count": 87
58776                 },
58777                 "Banco Santander": {
58778                     "count": 138
58779                 },
58780                 "Banco Itaú": {
58781                     "count": 111
58782                 },
58783                 "AIB": {
58784                     "count": 72
58785                 },
58786                 "BZ WBK": {
58787                     "count": 77
58788                 },
58789                 "Banco do Brasil": {
58790                     "count": 557
58791                 },
58792                 "Caixa Econômica Federal": {
58793                     "count": 184
58794                 },
58795                 "Fifth Third Bank": {
58796                     "count": 84
58797                 },
58798                 "Banca Popolare di Vicenza": {
58799                     "count": 81
58800                 },
58801                 "Wachovia": {
58802                     "count": 58
58803                 },
58804                 "OLB": {
58805                     "count": 53
58806                 },
58807                 "みずほ銀行": {
58808                     "count": 78
58809                 },
58810                 "BES": {
58811                     "count": 72
58812                 },
58813                 "ICICI Bank": {
58814                     "count": 91
58815                 },
58816                 "HDFC Bank": {
58817                     "count": 91
58818                 },
58819                 "La Banque Postale": {
58820                     "count": 67
58821                 },
58822                 "Pekao SA": {
58823                     "count": 56
58824                 },
58825                 "Oberbank": {
58826                     "count": 90
58827                 },
58828                 "Bradesco": {
58829                     "count": 295
58830                 },
58831                 "Oldenburgische Landesbank": {
58832                     "count": 56
58833                 },
58834                 "Bendigo Bank": {
58835                     "count": 93
58836                 },
58837                 "Argenta": {
58838                     "count": 86
58839                 },
58840                 "AXA": {
58841                     "count": 68
58842                 },
58843                 "Axis Bank": {
58844                     "count": 61
58845                 },
58846                 "Banco Nación": {
58847                     "count": 67
58848                 },
58849                 "GE Money Bank": {
58850                     "count": 72
58851                 },
58852                 "Альфа-Банк": {
58853                     "count": 185
58854                 },
58855                 "Белагропромбанк": {
58856                     "count": 70
58857                 },
58858                 "Caja Círculo": {
58859                     "count": 65
58860                 },
58861                 "Banco Galicia": {
58862                     "count": 51
58863                 },
58864                 "Eurobank": {
58865                     "count": 97
58866                 },
58867                 "Banca Intesa": {
58868                     "count": 62
58869                 },
58870                 "Canara Bank": {
58871                     "count": 92
58872                 },
58873                 "Cajamar": {
58874                     "count": 77
58875                 },
58876                 "Banamex": {
58877                     "count": 149
58878                 },
58879                 "Crédit Mutuel de Bretagne": {
58880                     "count": 335
58881                 },
58882                 "Davivienda": {
58883                     "count": 83
58884                 },
58885                 "Bank Spółdzielczy": {
58886                     "count": 159
58887                 },
58888                 "Credit Agricole": {
58889                     "count": 157
58890                 },
58891                 "Bankinter": {
58892                     "count": 59
58893                 },
58894                 "Banque Nationale": {
58895                     "count": 63
58896                 },
58897                 "Bank of the West": {
58898                     "count": 96
58899                 },
58900                 "Key Bank": {
58901                     "count": 155
58902                 },
58903                 "Western Union": {
58904                     "count": 88
58905                 },
58906                 "Citizens Bank": {
58907                     "count": 115
58908                 },
58909                 "ПриватБанк": {
58910                     "count": 513
58911                 },
58912                 "Security Bank": {
58913                     "count": 78
58914                 },
58915                 "Millenium": {
58916                     "count": 60
58917                 },
58918                 "Bankia": {
58919                     "count": 149
58920                 },
58921                 "三菱東京UFJ銀行": {
58922                     "count": 159
58923                 },
58924                 "Caixa": {
58925                     "count": 117
58926                 },
58927                 "Banco de Costa Rica": {
58928                     "count": 63
58929                 },
58930                 "SunTrust Bank": {
58931                     "count": 73
58932                 },
58933                 "Itaú": {
58934                     "count": 338
58935                 },
58936                 "PBZ": {
58937                     "count": 52
58938                 },
58939                 "中国工商银行": {
58940                     "count": 51
58941                 },
58942                 "Bancolombia": {
58943                     "count": 89
58944                 },
58945                 "Райффайзен Банк Аваль": {
58946                     "count": 64
58947                 },
58948                 "Bancomer": {
58949                     "count": 115
58950                 },
58951                 "Banorte": {
58952                     "count": 80
58953                 },
58954                 "Alior Bank": {
58955                     "count": 81
58956                 },
58957                 "BOC": {
58958                     "count": 51
58959                 },
58960                 "Банк Москвы": {
58961                     "count": 118
58962                 },
58963                 "ВТБ": {
58964                     "count": 59
58965                 },
58966                 "Getin Bank": {
58967                     "count": 55
58968                 },
58969                 "Caja Duero": {
58970                     "count": 57
58971                 },
58972                 "Regions Bank": {
58973                     "count": 62
58974                 },
58975                 "Росбанк": {
58976                     "count": 177
58977                 },
58978                 "Banco Estado": {
58979                     "count": 72
58980                 },
58981                 "BCI": {
58982                     "count": 68
58983                 },
58984                 "SunTrust": {
58985                     "count": 68
58986                 },
58987                 "PNC Bank": {
58988                     "count": 254
58989                 },
58990                 "신한은행": {
58991                     "count": 217,
58992                     "tags": {
58993                         "name:en": "Sinhan Bank"
58994                     }
58995                 },
58996                 "우리은행": {
58997                     "count": 291,
58998                     "tags": {
58999                         "name:en": "Uri Bank"
59000                     }
59001                 },
59002                 "국민은행": {
59003                     "count": 165,
59004                     "tags": {
59005                         "name:en": "Gungmin Bank"
59006                     }
59007                 },
59008                 "중소기업은행": {
59009                     "count": 52,
59010                     "tags": {
59011                         "name:en": "Industrial Bank of Korea"
59012                     }
59013                 },
59014                 "광주은행": {
59015                     "count": 51,
59016                     "tags": {
59017                         "name:en": "Gwangju Bank"
59018                     }
59019                 },
59020                 "Газпромбанк": {
59021                     "count": 100
59022                 },
59023                 "M&T Bank": {
59024                     "count": 92
59025                 },
59026                 "Caja de Burgos": {
59027                     "count": 51
59028                 },
59029                 "Santander Totta": {
59030                     "count": 69
59031                 },
59032                 "УкрСиббанк": {
59033                     "count": 192
59034                 },
59035                 "Ощадбанк": {
59036                     "count": 364
59037                 },
59038                 "Уралсиб": {
59039                     "count": 85
59040                 },
59041                 "りそな銀行": {
59042                     "count": 225,
59043                     "tags": {
59044                         "name:en": "Mizuho Bank"
59045                     }
59046                 },
59047                 "Ecobank": {
59048                     "count": 66
59049                 },
59050                 "Cajero Automatico Bancared": {
59051                     "count": 145
59052                 },
59053                 "Промсвязьбанк": {
59054                     "count": 93
59055                 },
59056                 "三井住友銀行": {
59057                     "count": 129
59058                 },
59059                 "Banco Provincia": {
59060                     "count": 67
59061                 },
59062                 "BB&T": {
59063                     "count": 147
59064                 },
59065                 "Возрождение": {
59066                     "count": 59
59067                 },
59068                 "Capital One": {
59069                     "count": 59
59070                 },
59071                 "横浜銀行": {
59072                     "count": 51
59073                 },
59074                 "Bank Mandiri": {
59075                     "count": 62
59076                 },
59077                 "Banco de la Nación": {
59078                     "count": 92
59079                 },
59080                 "Banco G&T Continental": {
59081                     "count": 62
59082                 },
59083                 "Peoples Bank": {
59084                     "count": 60
59085                 },
59086                 "工商银行": {
59087                     "count": 51
59088                 },
59089                 "Совкомбанк": {
59090                     "count": 55
59091                 },
59092                 "Provincial": {
59093                     "count": 56
59094                 },
59095                 "Banco de Desarrollo Banrural": {
59096                     "count": 73
59097                 },
59098                 "Banco Bradesco": {
59099                     "count": 65
59100                 },
59101                 "Bicentenario": {
59102                     "count": 182
59103                 },
59104                 "ლიბერთი ბანკი": {
59105                     "count": 54,
59106                     "tags": {
59107                         "name:en": "Liberty Bank"
59108                     }
59109                 },
59110                 "Banesco": {
59111                     "count": 108
59112                 },
59113                 "Mercantil": {
59114                     "count": 75
59115                 },
59116                 "Bank BRI": {
59117                     "count": 53
59118                 },
59119                 "Del Tesoro": {
59120                     "count": 91
59121                 },
59122                 "하나은행": {
59123                     "count": 77
59124                 },
59125                 "CityCommerce Bank": {
59126                     "count": 71
59127                 },
59128                 "De Venezuela": {
59129                     "count": 117
59130                 }
59131             },
59132             "car_rental": {
59133                 "Europcar": {
59134                     "count": 291
59135                 },
59136                 "Budget": {
59137                     "count": 92
59138                 },
59139                 "Sixt": {
59140                     "count": 161
59141                 },
59142                 "Avis": {
59143                     "count": 282
59144                 },
59145                 "Hertz": {
59146                     "count": 293
59147                 },
59148                 "Enterprise": {
59149                     "count": 199
59150                 },
59151                 "stadtmobil CarSharing-Station": {
59152                     "count": 148
59153                 }
59154             },
59155             "pharmacy": {
59156                 "Rowlands Pharmacy": {
59157                     "count": 71
59158                 },
59159                 "Boots": {
59160                     "count": 840
59161                 },
59162                 "Marien-Apotheke": {
59163                     "count": 314
59164                 },
59165                 "Mercury Drug": {
59166                     "count": 426
59167                 },
59168                 "Löwen-Apotheke": {
59169                     "count": 356
59170                 },
59171                 "Superdrug": {
59172                     "count": 117
59173                 },
59174                 "Sonnen-Apotheke": {
59175                     "count": 311
59176                 },
59177                 "Rathaus-Apotheke": {
59178                     "count": 132
59179                 },
59180                 "Engel-Apotheke": {
59181                     "count": 123
59182                 },
59183                 "Hirsch-Apotheke": {
59184                     "count": 83
59185                 },
59186                 "Stern-Apotheke": {
59187                     "count": 67
59188                 },
59189                 "Lloyds Pharmacy": {
59190                     "count": 295
59191                 },
59192                 "Rosen-Apotheke": {
59193                     "count": 208
59194                 },
59195                 "Stadt-Apotheke": {
59196                     "count": 302
59197                 },
59198                 "Markt-Apotheke": {
59199                     "count": 164
59200                 },
59201                 "Аптека": {
59202                     "count": 1989
59203                 },
59204                 "Pharmasave": {
59205                     "count": 64
59206                 },
59207                 "Brunnen-Apotheke": {
59208                     "count": 53
59209                 },
59210                 "Shoppers Drug Mart": {
59211                     "count": 430
59212                 },
59213                 "Apotheke am Markt": {
59214                     "count": 60
59215                 },
59216                 "Alte Apotheke": {
59217                     "count": 88
59218                 },
59219                 "Neue Apotheke": {
59220                     "count": 109
59221                 },
59222                 "Gintarinė vaistinė": {
59223                     "count": 101
59224                 },
59225                 "Rats-Apotheke": {
59226                     "count": 84
59227                 },
59228                 "Adler Apotheke": {
59229                     "count": 313
59230                 },
59231                 "Pharmacie Centrale": {
59232                     "count": 64
59233                 },
59234                 "Walgreens": {
59235                     "count": 1619
59236                 },
59237                 "Rite Aid": {
59238                     "count": 745
59239                 },
59240                 "Apotheke": {
59241                     "count": 165
59242                 },
59243                 "Linden-Apotheke": {
59244                     "count": 211
59245                 },
59246                 "Bahnhof-Apotheke": {
59247                     "count": 66
59248                 },
59249                 "Burg-Apotheke": {
59250                     "count": 55
59251                 },
59252                 "Jean Coutu": {
59253                     "count": 62
59254                 },
59255                 "Pharmaprix": {
59256                     "count": 60
59257                 },
59258                 "Farmacias Ahumada": {
59259                     "count": 104
59260                 },
59261                 "Farmacia Comunale": {
59262                     "count": 113
59263                 },
59264                 "Farmacias Cruz Verde": {
59265                     "count": 86
59266                 },
59267                 "Cruz Verde": {
59268                     "count": 99
59269                 },
59270                 "Hubertus Apotheke": {
59271                     "count": 52
59272                 },
59273                 "CVS": {
59274                     "count": 1560
59275                 },
59276                 "Farmacias SalcoBrand": {
59277                     "count": 133
59278                 },
59279                 "Фармация": {
59280                     "count": 120
59281                 },
59282                 "Bären-Apotheke": {
59283                     "count": 74
59284                 },
59285                 "Clicks": {
59286                     "count": 113
59287                 },
59288                 "セイジョー": {
59289                     "count": 53
59290                 },
59291                 "マツモトキヨシ": {
59292                     "count": 115
59293                 },
59294                 "Dr. Max": {
59295                     "count": 51
59296                 },
59297                 "Вита": {
59298                     "count": 106
59299                 },
59300                 "Радуга": {
59301                     "count": 70
59302                 },
59303                 "サンドラッグ": {
59304                     "count": 61
59305                 },
59306                 "Apteka": {
59307                     "count": 366
59308                 },
59309                 "Первая помощь": {
59310                     "count": 74
59311                 },
59312                 "Ригла": {
59313                     "count": 113
59314                 },
59315                 "Имплозия": {
59316                     "count": 63
59317                 },
59318                 "Kinney Drugs": {
59319                     "count": 68
59320                 },
59321                 "Классика": {
59322                     "count": 67
59323                 },
59324                 "Ljekarna": {
59325                     "count": 53
59326                 },
59327                 "SalcoBrand": {
59328                     "count": 88
59329                 },
59330                 "Аптека 36,6": {
59331                     "count": 224
59332                 },
59333                 "Фармакор": {
59334                     "count": 75
59335                 },
59336                 "スギ薬局": {
59337                     "count": 84
59338                 },
59339                 "Аптечный пункт": {
59340                     "count": 148
59341                 },
59342                 "Невис": {
59343                     "count": 60
59344                 },
59345                 "トモズ (Tomod's)": {
59346                     "count": 83
59347                 },
59348                 "Eurovaistinė": {
59349                     "count": 65
59350                 },
59351                 "Farmacity": {
59352                     "count": 68
59353                 },
59354                 "аптека": {
59355                     "count": 96
59356                 },
59357                 "The Generics Pharmacy": {
59358                     "count": 95
59359                 },
59360                 "Farmatodo": {
59361                     "count": 123
59362                 },
59363                 "Duane Reade": {
59364                     "count": 61
59365                 },
59366                 "H-E-B": {
59367                     "count": 262
59368                 },
59369                 "Фармленд": {
59370                     "count": 82
59371                 },
59372                 "ドラッグてらしま (Drug Terashima)": {
59373                     "count": 96
59374                 },
59375                 "Арніка": {
59376                     "count": 125
59377                 },
59378                 "ავერსი (Aversi)": {
59379                     "count": 62
59380                 },
59381                 "Farmahorro": {
59382                     "count": 58
59383                 }
59384             },
59385             "cafe": {
59386                 "Starbucks": {
59387                     "count": 4238,
59388                     "tags": {
59389                         "cuisine": "coffee_shop"
59390                     }
59391                 },
59392                 "Cafeteria": {
59393                     "count": 115
59394                 },
59395                 "Costa": {
59396                     "count": 618
59397                 },
59398                 "Caffè Nero": {
59399                     "count": 169
59400                 },
59401                 "Кафе": {
59402                     "count": 226
59403                 },
59404                 "Café Central": {
59405                     "count": 61
59406                 },
59407                 "Second Cup": {
59408                     "count": 193
59409                 },
59410                 "Dunkin Donuts": {
59411                     "count": 428,
59412                     "tags": {
59413                         "cuisine": "donut"
59414                     }
59415                 },
59416                 "Espresso House": {
59417                     "count": 53
59418                 },
59419                 "Segafredo": {
59420                     "count": 69
59421                 },
59422                 "Coffee Time": {
59423                     "count": 94
59424                 },
59425                 "Cafe Coffee Day": {
59426                     "count": 120
59427                 },
59428                 "Eiscafe Venezia": {
59429                     "count": 180
59430                 },
59431                 "スターバックス": {
59432                     "count": 251,
59433                     "tags": {
59434                         "name:en": "Starbucks"
59435                     }
59436                 },
59437                 "Шоколадница": {
59438                     "count": 145
59439                 },
59440                 "Pret A Manger": {
59441                     "count": 119
59442                 },
59443                 "Столовая": {
59444                     "count": 391
59445                 },
59446                 "Jamba Juice": {
59447                     "count": 53
59448                 },
59449                 "ドトール": {
59450                     "count": 164,
59451                     "tags": {
59452                         "name:en": "DOUTOR"
59453                     }
59454                 },
59455                 "Tchibo": {
59456                     "count": 100
59457                 },
59458                 "Кофе Хауз": {
59459                     "count": 104
59460                 },
59461                 "Caribou Coffee": {
59462                     "count": 100
59463                 },
59464                 "Уют": {
59465                     "count": 51
59466                 },
59467                 "Шашлычная": {
59468                     "count": 58
59469                 },
59470                 "คาเฟ่ อเมซอน": {
59471                     "count": 62
59472                 },
59473                 "Traveler's Coffee": {
59474                     "count": 60
59475                 },
59476                 "カフェ・ド・クリエ": {
59477                     "count": 67,
59478                     "tags": {
59479                         "name:en": "Cafe de CRIE"
59480                     }
59481                 },
59482                 "Cafe Amazon": {
59483                     "count": 65
59484                 }
59485             }
59486         },
59487         "shop": {
59488             "supermarket": {
59489                 "Budgens": {
59490                     "count": 88
59491                 },
59492                 "Morrisons": {
59493                     "count": 411
59494                 },
59495                 "Interspar": {
59496                     "count": 142
59497                 },
59498                 "Merkur": {
59499                     "count": 107
59500                 },
59501                 "Sainsbury's": {
59502                     "count": 547
59503                 },
59504                 "Lidl": {
59505                     "count": 7130
59506                 },
59507                 "Edeka": {
59508                     "count": 2293
59509                 },
59510                 "Coles": {
59511                     "count": 400
59512                 },
59513                 "Iceland": {
59514                     "count": 315
59515                 },
59516                 "Coop": {
59517                     "count": 2100
59518                 },
59519                 "Tesco": {
59520                     "count": 1297
59521                 },
59522                 "Woolworths": {
59523                     "count": 541
59524                 },
59525                 "Zielpunkt": {
59526                     "count": 239
59527                 },
59528                 "Nahkauf": {
59529                     "count": 170
59530                 },
59531                 "Billa": {
59532                     "count": 1432
59533                 },
59534                 "Kaufland": {
59535                     "count": 1004
59536                 },
59537                 "Plus": {
59538                     "count": 120
59539                 },
59540                 "ALDI": {
59541                     "count": 5172
59542                 },
59543                 "Checkers": {
59544                     "count": 128
59545                 },
59546                 "Tesco Metro": {
59547                     "count": 137
59548                 },
59549                 "NP": {
59550                     "count": 153
59551                 },
59552                 "Penny": {
59553                     "count": 1759
59554                 },
59555                 "Norma": {
59556                     "count": 1068
59557                 },
59558                 "Asda": {
59559                     "count": 225
59560                 },
59561                 "Netto": {
59562                     "count": 4379
59563                 },
59564                 "Rewe": {
59565                     "count": 2645
59566                 },
59567                 "Aldi Süd": {
59568                     "count": 594
59569                 },
59570                 "Real": {
59571                     "count": 246
59572                 },
59573                 "Tesco Express": {
59574                     "count": 406
59575                 },
59576                 "King Soopers": {
59577                     "count": 72
59578                 },
59579                 "Kiwi": {
59580                     "count": 167
59581                 },
59582                 "Pick n Pay": {
59583                     "count": 241
59584                 },
59585                 "ICA": {
59586                     "count": 192
59587                 },
59588                 "Tengelmann": {
59589                     "count": 188
59590                 },
59591                 "Carrefour": {
59592                     "count": 1640
59593                 },
59594                 "Waitrose": {
59595                     "count": 258
59596                 },
59597                 "Spar": {
59598                     "count": 2386
59599                 },
59600                 "Hofer": {
59601                     "count": 442
59602                 },
59603                 "M-Preis": {
59604                     "count": 76
59605                 },
59606                 "tegut": {
59607                     "count": 210
59608                 },
59609                 "Sainsbury's Local": {
59610                     "count": 118
59611                 },
59612                 "E-Center": {
59613                     "count": 66
59614                 },
59615                 "Aldi Nord": {
59616                     "count": 210
59617                 },
59618                 "nahkauf": {
59619                     "count": 84
59620                 },
59621                 "Meijer": {
59622                     "count": 76
59623                 },
59624                 "Safeway": {
59625                     "count": 410
59626                 },
59627                 "Costco": {
59628                     "count": 152
59629                 },
59630                 "Albert": {
59631                     "count": 185
59632                 },
59633                 "Jumbo": {
59634                     "count": 194
59635                 },
59636                 "Shoprite": {
59637                     "count": 244
59638                 },
59639                 "MPreis": {
59640                     "count": 54
59641                 },
59642                 "Penny Market": {
59643                     "count": 429
59644                 },
59645                 "Tesco Extra": {
59646                     "count": 123
59647                 },
59648                 "Albert Heijn": {
59649                     "count": 476
59650                 },
59651                 "IGA": {
59652                     "count": 363
59653                 },
59654                 "Super U": {
59655                     "count": 488
59656                 },
59657                 "Metro": {
59658                     "count": 260
59659                 },
59660                 "Neukauf": {
59661                     "count": 77
59662                 },
59663                 "Migros": {
59664                     "count": 459
59665                 },
59666                 "Marktkauf": {
59667                     "count": 121
59668                 },
59669                 "Delikatesy Centrum": {
59670                     "count": 59
59671                 },
59672                 "C1000": {
59673                     "count": 307
59674                 },
59675                 "Hoogvliet": {
59676                     "count": 53
59677                 },
59678                 "Food Basics": {
59679                     "count": 75
59680                 },
59681                 "Casino": {
59682                     "count": 264
59683                 },
59684                 "Penny Markt": {
59685                     "count": 466
59686                 },
59687                 "Giant": {
59688                     "count": 191
59689                 },
59690                 "COOP Jednota": {
59691                     "count": 73
59692                 },
59693                 "Rema 1000": {
59694                     "count": 368
59695                 },
59696                 "Kaufpark": {
59697                     "count": 96
59698                 },
59699                 "ALDI SÜD": {
59700                     "count": 113
59701                 },
59702                 "Simply Market": {
59703                     "count": 330
59704                 },
59705                 "Konzum": {
59706                     "count": 230
59707                 },
59708                 "Carrefour Express": {
59709                     "count": 353
59710                 },
59711                 "Eurospar": {
59712                     "count": 270
59713                 },
59714                 "Mercator": {
59715                     "count": 125
59716                 },
59717                 "Famila": {
59718                     "count": 130
59719                 },
59720                 "Hemköp": {
59721                     "count": 82
59722                 },
59723                 "real,-": {
59724                     "count": 81
59725                 },
59726                 "Markant": {
59727                     "count": 88
59728                 },
59729                 "Volg": {
59730                     "count": 135
59731                 },
59732                 "Leader Price": {
59733                     "count": 267
59734                 },
59735                 "Treff 3000": {
59736                     "count": 94
59737                 },
59738                 "SuperBrugsen": {
59739                     "count": 67
59740                 },
59741                 "Kaiser's": {
59742                     "count": 256
59743                 },
59744                 "K+K": {
59745                     "count": 106
59746                 },
59747                 "Unimarkt": {
59748                     "count": 86
59749                 },
59750                 "Carrefour City": {
59751                     "count": 126
59752                 },
59753                 "Sobeys": {
59754                     "count": 122
59755                 },
59756                 "S-Market": {
59757                     "count": 109
59758                 },
59759                 "Combi": {
59760                     "count": 55
59761                 },
59762                 "Denner": {
59763                     "count": 276
59764                 },
59765                 "Konsum": {
59766                     "count": 133
59767                 },
59768                 "Franprix": {
59769                     "count": 312
59770                 },
59771                 "Monoprix": {
59772                     "count": 198
59773                 },
59774                 "Diska": {
59775                     "count": 69
59776                 },
59777                 "PENNY": {
59778                     "count": 79
59779                 },
59780                 "Dia": {
59781                     "count": 835
59782                 },
59783                 "Giant Eagle": {
59784                     "count": 85
59785                 },
59786                 "NORMA": {
59787                     "count": 115
59788                 },
59789                 "AD Delhaize": {
59790                     "count": 63
59791                 },
59792                 "Auchan": {
59793                     "count": 152
59794                 },
59795                 "Mercadona": {
59796                     "count": 769
59797                 },
59798                 "Consum": {
59799                     "count": 130
59800                 },
59801                 "Carrefour Market": {
59802                     "count": 80
59803                 },
59804                 "Whole Foods": {
59805                     "count": 210,
59806                     "tags": {
59807                         "shop": "supermarket"
59808                     }
59809                 },
59810                 "Pam": {
59811                     "count": 56
59812                 },
59813                 "sky": {
59814                     "count": 105
59815                 },
59816                 "Despar": {
59817                     "count": 146
59818                 },
59819                 "Eroski": {
59820                     "count": 208
59821                 },
59822                 "Costcutter": {
59823                     "count": 63
59824                 },
59825                 "Maxi": {
59826                     "count": 108
59827                 },
59828                 "Colruyt": {
59829                     "count": 180
59830                 },
59831                 "The Co-operative": {
59832                     "count": 64
59833                 },
59834                 "Intermarché": {
59835                     "count": 1210
59836                 },
59837                 "Delhaize": {
59838                     "count": 207
59839                 },
59840                 "CBA": {
59841                     "count": 176
59842                 },
59843                 "Shopi": {
59844                     "count": 53
59845                 },
59846                 "Walmart": {
59847                     "count": 644
59848                 },
59849                 "Kroger": {
59850                     "count": 317
59851                 },
59852                 "Albertsons": {
59853                     "count": 242
59854                 },
59855                 "Trader Joe's": {
59856                     "count": 235
59857                 },
59858                 "Feneberg": {
59859                     "count": 58
59860                 },
59861                 "denn's Biomarkt": {
59862                     "count": 52
59863                 },
59864                 "dm": {
59865                     "count": 114
59866                 },
59867                 "Kvickly": {
59868                     "count": 55
59869                 },
59870                 "Makro": {
59871                     "count": 140
59872                 },
59873                 "Dico": {
59874                     "count": 53
59875                 },
59876                 "Nah & Frisch": {
59877                     "count": 73
59878                 },
59879                 "Champion": {
59880                     "count": 59
59881                 },
59882                 "ICA Supermarket": {
59883                     "count": 51
59884                 },
59885                 "Fakta": {
59886                     "count": 235
59887                 },
59888                 "Магнит": {
59889                     "count": 1760
59890                 },
59891                 "Caprabo": {
59892                     "count": 103
59893                 },
59894                 "Famiglia Cooperativa": {
59895                     "count": 64
59896                 },
59897                 "Народная 7Я семьЯ": {
59898                     "count": 154
59899                 },
59900                 "Esselunga": {
59901                     "count": 85
59902                 },
59903                 "Maxima": {
59904                     "count": 102
59905                 },
59906                 "Petit Casino": {
59907                     "count": 111
59908                 },
59909                 "Wasgau": {
59910                     "count": 60
59911                 },
59912                 "Pingo Doce": {
59913                     "count": 253
59914                 },
59915                 "Match": {
59916                     "count": 140
59917                 },
59918                 "Profi": {
59919                     "count": 60
59920                 },
59921                 "Lider": {
59922                     "count": 65
59923                 },
59924                 "Unimarc": {
59925                     "count": 177
59926                 },
59927                 "The Co-operative Food": {
59928                     "count": 190
59929                 },
59930                 "Santa Isabel": {
59931                     "count": 128
59932                 },
59933                 "Седьмой континент": {
59934                     "count": 79
59935                 },
59936                 "HIT": {
59937                     "count": 59
59938                 },
59939                 "Rimi": {
59940                     "count": 106
59941                 },
59942                 "Conad": {
59943                     "count": 304
59944                 },
59945                 "Фуршет": {
59946                     "count": 76
59947                 },
59948                 "Willys": {
59949                     "count": 56
59950                 },
59951                 "Farmfoods": {
59952                     "count": 64
59953                 },
59954                 "U Express": {
59955                     "count": 51
59956                 },
59957                 "Фора": {
59958                     "count": 52
59959                 },
59960                 "Dunnes Stores": {
59961                     "count": 73
59962                 },
59963                 "Сільпо": {
59964                     "count": 125
59965                 },
59966                 "マルエツ": {
59967                     "count": 59
59968                 },
59969                 "Piggly Wiggly": {
59970                     "count": 57
59971                 },
59972                 "Crai": {
59973                     "count": 54
59974                 },
59975                 "El Árbol": {
59976                     "count": 73
59977                 },
59978                 "Centre Commercial E. Leclerc": {
59979                     "count": 549
59980                 },
59981                 "Foodland": {
59982                     "count": 100
59983                 },
59984                 "Super Brugsen": {
59985                     "count": 67
59986                 },
59987                 "Дикси": {
59988                     "count": 683
59989                 },
59990                 "Пятёрочка": {
59991                     "count": 1344
59992                 },
59993                 "Publix": {
59994                     "count": 339
59995                 },
59996                 "Føtex": {
59997                     "count": 66
59998                 },
59999                 "coop": {
60000                     "count": 73
60001                 },
60002                 "Fressnapf": {
60003                     "count": 69
60004                 },
60005                 "Coop Konsum": {
60006                     "count": 79
60007                 },
60008                 "Carrefour Contact": {
60009                     "count": 83
60010                 },
60011                 "No Frills": {
60012                     "count": 105
60013                 },
60014                 "Plodine": {
60015                     "count": 52
60016                 },
60017                 "ADEG": {
60018                     "count": 68
60019                 },
60020                 "Minipreço": {
60021                     "count": 111
60022                 },
60023                 "Biedronka": {
60024                     "count": 1335
60025                 },
60026                 "Eurospin": {
60027                     "count": 155
60028                 },
60029                 "Семья": {
60030                     "count": 62
60031                 },
60032                 "Gadis": {
60033                     "count": 53
60034                 },
60035                 "Евроопт": {
60036                     "count": 68
60037                 },
60038                 "Centra": {
60039                     "count": 51
60040                 },
60041                 "Квартал": {
60042                     "count": 82
60043                 },
60044                 "New World": {
60045                     "count": 69
60046                 },
60047                 "Countdown": {
60048                     "count": 95
60049                 },
60050                 "Reliance Fresh": {
60051                     "count": 61
60052                 },
60053                 "Stokrotka": {
60054                     "count": 98
60055                 },
60056                 "Coop Jednota": {
60057                     "count": 74
60058                 },
60059                 "Fred Meyer": {
60060                     "count": 64
60061                 },
60062                 "Irma": {
60063                     "count": 58
60064                 },
60065                 "Continente": {
60066                     "count": 75
60067                 },
60068                 "Price Chopper": {
60069                     "count": 99
60070                 },
60071                 "Game": {
60072                     "count": 52
60073                 },
60074                 "Soriana": {
60075                     "count": 93
60076                 },
60077                 "Alimerka": {
60078                     "count": 64
60079                 },
60080                 "Piotr i Paweł": {
60081                     "count": 53
60082                 },
60083                 "Перекресток": {
60084                     "count": 312
60085                 },
60086                 "Maxima X": {
60087                     "count": 117
60088                 },
60089                 "Карусель": {
60090                     "count": 55
60091                 },
60092                 "ALDI Nord": {
60093                     "count": 51
60094                 },
60095                 "Condis": {
60096                     "count": 67
60097                 },
60098                 "Sam's Club": {
60099                     "count": 138
60100                 },
60101                 "Копейка": {
60102                     "count": 87
60103                 },
60104                 "Géant Casino": {
60105                     "count": 54
60106                 },
60107                 "ASDA": {
60108                     "count": 180
60109                 },
60110                 "Intermarche": {
60111                     "count": 115
60112                 },
60113                 "Stop & Shop": {
60114                     "count": 66
60115                 },
60116                 "Food Lion": {
60117                     "count": 216
60118                 },
60119                 "Harris Teeter": {
60120                     "count": 92
60121                 },
60122                 "Foodworks": {
60123                     "count": 62
60124                 },
60125                 "Polo Market": {
60126                     "count": 86
60127                 },
60128                 "Лента": {
60129                     "count": 51
60130                 },
60131                 "西友 (SEIYU)": {
60132                     "count": 58
60133                 },
60134                 "H-E-B": {
60135                     "count": 293
60136                 },
60137                 "Атак": {
60138                     "count": 53
60139                 },
60140                 "Полушка": {
60141                     "count": 139
60142                 },
60143                 "Extra": {
60144                     "count": 82
60145                 },
60146                 "Lewiatan": {
60147                     "count": 94
60148                 },
60149                 "Sigma": {
60150                     "count": 51
60151                 },
60152                 "АТБ": {
60153                     "count": 322
60154                 },
60155                 "Społem": {
60156                     "count": 55
60157                 },
60158                 "Bodega Aurrera": {
60159                     "count": 82
60160                 },
60161                 "Tesco Lotus": {
60162                     "count": 77
60163                 },
60164                 "Мария-Ра": {
60165                     "count": 108
60166                 },
60167                 "Магнолия": {
60168                     "count": 72
60169                 },
60170                 "Магазин": {
60171                     "count": 120
60172                 },
60173                 "Монетка": {
60174                     "count": 174
60175                 },
60176                 "Hy-Vee": {
60177                     "count": 75
60178                 },
60179                 "Walmart Supercenter": {
60180                     "count": 133
60181                 },
60182                 "Hannaford": {
60183                     "count": 57
60184                 },
60185                 "Wegmans": {
60186                     "count": 83
60187                 },
60188                 "業務スーパー": {
60189                     "count": 61
60190                 },
60191                 "Norfa XL": {
60192                     "count": 55
60193                 },
60194                 "ヨークマート (YorkMart)": {
60195                     "count": 64
60196                 },
60197                 "Leclerc Drive": {
60198                     "count": 76
60199                 }
60200             },
60201             "electronics": {
60202                 "Media Markt": {
60203                     "count": 285
60204                 },
60205                 "Maplin": {
60206                     "count": 65
60207                 },
60208                 "Best Buy": {
60209                     "count": 345
60210                 },
60211                 "Future Shop": {
60212                     "count": 73
60213                 },
60214                 "Saturn": {
60215                     "count": 134
60216                 },
60217                 "Currys": {
60218                     "count": 80
60219                 },
60220                 "Radio Shack": {
60221                     "count": 269
60222                 },
60223                 "Euronics": {
60224                     "count": 115
60225                 },
60226                 "Expert": {
60227                     "count": 123
60228                 },
60229                 "Эльдорадо": {
60230                     "count": 184
60231                 },
60232                 "Darty": {
60233                     "count": 74
60234                 },
60235                 "М.Видео": {
60236                     "count": 89
60237                 },
60238                 "ヤマダ電機": {
60239                     "count": 51
60240                 }
60241             },
60242             "convenience": {
60243                 "Shell": {
60244                     "count": 255
60245                 },
60246                 "Spar": {
60247                     "count": 1119
60248                 },
60249                 "McColl's": {
60250                     "count": 100
60251                 },
60252                 "Tesco Express": {
60253                     "count": 426
60254                 },
60255                 "Sainsbury's Local": {
60256                     "count": 104
60257                 },
60258                 "Aral": {
60259                     "count": 56
60260                 },
60261                 "One Stop": {
60262                     "count": 146
60263                 },
60264                 "The Co-operative Food": {
60265                     "count": 115
60266                 },
60267                 "Londis": {
60268                     "count": 352
60269                 },
60270                 "7-Eleven": {
60271                     "count": 4440
60272                 },
60273                 "CBA": {
60274                     "count": 135
60275                 },
60276                 "Coop": {
60277                     "count": 678
60278                 },
60279                 "Sale": {
60280                     "count": 80
60281                 },
60282                 "Statoil": {
60283                     "count": 69
60284                 },
60285                 "Sheetz": {
60286                     "count": 54
60287                 },
60288                 "Konzum": {
60289                     "count": 173
60290                 },
60291                 "Siwa": {
60292                     "count": 216
60293                 },
60294                 "Mercator": {
60295                     "count": 57
60296                 },
60297                 "Esso": {
60298                     "count": 67
60299                 },
60300                 "COOP Jednota": {
60301                     "count": 181
60302                 },
60303                 "Mac's": {
60304                     "count": 152
60305                 },
60306                 "Alepa": {
60307                     "count": 62
60308                 },
60309                 "Hasty Market": {
60310                     "count": 54
60311                 },
60312                 "K-Market": {
60313                     "count": 54
60314                 },
60315                 "Costcutter": {
60316                     "count": 292
60317                 },
60318                 "Valintatalo": {
60319                     "count": 62
60320                 },
60321                 "Casino": {
60322                     "count": 90
60323                 },
60324                 "Franprix": {
60325                     "count": 61
60326                 },
60327                 "Circle K": {
60328                     "count": 289
60329                 },
60330                 "セブンイレブン": {
60331                     "count": 3011,
60332                     "tags": {
60333                         "name:en": "7-Eleven"
60334                     }
60335                 },
60336                 "ローソン": {
60337                     "count": 1596,
60338                     "tags": {
60339                         "name:en": "LAWSON"
60340                     }
60341                 },
60342                 "BP": {
60343                     "count": 163
60344                 },
60345                 "Tesco": {
60346                     "count": 55
60347                 },
60348                 "Petit Casino": {
60349                     "count": 233
60350                 },
60351                 "Volg": {
60352                     "count": 116
60353                 },
60354                 "Mace": {
60355                     "count": 115
60356                 },
60357                 "Mini Market": {
60358                     "count": 272
60359                 },
60360                 "Nisa Local": {
60361                     "count": 77
60362                 },
60363                 "Dorfladen": {
60364                     "count": 75
60365                 },
60366                 "Продукты": {
60367                     "count": 4285
60368                 },
60369                 "Mini Stop": {
60370                     "count": 228
60371                 },
60372                 "LAWSON": {
60373                     "count": 419
60374                 },
60375                 "デイリーヤマザキ": {
60376                     "count": 141
60377                 },
60378                 "Biedronka": {
60379                     "count": 83
60380                 },
60381                 "Надежда": {
60382                     "count": 56
60383                 },
60384                 "Mobil": {
60385                     "count": 66
60386                 },
60387                 "Nisa": {
60388                     "count": 51
60389                 },
60390                 "Premier": {
60391                     "count": 129
60392                 },
60393                 "ABC": {
60394                     "count": 152
60395                 },
60396                 "ミニストップ": {
60397                     "count": 316,
60398                     "tags": {
60399                         "name:en": "MINISTOP"
60400                     }
60401                 },
60402                 "サンクス": {
60403                     "count": 560,
60404                     "tags": {
60405                         "name:en": "sunkus"
60406                     }
60407                 },
60408                 "スリーエフ": {
60409                     "count": 88
60410                 },
60411                 "8 à Huit": {
60412                     "count": 61
60413                 },
60414                 "Tchibo": {
60415                     "count": 56
60416                 },
60417                 "Żabka": {
60418                     "count": 546
60419                 },
60420                 "Almacen": {
60421                     "count": 229
60422                 },
60423                 "Vival": {
60424                     "count": 194
60425                 },
60426                 "FamilyMart": {
60427                     "count": 529
60428                 },
60429                 "ファミリーマート": {
60430                     "count": 1608,
60431                     "tags": {
60432                         "name:en": "FamilyMart"
60433                     }
60434                 },
60435                 "Carrefour City": {
60436                     "count": 57
60437                 },
60438                 "Sunkus": {
60439                     "count": 62
60440                 },
60441                 "Casey's General Store": {
60442                     "count": 95
60443                 },
60444                 "セブンイレブン(Seven-Eleven)": {
60445                     "count": 65
60446                 },
60447                 "Jednota": {
60448                     "count": 58
60449                 },
60450                 "Магазин": {
60451                     "count": 915
60452                 },
60453                 "Гастроном": {
60454                     "count": 152
60455                 },
60456                 "Centra": {
60457                     "count": 111
60458                 },
60459                 "Магнит": {
60460                     "count": 701
60461                 },
60462                 "サークルK": {
60463                     "count": 538,
60464                     "tags": {
60465                         "name:en": "Circle K"
60466                     }
60467                 },
60468                 "Wawa": {
60469                     "count": 135
60470                 },
60471                 "Proxi": {
60472                     "count": 123
60473                 },
60474                 "Универсам": {
60475                     "count": 78
60476                 },
60477                 "Перекресток": {
60478                     "count": 51
60479                 },
60480                 "Groszek": {
60481                     "count": 65
60482                 },
60483                 "Select": {
60484                     "count": 62
60485                 },
60486                 "Večerka": {
60487                     "count": 51
60488                 },
60489                 "Potraviny": {
60490                     "count": 249
60491                 },
60492                 "Смак": {
60493                     "count": 78
60494                 },
60495                 "Эконом": {
60496                     "count": 55
60497                 },
60498                 "Березка": {
60499                     "count": 77
60500                 },
60501                 "Społem": {
60502                     "count": 93
60503                 },
60504                 "Carrefour Express": {
60505                     "count": 84
60506                 },
60507                 "Cumberland Farms": {
60508                     "count": 63
60509                 },
60510                 "Chevron": {
60511                     "count": 59
60512                 },
60513                 "Coop Jednota": {
60514                     "count": 66
60515                 },
60516                 "Tesco Lotus Express": {
60517                     "count": 67
60518                 },
60519                 "Kiosk": {
60520                     "count": 55
60521                 },
60522                 "Sklep spożywczy": {
60523                     "count": 130
60524                 },
60525                 "24 часа": {
60526                     "count": 58
60527                 },
60528                 "Минимаркет": {
60529                     "count": 102
60530                 },
60531                 "Oxxo": {
60532                     "count": 669
60533                 },
60534                 "Пятёрочка": {
60535                     "count": 398
60536                 },
60537                 "abc": {
60538                     "count": 74
60539                 },
60540                 "7/11": {
60541                     "count": 51
60542                 },
60543                 "Stewart's": {
60544                     "count": 255
60545                 },
60546                 "Продукти": {
60547                     "count": 171
60548                 },
60549                 "ローソンストア100 (LAWSON STORE 100)": {
60550                     "count": 85
60551                 },
60552                 "Дикси": {
60553                     "count": 119
60554                 },
60555                 "Радуга": {
60556                     "count": 86
60557                 },
60558                 "ローソンストア100": {
60559                     "count": 76
60560                 },
60561                 "เซเว่นอีเลฟเว่น": {
60562                     "count": 185
60563                 },
60564                 "Delikatesy Centrum": {
60565                     "count": 53
60566                 },
60567                 "Citgo": {
60568                     "count": 62
60569                 },
60570                 "Фортуна": {
60571                     "count": 51
60572                 },
60573                 "Kum & Go": {
60574                     "count": 59
60575                 },
60576                 "Мария-Ра": {
60577                     "count": 76
60578                 },
60579                 "Picard": {
60580                     "count": 57
60581                 },
60582                 "Four Square": {
60583                     "count": 52
60584                 },
60585                 "Визит": {
60586                     "count": 57
60587                 },
60588                 "Авоська": {
60589                     "count": 55
60590                 },
60591                 "Dollar General": {
60592                     "count": 127
60593                 },
60594                 "Studenac": {
60595                     "count": 76
60596                 },
60597                 "Central Convenience Store": {
60598                     "count": 55
60599                 },
60600                 "Монетка": {
60601                     "count": 62
60602                 },
60603                 "продукты": {
60604                     "count": 114
60605                 },
60606                 "Теремок": {
60607                     "count": 56
60608                 },
60609                 "Kwik Trip": {
60610                     "count": 69
60611                 },
60612                 "Кулинария": {
60613                     "count": 55
60614                 },
60615                 "全家": {
60616                     "count": 90
60617                 },
60618                 "Мечта": {
60619                     "count": 54
60620                 },
60621                 "Epicerie": {
60622                     "count": 102
60623                 },
60624                 "Кировский": {
60625                     "count": 67
60626                 },
60627                 "Food Mart": {
60628                     "count": 117
60629                 },
60630                 "Delikatesy": {
60631                     "count": 81
60632                 },
60633                 "ポプラ": {
60634                     "count": 54
60635                 },
60636                 "Lewiatan": {
60637                     "count": 135
60638                 },
60639                 "Продуктовый магазин": {
60640                     "count": 149
60641                 },
60642                 "Продуктовый": {
60643                     "count": 84
60644                 },
60645                 "セイコーマート (Seicomart)": {
60646                     "count": 72
60647                 },
60648                 "Виктория": {
60649                     "count": 70
60650                 },
60651                 "Весна": {
60652                     "count": 57
60653                 },
60654                 "Mini Market Non-Stop": {
60655                     "count": 60
60656                 },
60657                 "QuikTrip": {
60658                     "count": 75
60659                 },
60660                 "Копеечка": {
60661                     "count": 51
60662                 },
60663                 "Royal Farms": {
60664                     "count": 51
60665                 },
60666                 "Alfamart": {
60667                     "count": 103
60668                 },
60669                 "Indomaret": {
60670                     "count": 141
60671                 },
60672                 "магазин": {
60673                     "count": 171
60674                 },
60675                 "全家便利商店": {
60676                     "count": 156
60677                 },
60678                 "Boutique": {
60679                     "count": 59
60680                 },
60681                 "მარკეტი (Market)": {
60682                     "count": 144
60683                 },
60684                 "Stores": {
60685                     "count": 61
60686                 }
60687             },
60688             "chemist": {
60689                 "dm": {
60690                     "count": 939
60691                 },
60692                 "Müller": {
60693                     "count": 212
60694                 },
60695                 "Schlecker": {
60696                     "count": 187
60697                 },
60698                 "Etos": {
60699                     "count": 467
60700                 },
60701                 "Bipa": {
60702                     "count": 289
60703                 },
60704                 "Rossmann": {
60705                     "count": 1669
60706                 },
60707                 "DM Drogeriemarkt": {
60708                     "count": 55
60709                 },
60710                 "Ihr Platz": {
60711                     "count": 73
60712                 },
60713                 "Douglas": {
60714                     "count": 62
60715                 },
60716                 "Kruidvat": {
60717                     "count": 123
60718                 }
60719             },
60720             "car_repair": {
60721                 "Peugeot": {
60722                     "count": 83
60723                 },
60724                 "Kwik Fit": {
60725                     "count": 128
60726                 },
60727                 "ATU": {
60728                     "count": 261
60729                 },
60730                 "Midas": {
60731                     "count": 202
60732                 },
60733                 "Feu Vert": {
60734                     "count": 113
60735                 },
60736                 "Norauto": {
60737                     "count": 152
60738                 },
60739                 "Speedy": {
60740                     "count": 115
60741                 },
60742                 "Автозапчасти": {
60743                     "count": 212
60744                 },
60745                 "Renault": {
60746                     "count": 171
60747                 },
60748                 "Pit Stop": {
60749                     "count": 58
60750                 },
60751                 "Jiffy Lube": {
60752                     "count": 198
60753                 },
60754                 "Шиномонтаж": {
60755                     "count": 1157
60756                 },
60757                 "СТО": {
60758                     "count": 395
60759                 },
60760                 "O'Reilly Auto Parts": {
60761                     "count": 81
60762                 },
60763                 "Carglass": {
60764                     "count": 112
60765                 },
60766                 "шиномонтаж": {
60767                     "count": 62
60768                 },
60769                 "Citroen": {
60770                     "count": 51
60771                 },
60772                 "Euromaster": {
60773                     "count": 87
60774                 },
60775                 "Firestone": {
60776                     "count": 88
60777                 },
60778                 "Автосервис": {
60779                     "count": 361
60780                 },
60781                 "Advance Auto Parts": {
60782                     "count": 52
60783                 },
60784                 "Roady": {
60785                     "count": 56
60786                 }
60787             },
60788             "furniture": {
60789                 "IKEA": {
60790                     "count": 169
60791                 },
60792                 "Jysk": {
60793                     "count": 109
60794                 },
60795                 "Roller": {
60796                     "count": 78
60797                 },
60798                 "Dänisches Bettenlager": {
60799                     "count": 309
60800                 },
60801                 "Conforama": {
60802                     "count": 99
60803                 },
60804                 "Matratzen Concord": {
60805                     "count": 52
60806                 },
60807                 "Мебель": {
60808                     "count": 210
60809                 },
60810                 "But": {
60811                     "count": 63
60812                 }
60813             },
60814             "doityourself": {
60815                 "Hornbach": {
60816                     "count": 123
60817                 },
60818                 "B&Q": {
60819                     "count": 225
60820                 },
60821                 "Hubo": {
60822                     "count": 77
60823                 },
60824                 "Mr Bricolage": {
60825                     "count": 88
60826                 },
60827                 "Gamma": {
60828                     "count": 111
60829                 },
60830                 "OBI": {
60831                     "count": 422
60832                 },
60833                 "Lowes": {
60834                     "count": 1152
60835                 },
60836                 "Wickes": {
60837                     "count": 123
60838                 },
60839                 "Hagebau": {
60840                     "count": 59
60841                 },
60842                 "Max Bahr": {
60843                     "count": 79
60844                 },
60845                 "Castorama": {
60846                     "count": 153
60847                 },
60848                 "Rona": {
60849                     "count": 61
60850                 },
60851                 "Home Depot": {
60852                     "count": 865
60853                 },
60854                 "Toom Baumarkt": {
60855                     "count": 71
60856                 },
60857                 "Homebase": {
60858                     "count": 225
60859                 },
60860                 "Baumax": {
60861                     "count": 95
60862                 },
60863                 "Lagerhaus": {
60864                     "count": 79
60865                 },
60866                 "Bauhaus": {
60867                     "count": 186
60868                 },
60869                 "Canadian Tire": {
60870                     "count": 97
60871                 },
60872                 "Leroy Merlin": {
60873                     "count": 209
60874                 },
60875                 "Hellweg": {
60876                     "count": 58
60877                 },
60878                 "Brico": {
60879                     "count": 98
60880                 },
60881                 "Bricomarché": {
60882                     "count": 235
60883                 },
60884                 "Toom": {
60885                     "count": 67
60886                 },
60887                 "Hagebaumarkt": {
60888                     "count": 107
60889                 },
60890                 "Praktiker": {
60891                     "count": 122
60892                 },
60893                 "Menards": {
60894                     "count": 70
60895                 },
60896                 "Weldom": {
60897                     "count": 73
60898                 },
60899                 "Bunnings Warehouse": {
60900                     "count": 91
60901                 },
60902                 "Ace Hardware": {
60903                     "count": 147
60904                 },
60905                 "Home Hardware": {
60906                     "count": 72
60907                 },
60908                 "Хозтовары": {
60909                     "count": 86
60910                 },
60911                 "Стройматериалы": {
60912                     "count": 197
60913                 },
60914                 "Bricorama": {
60915                     "count": 60
60916                 },
60917                 "Point P": {
60918                     "count": 59
60919                 }
60920             },
60921             "stationery": {
60922                 "Staples": {
60923                     "count": 299
60924                 },
60925                 "McPaper": {
60926                     "count": 83
60927                 },
60928                 "Office Depot": {
60929                     "count": 98
60930                 },
60931                 "Канцтовары": {
60932                     "count": 63
60933                 }
60934             },
60935             "car": {
60936                 "Skoda": {
60937                     "count": 97
60938                 },
60939                 "BMW": {
60940                     "count": 149
60941                 },
60942                 "Citroen": {
60943                     "count": 277
60944                 },
60945                 "Renault": {
60946                     "count": 382
60947                 },
60948                 "Mercedes-Benz": {
60949                     "count": 235
60950                 },
60951                 "Volvo": {
60952                     "count": 96
60953                 },
60954                 "Ford": {
60955                     "count": 239
60956                 },
60957                 "Volkswagen": {
60958                     "count": 217
60959                 },
60960                 "Mazda": {
60961                     "count": 105
60962                 },
60963                 "Mitsubishi": {
60964                     "count": 73
60965                 },
60966                 "Fiat": {
60967                     "count": 93
60968                 },
60969                 "Автозапчасти": {
60970                     "count": 277
60971                 },
60972                 "Opel": {
60973                     "count": 165
60974                 },
60975                 "Audi": {
60976                     "count": 121
60977                 },
60978                 "Toyota": {
60979                     "count": 271
60980                 },
60981                 "Nissan": {
60982                     "count": 189
60983                 },
60984                 "Suzuki": {
60985                     "count": 75
60986                 },
60987                 "Honda": {
60988                     "count": 157
60989                 },
60990                 "Peugeot": {
60991                     "count": 308
60992                 },
60993                 "Шиномонтаж": {
60994                     "count": 259
60995                 },
60996                 "Hyundai": {
60997                     "count": 166
60998                 },
60999                 "Subaru": {
61000                     "count": 58
61001                 },
61002                 "Chevrolet": {
61003                     "count": 86
61004                 },
61005                 "Автомагазин": {
61006                     "count": 72
61007                 }
61008             },
61009             "clothes": {
61010                 "Matalan": {
61011                     "count": 90
61012                 },
61013                 "KiK": {
61014                     "count": 1219
61015                 },
61016                 "H&M": {
61017                     "count": 658
61018                 },
61019                 "Urban Outfitters": {
61020                     "count": 63
61021                 },
61022                 "Vögele": {
61023                     "count": 132
61024                 },
61025                 "Zeeman": {
61026                     "count": 121
61027                 },
61028                 "Takko": {
61029                     "count": 515
61030                 },
61031                 "Adler": {
61032                     "count": 55
61033                 },
61034                 "C&A": {
61035                     "count": 506
61036                 },
61037                 "Zara": {
61038                     "count": 217
61039                 },
61040                 "Vero Moda": {
61041                     "count": 95
61042                 },
61043                 "NKD": {
61044                     "count": 486
61045                 },
61046                 "Ernsting's family": {
61047                     "count": 312
61048                 },
61049                 "Winners": {
61050                     "count": 65
61051                 },
61052                 "River Island": {
61053                     "count": 59
61054                 },
61055                 "Next": {
61056                     "count": 176
61057                 },
61058                 "Gap": {
61059                     "count": 81
61060                 },
61061                 "Adidas": {
61062                     "count": 92
61063                 },
61064                 "Woolworths": {
61065                     "count": 117
61066                 },
61067                 "Mr Price": {
61068                     "count": 88
61069                 },
61070                 "Jet": {
61071                     "count": 61
61072                 },
61073                 "Pep": {
61074                     "count": 134
61075                 },
61076                 "Edgars": {
61077                     "count": 110
61078                 },
61079                 "Ackermans": {
61080                     "count": 91
61081                 },
61082                 "Truworths": {
61083                     "count": 65
61084                 },
61085                 "Ross": {
61086                     "count": 93
61087                 },
61088                 "Burton": {
61089                     "count": 51
61090                 },
61091                 "Dorothy Perkins": {
61092                     "count": 53
61093                 },
61094                 "Deichmann": {
61095                     "count": 61
61096                 },
61097                 "Lindex": {
61098                     "count": 73
61099                 },
61100                 "s.Oliver": {
61101                     "count": 56
61102                 },
61103                 "Cecil": {
61104                     "count": 51
61105                 },
61106                 "Dress Barn": {
61107                     "count": 52
61108                 },
61109                 "Old Navy": {
61110                     "count": 174
61111                 },
61112                 "Jack & Jones": {
61113                     "count": 52
61114                 },
61115                 "Pimkie": {
61116                     "count": 73
61117                 },
61118                 "Esprit": {
61119                     "count": 231
61120                 },
61121                 "Primark": {
61122                     "count": 92
61123                 },
61124                 "Bonita": {
61125                     "count": 155
61126                 },
61127                 "Mexx": {
61128                     "count": 67
61129                 },
61130                 "Gerry Weber": {
61131                     "count": 71
61132                 },
61133                 "Tally Weijl": {
61134                     "count": 70
61135                 },
61136                 "Mango": {
61137                     "count": 133
61138                 },
61139                 "TK Maxx": {
61140                     "count": 84
61141                 },
61142                 "Benetton": {
61143                     "count": 101
61144                 },
61145                 "Ulla Popken": {
61146                     "count": 61
61147                 },
61148                 "AWG": {
61149                     "count": 66
61150                 },
61151                 "Tommy Hilfiger": {
61152                     "count": 75
61153                 },
61154                 "New Yorker": {
61155                     "count": 180
61156                 },
61157                 "Orsay": {
61158                     "count": 73
61159                 },
61160                 "Jeans Fritz": {
61161                     "count": 51
61162                 },
61163                 "Charles Vögele": {
61164                     "count": 69
61165                 },
61166                 "New Look": {
61167                     "count": 126
61168                 },
61169                 "Lacoste": {
61170                     "count": 78
61171                 },
61172                 "Etam": {
61173                     "count": 53
61174                 },
61175                 "Kiabi": {
61176                     "count": 148
61177                 },
61178                 "Jack Wolfskin": {
61179                     "count": 60
61180                 },
61181                 "American Apparel": {
61182                     "count": 57
61183                 },
61184                 "Men's Wearhouse": {
61185                     "count": 54
61186                 },
61187                 "Intimissimi": {
61188                     "count": 52
61189                 },
61190                 "United Colors of Benetton": {
61191                     "count": 96
61192                 },
61193                 "Jules": {
61194                     "count": 63
61195                 },
61196                 "Second Hand": {
61197                     "count": 53
61198                 },
61199                 "AOKI": {
61200                     "count": 57
61201                 },
61202                 "Calzedonia": {
61203                     "count": 68
61204                 },
61205                 "洋服の青山": {
61206                     "count": 100
61207                 },
61208                 "Levi's": {
61209                     "count": 63
61210                 },
61211                 "Celio": {
61212                     "count": 74
61213                 },
61214                 "TJ Maxx": {
61215                     "count": 57
61216                 },
61217                 "Promod": {
61218                     "count": 82
61219                 },
61220                 "Street One": {
61221                     "count": 72
61222                 },
61223                 "ユニクロ": {
61224                     "count": 59
61225                 },
61226                 "Banana Republic": {
61227                     "count": 57
61228                 },
61229                 "Одежда": {
61230                     "count": 75
61231                 },
61232                 "Marshalls": {
61233                     "count": 56
61234                 },
61235                 "La Halle": {
61236                     "count": 62
61237                 },
61238                 "Peacocks": {
61239                     "count": 89
61240                 },
61241                 "しまむら": {
61242                     "count": 60
61243                 }
61244             },
61245             "books": {
61246                 "Bruna": {
61247                     "count": 58
61248                 },
61249                 "Waterstones": {
61250                     "count": 90
61251                 },
61252                 "Libro": {
61253                     "count": 57
61254                 },
61255                 "Barnes & Noble": {
61256                     "count": 267
61257                 },
61258                 "Weltbild": {
61259                     "count": 74
61260                 },
61261                 "Thalia": {
61262                     "count": 121
61263                 },
61264                 "Книги": {
61265                     "count": 112
61266                 }
61267             },
61268             "department_store": {
61269                 "Debenhams": {
61270                     "count": 67
61271                 },
61272                 "Canadian Tire": {
61273                     "count": 75
61274                 },
61275                 "Karstadt": {
61276                     "count": 64
61277                 },
61278                 "Walmart": {
61279                     "count": 517
61280                 },
61281                 "Kmart": {
61282                     "count": 143
61283                 },
61284                 "Target": {
61285                     "count": 574
61286                 },
61287                 "Galeria Kaufhof": {
61288                     "count": 61
61289                 },
61290                 "Marks & Spencer": {
61291                     "count": 66
61292                 },
61293                 "Big W": {
61294                     "count": 57
61295                 },
61296                 "Woolworth": {
61297                     "count": 78
61298                 },
61299                 "Универмаг": {
61300                     "count": 72
61301                 },
61302                 "Sears": {
61303                     "count": 235
61304                 },
61305                 "Walmart Supercenter": {
61306                     "count": 101
61307                 },
61308                 "Kohl's": {
61309                     "count": 153
61310                 },
61311                 "Macy's": {
61312                     "count": 147
61313                 },
61314                 "Sam's Club": {
61315                     "count": 54
61316                 },
61317                 "JCPenney": {
61318                     "count": 66
61319                 }
61320             },
61321             "alcohol": {
61322                 "Alko": {
61323                     "count": 145
61324                 },
61325                 "The Beer Store": {
61326                     "count": 150
61327                 },
61328                 "Systembolaget": {
61329                     "count": 210
61330                 },
61331                 "LCBO": {
61332                     "count": 239
61333                 },
61334                 "Ароматный мир": {
61335                     "count": 62
61336                 },
61337                 "Bargain Booze": {
61338                     "count": 62
61339                 },
61340                 "Nicolas": {
61341                     "count": 119
61342                 },
61343                 "BWS": {
61344                     "count": 70
61345                 },
61346                 "Botilleria": {
61347                     "count": 77
61348                 },
61349                 "SAQ": {
61350                     "count": 72
61351                 },
61352                 "Gall & Gall": {
61353                     "count": 512
61354                 },
61355                 "Живое пиво": {
61356                     "count": 70
61357                 }
61358             },
61359             "bakery": {
61360                 "Kamps": {
61361                     "count": 252
61362                 },
61363                 "Banette": {
61364                     "count": 52
61365                 },
61366                 "Bäckerei Schmidt": {
61367                     "count": 57
61368                 },
61369                 "Anker": {
61370                     "count": 73
61371                 },
61372                 "Hofpfisterei": {
61373                     "count": 111
61374                 },
61375                 "Greggs": {
61376                     "count": 276
61377                 },
61378                 "Oebel": {
61379                     "count": 57
61380                 },
61381                 "Boulangerie": {
61382                     "count": 266
61383                 },
61384                 "Stadtbäckerei": {
61385                     "count": 57
61386                 },
61387                 "Steinecke": {
61388                     "count": 145
61389                 },
61390                 "Ihle": {
61391                     "count": 76
61392                 },
61393                 "Goldilocks": {
61394                     "count": 59
61395                 },
61396                 "Dat Backhus": {
61397                     "count": 67
61398                 },
61399                 "K&U": {
61400                     "count": 61
61401                 },
61402                 "Der Beck": {
61403                     "count": 96
61404                 },
61405                 "Thürmann": {
61406                     "count": 54
61407                 },
61408                 "Backwerk": {
61409                     "count": 95
61410                 },
61411                 "Schäfer's": {
61412                     "count": 51
61413                 },
61414                 "Panaderia": {
61415                     "count": 168
61416                 },
61417                 "Goeken backen": {
61418                     "count": 51
61419                 },
61420                 "Stadtbäckerei Junge": {
61421                     "count": 51
61422                 },
61423                 "Boulangerie Patisserie": {
61424                     "count": 119
61425                 },
61426                 "Paul": {
61427                     "count": 81
61428                 },
61429                 "Хлеб": {
61430                     "count": 89
61431                 },
61432                 "Пекарня": {
61433                     "count": 52
61434                 },
61435                 "Кулиничи": {
61436                     "count": 51
61437                 }
61438             },
61439             "sports": {
61440                 "Sports Direct": {
61441                     "count": 57
61442                 },
61443                 "Decathlon": {
61444                     "count": 309
61445                 },
61446                 "Intersport": {
61447                     "count": 283
61448                 },
61449                 "Sports Authority": {
61450                     "count": 75
61451                 },
61452                 "Спортмастер": {
61453                     "count": 87
61454                 },
61455                 "Sport 2000": {
61456                     "count": 90
61457                 },
61458                 "Dick's Sporting Goods": {
61459                     "count": 77
61460                 }
61461             },
61462             "variety_store": {
61463                 "Tedi": {
61464                     "count": 157
61465                 },
61466                 "Dollarama": {
61467                     "count": 103
61468                 },
61469                 "Family Dollar": {
61470                     "count": 61
61471                 },
61472                 "Dollar Tree": {
61473                     "count": 110
61474                 },
61475                 "Dollar General": {
61476                     "count": 80
61477                 }
61478             },
61479             "pet": {
61480                 "Fressnapf": {
61481                     "count": 318
61482                 },
61483                 "PetSmart": {
61484                     "count": 177
61485                 },
61486                 "Das Futterhaus": {
61487                     "count": 69
61488                 },
61489                 "Pets at Home": {
61490                     "count": 62
61491                 },
61492                 "Petco": {
61493                     "count": 101
61494                 },
61495                 "Зоомагазин": {
61496                     "count": 100
61497                 }
61498             },
61499             "shoes": {
61500                 "Deichmann": {
61501                     "count": 622
61502                 },
61503                 "Reno": {
61504                     "count": 183
61505                 },
61506                 "Ecco": {
61507                     "count": 55
61508                 },
61509                 "Clarks": {
61510                     "count": 109
61511                 },
61512                 "La Halle aux Chaussures": {
61513                     "count": 69
61514                 },
61515                 "Brantano": {
61516                     "count": 71
61517                 },
61518                 "Geox": {
61519                     "count": 51
61520                 },
61521                 "Salamander": {
61522                     "count": 51
61523                 },
61524                 "Обувь": {
61525                     "count": 100
61526                 },
61527                 "Payless Shoe Source": {
61528                     "count": 67
61529                 },
61530                 "Famous Footwear": {
61531                     "count": 59
61532                 },
61533                 "Quick Schuh": {
61534                     "count": 72
61535                 },
61536                 "Shoe Zone": {
61537                     "count": 55
61538                 },
61539                 "Foot Locker": {
61540                     "count": 82
61541                 },
61542                 "Bata": {
61543                     "count": 101
61544                 },
61545                 "ЦентрОбувь": {
61546                     "count": 51
61547                 }
61548             },
61549             "toys": {
61550                 "La Grande Récré": {
61551                     "count": 56
61552                 },
61553                 "Toys R Us": {
61554                     "count": 151,
61555                     "tags": {
61556                         "shop": "toys"
61557                     }
61558                 },
61559                 "Intertoys": {
61560                     "count": 57
61561                 },
61562                 "Детский мир": {
61563                     "count": 86
61564                 },
61565                 "Игрушки": {
61566                     "count": 58
61567                 }
61568             },
61569             "travel_agency": {
61570                 "Flight Centre": {
61571                     "count": 92
61572                 },
61573                 "Thomas Cook": {
61574                     "count": 119
61575                 }
61576             },
61577             "jewelry": {
61578                 "Bijou Brigitte": {
61579                     "count": 57
61580                 },
61581                 "Christ": {
61582                     "count": 57
61583                 },
61584                 "Swarovski": {
61585                     "count": 74
61586                 }
61587             },
61588             "optician": {
61589                 "Fielmann": {
61590                     "count": 232
61591                 },
61592                 "Apollo Optik": {
61593                     "count": 150
61594                 },
61595                 "Vision Express": {
61596                     "count": 58
61597                 },
61598                 "Оптика": {
61599                     "count": 182
61600                 },
61601                 "Optic 2000": {
61602                     "count": 98
61603                 },
61604                 "Alain Afflelou": {
61605                     "count": 73
61606                 },
61607                 "Specsavers": {
61608                     "count": 124
61609                 },
61610                 "Krys": {
61611                     "count": 77
61612                 },
61613                 "Atol": {
61614                     "count": 55
61615                 }
61616             },
61617             "video": {
61618                 "Blockbuster": {
61619                     "count": 184
61620                 },
61621                 "World of Video": {
61622                     "count": 64
61623                 }
61624             },
61625             "mobile_phone": {
61626                 "Билайн": {
61627                     "count": 128
61628                 },
61629                 "ソフトバンクショップ (SoftBank shop)": {
61630                     "count": 255
61631                 },
61632                 "Vodafone": {
61633                     "count": 355
61634                 },
61635                 "O2": {
61636                     "count": 208
61637                 },
61638                 "Carphone Warehouse": {
61639                     "count": 127
61640                 },
61641                 "Orange": {
61642                     "count": 246
61643                 },
61644                 "Verizon Wireless": {
61645                     "count": 125
61646                 },
61647                 "Sprint": {
61648                     "count": 109
61649                 },
61650                 "T-Mobile": {
61651                     "count": 175
61652                 },
61653                 "МТС": {
61654                     "count": 352
61655                 },
61656                 "Евросеть": {
61657                     "count": 506
61658                 },
61659                 "Bell": {
61660                     "count": 190
61661                 },
61662                 "The Phone House": {
61663                     "count": 83
61664                 },
61665                 "SFR": {
61666                     "count": 71
61667                 },
61668                 "Связной": {
61669                     "count": 439
61670                 },
61671                 "Мегафон": {
61672                     "count": 251
61673                 },
61674                 "AT&T": {
61675                     "count": 124
61676                 },
61677                 "ドコモショップ (docomo shop)": {
61678                     "count": 114
61679                 },
61680                 "au": {
61681                     "count": 65
61682                 },
61683                 "Movistar": {
61684                     "count": 77
61685                 },
61686                 "Bitė": {
61687                     "count": 72
61688                 }
61689             },
61690             "hifi": {},
61691             "computer": {
61692                 "PC World": {
61693                     "count": 55
61694                 },
61695                 "DNS": {
61696                     "count": 128
61697                 }
61698             },
61699             "hairdresser": {
61700                 "Klier": {
61701                     "count": 119
61702                 },
61703                 "Supercuts": {
61704                     "count": 106
61705                 },
61706                 "Hairkiller": {
61707                     "count": 51
61708                 },
61709                 "Great Clips": {
61710                     "count": 182
61711                 },
61712                 "Парикмахерская": {
61713                     "count": 510
61714                 },
61715                 "Стиль": {
61716                     "count": 51
61717                 },
61718                 "Franck Provost": {
61719                     "count": 70
61720                 },
61721                 "Салон красоты": {
61722                     "count": 70
61723                 }
61724             },
61725             "hardware": {
61726                 "1000 мелочей": {
61727                     "count": 61
61728                 },
61729                 "Хозтовары": {
61730                     "count": 151
61731                 },
61732                 "Стройматериалы": {
61733                     "count": 54
61734                 }
61735             },
61736             "motorcycle": {
61737                 "Yamaha": {
61738                     "count": 67
61739                 },
61740                 "Honda": {
61741                     "count": 69
61742                 }
61743             }
61744         }
61745     },
61746     "addressFormats": [
61747         {
61748             "format": [
61749                 [
61750                     "housenumber",
61751                     "street"
61752                 ],
61753                 [
61754                     "city",
61755                     "postcode"
61756                 ]
61757             ]
61758         },
61759         {
61760             "countryCodes": [
61761                 "gb"
61762             ],
61763             "format": [
61764                 [
61765                     "housename"
61766                 ],
61767                 [
61768                     "housenumber",
61769                     "street"
61770                 ],
61771                 [
61772                     "city",
61773                     "postcode"
61774                 ]
61775             ]
61776         },
61777         {
61778             "countryCodes": [
61779                 "ie"
61780             ],
61781             "format": [
61782                 [
61783                     "housename"
61784                 ],
61785                 [
61786                     "housenumber",
61787                     "street"
61788                 ],
61789                 [
61790                     "city"
61791                 ],
61792                 [
61793                     "postcode"
61794                 ]
61795             ]
61796         },
61797         {
61798             "countryCodes": [
61799                 "ad",
61800                 "at",
61801                 "ba",
61802                 "be",
61803                 "ch",
61804                 "cz",
61805                 "de",
61806                 "dk",
61807                 "es",
61808                 "fi",
61809                 "gr",
61810                 "hr",
61811                 "is",
61812                 "it",
61813                 "li",
61814                 "nl",
61815                 "no",
61816                 "pl",
61817                 "pt",
61818                 "se",
61819                 "si",
61820                 "sk",
61821                 "sm",
61822                 "va"
61823             ],
61824             "format": [
61825                 [
61826                     "street",
61827                     "housenumber"
61828                 ],
61829                 [
61830                     "postcode",
61831                     "city"
61832                 ]
61833             ]
61834         },
61835         {
61836             "countryCodes": [
61837                 "fr",
61838                 "lu",
61839                 "mo"
61840             ],
61841             "format": [
61842                 [
61843                     "housenumber",
61844                     "street"
61845                 ],
61846                 [
61847                     "postcode",
61848                     "city"
61849                 ]
61850             ]
61851         },
61852         {
61853             "countryCodes": [
61854                 "br"
61855             ],
61856             "format": [
61857                 [
61858                     "street"
61859                 ],
61860                 [
61861                     "housenumber",
61862                     "suburb"
61863                 ],
61864                 [
61865                     "city",
61866                     "postcode"
61867                 ]
61868             ]
61869         },
61870         {
61871             "countryCodes": [
61872                 "vn"
61873             ],
61874             "format": [
61875                 [
61876                     "housenumber",
61877                     "street"
61878                 ],
61879                 [
61880                     "subdistrict"
61881                 ],
61882                 [
61883                     "district"
61884                 ],
61885                 [
61886                     "city"
61887                 ],
61888                 [
61889                     "province",
61890                     "postcode"
61891                 ]
61892             ]
61893         },
61894         {
61895             "countryCodes": [
61896                 "us"
61897             ],
61898             "format": [
61899                 [
61900                     "housenumber",
61901                     "street"
61902                 ],
61903                 [
61904                     "city",
61905                     "state",
61906                     "postcode"
61907                 ]
61908             ]
61909         },
61910         {
61911             "countryCodes": [
61912                 "ca"
61913             ],
61914             "format": [
61915                 [
61916                     "housenumber",
61917                     "street"
61918                 ],
61919                 [
61920                     "city",
61921                     "province",
61922                     "postcode"
61923                 ]
61924             ]
61925         }
61926     ]
61927 };