]> git.openstreetmap.org Git - rails.git/blob - vendor/assets/iD/iD.js
Merge remote-tracking branch 'openstreetmap/pull/1082'
[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
14050         params.oauth_signature = ohauth.signature(
14051             o.oauth_secret, '',
14052             ohauth.baseString('POST', url, params));
14053
14054         if (!o.singlepage) {
14055             // Create a 600x550 popup window in the center of the screen
14056             var w = 600, h = 550,
14057                 settings = [
14058                     ['width', w], ['height', h],
14059                     ['left', screen.width / 2 - w / 2],
14060                     ['top', screen.height / 2 - h / 2]].map(function(x) {
14061                         return x.join('=');
14062                     }).join(','),
14063                 popup = window.open('about:blank', 'oauth_window', settings);
14064         }
14065
14066         // Request a request token. When this is complete, the popup
14067         // window is redirected to OSM's authorization page.
14068         ohauth.xhr('POST', url, params, null, {}, reqTokenDone);
14069         o.loading();
14070
14071         function reqTokenDone(err, xhr) {
14072             o.done();
14073             if (err) return callback(err);
14074             var resp = ohauth.stringQs(xhr.response);
14075             token('oauth_request_token_secret', resp.oauth_token_secret);
14076             var authorize_url = o.url + '/oauth/authorize?' + ohauth.qsString({
14077                 oauth_token: resp.oauth_token,
14078                 oauth_callback: location.href.replace('index.html', '')
14079                     .replace(/#.*/, '') + o.landing
14080             });
14081
14082             if (o.singlepage) {
14083                 location.href = authorize_url;
14084             } else {
14085                 popup.location = authorize_url;
14086             }
14087         }
14088
14089         // Called by a function in a landing page, in the popup window. The
14090         // window closes itself.
14091         window.authComplete = function(token) {
14092             var oauth_token = ohauth.stringQs(token.split('?')[1]);
14093             get_access_token(oauth_token.oauth_token);
14094             delete window.authComplete;
14095         };
14096
14097         // ## Getting an request token
14098         //
14099         // At this point we have an `oauth_token`, brought in from a function
14100         // call on a landing page popup.
14101         function get_access_token(oauth_token) {
14102             var url = o.url + '/oauth/access_token',
14103                 params = timenonce(getAuth(o)),
14104                 request_token_secret = token('oauth_request_token_secret');
14105             params.oauth_token = oauth_token;
14106             params.oauth_signature = ohauth.signature(
14107                 o.oauth_secret,
14108                 request_token_secret,
14109                 ohauth.baseString('POST', url, params));
14110
14111             // ## Getting an access token
14112             //
14113             // The final token required for authentication. At this point
14114             // we have a `request token secret`
14115             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14116             o.loading();
14117         }
14118
14119         function accessTokenDone(err, xhr) {
14120             o.done();
14121             if (err) return callback(err);
14122             var access_token = ohauth.stringQs(xhr.response);
14123             token('oauth_token', access_token.oauth_token);
14124             token('oauth_token_secret', access_token.oauth_token_secret);
14125             callback(null, oauth);
14126         }
14127     };
14128
14129     oauth.bootstrapToken = function(oauth_token, callback) {
14130         // ## Getting an request token
14131         // At this point we have an `oauth_token`, brought in from a function
14132         // call on a landing page popup.
14133         function get_access_token(oauth_token) {
14134             var url = o.url + '/oauth/access_token',
14135                 params = timenonce(getAuth(o)),
14136                 request_token_secret = token('oauth_request_token_secret');
14137             params.oauth_token = oauth_token;
14138             params.oauth_signature = ohauth.signature(
14139                 o.oauth_secret,
14140                 request_token_secret,
14141                 ohauth.baseString('POST', url, params));
14142
14143             // ## Getting an access token
14144             // The final token required for authentication. At this point
14145             // we have a `request token secret`
14146             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14147             o.loading();
14148         }
14149
14150         function accessTokenDone(err, xhr) {
14151             o.done();
14152             if (err) return callback(err);
14153             var access_token = ohauth.stringQs(xhr.response);
14154             token('oauth_token', access_token.oauth_token);
14155             token('oauth_token_secret', access_token.oauth_token_secret);
14156             callback(null, oauth);
14157         }
14158
14159         get_access_token(oauth_token);
14160     };
14161
14162     // # xhr
14163     //
14164     // A single XMLHttpRequest wrapper that does authenticated calls if the
14165     // user has logged in.
14166     oauth.xhr = function(options, callback) {
14167         if (!oauth.authenticated()) {
14168             if (o.auto) return oauth.authenticate(run);
14169             else return callback('not authenticated', null);
14170         } else return run();
14171
14172         function run() {
14173             var params = timenonce(getAuth(o)),
14174                 url = o.url + options.path,
14175                 oauth_token_secret = token('oauth_token_secret');
14176
14177             // https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1
14178             if ((!options.options || !options.options.header ||
14179                 options.options.header['Content-Type'] === 'application/x-www-form-urlencoded') &&
14180                 options.content) {
14181                 params = xtend(params, ohauth.stringQs(options.content));
14182             }
14183
14184             params.oauth_token = token('oauth_token');
14185             params.oauth_signature = ohauth.signature(
14186                 o.oauth_secret,
14187                 oauth_token_secret,
14188                 ohauth.baseString(options.method, url, params));
14189
14190             ohauth.xhr(options.method,
14191                 url, params, options.content, options.options, done);
14192         }
14193
14194         function done(err, xhr) {
14195             if (err) return callback(err);
14196             else if (xhr.responseXML) return callback(err, xhr.responseXML);
14197             else return callback(err, xhr.response);
14198         }
14199     };
14200
14201     // pre-authorize this object, if we can just get a token and token_secret
14202     // from the start
14203     oauth.preauth = function(c) {
14204         if (!c) return;
14205         if (c.oauth_token) token('oauth_token', c.oauth_token);
14206         if (c.oauth_token_secret) token('oauth_token_secret', c.oauth_token_secret);
14207         return oauth;
14208     };
14209
14210     oauth.options = function(_) {
14211         if (!arguments.length) return o;
14212
14213         o = _;
14214
14215         o.url = o.url || 'http://www.openstreetmap.org';
14216         o.landing = o.landing || 'land.html';
14217
14218         o.singlepage = o.singlepage || false;
14219
14220         // Optional loading and loading-done functions for nice UI feedback.
14221         // by default, no-ops
14222         o.loading = o.loading || function() {};
14223         o.done = o.done || function() {};
14224
14225         return oauth.preauth(o);
14226     };
14227
14228     // 'stamp' an authentication object from `getAuth()`
14229     // with a [nonce](http://en.wikipedia.org/wiki/Cryptographic_nonce)
14230     // and timestamp
14231     function timenonce(o) {
14232         o.oauth_timestamp = ohauth.timestamp();
14233         o.oauth_nonce = ohauth.nonce();
14234         return o;
14235     }
14236
14237     // get/set tokens. These are prefixed with the base URL so that `osm-auth`
14238     // can be used with multiple APIs and the keys in `localStorage`
14239     // will not clash
14240     var token;
14241
14242     if (store.enabled) {
14243         token = function (x, y) {
14244             if (arguments.length === 1) return store.get(o.url + x);
14245             else if (arguments.length === 2) return store.set(o.url + x, y);
14246         };
14247     } else {
14248         var storage = {};
14249         token = function (x, y) {
14250             if (arguments.length === 1) return storage[o.url + x];
14251             else if (arguments.length === 2) return storage[o.url + x] = y;
14252         };
14253     }
14254
14255     // Get an authentication object. If you just add and remove properties
14256     // from a single object, you'll need to use `delete` to make sure that
14257     // it doesn't contain undesired properties for authentication
14258     function getAuth(o) {
14259         return {
14260             oauth_consumer_key: o.oauth_consumer_key,
14261             oauth_signature_method: "HMAC-SHA1"
14262         };
14263     }
14264
14265     // potentially pre-authorize
14266     oauth.options(o);
14267
14268     return oauth;
14269 };
14270
14271 },{"ohauth":2,"store":3,"xtend":4}],3:[function(require,module,exports){
14272 (function(global){;(function(win){
14273         var store = {},
14274                 doc = win.document,
14275                 localStorageName = 'localStorage',
14276                 storage
14277
14278         store.disabled = false
14279         store.set = function(key, value) {}
14280         store.get = function(key) {}
14281         store.remove = function(key) {}
14282         store.clear = function() {}
14283         store.transact = function(key, defaultVal, transactionFn) {
14284                 var val = store.get(key)
14285                 if (transactionFn == null) {
14286                         transactionFn = defaultVal
14287                         defaultVal = null
14288                 }
14289                 if (typeof val == 'undefined') { val = defaultVal || {} }
14290                 transactionFn(val)
14291                 store.set(key, val)
14292         }
14293         store.getAll = function() {}
14294         store.forEach = function() {}
14295
14296         store.serialize = function(value) {
14297                 return JSON.stringify(value)
14298         }
14299         store.deserialize = function(value) {
14300                 if (typeof value != 'string') { return undefined }
14301                 try { return JSON.parse(value) }
14302                 catch(e) { return value || undefined }
14303         }
14304
14305         // Functions to encapsulate questionable FireFox 3.6.13 behavior
14306         // when about.config::dom.storage.enabled === false
14307         // See https://github.com/marcuswestin/store.js/issues#issue/13
14308         function isLocalStorageNameSupported() {
14309                 try { return (localStorageName in win && win[localStorageName]) }
14310                 catch(err) { return false }
14311         }
14312
14313         if (isLocalStorageNameSupported()) {
14314                 storage = win[localStorageName]
14315                 store.set = function(key, val) {
14316                         if (val === undefined) { return store.remove(key) }
14317                         storage.setItem(key, store.serialize(val))
14318                         return val
14319                 }
14320                 store.get = function(key) { return store.deserialize(storage.getItem(key)) }
14321                 store.remove = function(key) { storage.removeItem(key) }
14322                 store.clear = function() { storage.clear() }
14323                 store.getAll = function() {
14324                         var ret = {}
14325                         store.forEach(function(key, val) {
14326                                 ret[key] = val
14327                         })
14328                         return ret
14329                 }
14330                 store.forEach = function(callback) {
14331                         for (var i=0; i<storage.length; i++) {
14332                                 var key = storage.key(i)
14333                                 callback(key, store.get(key))
14334                         }
14335                 }
14336         } else if (doc.documentElement.addBehavior) {
14337                 var storageOwner,
14338                         storageContainer
14339                 // Since #userData storage applies only to specific paths, we need to
14340                 // somehow link our data to a specific path.  We choose /favicon.ico
14341                 // as a pretty safe option, since all browsers already make a request to
14342                 // this URL anyway and being a 404 will not hurt us here.  We wrap an
14343                 // iframe pointing to the favicon in an ActiveXObject(htmlfile) object
14344                 // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)
14345                 // since the iframe access rules appear to allow direct access and
14346                 // manipulation of the document element, even for a 404 page.  This
14347                 // document can be used instead of the current document (which would
14348                 // have been limited to the current path) to perform #userData storage.
14349                 try {
14350                         storageContainer = new ActiveXObject('htmlfile')
14351                         storageContainer.open()
14352                         storageContainer.write('<s' + 'cript>document.w=window</s' + 'cript><iframe src="/favicon.ico"></iframe>')
14353                         storageContainer.close()
14354                         storageOwner = storageContainer.w.frames[0].document
14355                         storage = storageOwner.createElement('div')
14356                 } catch(e) {
14357                         // somehow ActiveXObject instantiation failed (perhaps some special
14358                         // security settings or otherwse), fall back to per-path storage
14359                         storage = doc.createElement('div')
14360                         storageOwner = doc.body
14361                 }
14362                 function withIEStorage(storeFunction) {
14363                         return function() {
14364                                 var args = Array.prototype.slice.call(arguments, 0)
14365                                 args.unshift(storage)
14366                                 // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
14367                                 // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
14368                                 storageOwner.appendChild(storage)
14369                                 storage.addBehavior('#default#userData')
14370                                 storage.load(localStorageName)
14371                                 var result = storeFunction.apply(store, args)
14372                                 storageOwner.removeChild(storage)
14373                                 return result
14374                         }
14375                 }
14376
14377                 // In IE7, keys may not contain special chars. See all of https://github.com/marcuswestin/store.js/issues/40
14378                 var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g")
14379                 function ieKeyFix(key) {
14380                         return key.replace(forbiddenCharsRegex, '___')
14381                 }
14382                 store.set = withIEStorage(function(storage, key, val) {
14383                         key = ieKeyFix(key)
14384                         if (val === undefined) { return store.remove(key) }
14385                         storage.setAttribute(key, store.serialize(val))
14386                         storage.save(localStorageName)
14387                         return val
14388                 })
14389                 store.get = withIEStorage(function(storage, key) {
14390                         key = ieKeyFix(key)
14391                         return store.deserialize(storage.getAttribute(key))
14392                 })
14393                 store.remove = withIEStorage(function(storage, key) {
14394                         key = ieKeyFix(key)
14395                         storage.removeAttribute(key)
14396                         storage.save(localStorageName)
14397                 })
14398                 store.clear = withIEStorage(function(storage) {
14399                         var attributes = storage.XMLDocument.documentElement.attributes
14400                         storage.load(localStorageName)
14401                         for (var i=0, attr; attr=attributes[i]; i++) {
14402                                 storage.removeAttribute(attr.name)
14403                         }
14404                         storage.save(localStorageName)
14405                 })
14406                 store.getAll = function(storage) {
14407                         var ret = {}
14408                         store.forEach(function(key, val) {
14409                                 ret[key] = val
14410                         })
14411                         return ret
14412                 }
14413                 store.forEach = withIEStorage(function(storage, callback) {
14414                         var attributes = storage.XMLDocument.documentElement.attributes
14415                         for (var i=0, attr; attr=attributes[i]; ++i) {
14416                                 callback(attr.name, store.deserialize(storage.getAttribute(attr.name)))
14417                         }
14418                 })
14419         }
14420
14421         try {
14422                 var testKey = '__storejs__'
14423                 store.set(testKey, testKey)
14424                 if (store.get(testKey) != testKey) { store.disabled = true }
14425                 store.remove(testKey)
14426         } catch(e) {
14427                 store.disabled = true
14428         }
14429         store.enabled = !store.disabled
14430         
14431         if (typeof module != 'undefined' && module.exports) { module.exports = store }
14432         else if (typeof define === 'function' && define.amd) { define(store) }
14433         else { win.store = store }
14434         
14435 })(this.window || global);
14436
14437 })(window)
14438 },{}],5:[function(require,module,exports){
14439 module.exports = hasKeys
14440
14441 function hasKeys(source) {
14442     return source !== null &&
14443         (typeof source === "object" ||
14444         typeof source === "function")
14445 }
14446
14447 },{}],4:[function(require,module,exports){
14448 var Keys = require("object-keys")
14449 var hasKeys = require("./has-keys")
14450
14451 module.exports = extend
14452
14453 function extend() {
14454     var target = {}
14455
14456     for (var i = 0; i < arguments.length; i++) {
14457         var source = arguments[i]
14458
14459         if (!hasKeys(source)) {
14460             continue
14461         }
14462
14463         var keys = Keys(source)
14464
14465         for (var j = 0; j < keys.length; j++) {
14466             var name = keys[j]
14467             target[name] = source[name]
14468         }
14469     }
14470
14471     return target
14472 }
14473
14474 },{"./has-keys":5,"object-keys":6}],7:[function(require,module,exports){
14475 (function(global){/**
14476  * jsHashes - A fast and independent hashing library pure JavaScript implemented (ES3 compliant) for both server and client side
14477  * 
14478  * @class Hashes
14479  * @author Tomas Aparicio <tomas@rijndael-project.com>
14480  * @license New BSD (see LICENSE file)
14481  * @version 1.0.4
14482  *
14483  * Algorithms specification:
14484  *
14485  * MD5 <http://www.ietf.org/rfc/rfc1321.txt>
14486  * RIPEMD-160 <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
14487  * SHA1   <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14488  * SHA256 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14489  * SHA512 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14490  * HMAC <http://www.ietf.org/rfc/rfc2104.txt>
14491  *
14492  */
14493 (function(){
14494   var Hashes;
14495   
14496   // private helper methods
14497   function utf8Encode(str) {
14498     var  x, y, output = '', i = -1, l;
14499     
14500     if (str && str.length) {
14501       l = str.length;
14502       while ((i+=1) < l) {
14503         /* Decode utf-16 surrogate pairs */
14504         x = str.charCodeAt(i);
14505         y = i + 1 < l ? str.charCodeAt(i + 1) : 0;
14506         if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
14507             x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
14508             i += 1;
14509         }
14510         /* Encode output as utf-8 */
14511         if (x <= 0x7F) {
14512             output += String.fromCharCode(x);
14513         } else if (x <= 0x7FF) {
14514             output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
14515                         0x80 | ( x & 0x3F));
14516         } else if (x <= 0xFFFF) {
14517             output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
14518                         0x80 | ((x >>> 6 ) & 0x3F),
14519                         0x80 | ( x & 0x3F));
14520         } else if (x <= 0x1FFFFF) {
14521             output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
14522                         0x80 | ((x >>> 12) & 0x3F),
14523                         0x80 | ((x >>> 6 ) & 0x3F),
14524                         0x80 | ( x & 0x3F));
14525         }
14526       }
14527     }
14528     return output;
14529   }
14530   
14531   function utf8Decode(str) {
14532     var i, ac, c1, c2, c3, arr = [], l;
14533     i = ac = c1 = c2 = c3 = 0;
14534     
14535     if (str && str.length) {
14536       l = str.length;
14537       str += '';
14538     
14539       while (i < l) {
14540           c1 = str.charCodeAt(i);
14541           ac += 1;
14542           if (c1 < 128) {
14543               arr[ac] = String.fromCharCode(c1);
14544               i+=1;
14545           } else if (c1 > 191 && c1 < 224) {
14546               c2 = str.charCodeAt(i + 1);
14547               arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
14548               i += 2;
14549           } else {
14550               c2 = str.charCodeAt(i + 1);
14551               c3 = str.charCodeAt(i + 2);
14552               arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
14553               i += 3;
14554           }
14555       }
14556     }
14557     return arr.join('');
14558   }
14559
14560   /**
14561    * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14562    * to work around bugs in some JS interpreters.
14563    */
14564   function safe_add(x, y) {
14565     var lsw = (x & 0xFFFF) + (y & 0xFFFF),
14566         msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14567     return (msw << 16) | (lsw & 0xFFFF);
14568   }
14569
14570   /**
14571    * Bitwise rotate a 32-bit number to the left.
14572    */
14573   function bit_rol(num, cnt) {
14574     return (num << cnt) | (num >>> (32 - cnt));
14575   }
14576
14577   /**
14578    * Convert a raw string to a hex string
14579    */
14580   function rstr2hex(input, hexcase) {
14581     var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',
14582         output = '', x, i = 0, l = input.length;
14583     for (; i < l; i+=1) {
14584       x = input.charCodeAt(i);
14585       output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);
14586     }
14587     return output;
14588   }
14589
14590   /**
14591    * Encode a string as utf-16
14592    */
14593   function str2rstr_utf16le(input) {
14594     var i, l = input.length, output = '';
14595     for (i = 0; i < l; i+=1) {
14596       output += String.fromCharCode( input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);
14597     }
14598     return output;
14599   }
14600
14601   function str2rstr_utf16be(input) {
14602     var i, l = input.length, output = '';
14603     for (i = 0; i < l; i+=1) {
14604       output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);
14605     }
14606     return output;
14607   }
14608
14609   /**
14610    * Convert an array of big-endian words to a string
14611    */
14612   function binb2rstr(input) {
14613     var i, l = input.length * 32, output = '';
14614     for (i = 0; i < l; i += 8) {
14615         output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);
14616     }
14617     return output;
14618   }
14619
14620   /**
14621    * Convert an array of little-endian words to a string
14622    */
14623   function binl2rstr(input) {
14624     var i, l = input.length * 32, output = '';
14625     for (i = 0;i < l; i += 8) {
14626       output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
14627     }
14628     return output;
14629   }
14630
14631   /**
14632    * Convert a raw string to an array of little-endian words
14633    * Characters >255 have their high-byte silently ignored.
14634    */
14635   function rstr2binl(input) {
14636     var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14637     for (i = 0; i < lo; i+=1) {
14638       output[i] = 0;
14639     }
14640     for (i = 0; i < l; i += 8) {
14641       output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
14642     }
14643     return output;
14644   }
14645   
14646   /**
14647    * Convert a raw string to an array of big-endian words 
14648    * Characters >255 have their high-byte silently ignored.
14649    */
14650    function rstr2binb(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) << (24 - i % 32);
14657         }
14658       return output;
14659    }
14660
14661   /**
14662    * Convert a raw string to an arbitrary string encoding
14663    */
14664   function rstr2any(input, encoding) {
14665     var divisor = encoding.length,
14666         remainders = Array(),
14667         i, q, x, ld, quotient, dividend, output, full_length;
14668   
14669     /* Convert to an array of 16-bit big-endian values, forming the dividend */
14670     dividend = Array(Math.ceil(input.length / 2));
14671     ld = dividend.length;
14672     for (i = 0; i < ld; i+=1) {
14673       dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
14674     }
14675   
14676     /**
14677      * Repeatedly perform a long division. The binary array forms the dividend,
14678      * the length of the encoding is the divisor. Once computed, the quotient
14679      * forms the dividend for the next step. We stop when the dividend is zerHashes.
14680      * All remainders are stored for later use.
14681      */
14682     while(dividend.length > 0) {
14683       quotient = Array();
14684       x = 0;
14685       for (i = 0; i < dividend.length; i+=1) {
14686         x = (x << 16) + dividend[i];
14687         q = Math.floor(x / divisor);
14688         x -= q * divisor;
14689         if (quotient.length > 0 || q > 0) {
14690           quotient[quotient.length] = q;
14691         }
14692       }
14693       remainders[remainders.length] = x;
14694       dividend = quotient;
14695     }
14696   
14697     /* Convert the remainders to the output string */
14698     output = '';
14699     for (i = remainders.length - 1; i >= 0; i--) {
14700       output += encoding.charAt(remainders[i]);
14701     }
14702   
14703     /* Append leading zero equivalents */
14704     full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
14705     for (i = output.length; i < full_length; i+=1) {
14706       output = encoding[0] + output;
14707     }
14708     return output;
14709   }
14710
14711   /**
14712    * Convert a raw string to a base-64 string
14713    */
14714   function rstr2b64(input, b64pad) {
14715     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14716         output = '',
14717         len = input.length, i, j, triplet;
14718     b64pad= b64pad || '=';
14719     for (i = 0; i < len; i += 3) {
14720       triplet = (input.charCodeAt(i) << 16)
14721             | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14722             | (i + 2 < len ? input.charCodeAt(i+2)      : 0);
14723       for (j = 0; j < 4; j+=1) {
14724         if (i * 8 + j * 6 > input.length * 8) { 
14725           output += b64pad; 
14726         } else { 
14727           output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); 
14728         }
14729        }
14730     }
14731     return output;
14732   }
14733
14734   Hashes = {
14735   /**  
14736    * @property {String} version
14737    * @readonly
14738    */
14739   VERSION : '1.0.3',
14740   /**
14741    * @member Hashes
14742    * @class Base64
14743    * @constructor
14744    */
14745   Base64 : function () {
14746     // private properties
14747     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14748         pad = '=', // default pad according with the RFC standard
14749         url = false, // URL encoding support @todo
14750         utf8 = true; // by default enable UTF-8 support encoding
14751
14752     // public method for encoding
14753     this.encode = function (input) {
14754       var i, j, triplet,
14755           output = '', 
14756           len = input.length;
14757
14758       pad = pad || '=';
14759       input = (utf8) ? utf8Encode(input) : input;
14760
14761       for (i = 0; i < len; i += 3) {
14762         triplet = (input.charCodeAt(i) << 16)
14763               | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14764               | (i + 2 < len ? input.charCodeAt(i+2) : 0);
14765         for (j = 0; j < 4; j+=1) {
14766           if (i * 8 + j * 6 > len * 8) {
14767               output += pad;
14768           } else {
14769               output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
14770           }
14771         }
14772       }
14773       return output;    
14774     };
14775
14776     // public method for decoding
14777     this.decode = function (input) {
14778       // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
14779       var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,
14780         dec = '',
14781         arr = [];
14782       if (!input) { return input; }
14783
14784       i = ac = 0;
14785       input = input.replace(new RegExp('\\'+pad,'gi'),''); // use '='
14786       //input += '';
14787
14788       do { // unpack four hexets into three octets using index points in b64
14789         h1 = tab.indexOf(input.charAt(i+=1));
14790         h2 = tab.indexOf(input.charAt(i+=1));
14791         h3 = tab.indexOf(input.charAt(i+=1));
14792         h4 = tab.indexOf(input.charAt(i+=1));
14793
14794         bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
14795
14796         o1 = bits >> 16 & 0xff;
14797         o2 = bits >> 8 & 0xff;
14798         o3 = bits & 0xff;
14799         ac += 1;
14800
14801         if (h3 === 64) {
14802           arr[ac] = String.fromCharCode(o1);
14803         } else if (h4 === 64) {
14804           arr[ac] = String.fromCharCode(o1, o2);
14805         } else {
14806           arr[ac] = String.fromCharCode(o1, o2, o3);
14807         }
14808       } while (i < input.length);
14809
14810       dec = arr.join('');
14811       dec = (utf8) ? utf8Decode(dec) : dec;
14812
14813       return dec;
14814     };
14815
14816     // set custom pad string
14817     this.setPad = function (str) {
14818         pad = str || pad;
14819         return this;
14820     };
14821     // set custom tab string characters
14822     this.setTab = function (str) {
14823         tab = str || tab;
14824         return this;
14825     };
14826     this.setUTF8 = function (bool) {
14827         if (typeof bool === 'boolean') {
14828           utf8 = bool;
14829         }
14830         return this;
14831     };
14832   },
14833
14834   /**
14835    * CRC-32 calculation
14836    * @member Hashes
14837    * @method CRC32
14838    * @static
14839    * @param {String} str Input String
14840    * @return {String}
14841    */
14842   CRC32 : function (str) {
14843     var crc = 0, x = 0, y = 0, table, i, iTop;
14844     str = utf8Encode(str);
14845         
14846     table = [ 
14847         '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',
14848         '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',
14849         '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',
14850         '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',
14851         'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',
14852         '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',
14853         'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',
14854         '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',
14855         'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',
14856         '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',
14857         'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',
14858         '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',
14859         'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',
14860         '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',
14861         '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',
14862         '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',
14863         '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',
14864         'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ', 
14865         '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',
14866         'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',
14867         '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',
14868         'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',
14869         '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',
14870         'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',
14871         '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',
14872         'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'
14873     ].join('');
14874
14875     crc = crc ^ (-1);
14876     for (i = 0, iTop = str.length; i < iTop; i+=1 ) {
14877         y = ( crc ^ str.charCodeAt( i ) ) & 0xFF;
14878         x = '0x' + table.substr( y * 9, 8 );
14879         crc = ( crc >>> 8 ) ^ x;
14880     }
14881     // always return a positive number (that's what >>> 0 does)
14882     return (crc ^ (-1)) >>> 0;
14883   },
14884   /**
14885    * @member Hashes
14886    * @class MD5
14887    * @constructor
14888    * @param {Object} [config]
14889    * 
14890    * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14891    * Digest Algorithm, as defined in RFC 1321.
14892    * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
14893    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14894    * See <http://pajhome.org.uk/crypt/md5> for more infHashes.
14895    */
14896   MD5 : function (options) {  
14897     /**
14898      * Private config properties. You may need to tweak these to be compatible with
14899      * the server-side, but the defaults work in most cases.
14900      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
14901      */
14902     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
14903         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
14904         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
14905
14906     // privileged (public) methods 
14907     this.hex = function (s) { 
14908       return rstr2hex(rstr(s, utf8), hexcase);
14909     };
14910     this.b64 = function (s) { 
14911       return rstr2b64(rstr(s), b64pad);
14912     };
14913     this.any = function(s, e) { 
14914       return rstr2any(rstr(s, utf8), e); 
14915     };
14916     this.hex_hmac = function (k, d) { 
14917       return rstr2hex(rstr_hmac(k, d), hexcase); 
14918     };
14919     this.b64_hmac = function (k, d) { 
14920       return rstr2b64(rstr_hmac(k,d), b64pad); 
14921     };
14922     this.any_hmac = function (k, d, e) { 
14923       return rstr2any(rstr_hmac(k, d), e); 
14924     };
14925     /**
14926      * Perform a simple self-test to see if the VM is working
14927      * @return {String} Hexadecimal hash sample
14928      */
14929     this.vm_test = function () {
14930       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
14931     };
14932     /** 
14933      * Enable/disable uppercase hexadecimal returned string 
14934      * @param {Boolean} 
14935      * @return {Object} this
14936      */ 
14937     this.setUpperCase = function (a) {
14938       if (typeof a === 'boolean' ) {
14939         hexcase = a;
14940       }
14941       return this;
14942     };
14943     /** 
14944      * Defines a base64 pad string 
14945      * @param {String} Pad
14946      * @return {Object} this
14947      */ 
14948     this.setPad = function (a) {
14949       b64pad = a || b64pad;
14950       return this;
14951     };
14952     /** 
14953      * Defines a base64 pad string 
14954      * @param {Boolean} 
14955      * @return {Object} [this]
14956      */ 
14957     this.setUTF8 = function (a) {
14958       if (typeof a === 'boolean') { 
14959         utf8 = a;
14960       }
14961       return this;
14962     };
14963
14964     // private methods
14965
14966     /**
14967      * Calculate the MD5 of a raw string
14968      */
14969     function rstr(s) {
14970       s = (utf8) ? utf8Encode(s): s;
14971       return binl2rstr(binl(rstr2binl(s), s.length * 8));
14972     }
14973     
14974     /**
14975      * Calculate the HMAC-MD5, of a key and some data (raw strings)
14976      */
14977     function rstr_hmac(key, data) {
14978       var bkey, ipad, opad, hash, i;
14979
14980       key = (utf8) ? utf8Encode(key) : key;
14981       data = (utf8) ? utf8Encode(data) : data;
14982       bkey = rstr2binl(key);
14983       if (bkey.length > 16) { 
14984         bkey = binl(bkey, key.length * 8); 
14985       }
14986
14987       ipad = Array(16), opad = Array(16); 
14988       for (i = 0; i < 16; i+=1) {
14989           ipad[i] = bkey[i] ^ 0x36363636;
14990           opad[i] = bkey[i] ^ 0x5C5C5C5C;
14991       }
14992       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
14993       return binl2rstr(binl(opad.concat(hash), 512 + 128));
14994     }
14995
14996     /**
14997      * Calculate the MD5 of an array of little-endian words, and a bit length.
14998      */
14999     function binl(x, len) {
15000       var i, olda, oldb, oldc, oldd,
15001           a =  1732584193,
15002           b = -271733879,
15003           c = -1732584194,
15004           d =  271733878;
15005         
15006       /* append padding */
15007       x[len >> 5] |= 0x80 << ((len) % 32);
15008       x[(((len + 64) >>> 9) << 4) + 14] = len;
15009
15010       for (i = 0; i < x.length; i += 16) {
15011         olda = a;
15012         oldb = b;
15013         oldc = c;
15014         oldd = d;
15015
15016         a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
15017         d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
15018         c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
15019         b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
15020         a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
15021         d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
15022         c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
15023         b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
15024         a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
15025         d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
15026         c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
15027         b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
15028         a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
15029         d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
15030         c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
15031         b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
15032
15033         a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
15034         d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
15035         c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
15036         b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
15037         a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
15038         d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
15039         c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
15040         b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
15041         a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
15042         d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
15043         c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
15044         b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
15045         a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
15046         d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
15047         c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
15048         b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
15049
15050         a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
15051         d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
15052         c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
15053         b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
15054         a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
15055         d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
15056         c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
15057         b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
15058         a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
15059         d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
15060         c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
15061         b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
15062         a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
15063         d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
15064         c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
15065         b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
15066
15067         a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
15068         d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
15069         c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
15070         b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
15071         a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
15072         d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
15073         c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
15074         b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
15075         a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
15076         d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
15077         c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
15078         b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
15079         a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
15080         d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
15081         c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
15082         b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
15083
15084         a = safe_add(a, olda);
15085         b = safe_add(b, oldb);
15086         c = safe_add(c, oldc);
15087         d = safe_add(d, oldd);
15088       }
15089       return Array(a, b, c, d);
15090     }
15091
15092     /**
15093      * These functions implement the four basic operations the algorithm uses.
15094      */
15095     function md5_cmn(q, a, b, x, s, t) {
15096       return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
15097     }
15098     function md5_ff(a, b, c, d, x, s, t) {
15099       return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
15100     }
15101     function md5_gg(a, b, c, d, x, s, t) {
15102       return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
15103     }
15104     function md5_hh(a, b, c, d, x, s, t) {
15105       return md5_cmn(b ^ c ^ d, a, b, x, s, t);
15106     }
15107     function md5_ii(a, b, c, d, x, s, t) {
15108       return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
15109     }
15110   },
15111   /**
15112    * @member Hashes
15113    * @class Hashes.SHA1
15114    * @param {Object} [config]
15115    * @constructor
15116    * 
15117    * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1
15118    * Version 2.2 Copyright Paul Johnston 2000 - 2009.
15119    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15120    * See http://pajhome.org.uk/crypt/md5 for details.
15121    */
15122   SHA1 : function (options) {
15123    /**
15124      * Private config properties. You may need to tweak these to be compatible with
15125      * the server-side, but the defaults work in most cases.
15126      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
15127      */
15128     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
15129         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
15130         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
15131
15132     // public methods
15133     this.hex = function (s) { 
15134         return rstr2hex(rstr(s, utf8), hexcase); 
15135     };
15136     this.b64 = function (s) { 
15137         return rstr2b64(rstr(s, utf8), b64pad);
15138     };
15139     this.any = function (s, e) { 
15140         return rstr2any(rstr(s, utf8), e);
15141     };
15142     this.hex_hmac = function (k, d) {
15143         return rstr2hex(rstr_hmac(k, d));
15144     };
15145     this.b64_hmac = function (k, d) { 
15146         return rstr2b64(rstr_hmac(k, d), b64pad); 
15147     };
15148     this.any_hmac = function (k, d, e) { 
15149         return rstr2any(rstr_hmac(k, d), e);
15150     };
15151     /**
15152      * Perform a simple self-test to see if the VM is working
15153      * @return {String} Hexadecimal hash sample
15154      * @public
15155      */
15156     this.vm_test = function () {
15157       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15158     };
15159     /** 
15160      * @description Enable/disable uppercase hexadecimal returned string 
15161      * @param {boolean} 
15162      * @return {Object} this
15163      * @public
15164      */ 
15165     this.setUpperCase = function (a) {
15166         if (typeof a === 'boolean') {
15167         hexcase = a;
15168       }
15169         return this;
15170     };
15171     /** 
15172      * @description Defines a base64 pad string 
15173      * @param {string} Pad
15174      * @return {Object} this
15175      * @public
15176      */ 
15177     this.setPad = function (a) {
15178       b64pad = a || b64pad;
15179         return this;
15180     };
15181     /** 
15182      * @description Defines a base64 pad string 
15183      * @param {boolean} 
15184      * @return {Object} this
15185      * @public
15186      */ 
15187     this.setUTF8 = function (a) {
15188         if (typeof a === 'boolean') {
15189         utf8 = a;
15190       }
15191         return this;
15192     };
15193
15194     // private methods
15195
15196     /**
15197          * Calculate the SHA-512 of a raw string
15198          */
15199         function rstr(s) {
15200       s = (utf8) ? utf8Encode(s) : s;
15201       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15202         }
15203
15204     /**
15205      * Calculate the HMAC-SHA1 of a key and some data (raw strings)
15206      */
15207     function rstr_hmac(key, data) {
15208         var bkey, ipad, opad, i, hash;
15209         key = (utf8) ? utf8Encode(key) : key;
15210         data = (utf8) ? utf8Encode(data) : data;
15211         bkey = rstr2binb(key);
15212
15213         if (bkey.length > 16) {
15214         bkey = binb(bkey, key.length * 8);
15215       }
15216         ipad = Array(16), opad = Array(16);
15217         for (i = 0; i < 16; i+=1) {
15218                 ipad[i] = bkey[i] ^ 0x36363636;
15219                 opad[i] = bkey[i] ^ 0x5C5C5C5C;
15220         }
15221         hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15222         return binb2rstr(binb(opad.concat(hash), 512 + 160));
15223     }
15224
15225     /**
15226      * Calculate the SHA-1 of an array of big-endian words, and a bit length
15227      */
15228     function binb(x, len) {
15229       var i, j, t, olda, oldb, oldc, oldd, olde,
15230           w = Array(80),
15231           a =  1732584193,
15232           b = -271733879,
15233           c = -1732584194,
15234           d =  271733878,
15235           e = -1009589776;
15236
15237       /* append padding */
15238       x[len >> 5] |= 0x80 << (24 - len % 32);
15239       x[((len + 64 >> 9) << 4) + 15] = len;
15240
15241       for (i = 0; i < x.length; i += 16) {
15242         olda = a,
15243         oldb = b;
15244         oldc = c;
15245         oldd = d;
15246         olde = e;
15247       
15248         for (j = 0; j < 80; j+=1)       {
15249           if (j < 16) { 
15250             w[j] = x[i + j]; 
15251           } else { 
15252             w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); 
15253           }
15254           t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),
15255                                            safe_add(safe_add(e, w[j]), sha1_kt(j)));
15256           e = d;
15257           d = c;
15258           c = bit_rol(b, 30);
15259           b = a;
15260           a = t;
15261         }
15262
15263         a = safe_add(a, olda);
15264         b = safe_add(b, oldb);
15265         c = safe_add(c, oldc);
15266         d = safe_add(d, oldd);
15267         e = safe_add(e, olde);
15268       }
15269       return Array(a, b, c, d, e);
15270     }
15271
15272     /**
15273      * Perform the appropriate triplet combination function for the current
15274      * iteration
15275      */
15276     function sha1_ft(t, b, c, d) {
15277       if (t < 20) { return (b & c) | ((~b) & d); }
15278       if (t < 40) { return b ^ c ^ d; }
15279       if (t < 60) { return (b & c) | (b & d) | (c & d); }
15280       return b ^ c ^ d;
15281     }
15282
15283     /**
15284      * Determine the appropriate additive constant for the current iteration
15285      */
15286     function sha1_kt(t) {
15287       return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
15288                  (t < 60) ? -1894007588 : -899497514;
15289     }
15290   },
15291   /**
15292    * @class Hashes.SHA256
15293    * @param {config}
15294    * 
15295    * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2
15296    * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.
15297    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15298    * See http://pajhome.org.uk/crypt/md5 for details.
15299    * Also http://anmar.eu.org/projects/jssha2/
15300    */
15301   SHA256 : function (options) {
15302     /**
15303      * Private properties configuration variables. You may need to tweak these to be compatible with
15304      * the server-side, but the defaults work in most cases.
15305      * @see this.setUpperCase() method
15306      * @see this.setPad() method
15307      */
15308     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase  */
15309               b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', /* base-64 pad character. Default '=' for strict RFC compliance   */
15310               utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15311               sha256_K;
15312
15313     /* privileged (public) methods */
15314     this.hex = function (s) { 
15315       return rstr2hex(rstr(s, utf8)); 
15316     };
15317     this.b64 = function (s) { 
15318       return rstr2b64(rstr(s, utf8), b64pad);
15319     };
15320     this.any = function (s, e) { 
15321       return rstr2any(rstr(s, utf8), e); 
15322     };
15323     this.hex_hmac = function (k, d) { 
15324       return rstr2hex(rstr_hmac(k, d)); 
15325     };
15326     this.b64_hmac = function (k, d) { 
15327       return rstr2b64(rstr_hmac(k, d), b64pad);
15328     };
15329     this.any_hmac = function (k, d, e) { 
15330       return rstr2any(rstr_hmac(k, d), e); 
15331     };
15332     /**
15333      * Perform a simple self-test to see if the VM is working
15334      * @return {String} Hexadecimal hash sample
15335      * @public
15336      */
15337     this.vm_test = function () {
15338       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15339     };
15340     /** 
15341      * Enable/disable uppercase hexadecimal returned string 
15342      * @param {boolean} 
15343      * @return {Object} this
15344      * @public
15345      */ 
15346     this.setUpperCase = function (a) {
15347       if (typeof a === 'boolean') { 
15348         hexcase = a;
15349       }
15350       return this;
15351     };
15352     /** 
15353      * @description Defines a base64 pad string 
15354      * @param {string} Pad
15355      * @return {Object} this
15356      * @public
15357      */ 
15358     this.setPad = function (a) {
15359       b64pad = a || b64pad;
15360       return this;
15361     };
15362     /** 
15363      * Defines a base64 pad string 
15364      * @param {boolean} 
15365      * @return {Object} this
15366      * @public
15367      */ 
15368     this.setUTF8 = function (a) {
15369       if (typeof a === 'boolean') {
15370         utf8 = a;
15371       }
15372       return this;
15373     };
15374     
15375     // private methods
15376
15377     /**
15378      * Calculate the SHA-512 of a raw string
15379      */
15380     function rstr(s, utf8) {
15381       s = (utf8) ? utf8Encode(s) : s;
15382       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15383     }
15384
15385     /**
15386      * Calculate the HMAC-sha256 of a key and some data (raw strings)
15387      */
15388     function rstr_hmac(key, data) {
15389       key = (utf8) ? utf8Encode(key) : key;
15390       data = (utf8) ? utf8Encode(data) : data;
15391       var hash, i = 0,
15392           bkey = rstr2binb(key), 
15393           ipad = Array(16), 
15394           opad = Array(16);
15395
15396       if (bkey.length > 16) { bkey = binb(bkey, key.length * 8); }
15397       
15398       for (; i < 16; i+=1) {
15399         ipad[i] = bkey[i] ^ 0x36363636;
15400         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15401       }
15402       
15403       hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15404       return binb2rstr(binb(opad.concat(hash), 512 + 256));
15405     }
15406     
15407     /*
15408      * Main sha256 function, with its support functions
15409      */
15410     function sha256_S (X, n) {return ( X >>> n ) | (X << (32 - n));}
15411     function sha256_R (X, n) {return ( X >>> n );}
15412     function sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
15413     function sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
15414     function sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}
15415     function sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}
15416     function sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}
15417     function sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}
15418     function sha256_Sigma0512(x) {return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));}
15419     function sha256_Sigma1512(x) {return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));}
15420     function sha256_Gamma0512(x) {return (sha256_S(x, 1)  ^ sha256_S(x, 8) ^ sha256_R(x, 7));}
15421     function sha256_Gamma1512(x) {return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));}
15422     
15423     sha256_K = [
15424       1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,
15425       -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,
15426       1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,
15427       264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,
15428       -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,
15429       113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,
15430       1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,
15431       -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,
15432       430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,
15433       1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,
15434       -1866530822, -1538233109, -1090935817, -965641998
15435     ];
15436     
15437     function binb(m, l) {
15438       var HASH = [1779033703, -1150833019, 1013904242, -1521486534,
15439                  1359893119, -1694144372, 528734635, 1541459225];
15440       var W = new Array(64);
15441       var a, b, c, d, e, f, g, h;
15442       var i, j, T1, T2;
15443     
15444       /* append padding */
15445       m[l >> 5] |= 0x80 << (24 - l % 32);
15446       m[((l + 64 >> 9) << 4) + 15] = l;
15447     
15448       for (i = 0; i < m.length; i += 16)
15449       {
15450       a = HASH[0];
15451       b = HASH[1];
15452       c = HASH[2];
15453       d = HASH[3];
15454       e = HASH[4];
15455       f = HASH[5];
15456       g = HASH[6];
15457       h = HASH[7];
15458     
15459       for (j = 0; j < 64; j+=1)
15460       {
15461         if (j < 16) { 
15462           W[j] = m[j + i];
15463         } else { 
15464           W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),
15465                           sha256_Gamma0256(W[j - 15])), W[j - 16]);
15466         }
15467     
15468         T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),
15469                                   sha256_K[j]), W[j]);
15470         T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));
15471         h = g;
15472         g = f;
15473         f = e;
15474         e = safe_add(d, T1);
15475         d = c;
15476         c = b;
15477         b = a;
15478         a = safe_add(T1, T2);
15479       }
15480     
15481       HASH[0] = safe_add(a, HASH[0]);
15482       HASH[1] = safe_add(b, HASH[1]);
15483       HASH[2] = safe_add(c, HASH[2]);
15484       HASH[3] = safe_add(d, HASH[3]);
15485       HASH[4] = safe_add(e, HASH[4]);
15486       HASH[5] = safe_add(f, HASH[5]);
15487       HASH[6] = safe_add(g, HASH[6]);
15488       HASH[7] = safe_add(h, HASH[7]);
15489       }
15490       return HASH;
15491     }
15492
15493   },
15494
15495   /**
15496    * @class Hashes.SHA512
15497    * @param {config}
15498    * 
15499    * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2
15500    * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.
15501    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15502    * See http://pajhome.org.uk/crypt/md5 for details. 
15503    */
15504   SHA512 : function (options) {
15505     /**
15506      * Private properties configuration variables. You may need to tweak these to be compatible with
15507      * the server-side, but the defaults work in most cases.
15508      * @see this.setUpperCase() method
15509      * @see this.setPad() method
15510      */
15511     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false , /* hexadecimal output case format. false - lowercase; true - uppercase  */
15512         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15513         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15514         sha512_k;
15515
15516     /* privileged (public) methods */
15517     this.hex = function (s) { 
15518       return rstr2hex(rstr(s)); 
15519     };
15520     this.b64 = function (s) { 
15521       return rstr2b64(rstr(s), b64pad);  
15522     };
15523     this.any = function (s, e) { 
15524       return rstr2any(rstr(s), e);
15525     };
15526     this.hex_hmac = function (k, d) {
15527       return rstr2hex(rstr_hmac(k, d));
15528     };
15529     this.b64_hmac = function (k, d) { 
15530       return rstr2b64(rstr_hmac(k, d), b64pad);
15531     };
15532     this.any_hmac = function (k, d, e) { 
15533       return rstr2any(rstr_hmac(k, d), e);
15534     };
15535     /**
15536      * Perform a simple self-test to see if the VM is working
15537      * @return {String} Hexadecimal hash sample
15538      * @public
15539      */
15540     this.vm_test = function () {
15541       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15542     };
15543     /** 
15544      * @description Enable/disable uppercase hexadecimal returned string 
15545      * @param {boolean} 
15546      * @return {Object} this
15547      * @public
15548      */ 
15549     this.setUpperCase = function (a) {
15550       if (typeof a === 'boolean') {
15551         hexcase = a;
15552       }
15553       return this;
15554     };
15555     /** 
15556      * @description Defines a base64 pad string 
15557      * @param {string} Pad
15558      * @return {Object} this
15559      * @public
15560      */ 
15561     this.setPad = function (a) {
15562       b64pad = a || b64pad;
15563       return this;
15564     };
15565     /** 
15566      * @description Defines a base64 pad string 
15567      * @param {boolean} 
15568      * @return {Object} this
15569      * @public
15570      */ 
15571     this.setUTF8 = function (a) {
15572       if (typeof a === 'boolean') {
15573         utf8 = a;
15574       }
15575       return this;
15576     };
15577
15578     /* private methods */
15579     
15580     /**
15581      * Calculate the SHA-512 of a raw string
15582      */
15583     function rstr(s) {
15584       s = (utf8) ? utf8Encode(s) : s;
15585       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15586     }
15587     /*
15588      * Calculate the HMAC-SHA-512 of a key and some data (raw strings)
15589      */
15590     function rstr_hmac(key, data) {
15591       key = (utf8) ? utf8Encode(key) : key;
15592       data = (utf8) ? utf8Encode(data) : data;
15593       
15594       var hash, i = 0, 
15595           bkey = rstr2binb(key),
15596           ipad = Array(32), opad = Array(32);
15597
15598       if (bkey.length > 32) { bkey = binb(bkey, key.length * 8); }
15599       
15600       for (; i < 32; i+=1) {
15601         ipad[i] = bkey[i] ^ 0x36363636;
15602         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15603       }
15604       
15605       hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);
15606       return binb2rstr(binb(opad.concat(hash), 1024 + 512));
15607     }
15608             
15609     /**
15610      * Calculate the SHA-512 of an array of big-endian dwords, and a bit length
15611      */
15612     function binb(x, len) {
15613       var j, i, l,
15614           W = new Array(80),
15615           hash = new Array(16),
15616           //Initial hash values
15617           H = [
15618             new int64(0x6a09e667, -205731576),
15619             new int64(-1150833019, -2067093701),
15620             new int64(0x3c6ef372, -23791573),
15621             new int64(-1521486534, 0x5f1d36f1),
15622             new int64(0x510e527f, -1377402159),
15623             new int64(-1694144372, 0x2b3e6c1f),
15624             new int64(0x1f83d9ab, -79577749),
15625             new int64(0x5be0cd19, 0x137e2179)
15626           ],
15627           T1 = new int64(0, 0),
15628           T2 = new int64(0, 0),
15629           a = new int64(0,0),
15630           b = new int64(0,0),
15631           c = new int64(0,0),
15632           d = new int64(0,0),
15633           e = new int64(0,0),
15634           f = new int64(0,0),
15635           g = new int64(0,0),
15636           h = new int64(0,0),
15637           //Temporary variables not specified by the document
15638           s0 = new int64(0, 0),
15639           s1 = new int64(0, 0),
15640           Ch = new int64(0, 0),
15641           Maj = new int64(0, 0),
15642           r1 = new int64(0, 0),
15643           r2 = new int64(0, 0),
15644           r3 = new int64(0, 0);
15645
15646       if (sha512_k === undefined) {
15647           //SHA512 constants
15648           sha512_k = [
15649             new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),
15650             new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),
15651             new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),
15652             new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),
15653             new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),
15654             new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),
15655             new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),
15656             new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),
15657             new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),
15658             new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),
15659             new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),
15660             new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),
15661             new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),
15662             new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),
15663             new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),
15664             new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),
15665             new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),
15666             new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),
15667             new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),
15668             new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),
15669             new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),
15670             new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),
15671             new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),
15672             new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),
15673             new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),
15674             new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),
15675             new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),
15676             new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),
15677             new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),
15678             new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),
15679             new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),
15680             new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),
15681             new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),
15682             new int64(-354779690, -840897762), new int64(-176337025, -294727304),
15683             new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),
15684             new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),
15685             new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),
15686             new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),
15687             new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),
15688             new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)
15689           ];
15690       }
15691   
15692       for (i=0; i<80; i+=1) {
15693         W[i] = new int64(0, 0);
15694       }
15695     
15696       // append padding to the source string. The format is described in the FIPS.
15697       x[len >> 5] |= 0x80 << (24 - (len & 0x1f));
15698       x[((len + 128 >> 10)<< 5) + 31] = len;
15699       l = x.length;
15700       for (i = 0; i<l; i+=32) { //32 dwords is the block size
15701         int64copy(a, H[0]);
15702         int64copy(b, H[1]);
15703         int64copy(c, H[2]);
15704         int64copy(d, H[3]);
15705         int64copy(e, H[4]);
15706         int64copy(f, H[5]);
15707         int64copy(g, H[6]);
15708         int64copy(h, H[7]);
15709       
15710         for (j=0; j<16; j+=1) {
15711           W[j].h = x[i + 2*j];
15712           W[j].l = x[i + 2*j + 1];
15713         }
15714       
15715         for (j=16; j<80; j+=1) {
15716           //sigma1
15717           int64rrot(r1, W[j-2], 19);
15718           int64revrrot(r2, W[j-2], 29);
15719           int64shr(r3, W[j-2], 6);
15720           s1.l = r1.l ^ r2.l ^ r3.l;
15721           s1.h = r1.h ^ r2.h ^ r3.h;
15722           //sigma0
15723           int64rrot(r1, W[j-15], 1);
15724           int64rrot(r2, W[j-15], 8);
15725           int64shr(r3, W[j-15], 7);
15726           s0.l = r1.l ^ r2.l ^ r3.l;
15727           s0.h = r1.h ^ r2.h ^ r3.h;
15728       
15729           int64add4(W[j], s1, W[j-7], s0, W[j-16]);
15730         }
15731       
15732         for (j = 0; j < 80; j+=1) {
15733           //Ch
15734           Ch.l = (e.l & f.l) ^ (~e.l & g.l);
15735           Ch.h = (e.h & f.h) ^ (~e.h & g.h);
15736       
15737           //Sigma1
15738           int64rrot(r1, e, 14);
15739           int64rrot(r2, e, 18);
15740           int64revrrot(r3, e, 9);
15741           s1.l = r1.l ^ r2.l ^ r3.l;
15742           s1.h = r1.h ^ r2.h ^ r3.h;
15743       
15744           //Sigma0
15745           int64rrot(r1, a, 28);
15746           int64revrrot(r2, a, 2);
15747           int64revrrot(r3, a, 7);
15748           s0.l = r1.l ^ r2.l ^ r3.l;
15749           s0.h = r1.h ^ r2.h ^ r3.h;
15750       
15751           //Maj
15752           Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);
15753           Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);
15754       
15755           int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);
15756           int64add(T2, s0, Maj);
15757       
15758           int64copy(h, g);
15759           int64copy(g, f);
15760           int64copy(f, e);
15761           int64add(e, d, T1);
15762           int64copy(d, c);
15763           int64copy(c, b);
15764           int64copy(b, a);
15765           int64add(a, T1, T2);
15766         }
15767         int64add(H[0], H[0], a);
15768         int64add(H[1], H[1], b);
15769         int64add(H[2], H[2], c);
15770         int64add(H[3], H[3], d);
15771         int64add(H[4], H[4], e);
15772         int64add(H[5], H[5], f);
15773         int64add(H[6], H[6], g);
15774         int64add(H[7], H[7], h);
15775       }
15776     
15777       //represent the hash as an array of 32-bit dwords
15778       for (i=0; i<8; i+=1) {
15779         hash[2*i] = H[i].h;
15780         hash[2*i + 1] = H[i].l;
15781       }
15782       return hash;
15783     }
15784     
15785     //A constructor for 64-bit numbers
15786     function int64(h, l) {
15787       this.h = h;
15788       this.l = l;
15789       //this.toString = int64toString;
15790     }
15791     
15792     //Copies src into dst, assuming both are 64-bit numbers
15793     function int64copy(dst, src) {
15794       dst.h = src.h;
15795       dst.l = src.l;
15796     }
15797     
15798     //Right-rotates a 64-bit number by shift
15799     //Won't handle cases of shift>=32
15800     //The function revrrot() is for that
15801     function int64rrot(dst, x, shift) {
15802       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15803       dst.h = (x.h >>> shift) | (x.l << (32-shift));
15804     }
15805     
15806     //Reverses the dwords of the source and then rotates right by shift.
15807     //This is equivalent to rotation by 32+shift
15808     function int64revrrot(dst, x, shift) {
15809       dst.l = (x.h >>> shift) | (x.l << (32-shift));
15810       dst.h = (x.l >>> shift) | (x.h << (32-shift));
15811     }
15812     
15813     //Bitwise-shifts right a 64-bit number by shift
15814     //Won't handle shift>=32, but it's never needed in SHA512
15815     function int64shr(dst, x, shift) {
15816       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15817       dst.h = (x.h >>> shift);
15818     }
15819     
15820     //Adds two 64-bit numbers
15821     //Like the original implementation, does not rely on 32-bit operations
15822     function int64add(dst, x, y) {
15823        var w0 = (x.l & 0xffff) + (y.l & 0xffff);
15824        var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);
15825        var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);
15826        var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);
15827        dst.l = (w0 & 0xffff) | (w1 << 16);
15828        dst.h = (w2 & 0xffff) | (w3 << 16);
15829     }
15830     
15831     //Same, except with 4 addends. Works faster than adding them one by one.
15832     function int64add4(dst, a, b, c, d) {
15833        var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);
15834        var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);
15835        var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);
15836        var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);
15837        dst.l = (w0 & 0xffff) | (w1 << 16);
15838        dst.h = (w2 & 0xffff) | (w3 << 16);
15839     }
15840     
15841     //Same, except with 5 addends
15842     function int64add5(dst, a, b, c, d, e) {
15843       var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),
15844           w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),
15845           w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),
15846           w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);
15847        dst.l = (w0 & 0xffff) | (w1 << 16);
15848        dst.h = (w2 & 0xffff) | (w3 << 16);
15849     }
15850   },
15851   /**
15852    * @class Hashes.RMD160
15853    * @constructor
15854    * @param {Object} [config]
15855    * 
15856    * A JavaScript implementation of the RIPEMD-160 Algorithm
15857    * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.
15858    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15859    * See http://pajhome.org.uk/crypt/md5 for details.
15860    * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/
15861    */
15862   RMD160 : function (options) {
15863     /**
15864      * Private properties configuration variables. You may need to tweak these to be compatible with
15865      * the server-side, but the defaults work in most cases.
15866      * @see this.setUpperCase() method
15867      * @see this.setPad() method
15868      */
15869     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,   /* hexadecimal output case format. false - lowercase; true - uppercase  */
15870         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15871         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15872         rmd160_r1 = [
15873            0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
15874            7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,
15875            3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,
15876            1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,
15877            4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13
15878         ],
15879         rmd160_r2 = [
15880            5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,
15881            6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,
15882           15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,
15883            8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,
15884           12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11
15885         ],
15886         rmd160_s1 = [
15887           11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,
15888            7,  6,  8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,
15889           11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,
15890           11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,
15891            9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6
15892         ],
15893         rmd160_s2 = [
15894            8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,
15895            9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,
15896            9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,
15897           15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,
15898            8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11
15899         ];
15900
15901     /* privileged (public) methods */
15902     this.hex = function (s) {
15903       return rstr2hex(rstr(s, utf8)); 
15904     };
15905     this.b64 = function (s) {
15906       return rstr2b64(rstr(s, utf8), b64pad);
15907     };
15908     this.any = function (s, e) { 
15909       return rstr2any(rstr(s, utf8), e);
15910     };
15911     this.hex_hmac = function (k, d) { 
15912       return rstr2hex(rstr_hmac(k, d));
15913     };
15914     this.b64_hmac = function (k, d) { 
15915       return rstr2b64(rstr_hmac(k, d), b64pad);
15916     };
15917     this.any_hmac = function (k, d, e) { 
15918       return rstr2any(rstr_hmac(k, d), e); 
15919     };
15920     /**
15921      * Perform a simple self-test to see if the VM is working
15922      * @return {String} Hexadecimal hash sample
15923      * @public
15924      */
15925     this.vm_test = function () {
15926       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15927     };
15928     /** 
15929      * @description Enable/disable uppercase hexadecimal returned string 
15930      * @param {boolean} 
15931      * @return {Object} this
15932      * @public
15933      */ 
15934     this.setUpperCase = function (a) {
15935       if (typeof a === 'boolean' ) { hexcase = a; }
15936       return this;
15937     };
15938     /** 
15939      * @description Defines a base64 pad string 
15940      * @param {string} Pad
15941      * @return {Object} this
15942      * @public
15943      */ 
15944     this.setPad = function (a) {
15945       if (typeof a !== 'undefined' ) { b64pad = a; }
15946       return this;
15947     };
15948     /** 
15949      * @description Defines a base64 pad string 
15950      * @param {boolean} 
15951      * @return {Object} this
15952      * @public
15953      */ 
15954     this.setUTF8 = function (a) {
15955       if (typeof a === 'boolean') { utf8 = a; }
15956       return this;
15957     };
15958
15959     /* private methods */
15960
15961     /**
15962      * Calculate the rmd160 of a raw string
15963      */
15964     function rstr(s) {
15965       s = (utf8) ? utf8Encode(s) : s;
15966       return binl2rstr(binl(rstr2binl(s), s.length * 8));
15967     }
15968
15969     /**
15970      * Calculate the HMAC-rmd160 of a key and some data (raw strings)
15971      */
15972     function rstr_hmac(key, data) {
15973       key = (utf8) ? utf8Encode(key) : key;
15974       data = (utf8) ? utf8Encode(data) : data;
15975       var i, hash,
15976           bkey = rstr2binl(key),
15977           ipad = Array(16), opad = Array(16);
15978
15979       if (bkey.length > 16) { 
15980         bkey = binl(bkey, key.length * 8); 
15981       }
15982       
15983       for (i = 0; i < 16; i+=1) {
15984         ipad[i] = bkey[i] ^ 0x36363636;
15985         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15986       }
15987       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
15988       return binl2rstr(binl(opad.concat(hash), 512 + 160));
15989     }
15990
15991     /**
15992      * Convert an array of little-endian words to a string
15993      */
15994     function binl2rstr(input) {
15995       var i, output = '', l = input.length * 32;
15996       for (i = 0; i < l; i += 8) {
15997         output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
15998       }
15999       return output;
16000     }
16001
16002     /**
16003      * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.
16004      */
16005     function binl(x, len) {
16006       var T, j, i, l,
16007           h0 = 0x67452301,
16008           h1 = 0xefcdab89,
16009           h2 = 0x98badcfe,
16010           h3 = 0x10325476,
16011           h4 = 0xc3d2e1f0,
16012           A1, B1, C1, D1, E1,
16013           A2, B2, C2, D2, E2;
16014
16015       /* append padding */
16016       x[len >> 5] |= 0x80 << (len % 32);
16017       x[(((len + 64) >>> 9) << 4) + 14] = len;
16018       l = x.length;
16019       
16020       for (i = 0; i < l; i+=16) {
16021         A1 = A2 = h0; B1 = B2 = h1; C1 = C2 = h2; D1 = D2 = h3; E1 = E2 = h4;
16022         for (j = 0; j <= 79; j+=1) {
16023           T = safe_add(A1, rmd160_f(j, B1, C1, D1));
16024           T = safe_add(T, x[i + rmd160_r1[j]]);
16025           T = safe_add(T, rmd160_K1(j));
16026           T = safe_add(bit_rol(T, rmd160_s1[j]), E1);
16027           A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T;
16028           T = safe_add(A2, rmd160_f(79-j, B2, C2, D2));
16029           T = safe_add(T, x[i + rmd160_r2[j]]);
16030           T = safe_add(T, rmd160_K2(j));
16031           T = safe_add(bit_rol(T, rmd160_s2[j]), E2);
16032           A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T;
16033         }
16034
16035         T = safe_add(h1, safe_add(C1, D2));
16036         h1 = safe_add(h2, safe_add(D1, E2));
16037         h2 = safe_add(h3, safe_add(E1, A2));
16038         h3 = safe_add(h4, safe_add(A1, B2));
16039         h4 = safe_add(h0, safe_add(B1, C2));
16040         h0 = T;
16041       }
16042       return [h0, h1, h2, h3, h4];
16043     }
16044
16045     // specific algorithm methods 
16046     function rmd160_f(j, x, y, z) {
16047       return ( 0 <= j && j <= 15) ? (x ^ y ^ z) :
16048          (16 <= j && j <= 31) ? (x & y) | (~x & z) :
16049          (32 <= j && j <= 47) ? (x | ~y) ^ z :
16050          (48 <= j && j <= 63) ? (x & z) | (y & ~z) :
16051          (64 <= j && j <= 79) ? x ^ (y | ~z) :
16052          'rmd160_f: j out of range';
16053     }
16054
16055     function rmd160_K1(j) {
16056       return ( 0 <= j && j <= 15) ? 0x00000000 :
16057          (16 <= j && j <= 31) ? 0x5a827999 :
16058          (32 <= j && j <= 47) ? 0x6ed9eba1 :
16059          (48 <= j && j <= 63) ? 0x8f1bbcdc :
16060          (64 <= j && j <= 79) ? 0xa953fd4e :
16061          'rmd160_K1: j out of range';
16062     }
16063
16064     function rmd160_K2(j){
16065       return ( 0 <= j && j <= 15) ? 0x50a28be6 :
16066          (16 <= j && j <= 31) ? 0x5c4dd124 :
16067          (32 <= j && j <= 47) ? 0x6d703ef3 :
16068          (48 <= j && j <= 63) ? 0x7a6d76e9 :
16069          (64 <= j && j <= 79) ? 0x00000000 :
16070          'rmd160_K2: j out of range';
16071     }
16072   }
16073 };
16074
16075   // exposes Hashes
16076   (function( window, undefined ) {
16077     var freeExports = false;
16078     if (typeof exports === 'object' ) {
16079       freeExports = exports;
16080       if (exports && typeof global === 'object' && global && global === global.global ) { window = global; }
16081     }
16082
16083     if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
16084       // define as an anonymous module, so, through path mapping, it can be aliased
16085       define(function () { return Hashes; });
16086     }
16087     else if ( freeExports ) {
16088       // in Node.js or RingoJS v0.8.0+
16089       if ( typeof module === 'object' && module && module.exports === freeExports ) {
16090         module.exports = Hashes;
16091       }
16092       // in Narwhal or RingoJS v0.7.0-
16093       else {
16094         freeExports.Hashes = Hashes;
16095       }
16096     }
16097     else {
16098       // in a browser or Rhino
16099       window.Hashes = Hashes;
16100     }
16101   }( this ));
16102 }()); // IIFE
16103
16104 })(window)
16105 },{}],2:[function(require,module,exports){
16106 'use strict';
16107
16108 var hashes = require('jshashes'),
16109     xtend = require('xtend'),
16110     sha1 = new hashes.SHA1();
16111
16112 var ohauth = {};
16113
16114 ohauth.qsString = function(obj) {
16115     return Object.keys(obj).sort().map(function(key) {
16116         return ohauth.percentEncode(key) + '=' +
16117             ohauth.percentEncode(obj[key]);
16118     }).join('&');
16119 };
16120
16121 ohauth.stringQs = function(str) {
16122     return str.split('&').reduce(function(obj, pair){
16123         var parts = pair.split('=');
16124         obj[decodeURIComponent(parts[0])] = (null === parts[1]) ?
16125             '' : decodeURIComponent(parts[1]);
16126         return obj;
16127     }, {});
16128 };
16129
16130 ohauth.rawxhr = function(method, url, data, headers, callback) {
16131     var xhr = new XMLHttpRequest(),
16132         twoHundred = /^20\d$/;
16133     xhr.onreadystatechange = function() {
16134         if (4 == xhr.readyState && 0 !== xhr.status) {
16135             if (twoHundred.test(xhr.status)) callback(null, xhr);
16136             else return callback(xhr, null);
16137         }
16138     };
16139     xhr.onerror = function(e) { return callback(e, null); };
16140     xhr.open(method, url, true);
16141     for (var h in headers) xhr.setRequestHeader(h, headers[h]);
16142     xhr.send(data);
16143 };
16144
16145 ohauth.xhr = function(method, url, auth, data, options, callback) {
16146     var headers = (options && options.header) || {
16147         'Content-Type': 'application/x-www-form-urlencoded'
16148     };
16149     headers.Authorization = 'OAuth ' + ohauth.authHeader(auth);
16150     ohauth.rawxhr(method, url, data, headers, callback);
16151 };
16152
16153 ohauth.nonce = function() {
16154     for (var o = ''; o.length < 6;) {
16155         o += '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'[Math.floor(Math.random() * 61)];
16156     }
16157     return o;
16158 };
16159
16160 ohauth.authHeader = function(obj) {
16161     return Object.keys(obj).sort().map(function(key) {
16162         return encodeURIComponent(key) + '="' + encodeURIComponent(obj[key]) + '"';
16163     }).join(', ');
16164 };
16165
16166 ohauth.timestamp = function() { return ~~((+new Date()) / 1000); };
16167
16168 ohauth.percentEncode = function(s) {
16169     return encodeURIComponent(s)
16170         .replace(/\!/g, '%21').replace(/\'/g, '%27')
16171         .replace(/\*/g, '%2A').replace(/\(/g, '%28').replace(/\)/g, '%29');
16172 };
16173
16174 ohauth.baseString = function(method, url, params) {
16175     if (params.oauth_signature) delete params.oauth_signature;
16176     return [
16177         method,
16178         ohauth.percentEncode(url),
16179         ohauth.percentEncode(ohauth.qsString(params))].join('&');
16180 };
16181
16182 ohauth.signature = function(oauth_secret, token_secret, baseString) {
16183     return sha1.b64_hmac(
16184         ohauth.percentEncode(oauth_secret) + '&' +
16185         ohauth.percentEncode(token_secret),
16186         baseString);
16187 };
16188
16189 /**
16190  * Takes an options object for configuration (consumer_key,
16191  * consumer_secret, version, signature_method, token) and returns a
16192  * function that generates the Authorization header for given data.
16193  *
16194  * The returned function takes these parameters:
16195  * - method: GET/POST/...
16196  * - uri: full URI with protocol, port, path and query string
16197  * - extra_params: any extra parameters (that are passed in the POST data),
16198  *   can be an object or a from-urlencoded string.
16199  *
16200  * Returned function returns full OAuth header with "OAuth" string in it.
16201  */
16202
16203 ohauth.headerGenerator = function(options) {
16204     options = options || {};
16205     var consumer_key = options.consumer_key || '',
16206         consumer_secret = options.consumer_secret || '',
16207         signature_method = options.signature_method || 'HMAC-SHA1',
16208         version = options.version || '1.0',
16209         token = options.token || '';
16210
16211     return function(method, uri, extra_params) {
16212         method = method.toUpperCase();
16213         if (typeof extra_params === 'string' && extra_params.length > 0) {
16214             extra_params = ohauth.stringQs(extra_params);
16215         }
16216
16217         var uri_parts = uri.split('?', 2),
16218         base_uri = uri_parts[0];
16219
16220         var query_params = uri_parts.length === 2 ?
16221             ohauth.stringQs(uri_parts[1]) : {};
16222
16223         var oauth_params = {
16224             oauth_consumer_key: consumer_key,
16225             oauth_signature_method: signature_method,
16226             oauth_version: version,
16227             oauth_timestamp: ohauth.timestamp(),
16228             oauth_nonce: ohauth.nonce()
16229         };
16230
16231         if (token) oauth_params.oauth_token = token;
16232
16233         var all_params = xtend({}, oauth_params, query_params, extra_params),
16234             base_str = ohauth.baseString(method, base_uri, all_params);
16235
16236         oauth_params.oauth_signature = ohauth.signature(consumer_secret, token, base_str);
16237
16238         return 'OAuth ' + ohauth.authHeader(oauth_params);
16239     };
16240 };
16241
16242 module.exports = ohauth;
16243
16244 },{"jshashes":7,"xtend":4}],6:[function(require,module,exports){
16245 module.exports = Object.keys || require('./shim');
16246
16247
16248 },{"./shim":8}],8:[function(require,module,exports){
16249 (function () {
16250         "use strict";
16251
16252         // modified from https://github.com/kriskowal/es5-shim
16253         var has = Object.prototype.hasOwnProperty,
16254                 is = require('is'),
16255                 forEach = require('foreach'),
16256                 hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
16257                 dontEnums = [
16258                         "toString",
16259                         "toLocaleString",
16260                         "valueOf",
16261                         "hasOwnProperty",
16262                         "isPrototypeOf",
16263                         "propertyIsEnumerable",
16264                         "constructor"
16265                 ],
16266                 keysShim;
16267
16268         keysShim = function keys(object) {
16269                 if (!is.object(object) && !is.array(object)) {
16270                         throw new TypeError("Object.keys called on a non-object");
16271                 }
16272
16273                 var name, theKeys = [];
16274                 for (name in object) {
16275                         if (has.call(object, name)) {
16276                                 theKeys.push(name);
16277                         }
16278                 }
16279
16280                 if (hasDontEnumBug) {
16281                         forEach(dontEnums, function (dontEnum) {
16282                                 if (has.call(object, dontEnum)) {
16283                                         theKeys.push(dontEnum);
16284                                 }
16285                         });
16286                 }
16287                 return theKeys;
16288         };
16289
16290         module.exports = keysShim;
16291 }());
16292
16293
16294 },{"is":9,"foreach":10}],9:[function(require,module,exports){
16295
16296 /**!
16297  * is
16298  * the definitive JavaScript type testing library
16299  * 
16300  * @copyright 2013 Enrico Marino
16301  * @license MIT
16302  */
16303
16304 var objProto = Object.prototype;
16305 var owns = objProto.hasOwnProperty;
16306 var toString = objProto.toString;
16307 var isActualNaN = function (value) {
16308   return value !== value;
16309 };
16310 var NON_HOST_TYPES = {
16311   "boolean": 1,
16312   "number": 1,
16313   "string": 1,
16314   "undefined": 1
16315 };
16316
16317 /**
16318  * Expose `is`
16319  */
16320
16321 var is = module.exports = {};
16322
16323 /**
16324  * Test general.
16325  */
16326
16327 /**
16328  * is.type
16329  * Test if `value` is a type of `type`.
16330  *
16331  * @param {Mixed} value value to test
16332  * @param {String} type type
16333  * @return {Boolean} true if `value` is a type of `type`, false otherwise
16334  * @api public
16335  */
16336
16337 is.a =
16338 is.type = function (value, type) {
16339   return typeof value === type;
16340 };
16341
16342 /**
16343  * is.defined
16344  * Test if `value` is defined.
16345  *
16346  * @param {Mixed} value value to test
16347  * @return {Boolean} true if 'value' is defined, false otherwise
16348  * @api public
16349  */
16350
16351 is.defined = function (value) {
16352   return value !== undefined;
16353 };
16354
16355 /**
16356  * is.empty
16357  * Test if `value` is empty.
16358  *
16359  * @param {Mixed} value value to test
16360  * @return {Boolean} true if `value` is empty, false otherwise
16361  * @api public
16362  */
16363
16364 is.empty = function (value) {
16365   var type = toString.call(value);
16366   var key;
16367
16368   if ('[object Array]' === type || '[object Arguments]' === type) {
16369     return value.length === 0;
16370   }
16371
16372   if ('[object Object]' === type) {
16373     for (key in value) if (owns.call(value, key)) return false;
16374     return true;
16375   }
16376
16377   if ('[object String]' === type) {
16378     return '' === value;
16379   }
16380
16381   return false;
16382 };
16383
16384 /**
16385  * is.equal
16386  * Test if `value` is equal to `other`.
16387  *
16388  * @param {Mixed} value value to test
16389  * @param {Mixed} other value to compare with
16390  * @return {Boolean} true if `value` is equal to `other`, false otherwise
16391  */
16392
16393 is.equal = function (value, other) {
16394   var type = toString.call(value)
16395   var key;
16396
16397   if (type !== toString.call(other)) {
16398     return false;
16399   }
16400
16401   if ('[object Object]' === type) {
16402     for (key in value) {
16403       if (!is.equal(value[key], other[key])) {
16404         return false;
16405       }
16406     }
16407     return true;
16408   }
16409
16410   if ('[object Array]' === type) {
16411     key = value.length;
16412     if (key !== other.length) {
16413       return false;
16414     }
16415     while (--key) {
16416       if (!is.equal(value[key], other[key])) {
16417         return false;
16418       }
16419     }
16420     return true;
16421   }
16422
16423   if ('[object Function]' === type) {
16424     return value.prototype === other.prototype;
16425   }
16426
16427   if ('[object Date]' === type) {
16428     return value.getTime() === other.getTime();
16429   }
16430
16431   return value === other;
16432 };
16433
16434 /**
16435  * is.hosted
16436  * Test if `value` is hosted by `host`.
16437  *
16438  * @param {Mixed} value to test
16439  * @param {Mixed} host host to test with
16440  * @return {Boolean} true if `value` is hosted by `host`, false otherwise
16441  * @api public
16442  */
16443
16444 is.hosted = function (value, host) {
16445   var type = typeof host[value];
16446   return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type];
16447 };
16448
16449 /**
16450  * is.instance
16451  * Test if `value` is an instance of `constructor`.
16452  *
16453  * @param {Mixed} value value to test
16454  * @return {Boolean} true if `value` is an instance of `constructor`
16455  * @api public
16456  */
16457
16458 is.instance = is['instanceof'] = function (value, constructor) {
16459   return value instanceof constructor;
16460 };
16461
16462 /**
16463  * is.null
16464  * Test if `value` is null.
16465  *
16466  * @param {Mixed} value value to test
16467  * @return {Boolean} true if `value` is null, false otherwise
16468  * @api public
16469  */
16470
16471 is['null'] = function (value) {
16472   return value === null;
16473 };
16474
16475 /**
16476  * is.undefined
16477  * Test if `value` is undefined.
16478  *
16479  * @param {Mixed} value value to test
16480  * @return {Boolean} true if `value` is undefined, false otherwise
16481  * @api public
16482  */
16483
16484 is.undefined = function (value) {
16485   return value === undefined;
16486 };
16487
16488 /**
16489  * Test arguments.
16490  */
16491
16492 /**
16493  * is.arguments
16494  * Test if `value` is an arguments object.
16495  *
16496  * @param {Mixed} value value to test
16497  * @return {Boolean} true if `value` is an arguments object, false otherwise
16498  * @api public
16499  */
16500
16501 is.arguments = function (value) {
16502   var isStandardArguments = '[object Arguments]' === toString.call(value);
16503   var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);
16504   return isStandardArguments || isOldArguments;
16505 };
16506
16507 /**
16508  * Test array.
16509  */
16510
16511 /**
16512  * is.array
16513  * Test if 'value' is an array.
16514  *
16515  * @param {Mixed} value value to test
16516  * @return {Boolean} true if `value` is an array, false otherwise
16517  * @api public
16518  */
16519
16520 is.array = function (value) {
16521   return '[object Array]' === toString.call(value);
16522 };
16523
16524 /**
16525  * is.arguments.empty
16526  * Test if `value` is an empty arguments object.
16527  *
16528  * @param {Mixed} value value to test
16529  * @return {Boolean} true if `value` is an empty arguments object, false otherwise
16530  * @api public
16531  */
16532 is.arguments.empty = function (value) {
16533   return is.arguments(value) && value.length === 0;
16534 };
16535
16536 /**
16537  * is.array.empty
16538  * Test if `value` is an empty array.
16539  *
16540  * @param {Mixed} value value to test
16541  * @return {Boolean} true if `value` is an empty array, false otherwise
16542  * @api public
16543  */
16544 is.array.empty = function (value) {
16545   return is.array(value) && value.length === 0;
16546 };
16547
16548 /**
16549  * is.arraylike
16550  * Test if `value` is an arraylike object.
16551  *
16552  * @param {Mixed} value value to test
16553  * @return {Boolean} true if `value` is an arguments object, false otherwise
16554  * @api public
16555  */
16556
16557 is.arraylike = function (value) {
16558   return !!value && !is.boolean(value)
16559     && owns.call(value, 'length')
16560     && isFinite(value.length)
16561     && is.number(value.length)
16562     && value.length >= 0;
16563 };
16564
16565 /**
16566  * Test boolean.
16567  */
16568
16569 /**
16570  * is.boolean
16571  * Test if `value` is a boolean.
16572  *
16573  * @param {Mixed} value value to test
16574  * @return {Boolean} true if `value` is a boolean, false otherwise
16575  * @api public
16576  */
16577
16578 is.boolean = function (value) {
16579   return '[object Boolean]' === toString.call(value);
16580 };
16581
16582 /**
16583  * is.false
16584  * Test if `value` is false.
16585  *
16586  * @param {Mixed} value value to test
16587  * @return {Boolean} true if `value` is false, false otherwise
16588  * @api public
16589  */
16590
16591 is['false'] = function (value) {
16592   return is.boolean(value) && (value === false || value.valueOf() === false);
16593 };
16594
16595 /**
16596  * is.true
16597  * Test if `value` is true.
16598  *
16599  * @param {Mixed} value value to test
16600  * @return {Boolean} true if `value` is true, false otherwise
16601  * @api public
16602  */
16603
16604 is['true'] = function (value) {
16605   return is.boolean(value) && (value === true || value.valueOf() === true);
16606 };
16607
16608 /**
16609  * Test date.
16610  */
16611
16612 /**
16613  * is.date
16614  * Test if `value` is a date.
16615  *
16616  * @param {Mixed} value value to test
16617  * @return {Boolean} true if `value` is a date, false otherwise
16618  * @api public
16619  */
16620
16621 is.date = function (value) {
16622   return '[object Date]' === toString.call(value);
16623 };
16624
16625 /**
16626  * Test element.
16627  */
16628
16629 /**
16630  * is.element
16631  * Test if `value` is an html element.
16632  *
16633  * @param {Mixed} value value to test
16634  * @return {Boolean} true if `value` is an HTML Element, false otherwise
16635  * @api public
16636  */
16637
16638 is.element = function (value) {
16639   return value !== undefined
16640     && typeof HTMLElement !== 'undefined'
16641     && value instanceof HTMLElement
16642     && value.nodeType === 1;
16643 };
16644
16645 /**
16646  * Test error.
16647  */
16648
16649 /**
16650  * is.error
16651  * Test if `value` is an error object.
16652  *
16653  * @param {Mixed} value value to test
16654  * @return {Boolean} true if `value` is an error object, false otherwise
16655  * @api public
16656  */
16657
16658 is.error = function (value) {
16659   return '[object Error]' === toString.call(value);
16660 };
16661
16662 /**
16663  * Test function.
16664  */
16665
16666 /**
16667  * is.fn / is.function (deprecated)
16668  * Test if `value` is a function.
16669  *
16670  * @param {Mixed} value value to test
16671  * @return {Boolean} true if `value` is a function, false otherwise
16672  * @api public
16673  */
16674
16675 is.fn = is['function'] = function (value) {
16676   var isAlert = typeof window !== 'undefined' && value === window.alert;
16677   return isAlert || '[object Function]' === toString.call(value);
16678 };
16679
16680 /**
16681  * Test number.
16682  */
16683
16684 /**
16685  * is.number
16686  * Test if `value` is a number.
16687  *
16688  * @param {Mixed} value value to test
16689  * @return {Boolean} true if `value` is a number, false otherwise
16690  * @api public
16691  */
16692
16693 is.number = function (value) {
16694   return '[object Number]' === toString.call(value);
16695 };
16696
16697 /**
16698  * is.infinite
16699  * Test if `value` is positive or negative infinity.
16700  *
16701  * @param {Mixed} value value to test
16702  * @return {Boolean} true if `value` is positive or negative Infinity, false otherwise
16703  * @api public
16704  */
16705 is.infinite = function (value) {
16706   return value === Infinity || value === -Infinity;
16707 };
16708
16709 /**
16710  * is.decimal
16711  * Test if `value` is a decimal number.
16712  *
16713  * @param {Mixed} value value to test
16714  * @return {Boolean} true if `value` is a decimal number, false otherwise
16715  * @api public
16716  */
16717
16718 is.decimal = function (value) {
16719   return is.number(value) && !isActualNaN(value) && value % 1 !== 0;
16720 };
16721
16722 /**
16723  * is.divisibleBy
16724  * Test if `value` is divisible by `n`.
16725  *
16726  * @param {Number} value value to test
16727  * @param {Number} n dividend
16728  * @return {Boolean} true if `value` is divisible by `n`, false otherwise
16729  * @api public
16730  */
16731
16732 is.divisibleBy = function (value, n) {
16733   var isDividendInfinite = is.infinite(value);
16734   var isDivisorInfinite = is.infinite(n);
16735   var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;
16736   return isDividendInfinite || isDivisorInfinite || (isNonZeroNumber && value % n === 0);
16737 };
16738
16739 /**
16740  * is.int
16741  * Test if `value` is an integer.
16742  *
16743  * @param value to test
16744  * @return {Boolean} true if `value` is an integer, false otherwise
16745  * @api public
16746  */
16747
16748 is.int = function (value) {
16749   return is.number(value) && !isActualNaN(value) && value % 1 === 0;
16750 };
16751
16752 /**
16753  * is.maximum
16754  * Test if `value` is greater than 'others' values.
16755  *
16756  * @param {Number} value value to test
16757  * @param {Array} others values to compare with
16758  * @return {Boolean} true if `value` is greater than `others` values
16759  * @api public
16760  */
16761
16762 is.maximum = function (value, others) {
16763   if (isActualNaN(value)) {
16764     throw new TypeError('NaN is not a valid value');
16765   } else if (!is.arraylike(others)) {
16766     throw new TypeError('second argument must be array-like');
16767   }
16768   var len = others.length;
16769
16770   while (--len >= 0) {
16771     if (value < others[len]) {
16772       return false;
16773     }
16774   }
16775
16776   return true;
16777 };
16778
16779 /**
16780  * is.minimum
16781  * Test if `value` is less than `others` values.
16782  *
16783  * @param {Number} value value to test
16784  * @param {Array} others values to compare with
16785  * @return {Boolean} true if `value` is less than `others` values
16786  * @api public
16787  */
16788
16789 is.minimum = function (value, others) {
16790   if (isActualNaN(value)) {
16791     throw new TypeError('NaN is not a valid value');
16792   } else if (!is.arraylike(others)) {
16793     throw new TypeError('second argument must be array-like');
16794   }
16795   var len = others.length;
16796
16797   while (--len >= 0) {
16798     if (value > others[len]) {
16799       return false;
16800     }
16801   }
16802
16803   return true;
16804 };
16805
16806 /**
16807  * is.nan
16808  * Test if `value` is not a number.
16809  *
16810  * @param {Mixed} value value to test
16811  * @return {Boolean} true if `value` is not a number, false otherwise
16812  * @api public
16813  */
16814
16815 is.nan = function (value) {
16816   return !is.number(value) || value !== value;
16817 };
16818
16819 /**
16820  * is.even
16821  * Test if `value` is an even number.
16822  *
16823  * @param {Number} value value to test
16824  * @return {Boolean} true if `value` is an even number, false otherwise
16825  * @api public
16826  */
16827
16828 is.even = function (value) {
16829   return is.infinite(value) || (is.number(value) && value === value && value % 2 === 0);
16830 };
16831
16832 /**
16833  * is.odd
16834  * Test if `value` is an odd number.
16835  *
16836  * @param {Number} value value to test
16837  * @return {Boolean} true if `value` is an odd number, false otherwise
16838  * @api public
16839  */
16840
16841 is.odd = function (value) {
16842   return is.infinite(value) || (is.number(value) && value === value && value % 2 !== 0);
16843 };
16844
16845 /**
16846  * is.ge
16847  * Test if `value` is greater than or equal to `other`.
16848  *
16849  * @param {Number} value value to test
16850  * @param {Number} other value to compare with
16851  * @return {Boolean}
16852  * @api public
16853  */
16854
16855 is.ge = function (value, other) {
16856   if (isActualNaN(value) || isActualNaN(other)) {
16857     throw new TypeError('NaN is not a valid value');
16858   }
16859   return !is.infinite(value) && !is.infinite(other) && value >= other;
16860 };
16861
16862 /**
16863  * is.gt
16864  * Test if `value` is greater than `other`.
16865  *
16866  * @param {Number} value value to test
16867  * @param {Number} other value to compare with
16868  * @return {Boolean}
16869  * @api public
16870  */
16871
16872 is.gt = function (value, other) {
16873   if (isActualNaN(value) || isActualNaN(other)) {
16874     throw new TypeError('NaN is not a valid value');
16875   }
16876   return !is.infinite(value) && !is.infinite(other) && value > other;
16877 };
16878
16879 /**
16880  * is.le
16881  * Test if `value` is less than or equal to `other`.
16882  *
16883  * @param {Number} value value to test
16884  * @param {Number} other value to compare with
16885  * @return {Boolean} if 'value' is less than or equal to 'other'
16886  * @api public
16887  */
16888
16889 is.le = function (value, other) {
16890   if (isActualNaN(value) || isActualNaN(other)) {
16891     throw new TypeError('NaN is not a valid value');
16892   }
16893   return !is.infinite(value) && !is.infinite(other) && value <= other;
16894 };
16895
16896 /**
16897  * is.lt
16898  * Test if `value` is less than `other`.
16899  *
16900  * @param {Number} value value to test
16901  * @param {Number} other value to compare with
16902  * @return {Boolean} if `value` is less than `other`
16903  * @api public
16904  */
16905
16906 is.lt = function (value, other) {
16907   if (isActualNaN(value) || isActualNaN(other)) {
16908     throw new TypeError('NaN is not a valid value');
16909   }
16910   return !is.infinite(value) && !is.infinite(other) && value < other;
16911 };
16912
16913 /**
16914  * is.within
16915  * Test if `value` is within `start` and `finish`.
16916  *
16917  * @param {Number} value value to test
16918  * @param {Number} start lower bound
16919  * @param {Number} finish upper bound
16920  * @return {Boolean} true if 'value' is is within 'start' and 'finish'
16921  * @api public
16922  */
16923 is.within = function (value, start, finish) {
16924   if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {
16925     throw new TypeError('NaN is not a valid value');
16926   } else if (!is.number(value) || !is.number(start) || !is.number(finish)) {
16927     throw new TypeError('all arguments must be numbers');
16928   }
16929   var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);
16930   return isAnyInfinite || (value >= start && value <= finish);
16931 };
16932
16933 /**
16934  * Test object.
16935  */
16936
16937 /**
16938  * is.object
16939  * Test if `value` is an object.
16940  *
16941  * @param {Mixed} value value to test
16942  * @return {Boolean} true if `value` is an object, false otherwise
16943  * @api public
16944  */
16945
16946 is.object = function (value) {
16947   return value && '[object Object]' === toString.call(value);
16948 };
16949
16950 /**
16951  * is.hash
16952  * Test if `value` is a hash - a plain object literal.
16953  *
16954  * @param {Mixed} value value to test
16955  * @return {Boolean} true if `value` is a hash, false otherwise
16956  * @api public
16957  */
16958
16959 is.hash = function (value) {
16960   return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval;
16961 };
16962
16963 /**
16964  * Test regexp.
16965  */
16966
16967 /**
16968  * is.regexp
16969  * Test if `value` is a regular expression.
16970  *
16971  * @param {Mixed} value value to test
16972  * @return {Boolean} true if `value` is a regexp, false otherwise
16973  * @api public
16974  */
16975
16976 is.regexp = function (value) {
16977   return '[object RegExp]' === toString.call(value);
16978 };
16979
16980 /**
16981  * Test string.
16982  */
16983
16984 /**
16985  * is.string
16986  * Test if `value` is a string.
16987  *
16988  * @param {Mixed} value value to test
16989  * @return {Boolean} true if 'value' is a string, false otherwise
16990  * @api public
16991  */
16992
16993 is.string = function (value) {
16994   return '[object String]' === toString.call(value);
16995 };
16996
16997
16998 },{}],10:[function(require,module,exports){
16999
17000 var hasOwn = Object.prototype.hasOwnProperty;
17001 var toString = Object.prototype.toString;
17002
17003 module.exports = function forEach (obj, fn, ctx) {
17004     if (toString.call(fn) !== '[object Function]') {
17005         throw new TypeError('iterator must be a function');
17006     }
17007     var l = obj.length;
17008     if (l === +l) {
17009         for (var i = 0; i < l; i++) {
17010             fn.call(ctx, obj[i], i, obj);
17011         }
17012     } else {
17013         for (var k in obj) {
17014             if (hasOwn.call(obj, k)) {
17015                 fn.call(ctx, obj[k], k, obj);
17016             }
17017         }
17018     }
17019 };
17020
17021
17022 },{}]},{},[1])(1)
17023 });
17024 ;/*
17025  (c) 2013, Vladimir Agafonkin
17026  RBush, a JavaScript library for high-performance 2D spatial indexing of points and rectangles.
17027  https://github.com/mourner/rbush
17028 */
17029
17030 (function () { 'use strict';
17031
17032 function rbush(maxEntries, format) {
17033
17034     // jshint newcap: false, validthis: true
17035     if (!(this instanceof rbush)) return new rbush(maxEntries, format);
17036
17037     // max entries in a node is 9 by default; min node fill is 40% for best performance
17038     this._maxEntries = Math.max(4, maxEntries || 9);
17039     this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));
17040
17041     if (format) {
17042         this._initFormat(format);
17043     }
17044
17045     this.clear();
17046 }
17047
17048 rbush.prototype = {
17049
17050     all: function () {
17051         return this._all(this.data, []);
17052     },
17053
17054     search: function (bbox) {
17055
17056         var node = this.data,
17057             result = [],
17058             toBBox = this.toBBox;
17059
17060         if (!intersects(bbox, node.bbox)) return result;
17061
17062         var nodesToSearch = [],
17063             i, len, child, childBBox;
17064
17065         while (node) {
17066             for (i = 0, len = node.children.length; i < len; i++) {
17067
17068                 child = node.children[i];
17069                 childBBox = node.leaf ? toBBox(child) : child.bbox;
17070
17071                 if (intersects(bbox, childBBox)) {
17072                     if (node.leaf) result.push(child);
17073                     else if (contains(bbox, childBBox)) this._all(child, result);
17074                     else nodesToSearch.push(child);
17075                 }
17076             }
17077             node = nodesToSearch.pop();
17078         }
17079
17080         return result;
17081     },
17082
17083     load: function (data) {
17084         if (!(data && data.length)) return this;
17085
17086         if (data.length < this._minEntries) {
17087             for (var i = 0, len = data.length; i < len; i++) {
17088                 this.insert(data[i]);
17089             }
17090             return this;
17091         }
17092
17093         // recursively build the tree with the given data from stratch using OMT algorithm
17094         var node = this._build(data.slice(), 0, data.length - 1, 0);
17095
17096         if (!this.data.children.length) {
17097             // save as is if tree is empty
17098             this.data = node;
17099
17100         } else if (this.data.height === node.height) {
17101             // split root if trees have the same height
17102             this._splitRoot(this.data, node);
17103
17104         } else {
17105             if (this.data.height < node.height) {
17106                 // swap trees if inserted one is bigger
17107                 var tmpNode = this.data;
17108                 this.data = node;
17109                 node = tmpNode;
17110             }
17111
17112             // insert the small tree into the large tree at appropriate level
17113             this._insert(node, this.data.height - node.height - 1, true);
17114         }
17115
17116         return this;
17117     },
17118
17119     insert: function (item) {
17120         if (item) this._insert(item, this.data.height - 1);
17121         return this;
17122     },
17123
17124     clear: function () {
17125         this.data = {
17126             children: [],
17127             height: 1,
17128             bbox: empty(),
17129             leaf: true
17130         };
17131         return this;
17132     },
17133
17134     remove: function (item) {
17135         if (!item) return this;
17136
17137         var node = this.data,
17138             bbox = this.toBBox(item),
17139             path = [],
17140             indexes = [],
17141             i, parent, index, goingUp;
17142
17143         // depth-first iterative tree traversal
17144         while (node || path.length) {
17145
17146             if (!node) { // go up
17147                 node = path.pop();
17148                 parent = path[path.length - 1];
17149                 i = indexes.pop();
17150                 goingUp = true;
17151             }
17152
17153             if (node.leaf) { // check current node
17154                 index = node.children.indexOf(item);
17155
17156                 if (index !== -1) {
17157                     // item found, remove the item and condense tree upwards
17158                     node.children.splice(index, 1);
17159                     path.push(node);
17160                     this._condense(path);
17161                     return this;
17162                 }
17163             }
17164
17165             if (!goingUp && !node.leaf && contains(node.bbox, bbox)) { // go down
17166                 path.push(node);
17167                 indexes.push(i);
17168                 i = 0;
17169                 parent = node;
17170                 node = node.children[0];
17171
17172             } else if (parent) { // go right
17173                 i++;
17174                 node = parent.children[i];
17175                 goingUp = false;
17176
17177             } else node = null; // nothing found
17178         }
17179
17180         return this;
17181     },
17182
17183     toBBox: function (item) { return item; },
17184
17185     compareMinX: function (a, b) { return a[0] - b[0]; },
17186     compareMinY: function (a, b) { return a[1] - b[1]; },
17187
17188     toJSON: function () { return this.data; },
17189
17190     fromJSON: function (data) {
17191         this.data = data;
17192         return this;
17193     },
17194
17195     _all: function (node, result) {
17196         var nodesToSearch = [];
17197         while (node) {
17198             if (node.leaf) result.push.apply(result, node.children);
17199             else nodesToSearch.push.apply(nodesToSearch, node.children);
17200
17201             node = nodesToSearch.pop();
17202         }
17203         return result;
17204     },
17205
17206     _build: function (items, left, right, level, height) {
17207
17208         var N = right - left + 1,
17209             M = this._maxEntries,
17210             node;
17211
17212         if (N <= M) {
17213             node = {
17214                 children: items.slice(left, right + 1),
17215                 height: 1,
17216                 bbox: null,
17217                 leaf: true
17218             };
17219             calcBBox(node, this.toBBox);
17220             return node;
17221         }
17222
17223         if (!level) {
17224             // target height of the bulk-loaded tree
17225             height = Math.ceil(Math.log(N) / Math.log(M));
17226
17227             // target number of root entries to maximize storage utilization
17228             M = Math.ceil(N / Math.pow(M, height - 1));
17229         }
17230
17231         // TODO eliminate recursion?
17232
17233         node = {
17234             children: [],
17235             height: height,
17236             bbox: null
17237         };
17238
17239         var N2 = Math.ceil(N / M),
17240             N1 = N2 * Math.ceil(Math.sqrt(M)),
17241             i, j, right2, childNode;
17242
17243         // split the items into M mostly square tiles
17244         for (i = left; i <= right; i += N1) {
17245
17246             if (i + N1 <= right) partitionSort(items, i, right, i + N1, this.compareMinX);
17247             right2 = Math.min(i + N1 - 1, right);
17248
17249             for (j = i; j <= right2; j += N2) {
17250
17251                 if (j + N2 <= right2) partitionSort(items, j, right2, j + N2, this.compareMinY);
17252
17253                 // pack each entry recursively
17254                 childNode = this._build(items, j, Math.min(j + N2 - 1, right2), level + 1, height - 1);
17255                 node.children.push(childNode);
17256             }
17257         }
17258
17259         calcBBox(node, this.toBBox);
17260
17261         return node;
17262     },
17263
17264     _chooseSubtree: function (bbox, node, level, path) {
17265
17266         var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;
17267
17268         while (true) {
17269             path.push(node);
17270
17271             if (node.leaf || path.length - 1 === level) break;
17272
17273             minArea = minEnlargement = Infinity;
17274
17275             for (i = 0, len = node.children.length; i < len; i++) {
17276                 child = node.children[i];
17277                 area = bboxArea(child.bbox);
17278                 enlargement = enlargedArea(bbox, child.bbox) - area;
17279
17280                 // choose entry with the least area enlargement
17281                 if (enlargement < minEnlargement) {
17282                     minEnlargement = enlargement;
17283                     minArea = area < minArea ? area : minArea;
17284                     targetNode = child;
17285
17286                 } else if (enlargement === minEnlargement) {
17287                     // otherwise choose one with the smallest area
17288                     if (area < minArea) {
17289                         minArea = area;
17290                         targetNode = child;
17291                     }
17292                 }
17293             }
17294
17295             node = targetNode;
17296         }
17297
17298         return node;
17299     },
17300
17301     _insert: function (item, level, isNode) {
17302
17303         var toBBox = this.toBBox,
17304             bbox = isNode ? item.bbox : toBBox(item),
17305             insertPath = [];
17306
17307         // find the best node for accommodating the item, saving all nodes along the path too
17308         var node = this._chooseSubtree(bbox, this.data, level, insertPath);
17309
17310         // put the item into the node
17311         node.children.push(item);
17312         extend(node.bbox, bbox);
17313
17314         // split on node overflow; propagate upwards if necessary
17315         while (level >= 0) {
17316             if (insertPath[level].children.length > this._maxEntries) {
17317                 this._split(insertPath, level);
17318                 level--;
17319             } else break;
17320         }
17321
17322         // adjust bboxes along the insertion path
17323         this._adjustParentBBoxes(bbox, insertPath, level);
17324     },
17325
17326     // split overflowed node into two
17327     _split: function (insertPath, level) {
17328
17329         var node = insertPath[level],
17330             M = node.children.length,
17331             m = this._minEntries;
17332
17333         this._chooseSplitAxis(node, m, M);
17334
17335         var newNode = {
17336             children: node.children.splice(this._chooseSplitIndex(node, m, M)),
17337             height: node.height
17338         };
17339
17340         if (node.leaf) newNode.leaf = true;
17341
17342         calcBBox(node, this.toBBox);
17343         calcBBox(newNode, this.toBBox);
17344
17345         if (level) insertPath[level - 1].children.push(newNode);
17346         else this._splitRoot(node, newNode);
17347     },
17348
17349     _splitRoot: function (node, newNode) {
17350         // split root node
17351         this.data = {
17352             children: [node, newNode],
17353             height: node.height + 1
17354         };
17355         calcBBox(this.data, this.toBBox);
17356     },
17357
17358     _chooseSplitIndex: function (node, m, M) {
17359
17360         var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;
17361
17362         minOverlap = minArea = Infinity;
17363
17364         for (i = m; i <= M - m; i++) {
17365             bbox1 = distBBox(node, 0, i, this.toBBox);
17366             bbox2 = distBBox(node, i, M, this.toBBox);
17367
17368             overlap = intersectionArea(bbox1, bbox2);
17369             area = bboxArea(bbox1) + bboxArea(bbox2);
17370
17371             // choose distribution with minimum overlap
17372             if (overlap < minOverlap) {
17373                 minOverlap = overlap;
17374                 index = i;
17375
17376                 minArea = area < minArea ? area : minArea;
17377
17378             } else if (overlap === minOverlap) {
17379                 // otherwise choose distribution with minimum area
17380                 if (area < minArea) {
17381                     minArea = area;
17382                     index = i;
17383                 }
17384             }
17385         }
17386
17387         return index;
17388     },
17389
17390     // sorts node children by the best axis for split
17391     _chooseSplitAxis: function (node, m, M) {
17392
17393         var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,
17394             compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,
17395             xMargin = this._allDistMargin(node, m, M, compareMinX),
17396             yMargin = this._allDistMargin(node, m, M, compareMinY);
17397
17398         // if total distributions margin value is minimal for x, sort by minX,
17399         // otherwise it's already sorted by minY
17400         if (xMargin < yMargin) node.children.sort(compareMinX);
17401     },
17402
17403     // total margin of all possible split distributions where each node is at least m full
17404     _allDistMargin: function (node, m, M, compare) {
17405
17406         node.children.sort(compare);
17407
17408         var toBBox = this.toBBox,
17409             leftBBox = distBBox(node, 0, m, toBBox),
17410             rightBBox = distBBox(node, M - m, M, toBBox),
17411             margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),
17412             i, child;
17413
17414         for (i = m; i < M - m; i++) {
17415             child = node.children[i];
17416             extend(leftBBox, node.leaf ? toBBox(child) : child.bbox);
17417             margin += bboxMargin(leftBBox);
17418         }
17419
17420         for (i = M - m - 1; i >= m; i--) {
17421             child = node.children[i];
17422             extend(rightBBox, node.leaf ? toBBox(child) : child.bbox);
17423             margin += bboxMargin(rightBBox);
17424         }
17425
17426         return margin;
17427     },
17428
17429     _adjustParentBBoxes: function (bbox, path, level) {
17430         // adjust bboxes along the given tree path
17431         for (var i = level; i >= 0; i--) {
17432             extend(path[i].bbox, bbox);
17433         }
17434     },
17435
17436     _condense: function (path) {
17437         // go through the path, removing empty nodes and updating bboxes
17438         for (var i = path.length - 1, siblings; i >= 0; i--) {
17439             if (path[i].children.length === 0) {
17440                 if (i > 0) {
17441                     siblings = path[i - 1].children;
17442                     siblings.splice(siblings.indexOf(path[i]), 1);
17443
17444                 } else this.clear();
17445
17446             } else calcBBox(path[i], this.toBBox);
17447         }
17448     },
17449
17450     _initFormat: function (format) {
17451         // data format (minX, minY, maxX, maxY accessors)
17452
17453         // uses eval-type function compilation instead of just accepting a toBBox function
17454         // because the algorithms are very sensitive to sorting functions performance,
17455         // so they should be dead simple and without inner calls
17456
17457         // jshint evil: true
17458
17459         var compareArr = ['return a', ' - b', ';'];
17460
17461         this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));
17462         this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));
17463
17464         this.toBBox = new Function('a', 'return [a' + format.join(', a') + '];');
17465     }
17466 };
17467
17468 // calculate node's bbox from bboxes of its children
17469 function calcBBox(node, toBBox) {
17470     node.bbox = distBBox(node, 0, node.children.length, toBBox);
17471 }
17472
17473 // min bounding rectangle of node children from k to p-1
17474 function distBBox(node, k, p, toBBox) {
17475     var bbox = empty();
17476
17477     for (var i = k, child; i < p; i++) {
17478         child = node.children[i];
17479         extend(bbox, node.leaf ? toBBox(child) : child.bbox);
17480     }
17481
17482     return bbox;
17483 }
17484
17485
17486 function empty() { return [Infinity, Infinity, -Infinity, -Infinity]; }
17487
17488 function extend(a, b) {
17489     a[0] = Math.min(a[0], b[0]);
17490     a[1] = Math.min(a[1], b[1]);
17491     a[2] = Math.max(a[2], b[2]);
17492     a[3] = Math.max(a[3], b[3]);
17493     return a;
17494 }
17495
17496 function compareNodeMinX(a, b) { return a.bbox[0] - b.bbox[0]; }
17497 function compareNodeMinY(a, b) { return a.bbox[1] - b.bbox[1]; }
17498
17499 function bboxArea(a)   { return (a[2] - a[0]) * (a[3] - a[1]); }
17500 function bboxMargin(a) { return (a[2] - a[0]) + (a[3] - a[1]); }
17501
17502 function enlargedArea(a, b) {
17503     return (Math.max(b[2], a[2]) - Math.min(b[0], a[0])) *
17504            (Math.max(b[3], a[3]) - Math.min(b[1], a[1]));
17505 }
17506
17507 function intersectionArea (a, b) {
17508     var minX = Math.max(a[0], b[0]),
17509         minY = Math.max(a[1], b[1]),
17510         maxX = Math.min(a[2], b[2]),
17511         maxY = Math.min(a[3], b[3]);
17512
17513     return Math.max(0, maxX - minX) *
17514            Math.max(0, maxY - minY);
17515 }
17516
17517 function contains(a, b) {
17518     return a[0] <= b[0] &&
17519            a[1] <= b[1] &&
17520            b[2] <= a[2] &&
17521            b[3] <= a[3];
17522 }
17523
17524 function intersects (a, b) {
17525     return b[0] <= a[2] &&
17526            b[1] <= a[3] &&
17527            b[2] >= a[0] &&
17528            b[3] >= a[1];
17529 }
17530
17531
17532 function partitionSort(arr, left, right, k, compare) {
17533     var pivot;
17534
17535     while (true) {
17536         pivot = Math.floor((left + right) / 2);
17537         pivot = partition(arr, left, right, pivot, compare);
17538
17539         if (k === pivot) break;
17540         else if (k < pivot) right = pivot - 1;
17541         else left = pivot + 1;
17542     }
17543
17544     partition(arr, left, right, k, compare);
17545 }
17546
17547 function partition(arr, left, right, pivot, compare) {
17548     var k = left,
17549         value = arr[pivot];
17550
17551     swap(arr, pivot, right);
17552
17553     for (var i = left; i < right; i++) {
17554         if (compare(arr[i], value) < 0) {
17555             swap(arr, k, i);
17556             k++;
17557         }
17558     }
17559     swap(arr, right, k);
17560
17561     return k;
17562 }
17563
17564 function swap(arr, i, j) {
17565     var tmp = arr[i];
17566     arr[i] = arr[j];
17567     arr[j] = tmp;
17568 }
17569
17570
17571 // export as AMD/CommonJS module or global variable
17572 if (typeof define === 'function' && define.amd) define(function() { return rbush; });
17573 else if (typeof module !== 'undefined') module.exports = rbush;
17574 else if (typeof self !== 'undefined') self.rbush = rbush;
17575 else window.rbush = rbush;
17576
17577 })();(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;
17578 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){
17579 module.exports = element;
17580 module.exports.pair = pair;
17581 module.exports.format = format;
17582 module.exports.formatPair = formatPair;
17583
17584 function element(x, dims) {
17585     return search(x, dims).val;
17586 }
17587
17588 function formatPair(x) {
17589     return format(x.lat, 'lat') + ' ' + format(x.lon, 'lon');
17590 }
17591
17592 // Is 0 North or South?
17593 function format(x, dim) {
17594     var dirs = {
17595             lat: ['N', 'S'],
17596             lon: ['E', 'W']
17597         }[dim] || '',
17598         dir = dirs[x >= 0 ? 0 : 1],
17599         abs = Math.abs(x),
17600         whole = Math.floor(abs),
17601         fraction = abs - whole,
17602         fractionMinutes = fraction * 60,
17603         minutes = Math.floor(fractionMinutes),
17604         seconds = Math.floor((fractionMinutes - minutes) * 60);
17605
17606     return whole + '° ' +
17607         (minutes ? minutes + "' " : '') +
17608         (seconds ? seconds + '" ' : '') + dir;
17609 }
17610
17611 function search(x, dims, r) {
17612     if (!dims) dims = 'NSEW';
17613     if (typeof x !== 'string') return { val: null, regex: r };
17614     r = r || /[\s\,]*([\-|\—|\―]?[0-9.]+)°? *(?:([0-9.]+)['’′‘] *)?(?:([0-9.]+)(?:''|"|”|″) *)?([NSEW])?/gi;
17615     var m = r.exec(x);
17616     if (!m) return { val: null, regex: r };
17617     else if (m[4] && dims.indexOf(m[4]) === -1) return { val: null, regex: r };
17618     else return {
17619         val: (((m[1]) ? parseFloat(m[1]) : 0) +
17620             ((m[2] ? parseFloat(m[2]) / 60 : 0)) +
17621             ((m[3] ? parseFloat(m[3]) / 3600 : 0))) *
17622             ((m[4] && m[4] === 'S' || m[4] === 'W') ? -1 : 1),
17623         regex: r,
17624         raw: m[0],
17625         dim: m[4]
17626     };
17627 }
17628
17629 function pair(x, dims) {
17630     x = x.trim();
17631     var one = search(x, dims);
17632     if (one.val === null) return null;
17633     var two = search(x, dims, one.regex);
17634     if (two.val === null) return null;
17635     // null if one/two are not contiguous.
17636     if (one.raw + two.raw !== x) return null;
17637     if (one.dim) return swapdim(one.val, two.val, one.dim);
17638     else return [one.val, two.val];
17639 }
17640
17641 function swapdim(a, b, dim) {
17642     if (dim == 'N' || dim == 'S') return [a, b];
17643     if (dim == 'W' || dim == 'E') return [b, a];
17644 }
17645
17646 },{}]},{},[1])
17647 (1)
17648 });
17649 ;toGeoJSON = (function() {
17650     'use strict';
17651
17652     var removeSpace = (/\s*/g),
17653         trimSpace = (/^\s*|\s*$/g),
17654         splitSpace = (/\s+/);
17655     // generate a short, numeric hash of a string
17656     function okhash(x) {
17657         if (!x || !x.length) return 0;
17658         for (var i = 0, h = 0; i < x.length; i++) {
17659             h = ((h << 5) - h) + x.charCodeAt(i) | 0;
17660         } return h;
17661     }
17662     // all Y children of X
17663     function get(x, y) { return x.getElementsByTagName(y); }
17664     function attr(x, y) { return x.getAttribute(y); }
17665     function attrf(x, y) { return parseFloat(attr(x, y)); }
17666     // one Y child of X, if any, otherwise null
17667     function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
17668     // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
17669     function norm(el) { if (el.normalize) { el.normalize(); } return el; }
17670     // cast array x into numbers
17671     function numarray(x) {
17672         for (var j = 0, o = []; j < x.length; j++) o[j] = parseFloat(x[j]);
17673         return o;
17674     }
17675     function clean(x) {
17676         var o = {};
17677         for (var i in x) if (x[i]) o[i] = x[i];
17678         return o;
17679     }
17680     // get the content of a text node, if any
17681     function nodeVal(x) { if (x) {norm(x);} return x && x.firstChild && x.firstChild.nodeValue; }
17682     // get one coordinate from a coordinate array, if any
17683     function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
17684     // get all coordinates from a coordinate array as [[],[]]
17685     function coord(v) {
17686         var coords = v.replace(trimSpace, '').split(splitSpace),
17687             o = [];
17688         for (var i = 0; i < coords.length; i++) {
17689             o.push(coord1(coords[i]));
17690         }
17691         return o;
17692     }
17693     function coordPair(x) { return [attrf(x, 'lon'), attrf(x, 'lat')]; }
17694
17695     // create a new feature collection parent object
17696     function fc() {
17697         return {
17698             type: 'FeatureCollection',
17699             features: []
17700         };
17701     }
17702
17703     var styleSupport = false;
17704     if (typeof XMLSerializer !== 'undefined') {
17705         var serializer = new XMLSerializer();
17706         styleSupport = true;
17707     }
17708     function xml2str(str) { return serializer.serializeToString(str); }
17709
17710     var t = {
17711         kml: function(doc, o) {
17712             o = o || {};
17713
17714             var gj = fc(),
17715                 // styleindex keeps track of hashed styles in order to match features
17716                 styleIndex = {},
17717                 // atomic geospatial types supported by KML - MultiGeometry is
17718                 // handled separately
17719                 geotypes = ['Polygon', 'LineString', 'Point', 'Track'],
17720                 // all root placemarks in the file
17721                 placemarks = get(doc, 'Placemark'),
17722                 styles = get(doc, 'Style');
17723
17724             if (styleSupport) for (var k = 0; k < styles.length; k++) {
17725                 styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
17726             }
17727             for (var j = 0; j < placemarks.length; j++) {
17728                 gj.features = gj.features.concat(getPlacemark(placemarks[j]));
17729             }
17730             function gxCoord(v) { return numarray(v.split(' ')); }
17731             function gxCoords(root) {
17732                 var elems = get(root, 'coord', 'gx'), coords = [];
17733                 for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
17734                 return coords;
17735             }
17736             function getGeometry(root) {
17737                 var geomNode, geomNodes, i, j, k, geoms = [];
17738                 if (get1(root, 'MultiGeometry')) return getGeometry(get1(root, 'MultiGeometry'));
17739                 if (get1(root, 'MultiTrack')) return getGeometry(get1(root, 'MultiTrack'));
17740                 for (i = 0; i < geotypes.length; i++) {
17741                     geomNodes = get(root, geotypes[i]);
17742                     if (geomNodes) {
17743                         for (j = 0; j < geomNodes.length; j++) {
17744                             geomNode = geomNodes[j];
17745                             if (geotypes[i] == 'Point') {
17746                                 geoms.push({
17747                                     type: 'Point',
17748                                     coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
17749                                 });
17750                             } else if (geotypes[i] == 'LineString') {
17751                                 geoms.push({
17752                                     type: 'LineString',
17753                                     coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
17754                                 });
17755                             } else if (geotypes[i] == 'Polygon') {
17756                                 var rings = get(geomNode, 'LinearRing'),
17757                                     coords = [];
17758                                 for (k = 0; k < rings.length; k++) {
17759                                     coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
17760                                 }
17761                                 geoms.push({
17762                                     type: 'Polygon',
17763                                     coordinates: coords
17764                                 });
17765                             } else if (geotypes[i] == 'Track') {
17766                                 geoms.push({
17767                                     type: 'LineString',
17768                                     coordinates: gxCoords(geomNode)
17769                                 });
17770                             }
17771                         }
17772                     }
17773                 }
17774                 return geoms;
17775             }
17776             function getPlacemark(root) {
17777                 var geoms = getGeometry(root), i, properties = {},
17778                     name = nodeVal(get1(root, 'name')),
17779                     styleUrl = nodeVal(get1(root, 'styleUrl')),
17780                     description = nodeVal(get1(root, 'description')),
17781                     extendedData = get1(root, 'ExtendedData');
17782
17783                 if (!geoms.length) return [];
17784                 if (name) properties.name = name;
17785                 if (styleUrl && styleIndex[styleUrl]) {
17786                     properties.styleUrl = styleUrl;
17787                     properties.styleHash = styleIndex[styleUrl];
17788                 }
17789                 if (description) properties.description = description;
17790                 if (extendedData) {
17791                     var datas = get(extendedData, 'Data'),
17792                         simpleDatas = get(extendedData, 'SimpleData');
17793
17794                     for (i = 0; i < datas.length; i++) {
17795                         properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
17796                     }
17797                     for (i = 0; i < simpleDatas.length; i++) {
17798                         properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
17799                     }
17800                 }
17801                 return [{
17802                     type: 'Feature',
17803                     geometry: (geoms.length === 1) ? geoms[0] : {
17804                         type: 'GeometryCollection',
17805                         geometries: geoms
17806                     },
17807                     properties: properties
17808                 }];
17809             }
17810             return gj;
17811         },
17812         gpx: function(doc, o) {
17813             var i,
17814                 tracks = get(doc, 'trk'),
17815                 routes = get(doc, 'rte'),
17816                 waypoints = get(doc, 'wpt'),
17817                 // a feature collection
17818                 gj = fc();
17819             for (i = 0; i < tracks.length; i++) {
17820                 gj.features.push(getLinestring(tracks[i], 'trkpt'));
17821             }
17822             for (i = 0; i < routes.length; i++) {
17823                 gj.features.push(getLinestring(routes[i], 'rtept'));
17824             }
17825             for (i = 0; i < waypoints.length; i++) {
17826                 gj.features.push(getPoint(waypoints[i]));
17827             }
17828             function getLinestring(node, pointname) {
17829                 var j, pts = get(node, pointname), line = [];
17830                 for (j = 0; j < pts.length; j++) {
17831                     line.push(coordPair(pts[j]));
17832                 }
17833                 return {
17834                     type: 'Feature',
17835                     properties: getProperties(node),
17836                     geometry: {
17837                         type: 'LineString',
17838                         coordinates: line
17839                     }
17840                 };
17841             }
17842             function getPoint(node) {
17843                 var prop = getProperties(node);
17844                 prop.ele = nodeVal(get1(node, 'ele'));
17845                 prop.sym = nodeVal(get1(node, 'sym'));
17846                 return {
17847                     type: 'Feature',
17848                     properties: prop,
17849                     geometry: {
17850                         type: 'Point',
17851                         coordinates: coordPair(node)
17852                     }
17853                 };
17854             }
17855             function getProperties(node) {
17856                 var meta = ['name', 'desc', 'author', 'copyright', 'link',
17857                             'time', 'keywords'],
17858                     prop = {},
17859                     k;
17860                 for (k = 0; k < meta.length; k++) {
17861                     prop[meta[k]] = nodeVal(get1(node, meta[k]));
17862                 }
17863                 return clean(prop);
17864             }
17865             return gj;
17866         }
17867     };
17868     return t;
17869 })();
17870
17871 if (typeof module !== 'undefined') module.exports = toGeoJSON;
17872 /**
17873  * marked - a markdown parser
17874  * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed)
17875  * https://github.com/chjj/marked
17876  */
17877
17878 ;(function() {
17879
17880 /**
17881  * Block-Level Grammar
17882  */
17883
17884 var block = {
17885   newline: /^\n+/,
17886   code: /^( {4}[^\n]+\n*)+/,
17887   fences: noop,
17888   hr: /^( *[-*_]){3,} *(?:\n+|$)/,
17889   heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
17890   nptable: noop,
17891   lheading: /^([^\n]+)\n *(=|-){3,} *\n*/,
17892   blockquote: /^( *>[^\n]+(\n[^\n]+)*\n*)+/,
17893   list: /^( *)(bull) [\s\S]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
17894   html: /^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,
17895   def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
17896   table: noop,
17897   paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
17898   text: /^[^\n]+/
17899 };
17900
17901 block.bullet = /(?:[*+-]|\d+\.)/;
17902 block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
17903 block.item = replace(block.item, 'gm')
17904   (/bull/g, block.bullet)
17905   ();
17906
17907 block.list = replace(block.list)
17908   (/bull/g, block.bullet)
17909   ('hr', /\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)
17910   ();
17911
17912 block._tag = '(?!(?:'
17913   + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
17914   + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
17915   + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b';
17916
17917 block.html = replace(block.html)
17918   ('comment', /<!--[\s\S]*?-->/)
17919   ('closed', /<(tag)[\s\S]+?<\/\1>/)
17920   ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
17921   (/tag/g, block._tag)
17922   ();
17923
17924 block.paragraph = replace(block.paragraph)
17925   ('hr', block.hr)
17926   ('heading', block.heading)
17927   ('lheading', block.lheading)
17928   ('blockquote', block.blockquote)
17929   ('tag', '<' + block._tag)
17930   ('def', block.def)
17931   ();
17932
17933 /**
17934  * Normal Block Grammar
17935  */
17936
17937 block.normal = merge({}, block);
17938
17939 /**
17940  * GFM Block Grammar
17941  */
17942
17943 block.gfm = merge({}, block.normal, {
17944   fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,
17945   paragraph: /^/
17946 });
17947
17948 block.gfm.paragraph = replace(block.paragraph)
17949   ('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|')
17950   ();
17951
17952 /**
17953  * GFM + Tables Block Grammar
17954  */
17955
17956 block.tables = merge({}, block.gfm, {
17957   nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
17958   table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
17959 });
17960
17961 /**
17962  * Block Lexer
17963  */
17964
17965 function Lexer(options) {
17966   this.tokens = [];
17967   this.tokens.links = {};
17968   this.options = options || marked.defaults;
17969   this.rules = block.normal;
17970
17971   if (this.options.gfm) {
17972     if (this.options.tables) {
17973       this.rules = block.tables;
17974     } else {
17975       this.rules = block.gfm;
17976     }
17977   }
17978 }
17979
17980 /**
17981  * Expose Block Rules
17982  */
17983
17984 Lexer.rules = block;
17985
17986 /**
17987  * Static Lex Method
17988  */
17989
17990 Lexer.lex = function(src, options) {
17991   var lexer = new Lexer(options);
17992   return lexer.lex(src);
17993 };
17994
17995 /**
17996  * Preprocessing
17997  */
17998
17999 Lexer.prototype.lex = function(src) {
18000   src = src
18001     .replace(/\r\n|\r/g, '\n')
18002     .replace(/\t/g, '    ')
18003     .replace(/\u00a0/g, ' ')
18004     .replace(/\u2424/g, '\n');
18005
18006   return this.token(src, true);
18007 };
18008
18009 /**
18010  * Lexing
18011  */
18012
18013 Lexer.prototype.token = function(src, top) {
18014   var src = src.replace(/^ +$/gm, '')
18015     , next
18016     , loose
18017     , cap
18018     , bull
18019     , b
18020     , item
18021     , space
18022     , i
18023     , l;
18024
18025   while (src) {
18026     // newline
18027     if (cap = this.rules.newline.exec(src)) {
18028       src = src.substring(cap[0].length);
18029       if (cap[0].length > 1) {
18030         this.tokens.push({
18031           type: 'space'
18032         });
18033       }
18034     }
18035
18036     // code
18037     if (cap = this.rules.code.exec(src)) {
18038       src = src.substring(cap[0].length);
18039       cap = cap[0].replace(/^ {4}/gm, '');
18040       this.tokens.push({
18041         type: 'code',
18042         text: !this.options.pedantic
18043           ? cap.replace(/\n+$/, '')
18044           : cap
18045       });
18046       continue;
18047     }
18048
18049     // fences (gfm)
18050     if (cap = this.rules.fences.exec(src)) {
18051       src = src.substring(cap[0].length);
18052       this.tokens.push({
18053         type: 'code',
18054         lang: cap[2],
18055         text: cap[3]
18056       });
18057       continue;
18058     }
18059
18060     // heading
18061     if (cap = this.rules.heading.exec(src)) {
18062       src = src.substring(cap[0].length);
18063       this.tokens.push({
18064         type: 'heading',
18065         depth: cap[1].length,
18066         text: cap[2]
18067       });
18068       continue;
18069     }
18070
18071     // table no leading pipe (gfm)
18072     if (top && (cap = this.rules.nptable.exec(src))) {
18073       src = src.substring(cap[0].length);
18074
18075       item = {
18076         type: 'table',
18077         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18078         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18079         cells: cap[3].replace(/\n$/, '').split('\n')
18080       };
18081
18082       for (i = 0; i < item.align.length; i++) {
18083         if (/^ *-+: *$/.test(item.align[i])) {
18084           item.align[i] = 'right';
18085         } else if (/^ *:-+: *$/.test(item.align[i])) {
18086           item.align[i] = 'center';
18087         } else if (/^ *:-+ *$/.test(item.align[i])) {
18088           item.align[i] = 'left';
18089         } else {
18090           item.align[i] = null;
18091         }
18092       }
18093
18094       for (i = 0; i < item.cells.length; i++) {
18095         item.cells[i] = item.cells[i].split(/ *\| */);
18096       }
18097
18098       this.tokens.push(item);
18099
18100       continue;
18101     }
18102
18103     // lheading
18104     if (cap = this.rules.lheading.exec(src)) {
18105       src = src.substring(cap[0].length);
18106       this.tokens.push({
18107         type: 'heading',
18108         depth: cap[2] === '=' ? 1 : 2,
18109         text: cap[1]
18110       });
18111       continue;
18112     }
18113
18114     // hr
18115     if (cap = this.rules.hr.exec(src)) {
18116       src = src.substring(cap[0].length);
18117       this.tokens.push({
18118         type: 'hr'
18119       });
18120       continue;
18121     }
18122
18123     // blockquote
18124     if (cap = this.rules.blockquote.exec(src)) {
18125       src = src.substring(cap[0].length);
18126
18127       this.tokens.push({
18128         type: 'blockquote_start'
18129       });
18130
18131       cap = cap[0].replace(/^ *> ?/gm, '');
18132
18133       // Pass `top` to keep the current
18134       // "toplevel" state. This is exactly
18135       // how markdown.pl works.
18136       this.token(cap, top);
18137
18138       this.tokens.push({
18139         type: 'blockquote_end'
18140       });
18141
18142       continue;
18143     }
18144
18145     // list
18146     if (cap = this.rules.list.exec(src)) {
18147       src = src.substring(cap[0].length);
18148       bull = cap[2];
18149
18150       this.tokens.push({
18151         type: 'list_start',
18152         ordered: bull.length > 1
18153       });
18154
18155       // Get each top-level item.
18156       cap = cap[0].match(this.rules.item);
18157
18158       next = false;
18159       l = cap.length;
18160       i = 0;
18161
18162       for (; i < l; i++) {
18163         item = cap[i];
18164
18165         // Remove the list item's bullet
18166         // so it is seen as the next token.
18167         space = item.length;
18168         item = item.replace(/^ *([*+-]|\d+\.) +/, '');
18169
18170         // Outdent whatever the
18171         // list item contains. Hacky.
18172         if (~item.indexOf('\n ')) {
18173           space -= item.length;
18174           item = !this.options.pedantic
18175             ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
18176             : item.replace(/^ {1,4}/gm, '');
18177         }
18178
18179         // Determine whether the next list item belongs here.
18180         // Backpedal if it does not belong in this list.
18181         if (this.options.smartLists && i !== l - 1) {
18182           b = block.bullet.exec(cap[i+1])[0];
18183           if (bull !== b && !(bull.length > 1 && b.length > 1)) {
18184             src = cap.slice(i + 1).join('\n') + src;
18185             i = l - 1;
18186           }
18187         }
18188
18189         // Determine whether item is loose or not.
18190         // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
18191         // for discount behavior.
18192         loose = next || /\n\n(?!\s*$)/.test(item);
18193         if (i !== l - 1) {
18194           next = item[item.length-1] === '\n';
18195           if (!loose) loose = next;
18196         }
18197
18198         this.tokens.push({
18199           type: loose
18200             ? 'loose_item_start'
18201             : 'list_item_start'
18202         });
18203
18204         // Recurse.
18205         this.token(item, false);
18206
18207         this.tokens.push({
18208           type: 'list_item_end'
18209         });
18210       }
18211
18212       this.tokens.push({
18213         type: 'list_end'
18214       });
18215
18216       continue;
18217     }
18218
18219     // html
18220     if (cap = this.rules.html.exec(src)) {
18221       src = src.substring(cap[0].length);
18222       this.tokens.push({
18223         type: this.options.sanitize
18224           ? 'paragraph'
18225           : 'html',
18226         pre: cap[1] === 'pre' || cap[1] === 'script',
18227         text: cap[0]
18228       });
18229       continue;
18230     }
18231
18232     // def
18233     if (top && (cap = this.rules.def.exec(src))) {
18234       src = src.substring(cap[0].length);
18235       this.tokens.links[cap[1].toLowerCase()] = {
18236         href: cap[2],
18237         title: cap[3]
18238       };
18239       continue;
18240     }
18241
18242     // table (gfm)
18243     if (top && (cap = this.rules.table.exec(src))) {
18244       src = src.substring(cap[0].length);
18245
18246       item = {
18247         type: 'table',
18248         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18249         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18250         cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
18251       };
18252
18253       for (i = 0; i < item.align.length; i++) {
18254         if (/^ *-+: *$/.test(item.align[i])) {
18255           item.align[i] = 'right';
18256         } else if (/^ *:-+: *$/.test(item.align[i])) {
18257           item.align[i] = 'center';
18258         } else if (/^ *:-+ *$/.test(item.align[i])) {
18259           item.align[i] = 'left';
18260         } else {
18261           item.align[i] = null;
18262         }
18263       }
18264
18265       for (i = 0; i < item.cells.length; i++) {
18266         item.cells[i] = item.cells[i]
18267           .replace(/^ *\| *| *\| *$/g, '')
18268           .split(/ *\| */);
18269       }
18270
18271       this.tokens.push(item);
18272
18273       continue;
18274     }
18275
18276     // top-level paragraph
18277     if (top && (cap = this.rules.paragraph.exec(src))) {
18278       src = src.substring(cap[0].length);
18279       this.tokens.push({
18280         type: 'paragraph',
18281         text: cap[1][cap[1].length-1] === '\n'
18282           ? cap[1].slice(0, -1)
18283           : cap[1]
18284       });
18285       continue;
18286     }
18287
18288     // text
18289     if (cap = this.rules.text.exec(src)) {
18290       // Top-level should never reach here.
18291       src = src.substring(cap[0].length);
18292       this.tokens.push({
18293         type: 'text',
18294         text: cap[0]
18295       });
18296       continue;
18297     }
18298
18299     if (src) {
18300       throw new
18301         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18302     }
18303   }
18304
18305   return this.tokens;
18306 };
18307
18308 /**
18309  * Inline-Level Grammar
18310  */
18311
18312 var inline = {
18313   escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
18314   autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
18315   url: noop,
18316   tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
18317   link: /^!?\[(inside)\]\(href\)/,
18318   reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
18319   nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
18320   strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
18321   em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
18322   code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
18323   br: /^ {2,}\n(?!\s*$)/,
18324   del: noop,
18325   text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
18326 };
18327
18328 inline._inside = /(?:\[[^\]]*\]|[^\]]|\](?=[^\[]*\]))*/;
18329 inline._href = /\s*<?([^\s]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
18330
18331 inline.link = replace(inline.link)
18332   ('inside', inline._inside)
18333   ('href', inline._href)
18334   ();
18335
18336 inline.reflink = replace(inline.reflink)
18337   ('inside', inline._inside)
18338   ();
18339
18340 /**
18341  * Normal Inline Grammar
18342  */
18343
18344 inline.normal = merge({}, inline);
18345
18346 /**
18347  * Pedantic Inline Grammar
18348  */
18349
18350 inline.pedantic = merge({}, inline.normal, {
18351   strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
18352   em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
18353 });
18354
18355 /**
18356  * GFM Inline Grammar
18357  */
18358
18359 inline.gfm = merge({}, inline.normal, {
18360   escape: replace(inline.escape)('])', '~|])')(),
18361   url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
18362   del: /^~~(?=\S)([\s\S]*?\S)~~/,
18363   text: replace(inline.text)
18364     (']|', '~]|')
18365     ('|', '|https?://|')
18366     ()
18367 });
18368
18369 /**
18370  * GFM + Line Breaks Inline Grammar
18371  */
18372
18373 inline.breaks = merge({}, inline.gfm, {
18374   br: replace(inline.br)('{2,}', '*')(),
18375   text: replace(inline.gfm.text)('{2,}', '*')()
18376 });
18377
18378 /**
18379  * Inline Lexer & Compiler
18380  */
18381
18382 function InlineLexer(links, options) {
18383   this.options = options || marked.defaults;
18384   this.links = links;
18385   this.rules = inline.normal;
18386
18387   if (!this.links) {
18388     throw new
18389       Error('Tokens array requires a `links` property.');
18390   }
18391
18392   if (this.options.gfm) {
18393     if (this.options.breaks) {
18394       this.rules = inline.breaks;
18395     } else {
18396       this.rules = inline.gfm;
18397     }
18398   } else if (this.options.pedantic) {
18399     this.rules = inline.pedantic;
18400   }
18401 }
18402
18403 /**
18404  * Expose Inline Rules
18405  */
18406
18407 InlineLexer.rules = inline;
18408
18409 /**
18410  * Static Lexing/Compiling Method
18411  */
18412
18413 InlineLexer.output = function(src, links, options) {
18414   var inline = new InlineLexer(links, options);
18415   return inline.output(src);
18416 };
18417
18418 /**
18419  * Lexing/Compiling
18420  */
18421
18422 InlineLexer.prototype.output = function(src) {
18423   var out = ''
18424     , link
18425     , text
18426     , href
18427     , cap;
18428
18429   while (src) {
18430     // escape
18431     if (cap = this.rules.escape.exec(src)) {
18432       src = src.substring(cap[0].length);
18433       out += cap[1];
18434       continue;
18435     }
18436
18437     // autolink
18438     if (cap = this.rules.autolink.exec(src)) {
18439       src = src.substring(cap[0].length);
18440       if (cap[2] === '@') {
18441         text = cap[1][6] === ':'
18442           ? this.mangle(cap[1].substring(7))
18443           : this.mangle(cap[1]);
18444         href = this.mangle('mailto:') + text;
18445       } else {
18446         text = escape(cap[1]);
18447         href = text;
18448       }
18449       out += '<a href="'
18450         + href
18451         + '">'
18452         + text
18453         + '</a>';
18454       continue;
18455     }
18456
18457     // url (gfm)
18458     if (cap = this.rules.url.exec(src)) {
18459       src = src.substring(cap[0].length);
18460       text = escape(cap[1]);
18461       href = text;
18462       out += '<a href="'
18463         + href
18464         + '">'
18465         + text
18466         + '</a>';
18467       continue;
18468     }
18469
18470     // tag
18471     if (cap = this.rules.tag.exec(src)) {
18472       src = src.substring(cap[0].length);
18473       out += this.options.sanitize
18474         ? escape(cap[0])
18475         : cap[0];
18476       continue;
18477     }
18478
18479     // link
18480     if (cap = this.rules.link.exec(src)) {
18481       src = src.substring(cap[0].length);
18482       out += this.outputLink(cap, {
18483         href: cap[2],
18484         title: cap[3]
18485       });
18486       continue;
18487     }
18488
18489     // reflink, nolink
18490     if ((cap = this.rules.reflink.exec(src))
18491         || (cap = this.rules.nolink.exec(src))) {
18492       src = src.substring(cap[0].length);
18493       link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
18494       link = this.links[link.toLowerCase()];
18495       if (!link || !link.href) {
18496         out += cap[0][0];
18497         src = cap[0].substring(1) + src;
18498         continue;
18499       }
18500       out += this.outputLink(cap, link);
18501       continue;
18502     }
18503
18504     // strong
18505     if (cap = this.rules.strong.exec(src)) {
18506       src = src.substring(cap[0].length);
18507       out += '<strong>'
18508         + this.output(cap[2] || cap[1])
18509         + '</strong>';
18510       continue;
18511     }
18512
18513     // em
18514     if (cap = this.rules.em.exec(src)) {
18515       src = src.substring(cap[0].length);
18516       out += '<em>'
18517         + this.output(cap[2] || cap[1])
18518         + '</em>';
18519       continue;
18520     }
18521
18522     // code
18523     if (cap = this.rules.code.exec(src)) {
18524       src = src.substring(cap[0].length);
18525       out += '<code>'
18526         + escape(cap[2], true)
18527         + '</code>';
18528       continue;
18529     }
18530
18531     // br
18532     if (cap = this.rules.br.exec(src)) {
18533       src = src.substring(cap[0].length);
18534       out += '<br>';
18535       continue;
18536     }
18537
18538     // del (gfm)
18539     if (cap = this.rules.del.exec(src)) {
18540       src = src.substring(cap[0].length);
18541       out += '<del>'
18542         + this.output(cap[1])
18543         + '</del>';
18544       continue;
18545     }
18546
18547     // text
18548     if (cap = this.rules.text.exec(src)) {
18549       src = src.substring(cap[0].length);
18550       out += escape(cap[0]);
18551       continue;
18552     }
18553
18554     if (src) {
18555       throw new
18556         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18557     }
18558   }
18559
18560   return out;
18561 };
18562
18563 /**
18564  * Compile Link
18565  */
18566
18567 InlineLexer.prototype.outputLink = function(cap, link) {
18568   if (cap[0][0] !== '!') {
18569     return '<a href="'
18570       + escape(link.href)
18571       + '"'
18572       + (link.title
18573       ? ' title="'
18574       + escape(link.title)
18575       + '"'
18576       : '')
18577       + '>'
18578       + this.output(cap[1])
18579       + '</a>';
18580   } else {
18581     return '<img src="'
18582       + escape(link.href)
18583       + '" alt="'
18584       + escape(cap[1])
18585       + '"'
18586       + (link.title
18587       ? ' title="'
18588       + escape(link.title)
18589       + '"'
18590       : '')
18591       + '>';
18592   }
18593 };
18594
18595 /**
18596  * Smartypants Transformations
18597  */
18598
18599 InlineLexer.prototype.smartypants = function(text) {
18600   if (!this.options.smartypants) return text;
18601   return text
18602     .replace(/--/g, '—')
18603     .replace(/'([^']*)'/g, '‘$1’')
18604     .replace(/"([^"]*)"/g, '“$1”')
18605     .replace(/\.{3}/g, '…');
18606 };
18607
18608 /**
18609  * Mangle Links
18610  */
18611
18612 InlineLexer.prototype.mangle = function(text) {
18613   var out = ''
18614     , l = text.length
18615     , i = 0
18616     , ch;
18617
18618   for (; i < l; i++) {
18619     ch = text.charCodeAt(i);
18620     if (Math.random() > 0.5) {
18621       ch = 'x' + ch.toString(16);
18622     }
18623     out += '&#' + ch + ';';
18624   }
18625
18626   return out;
18627 };
18628
18629 /**
18630  * Parsing & Compiling
18631  */
18632
18633 function Parser(options) {
18634   this.tokens = [];
18635   this.token = null;
18636   this.options = options || marked.defaults;
18637 }
18638
18639 /**
18640  * Static Parse Method
18641  */
18642
18643 Parser.parse = function(src, options) {
18644   var parser = new Parser(options);
18645   return parser.parse(src);
18646 };
18647
18648 /**
18649  * Parse Loop
18650  */
18651
18652 Parser.prototype.parse = function(src) {
18653   this.inline = new InlineLexer(src.links, this.options);
18654   this.tokens = src.reverse();
18655
18656   var out = '';
18657   while (this.next()) {
18658     out += this.tok();
18659   }
18660
18661   return out;
18662 };
18663
18664 /**
18665  * Next Token
18666  */
18667
18668 Parser.prototype.next = function() {
18669   return this.token = this.tokens.pop();
18670 };
18671
18672 /**
18673  * Preview Next Token
18674  */
18675
18676 Parser.prototype.peek = function() {
18677   return this.tokens[this.tokens.length-1] || 0;
18678 };
18679
18680 /**
18681  * Parse Text Tokens
18682  */
18683
18684 Parser.prototype.parseText = function() {
18685   var body = this.token.text;
18686
18687   while (this.peek().type === 'text') {
18688     body += '\n' + this.next().text;
18689   }
18690
18691   return this.inline.output(body);
18692 };
18693
18694 /**
18695  * Parse Current Token
18696  */
18697
18698 Parser.prototype.tok = function() {
18699   switch (this.token.type) {
18700     case 'space': {
18701       return '';
18702     }
18703     case 'hr': {
18704       return '<hr>\n';
18705     }
18706     case 'heading': {
18707       return '<h'
18708         + this.token.depth
18709         + '>'
18710         + this.inline.output(this.token.text)
18711         + '</h'
18712         + this.token.depth
18713         + '>\n';
18714     }
18715     case 'code': {
18716       if (this.options.highlight) {
18717         var code = this.options.highlight(this.token.text, this.token.lang);
18718         if (code != null && code !== this.token.text) {
18719           this.token.escaped = true;
18720           this.token.text = code;
18721         }
18722       }
18723
18724       if (!this.token.escaped) {
18725         this.token.text = escape(this.token.text, true);
18726       }
18727
18728       return '<pre><code'
18729         + (this.token.lang
18730         ? ' class="'
18731         + this.options.langPrefix
18732         + this.token.lang
18733         + '"'
18734         : '')
18735         + '>'
18736         + this.token.text
18737         + '</code></pre>\n';
18738     }
18739     case 'table': {
18740       var body = ''
18741         , heading
18742         , i
18743         , row
18744         , cell
18745         , j;
18746
18747       // header
18748       body += '<thead>\n<tr>\n';
18749       for (i = 0; i < this.token.header.length; i++) {
18750         heading = this.inline.output(this.token.header[i]);
18751         body += this.token.align[i]
18752           ? '<th align="' + this.token.align[i] + '">' + heading + '</th>\n'
18753           : '<th>' + heading + '</th>\n';
18754       }
18755       body += '</tr>\n</thead>\n';
18756
18757       // body
18758       body += '<tbody>\n'
18759       for (i = 0; i < this.token.cells.length; i++) {
18760         row = this.token.cells[i];
18761         body += '<tr>\n';
18762         for (j = 0; j < row.length; j++) {
18763           cell = this.inline.output(row[j]);
18764           body += this.token.align[j]
18765             ? '<td align="' + this.token.align[j] + '">' + cell + '</td>\n'
18766             : '<td>' + cell + '</td>\n';
18767         }
18768         body += '</tr>\n';
18769       }
18770       body += '</tbody>\n';
18771
18772       return '<table>\n'
18773         + body
18774         + '</table>\n';
18775     }
18776     case 'blockquote_start': {
18777       var body = '';
18778
18779       while (this.next().type !== 'blockquote_end') {
18780         body += this.tok();
18781       }
18782
18783       return '<blockquote>\n'
18784         + body
18785         + '</blockquote>\n';
18786     }
18787     case 'list_start': {
18788       var type = this.token.ordered ? 'ol' : 'ul'
18789         , body = '';
18790
18791       while (this.next().type !== 'list_end') {
18792         body += this.tok();
18793       }
18794
18795       return '<'
18796         + type
18797         + '>\n'
18798         + body
18799         + '</'
18800         + type
18801         + '>\n';
18802     }
18803     case 'list_item_start': {
18804       var body = '';
18805
18806       while (this.next().type !== 'list_item_end') {
18807         body += this.token.type === 'text'
18808           ? this.parseText()
18809           : this.tok();
18810       }
18811
18812       return '<li>'
18813         + body
18814         + '</li>\n';
18815     }
18816     case 'loose_item_start': {
18817       var body = '';
18818
18819       while (this.next().type !== 'list_item_end') {
18820         body += this.tok();
18821       }
18822
18823       return '<li>'
18824         + body
18825         + '</li>\n';
18826     }
18827     case 'html': {
18828       return !this.token.pre && !this.options.pedantic
18829         ? this.inline.output(this.token.text)
18830         : this.token.text;
18831     }
18832     case 'paragraph': {
18833       return '<p>'
18834         + this.inline.output(this.token.text)
18835         + '</p>\n';
18836     }
18837     case 'text': {
18838       return '<p>'
18839         + this.parseText()
18840         + '</p>\n';
18841     }
18842   }
18843 };
18844
18845 /**
18846  * Helpers
18847  */
18848
18849 function escape(html, encode) {
18850   return html
18851     .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
18852     .replace(/</g, '&lt;')
18853     .replace(/>/g, '&gt;')
18854     .replace(/"/g, '&quot;')
18855     .replace(/'/g, '&#39;');
18856 }
18857
18858 function replace(regex, opt) {
18859   regex = regex.source;
18860   opt = opt || '';
18861   return function self(name, val) {
18862     if (!name) return new RegExp(regex, opt);
18863     val = val.source || val;
18864     val = val.replace(/(^|[^\[])\^/g, '$1');
18865     regex = regex.replace(name, val);
18866     return self;
18867   };
18868 }
18869
18870 function noop() {}
18871 noop.exec = noop;
18872
18873 function merge(obj) {
18874   var i = 1
18875     , target
18876     , key;
18877
18878   for (; i < arguments.length; i++) {
18879     target = arguments[i];
18880     for (key in target) {
18881       if (Object.prototype.hasOwnProperty.call(target, key)) {
18882         obj[key] = target[key];
18883       }
18884     }
18885   }
18886
18887   return obj;
18888 }
18889
18890 /**
18891  * Marked
18892  */
18893
18894 function marked(src, opt, callback) {
18895   if (callback || typeof opt === 'function') {
18896     if (!callback) {
18897       callback = opt;
18898       opt = null;
18899     }
18900
18901     if (opt) opt = merge({}, marked.defaults, opt);
18902
18903     var tokens = Lexer.lex(tokens, opt)
18904       , highlight = opt.highlight
18905       , pending = 0
18906       , l = tokens.length
18907       , i = 0;
18908
18909     if (!highlight || highlight.length < 3) {
18910       return callback(null, Parser.parse(tokens, opt));
18911     }
18912
18913     var done = function() {
18914       delete opt.highlight;
18915       var out = Parser.parse(tokens, opt);
18916       opt.highlight = highlight;
18917       return callback(null, out);
18918     };
18919
18920     for (; i < l; i++) {
18921       (function(token) {
18922         if (token.type !== 'code') return;
18923         pending++;
18924         return highlight(token.text, token.lang, function(err, code) {
18925           if (code == null || code === token.text) {
18926             return --pending || done();
18927           }
18928           token.text = code;
18929           token.escaped = true;
18930           --pending || done();
18931         });
18932       })(tokens[i]);
18933     }
18934
18935     return;
18936   }
18937   try {
18938     if (opt) opt = merge({}, marked.defaults, opt);
18939     return Parser.parse(Lexer.lex(src, opt), opt);
18940   } catch (e) {
18941     e.message += '\nPlease report this to https://github.com/chjj/marked.';
18942     if ((opt || marked.defaults).silent) {
18943       return '<p>An error occured:</p><pre>'
18944         + escape(e.message + '', true)
18945         + '</pre>';
18946     }
18947     throw e;
18948   }
18949 }
18950
18951 /**
18952  * Options
18953  */
18954
18955 marked.options =
18956 marked.setOptions = function(opt) {
18957   merge(marked.defaults, opt);
18958   return marked;
18959 };
18960
18961 marked.defaults = {
18962   gfm: true,
18963   tables: true,
18964   breaks: false,
18965   pedantic: false,
18966   sanitize: false,
18967   smartLists: false,
18968   silent: false,
18969   highlight: null,
18970   langPrefix: 'lang-'
18971 };
18972
18973 /**
18974  * Expose
18975  */
18976
18977 marked.Parser = Parser;
18978 marked.parser = Parser.parse;
18979
18980 marked.Lexer = Lexer;
18981 marked.lexer = Lexer.lex;
18982
18983 marked.InlineLexer = InlineLexer;
18984 marked.inlineLexer = InlineLexer.output;
18985
18986 marked.parse = marked;
18987
18988 if (typeof exports === 'object') {
18989   module.exports = marked;
18990 } else if (typeof define === 'function' && define.amd) {
18991   define(function() { return marked; });
18992 } else {
18993   this.marked = marked;
18994 }
18995
18996 }).call(function() {
18997   return this || (typeof window !== 'undefined' ? window : global);
18998 }());
18999 (function () {
19000 'use strict';
19001 window.iD = function () {
19002     window.locale.en = iD.data.en;
19003     window.locale.current('en');
19004
19005     var context = {},
19006         storage;
19007
19008     // https://github.com/openstreetmap/iD/issues/772
19009     // http://mathiasbynens.be/notes/localstorage-pattern#comment-9
19010     try { storage = localStorage; } catch (e) {}  // eslint-disable-line no-empty
19011     storage = storage || (function() {
19012         var s = {};
19013         return {
19014             getItem: function(k) { return s[k]; },
19015             setItem: function(k, v) { s[k] = v; },
19016             removeItem: function(k) { delete s[k]; }
19017         };
19018     })();
19019
19020     context.storage = function(k, v) {
19021         try {
19022             if (arguments.length === 1) return storage.getItem(k);
19023             else if (v === null) storage.removeItem(k);
19024             else storage.setItem(k, v);
19025         } catch(e) {
19026             // localstorage quota exceeded
19027             /* eslint-disable no-console */
19028             if (typeof console !== 'undefined') console.error('localStorage quota exceeded');
19029             /* eslint-enable no-console */
19030         }
19031     };
19032
19033     /* Accessor for setting minimum zoom for editing features. */
19034
19035     var minEditableZoom = 16;
19036     context.minEditableZoom = function(_) {
19037         if (!arguments.length) return minEditableZoom;
19038         minEditableZoom = _;
19039         connection.tileZoom(_);
19040         return context;
19041     };
19042
19043     var history = iD.History(context),
19044         dispatch = d3.dispatch('enter', 'exit'),
19045         mode,
19046         container,
19047         ui = iD.ui(context),
19048         connection = iD.Connection(),
19049         locale = iD.detect().locale,
19050         localePath;
19051
19052     if (locale && iD.data.locales.indexOf(locale) === -1) {
19053         locale = locale.split('-')[0];
19054     }
19055
19056     context.preauth = function(options) {
19057         connection.switch(options);
19058         return context;
19059     };
19060
19061     context.locale = function(loc, path) {
19062         locale = loc;
19063         localePath = path;
19064
19065         // Also set iD.detect().locale (unless we detected 'en-us' and openstreetmap wants 'en')..
19066         if (!(loc.toLowerCase() === 'en' && iD.detect().locale.toLowerCase() === 'en-us')) {
19067             iD.detect().locale = loc;
19068         }
19069
19070         return context;
19071     };
19072
19073     context.loadLocale = function(cb) {
19074         if (locale && locale !== 'en' && iD.data.locales.indexOf(locale) !== -1) {
19075             localePath = localePath || context.assetPath() + 'locales/' + locale + '.json';
19076             d3.json(localePath, function(err, result) {
19077                 window.locale[locale] = result;
19078                 window.locale.current(locale);
19079                 cb();
19080             });
19081         } else {
19082             cb();
19083         }
19084     };
19085
19086     /* Straight accessors. Avoid using these if you can. */
19087     context.ui = function() { return ui; };
19088     context.connection = function() { return connection; };
19089     context.history = function() { return history; };
19090
19091     /* Connection */
19092     function entitiesLoaded(err, result) {
19093         if (!err) history.merge(result.data, result.extent);
19094     }
19095
19096     context.loadTiles = function(projection, dimensions, callback) {
19097         function done(err, result) {
19098             entitiesLoaded(err, result);
19099             if (callback) callback(err, result);
19100         }
19101         connection.loadTiles(projection, dimensions, done);
19102     };
19103
19104     context.loadEntity = function(id, callback) {
19105         function done(err, result) {
19106             entitiesLoaded(err, result);
19107             if (callback) callback(err, result);
19108         }
19109         connection.loadEntity(id, done);
19110     };
19111
19112     context.zoomToEntity = function(id, zoomTo) {
19113         if (zoomTo !== false) {
19114             this.loadEntity(id, function(err, result) {
19115                 if (err) return;
19116                 var entity = _.find(result.data, function(e) { return e.id === id; });
19117                 if (entity) { map.zoomTo(entity); }
19118             });
19119         }
19120
19121         map.on('drawn.zoomToEntity', function() {
19122             if (!context.hasEntity(id)) return;
19123             map.on('drawn.zoomToEntity', null);
19124             context.on('enter.zoomToEntity', null);
19125             context.enter(iD.modes.Select(context, [id]));
19126         });
19127
19128         context.on('enter.zoomToEntity', function() {
19129             if (mode.id !== 'browse') {
19130                 map.on('drawn.zoomToEntity', null);
19131                 context.on('enter.zoomToEntity', null);
19132             }
19133         });
19134     };
19135
19136     /* History */
19137     context.graph = history.graph;
19138     context.changes = history.changes;
19139     context.intersects = history.intersects;
19140
19141     var inIntro = false;
19142
19143     context.inIntro = function(_) {
19144         if (!arguments.length) return inIntro;
19145         inIntro = _;
19146         return context;
19147     };
19148
19149     context.save = function() {
19150         if (inIntro || (mode && mode.id === 'save')) return;
19151         history.save();
19152         if (history.hasChanges()) return t('save.unsaved_changes');
19153     };
19154
19155     context.flush = function() {
19156         connection.flush();
19157         features.reset();
19158         history.reset();
19159         return context;
19160     };
19161
19162     // Debounce save, since it's a synchronous localStorage write,
19163     // and history changes can happen frequently (e.g. when dragging).
19164     var debouncedSave = _.debounce(context.save, 350);
19165     function withDebouncedSave(fn) {
19166         return function() {
19167             var result = fn.apply(history, arguments);
19168             debouncedSave();
19169             return result;
19170         };
19171     }
19172
19173     context.perform = withDebouncedSave(history.perform);
19174     context.replace = withDebouncedSave(history.replace);
19175     context.pop = withDebouncedSave(history.pop);
19176     context.overwrite = withDebouncedSave(history.overwrite);
19177     context.undo = withDebouncedSave(history.undo);
19178     context.redo = withDebouncedSave(history.redo);
19179
19180     /* Graph */
19181     context.hasEntity = function(id) {
19182         return history.graph().hasEntity(id);
19183     };
19184
19185     context.entity = function(id) {
19186         return history.graph().entity(id);
19187     };
19188
19189     context.childNodes = function(way) {
19190         return history.graph().childNodes(way);
19191     };
19192
19193     context.geometry = function(id) {
19194         return context.entity(id).geometry(history.graph());
19195     };
19196
19197     /* Modes */
19198     context.enter = function(newMode) {
19199         if (mode) {
19200             mode.exit();
19201             dispatch.exit(mode);
19202         }
19203
19204         mode = newMode;
19205         mode.enter();
19206         dispatch.enter(mode);
19207     };
19208
19209     context.mode = function() {
19210         return mode;
19211     };
19212
19213     context.selectedIDs = function() {
19214         if (mode && mode.selectedIDs) {
19215             return mode.selectedIDs();
19216         } else {
19217             return [];
19218         }
19219     };
19220
19221     /* Behaviors */
19222     context.install = function(behavior) {
19223         context.surface().call(behavior);
19224     };
19225
19226     context.uninstall = function(behavior) {
19227         context.surface().call(behavior.off);
19228     };
19229
19230     /* Copy/Paste */
19231     var copyIDs = [], copyGraph;
19232     context.copyGraph = function() { return copyGraph; };
19233     context.copyIDs = function(_) {
19234         if (!arguments.length) return copyIDs;
19235         copyIDs = _;
19236         copyGraph = history.graph();
19237         return context;
19238     };
19239
19240     /* Projection */
19241     context.projection = iD.geo.RawMercator();
19242
19243     /* Background */
19244     var background = iD.Background(context);
19245     context.background = function() { return background; };
19246
19247     /* Features */
19248     var features = iD.Features(context);
19249     context.features = function() { return features; };
19250     context.hasHiddenConnections = function(id) {
19251         var graph = history.graph(),
19252             entity = graph.entity(id);
19253         return features.hasHiddenConnections(entity, graph);
19254     };
19255
19256     /* Map */
19257     var map = iD.Map(context);
19258     context.map = function() { return map; };
19259     context.layers = function() { return map.layers; };
19260     context.surface = function() { return map.surface; };
19261     context.editable = function() { return map.editable(); };
19262     context.mouse = map.mouse;
19263     context.extent = map.extent;
19264     context.pan = map.pan;
19265     context.zoomIn = map.zoomIn;
19266     context.zoomOut = map.zoomOut;
19267     context.zoomInFurther = map.zoomInFurther;
19268     context.zoomOutFurther = map.zoomOutFurther;
19269
19270     context.surfaceRect = function() {
19271         // Work around a bug in Firefox.
19272         //   http://stackoverflow.com/questions/18153989/
19273         //   https://bugzilla.mozilla.org/show_bug.cgi?id=530985
19274         return context.surface().node().parentNode.getBoundingClientRect();
19275     };
19276
19277     /* Presets */
19278     var presets = iD.presets();
19279
19280     context.presets = function(_) {
19281         if (!arguments.length) return presets;
19282         presets.load(_);
19283         iD.areaKeys = presets.areaKeys();
19284         return context;
19285     };
19286
19287     context.imagery = function(_) {
19288         background.load(_);
19289         return context;
19290     };
19291
19292     context.container = function(_) {
19293         if (!arguments.length) return container;
19294         container = _;
19295         container.classed('id-container', true);
19296         return context;
19297     };
19298
19299     /* Taginfo */
19300     var taginfo;
19301     context.taginfo = function(_) {
19302         if (!arguments.length) return taginfo;
19303         taginfo = _;
19304         return context;
19305     };
19306
19307     var embed = false;
19308     context.embed = function(_) {
19309         if (!arguments.length) return embed;
19310         embed = _;
19311         return context;
19312     };
19313
19314     var assetPath = '';
19315     context.assetPath = function(_) {
19316         if (!arguments.length) return assetPath;
19317         assetPath = _;
19318         return context;
19319     };
19320
19321     var assetMap = {};
19322     context.assetMap = function(_) {
19323         if (!arguments.length) return assetMap;
19324         assetMap = _;
19325         return context;
19326     };
19327
19328     context.imagePath = function(_) {
19329         var asset = 'img/' + _;
19330         return assetMap[asset] || assetPath + asset;
19331     };
19332
19333     return d3.rebind(context, dispatch, 'on');
19334 };
19335
19336 iD.version = '1.8.0';
19337
19338 (function() {
19339     var detected = {};
19340
19341     var ua = navigator.userAgent,
19342         m = null;
19343
19344     m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i);   // IE11+
19345     if (m !== null) {
19346         detected.browser = 'msie';
19347         detected.version = m[1];
19348     }
19349     if (!detected.browser) {
19350         m = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i);   // Opera 15+
19351         if (m !== null) {
19352             detected.browser = 'Opera';
19353             detected.version = m[2];
19354         }
19355     }
19356     if (!detected.browser) {
19357         m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
19358         if (m !== null) {
19359             detected.browser = m[1];
19360             detected.version = m[2];
19361             m = ua.match(/version\/([\.\d]+)/i);
19362             if (m !== null) detected.version = m[1];
19363         }
19364     }
19365     if (!detected.browser) {
19366         detected.browser = navigator.appName;
19367         detected.version = navigator.appVersion;
19368     }
19369
19370     // keep major.minor version only..
19371     detected.version = detected.version.split(/\W/).slice(0,2).join('.');
19372
19373     if (detected.browser.toLowerCase() === 'msie') {
19374         detected.browser = 'Internet Explorer';
19375         detected.support = parseFloat(detected.version) > 9;
19376     } else {
19377         detected.support = true;
19378     }
19379
19380     // Added due to incomplete svg style support. See #715
19381     detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 );
19382
19383     detected.locale = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage || 'en-US');
19384
19385     detected.filedrop = (window.FileReader && 'ondrop' in window);
19386
19387     function nav(x) {
19388         return navigator.userAgent.indexOf(x) !== -1;
19389     }
19390
19391     if (nav('Win')) {
19392         detected.os = 'win';
19393         detected.platform = 'Windows';
19394     }
19395     else if (nav('Mac')) {
19396         detected.os = 'mac';
19397         detected.platform = 'Macintosh';
19398     }
19399     else if (nav('X11') || nav('Linux')) {
19400         detected.os = 'linux';
19401         detected.platform = 'Linux';
19402     }
19403     else {
19404         detected.os = 'win';
19405         detected.platform = 'Unknown';
19406     }
19407
19408     iD.detect = function() { return detected; };
19409 })();
19410 iD.countryCode  = function() {
19411     var countryCode = {},
19412         endpoint = 'https://nominatim.openstreetmap.org/reverse?';
19413
19414     if (!iD.countryCode.cache) {
19415         iD.countryCode.cache = rbush();
19416     }
19417
19418     var cache = iD.countryCode.cache;
19419
19420     countryCode.search = function(location, callback) {
19421         var countryCodes = cache.search([location[0], location[1], location[0], location[1]]);
19422
19423         if (countryCodes.length > 0)
19424             return callback(null, countryCodes[0][4]);
19425
19426         d3.json(endpoint +
19427             iD.util.qsString({
19428                 format: 'json',
19429                 addressdetails: 1,
19430                 lat: location[1],
19431                 lon: location[0]
19432             }), function(err, result) {
19433                 if (err)
19434                     return callback(err);
19435                 else if (result && result.error)
19436                     return callback(result.error);
19437
19438                 var extent = iD.geo.Extent(location).padByMeters(1000);
19439
19440                 cache.insert([extent[0][0], extent[0][1], extent[1][0], extent[1][1], result.address.country_code]);
19441
19442                 callback(null, result.address.country_code);
19443             });
19444     };
19445
19446     return countryCode;
19447 };
19448 iD.taginfo = function() {
19449     var taginfo = {},
19450         endpoint = 'https://taginfo.openstreetmap.org/api/4/',
19451         tag_sorts = {
19452             point: 'count_nodes',
19453             vertex: 'count_nodes',
19454             area: 'count_ways',
19455             line: 'count_ways'
19456         },
19457         tag_filters = {
19458             point: 'nodes',
19459             vertex: 'nodes',
19460             area: 'ways',
19461             line: 'ways'
19462         };
19463
19464     if (!iD.taginfo.cache) {
19465         iD.taginfo.cache = {};
19466     }
19467
19468     var cache = iD.taginfo.cache;
19469
19470     function sets(parameters, n, o) {
19471         if (parameters.geometry && o[parameters.geometry]) {
19472             parameters[n] = o[parameters.geometry];
19473         }
19474         return parameters;
19475     }
19476
19477     function setFilter(parameters) {
19478         return sets(parameters, 'filter', tag_filters);
19479     }
19480
19481     function setSort(parameters) {
19482         return sets(parameters, 'sortname', tag_sorts);
19483     }
19484
19485     function clean(parameters) {
19486         return _.omit(parameters, 'geometry', 'debounce');
19487     }
19488
19489     function popularKeys(parameters) {
19490         var pop_field = 'count_all';
19491         if (parameters.filter) pop_field = 'count_' + parameters.filter;
19492         return function(d) { return parseFloat(d[pop_field]) > 5000 || d.in_wiki; };
19493     }
19494
19495     function popularValues() {
19496         return function(d) { return parseFloat(d.fraction) > 0.01 || d.in_wiki; };
19497     }
19498
19499     function valKey(d) { return { value: d.key }; }
19500
19501     function valKeyDescription(d) {
19502         return {
19503             value: d.value,
19504             title: d.description
19505         };
19506     }
19507
19508     var debounced = _.debounce(d3.json, 100, true);
19509
19510     function request(url, debounce, callback) {
19511         if (cache[url]) {
19512             callback(null, cache[url]);
19513         } else if (debounce) {
19514             debounced(url, done);
19515         } else {
19516             d3.json(url, done);
19517         }
19518
19519         function done(err, data) {
19520             if (!err) cache[url] = data;
19521             callback(err, data);
19522         }
19523     }
19524
19525     taginfo.keys = function(parameters, callback) {
19526         var debounce = parameters.debounce;
19527         parameters = clean(setSort(parameters));
19528         request(endpoint + 'keys/all?' +
19529             iD.util.qsString(_.extend({
19530                 rp: 10,
19531                 sortname: 'count_all',
19532                 sortorder: 'desc',
19533                 page: 1
19534             }, parameters)), debounce, function(err, d) {
19535                 if (err) return callback(err);
19536                 callback(null, d.data.filter(popularKeys(parameters)).map(valKey));
19537             });
19538     };
19539
19540     taginfo.values = function(parameters, callback) {
19541         var debounce = parameters.debounce;
19542         parameters = clean(setSort(setFilter(parameters)));
19543         request(endpoint + 'key/values?' +
19544             iD.util.qsString(_.extend({
19545                 rp: 25,
19546                 sortname: 'count_all',
19547                 sortorder: 'desc',
19548                 page: 1
19549             }, parameters)), debounce, function(err, d) {
19550                 if (err) return callback(err);
19551                 callback(null, d.data.filter(popularValues()).map(valKeyDescription), parameters);
19552             });
19553     };
19554
19555     taginfo.docs = function(parameters, callback) {
19556         var debounce = parameters.debounce;
19557         parameters = clean(setSort(parameters));
19558
19559         var path = 'key/wiki_pages?';
19560         if (parameters.value) path = 'tag/wiki_pages?';
19561         else if (parameters.rtype) path = 'relation/wiki_pages?';
19562
19563         var decoratedCallback;
19564         if (parameters.value) {
19565             decoratedCallback = function(err, data) {
19566                 // The third argument to callback is the softfail flag, to
19567                 // make the callback function not show a message to the end
19568                 // user when no docs are found but just return false.
19569                 var docsFound = callback(err, data, true);
19570                 if (!docsFound) {
19571                     taginfo.docs(_.omit(parameters, 'value'), callback);
19572                 }
19573             };
19574         }
19575
19576         request(endpoint + path +
19577             iD.util.qsString(parameters), debounce, decoratedCallback || callback);
19578     };
19579
19580     taginfo.endpoint = function(_) {
19581         if (!arguments.length) return endpoint;
19582         endpoint = _;
19583         return taginfo;
19584     };
19585
19586     return taginfo;
19587 };
19588 iD.wikipedia  = function() {
19589     var wiki = {},
19590         endpoint = 'https://en.wikipedia.org/w/api.php?';
19591
19592     wiki.search = function(lang, query, callback) {
19593         lang = lang || 'en';
19594         d3.jsonp(endpoint.replace('en', lang) +
19595             iD.util.qsString({
19596                 action: 'query',
19597                 list: 'search',
19598                 srlimit: '10',
19599                 srinfo: 'suggestion',
19600                 format: 'json',
19601                 callback: '{callback}',
19602                 srsearch: query
19603             }), function(data) {
19604                 if (!data.query) return;
19605                 callback(query, data.query.search.map(function(d) {
19606                     return d.title;
19607                 }));
19608             });
19609     };
19610
19611     wiki.suggestions = function(lang, query, callback) {
19612         lang = lang || 'en';
19613         d3.jsonp(endpoint.replace('en', lang) +
19614             iD.util.qsString({
19615                 action: 'opensearch',
19616                 namespace: 0,
19617                 suggest: '',
19618                 format: 'json',
19619                 callback: '{callback}',
19620                 search: query
19621             }), function(d) {
19622                 callback(d[0], d[1]);
19623             });
19624     };
19625
19626     wiki.translations = function(lang, title, callback) {
19627         d3.jsonp(endpoint.replace('en', lang) +
19628             iD.util.qsString({
19629                 action: 'query',
19630                 prop: 'langlinks',
19631                 format: 'json',
19632                 callback: '{callback}',
19633                 lllimit: 500,
19634                 titles: title
19635             }), function(d) {
19636                 var list = d.query.pages[Object.keys(d.query.pages)[0]],
19637                     translations = {};
19638                 if (list && list.langlinks) {
19639                     list.langlinks.forEach(function(d) {
19640                         translations[d.lang] = d['*'];
19641                     });
19642                     callback(translations);
19643                 }
19644             });
19645     };
19646
19647     return wiki;
19648 };
19649 iD.util = {};
19650
19651 iD.util.tagText = function(entity) {
19652     return d3.entries(entity.tags).map(function(e) {
19653         return e.key + '=' + e.value;
19654     }).join(', ');
19655 };
19656
19657 iD.util.entitySelector = function(ids) {
19658     return ids.length ? '.' + ids.join(',.') : 'nothing';
19659 };
19660
19661 iD.util.entityOrMemberSelector = function(ids, graph) {
19662     var s = iD.util.entitySelector(ids);
19663
19664     ids.forEach(function(id) {
19665         var entity = graph.hasEntity(id);
19666         if (entity && entity.type === 'relation') {
19667             entity.members.forEach(function(member) {
19668                 s += ',.' + member.id;
19669             });
19670         }
19671     });
19672
19673     return s;
19674 };
19675
19676 iD.util.displayName = function(entity) {
19677     var localeName = 'name:' + iD.detect().locale.toLowerCase().split('-')[0];
19678     return entity.tags[localeName] || entity.tags.name || entity.tags.ref;
19679 };
19680
19681 iD.util.displayType = function(id) {
19682     return {
19683         n: t('inspector.node'),
19684         w: t('inspector.way'),
19685         r: t('inspector.relation')
19686     }[id.charAt(0)];
19687 };
19688
19689 iD.util.stringQs = function(str) {
19690     return str.split('&').reduce(function(obj, pair){
19691         var parts = pair.split('=');
19692         if (parts.length === 2) {
19693             obj[parts[0]] = (null === parts[1]) ? '' : decodeURIComponent(parts[1]);
19694         }
19695         return obj;
19696     }, {});
19697 };
19698
19699 iD.util.qsString = function(obj, noencode) {
19700     function softEncode(s) {
19701       // encode everything except special characters used in certain hash parameters:
19702       // "/" in map states, ":", ",", {" and "}" in background
19703       return encodeURIComponent(s).replace(/(%2F|%3A|%2C|%7B|%7D)/g, decodeURIComponent);
19704     }
19705     return Object.keys(obj).sort().map(function(key) {
19706         return encodeURIComponent(key) + '=' + (
19707             noencode ? softEncode(obj[key]) : encodeURIComponent(obj[key]));
19708     }).join('&');
19709 };
19710
19711 iD.util.prefixDOMProperty = function(property) {
19712     var prefixes = ['webkit', 'ms', 'moz', 'o'],
19713         i = -1,
19714         n = prefixes.length,
19715         s = document.body;
19716
19717     if (property in s)
19718         return property;
19719
19720     property = property.substr(0, 1).toUpperCase() + property.substr(1);
19721
19722     while (++i < n)
19723         if (prefixes[i] + property in s)
19724             return prefixes[i] + property;
19725
19726     return false;
19727 };
19728
19729 iD.util.prefixCSSProperty = function(property) {
19730     var prefixes = ['webkit', 'ms', 'Moz', 'O'],
19731         i = -1,
19732         n = prefixes.length,
19733         s = document.body.style;
19734
19735     if (property.toLowerCase() in s)
19736         return property.toLowerCase();
19737
19738     while (++i < n)
19739         if (prefixes[i] + property in s)
19740             return '-' + prefixes[i].toLowerCase() + property.replace(/([A-Z])/g, '-$1').toLowerCase();
19741
19742     return false;
19743 };
19744
19745
19746 iD.util.setTransform = function(el, x, y, scale) {
19747     var prop = iD.util.transformProperty = iD.util.transformProperty || iD.util.prefixCSSProperty('Transform'),
19748         translate = iD.detect().opera ?
19749             'translate('   + x + 'px,' + y + 'px)' :
19750             'translate3d(' + x + 'px,' + y + 'px,0)';
19751     return el.style(prop, translate + (scale ? ' scale(' + scale + ')' : ''));
19752 };
19753
19754 iD.util.getStyle = function(selector) {
19755     for (var i = 0; i < document.styleSheets.length; i++) {
19756         var rules = document.styleSheets[i].rules || document.styleSheets[i].cssRules || [];
19757         for (var k = 0; k < rules.length; k++) {
19758             var selectorText = rules[k].selectorText && rules[k].selectorText.split(', ');
19759             if (_.contains(selectorText, selector)) {
19760                 return rules[k];
19761             }
19762         }
19763     }
19764 };
19765
19766 iD.util.editDistance = function(a, b) {
19767     if (a.length === 0) return b.length;
19768     if (b.length === 0) return a.length;
19769     var matrix = [];
19770     for (var i = 0; i <= b.length; i++) { matrix[i] = [i]; }
19771     for (var j = 0; j <= a.length; j++) { matrix[0][j] = j; }
19772     for (i = 1; i <= b.length; i++) {
19773         for (j = 1; j <= a.length; j++) {
19774             if (b.charAt(i-1) === a.charAt(j-1)) {
19775                 matrix[i][j] = matrix[i-1][j-1];
19776             } else {
19777                 matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution
19778                     Math.min(matrix[i][j-1] + 1, // insertion
19779                     matrix[i-1][j] + 1)); // deletion
19780             }
19781         }
19782     }
19783     return matrix[b.length][a.length];
19784 };
19785
19786 // a d3.mouse-alike which
19787 // 1. Only works on HTML elements, not SVG
19788 // 2. Does not cause style recalculation
19789 iD.util.fastMouse = function(container) {
19790     var rect = container.getBoundingClientRect(),
19791         rectLeft = rect.left,
19792         rectTop = rect.top,
19793         clientLeft = +container.clientLeft,
19794         clientTop = +container.clientTop;
19795     return function(e) {
19796         return [
19797             e.clientX - rectLeft - clientLeft,
19798             e.clientY - rectTop - clientTop];
19799     };
19800 };
19801
19802 /* eslint-disable no-proto */
19803 iD.util.getPrototypeOf = Object.getPrototypeOf || function(obj) { return obj.__proto__; };
19804 /* eslint-enable no-proto */
19805
19806 iD.util.asyncMap = function(inputs, func, callback) {
19807     var remaining = inputs.length,
19808         results = [],
19809         errors = [];
19810
19811     inputs.forEach(function(d, i) {
19812         func(d, function done(err, data) {
19813             errors[i] = err;
19814             results[i] = data;
19815             remaining--;
19816             if (!remaining) callback(errors, results);
19817         });
19818     });
19819 };
19820
19821 // wraps an index to an interval [0..length-1]
19822 iD.util.wrap = function(index, length) {
19823     if (index < 0)
19824         index += Math.ceil(-index/length)*length;
19825     return index % length;
19826 };
19827 // A per-domain session mutex backed by a cookie and dead man's
19828 // switch. If the session crashes, the mutex will auto-release
19829 // after 5 seconds.
19830
19831 iD.util.SessionMutex = function(name) {
19832     var mutex = {},
19833         intervalID;
19834
19835     function renew() {
19836         var expires = new Date();
19837         expires.setSeconds(expires.getSeconds() + 5);
19838         document.cookie = name + '=1; expires=' + expires.toUTCString();
19839     }
19840
19841     mutex.lock = function() {
19842         if (intervalID) return true;
19843         var cookie = document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + name + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1');
19844         if (cookie) return false;
19845         renew();
19846         intervalID = window.setInterval(renew, 4000);
19847         return true;
19848     };
19849
19850     mutex.unlock = function() {
19851         if (!intervalID) return;
19852         document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
19853         clearInterval(intervalID);
19854         intervalID = null;
19855     };
19856
19857     mutex.locked = function() {
19858         return !!intervalID;
19859     };
19860
19861     return mutex;
19862 };
19863 iD.util.SuggestNames = function(preset, suggestions) {
19864     preset = preset.id.split('/', 2);
19865     var k = preset[0],
19866         v = preset[1];
19867
19868     return function(value, callback) {
19869         var result = [];
19870         if (value && value.length > 2) {
19871             if (suggestions[k] && suggestions[k][v]) {
19872                 for (var sugg in suggestions[k][v]) {
19873                     var dist = iD.util.editDistance(value, sugg.substring(0, value.length));
19874                     if (dist < 3) {
19875                         result.push({
19876                             title: sugg,
19877                             value: sugg,
19878                             dist: dist
19879                         });
19880                     }
19881                 }
19882             }
19883             result.sort(function(a, b) {
19884                 return a.dist - b.dist;
19885             });
19886         }
19887         result = result.slice(0,3);
19888         callback(result);
19889     };
19890 };
19891 iD.geo = {};
19892
19893 iD.geo.roundCoords = function(c) {
19894     return [Math.floor(c[0]), Math.floor(c[1])];
19895 };
19896
19897 iD.geo.interp = function(p1, p2, t) {
19898     return [p1[0] + (p2[0] - p1[0]) * t,
19899             p1[1] + (p2[1] - p1[1]) * t];
19900 };
19901
19902 // 2D cross product of OA and OB vectors, i.e. z-component of their 3D cross product.
19903 // Returns a positive value, if OAB makes a counter-clockwise turn,
19904 // negative for clockwise turn, and zero if the points are collinear.
19905 iD.geo.cross = function(o, a, b) {
19906     return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
19907 };
19908
19909 // http://jsperf.com/id-dist-optimization
19910 iD.geo.euclideanDistance = function(a, b) {
19911     var x = a[0] - b[0], y = a[1] - b[1];
19912     return Math.sqrt((x * x) + (y * y));
19913 };
19914
19915 // using WGS84 polar radius (6356752.314245179 m)
19916 // const = 2 * PI * r / 360
19917 iD.geo.latToMeters = function(dLat) {
19918     return dLat * 110946.257617;
19919 };
19920
19921 // using WGS84 equatorial radius (6378137.0 m)
19922 // const = 2 * PI * r / 360
19923 iD.geo.lonToMeters = function(dLon, atLat) {
19924     return Math.abs(atLat) >= 90 ? 0 :
19925         dLon * 111319.490793 * Math.abs(Math.cos(atLat * (Math.PI/180)));
19926 };
19927
19928 // using WGS84 polar radius (6356752.314245179 m)
19929 // const = 2 * PI * r / 360
19930 iD.geo.metersToLat = function(m) {
19931     return m / 110946.257617;
19932 };
19933
19934 // using WGS84 equatorial radius (6378137.0 m)
19935 // const = 2 * PI * r / 360
19936 iD.geo.metersToLon = function(m, atLat) {
19937     return Math.abs(atLat) >= 90 ? 0 :
19938         m / 111319.490793 / Math.abs(Math.cos(atLat * (Math.PI/180)));
19939 };
19940
19941 // Equirectangular approximation of spherical distances on Earth
19942 iD.geo.sphericalDistance = function(a, b) {
19943     var x = iD.geo.lonToMeters(a[0] - b[0], (a[1] + b[1]) / 2),
19944         y = iD.geo.latToMeters(a[1] - b[1]);
19945     return Math.sqrt((x * x) + (y * y));
19946 };
19947
19948 iD.geo.edgeEqual = function(a, b) {
19949     return (a[0] === b[0] && a[1] === b[1]) ||
19950         (a[0] === b[1] && a[1] === b[0]);
19951 };
19952
19953 // Return the counterclockwise angle in the range (-pi, pi)
19954 // between the positive X axis and the line intersecting a and b.
19955 iD.geo.angle = function(a, b, projection) {
19956     a = projection(a.loc);
19957     b = projection(b.loc);
19958     return Math.atan2(b[1] - a[1], b[0] - a[0]);
19959 };
19960
19961 // Choose the edge with the minimal distance from `point` to its orthogonal
19962 // projection onto that edge, if such a projection exists, or the distance to
19963 // the closest vertex on that edge. Returns an object with the `index` of the
19964 // chosen edge, the chosen `loc` on that edge, and the `distance` to to it.
19965 iD.geo.chooseEdge = function(nodes, point, projection) {
19966     var dist = iD.geo.euclideanDistance,
19967         points = nodes.map(function(n) { return projection(n.loc); }),
19968         min = Infinity,
19969         idx, loc;
19970
19971     function dot(p, q) {
19972         return p[0] * q[0] + p[1] * q[1];
19973     }
19974
19975     for (var i = 0; i < points.length - 1; i++) {
19976         var o = points[i],
19977             s = [points[i + 1][0] - o[0],
19978                  points[i + 1][1] - o[1]],
19979             v = [point[0] - o[0],
19980                  point[1] - o[1]],
19981             proj = dot(v, s) / dot(s, s),
19982             p;
19983
19984         if (proj < 0) {
19985             p = o;
19986         } else if (proj > 1) {
19987             p = points[i + 1];
19988         } else {
19989             p = [o[0] + proj * s[0], o[1] + proj * s[1]];
19990         }
19991
19992         var d = dist(p, point);
19993         if (d < min) {
19994             min = d;
19995             idx = i + 1;
19996             loc = projection.invert(p);
19997         }
19998     }
19999
20000     return {
20001         index: idx,
20002         distance: min,
20003         loc: loc
20004     };
20005 };
20006
20007 // Return the intersection point of 2 line segments.
20008 // From https://github.com/pgkelley4/line-segments-intersect
20009 // This uses the vector cross product approach described below:
20010 //  http://stackoverflow.com/a/565282/786339
20011 iD.geo.lineIntersection = function(a, b) {
20012     function subtractPoints(point1, point2) {
20013         return [point1[0] - point2[0], point1[1] - point2[1]];
20014     }
20015     function crossProduct(point1, point2) {
20016         return point1[0] * point2[1] - point1[1] * point2[0];
20017     }
20018
20019     var p = [a[0][0], a[0][1]],
20020         p2 = [a[1][0], a[1][1]],
20021         q = [b[0][0], b[0][1]],
20022         q2 = [b[1][0], b[1][1]],
20023         r = subtractPoints(p2, p),
20024         s = subtractPoints(q2, q),
20025         uNumerator = crossProduct(subtractPoints(q, p), r),
20026         denominator = crossProduct(r, s);
20027
20028     if (uNumerator && denominator) {
20029         var u = uNumerator / denominator,
20030             t = crossProduct(subtractPoints(q, p), s) / denominator;
20031
20032         if ((t >= 0) && (t <= 1) && (u >= 0) && (u <= 1)) {
20033             return iD.geo.interp(p, p2, t);
20034         }
20035     }
20036
20037     return null;
20038 };
20039
20040 iD.geo.pathIntersections = function(path1, path2) {
20041     var intersections = [];
20042     for (var i = 0; i < path1.length - 1; i++) {
20043         for (var j = 0; j < path2.length - 1; j++) {
20044             var a = [ path1[i], path1[i+1] ],
20045                 b = [ path2[j], path2[j+1] ],
20046                 hit = iD.geo.lineIntersection(a, b);
20047             if (hit) intersections.push(hit);
20048         }
20049     }
20050     return intersections;
20051 };
20052
20053 // Return whether point is contained in polygon.
20054 //
20055 // `point` should be a 2-item array of coordinates.
20056 // `polygon` should be an array of 2-item arrays of coordinates.
20057 //
20058 // From https://github.com/substack/point-in-polygon.
20059 // ray-casting algorithm based on
20060 // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
20061 //
20062 iD.geo.pointInPolygon = function(point, polygon) {
20063     var x = point[0],
20064         y = point[1],
20065         inside = false;
20066
20067     for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
20068         var xi = polygon[i][0], yi = polygon[i][1];
20069         var xj = polygon[j][0], yj = polygon[j][1];
20070
20071         var intersect = ((yi > y) !== (yj > y)) &&
20072             (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
20073         if (intersect) inside = !inside;
20074     }
20075
20076     return inside;
20077 };
20078
20079 iD.geo.polygonContainsPolygon = function(outer, inner) {
20080     return _.every(inner, function(point) {
20081         return iD.geo.pointInPolygon(point, outer);
20082     });
20083 };
20084
20085 iD.geo.polygonIntersectsPolygon = function(outer, inner, checkSegments) {
20086     function testSegments(outer, inner) {
20087         for (var i = 0; i < outer.length - 1; i++) {
20088             for (var j = 0; j < inner.length - 1; j++) {
20089                 var a = [ outer[i], outer[i+1] ],
20090                     b = [ inner[j], inner[j+1] ];
20091                 if (iD.geo.lineIntersection(a, b)) return true;
20092             }
20093         }
20094         return false;
20095     }
20096
20097     function testPoints(outer, inner) {
20098         return _.some(inner, function(point) {
20099             return iD.geo.pointInPolygon(point, outer);
20100         });
20101     }
20102
20103    return testPoints(outer, inner) || (!!checkSegments && testSegments(outer, inner));
20104 };
20105
20106 iD.geo.pathLength = function(path) {
20107     var length = 0,
20108         dx, dy;
20109     for (var i = 0; i < path.length - 1; i++) {
20110         dx = path[i][0] - path[i + 1][0];
20111         dy = path[i][1] - path[i + 1][1];
20112         length += Math.sqrt(dx * dx + dy * dy);
20113     }
20114     return length;
20115 };
20116 iD.geo.Extent = function geoExtent(min, max) {
20117     if (!(this instanceof iD.geo.Extent)) return new iD.geo.Extent(min, max);
20118     if (min instanceof iD.geo.Extent) {
20119         return min;
20120     } else if (min && min.length === 2 && min[0].length === 2 && min[1].length === 2) {
20121         this[0] = min[0];
20122         this[1] = min[1];
20123     } else {
20124         this[0] = min        || [ Infinity,  Infinity];
20125         this[1] = max || min || [-Infinity, -Infinity];
20126     }
20127 };
20128
20129 iD.geo.Extent.prototype = new Array(2);
20130
20131 _.extend(iD.geo.Extent.prototype, {
20132     equals: function (obj) {
20133         return this[0][0] === obj[0][0] &&
20134             this[0][1] === obj[0][1] &&
20135             this[1][0] === obj[1][0] &&
20136             this[1][1] === obj[1][1];
20137     },
20138
20139     extend: function(obj) {
20140         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20141         return iD.geo.Extent([Math.min(obj[0][0], this[0][0]),
20142                               Math.min(obj[0][1], this[0][1])],
20143                              [Math.max(obj[1][0], this[1][0]),
20144                               Math.max(obj[1][1], this[1][1])]);
20145     },
20146
20147     _extend: function(extent) {
20148         this[0][0] = Math.min(extent[0][0], this[0][0]);
20149         this[0][1] = Math.min(extent[0][1], this[0][1]);
20150         this[1][0] = Math.max(extent[1][0], this[1][0]);
20151         this[1][1] = Math.max(extent[1][1], this[1][1]);
20152     },
20153
20154     area: function() {
20155         return Math.abs((this[1][0] - this[0][0]) * (this[1][1] - this[0][1]));
20156     },
20157
20158     center: function() {
20159         return [(this[0][0] + this[1][0]) / 2,
20160                 (this[0][1] + this[1][1]) / 2];
20161     },
20162
20163     polygon: function() {
20164         return [
20165             [this[0][0], this[0][1]],
20166             [this[0][0], this[1][1]],
20167             [this[1][0], this[1][1]],
20168             [this[1][0], this[0][1]],
20169             [this[0][0], this[0][1]]
20170         ];
20171     },
20172
20173     contains: function(obj) {
20174         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20175         return obj[0][0] >= this[0][0] &&
20176                obj[0][1] >= this[0][1] &&
20177                obj[1][0] <= this[1][0] &&
20178                obj[1][1] <= this[1][1];
20179     },
20180
20181     intersects: function(obj) {
20182         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20183         return obj[0][0] <= this[1][0] &&
20184                obj[0][1] <= this[1][1] &&
20185                obj[1][0] >= this[0][0] &&
20186                obj[1][1] >= this[0][1];
20187     },
20188
20189     intersection: function(obj) {
20190         if (!this.intersects(obj)) return new iD.geo.Extent();
20191         return new iD.geo.Extent([Math.max(obj[0][0], this[0][0]),
20192                                   Math.max(obj[0][1], this[0][1])],
20193                                  [Math.min(obj[1][0], this[1][0]),
20194                                   Math.min(obj[1][1], this[1][1])]);
20195     },
20196
20197     percentContainedIn: function(obj) {
20198         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20199         var a1 = this.intersection(obj).area(),
20200             a2 = this.area();
20201
20202         if (a1 === Infinity || a2 === Infinity || a1 === 0 || a2 === 0) {
20203             return 0;
20204         } else {
20205             return a1 / a2;
20206         }
20207     },
20208
20209     padByMeters: function(meters) {
20210         var dLat = iD.geo.metersToLat(meters),
20211             dLon = iD.geo.metersToLon(meters, this.center()[1]);
20212         return iD.geo.Extent(
20213                 [this[0][0] - dLon, this[0][1] - dLat],
20214                 [this[1][0] + dLon, this[1][1] + dLat]);
20215     },
20216
20217     toParam: function() {
20218         return [this[0][0], this[0][1], this[1][0], this[1][1]].join(',');
20219     }
20220
20221 });
20222 iD.geo.Turn = function(turn) {
20223     if (!(this instanceof iD.geo.Turn))
20224         return new iD.geo.Turn(turn);
20225     _.extend(this, turn);
20226 };
20227
20228 iD.geo.Intersection = function(graph, vertexId) {
20229     var vertex = graph.entity(vertexId),
20230         parentWays = graph.parentWays(vertex),
20231         coincident = [],
20232         highways = {};
20233
20234     function addHighway(way, adjacentNodeId) {
20235         if (highways[adjacentNodeId]) {
20236             coincident.push(adjacentNodeId);
20237         } else {
20238             highways[adjacentNodeId] = way;
20239         }
20240     }
20241
20242     // Pre-split ways that would need to be split in
20243     // order to add a restriction. The real split will
20244     // happen when the restriction is added.
20245     parentWays.forEach(function(way) {
20246         if (!way.tags.highway || way.isArea() || way.isDegenerate())
20247             return;
20248
20249         var isFirst = (vertexId === way.first()),
20250             isLast = (vertexId === way.last()),
20251             isAffix = (isFirst || isLast),
20252             isClosingNode = (isFirst && isLast);
20253
20254         if (isAffix && !isClosingNode) {
20255             var index = (isFirst ? 1 : way.nodes.length - 2);
20256             addHighway(way, way.nodes[index]);
20257
20258         } else {
20259             var splitIndex, wayA, wayB, indexA, indexB;
20260             if (isClosingNode) {
20261                 splitIndex = Math.ceil(way.nodes.length / 2);  // split at midpoint
20262                 wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, splitIndex)});
20263                 wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(splitIndex)});
20264                 indexA = 1;
20265                 indexB = way.nodes.length - 2;
20266             } else {
20267                 splitIndex = _.indexOf(way.nodes, vertex.id, 1);  // split at vertexid
20268                 wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, splitIndex + 1)});
20269                 wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(splitIndex)});
20270                 indexA = splitIndex - 1;
20271                 indexB = splitIndex + 1;
20272             }
20273             graph = graph.replace(wayA).replace(wayB);
20274             addHighway(wayA, way.nodes[indexA]);
20275             addHighway(wayB, way.nodes[indexB]);
20276         }
20277     });
20278
20279     // remove any ways from this intersection that are coincident
20280     // (i.e. any adjacent node used by more than one intersecting way)
20281     coincident.forEach(function (n) {
20282         delete highways[n];
20283     });
20284
20285
20286     var intersection = {
20287         highways: highways,
20288         ways: _.values(highways),
20289         graph: graph
20290     };
20291
20292     intersection.adjacentNodeId = function(fromWayId) {
20293         return _.find(_.keys(highways), function(k) {
20294             return highways[k].id === fromWayId;
20295         });
20296     };
20297
20298     intersection.turns = function(fromNodeId) {
20299         var start = highways[fromNodeId];
20300         if (!start)
20301             return [];
20302
20303         if (start.first() === vertex.id && start.tags.oneway === 'yes')
20304             return [];
20305         if (start.last() === vertex.id && start.tags.oneway === '-1')
20306             return [];
20307
20308         function withRestriction(turn) {
20309             graph.parentRelations(graph.entity(turn.from.way)).forEach(function(relation) {
20310                 if (relation.tags.type !== 'restriction')
20311                     return;
20312
20313                 var f = relation.memberByRole('from'),
20314                     t = relation.memberByRole('to'),
20315                     v = relation.memberByRole('via');
20316
20317                 if (f && f.id === turn.from.way &&
20318                     v && v.id === turn.via.node &&
20319                     t && t.id === turn.to.way) {
20320                     turn.restriction = relation.id;
20321                 } else if (/^only_/.test(relation.tags.restriction) &&
20322                     f && f.id === turn.from.way &&
20323                     v && v.id === turn.via.node &&
20324                     t && t.id !== turn.to.way) {
20325                     turn.restriction = relation.id;
20326                     turn.indirect_restriction = true;
20327                 }
20328             });
20329
20330             return iD.geo.Turn(turn);
20331         }
20332
20333         var from = {
20334                 node: fromNodeId,
20335                 way: start.id.split(/-(a|b)/)[0]
20336             },
20337             via = { node: vertex.id },
20338             turns = [];
20339
20340         _.each(highways, function(end, adjacentNodeId) {
20341             if (end === start)
20342                 return;
20343
20344             // backward
20345             if (end.first() !== vertex.id && end.tags.oneway !== 'yes') {
20346                 turns.push(withRestriction({
20347                     from: from,
20348                     via: via,
20349                     to: {
20350                         node: adjacentNodeId,
20351                         way: end.id.split(/-(a|b)/)[0]
20352                     }
20353                 }));
20354             }
20355
20356             // forward
20357             if (end.last() !== vertex.id && end.tags.oneway !== '-1') {
20358                 turns.push(withRestriction({
20359                     from: from,
20360                     via: via,
20361                     to: {
20362                         node: adjacentNodeId,
20363                         way: end.id.split(/-(a|b)/)[0]
20364                     }
20365                 }));
20366             }
20367
20368         });
20369
20370         // U-turn
20371         if (start.tags.oneway !== 'yes' && start.tags.oneway !== '-1') {
20372             turns.push(withRestriction({
20373                 from: from,
20374                 via: via,
20375                 to: from,
20376                 u: true
20377             }));
20378         }
20379
20380         return turns;
20381     };
20382
20383     return intersection;
20384 };
20385
20386
20387 iD.geo.inferRestriction = function(graph, from, via, to, projection) {
20388     var fromWay = graph.entity(from.way),
20389         fromNode = graph.entity(from.node),
20390         toWay = graph.entity(to.way),
20391         toNode = graph.entity(to.node),
20392         viaNode = graph.entity(via.node),
20393         fromOneWay = (fromWay.tags.oneway === 'yes' && fromWay.last() === via.node) ||
20394             (fromWay.tags.oneway === '-1' && fromWay.first() === via.node),
20395         toOneWay = (toWay.tags.oneway === 'yes' && toWay.first() === via.node) ||
20396             (toWay.tags.oneway === '-1' && toWay.last() === via.node),
20397         angle = iD.geo.angle(viaNode, fromNode, projection) -
20398                 iD.geo.angle(viaNode, toNode, projection);
20399
20400     angle = angle * 180 / Math.PI;
20401
20402     while (angle < 0)
20403         angle += 360;
20404
20405     if (fromNode === toNode)
20406         return 'no_u_turn';
20407     if ((angle < 23 || angle > 336) && fromOneWay && toOneWay)
20408         return 'no_u_turn';
20409     if (angle < 158)
20410         return 'no_right_turn';
20411     if (angle > 202)
20412         return 'no_left_turn';
20413
20414     return 'no_straight_on';
20415 };
20416 // For fixing up rendering of multipolygons with tags on the outer member.
20417 // https://github.com/openstreetmap/iD/issues/613
20418 iD.geo.isSimpleMultipolygonOuterMember = function(entity, graph) {
20419     if (entity.type !== 'way')
20420         return false;
20421
20422     var parents = graph.parentRelations(entity);
20423     if (parents.length !== 1)
20424         return false;
20425
20426     var parent = parents[0];
20427     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20428         return false;
20429
20430     var members = parent.members, member;
20431     for (var i = 0; i < members.length; i++) {
20432         member = members[i];
20433         if (member.id === entity.id && member.role && member.role !== 'outer')
20434             return false; // Not outer member
20435         if (member.id !== entity.id && (!member.role || member.role === 'outer'))
20436             return false; // Not a simple multipolygon
20437     }
20438
20439     return parent;
20440 };
20441
20442 iD.geo.simpleMultipolygonOuterMember = function(entity, graph) {
20443     if (entity.type !== 'way')
20444         return false;
20445
20446     var parents = graph.parentRelations(entity);
20447     if (parents.length !== 1)
20448         return false;
20449
20450     var parent = parents[0];
20451     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20452         return false;
20453
20454     var members = parent.members, member, outerMember;
20455     for (var i = 0; i < members.length; i++) {
20456         member = members[i];
20457         if (!member.role || member.role === 'outer') {
20458             if (outerMember)
20459                 return false; // Not a simple multipolygon
20460             outerMember = member;
20461         }
20462     }
20463
20464     return outerMember && graph.hasEntity(outerMember.id);
20465 };
20466
20467 // Join `array` into sequences of connecting ways.
20468 //
20469 // Segments which share identical start/end nodes will, as much as possible,
20470 // be connected with each other.
20471 //
20472 // The return value is a nested array. Each constituent array contains elements
20473 // of `array` which have been determined to connect. Each consitituent array
20474 // also has a `nodes` property whose value is an ordered array of member nodes,
20475 // with appropriate order reversal and start/end coordinate de-duplication.
20476 //
20477 // Members of `array` must have, at minimum, `type` and `id` properties.
20478 // Thus either an array of `iD.Way`s or a relation member array may be
20479 // used.
20480 //
20481 // If an member has a `tags` property, its tags will be reversed via
20482 // `iD.actions.Reverse` in the output.
20483 //
20484 // Incomplete members (those for which `graph.hasEntity(element.id)` returns
20485 // false) and non-way members are ignored.
20486 //
20487 iD.geo.joinWays = function(array, graph) {
20488     var joined = [], member, current, nodes, first, last, i, how, what;
20489
20490     array = array.filter(function(member) {
20491         return member.type === 'way' && graph.hasEntity(member.id);
20492     });
20493
20494     function resolve(member) {
20495         return graph.childNodes(graph.entity(member.id));
20496     }
20497
20498     function reverse(member) {
20499         return member.tags ? iD.actions.Reverse(member.id, {reverseOneway: true})(graph).entity(member.id) : member;
20500     }
20501
20502     while (array.length) {
20503         member = array.shift();
20504         current = [member];
20505         current.nodes = nodes = resolve(member).slice();
20506         joined.push(current);
20507
20508         while (array.length && _.first(nodes) !== _.last(nodes)) {
20509             first = _.first(nodes);
20510             last  = _.last(nodes);
20511
20512             for (i = 0; i < array.length; i++) {
20513                 member = array[i];
20514                 what = resolve(member);
20515
20516                 if (last === _.first(what)) {
20517                     how  = nodes.push;
20518                     what = what.slice(1);
20519                     break;
20520                 } else if (last === _.last(what)) {
20521                     how  = nodes.push;
20522                     what = what.slice(0, -1).reverse();
20523                     member = reverse(member);
20524                     break;
20525                 } else if (first === _.last(what)) {
20526                     how  = nodes.unshift;
20527                     what = what.slice(0, -1);
20528                     break;
20529                 } else if (first === _.first(what)) {
20530                     how  = nodes.unshift;
20531                     what = what.slice(1).reverse();
20532                     member = reverse(member);
20533                     break;
20534                 } else {
20535                     what = how = null;
20536                 }
20537             }
20538
20539             if (!what)
20540                 break; // No more joinable ways.
20541
20542             how.apply(current, [member]);
20543             how.apply(nodes, what);
20544
20545             array.splice(i, 1);
20546         }
20547     }
20548
20549     return joined;
20550 };
20551 /*
20552     Bypasses features of D3's default projection stream pipeline that are unnecessary:
20553     * Antimeridian clipping
20554     * Spherical rotation
20555     * Resampling
20556 */
20557 iD.geo.RawMercator = function () {
20558     var project = d3.geo.mercator.raw,
20559         k = 512 / Math.PI, // scale
20560         x = 0, y = 0, // translate
20561         clipExtent = [[0, 0], [0, 0]];
20562
20563     function projection(point) {
20564         point = project(point[0] * Math.PI / 180, point[1] * Math.PI / 180);
20565         return [point[0] * k + x, y - point[1] * k];
20566     }
20567
20568     projection.invert = function(point) {
20569         point = project.invert((point[0] - x) / k, (y - point[1]) / k);
20570         return point && [point[0] * 180 / Math.PI, point[1] * 180 / Math.PI];
20571     };
20572
20573     projection.scale = function(_) {
20574         if (!arguments.length) return k;
20575         k = +_;
20576         return projection;
20577     };
20578
20579     projection.translate = function(_) {
20580         if (!arguments.length) return [x, y];
20581         x = +_[0];
20582         y = +_[1];
20583         return projection;
20584     };
20585
20586     projection.clipExtent = function(_) {
20587         if (!arguments.length) return clipExtent;
20588         clipExtent = _;
20589         return projection;
20590     };
20591
20592     projection.stream = d3.geo.transform({
20593         point: function(x, y) {
20594             x = projection([x, y]);
20595             this.stream.point(x[0], x[1]);
20596         }
20597     }).stream;
20598
20599     return projection;
20600 };
20601 iD.actions = {};
20602 iD.actions.AddEntity = function(way) {
20603     return function(graph) {
20604         return graph.replace(way);
20605     };
20606 };
20607 iD.actions.AddMember = function(relationId, member, memberIndex) {
20608     return function(graph) {
20609         var relation = graph.entity(relationId);
20610
20611         if (isNaN(memberIndex) && member.type === 'way') {
20612             var members = relation.indexedMembers();
20613             members.push(member);
20614
20615             var joined = iD.geo.joinWays(members, graph);
20616             for (var i = 0; i < joined.length; i++) {
20617                 var segment = joined[i];
20618                 for (var j = 0; j < segment.length && segment.length >= 2; j++) {
20619                     if (segment[j] !== member)
20620                         continue;
20621
20622                     if (j === 0) {
20623                         memberIndex = segment[j + 1].index;
20624                     } else if (j === segment.length - 1) {
20625                         memberIndex = segment[j - 1].index + 1;
20626                     } else {
20627                         memberIndex = Math.min(segment[j - 1].index + 1, segment[j + 1].index + 1);
20628                     }
20629                 }
20630             }
20631         }
20632
20633         return graph.replace(relation.addMember(member, memberIndex));
20634     };
20635 };
20636 iD.actions.AddMidpoint = function(midpoint, node) {
20637     return function(graph) {
20638         graph = graph.replace(node.move(midpoint.loc));
20639
20640         var parents = _.intersection(
20641             graph.parentWays(graph.entity(midpoint.edge[0])),
20642             graph.parentWays(graph.entity(midpoint.edge[1])));
20643
20644         parents.forEach(function(way) {
20645             for (var i = 0; i < way.nodes.length - 1; i++) {
20646                 if (iD.geo.edgeEqual([way.nodes[i], way.nodes[i + 1]], midpoint.edge)) {
20647                     graph = graph.replace(graph.entity(way.id).addNode(node.id, i + 1));
20648
20649                     // Add only one midpoint on doubled-back segments,
20650                     // turning them into self-intersections.
20651                     return;
20652                 }
20653             }
20654         });
20655
20656         return graph;
20657     };
20658 };
20659 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/AddNodeToWayAction.as
20660 iD.actions.AddVertex = function(wayId, nodeId, index) {
20661     return function(graph) {
20662         return graph.replace(graph.entity(wayId).addNode(nodeId, index));
20663     };
20664 };
20665 iD.actions.ChangeMember = function(relationId, member, memberIndex) {
20666     return function(graph) {
20667         return graph.replace(graph.entity(relationId).updateMember(member, memberIndex));
20668     };
20669 };
20670 iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) {
20671     return function(graph) {
20672         var entity = graph.entity(entityId),
20673             geometry = entity.geometry(graph),
20674             tags = entity.tags;
20675
20676         if (oldPreset) tags = oldPreset.removeTags(tags, geometry);
20677         if (newPreset) tags = newPreset.applyTags(tags, geometry);
20678
20679         return graph.replace(entity.update({tags: tags}));
20680     };
20681 };
20682 iD.actions.ChangeTags = function(entityId, tags) {
20683     return function(graph) {
20684         var entity = graph.entity(entityId);
20685         return graph.replace(entity.update({tags: tags}));
20686     };
20687 };
20688 iD.actions.Circularize = function(wayId, projection, maxAngle) {
20689     maxAngle = (maxAngle || 20) * Math.PI / 180;
20690
20691     var action = function(graph) {
20692         var way = graph.entity(wayId);
20693
20694         if (!way.isConvex(graph)) {
20695             graph = action.makeConvex(graph);
20696         }
20697
20698         var nodes = _.uniq(graph.childNodes(way)),
20699             keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length !== 1; }),
20700             points = nodes.map(function(n) { return projection(n.loc); }),
20701             keyPoints = keyNodes.map(function(n) { return projection(n.loc); }),
20702             centroid = (points.length === 2) ? iD.geo.interp(points[0], points[1], 0.5) : d3.geom.polygon(points).centroid(),
20703             radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }),
20704             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20705             ids;
20706
20707         // we need atleast two key nodes for the algorithm to work
20708         if (!keyNodes.length) {
20709             keyNodes = [nodes[0]];
20710             keyPoints = [points[0]];
20711         }
20712
20713         if (keyNodes.length === 1) {
20714             var index = nodes.indexOf(keyNodes[0]),
20715                 oppositeIndex = Math.floor((index + nodes.length / 2) % nodes.length);
20716
20717             keyNodes.push(nodes[oppositeIndex]);
20718             keyPoints.push(points[oppositeIndex]);
20719         }
20720
20721         // key points and nodes are those connected to the ways,
20722         // they are projected onto the circle, inbetween nodes are moved
20723         // to constant intervals between key nodes, extra inbetween nodes are
20724         // added if necessary.
20725         for (var i = 0; i < keyPoints.length; i++) {
20726             var nextKeyNodeIndex = (i + 1) % keyNodes.length,
20727                 startNode = keyNodes[i],
20728                 endNode = keyNodes[nextKeyNodeIndex],
20729                 startNodeIndex = nodes.indexOf(startNode),
20730                 endNodeIndex = nodes.indexOf(endNode),
20731                 numberNewPoints = -1,
20732                 indexRange = endNodeIndex - startNodeIndex,
20733                 distance, totalAngle, eachAngle, startAngle, endAngle,
20734                 angle, loc, node, j,
20735                 inBetweenNodes = [];
20736
20737             if (indexRange < 0) {
20738                 indexRange += nodes.length;
20739             }
20740
20741             // position this key node
20742             distance = iD.geo.euclideanDistance(centroid, keyPoints[i]);
20743             if (distance === 0) { distance = 1e-4; }
20744             keyPoints[i] = [
20745                 centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius,
20746                 centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius];
20747             graph = graph.replace(keyNodes[i].move(projection.invert(keyPoints[i])));
20748
20749             // figure out the between delta angle we want to match to
20750             startAngle = Math.atan2(keyPoints[i][1] - centroid[1], keyPoints[i][0] - centroid[0]);
20751             endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]);
20752             totalAngle = endAngle - startAngle;
20753
20754             // detects looping around -pi/pi
20755             if (totalAngle * sign > 0) {
20756                 totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle));
20757             }
20758
20759             do {
20760                 numberNewPoints++;
20761                 eachAngle = totalAngle / (indexRange + numberNewPoints);
20762             } while (Math.abs(eachAngle) > maxAngle);
20763
20764             // move existing points
20765             for (j = 1; j < indexRange; j++) {
20766                 angle = startAngle + j * eachAngle;
20767                 loc = projection.invert([
20768                     centroid[0] + Math.cos(angle)*radius,
20769                     centroid[1] + Math.sin(angle)*radius]);
20770
20771                 node = nodes[(j + startNodeIndex) % nodes.length].move(loc);
20772                 graph = graph.replace(node);
20773             }
20774
20775             // add new inbetween nodes if necessary
20776             for (j = 0; j < numberNewPoints; j++) {
20777                 angle = startAngle + (indexRange + j) * eachAngle;
20778                 loc = projection.invert([
20779                     centroid[0] + Math.cos(angle) * radius,
20780                     centroid[1] + Math.sin(angle) * radius]);
20781
20782                 node = iD.Node({loc: loc});
20783                 graph = graph.replace(node);
20784
20785                 nodes.splice(endNodeIndex + j, 0, node);
20786                 inBetweenNodes.push(node.id);
20787             }
20788
20789             // Check for other ways that share these keyNodes..
20790             // If keyNodes are adjacent in both ways,
20791             // we can add inBetween nodes to that shared way too..
20792             if (indexRange === 1 && inBetweenNodes.length) {
20793                 var startIndex1 = way.nodes.lastIndexOf(startNode.id),
20794                     endIndex1 = way.nodes.lastIndexOf(endNode.id),
20795                     wayDirection1 = (endIndex1 - startIndex1);
20796                 if (wayDirection1 < -1) { wayDirection1 = 1; }
20797
20798                 /* eslint-disable no-loop-func */
20799                 _.each(_.without(graph.parentWays(keyNodes[i]), way), function(sharedWay) {
20800                     if (sharedWay.areAdjacent(startNode.id, endNode.id)) {
20801                         var startIndex2 = sharedWay.nodes.lastIndexOf(startNode.id),
20802                             endIndex2 = sharedWay.nodes.lastIndexOf(endNode.id),
20803                             wayDirection2 = (endIndex2 - startIndex2),
20804                             insertAt = endIndex2;
20805                         if (wayDirection2 < -1) { wayDirection2 = 1; }
20806
20807                         if (wayDirection1 !== wayDirection2) {
20808                             inBetweenNodes.reverse();
20809                             insertAt = startIndex2;
20810                         }
20811                         for (j = 0; j < inBetweenNodes.length; j++) {
20812                             sharedWay = sharedWay.addNode(inBetweenNodes[j], insertAt + j);
20813                         }
20814                         graph = graph.replace(sharedWay);
20815                     }
20816                 });
20817                 /* eslint-enable no-loop-func */
20818             }
20819
20820         }
20821
20822         // update the way to have all the new nodes
20823         ids = nodes.map(function(n) { return n.id; });
20824         ids.push(ids[0]);
20825
20826         way = way.update({nodes: ids});
20827         graph = graph.replace(way);
20828
20829         return graph;
20830     };
20831
20832     action.makeConvex = function(graph) {
20833         var way = graph.entity(wayId),
20834             nodes = _.uniq(graph.childNodes(way)),
20835             points = nodes.map(function(n) { return projection(n.loc); }),
20836             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20837             hull = d3.geom.hull(points);
20838
20839         // D3 convex hulls go counterclockwise..
20840         if (sign === -1) {
20841             nodes.reverse();
20842             points.reverse();
20843         }
20844
20845         for (var i = 0; i < hull.length - 1; i++) {
20846             var startIndex = points.indexOf(hull[i]),
20847                 endIndex = points.indexOf(hull[i+1]),
20848                 indexRange = (endIndex - startIndex);
20849
20850             if (indexRange < 0) {
20851                 indexRange += nodes.length;
20852             }
20853
20854             // move interior nodes to the surface of the convex hull..
20855             for (var j = 1; j < indexRange; j++) {
20856                 var point = iD.geo.interp(hull[i], hull[i+1], j / indexRange),
20857                     node = nodes[(j + startIndex) % nodes.length].move(projection.invert(point));
20858                 graph = graph.replace(node);
20859             }
20860         }
20861         return graph;
20862     };
20863
20864     action.disabled = function(graph) {
20865         if (!graph.entity(wayId).isClosed())
20866             return 'not_closed';
20867     };
20868
20869     return action;
20870 };
20871 // Connect the ways at the given nodes.
20872 //
20873 // The last node will survive. All other nodes will be replaced with
20874 // the surviving node in parent ways, and then removed.
20875 //
20876 // Tags and relation memberships of of non-surviving nodes are merged
20877 // to the survivor.
20878 //
20879 // This is the inverse of `iD.actions.Disconnect`.
20880 //
20881 // Reference:
20882 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeNodesAction.as
20883 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/MergeNodesAction.java
20884 //
20885 iD.actions.Connect = function(nodeIds) {
20886     return function(graph) {
20887         var survivor = graph.entity(_.last(nodeIds));
20888
20889         for (var i = 0; i < nodeIds.length - 1; i++) {
20890             var node = graph.entity(nodeIds[i]);
20891
20892             /* eslint-disable no-loop-func */
20893             graph.parentWays(node).forEach(function(parent) {
20894                 if (!parent.areAdjacent(node.id, survivor.id)) {
20895                     graph = graph.replace(parent.replaceNode(node.id, survivor.id));
20896                 }
20897             });
20898
20899             graph.parentRelations(node).forEach(function(parent) {
20900                 graph = graph.replace(parent.replaceMember(node, survivor));
20901             });
20902             /* eslint-enable no-loop-func */
20903
20904             survivor = survivor.mergeTags(node.tags);
20905             graph = iD.actions.DeleteNode(node.id)(graph);
20906         }
20907
20908         graph = graph.replace(survivor);
20909
20910         return graph;
20911     };
20912 };
20913 iD.actions.CopyEntity = function(id, fromGraph, deep) {
20914     var newEntities = [];
20915
20916     var action = function(graph) {
20917         var entity = fromGraph.entity(id);
20918
20919         newEntities = entity.copy(deep, fromGraph);
20920
20921         for (var i = 0; i < newEntities.length; i++) {
20922             graph = graph.replace(newEntities[i]);
20923         }
20924
20925         return graph;
20926     };
20927
20928     action.newEntities = function() {
20929         return newEntities;
20930     };
20931
20932     return action;
20933 };
20934 iD.actions.DeleteMember = function(relationId, memberIndex) {
20935     return function(graph) {
20936         var relation = graph.entity(relationId)
20937             .removeMember(memberIndex);
20938
20939         graph = graph.replace(relation);
20940
20941         if (relation.isDegenerate())
20942             graph = iD.actions.DeleteRelation(relation.id)(graph);
20943
20944         return graph;
20945     };
20946 };
20947 iD.actions.DeleteMultiple = function(ids) {
20948     var actions = {
20949         way: iD.actions.DeleteWay,
20950         node: iD.actions.DeleteNode,
20951         relation: iD.actions.DeleteRelation
20952     };
20953
20954     var action = function(graph) {
20955         ids.forEach(function(id) {
20956             if (graph.hasEntity(id)) { // It may have been deleted aready.
20957                 graph = actions[graph.entity(id).type](id)(graph);
20958             }
20959         });
20960
20961         return graph;
20962     };
20963
20964     action.disabled = function(graph) {
20965         for (var i = 0; i < ids.length; i++) {
20966             var id = ids[i],
20967                 disabled = actions[graph.entity(id).type](id).disabled(graph);
20968             if (disabled) return disabled;
20969         }
20970     };
20971
20972     return action;
20973 };
20974 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteNodeAction.as
20975 iD.actions.DeleteNode = function(nodeId) {
20976     var action = function(graph) {
20977         var node = graph.entity(nodeId);
20978
20979         graph.parentWays(node)
20980             .forEach(function(parent) {
20981                 parent = parent.removeNode(nodeId);
20982                 graph = graph.replace(parent);
20983
20984                 if (parent.isDegenerate()) {
20985                     graph = iD.actions.DeleteWay(parent.id)(graph);
20986                 }
20987             });
20988
20989         graph.parentRelations(node)
20990             .forEach(function(parent) {
20991                 parent = parent.removeMembersWithID(nodeId);
20992                 graph = graph.replace(parent);
20993
20994                 if (parent.isDegenerate()) {
20995                     graph = iD.actions.DeleteRelation(parent.id)(graph);
20996                 }
20997             });
20998
20999         return graph.remove(node);
21000     };
21001
21002     action.disabled = function() {
21003         return false;
21004     };
21005
21006     return action;
21007 };
21008 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteRelationAction.as
21009 iD.actions.DeleteRelation = function(relationId) {
21010     function deleteEntity(entity, graph) {
21011         return !graph.parentWays(entity).length &&
21012             !graph.parentRelations(entity).length &&
21013             !entity.hasInterestingTags();
21014     }
21015
21016     var action = function(graph) {
21017         var relation = graph.entity(relationId);
21018
21019         graph.parentRelations(relation)
21020             .forEach(function(parent) {
21021                 parent = parent.removeMembersWithID(relationId);
21022                 graph = graph.replace(parent);
21023
21024                 if (parent.isDegenerate()) {
21025                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21026                 }
21027             });
21028
21029         _.uniq(_.pluck(relation.members, 'id')).forEach(function(memberId) {
21030             graph = graph.replace(relation.removeMembersWithID(memberId));
21031
21032             var entity = graph.entity(memberId);
21033             if (deleteEntity(entity, graph)) {
21034                 graph = iD.actions.DeleteMultiple([memberId])(graph);
21035             }
21036         });
21037
21038         return graph.remove(relation);
21039     };
21040
21041     action.disabled = function(graph) {
21042         if (!graph.entity(relationId).isComplete(graph))
21043             return 'incomplete_relation';
21044     };
21045
21046     return action;
21047 };
21048 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteWayAction.as
21049 iD.actions.DeleteWay = function(wayId) {
21050     function deleteNode(node, graph) {
21051         return !graph.parentWays(node).length &&
21052             !graph.parentRelations(node).length &&
21053             !node.hasInterestingTags();
21054     }
21055
21056     var action = function(graph) {
21057         var way = graph.entity(wayId);
21058
21059         graph.parentRelations(way)
21060             .forEach(function(parent) {
21061                 parent = parent.removeMembersWithID(wayId);
21062                 graph = graph.replace(parent);
21063
21064                 if (parent.isDegenerate()) {
21065                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21066                 }
21067             });
21068
21069         _.uniq(way.nodes).forEach(function(nodeId) {
21070             graph = graph.replace(way.removeNode(nodeId));
21071
21072             var node = graph.entity(nodeId);
21073             if (deleteNode(node, graph)) {
21074                 graph = graph.remove(node);
21075             }
21076         });
21077
21078         return graph.remove(way);
21079     };
21080
21081     action.disabled = function(graph) {
21082         var disabled = false;
21083
21084         graph.parentRelations(graph.entity(wayId)).forEach(function(parent) {
21085             var type = parent.tags.type,
21086                 role = parent.memberById(wayId).role || 'outer';
21087             if (type === 'route' || type === 'boundary' || (type === 'multipolygon' && role === 'outer')) {
21088                 disabled = 'part_of_relation';
21089             }
21090         });
21091
21092         return disabled;
21093     };
21094
21095     return action;
21096 };
21097 iD.actions.DeprecateTags = function(entityId) {
21098     return function(graph) {
21099         var entity = graph.entity(entityId),
21100             newtags = _.clone(entity.tags),
21101             change = false,
21102             rule;
21103
21104         // This handles deprecated tags with a single condition
21105         for (var i = 0; i < iD.data.deprecated.length; i++) {
21106
21107             rule = iD.data.deprecated[i];
21108             var match = _.pairs(rule.old)[0],
21109                 replacements = rule.replace ? _.pairs(rule.replace) : null;
21110
21111             if (entity.tags[match[0]] && match[1] === '*') {
21112
21113                 var value = entity.tags[match[0]];
21114                 if (replacements && !newtags[replacements[0][0]]) {
21115                     newtags[replacements[0][0]] = value;
21116                 }
21117                 delete newtags[match[0]];
21118                 change = true;
21119
21120             } else if (entity.tags[match[0]] === match[1]) {
21121                 newtags = _.assign({}, rule.replace || {}, _.omit(newtags, match[0]));
21122                 change = true;
21123             }
21124         }
21125
21126         if (change) {
21127             return graph.replace(entity.update({tags: newtags}));
21128         } else {
21129             return graph;
21130         }
21131     };
21132 };
21133 iD.actions.DiscardTags = function(difference) {
21134     return function(graph) {
21135         function discardTags(entity) {
21136             if (!_.isEmpty(entity.tags)) {
21137                 var tags = {};
21138                 _.each(entity.tags, function(v, k) {
21139                     if (v) tags[k] = v;
21140                 });
21141
21142                 graph = graph.replace(entity.update({
21143                     tags: _.omit(tags, iD.data.discarded)
21144                 }));
21145             }
21146         }
21147
21148         difference.modified().forEach(discardTags);
21149         difference.created().forEach(discardTags);
21150
21151         return graph;
21152     };
21153 };
21154 // Disconect the ways at the given node.
21155 //
21156 // Optionally, disconnect only the given ways.
21157 //
21158 // For testing convenience, accepts an ID to assign to the (first) new node.
21159 // Normally, this will be undefined and the way will automatically
21160 // be assigned a new ID.
21161 //
21162 // This is the inverse of `iD.actions.Connect`.
21163 //
21164 // Reference:
21165 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/UnjoinNodeAction.as
21166 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/UnGlueAction.java
21167 //
21168 iD.actions.Disconnect = function(nodeId, newNodeId) {
21169     var wayIds;
21170
21171     var action = function(graph) {
21172         var node = graph.entity(nodeId),
21173             connections = action.connections(graph);
21174
21175         connections.forEach(function(connection) {
21176             var way = graph.entity(connection.wayID),
21177                 newNode = iD.Node({id: newNodeId, loc: node.loc, tags: node.tags});
21178
21179             graph = graph.replace(newNode);
21180             if (connection.index === 0 && way.isArea()) {
21181                 // replace shared node with shared node..
21182                 graph = graph.replace(way.replaceNode(way.nodes[0], newNode.id));
21183             } else {
21184                 // replace shared node with multiple new nodes..
21185                 graph = graph.replace(way.updateNode(newNode.id, connection.index));
21186             }
21187         });
21188
21189         return graph;
21190     };
21191
21192     action.connections = function(graph) {
21193         var candidates = [],
21194             keeping = false,
21195             parentWays = graph.parentWays(graph.entity(nodeId));
21196
21197         parentWays.forEach(function(way) {
21198             if (wayIds && wayIds.indexOf(way.id) === -1) {
21199                 keeping = true;
21200                 return;
21201             }
21202             if (way.isArea() && (way.nodes[0] === nodeId)) {
21203                 candidates.push({wayID: way.id, index: 0});
21204             } else {
21205                 way.nodes.forEach(function(waynode, index) {
21206                     if (waynode === nodeId) {
21207                         candidates.push({wayID: way.id, index: index});
21208                     }
21209                 });
21210             }
21211         });
21212
21213         return keeping ? candidates : candidates.slice(1);
21214     };
21215
21216     action.disabled = function(graph) {
21217         var connections = action.connections(graph);
21218         if (connections.length === 0 || (wayIds && wayIds.length !== connections.length))
21219             return 'not_connected';
21220     };
21221
21222     action.limitWays = function(_) {
21223         if (!arguments.length) return wayIds;
21224         wayIds = _;
21225         return action;
21226     };
21227
21228     return action;
21229 };
21230 // Join ways at the end node they share.
21231 //
21232 // This is the inverse of `iD.actions.Split`.
21233 //
21234 // Reference:
21235 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeWaysAction.as
21236 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/CombineWayAction.java
21237 //
21238 iD.actions.Join = function(ids) {
21239
21240     function groupEntitiesByGeometry(graph) {
21241         var entities = ids.map(function(id) { return graph.entity(id); });
21242         return _.extend({line: []}, _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21243     }
21244
21245     var action = function(graph) {
21246         var ways = ids.map(graph.entity, graph),
21247             survivor = ways[0];
21248
21249         // Prefer to keep an existing way.
21250         for (var i = 0; i < ways.length; i++) {
21251             if (!ways[i].isNew()) {
21252                 survivor = ways[i];
21253                 break;
21254             }
21255         }
21256
21257         var joined = iD.geo.joinWays(ways, graph)[0];
21258
21259         survivor = survivor.update({nodes: _.pluck(joined.nodes, 'id')});
21260         graph = graph.replace(survivor);
21261
21262         joined.forEach(function(way) {
21263             if (way.id === survivor.id)
21264                 return;
21265
21266             graph.parentRelations(way).forEach(function(parent) {
21267                 graph = graph.replace(parent.replaceMember(way, survivor));
21268             });
21269
21270             survivor = survivor.mergeTags(way.tags);
21271
21272             graph = graph.replace(survivor);
21273             graph = iD.actions.DeleteWay(way.id)(graph);
21274         });
21275
21276         return graph;
21277     };
21278
21279     action.disabled = function(graph) {
21280         var geometries = groupEntitiesByGeometry(graph);
21281         if (ids.length < 2 || ids.length !== geometries.line.length)
21282             return 'not_eligible';
21283
21284         var joined = iD.geo.joinWays(ids.map(graph.entity, graph), graph);
21285         if (joined.length > 1)
21286             return 'not_adjacent';
21287
21288         var nodeIds = _.pluck(joined[0].nodes, 'id').slice(1, -1),
21289             relation,
21290             tags = {},
21291             conflicting = false;
21292
21293         joined[0].forEach(function(way) {
21294             var parents = graph.parentRelations(way);
21295             parents.forEach(function(parent) {
21296                 if (parent.isRestriction() && parent.members.some(function(m) { return nodeIds.indexOf(m.id) >= 0; }))
21297                     relation = parent;
21298             });
21299
21300             for (var k in way.tags) {
21301                 if (!(k in tags)) {
21302                     tags[k] = way.tags[k];
21303                 } else if (tags[k] && iD.interestingTag(k) && tags[k] !== way.tags[k]) {
21304                     conflicting = true;
21305                 }
21306             }
21307         });
21308
21309         if (relation)
21310             return 'restriction';
21311
21312         if (conflicting)
21313             return 'conflicting_tags';
21314     };
21315
21316     return action;
21317 };
21318 iD.actions.Merge = function(ids) {
21319     function groupEntitiesByGeometry(graph) {
21320         var entities = ids.map(function(id) { return graph.entity(id); });
21321         return _.extend({point: [], area: [], line: [], relation: []},
21322             _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21323     }
21324
21325     var action = function(graph) {
21326         var geometries = groupEntitiesByGeometry(graph),
21327             target = geometries.area[0] || geometries.line[0],
21328             points = geometries.point;
21329
21330         points.forEach(function(point) {
21331             target = target.mergeTags(point.tags);
21332
21333             graph.parentRelations(point).forEach(function(parent) {
21334                 graph = graph.replace(parent.replaceMember(point, target));
21335             });
21336
21337             graph = graph.remove(point);
21338         });
21339
21340         graph = graph.replace(target);
21341
21342         return graph;
21343     };
21344
21345     action.disabled = function(graph) {
21346         var geometries = groupEntitiesByGeometry(graph);
21347         if (geometries.point.length === 0 ||
21348             (geometries.area.length + geometries.line.length) !== 1 ||
21349             geometries.relation.length !== 0)
21350             return 'not_eligible';
21351     };
21352
21353     return action;
21354 };
21355 iD.actions.MergePolygon = function(ids, newRelationId) {
21356
21357     function groupEntities(graph) {
21358         var entities = ids.map(function (id) { return graph.entity(id); });
21359         return _.extend({
21360                 closedWay: [],
21361                 multipolygon: [],
21362                 other: []
21363             }, _.groupBy(entities, function(entity) {
21364                 if (entity.type === 'way' && entity.isClosed()) {
21365                     return 'closedWay';
21366                 } else if (entity.type === 'relation' && entity.isMultipolygon()) {
21367                     return 'multipolygon';
21368                 } else {
21369                     return 'other';
21370                 }
21371             }));
21372     }
21373
21374     var action = function(graph) {
21375         var entities = groupEntities(graph);
21376
21377         // An array representing all the polygons that are part of the multipolygon.
21378         //
21379         // Each element is itself an array of objects with an id property, and has a
21380         // locs property which is an array of the locations forming the polygon.
21381         var polygons = entities.multipolygon.reduce(function(polygons, m) {
21382             return polygons.concat(iD.geo.joinWays(m.members, graph));
21383         }, []).concat(entities.closedWay.map(function(d) {
21384             var member = [{id: d.id}];
21385             member.nodes = graph.childNodes(d);
21386             return member;
21387         }));
21388
21389         // contained is an array of arrays of boolean values,
21390         // where contained[j][k] is true iff the jth way is
21391         // contained by the kth way.
21392         var contained = polygons.map(function(w, i) {
21393             return polygons.map(function(d, n) {
21394                 if (i === n) return null;
21395                 return iD.geo.polygonContainsPolygon(
21396                     _.pluck(d.nodes, 'loc'),
21397                     _.pluck(w.nodes, 'loc'));
21398             });
21399         });
21400
21401         // Sort all polygons as either outer or inner ways
21402         var members = [],
21403             outer = true;
21404
21405         while (polygons.length) {
21406             extractUncontained(polygons);
21407             polygons = polygons.filter(isContained);
21408             contained = contained.filter(isContained).map(filterContained);
21409         }
21410
21411         function isContained(d, i) {
21412             return _.any(contained[i]);
21413         }
21414
21415         function filterContained(d) {
21416             return d.filter(isContained);
21417         }
21418
21419         function extractUncontained(polygons) {
21420             polygons.forEach(function(d, i) {
21421                 if (!isContained(d, i)) {
21422                     d.forEach(function(member) {
21423                         members.push({
21424                             type: 'way',
21425                             id: member.id,
21426                             role: outer ? 'outer' : 'inner'
21427                         });
21428                     });
21429                 }
21430             });
21431             outer = !outer;
21432         }
21433
21434         // Move all tags to one relation
21435         var relation = entities.multipolygon[0] ||
21436             iD.Relation({ id: newRelationId, tags: { type: 'multipolygon' }});
21437
21438         entities.multipolygon.slice(1).forEach(function(m) {
21439             relation = relation.mergeTags(m.tags);
21440             graph = graph.remove(m);
21441         });
21442
21443         entities.closedWay.forEach(function(way) {
21444             function isThisOuter(m) {
21445                 return m.id === way.id && m.role !== 'inner';
21446             }
21447             if (members.some(isThisOuter)) {
21448                 relation = relation.mergeTags(way.tags);
21449                 graph = graph.replace(way.update({ tags: {} }));
21450             }
21451         });
21452
21453         return graph.replace(relation.update({
21454             members: members,
21455             tags: _.omit(relation.tags, 'area')
21456         }));
21457     };
21458
21459     action.disabled = function(graph) {
21460         var entities = groupEntities(graph);
21461         if (entities.other.length > 0 ||
21462             entities.closedWay.length + entities.multipolygon.length < 2)
21463             return 'not_eligible';
21464         if (!entities.multipolygon.every(function(r) { return r.isComplete(graph); }))
21465             return 'incomplete_relation';
21466     };
21467
21468     return action;
21469 };
21470 iD.actions.MergeRemoteChanges = function(id, localGraph, remoteGraph, formatUser) {
21471     var option = 'safe',  // 'safe', 'force_local', 'force_remote'
21472         conflicts = [];
21473
21474     function user(d) {
21475         return _.isFunction(formatUser) ? formatUser(d) : d;
21476     }
21477
21478
21479     function mergeLocation(remote, target) {
21480         function pointEqual(a, b) {
21481             var epsilon = 1e-6;
21482             return (Math.abs(a[0] - b[0]) < epsilon) && (Math.abs(a[1] - b[1]) < epsilon);
21483         }
21484
21485         if (option === 'force_local' || pointEqual(target.loc, remote.loc)) {
21486             return target;
21487         }
21488         if (option === 'force_remote') {
21489             return target.update({loc: remote.loc});
21490         }
21491
21492         conflicts.push(t('merge_remote_changes.conflict.location', { user: user(remote.user) }));
21493         return target;
21494     }
21495
21496
21497     function mergeNodes(base, remote, target) {
21498         if (option === 'force_local' || _.isEqual(target.nodes, remote.nodes)) {
21499             return target;
21500         }
21501         if (option === 'force_remote') {
21502             return target.update({nodes: remote.nodes});
21503         }
21504
21505         var ccount = conflicts.length,
21506             o = base.nodes || [],
21507             a = target.nodes || [],
21508             b = remote.nodes || [],
21509             nodes = [],
21510             hunks = Diff3.diff3_merge(a, o, b, true);
21511
21512         for (var i = 0; i < hunks.length; i++) {
21513             var hunk = hunks[i];
21514             if (hunk.ok) {
21515                 nodes.push.apply(nodes, hunk.ok);
21516             } else {
21517                 // for all conflicts, we can assume c.a !== c.b
21518                 // because `diff3_merge` called with `true` option to exclude false conflicts..
21519                 var c = hunk.conflict;
21520                 if (_.isEqual(c.o, c.a)) {  // only changed remotely
21521                     nodes.push.apply(nodes, c.b);
21522                 } else if (_.isEqual(c.o, c.b)) {  // only changed locally
21523                     nodes.push.apply(nodes, c.a);
21524                 } else {       // changed both locally and remotely
21525                     conflicts.push(t('merge_remote_changes.conflict.nodelist', { user: user(remote.user) }));
21526                     break;
21527                 }
21528             }
21529         }
21530
21531         return (conflicts.length === ccount) ? target.update({nodes: nodes}) : target;
21532     }
21533
21534
21535     function mergeChildren(targetWay, children, updates, graph) {
21536         function isUsed(node, targetWay) {
21537             var parentWays = _.pluck(graph.parentWays(node), 'id');
21538             return node.hasInterestingTags() ||
21539                 _.without(parentWays, targetWay.id).length > 0 ||
21540                 graph.parentRelations(node).length > 0;
21541         }
21542
21543         var ccount = conflicts.length;
21544
21545         for (var i = 0; i < children.length; i++) {
21546             var id = children[i],
21547                 node = graph.hasEntity(id);
21548
21549             // remove unused childNodes..
21550             if (targetWay.nodes.indexOf(id) === -1) {
21551                 if (node && !isUsed(node, targetWay)) {
21552                     updates.removeIds.push(id);
21553                 }
21554                 continue;
21555             }
21556
21557             // restore used childNodes..
21558             var local = localGraph.hasEntity(id),
21559                 remote = remoteGraph.hasEntity(id),
21560                 target;
21561
21562             if (option === 'force_remote' && remote && remote.visible) {
21563                 updates.replacements.push(remote);
21564
21565             } else if (option === 'force_local' && local) {
21566                 target = iD.Entity(local);
21567                 if (remote) {
21568                     target = target.update({ version: remote.version });
21569                 }
21570                 updates.replacements.push(target);
21571
21572             } else if (option === 'safe' && local && remote && local.version !== remote.version) {
21573                 target = iD.Entity(local, { version: remote.version });
21574                 if (remote.visible) {
21575                     target = mergeLocation(remote, target);
21576                 } else {
21577                     conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21578                 }
21579
21580                 if (conflicts.length !== ccount) break;
21581                 updates.replacements.push(target);
21582             }
21583         }
21584
21585         return targetWay;
21586     }
21587
21588
21589     function updateChildren(updates, graph) {
21590         for (var i = 0; i < updates.replacements.length; i++) {
21591             graph = graph.replace(updates.replacements[i]);
21592         }
21593         if (updates.removeIds.length) {
21594             graph = iD.actions.DeleteMultiple(updates.removeIds)(graph);
21595         }
21596         return graph;
21597     }
21598
21599
21600     function mergeMembers(remote, target) {
21601         if (option === 'force_local' || _.isEqual(target.members, remote.members)) {
21602             return target;
21603         }
21604         if (option === 'force_remote') {
21605             return target.update({members: remote.members});
21606         }
21607
21608         conflicts.push(t('merge_remote_changes.conflict.memberlist', { user: user(remote.user) }));
21609         return target;
21610     }
21611
21612
21613     function mergeTags(base, remote, target) {
21614         function ignoreKey(k) {
21615             return _.contains(iD.data.discarded, k);
21616         }
21617
21618         if (option === 'force_local' || _.isEqual(target.tags, remote.tags)) {
21619             return target;
21620         }
21621         if (option === 'force_remote') {
21622             return target.update({tags: remote.tags});
21623         }
21624
21625         var ccount = conflicts.length,
21626             o = base.tags || {},
21627             a = target.tags || {},
21628             b = remote.tags || {},
21629             keys = _.reject(_.union(_.keys(o), _.keys(a), _.keys(b)), ignoreKey),
21630             tags = _.clone(a),
21631             changed = false;
21632
21633         for (var i = 0; i < keys.length; i++) {
21634             var k = keys[i];
21635
21636             if (o[k] !== b[k] && a[k] !== b[k]) {    // changed remotely..
21637                 if (o[k] !== a[k]) {      // changed locally..
21638                     conflicts.push(t('merge_remote_changes.conflict.tags',
21639                         { tag: k, local: a[k], remote: b[k], user: user(remote.user) }));
21640
21641                 } else {                  // unchanged locally, accept remote change..
21642                     if (b.hasOwnProperty(k)) {
21643                         tags[k] = b[k];
21644                     } else {
21645                         delete tags[k];
21646                     }
21647                     changed = true;
21648                 }
21649             }
21650         }
21651
21652         return (changed && conflicts.length === ccount) ? target.update({tags: tags}) : target;
21653     }
21654
21655
21656     //  `graph.base()` is the common ancestor of the two graphs.
21657     //  `localGraph` contains user's edits up to saving
21658     //  `remoteGraph` contains remote edits to modified nodes
21659     //  `graph` must be a descendent of `localGraph` and may include
21660     //      some conflict resolution actions performed on it.
21661     //
21662     //                  --- ... --- `localGraph` -- ... -- `graph`
21663     //                 /
21664     //  `graph.base()` --- ... --- `remoteGraph`
21665     //
21666     var action = function(graph) {
21667         var updates = { replacements: [], removeIds: [] },
21668             base = graph.base().entities[id],
21669             local = localGraph.entity(id),
21670             remote = remoteGraph.entity(id),
21671             target = iD.Entity(local, { version: remote.version });
21672
21673         // delete/undelete
21674         if (!remote.visible) {
21675             if (option === 'force_remote') {
21676                 return iD.actions.DeleteMultiple([id])(graph);
21677
21678             } else if (option === 'force_local') {
21679                 if (target.type === 'way') {
21680                     target = mergeChildren(target, _.uniq(local.nodes), updates, graph);
21681                     graph = updateChildren(updates, graph);
21682                 }
21683                 return graph.replace(target);
21684
21685             } else {
21686                 conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21687                 return graph;  // do nothing
21688             }
21689         }
21690
21691         // merge
21692         if (target.type === 'node') {
21693             target = mergeLocation(remote, target);
21694
21695         } else if (target.type === 'way') {
21696             // pull in any child nodes that may not be present locally..
21697             graph.rebase(remoteGraph.childNodes(remote), [graph], false);
21698             target = mergeNodes(base, remote, target);
21699             target = mergeChildren(target, _.union(local.nodes, remote.nodes), updates, graph);
21700
21701         } else if (target.type === 'relation') {
21702             target = mergeMembers(remote, target);
21703         }
21704
21705         target = mergeTags(base, remote, target);
21706
21707         if (!conflicts.length) {
21708             graph = updateChildren(updates, graph).replace(target);
21709         }
21710
21711         return graph;
21712     };
21713
21714     action.withOption = function(opt) {
21715         option = opt;
21716         return action;
21717     };
21718
21719     action.conflicts = function() {
21720         return conflicts;
21721     };
21722
21723     return action;
21724 };
21725 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
21726 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
21727 iD.actions.Move = function(moveIds, tryDelta, projection, cache) {
21728     var delta = tryDelta;
21729
21730     function vecAdd(a, b) { return [a[0] + b[0], a[1] + b[1]]; }
21731     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
21732
21733     function setupCache(graph) {
21734         function canMove(nodeId) {
21735             var parents = _.pluck(graph.parentWays(graph.entity(nodeId)), 'id');
21736             if (parents.length < 3) return true;
21737
21738             // Don't move a vertex where >2 ways meet, unless all parentWays are moving too..
21739             var parentsMoving = _.all(parents, function(id) { return cache.moving[id]; });
21740             if (!parentsMoving) delete cache.moving[nodeId];
21741
21742             return parentsMoving;
21743         }
21744
21745         function cacheEntities(ids) {
21746             _.each(ids, function(id) {
21747                 if (cache.moving[id]) return;
21748                 cache.moving[id] = true;
21749
21750                 var entity = graph.hasEntity(id);
21751                 if (!entity) return;
21752
21753                 if (entity.type === 'node') {
21754                     cache.nodes.push(id);
21755                     cache.startLoc[id] = entity.loc;
21756                 } else if (entity.type === 'way') {
21757                     cache.ways.push(id);
21758                     cacheEntities(entity.nodes);
21759                 } else {
21760                     cacheEntities(_.pluck(entity.members, 'id'));
21761                 }
21762             });
21763         }
21764
21765         function cacheIntersections(ids) {
21766             function isEndpoint(way, id) { return !way.isClosed() && !!way.affix(id); }
21767
21768             _.each(ids, function(id) {
21769                 // consider only intersections with 1 moved and 1 unmoved way.
21770                 _.each(graph.childNodes(graph.entity(id)), function(node) {
21771                     var parents = graph.parentWays(node);
21772                     if (parents.length !== 2) return;
21773
21774                     var moved = graph.entity(id),
21775                         unmoved = _.find(parents, function(way) { return !cache.moving[way.id]; });
21776                     if (!unmoved) return;
21777
21778                     // exclude ways that are overly connected..
21779                     if (_.intersection(moved.nodes, unmoved.nodes).length > 2) return;
21780
21781                     if (moved.isArea() || unmoved.isArea()) return;
21782
21783                     cache.intersection[node.id] = {
21784                         nodeId: node.id,
21785                         movedId: moved.id,
21786                         unmovedId: unmoved.id,
21787                         movedIsEP: isEndpoint(moved, node.id),
21788                         unmovedIsEP: isEndpoint(unmoved, node.id)
21789                     };
21790                 });
21791             });
21792         }
21793
21794
21795         if (!cache) {
21796             cache = {};
21797         }
21798         if (!cache.ok) {
21799             cache.moving = {};
21800             cache.intersection = {};
21801             cache.replacedVertex = {};
21802             cache.startLoc = {};
21803             cache.nodes = [];
21804             cache.ways = [];
21805
21806             cacheEntities(moveIds);
21807             cacheIntersections(cache.ways);
21808             cache.nodes = _.filter(cache.nodes, canMove);
21809
21810             cache.ok = true;
21811         }
21812     }
21813
21814
21815     // Place a vertex where the moved vertex used to be, to preserve way shape..
21816     function replaceMovedVertex(nodeId, wayId, graph, delta) {
21817         var way = graph.entity(wayId),
21818             moved = graph.entity(nodeId),
21819             movedIndex = way.nodes.indexOf(nodeId),
21820             len, prevIndex, nextIndex;
21821
21822         if (way.isClosed()) {
21823             len = way.nodes.length - 1;
21824             prevIndex = (movedIndex + len - 1) % len;
21825             nextIndex = (movedIndex + len + 1) % len;
21826         } else {
21827             len = way.nodes.length;
21828             prevIndex = movedIndex - 1;
21829             nextIndex = movedIndex + 1;
21830         }
21831
21832         var prev = graph.hasEntity(way.nodes[prevIndex]),
21833             next = graph.hasEntity(way.nodes[nextIndex]);
21834
21835         // Don't add orig vertex at endpoint..
21836         if (!prev || !next) return graph;
21837
21838         var key = wayId + '_' + nodeId,
21839             orig = cache.replacedVertex[key];
21840         if (!orig) {
21841             orig = iD.Node();
21842             cache.replacedVertex[key] = orig;
21843             cache.startLoc[orig.id] = cache.startLoc[nodeId];
21844         }
21845
21846         var start, end;
21847         if (delta) {
21848             start = projection(cache.startLoc[nodeId]);
21849             end = projection.invert(vecAdd(start, delta));
21850         } else {
21851             end = cache.startLoc[nodeId];
21852         }
21853         orig = orig.move(end);
21854
21855         var angle = Math.abs(iD.geo.angle(orig, prev, projection) -
21856                 iD.geo.angle(orig, next, projection)) * 180 / Math.PI;
21857
21858         // Don't add orig vertex if it would just make a straight line..
21859         if (angle > 175 && angle < 185) return graph;
21860
21861         // Don't add orig vertex if another point is already nearby (within 10m)
21862         if (iD.geo.sphericalDistance(prev.loc, orig.loc) < 10 ||
21863             iD.geo.sphericalDistance(orig.loc, next.loc) < 10) return graph;
21864
21865         // moving forward or backward along way?
21866         var p1 = [prev.loc, orig.loc, moved.loc, next.loc].map(projection),
21867             p2 = [prev.loc, moved.loc, orig.loc, next.loc].map(projection),
21868             d1 = iD.geo.pathLength(p1),
21869             d2 = iD.geo.pathLength(p2),
21870             insertAt = (d1 < d2) ? movedIndex : nextIndex;
21871
21872         // moving around closed loop?
21873         if (way.isClosed() && insertAt === 0) insertAt = len;
21874
21875         way = way.addNode(orig.id, insertAt);
21876         return graph.replace(orig).replace(way);
21877     }
21878
21879     // Reorder nodes around intersections that have moved..
21880     function unZorroIntersection(intersection, graph) {
21881         var vertex = graph.entity(intersection.nodeId),
21882             way1 = graph.entity(intersection.movedId),
21883             way2 = graph.entity(intersection.unmovedId),
21884             isEP1 = intersection.movedIsEP,
21885             isEP2 = intersection.unmovedIsEP;
21886
21887         // don't move the vertex if it is the endpoint of both ways.
21888         if (isEP1 && isEP2) return graph;
21889
21890         var nodes1 = _.without(graph.childNodes(way1), vertex),
21891             nodes2 = _.without(graph.childNodes(way2), vertex);
21892
21893         if (way1.isClosed() && way1.first() === vertex.id) nodes1.push(nodes1[0]);
21894         if (way2.isClosed() && way2.first() === vertex.id) nodes2.push(nodes2[0]);
21895
21896         var edge1 = !isEP1 && iD.geo.chooseEdge(nodes1, projection(vertex.loc), projection),
21897             edge2 = !isEP2 && iD.geo.chooseEdge(nodes2, projection(vertex.loc), projection),
21898             loc;
21899
21900         // snap vertex to nearest edge (or some point between them)..
21901         if (!isEP1 && !isEP2) {
21902             var epsilon = 1e-4, maxIter = 10;
21903             for (var i = 0; i < maxIter; i++) {
21904                 loc = iD.geo.interp(edge1.loc, edge2.loc, 0.5);
21905                 edge1 = iD.geo.chooseEdge(nodes1, projection(loc), projection);
21906                 edge2 = iD.geo.chooseEdge(nodes2, projection(loc), projection);
21907                 if (Math.abs(edge1.distance - edge2.distance) < epsilon) break;
21908             }
21909         } else if (!isEP1) {
21910             loc = edge1.loc;
21911         } else {
21912             loc = edge2.loc;
21913         }
21914
21915         graph = graph.replace(vertex.move(loc));
21916
21917         // if zorro happened, reorder nodes..
21918         if (!isEP1 && edge1.index !== way1.nodes.indexOf(vertex.id)) {
21919             way1 = way1.removeNode(vertex.id).addNode(vertex.id, edge1.index);
21920             graph = graph.replace(way1);
21921         }
21922         if (!isEP2 && edge2.index !== way2.nodes.indexOf(vertex.id)) {
21923             way2 = way2.removeNode(vertex.id).addNode(vertex.id, edge2.index);
21924             graph = graph.replace(way2);
21925         }
21926
21927         return graph;
21928     }
21929
21930
21931     function cleanupIntersections(graph) {
21932         _.each(cache.intersection, function(obj) {
21933             graph = replaceMovedVertex(obj.nodeId, obj.movedId, graph, delta);
21934             graph = replaceMovedVertex(obj.nodeId, obj.unmovedId, graph, null);
21935             graph = unZorroIntersection(obj, graph);
21936         });
21937
21938         return graph;
21939     }
21940
21941     // check if moving way endpoint can cross an unmoved way, if so limit delta..
21942     function limitDelta(graph) {
21943         _.each(cache.intersection, function(obj) {
21944             if (!obj.movedIsEP) return;
21945
21946             var node = graph.entity(obj.nodeId),
21947                 start = projection(node.loc),
21948                 end = vecAdd(start, delta),
21949                 movedNodes = graph.childNodes(graph.entity(obj.movedId)),
21950                 movedPath = _.map(_.pluck(movedNodes, 'loc'),
21951                     function(loc) { return vecAdd(projection(loc), delta); }),
21952                 unmovedNodes = graph.childNodes(graph.entity(obj.unmovedId)),
21953                 unmovedPath = _.map(_.pluck(unmovedNodes, 'loc'), projection),
21954                 hits = iD.geo.pathIntersections(movedPath, unmovedPath);
21955
21956             for (var i = 0; i < hits.length; i++) {
21957                 if (_.isEqual(hits[i], end)) continue;
21958                 var edge = iD.geo.chooseEdge(unmovedNodes, end, projection);
21959                 delta = vecSub(projection(edge.loc), start);
21960             }
21961         });
21962     }
21963
21964
21965     var action = function(graph) {
21966         if (delta[0] === 0 && delta[1] === 0) return graph;
21967
21968         setupCache(graph);
21969
21970         if (!_.isEmpty(cache.intersection)) {
21971             limitDelta(graph);
21972         }
21973
21974         _.each(cache.nodes, function(id) {
21975             var node = graph.entity(id),
21976                 start = projection(node.loc),
21977                 end = vecAdd(start, delta);
21978             graph = graph.replace(node.move(projection.invert(end)));
21979         });
21980
21981         if (!_.isEmpty(cache.intersection)) {
21982             graph = cleanupIntersections(graph);
21983         }
21984
21985         return graph;
21986     };
21987
21988     action.disabled = function(graph) {
21989         function incompleteRelation(id) {
21990             var entity = graph.entity(id);
21991             return entity.type === 'relation' && !entity.isComplete(graph);
21992         }
21993
21994         if (_.any(moveIds, incompleteRelation))
21995             return 'incomplete_relation';
21996     };
21997
21998     action.delta = function() {
21999         return delta;
22000     };
22001
22002     return action;
22003 };
22004 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
22005 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
22006 iD.actions.MoveNode = function(nodeId, loc) {
22007     return function(graph) {
22008         return graph.replace(graph.entity(nodeId).move(loc));
22009     };
22010 };
22011 iD.actions.Noop = function() {
22012     return function(graph) {
22013         return graph;
22014     };
22015 };
22016 /*
22017  * Based on https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/potlatch2/tools/Quadrilateralise.as
22018  */
22019
22020 iD.actions.Orthogonalize = function(wayId, projection) {
22021     var threshold = 12, // degrees within right or straight to alter
22022         lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180),
22023         upperThreshold = Math.cos(threshold * Math.PI / 180);
22024
22025     var action = function(graph) {
22026         var way = graph.entity(wayId),
22027             nodes = graph.childNodes(way),
22028             points = _.uniq(nodes).map(function(n) { return projection(n.loc); }),
22029             corner = {i: 0, dotp: 1},
22030             epsilon = 1e-4,
22031             i, j, score, motions;
22032
22033         if (nodes.length === 4) {
22034             for (i = 0; i < 1000; i++) {
22035                 motions = points.map(calcMotion);
22036                 points[corner.i] = addPoints(points[corner.i],motions[corner.i]);
22037                 score = corner.dotp;
22038                 if (score < epsilon) {
22039                     break;
22040                 }
22041             }
22042
22043             graph = graph.replace(graph.entity(nodes[corner.i].id)
22044                 .move(projection.invert(points[corner.i])));
22045         } else {
22046             var best,
22047                 originalPoints = _.clone(points);
22048             score = Infinity;
22049
22050             for (i = 0; i < 1000; i++) {
22051                 motions = points.map(calcMotion);
22052                 for (j = 0; j < motions.length; j++) {
22053                     points[j] = addPoints(points[j],motions[j]);
22054                 }
22055                 var newScore = squareness(points);
22056                 if (newScore < score) {
22057                     best = _.clone(points);
22058                     score = newScore;
22059                 }
22060                 if (score < epsilon) {
22061                     break;
22062                 }
22063             }
22064
22065             points = best;
22066
22067             for (i = 0; i < points.length; i++) {
22068                 // only move the points that actually moved
22069                 if (originalPoints[i][0] !== points[i][0] || originalPoints[i][1] !== points[i][1]) {
22070                     graph = graph.replace(graph.entity(nodes[i].id)
22071                         .move(projection.invert(points[i])));
22072                 }
22073             }
22074
22075             // remove empty nodes on straight sections
22076             for (i = 0; i < points.length; i++) {
22077                 var node = nodes[i];
22078
22079                 if (graph.parentWays(node).length > 1 ||
22080                     graph.parentRelations(node).length ||
22081                     node.hasInterestingTags()) {
22082
22083                     continue;
22084                 }
22085
22086                 var dotp = normalizedDotProduct(i, points);
22087                 if (dotp < -1 + epsilon) {
22088                     graph = iD.actions.DeleteNode(nodes[i].id)(graph);
22089                 }
22090             }
22091         }
22092
22093         return graph;
22094
22095         function calcMotion(b, i, array) {
22096             var a = array[(i - 1 + array.length) % array.length],
22097                 c = array[(i + 1) % array.length],
22098                 p = subtractPoints(a, b),
22099                 q = subtractPoints(c, b),
22100                 scale, dotp;
22101
22102             scale = 2 * Math.min(iD.geo.euclideanDistance(p, [0, 0]), iD.geo.euclideanDistance(q, [0, 0]));
22103             p = normalizePoint(p, 1.0);
22104             q = normalizePoint(q, 1.0);
22105
22106             dotp = filterDotProduct(p[0] * q[0] + p[1] * q[1]);
22107
22108             // nasty hack to deal with almost-straight segments (angle is closer to 180 than to 90/270).
22109             if (array.length > 3) {
22110                 if (dotp < -0.707106781186547) {
22111                     dotp += 1.0;
22112                 }
22113             } else if (dotp && Math.abs(dotp) < corner.dotp) {
22114                 corner.i = i;
22115                 corner.dotp = Math.abs(dotp);
22116             }
22117
22118             return normalizePoint(addPoints(p, q), 0.1 * dotp * scale);
22119         }
22120     };
22121
22122     function squareness(points) {
22123         return points.reduce(function(sum, val, i, array) {
22124             var dotp = normalizedDotProduct(i, array);
22125
22126             dotp = filterDotProduct(dotp);
22127             return sum + 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
22128         }, 0);
22129     }
22130
22131     function normalizedDotProduct(i, points) {
22132         var a = points[(i - 1 + points.length) % points.length],
22133             b = points[i],
22134             c = points[(i + 1) % points.length],
22135             p = subtractPoints(a, b),
22136             q = subtractPoints(c, b);
22137
22138         p = normalizePoint(p, 1.0);
22139         q = normalizePoint(q, 1.0);
22140
22141         return p[0] * q[0] + p[1] * q[1];
22142     }
22143
22144     function subtractPoints(a, b) {
22145         return [a[0] - b[0], a[1] - b[1]];
22146     }
22147
22148     function addPoints(a, b) {
22149         return [a[0] + b[0], a[1] + b[1]];
22150     }
22151
22152     function normalizePoint(point, scale) {
22153         var vector = [0, 0];
22154         var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]);
22155         if (length !== 0) {
22156             vector[0] = point[0] / length;
22157             vector[1] = point[1] / length;
22158         }
22159
22160         vector[0] *= scale;
22161         vector[1] *= scale;
22162
22163         return vector;
22164     }
22165
22166     function filterDotProduct(dotp) {
22167         if (lowerThreshold > Math.abs(dotp) || Math.abs(dotp) > upperThreshold) {
22168             return dotp;
22169         }
22170
22171         return 0;
22172     }
22173
22174     action.disabled = function(graph) {
22175         var way = graph.entity(wayId),
22176             nodes = graph.childNodes(way),
22177             points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
22178
22179         if (squareness(points)) {
22180             return false;
22181         }
22182
22183         return 'not_squarish';
22184     };
22185
22186     return action;
22187 };
22188 // Create a restriction relation for `turn`, which must have the following structure:
22189 //
22190 //     {
22191 //         from: { node: <node ID>, way: <way ID> },
22192 //         via:  { node: <node ID> },
22193 //         to:   { node: <node ID>, way: <way ID> },
22194 //         restriction: <'no_right_turn', 'no_left_turn', etc.>
22195 //     }
22196 //
22197 // This specifies a restriction of type `restriction` when traveling from
22198 // `from.node` in `from.way` toward `to.node` in `to.way` via `via.node`.
22199 // (The action does not check that these entities form a valid intersection.)
22200 //
22201 // If `restriction` is not provided, it is automatically determined by
22202 // iD.geo.inferRestriction.
22203 //
22204 // If necessary, the `from` and `to` ways are split. In these cases, `from.node`
22205 // and `to.node` are used to determine which portion of the split ways become
22206 // members of the restriction.
22207 //
22208 // For testing convenience, accepts an ID to assign to the new relation.
22209 // Normally, this will be undefined and the relation will automatically
22210 // be assigned a new ID.
22211 //
22212 iD.actions.RestrictTurn = function(turn, projection, restrictionId) {
22213     return function(graph) {
22214         var from = graph.entity(turn.from.way),
22215             via  = graph.entity(turn.via.node),
22216             to   = graph.entity(turn.to.way);
22217
22218         function isClosingNode(way, nodeId) {
22219             return nodeId === way.first() && nodeId === way.last();
22220         }
22221
22222         function split(toOrFrom) {
22223             var newID = toOrFrom.newID || iD.Way().id;
22224             graph = iD.actions.Split(via.id, [newID])
22225                 .limitWays([toOrFrom.way])(graph);
22226
22227             var a = graph.entity(newID),
22228                 b = graph.entity(toOrFrom.way);
22229
22230             if (a.nodes.indexOf(toOrFrom.node) !== -1) {
22231                 return [a, b];
22232             } else {
22233                 return [b, a];
22234             }
22235         }
22236
22237         if (!from.affix(via.id) || isClosingNode(from, via.id)) {
22238             if (turn.from.node === turn.to.node) {
22239                 // U-turn
22240                 from = to = split(turn.from)[0];
22241             } else if (turn.from.way === turn.to.way) {
22242                 // Straight-on or circular
22243                 var s = split(turn.from);
22244                 from = s[0];
22245                 to   = s[1];
22246             } else {
22247                 // Other
22248                 from = split(turn.from)[0];
22249             }
22250         }
22251
22252         if (!to.affix(via.id) || isClosingNode(to, via.id)) {
22253             to = split(turn.to)[0];
22254         }
22255
22256         return graph.replace(iD.Relation({
22257             id: restrictionId,
22258             tags: {
22259                 type: 'restriction',
22260                 restriction: turn.restriction ||
22261                     iD.geo.inferRestriction(
22262                         graph,
22263                         turn.from,
22264                         turn.via,
22265                         turn.to,
22266                         projection)
22267             },
22268             members: [
22269                 {id: from.id, type: 'way',  role: 'from'},
22270                 {id: via.id,  type: 'node', role: 'via'},
22271                 {id: to.id,   type: 'way',  role: 'to'}
22272             ]
22273         }));
22274     };
22275 };
22276 /*
22277   Order the nodes of a way in reverse order and reverse any direction dependent tags
22278   other than `oneway`. (We assume that correcting a backwards oneway is the primary
22279   reason for reversing a way.)
22280
22281   The following transforms are performed:
22282
22283     Keys:
22284           *:right=* ⟺ *:left=*
22285         *:forward=* ⟺ *:backward=*
22286        direction=up ⟺ direction=down
22287          incline=up ⟺ incline=down
22288             *=right ⟺ *=left
22289
22290     Relation members:
22291        role=forward ⟺ role=backward
22292          role=north ⟺ role=south
22293           role=east ⟺ role=west
22294
22295    In addition, numeric-valued `incline` tags are negated.
22296
22297    The JOSM implementation was used as a guide, but transformations that were of unclear benefit
22298    or adjusted tags that don't seem to be used in practice were omitted.
22299
22300    References:
22301       http://wiki.openstreetmap.org/wiki/Forward_%26_backward,_left_%26_right
22302       http://wiki.openstreetmap.org/wiki/Key:direction#Steps
22303       http://wiki.openstreetmap.org/wiki/Key:incline
22304       http://wiki.openstreetmap.org/wiki/Route#Members
22305       http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
22306  */
22307 iD.actions.Reverse = function(wayId, options) {
22308     var replacements = [
22309             [/:right$/, ':left'], [/:left$/, ':right'],
22310             [/:forward$/, ':backward'], [/:backward$/, ':forward']
22311         ],
22312         numeric = /^([+\-]?)(?=[\d.])/,
22313         roleReversals = {
22314             forward: 'backward',
22315             backward: 'forward',
22316             north: 'south',
22317             south: 'north',
22318             east: 'west',
22319             west: 'east'
22320         };
22321
22322     function reverseKey(key) {
22323         for (var i = 0; i < replacements.length; ++i) {
22324             var replacement = replacements[i];
22325             if (replacement[0].test(key)) {
22326                 return key.replace(replacement[0], replacement[1]);
22327             }
22328         }
22329         return key;
22330     }
22331
22332     function reverseValue(key, value) {
22333         if (key === 'incline' && numeric.test(value)) {
22334             return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; });
22335         } else if (key === 'incline' || key === 'direction') {
22336             return {up: 'down', down: 'up'}[value] || value;
22337         } else if (options && options.reverseOneway && key === 'oneway') {
22338             return {yes: '-1', '1': '-1', '-1': 'yes'}[value] || value;
22339         } else {
22340             return {left: 'right', right: 'left'}[value] || value;
22341         }
22342     }
22343
22344     return function(graph) {
22345         var way = graph.entity(wayId),
22346             nodes = way.nodes.slice().reverse(),
22347             tags = {}, key, role;
22348
22349         for (key in way.tags) {
22350             tags[reverseKey(key)] = reverseValue(key, way.tags[key]);
22351         }
22352
22353         graph.parentRelations(way).forEach(function(relation) {
22354             relation.members.forEach(function(member, index) {
22355                 if (member.id === way.id && (role = roleReversals[member.role])) {
22356                     relation = relation.updateMember({role: role}, index);
22357                     graph = graph.replace(relation);
22358                 }
22359             });
22360         });
22361
22362         return graph.replace(way.update({nodes: nodes, tags: tags}));
22363     };
22364 };
22365 iD.actions.Revert = function(id) {
22366
22367     var action = function(graph) {
22368         var entity = graph.hasEntity(id),
22369             base = graph.base().entities[id];
22370
22371         if (entity && !base) {    // entity will be removed..
22372             if (entity.type === 'node') {
22373                 graph.parentWays(entity)
22374                     .forEach(function(parent) {
22375                         parent = parent.removeNode(id);
22376                         graph = graph.replace(parent);
22377
22378                         if (parent.isDegenerate()) {
22379                             graph = iD.actions.DeleteWay(parent.id)(graph);
22380                         }
22381                     });
22382             }
22383
22384             graph.parentRelations(entity)
22385                 .forEach(function(parent) {
22386                     parent = parent.removeMembersWithID(id);
22387                     graph = graph.replace(parent);
22388
22389                     if (parent.isDegenerate()) {
22390                         graph = iD.actions.DeleteRelation(parent.id)(graph);
22391                     }
22392                 });
22393         }
22394
22395         return graph.revert(id);
22396     };
22397
22398     return action;
22399 };
22400 iD.actions.RotateWay = function(wayId, pivot, angle, projection) {
22401     return function(graph) {
22402         return graph.update(function(graph) {
22403             var way = graph.entity(wayId);
22404
22405             _.unique(way.nodes).forEach(function(id) {
22406
22407                 var node = graph.entity(id),
22408                     point = projection(node.loc),
22409                     radial = [0,0];
22410
22411                 radial[0] = point[0] - pivot[0];
22412                 radial[1] = point[1] - pivot[1];
22413
22414                 point = [
22415                     radial[0] * Math.cos(angle) - radial[1] * Math.sin(angle) + pivot[0],
22416                     radial[0] * Math.sin(angle) + radial[1] * Math.cos(angle) + pivot[1]
22417                 ];
22418
22419                 graph = graph.replace(node.move(projection.invert(point)));
22420
22421             });
22422
22423         });
22424     };
22425 };
22426 // Split a way at the given node.
22427 //
22428 // Optionally, split only the given ways, if multiple ways share
22429 // the given node.
22430 //
22431 // This is the inverse of `iD.actions.Join`.
22432 //
22433 // For testing convenience, accepts an ID to assign to the new way.
22434 // Normally, this will be undefined and the way will automatically
22435 // be assigned a new ID.
22436 //
22437 // Reference:
22438 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/SplitWayAction.as
22439 //
22440 iD.actions.Split = function(nodeId, newWayIds) {
22441     var wayIds;
22442
22443     // if the way is closed, we need to search for a partner node
22444     // to split the way at.
22445     //
22446     // The following looks for a node that is both far away from
22447     // the initial node in terms of way segment length and nearby
22448     // in terms of beeline-distance. This assures that areas get
22449     // split on the most "natural" points (independent of the number
22450     // of nodes).
22451     // For example: bone-shaped areas get split across their waist
22452     // line, circles across the diameter.
22453     function splitArea(nodes, idxA, graph) {
22454         var lengths = new Array(nodes.length),
22455             length,
22456             i,
22457             best = 0,
22458             idxB;
22459
22460         function wrap(index) {
22461             return iD.util.wrap(index, nodes.length);
22462         }
22463
22464         function dist(nA, nB) {
22465             return iD.geo.sphericalDistance(graph.entity(nA).loc, graph.entity(nB).loc);
22466         }
22467
22468         // calculate lengths
22469         length = 0;
22470         for (i = wrap(idxA+1); i !== idxA; i = wrap(i+1)) {
22471             length += dist(nodes[i], nodes[wrap(i-1)]);
22472             lengths[i] = length;
22473         }
22474
22475         length = 0;
22476         for (i = wrap(idxA-1); i !== idxA; i = wrap(i-1)) {
22477             length += dist(nodes[i], nodes[wrap(i+1)]);
22478             if (length < lengths[i])
22479                 lengths[i] = length;
22480         }
22481
22482         // determine best opposite node to split
22483         for (i = 0; i < nodes.length; i++) {
22484             var cost = lengths[i] / dist(nodes[idxA], nodes[i]);
22485             if (cost > best) {
22486                 idxB = i;
22487                 best = cost;
22488             }
22489         }
22490
22491         return idxB;
22492     }
22493
22494     function split(graph, wayA, newWayId) {
22495         var wayB = iD.Way({id: newWayId, tags: wayA.tags}),
22496             nodesA,
22497             nodesB,
22498             isArea = wayA.isArea(),
22499             isOuter = iD.geo.isSimpleMultipolygonOuterMember(wayA, graph);
22500
22501         if (wayA.isClosed()) {
22502             var nodes = wayA.nodes.slice(0, -1),
22503                 idxA = _.indexOf(nodes, nodeId),
22504                 idxB = splitArea(nodes, idxA, graph);
22505
22506             if (idxB < idxA) {
22507                 nodesA = nodes.slice(idxA).concat(nodes.slice(0, idxB + 1));
22508                 nodesB = nodes.slice(idxB, idxA + 1);
22509             } else {
22510                 nodesA = nodes.slice(idxA, idxB + 1);
22511                 nodesB = nodes.slice(idxB).concat(nodes.slice(0, idxA + 1));
22512             }
22513         } else {
22514             var idx = _.indexOf(wayA.nodes, nodeId, 1);
22515             nodesA = wayA.nodes.slice(0, idx + 1);
22516             nodesB = wayA.nodes.slice(idx);
22517         }
22518
22519         wayA = wayA.update({nodes: nodesA});
22520         wayB = wayB.update({nodes: nodesB});
22521
22522         graph = graph.replace(wayA);
22523         graph = graph.replace(wayB);
22524
22525         graph.parentRelations(wayA).forEach(function(relation) {
22526             if (relation.isRestriction()) {
22527                 var via = relation.memberByRole('via');
22528                 if (via && wayB.contains(via.id)) {
22529                     relation = relation.updateMember({id: wayB.id}, relation.memberById(wayA.id).index);
22530                     graph = graph.replace(relation);
22531                 }
22532             } else {
22533                 if (relation === isOuter) {
22534                     graph = graph.replace(relation.mergeTags(wayA.tags));
22535                     graph = graph.replace(wayA.update({tags: {}}));
22536                     graph = graph.replace(wayB.update({tags: {}}));
22537                 }
22538
22539                 var member = {
22540                     id: wayB.id,
22541                     type: 'way',
22542                     role: relation.memberById(wayA.id).role
22543                 };
22544
22545                 graph = iD.actions.AddMember(relation.id, member)(graph);
22546             }
22547         });
22548
22549         if (!isOuter && isArea) {
22550             var multipolygon = iD.Relation({
22551                 tags: _.extend({}, wayA.tags, {type: 'multipolygon'}),
22552                 members: [
22553                     {id: wayA.id, role: 'outer', type: 'way'},
22554                     {id: wayB.id, role: 'outer', type: 'way'}
22555                 ]});
22556
22557             graph = graph.replace(multipolygon);
22558             graph = graph.replace(wayA.update({tags: {}}));
22559             graph = graph.replace(wayB.update({tags: {}}));
22560         }
22561
22562         return graph;
22563     }
22564
22565     var action = function(graph) {
22566         var candidates = action.ways(graph);
22567         for (var i = 0; i < candidates.length; i++) {
22568             graph = split(graph, candidates[i], newWayIds && newWayIds[i]);
22569         }
22570         return graph;
22571     };
22572
22573     action.ways = function(graph) {
22574         var node = graph.entity(nodeId),
22575             parents = graph.parentWays(node),
22576             hasLines = _.any(parents, function(parent) { return parent.geometry(graph) === 'line'; });
22577
22578         return parents.filter(function(parent) {
22579             if (wayIds && wayIds.indexOf(parent.id) === -1)
22580                 return false;
22581
22582             if (!wayIds && hasLines && parent.geometry(graph) !== 'line')
22583                 return false;
22584
22585             if (parent.isClosed()) {
22586                 return true;
22587             }
22588
22589             for (var i = 1; i < parent.nodes.length - 1; i++) {
22590                 if (parent.nodes[i] === nodeId) {
22591                     return true;
22592                 }
22593             }
22594
22595             return false;
22596         });
22597     };
22598
22599     action.disabled = function(graph) {
22600         var candidates = action.ways(graph);
22601         if (candidates.length === 0 || (wayIds && wayIds.length !== candidates.length))
22602             return 'not_eligible';
22603     };
22604
22605     action.limitWays = function(_) {
22606         if (!arguments.length) return wayIds;
22607         wayIds = _;
22608         return action;
22609     };
22610
22611     return action;
22612 };
22613 /*
22614  * Based on https://github.com/openstreetmap/potlatch2/net/systemeD/potlatch2/tools/Straighten.as
22615  */
22616
22617 iD.actions.Straighten = function(wayId, projection) {
22618     function positionAlongWay(n, s, e) {
22619         return ((n[0] - s[0]) * (e[0] - s[0]) + (n[1] - s[1]) * (e[1] - s[1]))/
22620                 (Math.pow(e[0] - s[0], 2) + Math.pow(e[1] - s[1], 2));
22621     }
22622
22623     var action = function(graph) {
22624         var way = graph.entity(wayId),
22625             nodes = graph.childNodes(way),
22626             points = nodes.map(function(n) { return projection(n.loc); }),
22627             startPoint = points[0],
22628             endPoint = points[points.length-1],
22629             toDelete = [],
22630             i;
22631
22632         for (i = 1; i < points.length-1; i++) {
22633             var node = nodes[i],
22634                 point = points[i];
22635
22636             if (graph.parentWays(node).length > 1 ||
22637                 graph.parentRelations(node).length ||
22638                 node.hasInterestingTags()) {
22639
22640                 var u = positionAlongWay(point, startPoint, endPoint),
22641                     p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22642                     p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]);
22643
22644                 graph = graph.replace(graph.entity(node.id)
22645                     .move(projection.invert([p0, p1])));
22646             } else {
22647                 // safe to delete
22648                 if (toDelete.indexOf(node) === -1) {
22649                     toDelete.push(node);
22650                 }
22651             }
22652         }
22653
22654         for (i = 0; i < toDelete.length; i++) {
22655             graph = iD.actions.DeleteNode(toDelete[i].id)(graph);
22656         }
22657
22658         return graph;
22659     };
22660     
22661     action.disabled = function(graph) {
22662         // check way isn't too bendy
22663         var way = graph.entity(wayId),
22664             nodes = graph.childNodes(way),
22665             points = nodes.map(function(n) { return projection(n.loc); }),
22666             startPoint = points[0],
22667             endPoint = points[points.length-1],
22668             threshold = 0.2 * Math.sqrt(Math.pow(startPoint[0] - endPoint[0], 2) + Math.pow(startPoint[1] - endPoint[1], 2)),
22669             i;
22670
22671         for (i = 1; i < points.length-1; i++) {
22672             var point = points[i],
22673                 u = positionAlongWay(point, startPoint, endPoint),
22674                 p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22675                 p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]),
22676                 dist = Math.sqrt(Math.pow(p0 - point[0], 2) + Math.pow(p1 - point[1], 2));
22677
22678             // to bendy if point is off by 20% of total start/end distance in projected space
22679             if (dist > threshold) {
22680                 return 'too_bendy';
22681             }
22682         }
22683     };
22684
22685     return action;
22686 };
22687 // Remove the effects of `turn.restriction` on `turn`, which must have the
22688 // following structure:
22689 //
22690 //     {
22691 //         from: { node: <node ID>, way: <way ID> },
22692 //         via:  { node: <node ID> },
22693 //         to:   { node: <node ID>, way: <way ID> },
22694 //         restriction: <relation ID>
22695 //     }
22696 //
22697 // In the simple case, `restriction` is a reference to a `no_*` restriction
22698 // on the turn itself. In this case, it is simply deleted.
22699 //
22700 // The more complex case is where `restriction` references an `only_*`
22701 // restriction on a different turn in the same intersection. In that case,
22702 // that restriction is also deleted, but at the same time restrictions on
22703 // the turns other than the first two are created.
22704 //
22705 iD.actions.UnrestrictTurn = function(turn) {
22706     return function(graph) {
22707         return iD.actions.DeleteRelation(turn.restriction)(graph);
22708     };
22709 };
22710 iD.behavior = {};
22711 iD.behavior.AddWay = function(context) {
22712     var event = d3.dispatch('start', 'startFromWay', 'startFromNode'),
22713         draw = iD.behavior.Draw(context);
22714
22715     var addWay = function(surface) {
22716         draw.on('click', event.start)
22717             .on('clickWay', event.startFromWay)
22718             .on('clickNode', event.startFromNode)
22719             .on('cancel', addWay.cancel)
22720             .on('finish', addWay.cancel);
22721
22722         context.map()
22723             .dblclickEnable(false);
22724
22725         surface.call(draw);
22726     };
22727
22728     addWay.off = function(surface) {
22729         surface.call(draw.off);
22730     };
22731
22732     addWay.cancel = function() {
22733         window.setTimeout(function() {
22734             context.map().dblclickEnable(true);
22735         }, 1000);
22736
22737         context.enter(iD.modes.Browse(context));
22738     };
22739
22740     addWay.tail = function(text) {
22741         draw.tail(text);
22742         return addWay;
22743     };
22744
22745     return d3.rebind(addWay, event, 'on');
22746 };
22747 iD.behavior.Copy = function(context) {
22748     var keybinding = d3.keybinding('copy');
22749
22750     function groupEntities(ids, graph) {
22751         var entities = ids.map(function (id) { return graph.entity(id); });
22752         return _.extend({relation: [], way: [], node: []},
22753             _.groupBy(entities, function(entity) { return entity.type; }));
22754     }
22755
22756     function getDescendants(id, graph, descendants) {
22757         var entity = graph.entity(id),
22758             i, children;
22759
22760         descendants = descendants || {};
22761
22762         if (entity.type === 'relation') {
22763             children = _.pluck(entity.members, 'id');
22764         } else if (entity.type === 'way') {
22765             children = entity.nodes;
22766         } else {
22767             children = [];
22768         }
22769
22770         for (i = 0; i < children.length; i++) {
22771             if (!descendants[children[i]]) {
22772                 descendants[children[i]] = true;
22773                 descendants = getDescendants(children[i], graph, descendants);
22774             }
22775         }
22776
22777         return descendants;
22778     }
22779
22780     function doCopy() {
22781         d3.event.preventDefault();
22782
22783         var graph = context.graph(),
22784             selected = groupEntities(context.selectedIDs(), graph),
22785             canCopy = [],
22786             skip = {},
22787             i, entity;
22788
22789         for (i = 0; i < selected.relation.length; i++) {
22790             entity = selected.relation[i];
22791             if (!skip[entity.id] && entity.isComplete(graph)) {
22792                 canCopy.push(entity.id);
22793                 skip = getDescendants(entity.id, graph, skip);
22794             }
22795         }
22796         for (i = 0; i < selected.way.length; i++) {
22797             entity = selected.way[i];
22798             if (!skip[entity.id]) {
22799                 canCopy.push(entity.id);
22800                 skip = getDescendants(entity.id, graph, skip);
22801             }
22802         }
22803         for (i = 0; i < selected.node.length; i++) {
22804             entity = selected.node[i];
22805             if (!skip[entity.id]) {
22806                 canCopy.push(entity.id);
22807             }
22808         }
22809
22810         context.copyIDs(canCopy);
22811     }
22812
22813     function copy() {
22814         keybinding.on(iD.ui.cmd('⌘C'), doCopy);
22815         d3.select(document).call(keybinding);
22816         return copy;
22817     }
22818
22819     copy.off = function() {
22820         d3.select(document).call(keybinding.off);
22821     };
22822
22823     return copy;
22824 };
22825 /*
22826     `iD.behavior.drag` is like `d3.behavior.drag`, with the following differences:
22827
22828     * The `origin` function is expected to return an [x, y] tuple rather than an
22829       {x, y} object.
22830     * The events are `start`, `move`, and `end`.
22831       (https://github.com/mbostock/d3/issues/563)
22832     * The `start` event is not dispatched until the first cursor movement occurs.
22833       (https://github.com/mbostock/d3/pull/368)
22834     * The `move` event has a `point` and `delta` [x, y] tuple properties rather
22835       than `x`, `y`, `dx`, and `dy` properties.
22836     * The `end` event is not dispatched if no movement occurs.
22837     * An `off` function is available that unbinds the drag's internal event handlers.
22838     * Delegation is supported via the `delegate` function.
22839
22840  */
22841 iD.behavior.drag = function() {
22842     function d3_eventCancel() {
22843       d3.event.stopPropagation();
22844       d3.event.preventDefault();
22845     }
22846
22847     var event = d3.dispatch('start', 'move', 'end'),
22848         origin = null,
22849         selector = '',
22850         filter = null,
22851         event_, target, surface;
22852
22853     event.of = function(thiz, argumentz) {
22854       return function(e1) {
22855         var e0 = e1.sourceEvent = d3.event;
22856         e1.target = drag;
22857         d3.event = e1;
22858         try {
22859           event[e1.type].apply(thiz, argumentz);
22860         } finally {
22861           d3.event = e0;
22862         }
22863       };
22864     };
22865
22866     var d3_event_userSelectProperty = iD.util.prefixCSSProperty('UserSelect'),
22867         d3_event_userSelectSuppress = d3_event_userSelectProperty ?
22868             function () {
22869                 var selection = d3.selection(),
22870                     select = selection.style(d3_event_userSelectProperty);
22871                 selection.style(d3_event_userSelectProperty, 'none');
22872                 return function () {
22873                     selection.style(d3_event_userSelectProperty, select);
22874                 };
22875             } :
22876             function (type) {
22877                 var w = d3.select(window).on('selectstart.' + type, d3_eventCancel);
22878                 return function () {
22879                     w.on('selectstart.' + type, null);
22880                 };
22881             };
22882
22883     function mousedown() {
22884         target = this;
22885         event_ = event.of(target, arguments);
22886         var eventTarget = d3.event.target,
22887             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
22888             offset,
22889             origin_ = point(),
22890             started = false,
22891             selectEnable = d3_event_userSelectSuppress(touchId !== null ? 'drag-' + touchId : 'drag');
22892
22893         var w = d3.select(window)
22894             .on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', dragmove)
22895             .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', dragend, true);
22896
22897         if (origin) {
22898             offset = origin.apply(target, arguments);
22899             offset = [offset[0] - origin_[0], offset[1] - origin_[1]];
22900         } else {
22901             offset = [0, 0];
22902         }
22903
22904         if (touchId === null) d3.event.stopPropagation();
22905
22906         function point() {
22907             var p = target.parentNode || surface;
22908             return touchId !== null ? d3.touches(p).filter(function(p) {
22909                 return p.identifier === touchId;
22910             })[0] : d3.mouse(p);
22911         }
22912
22913         function dragmove() {
22914
22915             var p = point(),
22916                 dx = p[0] - origin_[0],
22917                 dy = p[1] - origin_[1];
22918             
22919             if (dx === 0 && dy === 0)
22920                 return;
22921
22922             if (!started) {
22923                 started = true;
22924                 event_({
22925                     type: 'start'
22926                 });
22927             }
22928
22929             origin_ = p;
22930             d3_eventCancel();
22931
22932             event_({
22933                 type: 'move',
22934                 point: [p[0] + offset[0],  p[1] + offset[1]],
22935                 delta: [dx, dy]
22936             });
22937         }
22938
22939         function dragend() {
22940             if (started) {
22941                 event_({
22942                     type: 'end'
22943                 });
22944
22945                 d3_eventCancel();
22946                 if (d3.event.target === eventTarget) w.on('click.drag', click, true);
22947             }
22948
22949             w.on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', null)
22950                 .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', null);
22951             selectEnable();
22952         }
22953
22954         function click() {
22955             d3_eventCancel();
22956             w.on('click.drag', null);
22957         }
22958     }
22959
22960     function drag(selection) {
22961         var matchesSelector = iD.util.prefixDOMProperty('matchesSelector'),
22962             delegate = mousedown;
22963
22964         if (selector) {
22965             delegate = function() {
22966                 var root = this,
22967                     target = d3.event.target;
22968                 for (; target && target !== root; target = target.parentNode) {
22969                     if (target[matchesSelector](selector) &&
22970                             (!filter || filter(target.__data__))) {
22971                         return mousedown.call(target, target.__data__);
22972                     }
22973                 }
22974             };
22975         }
22976
22977         selection.on('mousedown.drag' + selector, delegate)
22978             .on('touchstart.drag' + selector, delegate);
22979     }
22980
22981     drag.off = function(selection) {
22982         selection.on('mousedown.drag' + selector, null)
22983             .on('touchstart.drag' + selector, null);
22984     };
22985
22986     drag.delegate = function(_) {
22987         if (!arguments.length) return selector;
22988         selector = _;
22989         return drag;
22990     };
22991
22992     drag.filter = function(_) {
22993         if (!arguments.length) return origin;
22994         filter = _;
22995         return drag;
22996     };
22997
22998     drag.origin = function (_) {
22999         if (!arguments.length) return origin;
23000         origin = _;
23001         return drag;
23002     };
23003
23004     drag.cancel = function() {
23005         d3.select(window)
23006             .on('mousemove.drag', null)
23007             .on('mouseup.drag', null);
23008         return drag;
23009     };
23010
23011     drag.target = function() {
23012         if (!arguments.length) return target;
23013         target = arguments[0];
23014         event_ = event.of(target, Array.prototype.slice.call(arguments, 1));
23015         return drag;
23016     };
23017
23018     drag.surface = function() {
23019         if (!arguments.length) return surface;
23020         surface = arguments[0];
23021         return drag;
23022     };
23023
23024     return d3.rebind(drag, event, 'on');
23025 };
23026 iD.behavior.Draw = function(context) {
23027     var event = d3.dispatch('move', 'click', 'clickWay',
23028             'clickNode', 'undo', 'cancel', 'finish'),
23029         keybinding = d3.keybinding('draw'),
23030         hover = iD.behavior.Hover(context)
23031             .altDisables(true)
23032             .on('hover', context.ui().sidebar.hover),
23033         tail = iD.behavior.Tail(),
23034         edit = iD.behavior.Edit(context),
23035         closeTolerance = 4,
23036         tolerance = 12;
23037
23038     function datum() {
23039         if (d3.event.altKey) return {};
23040         else return d3.event.target.__data__ || {};
23041     }
23042
23043     function mousedown() {
23044
23045         function point() {
23046             var p = context.container().node();
23047             return touchId !== null ? d3.touches(p).filter(function(p) {
23048                 return p.identifier === touchId;
23049             })[0] : d3.mouse(p);
23050         }
23051
23052         var element = d3.select(this),
23053             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
23054             t1 = +new Date(),
23055             p1 = point();
23056
23057         element.on('mousemove.draw', null);
23058
23059         d3.select(window).on('mouseup.draw', function() {
23060             var t2 = +new Date(),
23061                 p2 = point(),
23062                 dist = iD.geo.euclideanDistance(p1, p2);
23063
23064             element.on('mousemove.draw', mousemove);
23065             d3.select(window).on('mouseup.draw', null);
23066
23067             if (dist < closeTolerance || (dist < tolerance && (t2 - t1) < 500)) {
23068                 // Prevent a quick second click
23069                 d3.select(window).on('click.draw-block', function() {
23070                     d3.event.stopPropagation();
23071                 }, true);
23072
23073                 context.map().dblclickEnable(false);
23074
23075                 window.setTimeout(function() {
23076                     context.map().dblclickEnable(true);
23077                     d3.select(window).on('click.draw-block', null);
23078                 }, 500);
23079
23080                 click();
23081             }
23082         });
23083     }
23084
23085     function mousemove() {
23086         event.move(datum());
23087     }
23088
23089     function click() {
23090         var d = datum();
23091         if (d.type === 'way') {
23092             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection),
23093                 edge = [d.nodes[choice.index - 1], d.nodes[choice.index]];
23094             event.clickWay(choice.loc, edge);
23095
23096         } else if (d.type === 'node') {
23097             event.clickNode(d);
23098
23099         } else {
23100             event.click(context.map().mouseCoordinates());
23101         }
23102     }
23103
23104     function backspace() {
23105         d3.event.preventDefault();
23106         event.undo();
23107     }
23108
23109     function del() {
23110         d3.event.preventDefault();
23111         event.cancel();
23112     }
23113
23114     function ret() {
23115         d3.event.preventDefault();
23116         event.finish();
23117     }
23118
23119     function draw(selection) {
23120         context.install(hover);
23121         context.install(edit);
23122
23123         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23124             context.install(tail);
23125         }
23126
23127         keybinding
23128             .on('⌫', backspace)
23129             .on('⌦', del)
23130             .on('⎋', ret)
23131             .on('↩', ret);
23132
23133         selection
23134             .on('mousedown.draw', mousedown)
23135             .on('mousemove.draw', mousemove);
23136
23137         d3.select(document)
23138             .call(keybinding);
23139
23140         return draw;
23141     }
23142
23143     draw.off = function(selection) {
23144         context.uninstall(hover);
23145         context.uninstall(edit);
23146
23147         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23148             context.uninstall(tail);
23149             iD.behavior.Draw.usedTails[tail.text()] = true;
23150         }
23151
23152         selection
23153             .on('mousedown.draw', null)
23154             .on('mousemove.draw', null);
23155
23156         d3.select(window)
23157             .on('mouseup.draw', null);
23158
23159         d3.select(document)
23160             .call(keybinding.off);
23161     };
23162
23163     draw.tail = function(_) {
23164         tail.text(_);
23165         return draw;
23166     };
23167
23168     return d3.rebind(draw, event, 'on');
23169 };
23170
23171 iD.behavior.Draw.usedTails = {};
23172 iD.behavior.DrawWay = function(context, wayId, index, mode, baseGraph) {
23173     var way = context.entity(wayId),
23174         isArea = context.geometry(wayId) === 'area',
23175         finished = false,
23176         annotation = t((way.isDegenerate() ?
23177             'operations.start.annotation.' :
23178             'operations.continue.annotation.') + context.geometry(wayId)),
23179         draw = iD.behavior.Draw(context);
23180
23181     var startIndex = typeof index === 'undefined' ? way.nodes.length - 1 : 0,
23182         start = iD.Node({loc: context.graph().entity(way.nodes[startIndex]).loc}),
23183         end = iD.Node({loc: context.map().mouseCoordinates()}),
23184         segment = iD.Way({
23185             nodes: typeof index === 'undefined' ? [start.id, end.id] : [end.id, start.id],
23186             tags: _.clone(way.tags)
23187         });
23188
23189     var f = context[way.isDegenerate() ? 'replace' : 'perform'];
23190     if (isArea) {
23191         f(iD.actions.AddEntity(end),
23192             iD.actions.AddVertex(wayId, end.id, index));
23193     } else {
23194         f(iD.actions.AddEntity(start),
23195             iD.actions.AddEntity(end),
23196             iD.actions.AddEntity(segment));
23197     }
23198
23199     function move(datum) {
23200         var loc;
23201
23202         if (datum.type === 'node' && datum.id !== end.id) {
23203             loc = datum.loc;
23204         } else if (datum.type === 'way' && datum.id !== segment.id) {
23205             loc = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection).loc;
23206         } else {
23207             loc = context.map().mouseCoordinates();
23208         }
23209
23210         context.replace(iD.actions.MoveNode(end.id, loc));
23211     }
23212
23213     function undone() {
23214         finished = true;
23215         context.enter(iD.modes.Browse(context));
23216     }
23217
23218     function setActiveElements() {
23219         var active = isArea ? [wayId, end.id] : [segment.id, start.id, end.id];
23220         context.surface().selectAll(iD.util.entitySelector(active))
23221             .classed('active', true);
23222     }
23223
23224     var drawWay = function(surface) {
23225         draw.on('move', move)
23226             .on('click', drawWay.add)
23227             .on('clickWay', drawWay.addWay)
23228             .on('clickNode', drawWay.addNode)
23229             .on('undo', context.undo)
23230             .on('cancel', drawWay.cancel)
23231             .on('finish', drawWay.finish);
23232
23233         context.map()
23234             .dblclickEnable(false)
23235             .on('drawn.draw', setActiveElements);
23236
23237         setActiveElements();
23238
23239         surface.call(draw);
23240
23241         context.history()
23242             .on('undone.draw', undone);
23243     };
23244
23245     drawWay.off = function(surface) {
23246         if (!finished)
23247             context.pop();
23248
23249         context.map()
23250             .on('drawn.draw', null);
23251
23252         surface.call(draw.off)
23253             .selectAll('.active')
23254             .classed('active', false);
23255
23256         context.history()
23257             .on('undone.draw', null);
23258     };
23259
23260     function ReplaceTemporaryNode(newNode) {
23261         return function(graph) {
23262             if (isArea) {
23263                 return graph
23264                     .replace(way.addNode(newNode.id, index))
23265                     .remove(end);
23266
23267             } else {
23268                 return graph
23269                     .replace(graph.entity(wayId).addNode(newNode.id, index))
23270                     .remove(end)
23271                     .remove(segment)
23272                     .remove(start);
23273             }
23274         };
23275     }
23276
23277     // Accept the current position of the temporary node and continue drawing.
23278     drawWay.add = function(loc) {
23279
23280         // prevent duplicate nodes
23281         var last = context.hasEntity(way.nodes[way.nodes.length - (isArea ? 2 : 1)]);
23282         if (last && last.loc[0] === loc[0] && last.loc[1] === loc[1]) return;
23283
23284         var newNode = iD.Node({loc: loc});
23285
23286         context.replace(
23287             iD.actions.AddEntity(newNode),
23288             ReplaceTemporaryNode(newNode),
23289             annotation);
23290
23291         finished = true;
23292         context.enter(mode);
23293     };
23294
23295     // Connect the way to an existing way.
23296     drawWay.addWay = function(loc, edge) {
23297         var previousEdge = startIndex ?
23298             [way.nodes[startIndex], way.nodes[startIndex - 1]] :
23299             [way.nodes[0], way.nodes[1]];
23300
23301         // Avoid creating duplicate segments
23302         if (!isArea && iD.geo.edgeEqual(edge, previousEdge))
23303             return;
23304
23305         var newNode = iD.Node({ loc: loc });
23306
23307         context.perform(
23308             iD.actions.AddMidpoint({ loc: loc, edge: edge}, newNode),
23309             ReplaceTemporaryNode(newNode),
23310             annotation);
23311
23312         finished = true;
23313         context.enter(mode);
23314     };
23315
23316     // Connect the way to an existing node and continue drawing.
23317     drawWay.addNode = function(node) {
23318
23319         // Avoid creating duplicate segments
23320         if (way.areAdjacent(node.id, way.nodes[way.nodes.length - 1])) return;
23321
23322         context.perform(
23323             ReplaceTemporaryNode(node),
23324             annotation);
23325
23326         finished = true;
23327         context.enter(mode);
23328     };
23329
23330     // Finish the draw operation, removing the temporary node. If the way has enough
23331     // nodes to be valid, it's selected. Otherwise, return to browse mode.
23332     drawWay.finish = function() {
23333         context.pop();
23334         finished = true;
23335
23336         window.setTimeout(function() {
23337             context.map().dblclickEnable(true);
23338         }, 1000);
23339
23340         if (context.hasEntity(wayId)) {
23341             context.enter(
23342                 iD.modes.Select(context, [wayId])
23343                     .suppressMenu(true)
23344                     .newFeature(true));
23345         } else {
23346             context.enter(iD.modes.Browse(context));
23347         }
23348     };
23349
23350     // Cancel the draw operation and return to browse, deleting everything drawn.
23351     drawWay.cancel = function() {
23352         context.perform(
23353             d3.functor(baseGraph),
23354             t('operations.cancel_draw.annotation'));
23355
23356         window.setTimeout(function() {
23357             context.map().dblclickEnable(true);
23358         }, 1000);
23359
23360         finished = true;
23361         context.enter(iD.modes.Browse(context));
23362     };
23363
23364     drawWay.tail = function(text) {
23365         draw.tail(text);
23366         return drawWay;
23367     };
23368
23369     return drawWay;
23370 };
23371 iD.behavior.Edit = function(context) {
23372     function edit() {
23373         context.map()
23374             .minzoom(context.minEditableZoom());
23375     }
23376
23377     edit.off = function() {
23378         context.map()
23379             .minzoom(0);
23380     };
23381
23382     return edit;
23383 };
23384 iD.behavior.Hash = function(context) {
23385     var s0 = null, // cached location.hash
23386         lat = 90 - 1e-8; // allowable latitude range
23387
23388     var parser = function(map, s) {
23389         var q = iD.util.stringQs(s);
23390         var args = (q.map || '').split('/').map(Number);
23391         if (args.length < 3 || args.some(isNaN)) {
23392             return true; // replace bogus hash
23393         } else if (s !== formatter(map).slice(1)) {
23394             map.centerZoom([args[1],
23395                 Math.min(lat, Math.max(-lat, args[2]))], args[0]);
23396         }
23397     };
23398
23399     var formatter = function(map) {
23400         var mode = context.mode(),
23401             center = map.center(),
23402             zoom = map.zoom(),
23403             precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)),
23404             q = _.omit(iD.util.stringQs(location.hash.substring(1)), 'comment'),
23405             newParams = {};
23406
23407         if (mode && mode.id === 'browse') {
23408             delete q.id;
23409         } else {
23410             var selected = context.selectedIDs().filter(function(id) {
23411                 return !context.entity(id).isNew();
23412             });
23413             if (selected.length) {
23414                 newParams.id = selected.join(',');
23415             }
23416         }
23417
23418         newParams.map = zoom.toFixed(2) +
23419                 '/' + center[0].toFixed(precision) +
23420                 '/' + center[1].toFixed(precision);
23421
23422         return '#' + iD.util.qsString(_.assign(q, newParams), true);
23423     };
23424
23425     function update() {
23426         if (context.inIntro()) return;
23427         var s1 = formatter(context.map());
23428         if (s0 !== s1) location.replace(s0 = s1); // don't recenter the map!
23429     }
23430
23431     var throttledUpdate = _.throttle(update, 500);
23432
23433     function hashchange() {
23434         if (location.hash === s0) return; // ignore spurious hashchange events
23435         if (parser(context.map(), (s0 = location.hash).substring(1))) {
23436             update(); // replace bogus hash
23437         }
23438     }
23439
23440     function hash() {
23441         context.map()
23442             .on('move.hash', throttledUpdate);
23443
23444         context
23445             .on('enter.hash', throttledUpdate);
23446
23447         d3.select(window)
23448             .on('hashchange.hash', hashchange);
23449
23450         if (location.hash) {
23451             var q = iD.util.stringQs(location.hash.substring(1));
23452             if (q.id) context.zoomToEntity(q.id.split(',')[0], !q.map);
23453             if (q.comment) context.storage('comment', q.comment);
23454             hashchange();
23455             if (q.map) hash.hadHash = true;
23456         }
23457     }
23458
23459     hash.off = function() {
23460         context.map()
23461             .on('move.hash', null);
23462
23463         context
23464             .on('enter.hash', null);
23465
23466         d3.select(window)
23467             .on('hashchange.hash', null);
23468
23469         location.hash = '';
23470     };
23471
23472     return hash;
23473 };
23474 /*
23475    The hover behavior adds the `.hover` class on mouseover to all elements to which
23476    the identical datum is bound, and removes it on mouseout.
23477
23478    The :hover pseudo-class is insufficient for iD's purposes because a datum's visual
23479    representation may consist of several elements scattered throughout the DOM hierarchy.
23480    Only one of these elements can have the :hover pseudo-class, but all of them will
23481    have the .hover class.
23482  */
23483 iD.behavior.Hover = function() {
23484     var dispatch = d3.dispatch('hover'),
23485         selection,
23486         altDisables,
23487         target;
23488
23489     function keydown() {
23490         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23491             dispatch.hover(null);
23492             selection.selectAll('.hover')
23493                 .classed('hover-suppressed', true)
23494                 .classed('hover', false);
23495         }
23496     }
23497
23498     function keyup() {
23499         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23500             dispatch.hover(target ? target.id : null);
23501             selection.selectAll('.hover-suppressed')
23502                 .classed('hover-suppressed', false)
23503                 .classed('hover', true);
23504         }
23505     }
23506
23507     var hover = function(__) {
23508         selection = __;
23509
23510         function enter(d) {
23511             if (d === target) return;
23512
23513             target = d;
23514
23515             selection.selectAll('.hover')
23516                 .classed('hover', false);
23517             selection.selectAll('.hover-suppressed')
23518                 .classed('hover-suppressed', false);
23519
23520             if (target instanceof iD.Entity) {
23521                 var selector = '.' + target.id;
23522
23523                 if (target.type === 'relation') {
23524                     target.members.forEach(function(member) {
23525                         selector += ', .' + member.id;
23526                     });
23527                 }
23528
23529                 var suppressed = altDisables && d3.event && d3.event.altKey;
23530
23531                 selection.selectAll(selector)
23532                     .classed(suppressed ? 'hover-suppressed' : 'hover', true);
23533
23534                 dispatch.hover(target.id);
23535             } else {
23536                 dispatch.hover(null);
23537             }
23538         }
23539
23540         var down;
23541
23542         function mouseover() {
23543             if (down) return;
23544             var target = d3.event.target;
23545             enter(target ? target.__data__ : null);
23546         }
23547
23548         function mouseout() {
23549             if (down) return;
23550             var target = d3.event.relatedTarget;
23551             enter(target ? target.__data__ : null);
23552         }
23553
23554         function mousedown() {
23555             down = true;
23556             d3.select(window)
23557                 .on('mouseup.hover', mouseup);
23558         }
23559
23560         function mouseup() {
23561             down = false;
23562         }
23563
23564         selection
23565             .on('mouseover.hover', mouseover)
23566             .on('mouseout.hover', mouseout)
23567             .on('mousedown.hover', mousedown)
23568             .on('mouseup.hover', mouseup);
23569
23570         d3.select(window)
23571             .on('keydown.hover', keydown)
23572             .on('keyup.hover', keyup);
23573     };
23574
23575     hover.off = function(selection) {
23576         selection.selectAll('.hover')
23577             .classed('hover', false);
23578         selection.selectAll('.hover-suppressed')
23579             .classed('hover-suppressed', false);
23580
23581         selection
23582             .on('mouseover.hover', null)
23583             .on('mouseout.hover', null)
23584             .on('mousedown.hover', null)
23585             .on('mouseup.hover', null);
23586
23587         d3.select(window)
23588             .on('keydown.hover', null)
23589             .on('keyup.hover', null)
23590             .on('mouseup.hover', null);
23591     };
23592
23593     hover.altDisables = function(_) {
23594         if (!arguments.length) return altDisables;
23595         altDisables = _;
23596         return hover;
23597     };
23598
23599     return d3.rebind(hover, dispatch, 'on');
23600 };
23601 iD.behavior.Lasso = function(context) {
23602
23603     var behavior = function(selection) {
23604
23605         var mouse = null,
23606             lasso;
23607
23608         function mousedown() {
23609             if (d3.event.shiftKey === true) {
23610
23611                 mouse = context.mouse();
23612                 lasso = null;
23613
23614                 selection
23615                     .on('mousemove.lasso', mousemove)
23616                     .on('mouseup.lasso', mouseup);
23617
23618                 d3.event.stopPropagation();
23619             }
23620         }
23621
23622         function mousemove() {
23623             if (!lasso) {
23624                 lasso = iD.ui.Lasso(context).a(mouse);
23625                 context.surface().call(lasso);
23626             }
23627
23628             lasso.b(context.mouse());
23629         }
23630
23631         function normalize(a, b) {
23632             return [
23633                 [Math.min(a[0], b[0]), Math.min(a[1], b[1])],
23634                 [Math.max(a[0], b[0]), Math.max(a[1], b[1])]];
23635         }
23636
23637         function mouseup() {
23638
23639             selection
23640                 .on('mousemove.lasso', null)
23641                 .on('mouseup.lasso', null);
23642
23643             if (!lasso) return;
23644
23645             var extent = iD.geo.Extent(
23646                 normalize(context.projection.invert(lasso.a()),
23647                 context.projection.invert(lasso.b())));
23648
23649             lasso.close();
23650
23651             var selected = context.intersects(extent).filter(function (entity) {
23652                 return entity.type === 'node';
23653             });
23654
23655             if (selected.length) {
23656                 context.enter(iD.modes.Select(context, _.pluck(selected, 'id')));
23657             }
23658         }
23659
23660         selection
23661             .on('mousedown.lasso', mousedown);
23662     };
23663
23664     behavior.off = function(selection) {
23665         selection.on('mousedown.lasso', null);
23666     };
23667
23668     return behavior;
23669 };
23670 iD.behavior.Paste = function(context) {
23671     var keybinding = d3.keybinding('paste');
23672
23673     function omitTag(v, k) {
23674         return (
23675             k === 'phone' ||
23676             k === 'fax' ||
23677             k === 'email' ||
23678             k === 'website' ||
23679             k === 'url' ||
23680             k === 'note' ||
23681             k === 'description' ||
23682             k.indexOf('name') !== -1 ||
23683             k.indexOf('wiki') === 0 ||
23684             k.indexOf('addr:') === 0 ||
23685             k.indexOf('contact:') === 0
23686         );
23687     }
23688
23689     function doPaste() {
23690         d3.event.preventDefault();
23691
23692         var mouse = context.mouse(),
23693             projection = context.projection,
23694             viewport = iD.geo.Extent(projection.clipExtent()).polygon();
23695
23696         if (!iD.geo.pointInPolygon(mouse, viewport)) return;
23697
23698         var extent = iD.geo.Extent(),
23699             oldIDs = context.copyIDs(),
23700             oldGraph = context.copyGraph(),
23701             newIDs = [],
23702             i, j;
23703
23704         if (!oldIDs.length) return;
23705
23706         for (i = 0; i < oldIDs.length; i++) {
23707             var oldEntity = oldGraph.entity(oldIDs[i]),
23708                 action = iD.actions.CopyEntity(oldEntity.id, oldGraph, true),
23709                 newEntities;
23710
23711             extent._extend(oldEntity.extent(oldGraph));
23712             context.perform(action);
23713
23714             // First element in `newEntities` contains the copied Entity,
23715             // Subsequent array elements contain any descendants..
23716             newEntities = action.newEntities();
23717             newIDs.push(newEntities[0].id);
23718
23719             for (j = 0; j < newEntities.length; j++) {
23720                 var newEntity = newEntities[j],
23721                     tags = _.omit(newEntity.tags, omitTag);
23722
23723                 context.perform(iD.actions.ChangeTags(newEntity.id, tags));
23724             }
23725         }
23726
23727         // Put pasted objects where mouse pointer is..
23728         var center = projection(extent.center()),
23729             delta = [ mouse[0] - center[0], mouse[1] - center[1] ];
23730
23731         context.perform(iD.actions.Move(newIDs, delta, projection));
23732         context.enter(iD.modes.Move(context, newIDs));
23733     }
23734
23735     function paste() {
23736         keybinding.on(iD.ui.cmd('⌘V'), doPaste);
23737         d3.select(document).call(keybinding);
23738         return paste;
23739     }
23740
23741     paste.off = function() {
23742         d3.select(document).call(keybinding.off);
23743     };
23744
23745     return paste;
23746 };
23747 iD.behavior.Select = function(context) {
23748     function keydown() {
23749         if (d3.event && d3.event.shiftKey) {
23750             context.surface()
23751                 .classed('behavior-multiselect', true);
23752         }
23753     }
23754
23755     function keyup() {
23756         if (!d3.event || !d3.event.shiftKey) {
23757             context.surface()
23758                 .classed('behavior-multiselect', false);
23759         }
23760     }
23761
23762     function click() {
23763         var datum = d3.event.target.__data__,
23764             lasso = d3.select('#surface .lasso').node(),
23765             mode = context.mode();
23766
23767         if (!(datum instanceof iD.Entity)) {
23768             if (!d3.event.shiftKey && !lasso && mode.id !== 'browse')
23769                 context.enter(iD.modes.Browse(context));
23770
23771         } else if (!d3.event.shiftKey && !lasso) {
23772             // Avoid re-entering Select mode with same entity.
23773             if (context.selectedIDs().length !== 1 || context.selectedIDs()[0] !== datum.id) {
23774                 context.enter(iD.modes.Select(context, [datum.id]));
23775             } else {
23776                 mode.suppressMenu(false).reselect();
23777             }
23778         } else if (context.selectedIDs().indexOf(datum.id) >= 0) {
23779             var selectedIDs = _.without(context.selectedIDs(), datum.id);
23780             context.enter(selectedIDs.length ?
23781                 iD.modes.Select(context, selectedIDs) :
23782                 iD.modes.Browse(context));
23783
23784         } else {
23785             context.enter(iD.modes.Select(context, context.selectedIDs().concat([datum.id])));
23786         }
23787     }
23788
23789     var behavior = function(selection) {
23790         d3.select(window)
23791             .on('keydown.select', keydown)
23792             .on('keyup.select', keyup);
23793
23794         selection.on('click.select', click);
23795
23796         keydown();
23797     };
23798
23799     behavior.off = function(selection) {
23800         d3.select(window)
23801             .on('keydown.select', null)
23802             .on('keyup.select', null);
23803
23804         selection.on('click.select', null);
23805
23806         keyup();
23807     };
23808
23809     return behavior;
23810 };
23811 iD.behavior.Tail = function() {
23812     var text,
23813         container,
23814         xmargin = 25,
23815         tooltipSize = [0, 0],
23816         selectionSize = [0, 0];
23817
23818     function tail(selection) {
23819         if (!text) return;
23820
23821         d3.select(window)
23822             .on('resize.tail', function() { selectionSize = selection.dimensions(); });
23823
23824         function show() {
23825             container.style('display', 'block');
23826             tooltipSize = container.dimensions();
23827         }
23828
23829         function mousemove() {
23830             if (container.style('display') === 'none') show();
23831             var xoffset = ((d3.event.clientX + tooltipSize[0] + xmargin) > selectionSize[0]) ?
23832                 -tooltipSize[0] - xmargin : xmargin;
23833             container.classed('left', xoffset > 0);
23834             iD.util.setTransform(container, d3.event.clientX + xoffset, d3.event.clientY);
23835         }
23836
23837         function mouseleave() {
23838             if (d3.event.relatedTarget !== container.node()) {
23839                 container.style('display', 'none');
23840             }
23841         }
23842
23843         function mouseenter() {
23844             if (d3.event.relatedTarget !== container.node()) {
23845                 show();
23846             }
23847         }
23848
23849         container = d3.select(document.body)
23850             .append('div')
23851             .style('display', 'none')
23852             .attr('class', 'tail tooltip-inner');
23853
23854         container.append('div')
23855             .text(text);
23856
23857         selection
23858             .on('mousemove.tail', mousemove)
23859             .on('mouseenter.tail', mouseenter)
23860             .on('mouseleave.tail', mouseleave);
23861
23862         container
23863             .on('mousemove.tail', mousemove);
23864
23865         tooltipSize = container.dimensions();
23866         selectionSize = selection.dimensions();
23867     }
23868
23869     tail.off = function(selection) {
23870         if (!text) return;
23871
23872         container
23873             .on('mousemove.tail', null)
23874             .remove();
23875
23876         selection
23877             .on('mousemove.tail', null)
23878             .on('mouseenter.tail', null)
23879             .on('mouseleave.tail', null);
23880
23881         d3.select(window)
23882             .on('resize.tail', null);
23883     };
23884
23885     tail.text = function(_) {
23886         if (!arguments.length) return text;
23887         text = _;
23888         return tail;
23889     };
23890
23891     return tail;
23892 };
23893 iD.modes = {};
23894 iD.modes.AddArea = function(context) {
23895     var mode = {
23896         id: 'add-area',
23897         button: 'area',
23898         title: t('modes.add_area.title'),
23899         description: t('modes.add_area.description'),
23900         key: '3'
23901     };
23902
23903     var behavior = iD.behavior.AddWay(context)
23904             .tail(t('modes.add_area.tail'))
23905             .on('start', start)
23906             .on('startFromWay', startFromWay)
23907             .on('startFromNode', startFromNode),
23908         defaultTags = {area: 'yes'};
23909
23910     function start(loc) {
23911         var graph = context.graph(),
23912             node = iD.Node({loc: loc}),
23913             way = iD.Way({tags: defaultTags});
23914
23915         context.perform(
23916             iD.actions.AddEntity(node),
23917             iD.actions.AddEntity(way),
23918             iD.actions.AddVertex(way.id, node.id),
23919             iD.actions.AddVertex(way.id, node.id));
23920
23921         context.enter(iD.modes.DrawArea(context, way.id, graph));
23922     }
23923
23924     function startFromWay(loc, edge) {
23925         var graph = context.graph(),
23926             node = iD.Node({loc: loc}),
23927             way = iD.Way({tags: defaultTags});
23928
23929         context.perform(
23930             iD.actions.AddEntity(node),
23931             iD.actions.AddEntity(way),
23932             iD.actions.AddVertex(way.id, node.id),
23933             iD.actions.AddVertex(way.id, node.id),
23934             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23935
23936         context.enter(iD.modes.DrawArea(context, way.id, graph));
23937     }
23938
23939     function startFromNode(node) {
23940         var graph = context.graph(),
23941             way = iD.Way({tags: defaultTags});
23942
23943         context.perform(
23944             iD.actions.AddEntity(way),
23945             iD.actions.AddVertex(way.id, node.id),
23946             iD.actions.AddVertex(way.id, node.id));
23947
23948         context.enter(iD.modes.DrawArea(context, way.id, graph));
23949     }
23950
23951     mode.enter = function() {
23952         context.install(behavior);
23953     };
23954
23955     mode.exit = function() {
23956         context.uninstall(behavior);
23957     };
23958
23959     return mode;
23960 };
23961 iD.modes.AddLine = function(context) {
23962     var mode = {
23963         id: 'add-line',
23964         button: 'line',
23965         title: t('modes.add_line.title'),
23966         description: t('modes.add_line.description'),
23967         key: '2'
23968     };
23969
23970     var behavior = iD.behavior.AddWay(context)
23971         .tail(t('modes.add_line.tail'))
23972         .on('start', start)
23973         .on('startFromWay', startFromWay)
23974         .on('startFromNode', startFromNode);
23975
23976     function start(loc) {
23977         var graph = context.graph(),
23978             node = iD.Node({loc: loc}),
23979             way = iD.Way();
23980
23981         context.perform(
23982             iD.actions.AddEntity(node),
23983             iD.actions.AddEntity(way),
23984             iD.actions.AddVertex(way.id, node.id));
23985
23986         context.enter(iD.modes.DrawLine(context, way.id, graph));
23987     }
23988
23989     function startFromWay(loc, edge) {
23990         var graph = context.graph(),
23991             node = iD.Node({loc: loc}),
23992             way = iD.Way();
23993
23994         context.perform(
23995             iD.actions.AddEntity(node),
23996             iD.actions.AddEntity(way),
23997             iD.actions.AddVertex(way.id, node.id),
23998             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23999
24000         context.enter(iD.modes.DrawLine(context, way.id, graph));
24001     }
24002
24003     function startFromNode(node) {
24004         var way = iD.Way();
24005
24006         context.perform(
24007             iD.actions.AddEntity(way),
24008             iD.actions.AddVertex(way.id, node.id));
24009
24010         context.enter(iD.modes.DrawLine(context, way.id, context.graph()));
24011     }
24012
24013     mode.enter = function() {
24014         context.install(behavior);
24015     };
24016
24017     mode.exit = function() {
24018         context.uninstall(behavior);
24019     };
24020
24021     return mode;
24022 };
24023 iD.modes.AddPoint = function(context) {
24024     var mode = {
24025         id: 'add-point',
24026         button: 'point',
24027         title: t('modes.add_point.title'),
24028         description: t('modes.add_point.description'),
24029         key: '1'
24030     };
24031
24032     var behavior = iD.behavior.Draw(context)
24033         .tail(t('modes.add_point.tail'))
24034         .on('click', add)
24035         .on('clickWay', addWay)
24036         .on('clickNode', addNode)
24037         .on('cancel', cancel)
24038         .on('finish', cancel);
24039
24040     function add(loc) {
24041         var node = iD.Node({loc: loc});
24042
24043         context.perform(
24044             iD.actions.AddEntity(node),
24045             t('operations.add.annotation.point'));
24046
24047         context.enter(
24048             iD.modes.Select(context, [node.id])
24049                 .suppressMenu(true)
24050                 .newFeature(true));
24051     }
24052
24053     function addWay(loc) {
24054         add(loc);
24055     }
24056
24057     function addNode(node) {
24058         add(node.loc);
24059     }
24060
24061     function cancel() {
24062         context.enter(iD.modes.Browse(context));
24063     }
24064
24065     mode.enter = function() {
24066         context.install(behavior);
24067     };
24068
24069     mode.exit = function() {
24070         context.uninstall(behavior);
24071     };
24072
24073     return mode;
24074 };
24075 iD.modes.Browse = function(context) {
24076     var mode = {
24077         button: 'browse',
24078         id: 'browse',
24079         title: t('modes.browse.title'),
24080         description: t('modes.browse.description')
24081     }, sidebar;
24082
24083     var behaviors = [
24084         iD.behavior.Paste(context),
24085         iD.behavior.Hover(context)
24086             .on('hover', context.ui().sidebar.hover),
24087         iD.behavior.Select(context),
24088         iD.behavior.Lasso(context),
24089         iD.modes.DragNode(context).behavior];
24090
24091     mode.enter = function() {
24092         behaviors.forEach(function(behavior) {
24093             context.install(behavior);
24094         });
24095
24096         // Get focus on the body.
24097         if (document.activeElement && document.activeElement.blur) {
24098             document.activeElement.blur();
24099         }
24100
24101         if (sidebar) {
24102             context.ui().sidebar.show(sidebar);
24103         } else {
24104             context.ui().sidebar.select(null);
24105         }
24106     };
24107
24108     mode.exit = function() {
24109         behaviors.forEach(function(behavior) {
24110             context.uninstall(behavior);
24111         });
24112
24113         if (sidebar) {
24114             context.ui().sidebar.hide();
24115         }
24116     };
24117
24118     mode.sidebar = function(_) {
24119         if (!arguments.length) return sidebar;
24120         sidebar = _;
24121         return mode;
24122     };
24123
24124     return mode;
24125 };
24126 iD.modes.DragNode = function(context) {
24127     var mode = {
24128         id: 'drag-node',
24129         button: 'browse'
24130     };
24131
24132     var nudgeInterval,
24133         activeIDs,
24134         wasMidpoint,
24135         cancelled,
24136         selectedIDs = [],
24137         hover = iD.behavior.Hover(context)
24138             .altDisables(true)
24139             .on('hover', context.ui().sidebar.hover),
24140         edit = iD.behavior.Edit(context);
24141
24142     function edge(point, size) {
24143         var pad = [30, 100, 30, 100];
24144         if (point[0] > size[0] - pad[0]) return [-10, 0];
24145         else if (point[0] < pad[2]) return [10, 0];
24146         else if (point[1] > size[1] - pad[1]) return [0, -10];
24147         else if (point[1] < pad[3]) return [0, 10];
24148         return null;
24149     }
24150
24151     function startNudge(nudge) {
24152         if (nudgeInterval) window.clearInterval(nudgeInterval);
24153         nudgeInterval = window.setInterval(function() {
24154             context.pan(nudge);
24155         }, 50);
24156     }
24157
24158     function stopNudge() {
24159         if (nudgeInterval) window.clearInterval(nudgeInterval);
24160         nudgeInterval = null;
24161     }
24162
24163     function moveAnnotation(entity) {
24164         return t('operations.move.annotation.' + entity.geometry(context.graph()));
24165     }
24166
24167     function connectAnnotation(entity) {
24168         return t('operations.connect.annotation.' + entity.geometry(context.graph()));
24169     }
24170
24171     function origin(entity) {
24172         return context.projection(entity.loc);
24173     }
24174
24175     function start(entity) {
24176         cancelled = d3.event.sourceEvent.shiftKey ||
24177             context.features().hasHiddenConnections(entity, context.graph());
24178
24179         if (cancelled) return behavior.cancel();
24180
24181         wasMidpoint = entity.type === 'midpoint';
24182         if (wasMidpoint) {
24183             var midpoint = entity;
24184             entity = iD.Node();
24185             context.perform(iD.actions.AddMidpoint(midpoint, entity));
24186
24187              var vertex = context.surface()
24188                 .selectAll('.' + entity.id);
24189              behavior.target(vertex.node(), entity);
24190
24191         } else {
24192             context.perform(
24193                 iD.actions.Noop());
24194         }
24195
24196         activeIDs = _.pluck(context.graph().parentWays(entity), 'id');
24197         activeIDs.push(entity.id);
24198
24199         context.enter(mode);
24200     }
24201
24202     function datum() {
24203         if (d3.event.sourceEvent.altKey) {
24204             return {};
24205         }
24206
24207         return d3.event.sourceEvent.target.__data__ || {};
24208     }
24209
24210     // via https://gist.github.com/shawnbot/4166283
24211     function childOf(p, c) {
24212         if (p === c) return false;
24213         while (c && c !== p) c = c.parentNode;
24214         return c === p;
24215     }
24216
24217     function move(entity) {
24218         if (cancelled) return;
24219         d3.event.sourceEvent.stopPropagation();
24220
24221         var nudge = childOf(context.container().node(),
24222             d3.event.sourceEvent.toElement) &&
24223             edge(d3.event.point, context.map().dimensions());
24224
24225         if (nudge) startNudge(nudge);
24226         else stopNudge();
24227
24228         var loc = context.map().mouseCoordinates();
24229
24230         var d = datum();
24231         if (d.type === 'node' && d.id !== entity.id) {
24232             loc = d.loc;
24233         } else if (d.type === 'way' && !d3.select(d3.event.sourceEvent.target).classed('fill')) {
24234             loc = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection).loc;
24235         }
24236
24237         context.replace(
24238             iD.actions.MoveNode(entity.id, loc),
24239             moveAnnotation(entity));
24240     }
24241
24242     function end(entity) {
24243         if (cancelled) return;
24244
24245         var d = datum();
24246
24247         if (d.type === 'way') {
24248             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection);
24249             context.replace(
24250                 iD.actions.AddMidpoint({ loc: choice.loc, edge: [d.nodes[choice.index - 1], d.nodes[choice.index]] }, entity),
24251                 connectAnnotation(d));
24252
24253         } else if (d.type === 'node' && d.id !== entity.id) {
24254             context.replace(
24255                 iD.actions.Connect([d.id, entity.id]),
24256                 connectAnnotation(d));
24257
24258         } else if (wasMidpoint) {
24259             context.replace(
24260                 iD.actions.Noop(),
24261                 t('operations.add.annotation.vertex'));
24262
24263         } else {
24264             context.replace(
24265                 iD.actions.Noop(),
24266                 moveAnnotation(entity));
24267         }
24268
24269         var reselection = selectedIDs.filter(function(id) {
24270             return context.graph().hasEntity(id);
24271         });
24272
24273         if (reselection.length) {
24274             context.enter(
24275                 iD.modes.Select(context, reselection)
24276                     .suppressMenu(true));
24277         } else {
24278             context.enter(iD.modes.Browse(context));
24279         }
24280     }
24281
24282     function cancel() {
24283         behavior.cancel();
24284         context.enter(iD.modes.Browse(context));
24285     }
24286
24287     function setActiveElements() {
24288         context.surface().selectAll(iD.util.entitySelector(activeIDs))
24289             .classed('active', true);
24290     }
24291
24292     var behavior = iD.behavior.drag()
24293         .delegate('g.node, g.point, g.midpoint')
24294         .surface(context.surface().node())
24295         .origin(origin)
24296         .on('start', start)
24297         .on('move', move)
24298         .on('end', end);
24299
24300     mode.enter = function() {
24301         context.install(hover);
24302         context.install(edit);
24303
24304         context.history()
24305             .on('undone.drag-node', cancel);
24306
24307         context.map()
24308             .on('drawn.drag-node', setActiveElements);
24309
24310         setActiveElements();
24311     };
24312
24313     mode.exit = function() {
24314         context.uninstall(hover);
24315         context.uninstall(edit);
24316
24317         context.history()
24318             .on('undone.drag-node', null);
24319
24320         context.map()
24321             .on('drawn.drag-node', null);
24322
24323         context.surface()
24324             .selectAll('.active')
24325             .classed('active', false);
24326
24327         stopNudge();
24328     };
24329
24330     mode.selectedIDs = function(_) {
24331         if (!arguments.length) return selectedIDs;
24332         selectedIDs = _;
24333         return mode;
24334     };
24335
24336     mode.behavior = behavior;
24337
24338     return mode;
24339 };
24340 iD.modes.DrawArea = function(context, wayId, baseGraph) {
24341     var mode = {
24342         button: 'area',
24343         id: 'draw-area'
24344     };
24345
24346     var behavior;
24347
24348     mode.enter = function() {
24349         var way = context.entity(wayId),
24350             headId = way.nodes[way.nodes.length - 2],
24351             tailId = way.first();
24352
24353         behavior = iD.behavior.DrawWay(context, wayId, -1, mode, baseGraph)
24354             .tail(t('modes.draw_area.tail'));
24355
24356         var addNode = behavior.addNode;
24357
24358         behavior.addNode = function(node) {
24359             if (node.id === headId || node.id === tailId) {
24360                 behavior.finish();
24361             } else {
24362                 addNode(node);
24363             }
24364         };
24365
24366         context.install(behavior);
24367     };
24368
24369     mode.exit = function() {
24370         context.uninstall(behavior);
24371     };
24372
24373     mode.selectedIDs = function() {
24374         return [wayId];
24375     };
24376
24377     return mode;
24378 };
24379 iD.modes.DrawLine = function(context, wayId, baseGraph, affix) {
24380     var mode = {
24381         button: 'line',
24382         id: 'draw-line'
24383     };
24384
24385     var behavior;
24386
24387     mode.enter = function() {
24388         var way = context.entity(wayId),
24389             index = (affix === 'prefix') ? 0 : undefined,
24390             headId = (affix === 'prefix') ? way.first() : way.last();
24391
24392         behavior = iD.behavior.DrawWay(context, wayId, index, mode, baseGraph)
24393             .tail(t('modes.draw_line.tail'));
24394
24395         var addNode = behavior.addNode;
24396
24397         behavior.addNode = function(node) {
24398             if (node.id === headId) {
24399                 behavior.finish();
24400             } else {
24401                 addNode(node);
24402             }
24403         };
24404
24405         context.install(behavior);
24406     };
24407
24408     mode.exit = function() {
24409         context.uninstall(behavior);
24410     };
24411
24412     mode.selectedIDs = function() {
24413         return [wayId];
24414     };
24415
24416     return mode;
24417 };
24418 iD.modes.Move = function(context, entityIDs) {
24419     var mode = {
24420         id: 'move',
24421         button: 'browse'
24422     };
24423
24424     var keybinding = d3.keybinding('move'),
24425         edit = iD.behavior.Edit(context),
24426         annotation = entityIDs.length === 1 ?
24427             t('operations.move.annotation.' + context.geometry(entityIDs[0])) :
24428             t('operations.move.annotation.multiple'),
24429         cache,
24430         origin,
24431         nudgeInterval;
24432
24433     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
24434
24435     function edge(point, size) {
24436         var pad = [30, 100, 30, 100];
24437         if (point[0] > size[0] - pad[0]) return [-10, 0];
24438         else if (point[0] < pad[2]) return [10, 0];
24439         else if (point[1] > size[1] - pad[1]) return [0, -10];
24440         else if (point[1] < pad[3]) return [0, 10];
24441         return null;
24442     }
24443
24444     function startNudge(nudge) {
24445         if (nudgeInterval) window.clearInterval(nudgeInterval);
24446         nudgeInterval = window.setInterval(function() {
24447             context.pan(nudge);
24448
24449             var currMouse = context.mouse(),
24450                 origMouse = context.projection(origin),
24451                 delta = vecSub(vecSub(currMouse, origMouse), nudge),
24452                 action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24453
24454             context.overwrite(action, annotation);
24455
24456         }, 50);
24457     }
24458
24459     function stopNudge() {
24460         if (nudgeInterval) window.clearInterval(nudgeInterval);
24461         nudgeInterval = null;
24462     }
24463
24464     function move() {
24465         var currMouse = context.mouse(),
24466             origMouse = context.projection(origin),
24467             delta = vecSub(currMouse, origMouse),
24468             action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24469
24470         context.overwrite(action, annotation);
24471
24472         var nudge = edge(currMouse, context.map().dimensions());
24473         if (nudge) startNudge(nudge);
24474         else stopNudge();
24475     }
24476
24477     function finish() {
24478         d3.event.stopPropagation();
24479         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24480         stopNudge();
24481     }
24482
24483     function cancel() {
24484         context.pop();
24485         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24486         stopNudge();
24487     }
24488
24489     function undone() {
24490         context.enter(iD.modes.Browse(context));
24491     }
24492
24493     mode.enter = function() {
24494         origin = context.map().mouseCoordinates();
24495         cache = {};
24496
24497         context.install(edit);
24498
24499         context.perform(
24500             iD.actions.Noop(),
24501             annotation);
24502
24503         context.surface()
24504             .on('mousemove.move', move)
24505             .on('click.move', finish);
24506
24507         context.history()
24508             .on('undone.move', undone);
24509
24510         keybinding
24511             .on('⎋', cancel)
24512             .on('↩', finish);
24513
24514         d3.select(document)
24515             .call(keybinding);
24516     };
24517
24518     mode.exit = function() {
24519         stopNudge();
24520
24521         context.uninstall(edit);
24522
24523         context.surface()
24524             .on('mousemove.move', null)
24525             .on('click.move', null);
24526
24527         context.history()
24528             .on('undone.move', null);
24529
24530         keybinding.off();
24531     };
24532
24533     return mode;
24534 };
24535 iD.modes.RotateWay = function(context, wayId) {
24536     var mode = {
24537         id: 'rotate-way',
24538         button: 'browse'
24539     };
24540
24541     var keybinding = d3.keybinding('rotate-way'),
24542         edit = iD.behavior.Edit(context);
24543
24544     mode.enter = function() {
24545         context.install(edit);
24546
24547         var annotation = t('operations.rotate.annotation.' + context.geometry(wayId)),
24548             way = context.graph().entity(wayId),
24549             nodes = _.uniq(context.graph().childNodes(way)),
24550             points = nodes.map(function(n) { return context.projection(n.loc); }),
24551             pivot = d3.geom.polygon(points).centroid(),
24552             angle;
24553
24554         context.perform(
24555             iD.actions.Noop(),
24556             annotation);
24557
24558         function rotate() {
24559
24560             var mousePoint = context.mouse(),
24561                 newAngle = Math.atan2(mousePoint[1] - pivot[1], mousePoint[0] - pivot[0]);
24562
24563             if (typeof angle === 'undefined') angle = newAngle;
24564
24565             context.replace(
24566                 iD.actions.RotateWay(wayId, pivot, newAngle - angle, context.projection),
24567                 annotation);
24568
24569             angle = newAngle;
24570         }
24571
24572         function finish() {
24573             d3.event.stopPropagation();
24574             context.enter(iD.modes.Select(context, [wayId])
24575                 .suppressMenu(true));
24576         }
24577
24578         function cancel() {
24579             context.pop();
24580             context.enter(iD.modes.Select(context, [wayId])
24581                 .suppressMenu(true));
24582         }
24583
24584         function undone() {
24585             context.enter(iD.modes.Browse(context));
24586         }
24587
24588         context.surface()
24589             .on('mousemove.rotate-way', rotate)
24590             .on('click.rotate-way', finish);
24591
24592         context.history()
24593             .on('undone.rotate-way', undone);
24594
24595         keybinding
24596             .on('⎋', cancel)
24597             .on('↩', finish);
24598
24599         d3.select(document)
24600             .call(keybinding);
24601     };
24602
24603     mode.exit = function() {
24604         context.uninstall(edit);
24605
24606         context.surface()
24607             .on('mousemove.rotate-way', null)
24608             .on('click.rotate-way', null);
24609
24610         context.history()
24611             .on('undone.rotate-way', null);
24612
24613         keybinding.off();
24614     };
24615
24616     return mode;
24617 };
24618 iD.modes.Save = function(context) {
24619     var ui = iD.ui.Commit(context)
24620             .on('cancel', cancel)
24621             .on('save', save);
24622
24623     function cancel() {
24624         context.enter(iD.modes.Browse(context));
24625     }
24626
24627     function save(e, tryAgain) {
24628         function withChildNodes(ids, graph) {
24629             return _.uniq(_.reduce(ids, function(result, id) {
24630                 var e = graph.entity(id);
24631                 if (e.type === 'way') {
24632                     var cn = graph.childNodes(e);
24633                     result.push.apply(result, _.pluck(_.filter(cn, 'version'), 'id'));
24634                 }
24635                 return result;
24636             }, _.clone(ids)));
24637         }
24638
24639         var loading = iD.ui.Loading(context).message(t('save.uploading')).blocking(true),
24640             history = context.history(),
24641             origChanges = history.changes(iD.actions.DiscardTags(history.difference())),
24642             localGraph = context.graph(),
24643             remoteGraph = iD.Graph(history.base(), true),
24644             modified = _.filter(history.difference().summary(), {changeType: 'modified'}),
24645             toCheck = _.pluck(_.pluck(modified, 'entity'), 'id'),
24646             toLoad = withChildNodes(toCheck, localGraph),
24647             conflicts = [],
24648             errors = [];
24649
24650         if (!tryAgain) history.perform(iD.actions.Noop());  // checkpoint
24651         context.container().call(loading);
24652
24653         if (toCheck.length) {
24654             context.connection().loadMultiple(toLoad, loaded);
24655         } else {
24656             finalize();
24657         }
24658
24659
24660         // Reload modified entities into an alternate graph and check for conflicts..
24661         function loaded(err, result) {
24662             if (errors.length) return;
24663
24664             if (err) {
24665                 errors.push({
24666                     msg: err.responseText,
24667                     details: [ t('save.status_code', { code: err.status }) ]
24668                 });
24669                 showErrors();
24670
24671             } else {
24672                 var loadMore = [];
24673                 _.each(result.data, function(entity) {
24674                     remoteGraph.replace(entity);
24675                     toLoad = _.without(toLoad, entity.id);
24676
24677                     // Because loadMultiple doesn't download /full like loadEntity,
24678                     // need to also load children that aren't already being checked..
24679                     if (!entity.visible) return;
24680                     if (entity.type === 'way') {
24681                         loadMore.push.apply(loadMore,
24682                             _.difference(entity.nodes, toCheck, toLoad, loadMore));
24683                     } else if (entity.type === 'relation' && entity.isMultipolygon()) {
24684                         loadMore.push.apply(loadMore,
24685                             _.difference(_.pluck(entity.members, 'id'), toCheck, toLoad, loadMore));
24686                     }
24687                 });
24688
24689                 if (loadMore.length) {
24690                     toLoad.push.apply(toLoad, loadMore);
24691                     context.connection().loadMultiple(loadMore, loaded);
24692                 }
24693
24694                 if (!toLoad.length) {
24695                     checkConflicts();
24696                 }
24697             }
24698         }
24699
24700
24701         function checkConflicts() {
24702             function choice(id, text, action) {
24703                 return { id: id, text: text, action: function() { history.replace(action); } };
24704             }
24705             function formatUser(d) {
24706                 return '<a href="' + context.connection().userURL(d) + '" target="_blank">' + d + '</a>';
24707             }
24708             function entityName(entity) {
24709                 return iD.util.displayName(entity) || (iD.util.displayType(entity.id) + ' ' + entity.id);
24710             }
24711
24712             function compareVersions(local, remote) {
24713                 if (local.version !== remote.version) return false;
24714
24715                 if (local.type === 'way') {
24716                     var children = _.union(local.nodes, remote.nodes);
24717
24718                     for (var i = 0; i < children.length; i++) {
24719                         var a = localGraph.hasEntity(children[i]),
24720                             b = remoteGraph.hasEntity(children[i]);
24721
24722                         if (a && b && a.version !== b.version) return false;
24723                     }
24724                 }
24725
24726                 return true;
24727             }
24728
24729             _.each(toCheck, function(id) {
24730                 var local = localGraph.entity(id),
24731                     remote = remoteGraph.entity(id);
24732
24733                 if (compareVersions(local, remote)) return;
24734
24735                 var action = iD.actions.MergeRemoteChanges,
24736                     merge = action(id, localGraph, remoteGraph, formatUser);
24737
24738                 history.replace(merge);
24739
24740                 var mergeConflicts = merge.conflicts();
24741                 if (!mergeConflicts.length) return;  // merged safely
24742
24743                 var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local'),
24744                     forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote'),
24745                     keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore')),
24746                     keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete'));
24747
24748                 conflicts.push({
24749                     id: id,
24750                     name: entityName(local),
24751                     details: mergeConflicts,
24752                     chosen: 1,
24753                     choices: [
24754                         choice(id, keepMine, forceLocal),
24755                         choice(id, keepTheirs, forceRemote)
24756                     ]
24757                 });
24758             });
24759
24760             finalize();
24761         }
24762
24763
24764         function finalize() {
24765             if (conflicts.length) {
24766                 conflicts.sort(function(a,b) { return b.id.localeCompare(a.id); });
24767                 showConflicts();
24768             } else if (errors.length) {
24769                 showErrors();
24770             } else {
24771                 var changes = history.changes(iD.actions.DiscardTags(history.difference()));
24772                 if (changes.modified.length || changes.created.length || changes.deleted.length) {
24773                     context.connection().putChangeset(
24774                         changes,
24775                         e.comment,
24776                         history.imageryUsed(),
24777                         function(err, changeset_id) {
24778                             if (err) {
24779                                 errors.push({
24780                                     msg: err.responseText,
24781                                     details: [ t('save.status_code', { code: err.status }) ]
24782                                 });
24783                                 showErrors();
24784                             } else {
24785                                 history.clearSaved();
24786                                 success(e, changeset_id);
24787                                 // Add delay to allow for postgres replication #1646 #2678
24788                                 window.setTimeout(function() {
24789                                     loading.close();
24790                                     context.flush();
24791                                 }, 2500);
24792                             }
24793                         });
24794                 } else {        // changes were insignificant or reverted by user
24795                     loading.close();
24796                     context.flush();
24797                     cancel();
24798                 }
24799             }
24800         }
24801
24802
24803         function showConflicts() {
24804             var selection = context.container()
24805                 .select('#sidebar')
24806                 .append('div')
24807                 .attr('class','sidebar-component');
24808
24809             loading.close();
24810
24811             selection.call(iD.ui.Conflicts(context)
24812                 .list(conflicts)
24813                 .on('download', function() {
24814                     var data = JXON.stringify(context.connection().osmChangeJXON('CHANGEME', origChanges)),
24815                         win = window.open('data:text/xml,' + encodeURIComponent(data), '_blank');
24816                     win.focus();
24817                 })
24818                 .on('cancel', function() {
24819                     history.pop();
24820                     selection.remove();
24821                 })
24822                 .on('save', function() {
24823                     for (var i = 0; i < conflicts.length; i++) {
24824                         if (conflicts[i].chosen === 1) {  // user chose "keep theirs"
24825                             var entity = context.hasEntity(conflicts[i].id);
24826                             if (entity && entity.type === 'way') {
24827                                 var children = _.uniq(entity.nodes);
24828                                 for (var j = 0; j < children.length; j++) {
24829                                     history.replace(iD.actions.Revert(children[j]));
24830                                 }
24831                             }
24832                             history.replace(iD.actions.Revert(conflicts[i].id));
24833                         }
24834                     }
24835
24836                     selection.remove();
24837                     save(e, true);
24838                 })
24839             );
24840         }
24841
24842
24843         function showErrors() {
24844             var selection = iD.ui.confirm(context.container());
24845
24846             history.pop();
24847             loading.close();
24848
24849             selection
24850                 .select('.modal-section.header')
24851                 .append('h3')
24852                 .text(t('save.error'));
24853
24854             addErrors(selection, errors);
24855             selection.okButton();
24856         }
24857
24858
24859         function addErrors(selection, data) {
24860             var message = selection
24861                 .select('.modal-section.message-text');
24862
24863             var items = message
24864                 .selectAll('.error-container')
24865                 .data(data);
24866
24867             var enter = items.enter()
24868                 .append('div')
24869                 .attr('class', 'error-container');
24870
24871             enter
24872                 .append('a')
24873                 .attr('class', 'error-description')
24874                 .attr('href', '#')
24875                 .classed('hide-toggle', true)
24876                 .text(function(d) { return d.msg || t('save.unknown_error_details'); })
24877                 .on('click', function() {
24878                     var error = d3.select(this),
24879                         detail = d3.select(this.nextElementSibling),
24880                         exp = error.classed('expanded');
24881
24882                     detail.style('display', exp ? 'none' : 'block');
24883                     error.classed('expanded', !exp);
24884
24885                     d3.event.preventDefault();
24886                 });
24887
24888             var details = enter
24889                 .append('div')
24890                 .attr('class', 'error-detail-container')
24891                 .style('display', 'none');
24892
24893             details
24894                 .append('ul')
24895                 .attr('class', 'error-detail-list')
24896                 .selectAll('li')
24897                 .data(function(d) { return d.details || []; })
24898                 .enter()
24899                 .append('li')
24900                 .attr('class', 'error-detail-item')
24901                 .text(function(d) { return d; });
24902
24903             items.exit()
24904                 .remove();
24905         }
24906
24907     }
24908
24909
24910     function success(e, changeset_id) {
24911         context.enter(iD.modes.Browse(context)
24912             .sidebar(iD.ui.Success(context)
24913                 .changeset({
24914                     id: changeset_id,
24915                     comment: e.comment
24916                 })
24917                 .on('cancel', function() {
24918                     context.ui().sidebar.hide();
24919                 })));
24920     }
24921
24922     var mode = {
24923         id: 'save'
24924     };
24925
24926     mode.enter = function() {
24927         context.connection().authenticate(function() {
24928             context.ui().sidebar.show(ui);
24929         });
24930     };
24931
24932     mode.exit = function() {
24933         context.ui().sidebar.hide();
24934     };
24935
24936     return mode;
24937 };
24938 iD.modes.Select = function(context, selectedIDs) {
24939     var mode = {
24940         id: 'select',
24941         button: 'browse'
24942     };
24943
24944     var keybinding = d3.keybinding('select'),
24945         timeout = null,
24946         behaviors = [
24947             iD.behavior.Copy(context),
24948             iD.behavior.Paste(context),
24949             iD.behavior.Hover(context),
24950             iD.behavior.Select(context),
24951             iD.behavior.Lasso(context),
24952             iD.modes.DragNode(context)
24953                 .selectedIDs(selectedIDs)
24954                 .behavior],
24955         inspector,
24956         radialMenu,
24957         newFeature = false,
24958         suppressMenu = false;
24959
24960     var wrap = context.container()
24961         .select('.inspector-wrap');
24962
24963
24964     function singular() {
24965         if (selectedIDs.length === 1) {
24966             return context.entity(selectedIDs[0]);
24967         }
24968     }
24969
24970     function closeMenu() {
24971         if (radialMenu) {
24972             context.surface().call(radialMenu.close);
24973         }
24974     }
24975
24976     function positionMenu() {
24977         if (suppressMenu || !radialMenu) { return; }
24978
24979         var entity = singular();
24980         if (entity && context.geometry(entity.id) === 'relation') {
24981             suppressMenu = true;
24982         } else if (entity && entity.type === 'node') {
24983             radialMenu.center(context.projection(entity.loc));
24984         } else {
24985             var point = context.mouse(),
24986                 viewport = iD.geo.Extent(context.projection.clipExtent()).polygon();
24987             if (iD.geo.pointInPolygon(point, viewport)) {
24988                 radialMenu.center(point);
24989             } else {
24990                 suppressMenu = true;
24991             }
24992         }
24993     }
24994
24995     function showMenu() {
24996         closeMenu();
24997         if (!suppressMenu && radialMenu) {
24998             context.surface().call(radialMenu);
24999         }
25000     }
25001
25002     function toggleMenu() {
25003         if (d3.select('.radial-menu').empty()) {
25004             showMenu();
25005         } else {
25006             closeMenu();
25007         }
25008     }
25009
25010     mode.selectedIDs = function() {
25011         return selectedIDs;
25012     };
25013
25014     mode.reselect = function() {
25015         var surfaceNode = context.surface().node();
25016         if (surfaceNode.focus) { // FF doesn't support it
25017             surfaceNode.focus();
25018         }
25019
25020         positionMenu();
25021         showMenu();
25022     };
25023
25024     mode.newFeature = function(_) {
25025         if (!arguments.length) return newFeature;
25026         newFeature = _;
25027         return mode;
25028     };
25029
25030     mode.suppressMenu = function(_) {
25031         if (!arguments.length) return suppressMenu;
25032         suppressMenu = _;
25033         return mode;
25034     };
25035
25036     mode.enter = function() {
25037         function update() {
25038             closeMenu();
25039             if (_.any(selectedIDs, function(id) { return !context.hasEntity(id); })) {
25040                 // Exit mode if selected entity gets undone
25041                 context.enter(iD.modes.Browse(context));
25042             }
25043         }
25044
25045         function dblclick() {
25046             var target = d3.select(d3.event.target),
25047                 datum = target.datum();
25048
25049             if (datum instanceof iD.Way && !target.classed('fill')) {
25050                 var choice = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection),
25051                     node = iD.Node();
25052
25053                 var prev = datum.nodes[choice.index - 1],
25054                     next = datum.nodes[choice.index];
25055
25056                 context.perform(
25057                     iD.actions.AddMidpoint({loc: choice.loc, edge: [prev, next]}, node),
25058                     t('operations.add.annotation.vertex'));
25059
25060                 d3.event.preventDefault();
25061                 d3.event.stopPropagation();
25062             }
25063         }
25064
25065         function selectElements(drawn) {
25066             var entity = singular();
25067             if (entity && context.geometry(entity.id) === 'relation') {
25068                 suppressMenu = true;
25069                 return;
25070             }
25071
25072             var selection = context.surface()
25073                     .selectAll(iD.util.entityOrMemberSelector(selectedIDs, context.graph()));
25074
25075             if (selection.empty()) {
25076                 if (drawn) {  // Exit mode if selected DOM elements have disappeared..
25077                     context.enter(iD.modes.Browse(context));
25078                 }
25079             } else {
25080                 selection
25081                     .classed('selected', true);
25082             }
25083         }
25084
25085
25086         behaviors.forEach(function(behavior) {
25087             context.install(behavior);
25088         });
25089
25090         var operations = _.without(d3.values(iD.operations), iD.operations.Delete)
25091                 .map(function(o) { return o(selectedIDs, context); })
25092                 .filter(function(o) { return o.available(); });
25093
25094         operations.unshift(iD.operations.Delete(selectedIDs, context));
25095
25096         keybinding
25097             .on('⎋', function() { context.enter(iD.modes.Browse(context)); }, true)
25098             .on('space', toggleMenu);
25099
25100         operations.forEach(function(operation) {
25101             operation.keys.forEach(function(key) {
25102                 keybinding.on(key, function() {
25103                     if (!operation.disabled()) {
25104                         operation();
25105                     }
25106                 });
25107             });
25108         });
25109
25110         d3.select(document)
25111             .call(keybinding);
25112
25113         radialMenu = iD.ui.RadialMenu(context, operations);
25114
25115         context.ui().sidebar
25116             .select(singular() ? singular().id : null, newFeature);
25117
25118         context.history()
25119             .on('undone.select', update)
25120             .on('redone.select', update);
25121
25122         context.map()
25123             .on('move.select', closeMenu)
25124             .on('drawn.select', selectElements);
25125
25126         selectElements();
25127
25128         var show = d3.event && !suppressMenu;
25129
25130         if (show) {
25131             positionMenu();
25132         }
25133
25134         timeout = window.setTimeout(function() {
25135             if (show) {
25136                 showMenu();
25137             }
25138
25139             context.surface()
25140                 .on('dblclick.select', dblclick);
25141         }, 200);
25142
25143         if (selectedIDs.length > 1) {
25144             var entities = iD.ui.SelectionList(context, selectedIDs);
25145             context.ui().sidebar.show(entities);
25146         }
25147     };
25148
25149     mode.exit = function() {
25150         if (timeout) window.clearTimeout(timeout);
25151
25152         if (inspector) wrap.call(inspector.close);
25153
25154         behaviors.forEach(function(behavior) {
25155             context.uninstall(behavior);
25156         });
25157
25158         keybinding.off();
25159         closeMenu();
25160         radialMenu = undefined;
25161
25162         context.history()
25163             .on('undone.select', null)
25164             .on('redone.select', null);
25165
25166         context.surface()
25167             .on('dblclick.select', null)
25168             .selectAll('.selected')
25169             .classed('selected', false);
25170
25171         context.map().on('drawn.select', null);
25172         context.ui().sidebar.hide();
25173     };
25174
25175     return mode;
25176 };
25177 iD.operations = {};
25178 iD.operations.Circularize = function(selectedIDs, context) {
25179     var entityId = selectedIDs[0],
25180         entity = context.entity(entityId),
25181         extent = entity.extent(context.graph()),
25182         geometry = context.geometry(entityId),
25183         action = iD.actions.Circularize(entityId, context.projection);
25184
25185     var operation = function() {
25186         var annotation = t('operations.circularize.annotation.' + geometry);
25187         context.perform(action, annotation);
25188     };
25189
25190     operation.available = function() {
25191         return selectedIDs.length === 1 &&
25192             entity.type === 'way' &&
25193             _.uniq(entity.nodes).length > 1;
25194     };
25195
25196     operation.disabled = function() {
25197         var reason;
25198         if (extent.percentContainedIn(context.extent()) < 0.8) {
25199             reason = 'too_large';
25200         } else if (context.hasHiddenConnections(entityId)) {
25201             reason = 'connected_to_hidden';
25202         }
25203         return action.disabled(context.graph()) || reason;
25204     };
25205
25206     operation.tooltip = function() {
25207         var disable = operation.disabled();
25208         return disable ?
25209             t('operations.circularize.' + disable) :
25210             t('operations.circularize.description.' + geometry);
25211     };
25212
25213     operation.id = 'circularize';
25214     operation.keys = [t('operations.circularize.key')];
25215     operation.title = t('operations.circularize.title');
25216
25217     return operation;
25218 };
25219 iD.operations.Continue = function(selectedIDs, context) {
25220     var graph = context.graph(),
25221         entities = selectedIDs.map(function(id) { return graph.entity(id); }),
25222         geometries = _.extend({line: [], vertex: []},
25223             _.groupBy(entities, function(entity) { return entity.geometry(graph); })),
25224         vertex = geometries.vertex[0];
25225
25226     function candidateWays() {
25227         return graph.parentWays(vertex).filter(function(parent) {
25228             return parent.geometry(graph) === 'line' &&
25229                 parent.affix(vertex.id) &&
25230                 (geometries.line.length === 0 || geometries.line[0] === parent);
25231         });
25232     }
25233
25234     var operation = function() {
25235         var candidate = candidateWays()[0];
25236         context.enter(iD.modes.DrawLine(
25237             context,
25238             candidate.id,
25239             context.graph(),
25240             candidate.affix(vertex.id)));
25241     };
25242
25243     operation.available = function() {
25244         return geometries.vertex.length === 1 && geometries.line.length <= 1 &&
25245             !context.features().hasHiddenConnections(vertex, context.graph());
25246     };
25247
25248     operation.disabled = function() {
25249         var candidates = candidateWays();
25250         if (candidates.length === 0)
25251             return 'not_eligible';
25252         if (candidates.length > 1)
25253             return 'multiple';
25254     };
25255
25256     operation.tooltip = function() {
25257         var disable = operation.disabled();
25258         return disable ?
25259             t('operations.continue.' + disable) :
25260             t('operations.continue.description');
25261     };
25262
25263     operation.id = 'continue';
25264     operation.keys = [t('operations.continue.key')];
25265     operation.title = t('operations.continue.title');
25266
25267     return operation;
25268 };
25269 iD.operations.Delete = function(selectedIDs, context) {
25270     var action = iD.actions.DeleteMultiple(selectedIDs);
25271
25272     var operation = function() {
25273         var annotation,
25274             nextSelectedID;
25275
25276         if (selectedIDs.length > 1) {
25277             annotation = t('operations.delete.annotation.multiple', {n: selectedIDs.length});
25278
25279         } else {
25280             var id = selectedIDs[0],
25281                 entity = context.entity(id),
25282                 geometry = context.geometry(id),
25283                 parents = context.graph().parentWays(entity),
25284                 parent = parents[0];
25285
25286             annotation = t('operations.delete.annotation.' + geometry);
25287
25288             // Select the next closest node in the way.
25289             if (geometry === 'vertex' && parents.length === 1 && parent.nodes.length > 2) {
25290                 var nodes = parent.nodes,
25291                     i = nodes.indexOf(id);
25292
25293                 if (i === 0) {
25294                     i++;
25295                 } else if (i === nodes.length - 1) {
25296                     i--;
25297                 } else {
25298                     var a = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i - 1]).loc),
25299                         b = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i + 1]).loc);
25300                     i = a < b ? i - 1 : i + 1;
25301                 }
25302
25303                 nextSelectedID = nodes[i];
25304             }
25305         }
25306
25307         if (nextSelectedID && context.hasEntity(nextSelectedID)) {
25308             context.enter(iD.modes.Select(context, [nextSelectedID]));
25309         } else {
25310             context.enter(iD.modes.Browse(context));
25311         }
25312
25313         context.perform(
25314             action,
25315             annotation);
25316     };
25317
25318     operation.available = function() {
25319         return true;
25320     };
25321
25322     operation.disabled = function() {
25323         var reason;
25324         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25325             reason = 'connected_to_hidden';
25326         }
25327         return action.disabled(context.graph()) || reason;
25328     };
25329
25330     operation.tooltip = function() {
25331         var disable = operation.disabled();
25332         return disable ?
25333             t('operations.delete.' + disable) :
25334             t('operations.delete.description');
25335     };
25336
25337     operation.id = 'delete';
25338     operation.keys = [iD.ui.cmd('⌘⌫'), iD.ui.cmd('⌘⌦')];
25339     operation.title = t('operations.delete.title');
25340
25341     return operation;
25342 };
25343 iD.operations.Disconnect = function(selectedIDs, context) {
25344     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25345         return context.geometry(entityId) === 'vertex';
25346     });
25347
25348     var entityId = vertices[0],
25349         action = iD.actions.Disconnect(entityId);
25350
25351     if (selectedIDs.length > 1) {
25352         action.limitWays(_.without(selectedIDs, entityId));
25353     }
25354
25355     var operation = function() {
25356         context.perform(action, t('operations.disconnect.annotation'));
25357     };
25358
25359     operation.available = function() {
25360         return vertices.length === 1;
25361     };
25362
25363     operation.disabled = function() {
25364         var reason;
25365         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25366             reason = 'connected_to_hidden';
25367         }
25368         return action.disabled(context.graph()) || reason;
25369     };
25370
25371     operation.tooltip = function() {
25372         var disable = operation.disabled();
25373         return disable ?
25374             t('operations.disconnect.' + disable) :
25375             t('operations.disconnect.description');
25376     };
25377
25378     operation.id = 'disconnect';
25379     operation.keys = [t('operations.disconnect.key')];
25380     operation.title = t('operations.disconnect.title');
25381
25382     return operation;
25383 };
25384 iD.operations.Merge = function(selectedIDs, context) {
25385     var join = iD.actions.Join(selectedIDs),
25386         merge = iD.actions.Merge(selectedIDs),
25387         mergePolygon = iD.actions.MergePolygon(selectedIDs);
25388
25389     var operation = function() {
25390         var annotation = t('operations.merge.annotation', {n: selectedIDs.length}),
25391             action;
25392
25393         if (!join.disabled(context.graph())) {
25394             action = join;
25395         } else if (!merge.disabled(context.graph())) {
25396             action = merge;
25397         } else {
25398             action = mergePolygon;
25399         }
25400
25401         context.perform(action, annotation);
25402         context.enter(iD.modes.Select(context, selectedIDs.filter(function(id) { return context.hasEntity(id); }))
25403             .suppressMenu(true));
25404     };
25405
25406     operation.available = function() {
25407         return selectedIDs.length >= 2;
25408     };
25409
25410     operation.disabled = function() {
25411         return join.disabled(context.graph()) &&
25412             merge.disabled(context.graph()) &&
25413             mergePolygon.disabled(context.graph());
25414     };
25415
25416     operation.tooltip = function() {
25417         var j = join.disabled(context.graph()),
25418             m = merge.disabled(context.graph()),
25419             p = mergePolygon.disabled(context.graph());
25420
25421         if (j === 'restriction' && m && p)
25422             return t('operations.merge.restriction', {relation: context.presets().item('type/restriction').name()});
25423
25424         if (p === 'incomplete_relation' && j && m)
25425             return t('operations.merge.incomplete_relation');
25426
25427         if (j && m && p)
25428             return t('operations.merge.' + j);
25429
25430         return t('operations.merge.description');
25431     };
25432
25433     operation.id = 'merge';
25434     operation.keys = [t('operations.merge.key')];
25435     operation.title = t('operations.merge.title');
25436
25437     return operation;
25438 };
25439 iD.operations.Move = function(selectedIDs, context) {
25440     var extent = selectedIDs.reduce(function(extent, id) {
25441             return extent.extend(context.entity(id).extent(context.graph()));
25442         }, iD.geo.Extent());
25443
25444     var operation = function() {
25445         context.enter(iD.modes.Move(context, selectedIDs));
25446     };
25447
25448     operation.available = function() {
25449         return selectedIDs.length > 1 ||
25450             context.entity(selectedIDs[0]).type !== 'node';
25451     };
25452
25453     operation.disabled = function() {
25454         var reason;
25455         if (extent.area() && extent.percentContainedIn(context.extent()) < 0.8) {
25456             reason = 'too_large';
25457         } else if (_.any(selectedIDs, context.hasHiddenConnections)) {
25458             reason = 'connected_to_hidden';
25459         }
25460         return iD.actions.Move(selectedIDs).disabled(context.graph()) || reason;
25461     };
25462
25463     operation.tooltip = function() {
25464         var disable = operation.disabled();
25465         return disable ?
25466             t('operations.move.' + disable) :
25467             t('operations.move.description');
25468     };
25469
25470     operation.id = 'move';
25471     operation.keys = [t('operations.move.key')];
25472     operation.title = t('operations.move.title');
25473
25474     return operation;
25475 };
25476 iD.operations.Orthogonalize = function(selectedIDs, context) {
25477     var entityId = selectedIDs[0],
25478         entity = context.entity(entityId),
25479         extent = entity.extent(context.graph()),
25480         geometry = context.geometry(entityId),
25481         action = iD.actions.Orthogonalize(entityId, context.projection);
25482
25483     var operation = function() {
25484         var annotation = t('operations.orthogonalize.annotation.' + geometry);
25485         context.perform(action, annotation);
25486     };
25487
25488     operation.available = function() {
25489         return selectedIDs.length === 1 &&
25490             entity.type === 'way' &&
25491             entity.isClosed() &&
25492             _.uniq(entity.nodes).length > 2;
25493     };
25494
25495     operation.disabled = function() {
25496         var reason;
25497         if (extent.percentContainedIn(context.extent()) < 0.8) {
25498             reason = 'too_large';
25499         } else if (context.hasHiddenConnections(entityId)) {
25500             reason = 'connected_to_hidden';
25501         }
25502         return action.disabled(context.graph()) || reason;
25503     };
25504
25505     operation.tooltip = function() {
25506         var disable = operation.disabled();
25507         return disable ?
25508             t('operations.orthogonalize.' + disable) :
25509             t('operations.orthogonalize.description.' + geometry);
25510     };
25511
25512     operation.id = 'orthogonalize';
25513     operation.keys = [t('operations.orthogonalize.key')];
25514     operation.title = t('operations.orthogonalize.title');
25515
25516     return operation;
25517 };
25518 iD.operations.Reverse = function(selectedIDs, context) {
25519     var entityId = selectedIDs[0];
25520
25521     var operation = function() {
25522         context.perform(
25523             iD.actions.Reverse(entityId),
25524             t('operations.reverse.annotation'));
25525     };
25526
25527     operation.available = function() {
25528         return selectedIDs.length === 1 &&
25529             context.geometry(entityId) === 'line';
25530     };
25531
25532     operation.disabled = function() {
25533         return false;
25534     };
25535
25536     operation.tooltip = function() {
25537         return t('operations.reverse.description');
25538     };
25539
25540     operation.id = 'reverse';
25541     operation.keys = [t('operations.reverse.key')];
25542     operation.title = t('operations.reverse.title');
25543
25544     return operation;
25545 };
25546 iD.operations.Rotate = function(selectedIDs, context) {
25547     var entityId = selectedIDs[0],
25548         entity = context.entity(entityId),
25549         extent = entity.extent(context.graph()),
25550         geometry = context.geometry(entityId);
25551
25552     var operation = function() {
25553         context.enter(iD.modes.RotateWay(context, entityId));
25554     };
25555
25556     operation.available = function() {
25557         if (selectedIDs.length !== 1 || entity.type !== 'way')
25558             return false;
25559         if (geometry === 'area')
25560             return true;
25561         if (entity.isClosed() &&
25562             context.graph().parentRelations(entity).some(function(r) { return r.isMultipolygon(); }))
25563             return true;
25564         return false;
25565     };
25566
25567     operation.disabled = function() {
25568         if (extent.percentContainedIn(context.extent()) < 0.8) {
25569             return 'too_large';
25570         } else if (context.hasHiddenConnections(entityId)) {
25571             return 'connected_to_hidden';
25572         } else {
25573             return false;
25574         }
25575     };
25576
25577     operation.tooltip = function() {
25578         var disable = operation.disabled();
25579         return disable ?
25580             t('operations.rotate.' + disable) :
25581             t('operations.rotate.description');
25582     };
25583
25584     operation.id = 'rotate';
25585     operation.keys = [t('operations.rotate.key')];
25586     operation.title = t('operations.rotate.title');
25587
25588     return operation;
25589 };
25590 iD.operations.Split = function(selectedIDs, context) {
25591     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25592         return context.geometry(entityId) === 'vertex';
25593     });
25594
25595     var entityId = vertices[0],
25596         action = iD.actions.Split(entityId);
25597
25598     if (selectedIDs.length > 1) {
25599         action.limitWays(_.without(selectedIDs, entityId));
25600     }
25601
25602     var operation = function() {
25603         var annotation;
25604
25605         var ways = action.ways(context.graph());
25606         if (ways.length === 1) {
25607             annotation = t('operations.split.annotation.' + context.geometry(ways[0].id));
25608         } else {
25609             annotation = t('operations.split.annotation.multiple', {n: ways.length});
25610         }
25611
25612         var difference = context.perform(action, annotation);
25613         context.enter(iD.modes.Select(context, difference.extantIDs()));
25614     };
25615
25616     operation.available = function() {
25617         return vertices.length === 1;
25618     };
25619
25620     operation.disabled = function() {
25621         var reason;
25622         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25623             reason = 'connected_to_hidden';
25624         }
25625         return action.disabled(context.graph()) || reason;
25626     };
25627
25628     operation.tooltip = function() {
25629         var disable = operation.disabled();
25630         if (disable) {
25631             return t('operations.split.' + disable);
25632         }
25633
25634         var ways = action.ways(context.graph());
25635         if (ways.length === 1) {
25636             return t('operations.split.description.' + context.geometry(ways[0].id));
25637         } else {
25638             return t('operations.split.description.multiple');
25639         }
25640     };
25641
25642     operation.id = 'split';
25643     operation.keys = [t('operations.split.key')];
25644     operation.title = t('operations.split.title');
25645
25646     return operation;
25647 };
25648 iD.operations.Straighten = function(selectedIDs, context) {
25649     var entityId = selectedIDs[0],
25650         action = iD.actions.Straighten(entityId, context.projection);
25651
25652     function operation() {
25653         var annotation = t('operations.straighten.annotation');
25654         context.perform(action, annotation);
25655     }
25656
25657     operation.available = function() {
25658         var entity = context.entity(entityId);
25659         return selectedIDs.length === 1 &&
25660             entity.type === 'way' &&
25661             !entity.isClosed() &&
25662             _.uniq(entity.nodes).length > 2;
25663     };
25664
25665     operation.disabled = function() {
25666         var reason;
25667         if (context.hasHiddenConnections(entityId)) {
25668             reason = 'connected_to_hidden';
25669         }
25670         return action.disabled(context.graph()) || reason;
25671     };
25672
25673     operation.tooltip = function() {
25674         var disable = operation.disabled();
25675         return disable ?
25676             t('operations.straighten.' + disable) :
25677             t('operations.straighten.description');
25678     };
25679
25680     operation.id = 'straighten';
25681     operation.keys = [t('operations.straighten.key')];
25682     operation.title = t('operations.straighten.title');
25683
25684     return operation;
25685 };
25686 iD.Connection = function(useHttps) {
25687     if (typeof useHttps !== 'boolean') {
25688       useHttps = window.location.protocol === 'https:';
25689     }
25690
25691     var event = d3.dispatch('authenticating', 'authenticated', 'auth', 'loading', 'loaded'),
25692         protocol = useHttps ? 'https:' : 'http:',
25693         url = protocol + '//www.openstreetmap.org',
25694         connection = {},
25695         inflight = {},
25696         loadedTiles = {},
25697         tileZoom = 16,
25698         oauth = osmAuth({
25699             url: protocol + '//www.openstreetmap.org',
25700             oauth_consumer_key: '5A043yRSEugj4DJ5TljuapfnrflWDte8jTOcWLlT',
25701             oauth_secret: 'aB3jKq1TRsCOUrfOIZ6oQMEDmv2ptV76PA54NGLL',
25702             loading: authenticating,
25703             done: authenticated
25704         }),
25705         ndStr = 'nd',
25706         tagStr = 'tag',
25707         memberStr = 'member',
25708         nodeStr = 'node',
25709         wayStr = 'way',
25710         relationStr = 'relation',
25711         userDetails,
25712         off;
25713
25714
25715     connection.changesetURL = function(changesetId) {
25716         return url + '/changeset/' + changesetId;
25717     };
25718
25719     connection.changesetsURL = function(center, zoom) {
25720         var precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2));
25721         return url + '/history#map=' +
25722             Math.floor(zoom) + '/' +
25723             center[1].toFixed(precision) + '/' +
25724             center[0].toFixed(precision);
25725     };
25726
25727     connection.entityURL = function(entity) {
25728         return url + '/' + entity.type + '/' + entity.osmId();
25729     };
25730
25731     connection.userURL = function(username) {
25732         return url + '/user/' + username;
25733     };
25734
25735     connection.loadFromURL = function(url, callback) {
25736         function done(err, dom) {
25737             return callback(err, parse(dom));
25738         }
25739         return d3.xml(url).get(done);
25740     };
25741
25742     connection.loadEntity = function(id, callback) {
25743         var type = iD.Entity.id.type(id),
25744             osmID = iD.Entity.id.toOSM(id);
25745
25746         connection.loadFromURL(
25747             url + '/api/0.6/' + type + '/' + osmID + (type !== 'node' ? '/full' : ''),
25748             function(err, entities) {
25749                 if (callback) callback(err, {data: entities});
25750             });
25751     };
25752
25753     connection.loadEntityVersion = function(id, version, callback) {
25754         var type = iD.Entity.id.type(id),
25755             osmID = iD.Entity.id.toOSM(id);
25756
25757         connection.loadFromURL(
25758             url + '/api/0.6/' + type + '/' + osmID + '/' + version,
25759             function(err, entities) {
25760                 if (callback) callback(err, {data: entities});
25761             });
25762     };
25763
25764     connection.loadMultiple = function(ids, callback) {
25765         _.each(_.groupBy(_.uniq(ids), iD.Entity.id.type), function(v, k) {
25766             var type = k + 's',
25767                 osmIDs = _.map(v, iD.Entity.id.toOSM);
25768
25769             _.each(_.chunk(osmIDs, 150), function(arr) {
25770                 connection.loadFromURL(
25771                     url + '/api/0.6/' + type + '?' + type + '=' + arr.join(),
25772                     function(err, entities) {
25773                         if (callback) callback(err, {data: entities});
25774                     });
25775             });
25776         });
25777     };
25778
25779     function authenticating() {
25780         event.authenticating();
25781     }
25782
25783     function authenticated() {
25784         event.authenticated();
25785     }
25786
25787     function getLoc(attrs) {
25788         var lon = attrs.lon && attrs.lon.value,
25789             lat = attrs.lat && attrs.lat.value;
25790         return [parseFloat(lon), parseFloat(lat)];
25791     }
25792
25793     function getNodes(obj) {
25794         var elems = obj.getElementsByTagName(ndStr),
25795             nodes = new Array(elems.length);
25796         for (var i = 0, l = elems.length; i < l; i++) {
25797             nodes[i] = 'n' + elems[i].attributes.ref.value;
25798         }
25799         return nodes;
25800     }
25801
25802     function getTags(obj) {
25803         var elems = obj.getElementsByTagName(tagStr),
25804             tags = {};
25805         for (var i = 0, l = elems.length; i < l; i++) {
25806             var attrs = elems[i].attributes;
25807             tags[attrs.k.value] = attrs.v.value;
25808         }
25809         return tags;
25810     }
25811
25812     function getMembers(obj) {
25813         var elems = obj.getElementsByTagName(memberStr),
25814             members = new Array(elems.length);
25815         for (var i = 0, l = elems.length; i < l; i++) {
25816             var attrs = elems[i].attributes;
25817             members[i] = {
25818                 id: attrs.type.value[0] + attrs.ref.value,
25819                 type: attrs.type.value,
25820                 role: attrs.role.value
25821             };
25822         }
25823         return members;
25824     }
25825
25826     function getVisible(attrs) {
25827         return (!attrs.visible || attrs.visible.value !== 'false');
25828     }
25829
25830     var parsers = {
25831         node: function nodeData(obj) {
25832             var attrs = obj.attributes;
25833             return new iD.Node({
25834                 id: iD.Entity.id.fromOSM(nodeStr, attrs.id.value),
25835                 loc: getLoc(attrs),
25836                 version: attrs.version.value,
25837                 user: attrs.user && attrs.user.value,
25838                 tags: getTags(obj),
25839                 visible: getVisible(attrs)
25840             });
25841         },
25842
25843         way: function wayData(obj) {
25844             var attrs = obj.attributes;
25845             return new iD.Way({
25846                 id: iD.Entity.id.fromOSM(wayStr, attrs.id.value),
25847                 version: attrs.version.value,
25848                 user: attrs.user && attrs.user.value,
25849                 tags: getTags(obj),
25850                 nodes: getNodes(obj),
25851                 visible: getVisible(attrs)
25852             });
25853         },
25854
25855         relation: function relationData(obj) {
25856             var attrs = obj.attributes;
25857             return new iD.Relation({
25858                 id: iD.Entity.id.fromOSM(relationStr, attrs.id.value),
25859                 version: attrs.version.value,
25860                 user: attrs.user && attrs.user.value,
25861                 tags: getTags(obj),
25862                 members: getMembers(obj),
25863                 visible: getVisible(attrs)
25864             });
25865         }
25866     };
25867
25868     function parse(dom) {
25869         if (!dom || !dom.childNodes) return;
25870
25871         var root = dom.childNodes[0],
25872             children = root.childNodes,
25873             entities = [];
25874
25875         for (var i = 0, l = children.length; i < l; i++) {
25876             var child = children[i],
25877                 parser = parsers[child.nodeName];
25878             if (parser) {
25879                 entities.push(parser(child));
25880             }
25881         }
25882
25883         return entities;
25884     }
25885
25886     connection.authenticated = function() {
25887         return oauth.authenticated();
25888     };
25889
25890     // Generate Changeset XML. Returns a string.
25891     connection.changesetJXON = function(tags) {
25892         return {
25893             osm: {
25894                 changeset: {
25895                     tag: _.map(tags, function(value, key) {
25896                         return { '@k': key, '@v': value };
25897                     }),
25898                     '@version': 0.6,
25899                     '@generator': 'iD'
25900                 }
25901             }
25902         };
25903     };
25904
25905     // Generate [osmChange](http://wiki.openstreetmap.org/wiki/OsmChange)
25906     // XML. Returns a string.
25907     connection.osmChangeJXON = function(changeset_id, changes) {
25908         function nest(x, order) {
25909             var groups = {};
25910             for (var i = 0; i < x.length; i++) {
25911                 var tagName = Object.keys(x[i])[0];
25912                 if (!groups[tagName]) groups[tagName] = [];
25913                 groups[tagName].push(x[i][tagName]);
25914             }
25915             var ordered = {};
25916             order.forEach(function(o) {
25917                 if (groups[o]) ordered[o] = groups[o];
25918             });
25919             return ordered;
25920         }
25921
25922         function rep(entity) {
25923             return entity.asJXON(changeset_id);
25924         }
25925
25926         return {
25927             osmChange: {
25928                 '@version': 0.6,
25929                 '@generator': 'iD',
25930                 'create': nest(changes.created.map(rep), ['node', 'way', 'relation']),
25931                 'modify': nest(changes.modified.map(rep), ['node', 'way', 'relation']),
25932                 'delete': _.extend(nest(changes.deleted.map(rep), ['relation', 'way', 'node']), {'@if-unused': true})
25933             }
25934         };
25935     };
25936
25937     connection.changesetTags = function(comment, imageryUsed) {
25938         var detected = iD.detect(),
25939             tags = {
25940                 created_by: 'iD ' + iD.version,
25941                 imagery_used: imageryUsed.join(';').substr(0, 255),
25942                 host: (window.location.origin + window.location.pathname).substr(0, 255),
25943                 locale: detected.locale
25944             };
25945
25946         if (comment) {
25947             tags.comment = comment.substr(0, 255);
25948         }
25949
25950         return tags;
25951     };
25952
25953     connection.putChangeset = function(changes, comment, imageryUsed, callback) {
25954         oauth.xhr({
25955                 method: 'PUT',
25956                 path: '/api/0.6/changeset/create',
25957                 options: { header: { 'Content-Type': 'text/xml' } },
25958                 content: JXON.stringify(connection.changesetJXON(connection.changesetTags(comment, imageryUsed)))
25959             }, function(err, changeset_id) {
25960                 if (err) return callback(err);
25961                 oauth.xhr({
25962                     method: 'POST',
25963                     path: '/api/0.6/changeset/' + changeset_id + '/upload',
25964                     options: { header: { 'Content-Type': 'text/xml' } },
25965                     content: JXON.stringify(connection.osmChangeJXON(changeset_id, changes))
25966                 }, function(err) {
25967                     if (err) return callback(err);
25968                     // POST was successful, safe to call the callback.
25969                     // Still attempt to close changeset, but ignore response because #2667
25970                     // Add delay to allow for postgres replication #1646 #2678
25971                     window.setTimeout(function() { callback(null, changeset_id); }, 2500);
25972                     oauth.xhr({
25973                         method: 'PUT',
25974                         path: '/api/0.6/changeset/' + changeset_id + '/close'
25975                     }, d3.functor(true));
25976                 });
25977             });
25978     };
25979
25980     connection.userDetails = function(callback) {
25981         if (userDetails) {
25982             callback(undefined, userDetails);
25983             return;
25984         }
25985
25986         function done(err, user_details) {
25987             if (err) return callback(err);
25988
25989             var u = user_details.getElementsByTagName('user')[0],
25990                 img = u.getElementsByTagName('img'),
25991                 image_url = '';
25992
25993             if (img && img[0] && img[0].getAttribute('href')) {
25994                 image_url = img[0].getAttribute('href');
25995             }
25996
25997             userDetails = {
25998                 display_name: u.attributes.display_name.value,
25999                 image_url: image_url,
26000                 id: u.attributes.id.value
26001             };
26002
26003             callback(undefined, userDetails);
26004         }
26005
26006         oauth.xhr({ method: 'GET', path: '/api/0.6/user/details' }, done);
26007     };
26008
26009     connection.status = function(callback) {
26010         function done(capabilities) {
26011             var apiStatus = capabilities.getElementsByTagName('status');
26012             callback(undefined, apiStatus[0].getAttribute('api'));
26013         }
26014         d3.xml(url + '/api/capabilities').get()
26015             .on('load', done)
26016             .on('error', callback);
26017     };
26018
26019     function abortRequest(i) { i.abort(); }
26020
26021     connection.tileZoom = function(_) {
26022         if (!arguments.length) return tileZoom;
26023         tileZoom = _;
26024         return connection;
26025     };
26026
26027     connection.loadTiles = function(projection, dimensions, callback) {
26028
26029         if (off) return;
26030
26031         var s = projection.scale() * 2 * Math.PI,
26032             z = Math.max(Math.log(s) / Math.log(2) - 8, 0),
26033             ts = 256 * Math.pow(2, z - tileZoom),
26034             origin = [
26035                 s / 2 - projection.translate()[0],
26036                 s / 2 - projection.translate()[1]];
26037
26038         var tiles = d3.geo.tile()
26039             .scaleExtent([tileZoom, tileZoom])
26040             .scale(s)
26041             .size(dimensions)
26042             .translate(projection.translate())()
26043             .map(function(tile) {
26044                 var x = tile[0] * ts - origin[0],
26045                     y = tile[1] * ts - origin[1];
26046
26047                 return {
26048                     id: tile.toString(),
26049                     extent: iD.geo.Extent(
26050                         projection.invert([x, y + ts]),
26051                         projection.invert([x + ts, y]))
26052                 };
26053             });
26054
26055         function bboxUrl(tile) {
26056             return url + '/api/0.6/map?bbox=' + tile.extent.toParam();
26057         }
26058
26059         _.filter(inflight, function(v, i) {
26060             var wanted = _.find(tiles, function(tile) {
26061                 return i === tile.id;
26062             });
26063             if (!wanted) delete inflight[i];
26064             return !wanted;
26065         }).map(abortRequest);
26066
26067         tiles.forEach(function(tile) {
26068             var id = tile.id;
26069
26070             if (loadedTiles[id] || inflight[id]) return;
26071
26072             if (_.isEmpty(inflight)) {
26073                 event.loading();
26074             }
26075
26076             inflight[id] = connection.loadFromURL(bboxUrl(tile), function(err, parsed) {
26077                 loadedTiles[id] = true;
26078                 delete inflight[id];
26079
26080                 if (callback) callback(err, _.extend({data: parsed}, tile));
26081
26082                 if (_.isEmpty(inflight)) {
26083                     event.loaded();
26084                 }
26085             });
26086         });
26087     };
26088
26089     connection.switch = function(options) {
26090         url = options.url;
26091         oauth.options(_.extend({
26092             loading: authenticating,
26093             done: authenticated
26094         }, options));
26095         event.auth();
26096         connection.flush();
26097         return connection;
26098     };
26099
26100     connection.toggle = function(_) {
26101         off = !_;
26102         return connection;
26103     };
26104
26105     connection.flush = function() {
26106         userDetails = undefined;
26107         _.forEach(inflight, abortRequest);
26108         loadedTiles = {};
26109         inflight = {};
26110         return connection;
26111     };
26112
26113     connection.loadedTiles = function(_) {
26114         if (!arguments.length) return loadedTiles;
26115         loadedTiles = _;
26116         return connection;
26117     };
26118
26119     connection.logout = function() {
26120         userDetails = undefined;
26121         oauth.logout();
26122         event.auth();
26123         return connection;
26124     };
26125
26126     connection.authenticate = function(callback) {
26127         userDetails = undefined;
26128         function done(err, res) {
26129             event.auth();
26130             if (callback) callback(err, res);
26131         }
26132         return oauth.authenticate(done);
26133     };
26134
26135     return d3.rebind(connection, event, 'on');
26136 };
26137 /*
26138     iD.Difference represents the difference between two graphs.
26139     It knows how to calculate the set of entities that were
26140     created, modified, or deleted, and also contains the logic
26141     for recursively extending a difference to the complete set
26142     of entities that will require a redraw, taking into account
26143     child and parent relationships.
26144  */
26145 iD.Difference = function(base, head) {
26146     var changes = {}, length = 0;
26147
26148     function changed(h, b) {
26149         return h !== b && !_.isEqual(_.omit(h, 'v'), _.omit(b, 'v'));
26150     }
26151
26152     _.each(head.entities, function(h, id) {
26153         var b = base.entities[id];
26154         if (changed(h, b)) {
26155             changes[id] = {base: b, head: h};
26156             length++;
26157         }
26158     });
26159
26160     _.each(base.entities, function(b, id) {
26161         var h = head.entities[id];
26162         if (!changes[id] && changed(h, b)) {
26163             changes[id] = {base: b, head: h};
26164             length++;
26165         }
26166     });
26167
26168     function addParents(parents, result) {
26169         for (var i = 0; i < parents.length; i++) {
26170             var parent = parents[i];
26171
26172             if (parent.id in result)
26173                 continue;
26174
26175             result[parent.id] = parent;
26176             addParents(head.parentRelations(parent), result);
26177         }
26178     }
26179
26180     var difference = {};
26181
26182     difference.length = function() {
26183         return length;
26184     };
26185
26186     difference.changes = function() {
26187         return changes;
26188     };
26189
26190     difference.extantIDs = function() {
26191         var result = [];
26192         _.each(changes, function(change, id) {
26193             if (change.head) result.push(id);
26194         });
26195         return result;
26196     };
26197
26198     difference.modified = function() {
26199         var result = [];
26200         _.each(changes, function(change) {
26201             if (change.base && change.head) result.push(change.head);
26202         });
26203         return result;
26204     };
26205
26206     difference.created = function() {
26207         var result = [];
26208         _.each(changes, function(change) {
26209             if (!change.base && change.head) result.push(change.head);
26210         });
26211         return result;
26212     };
26213
26214     difference.deleted = function() {
26215         var result = [];
26216         _.each(changes, function(change) {
26217             if (change.base && !change.head) result.push(change.base);
26218         });
26219         return result;
26220     };
26221
26222     difference.summary = function() {
26223         var relevant = {};
26224
26225         function addEntity(entity, graph, changeType) {
26226             relevant[entity.id] = {
26227                 entity: entity,
26228                 graph: graph,
26229                 changeType: changeType
26230             };
26231         }
26232
26233         function addParents(entity) {
26234             var parents = head.parentWays(entity);
26235             for (var j = parents.length - 1; j >= 0; j--) {
26236                 var parent = parents[j];
26237                 if (!(parent.id in relevant)) addEntity(parent, head, 'modified');
26238             }
26239         }
26240
26241         _.each(changes, function(change) {
26242             if (change.head && change.head.geometry(head) !== 'vertex') {
26243                 addEntity(change.head, head, change.base ? 'modified' : 'created');
26244
26245             } else if (change.base && change.base.geometry(base) !== 'vertex') {
26246                 addEntity(change.base, base, 'deleted');
26247
26248             } else if (change.base && change.head) { // modified vertex
26249                 var moved    = !_.isEqual(change.base.loc,  change.head.loc),
26250                     retagged = !_.isEqual(change.base.tags, change.head.tags);
26251
26252                 if (moved) {
26253                     addParents(change.head);
26254                 }
26255
26256                 if (retagged || (moved && change.head.hasInterestingTags())) {
26257                     addEntity(change.head, head, 'modified');
26258                 }
26259
26260             } else if (change.head && change.head.hasInterestingTags()) { // created vertex
26261                 addEntity(change.head, head, 'created');
26262
26263             } else if (change.base && change.base.hasInterestingTags()) { // deleted vertex
26264                 addEntity(change.base, base, 'deleted');
26265             }
26266         });
26267
26268         return d3.values(relevant);
26269     };
26270
26271     difference.complete = function(extent) {
26272         var result = {}, id, change;
26273
26274         for (id in changes) {
26275             change = changes[id];
26276
26277             var h = change.head,
26278                 b = change.base,
26279                 entity = h || b;
26280
26281             if (extent &&
26282                 (!h || !h.intersects(extent, head)) &&
26283                 (!b || !b.intersects(extent, base)))
26284                 continue;
26285
26286             result[id] = h;
26287
26288             if (entity.type === 'way') {
26289                 var nh = h ? h.nodes : [],
26290                     nb = b ? b.nodes : [],
26291                     diff, i;
26292
26293                 diff = _.difference(nh, nb);
26294                 for (i = 0; i < diff.length; i++) {
26295                     result[diff[i]] = head.hasEntity(diff[i]);
26296                 }
26297
26298                 diff = _.difference(nb, nh);
26299                 for (i = 0; i < diff.length; i++) {
26300                     result[diff[i]] = head.hasEntity(diff[i]);
26301                 }
26302             }
26303
26304             addParents(head.parentWays(entity), result);
26305             addParents(head.parentRelations(entity), result);
26306         }
26307
26308         return result;
26309     };
26310
26311     return difference;
26312 };
26313 iD.Entity = function(attrs) {
26314     // For prototypal inheritance.
26315     if (this instanceof iD.Entity) return;
26316
26317     // Create the appropriate subtype.
26318     if (attrs && attrs.type) {
26319         return iD.Entity[attrs.type].apply(this, arguments);
26320     } else if (attrs && attrs.id) {
26321         return iD.Entity[iD.Entity.id.type(attrs.id)].apply(this, arguments);
26322     }
26323
26324     // Initialize a generic Entity (used only in tests).
26325     return (new iD.Entity()).initialize(arguments);
26326 };
26327
26328 iD.Entity.id = function(type) {
26329     return iD.Entity.id.fromOSM(type, iD.Entity.id.next[type]--);
26330 };
26331
26332 iD.Entity.id.next = {node: -1, way: -1, relation: -1};
26333
26334 iD.Entity.id.fromOSM = function(type, id) {
26335     return type[0] + id;
26336 };
26337
26338 iD.Entity.id.toOSM = function(id) {
26339     return id.slice(1);
26340 };
26341
26342 iD.Entity.id.type = function(id) {
26343     return {'n': 'node', 'w': 'way', 'r': 'relation'}[id[0]];
26344 };
26345
26346 // A function suitable for use as the second argument to d3.selection#data().
26347 iD.Entity.key = function(entity) {
26348     return entity.id + 'v' + (entity.v || 0);
26349 };
26350
26351 iD.Entity.prototype = {
26352     tags: {},
26353
26354     initialize: function(sources) {
26355         for (var i = 0; i < sources.length; ++i) {
26356             var source = sources[i];
26357             for (var prop in source) {
26358                 if (Object.prototype.hasOwnProperty.call(source, prop)) {
26359                     if (source[prop] === undefined) {
26360                         delete this[prop];
26361                     } else {
26362                         this[prop] = source[prop];
26363                     }
26364                 }
26365             }
26366         }
26367
26368         if (!this.id && this.type) {
26369             this.id = iD.Entity.id(this.type);
26370         }
26371         if (!this.hasOwnProperty('visible')) {
26372             this.visible = true;
26373         }
26374
26375         if (iD.debug) {
26376             Object.freeze(this);
26377             Object.freeze(this.tags);
26378
26379             if (this.loc) Object.freeze(this.loc);
26380             if (this.nodes) Object.freeze(this.nodes);
26381             if (this.members) Object.freeze(this.members);
26382         }
26383
26384         return this;
26385     },
26386
26387     copy: function() {
26388         // Returns an array so that we can support deep copying ways and relations.
26389         // The first array element will contain this.copy, followed by any descendants.
26390         return [iD.Entity(this, {id: undefined, user: undefined, version: undefined})];
26391     },
26392
26393     osmId: function() {
26394         return iD.Entity.id.toOSM(this.id);
26395     },
26396
26397     isNew: function() {
26398         return this.osmId() < 0;
26399     },
26400
26401     update: function(attrs) {
26402         return iD.Entity(this, attrs, {v: 1 + (this.v || 0)});
26403     },
26404
26405     mergeTags: function(tags) {
26406         var merged = _.clone(this.tags), changed = false;
26407         for (var k in tags) {
26408             var t1 = merged[k],
26409                 t2 = tags[k];
26410             if (!t1) {
26411                 changed = true;
26412                 merged[k] = t2;
26413             } else if (t1 !== t2) {
26414                 changed = true;
26415                 merged[k] = _.union(t1.split(/;\s*/), t2.split(/;\s*/)).join(';');
26416             }
26417         }
26418         return changed ? this.update({tags: merged}) : this;
26419     },
26420
26421     intersects: function(extent, resolver) {
26422         return this.extent(resolver).intersects(extent);
26423     },
26424
26425     isUsed: function(resolver) {
26426         return _.without(Object.keys(this.tags), 'area').length > 0 ||
26427             resolver.parentRelations(this).length > 0;
26428     },
26429
26430     hasInterestingTags: function() {
26431         return _.keys(this.tags).some(iD.interestingTag);
26432     },
26433
26434     isHighwayIntersection: function() {
26435         return false;
26436     },
26437
26438     deprecatedTags: function() {
26439         var tags = _.pairs(this.tags);
26440         var deprecated = {};
26441
26442         iD.data.deprecated.forEach(function(d) {
26443             var match = _.pairs(d.old)[0];
26444             tags.forEach(function(t) {
26445                 if (t[0] === match[0] &&
26446                     (t[1] === match[1] || match[1] === '*')) {
26447                     deprecated[t[0]] = t[1];
26448                 }
26449             });
26450         });
26451
26452         return deprecated;
26453     }
26454 };
26455 iD.Graph = function(other, mutable) {
26456     if (!(this instanceof iD.Graph)) return new iD.Graph(other, mutable);
26457
26458     if (other instanceof iD.Graph) {
26459         var base = other.base();
26460         this.entities = _.assign(Object.create(base.entities), other.entities);
26461         this._parentWays = _.assign(Object.create(base.parentWays), other._parentWays);
26462         this._parentRels = _.assign(Object.create(base.parentRels), other._parentRels);
26463
26464     } else {
26465         this.entities = Object.create({});
26466         this._parentWays = Object.create({});
26467         this._parentRels = Object.create({});
26468         this.rebase(other || [], [this]);
26469     }
26470
26471     this.transients = {};
26472     this._childNodes = {};
26473     this.frozen = !mutable;
26474 };
26475
26476 iD.Graph.prototype = {
26477     hasEntity: function(id) {
26478         return this.entities[id];
26479     },
26480
26481     entity: function(id) {
26482         var entity = this.entities[id];
26483         if (!entity) {
26484             throw new Error('entity ' + id + ' not found');
26485         }
26486         return entity;
26487     },
26488
26489     transient: function(entity, key, fn) {
26490         var id = entity.id,
26491             transients = this.transients[id] ||
26492             (this.transients[id] = {});
26493
26494         if (transients[key] !== undefined) {
26495             return transients[key];
26496         }
26497
26498         transients[key] = fn.call(entity);
26499
26500         return transients[key];
26501     },
26502
26503     parentWays: function(entity) {
26504         var parents = this._parentWays[entity.id],
26505             result = [];
26506
26507         if (parents) {
26508             for (var i = 0; i < parents.length; i++) {
26509                 result.push(this.entity(parents[i]));
26510             }
26511         }
26512         return result;
26513     },
26514
26515     isPoi: function(entity) {
26516         var parentWays = this._parentWays[entity.id];
26517         return !parentWays || parentWays.length === 0;
26518     },
26519
26520     isShared: function(entity) {
26521         var parentWays = this._parentWays[entity.id];
26522         return parentWays && parentWays.length > 1;
26523     },
26524
26525     parentRelations: function(entity) {
26526         var parents = this._parentRels[entity.id],
26527             result = [];
26528
26529         if (parents) {
26530             for (var i = 0; i < parents.length; i++) {
26531                 result.push(this.entity(parents[i]));
26532             }
26533         }
26534         return result;
26535     },
26536
26537     childNodes: function(entity) {
26538         if (this._childNodes[entity.id])
26539             return this._childNodes[entity.id];
26540
26541         var nodes = [];
26542         if (entity.nodes) {
26543             for (var i = 0; i < entity.nodes.length; i++) {
26544                 nodes[i] = this.entity(entity.nodes[i]);
26545             }
26546         }
26547
26548         if (iD.debug) Object.freeze(nodes);
26549
26550         this._childNodes[entity.id] = nodes;
26551         return this._childNodes[entity.id];
26552     },
26553
26554     base: function() {
26555         return {
26556             'entities': iD.util.getPrototypeOf(this.entities),
26557             'parentWays': iD.util.getPrototypeOf(this._parentWays),
26558             'parentRels': iD.util.getPrototypeOf(this._parentRels)
26559         };
26560     },
26561
26562     // Unlike other graph methods, rebase mutates in place. This is because it
26563     // is used only during the history operation that merges newly downloaded
26564     // data into each state. To external consumers, it should appear as if the
26565     // graph always contained the newly downloaded data.
26566     rebase: function(entities, stack, force) {
26567         var base = this.base(),
26568             i, j, k, id;
26569
26570         for (i = 0; i < entities.length; i++) {
26571             var entity = entities[i];
26572
26573             if (!entity.visible || (!force && base.entities[entity.id]))
26574                 continue;
26575
26576             // Merging data into the base graph
26577             base.entities[entity.id] = entity;
26578             this._updateCalculated(undefined, entity, base.parentWays, base.parentRels);
26579
26580             // Restore provisionally-deleted nodes that are discovered to have an extant parent
26581             if (entity.type === 'way') {
26582                 for (j = 0; j < entity.nodes.length; j++) {
26583                     id = entity.nodes[j];
26584                     for (k = 1; k < stack.length; k++) {
26585                         var ents = stack[k].entities;
26586                         if (ents.hasOwnProperty(id) && ents[id] === undefined) {
26587                             delete ents[id];
26588                         }
26589                     }
26590                 }
26591             }
26592         }
26593
26594         for (i = 0; i < stack.length; i++) {
26595             stack[i]._updateRebased();
26596         }
26597     },
26598
26599     _updateRebased: function() {
26600         var base = this.base(),
26601             i, k, child, id, keys;
26602
26603         keys = Object.keys(this._parentWays);
26604         for (i = 0; i < keys.length; i++) {
26605             child = keys[i];
26606             if (base.parentWays[child]) {
26607                 for (k = 0; k < base.parentWays[child].length; k++) {
26608                     id = base.parentWays[child][k];
26609                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentWays[child], id)) {
26610                         this._parentWays[child].push(id);
26611                     }
26612                 }
26613             }
26614         }
26615
26616         keys = Object.keys(this._parentRels);
26617         for (i = 0; i < keys.length; i++) {
26618             child = keys[i];
26619             if (base.parentRels[child]) {
26620                 for (k = 0; k < base.parentRels[child].length; k++) {
26621                     id = base.parentRels[child][k];
26622                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentRels[child], id)) {
26623                         this._parentRels[child].push(id);
26624                     }
26625                 }
26626             }
26627         }
26628
26629         this.transients = {};
26630
26631         // this._childNodes is not updated, under the assumption that
26632         // ways are always downloaded with their child nodes.
26633     },
26634
26635     // Updates calculated properties (parentWays, parentRels) for the specified change
26636     _updateCalculated: function(oldentity, entity, parentWays, parentRels) {
26637
26638         parentWays = parentWays || this._parentWays;
26639         parentRels = parentRels || this._parentRels;
26640
26641         var type = entity && entity.type || oldentity && oldentity.type,
26642             removed, added, ways, rels, i;
26643
26644
26645         if (type === 'way') {
26646
26647             // Update parentWays
26648             if (oldentity && entity) {
26649                 removed = _.difference(oldentity.nodes, entity.nodes);
26650                 added = _.difference(entity.nodes, oldentity.nodes);
26651             } else if (oldentity) {
26652                 removed = oldentity.nodes;
26653                 added = [];
26654             } else if (entity) {
26655                 removed = [];
26656                 added = entity.nodes;
26657             }
26658             for (i = 0; i < removed.length; i++) {
26659                 parentWays[removed[i]] = _.without(parentWays[removed[i]], oldentity.id);
26660             }
26661             for (i = 0; i < added.length; i++) {
26662                 ways = _.without(parentWays[added[i]], entity.id);
26663                 ways.push(entity.id);
26664                 parentWays[added[i]] = ways;
26665             }
26666
26667         } else if (type === 'relation') {
26668
26669             // Update parentRels
26670             if (oldentity && entity) {
26671                 removed = _.difference(oldentity.members, entity.members);
26672                 added = _.difference(entity.members, oldentity);
26673             } else if (oldentity) {
26674                 removed = oldentity.members;
26675                 added = [];
26676             } else if (entity) {
26677                 removed = [];
26678                 added = entity.members;
26679             }
26680             for (i = 0; i < removed.length; i++) {
26681                 parentRels[removed[i].id] = _.without(parentRels[removed[i].id], oldentity.id);
26682             }
26683             for (i = 0; i < added.length; i++) {
26684                 rels = _.without(parentRels[added[i].id], entity.id);
26685                 rels.push(entity.id);
26686                 parentRels[added[i].id] = rels;
26687             }
26688         }
26689     },
26690
26691     replace: function(entity) {
26692         if (this.entities[entity.id] === entity)
26693             return this;
26694
26695         return this.update(function() {
26696             this._updateCalculated(this.entities[entity.id], entity);
26697             this.entities[entity.id] = entity;
26698         });
26699     },
26700
26701     remove: function(entity) {
26702         return this.update(function() {
26703             this._updateCalculated(entity, undefined);
26704             this.entities[entity.id] = undefined;
26705         });
26706     },
26707
26708     revert: function(id) {
26709         var baseEntity = this.base().entities[id],
26710             headEntity = this.entities[id];
26711
26712         if (headEntity === baseEntity)
26713             return this;
26714
26715         return this.update(function() {
26716             this._updateCalculated(headEntity, baseEntity);
26717             delete this.entities[id];
26718         });
26719     },
26720
26721     update: function() {
26722         var graph = this.frozen ? iD.Graph(this, true) : this;
26723
26724         for (var i = 0; i < arguments.length; i++) {
26725             arguments[i].call(graph, graph);
26726         }
26727
26728         if (this.frozen) graph.frozen = true;
26729
26730         return graph;
26731     },
26732
26733     // Obliterates any existing entities
26734     load: function(entities) {
26735         var base = this.base();
26736         this.entities = Object.create(base.entities);
26737
26738         for (var i in entities) {
26739             this.entities[i] = entities[i];
26740             this._updateCalculated(base.entities[i], this.entities[i]);
26741         }
26742
26743         return this;
26744     }
26745 };
26746 iD.History = function(context) {
26747     var stack, index, tree,
26748         imageryUsed = ['Bing'],
26749         dispatch = d3.dispatch('change', 'undone', 'redone'),
26750         lock = iD.util.SessionMutex('lock');
26751
26752     function perform(actions) {
26753         actions = Array.prototype.slice.call(actions);
26754
26755         var annotation;
26756
26757         if (!_.isFunction(_.last(actions))) {
26758             annotation = actions.pop();
26759         }
26760
26761         var graph = stack[index].graph;
26762         for (var i = 0; i < actions.length; i++) {
26763             graph = actions[i](graph);
26764         }
26765
26766         return {
26767             graph: graph,
26768             annotation: annotation,
26769             imageryUsed: imageryUsed
26770         };
26771     }
26772
26773     function change(previous) {
26774         var difference = iD.Difference(previous, history.graph());
26775         dispatch.change(difference);
26776         return difference;
26777     }
26778
26779     // iD uses namespaced keys so multiple installations do not conflict
26780     function getKey(n) {
26781         return 'iD_' + window.location.origin + '_' + n;
26782     }
26783
26784     var history = {
26785         graph: function() {
26786             return stack[index].graph;
26787         },
26788
26789         base: function() {
26790             return stack[0].graph;
26791         },
26792
26793         merge: function(entities, extent) {
26794             stack[0].graph.rebase(entities, _.pluck(stack, 'graph'), false);
26795             tree.rebase(entities, false);
26796
26797             dispatch.change(undefined, extent);
26798         },
26799
26800         perform: function() {
26801             var previous = stack[index].graph;
26802
26803             stack = stack.slice(0, index + 1);
26804             stack.push(perform(arguments));
26805             index++;
26806
26807             return change(previous);
26808         },
26809
26810         replace: function() {
26811             var previous = stack[index].graph;
26812
26813             // assert(index == stack.length - 1)
26814             stack[index] = perform(arguments);
26815
26816             return change(previous);
26817         },
26818
26819         pop: function() {
26820             var previous = stack[index].graph;
26821
26822             if (index > 0) {
26823                 index--;
26824                 stack.pop();
26825                 return change(previous);
26826             }
26827         },
26828
26829         // Same as calling pop and then perform
26830         overwrite: function() {
26831             var previous = stack[index].graph;
26832
26833             if (index > 0) {
26834                 index--;
26835                 stack.pop();
26836             }
26837             stack = stack.slice(0, index + 1);
26838             stack.push(perform(arguments));
26839             index++;
26840
26841             return change(previous);
26842         },
26843
26844         undo: function() {
26845             var previous = stack[index].graph;
26846
26847             // Pop to the next annotated state.
26848             while (index > 0) {
26849                 index--;
26850                 if (stack[index].annotation) break;
26851             }
26852
26853             dispatch.undone();
26854             return change(previous);
26855         },
26856
26857         redo: function() {
26858             var previous = stack[index].graph;
26859
26860             while (index < stack.length - 1) {
26861                 index++;
26862                 if (stack[index].annotation) break;
26863             }
26864
26865             dispatch.redone();
26866             return change(previous);
26867         },
26868
26869         undoAnnotation: function() {
26870             var i = index;
26871             while (i >= 0) {
26872                 if (stack[i].annotation) return stack[i].annotation;
26873                 i--;
26874             }
26875         },
26876
26877         redoAnnotation: function() {
26878             var i = index + 1;
26879             while (i <= stack.length - 1) {
26880                 if (stack[i].annotation) return stack[i].annotation;
26881                 i++;
26882             }
26883         },
26884
26885         intersects: function(extent) {
26886             return tree.intersects(extent, stack[index].graph);
26887         },
26888
26889         difference: function() {
26890             var base = stack[0].graph,
26891                 head = stack[index].graph;
26892             return iD.Difference(base, head);
26893         },
26894
26895         changes: function(action) {
26896             var base = stack[0].graph,
26897                 head = stack[index].graph;
26898
26899             if (action) {
26900                 head = action(head);
26901             }
26902
26903             var difference = iD.Difference(base, head);
26904
26905             return {
26906                 modified: difference.modified(),
26907                 created: difference.created(),
26908                 deleted: difference.deleted()
26909             };
26910         },
26911
26912         validate: function(changes) {
26913             return _(iD.validations)
26914                 .map(function(fn) { return fn()(changes, stack[index].graph); })
26915                 .flatten()
26916                 .value();
26917         },
26918
26919         hasChanges: function() {
26920             return this.difference().length() > 0;
26921         },
26922
26923         imageryUsed: function(sources) {
26924             if (sources) {
26925                 imageryUsed = sources;
26926                 return history;
26927             } else {
26928                 return _(stack.slice(1, index + 1))
26929                     .pluck('imageryUsed')
26930                     .flatten()
26931                     .unique()
26932                     .without(undefined, 'Custom')
26933                     .value();
26934             }
26935         },
26936
26937         reset: function() {
26938             stack = [{graph: iD.Graph()}];
26939             index = 0;
26940             tree = iD.Tree(stack[0].graph);
26941             dispatch.change();
26942             return history;
26943         },
26944
26945         toJSON: function() {
26946             if (!this.hasChanges()) return;
26947
26948             var allEntities = {},
26949                 baseEntities = {},
26950                 base = stack[0];
26951
26952             var s = stack.map(function(i) {
26953                 var modified = [], deleted = [];
26954
26955                 _.forEach(i.graph.entities, function(entity, id) {
26956                     if (entity) {
26957                         var key = iD.Entity.key(entity);
26958                         allEntities[key] = entity;
26959                         modified.push(key);
26960                     } else {
26961                         deleted.push(id);
26962                     }
26963
26964                     // make sure that the originals of changed or deleted entities get merged
26965                     // into the base of the stack after restoring the data from JSON.
26966                     if (id in base.graph.entities) {
26967                         baseEntities[id] = base.graph.entities[id];
26968                     }
26969                     // get originals of parent entities too
26970                     _.forEach(base.graph._parentWays[id], function(parentId) {
26971                         if (parentId in base.graph.entities) {
26972                             baseEntities[parentId] = base.graph.entities[parentId];
26973                         }
26974                     });
26975                 });
26976
26977                 var x = {};
26978
26979                 if (modified.length) x.modified = modified;
26980                 if (deleted.length) x.deleted = deleted;
26981                 if (i.imageryUsed) x.imageryUsed = i.imageryUsed;
26982                 if (i.annotation) x.annotation = i.annotation;
26983
26984                 return x;
26985             });
26986
26987             return JSON.stringify({
26988                 version: 3,
26989                 entities: _.values(allEntities),
26990                 baseEntities: _.values(baseEntities),
26991                 stack: s,
26992                 nextIDs: iD.Entity.id.next,
26993                 index: index
26994             });
26995         },
26996
26997         fromJSON: function(json, loadChildNodes) {
26998             var h = JSON.parse(json);
26999
27000             iD.Entity.id.next = h.nextIDs;
27001             index = h.index;
27002
27003             if (h.version === 2 || h.version === 3) {
27004                 var allEntities = {};
27005
27006                 h.entities.forEach(function(entity) {
27007                     allEntities[iD.Entity.key(entity)] = iD.Entity(entity);
27008                 });
27009
27010                 if (h.version === 3) {
27011                     // This merges originals for changed entities into the base of
27012                     // the stack even if the current stack doesn't have them (for
27013                     // example when iD has been restarted in a different region)
27014                     var baseEntities = h.baseEntities.map(function(entity) {
27015                         return iD.Entity(entity);
27016                     });
27017                     stack[0].graph.rebase(baseEntities, _.pluck(stack, 'graph'), true);
27018                     tree.rebase(baseEntities, true);
27019
27020                     // When we restore a modified way, we also need to fetch any missing
27021                     // childnodes that would normally have been downloaded with it.. #2142
27022                     if (loadChildNodes) {
27023                         var missing =  _(baseEntities)
27024                                 .filter('type', 'way')
27025                                 .pluck('nodes')
27026                                 .flatten()
27027                                 .uniq()
27028                                 .reject(function(n) { return stack[0].graph.hasEntity(n); })
27029                                 .value();
27030
27031                         if (!_.isEmpty(missing)) {
27032                             var childNodesLoaded = function(err, result) {
27033                                 if (err) return;
27034
27035                                 var visible = _.groupBy(result.data, 'visible');
27036                                 if (!_.isEmpty(visible.true)) {
27037                                     stack[0].graph.rebase(visible.true, _.pluck(stack, 'graph'), false);
27038                                     tree.rebase(visible.true, false);
27039                                 }
27040
27041                                 // fetch older versions of nodes that were deleted..
27042                                 _.each(visible.false, function(entity) {
27043                                     context.connection()
27044                                         .loadEntityVersion(entity.id, +entity.version - 1, childNodesLoaded);
27045                                 });
27046                             };
27047
27048                             context.connection().loadMultiple(missing, childNodesLoaded);
27049                         }
27050                     }
27051                 }
27052
27053                 stack = h.stack.map(function(d) {
27054                     var entities = {}, entity;
27055
27056                     if (d.modified) {
27057                         d.modified.forEach(function(key) {
27058                             entity = allEntities[key];
27059                             entities[entity.id] = entity;
27060                         });
27061                     }
27062
27063                     if (d.deleted) {
27064                         d.deleted.forEach(function(id) {
27065                             entities[id] = undefined;
27066                         });
27067                     }
27068
27069                     return {
27070                         graph: iD.Graph(stack[0].graph).load(entities),
27071                         annotation: d.annotation,
27072                         imageryUsed: d.imageryUsed
27073                     };
27074                 });
27075             } else { // original version
27076                 stack = h.stack.map(function(d) {
27077                     var entities = {};
27078
27079                     for (var i in d.entities) {
27080                         var entity = d.entities[i];
27081                         entities[i] = entity === 'undefined' ? undefined : iD.Entity(entity);
27082                     }
27083
27084                     d.graph = iD.Graph(stack[0].graph).load(entities);
27085                     return d;
27086                 });
27087             }
27088
27089             dispatch.change();
27090
27091             return history;
27092         },
27093
27094         save: function() {
27095             if (lock.locked()) context.storage(getKey('saved_history'), history.toJSON() || null);
27096             return history;
27097         },
27098
27099         clearSaved: function() {
27100             if (lock.locked()) context.storage(getKey('saved_history'), null);
27101             return history;
27102         },
27103
27104         lock: function() {
27105             return lock.lock();
27106         },
27107
27108         unlock: function() {
27109             lock.unlock();
27110         },
27111
27112         // is iD not open in another window and it detects that
27113         // there's a history stored in localStorage that's recoverable?
27114         restorableChanges: function() {
27115             return lock.locked() && !!context.storage(getKey('saved_history'));
27116         },
27117
27118         // load history from a version stored in localStorage
27119         restore: function() {
27120             if (!lock.locked()) return;
27121
27122             var json = context.storage(getKey('saved_history'));
27123             if (json) history.fromJSON(json, true);
27124         },
27125
27126         _getKey: getKey
27127
27128     };
27129
27130     history.reset();
27131
27132     return d3.rebind(history, dispatch, 'on');
27133 };
27134 iD.Node = iD.Entity.node = function iD_Node() {
27135     if (!(this instanceof iD_Node)) {
27136         return (new iD_Node()).initialize(arguments);
27137     } else if (arguments.length) {
27138         this.initialize(arguments);
27139     }
27140 };
27141
27142 iD.Node.prototype = Object.create(iD.Entity.prototype);
27143
27144 _.extend(iD.Node.prototype, {
27145     type: 'node',
27146
27147     extent: function() {
27148         return new iD.geo.Extent(this.loc);
27149     },
27150
27151     geometry: function(graph) {
27152         return graph.transient(this, 'geometry', function() {
27153             return graph.isPoi(this) ? 'point' : 'vertex';
27154         });
27155     },
27156
27157     move: function(loc) {
27158         return this.update({loc: loc});
27159     },
27160
27161     isIntersection: function(resolver) {
27162         return resolver.transient(this, 'isIntersection', function() {
27163             return resolver.parentWays(this).filter(function(parent) {
27164                 return (parent.tags.highway ||
27165                     parent.tags.waterway ||
27166                     parent.tags.railway ||
27167                     parent.tags.aeroway) &&
27168                     parent.geometry(resolver) === 'line';
27169             }).length > 1;
27170         });
27171     },
27172
27173     isHighwayIntersection: function(resolver) {
27174         return resolver.transient(this, 'isHighwayIntersection', function() {
27175             return resolver.parentWays(this).filter(function(parent) {
27176                 return parent.tags.highway && parent.geometry(resolver) === 'line';
27177             }).length > 1;
27178         });
27179     },
27180
27181     asJXON: function(changeset_id) {
27182         var r = {
27183             node: {
27184                 '@id': this.osmId(),
27185                 '@lon': this.loc[0],
27186                 '@lat': this.loc[1],
27187                 '@version': (this.version || 0),
27188                 tag: _.map(this.tags, function(v, k) {
27189                     return { keyAttributes: { k: k, v: v } };
27190                 })
27191             }
27192         };
27193         if (changeset_id) r.node['@changeset'] = changeset_id;
27194         return r;
27195     },
27196
27197     asGeoJSON: function() {
27198         return {
27199             type: 'Point',
27200             coordinates: this.loc
27201         };
27202     }
27203 });
27204 iD.Relation = iD.Entity.relation = function iD_Relation() {
27205     if (!(this instanceof iD_Relation)) {
27206         return (new iD_Relation()).initialize(arguments);
27207     } else if (arguments.length) {
27208         this.initialize(arguments);
27209     }
27210 };
27211
27212 iD.Relation.prototype = Object.create(iD.Entity.prototype);
27213
27214 iD.Relation.creationOrder = function(a, b) {
27215     var aId = parseInt(iD.Entity.id.toOSM(a.id), 10);
27216     var bId = parseInt(iD.Entity.id.toOSM(b.id), 10);
27217
27218     if (aId < 0 || bId < 0) return aId - bId;
27219     return bId - aId;
27220 };
27221
27222 _.extend(iD.Relation.prototype, {
27223     type: 'relation',
27224     members: [],
27225
27226     copy: function(deep, resolver, replacements) {
27227         var copy = iD.Entity.prototype.copy.call(this);
27228         if (!deep || !resolver || !this.isComplete(resolver)) {
27229             return copy;
27230         }
27231
27232         var members = [],
27233             i, oldmember, oldid, newid, children;
27234
27235         replacements = replacements || {};
27236         replacements[this.id] = copy[0].id;
27237
27238         for (i = 0; i < this.members.length; i++) {
27239             oldmember = this.members[i];
27240             oldid = oldmember.id;
27241             newid = replacements[oldid];
27242             if (!newid) {
27243                 children = resolver.entity(oldid).copy(true, resolver, replacements);
27244                 newid = replacements[oldid] = children[0].id;
27245                 copy = copy.concat(children);
27246             }
27247             members.push({id: newid, type: oldmember.type, role: oldmember.role});
27248         }
27249
27250         copy[0] = copy[0].update({members: members});
27251         return copy;
27252     },
27253
27254     extent: function(resolver, memo) {
27255         return resolver.transient(this, 'extent', function() {
27256             if (memo && memo[this.id]) return iD.geo.Extent();
27257             memo = memo || {};
27258             memo[this.id] = true;
27259
27260             var extent = iD.geo.Extent();
27261             for (var i = 0; i < this.members.length; i++) {
27262                 var member = resolver.hasEntity(this.members[i].id);
27263                 if (member) {
27264                     extent._extend(member.extent(resolver, memo));
27265                 }
27266             }
27267             return extent;
27268         });
27269     },
27270
27271     geometry: function(graph) {
27272         return graph.transient(this, 'geometry', function() {
27273             return this.isMultipolygon() ? 'area' : 'relation';
27274         });
27275     },
27276
27277     isDegenerate: function() {
27278         return this.members.length === 0;
27279     },
27280
27281     // Return an array of members, each extended with an 'index' property whose value
27282     // is the member index.
27283     indexedMembers: function() {
27284         var result = new Array(this.members.length);
27285         for (var i = 0; i < this.members.length; i++) {
27286             result[i] = _.extend({}, this.members[i], {index: i});
27287         }
27288         return result;
27289     },
27290
27291     // Return the first member with the given role. A copy of the member object
27292     // is returned, extended with an 'index' property whose value is the member index.
27293     memberByRole: function(role) {
27294         for (var i = 0; i < this.members.length; i++) {
27295             if (this.members[i].role === role) {
27296                 return _.extend({}, this.members[i], {index: i});
27297             }
27298         }
27299     },
27300
27301     // Return the first member with the given id. A copy of the member object
27302     // is returned, extended with an 'index' property whose value is the member index.
27303     memberById: function(id) {
27304         for (var i = 0; i < this.members.length; i++) {
27305             if (this.members[i].id === id) {
27306                 return _.extend({}, this.members[i], {index: i});
27307             }
27308         }
27309     },
27310
27311     // Return the first member with the given id and role. A copy of the member object
27312     // is returned, extended with an 'index' property whose value is the member index.
27313     memberByIdAndRole: function(id, role) {
27314         for (var i = 0; i < this.members.length; i++) {
27315             if (this.members[i].id === id && this.members[i].role === role) {
27316                 return _.extend({}, this.members[i], {index: i});
27317             }
27318         }
27319     },
27320
27321     addMember: function(member, index) {
27322         var members = this.members.slice();
27323         members.splice(index === undefined ? members.length : index, 0, member);
27324         return this.update({members: members});
27325     },
27326
27327     updateMember: function(member, index) {
27328         var members = this.members.slice();
27329         members.splice(index, 1, _.extend({}, members[index], member));
27330         return this.update({members: members});
27331     },
27332
27333     removeMember: function(index) {
27334         var members = this.members.slice();
27335         members.splice(index, 1);
27336         return this.update({members: members});
27337     },
27338
27339     removeMembersWithID: function(id) {
27340         var members = _.reject(this.members, function(m) { return m.id === id; });
27341         return this.update({members: members});
27342     },
27343
27344     // Wherever a member appears with id `needle.id`, replace it with a member
27345     // with id `replacement.id`, type `replacement.type`, and the original role,
27346     // unless a member already exists with that id and role. Return an updated
27347     // relation.
27348     replaceMember: function(needle, replacement) {
27349         if (!this.memberById(needle.id))
27350             return this;
27351
27352         var members = [];
27353
27354         for (var i = 0; i < this.members.length; i++) {
27355             var member = this.members[i];
27356             if (member.id !== needle.id) {
27357                 members.push(member);
27358             } else if (!this.memberByIdAndRole(replacement.id, member.role)) {
27359                 members.push({id: replacement.id, type: replacement.type, role: member.role});
27360             }
27361         }
27362
27363         return this.update({members: members});
27364     },
27365
27366     asJXON: function(changeset_id) {
27367         var r = {
27368             relation: {
27369                 '@id': this.osmId(),
27370                 '@version': this.version || 0,
27371                 member: _.map(this.members, function(member) {
27372                     return { keyAttributes: { type: member.type, role: member.role, ref: iD.Entity.id.toOSM(member.id) } };
27373                 }),
27374                 tag: _.map(this.tags, function(v, k) {
27375                     return { keyAttributes: { k: k, v: v } };
27376                 })
27377             }
27378         };
27379         if (changeset_id) r.relation['@changeset'] = changeset_id;
27380         return r;
27381     },
27382
27383     asGeoJSON: function(resolver) {
27384         return resolver.transient(this, 'GeoJSON', function () {
27385             if (this.isMultipolygon()) {
27386                 return {
27387                     type: 'MultiPolygon',
27388                     coordinates: this.multipolygon(resolver)
27389                 };
27390             } else {
27391                 return {
27392                     type: 'FeatureCollection',
27393                     properties: this.tags,
27394                     features: this.members.map(function (member) {
27395                         return _.extend({role: member.role}, resolver.entity(member.id).asGeoJSON(resolver));
27396                     })
27397                 };
27398             }
27399         });
27400     },
27401
27402     area: function(resolver) {
27403         return resolver.transient(this, 'area', function() {
27404             return d3.geo.area(this.asGeoJSON(resolver));
27405         });
27406     },
27407
27408     isMultipolygon: function() {
27409         return this.tags.type === 'multipolygon';
27410     },
27411
27412     isComplete: function(resolver) {
27413         for (var i = 0; i < this.members.length; i++) {
27414             if (!resolver.hasEntity(this.members[i].id)) {
27415                 return false;
27416             }
27417         }
27418         return true;
27419     },
27420
27421     isRestriction: function() {
27422         return !!(this.tags.type && this.tags.type.match(/^restriction:?/));
27423     },
27424
27425     // Returns an array [A0, ... An], each Ai being an array of node arrays [Nds0, ... Ndsm],
27426     // where Nds0 is an outer ring and subsequent Ndsi's (if any i > 0) being inner rings.
27427     //
27428     // This corresponds to the structure needed for rendering a multipolygon path using a
27429     // `evenodd` fill rule, as well as the structure of a GeoJSON MultiPolygon geometry.
27430     //
27431     // In the case of invalid geometries, this function will still return a result which
27432     // includes the nodes of all way members, but some Nds may be unclosed and some inner
27433     // rings not matched with the intended outer ring.
27434     //
27435     multipolygon: function(resolver) {
27436         var outers = this.members.filter(function(m) { return 'outer' === (m.role || 'outer'); }),
27437             inners = this.members.filter(function(m) { return 'inner' === m.role; });
27438
27439         outers = iD.geo.joinWays(outers, resolver);
27440         inners = iD.geo.joinWays(inners, resolver);
27441
27442         outers = outers.map(function(outer) { return _.pluck(outer.nodes, 'loc'); });
27443         inners = inners.map(function(inner) { return _.pluck(inner.nodes, 'loc'); });
27444
27445         var result = outers.map(function(o) {
27446             // Heuristic for detecting counterclockwise winding order. Assumes
27447             // that OpenStreetMap polygons are not hemisphere-spanning.
27448             return [d3.geo.area({type: 'Polygon', coordinates: [o]}) > 2 * Math.PI ? o.reverse() : o];
27449         });
27450
27451         function findOuter(inner) {
27452             var o, outer;
27453
27454             for (o = 0; o < outers.length; o++) {
27455                 outer = outers[o];
27456                 if (iD.geo.polygonContainsPolygon(outer, inner))
27457                     return o;
27458             }
27459
27460             for (o = 0; o < outers.length; o++) {
27461                 outer = outers[o];
27462                 if (iD.geo.polygonIntersectsPolygon(outer, inner))
27463                     return o;
27464             }
27465         }
27466
27467         for (var i = 0; i < inners.length; i++) {
27468             var inner = inners[i];
27469
27470             if (d3.geo.area({type: 'Polygon', coordinates: [inner]}) < 2 * Math.PI) {
27471                 inner = inner.reverse();
27472             }
27473
27474             var o = findOuter(inners[i]);
27475             if (o !== undefined)
27476                 result[o].push(inners[i]);
27477             else
27478                 result.push([inners[i]]); // Invalid geometry
27479         }
27480
27481         return result;
27482     }
27483 });
27484 iD.oneWayTags = {
27485     'aerialway': {
27486         'chair_lift': true,
27487         'mixed_lift': true,
27488         't-bar': true,
27489         'j-bar': true,
27490         'platter': true,
27491         'rope_tow': true,
27492         'magic_carpet': true,
27493         'yes': true
27494     },
27495     'highway': {
27496         'motorway': true,
27497         'motorway_link': true
27498     },
27499     'junction': {
27500         'roundabout': true
27501     },
27502     'man_made': {
27503         'piste:halfpipe': true
27504     },
27505     'piste:type': {
27506         'downhill': true,
27507         'sled': true,
27508         'yes': true
27509     },
27510     'waterway': {
27511         'river': true,
27512         'stream': true
27513     }
27514 };
27515
27516 iD.interestingTag = function (key) {
27517     return key !== 'attribution' &&
27518         key !== 'created_by' &&
27519         key !== 'source' &&
27520         key !== 'odbl' &&
27521         key.indexOf('tiger:') !== 0;
27522
27523 };
27524 iD.Tree = function(head) {
27525     var rtree = rbush(),
27526         rectangles = {};
27527
27528     function extentRectangle(extent) {
27529         return [
27530             extent[0][0],
27531             extent[0][1],
27532             extent[1][0],
27533             extent[1][1]
27534         ];
27535     }
27536
27537     function entityRectangle(entity) {
27538         var rect = extentRectangle(entity.extent(head));
27539         rect.id = entity.id;
27540         rectangles[entity.id] = rect;
27541         return rect;
27542     }
27543
27544     function updateParents(entity, insertions, memo) {
27545         head.parentWays(entity).forEach(function(parent) {
27546             if (rectangles[parent.id]) {
27547                 rtree.remove(rectangles[parent.id]);
27548                 insertions[parent.id] = parent;
27549             }
27550         });
27551
27552         head.parentRelations(entity).forEach(function(parent) {
27553             if (memo[entity.id]) return;
27554             memo[entity.id] = true;
27555             if (rectangles[parent.id]) {
27556                 rtree.remove(rectangles[parent.id]);
27557                 insertions[parent.id] = parent;
27558             }
27559             updateParents(parent, insertions, memo);
27560         });
27561     }
27562
27563     var tree = {};
27564
27565     tree.rebase = function(entities, force) {
27566         var insertions = {};
27567
27568         for (var i = 0; i < entities.length; i++) {
27569             var entity = entities[i];
27570
27571             if (!entity.visible)
27572                 continue;
27573
27574             if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) {
27575                 if (!force) {
27576                     continue;
27577                 } else if (rectangles[entity.id]) {
27578                     rtree.remove(rectangles[entity.id]);
27579                 }
27580             }
27581
27582             insertions[entity.id] = entity;
27583             updateParents(entity, insertions, {});
27584         }
27585
27586         rtree.load(_.map(insertions, entityRectangle));
27587
27588         return tree;
27589     };
27590
27591     tree.intersects = function(extent, graph) {
27592         if (graph !== head) {
27593             var diff = iD.Difference(head, graph),
27594                 insertions = {};
27595
27596             head = graph;
27597
27598             diff.deleted().forEach(function(entity) {
27599                 rtree.remove(rectangles[entity.id]);
27600                 delete rectangles[entity.id];
27601             });
27602
27603             diff.modified().forEach(function(entity) {
27604                 rtree.remove(rectangles[entity.id]);
27605                 insertions[entity.id] = entity;
27606                 updateParents(entity, insertions, {});
27607             });
27608
27609             diff.created().forEach(function(entity) {
27610                 insertions[entity.id] = entity;
27611             });
27612
27613             rtree.load(_.map(insertions, entityRectangle));
27614         }
27615
27616         return rtree.search(extentRectangle(extent)).map(function(rect) {
27617             return head.entity(rect.id);
27618         });
27619     };
27620
27621     return tree;
27622 };
27623 iD.Way = iD.Entity.way = function iD_Way() {
27624     if (!(this instanceof iD_Way)) {
27625         return (new iD_Way()).initialize(arguments);
27626     } else if (arguments.length) {
27627         this.initialize(arguments);
27628     }
27629 };
27630
27631 iD.Way.prototype = Object.create(iD.Entity.prototype);
27632
27633 _.extend(iD.Way.prototype, {
27634     type: 'way',
27635     nodes: [],
27636
27637     copy: function(deep, resolver) {
27638         var copy = iD.Entity.prototype.copy.call(this);
27639
27640         if (!deep || !resolver) {
27641             return copy;
27642         }
27643
27644         var nodes = [],
27645             replacements = {},
27646             i, oldid, newid, child;
27647
27648         for (i = 0; i < this.nodes.length; i++) {
27649             oldid = this.nodes[i];
27650             newid = replacements[oldid];
27651             if (!newid) {
27652                 child = resolver.entity(oldid).copy();
27653                 newid = replacements[oldid] = child[0].id;
27654                 copy = copy.concat(child);
27655             }
27656             nodes.push(newid);
27657         }
27658
27659         copy[0] = copy[0].update({nodes: nodes});
27660         return copy;
27661     },
27662
27663     extent: function(resolver) {
27664         return resolver.transient(this, 'extent', function() {
27665             var extent = iD.geo.Extent();
27666             for (var i = 0; i < this.nodes.length; i++) {
27667                 var node = resolver.hasEntity(this.nodes[i]);
27668                 if (node) {
27669                     extent._extend(node.extent());
27670                 }
27671             }
27672             return extent;
27673         });
27674     },
27675
27676     first: function() {
27677         return this.nodes[0];
27678     },
27679
27680     last: function() {
27681         return this.nodes[this.nodes.length - 1];
27682     },
27683
27684     contains: function(node) {
27685         return this.nodes.indexOf(node) >= 0;
27686     },
27687
27688     affix: function(node) {
27689         if (this.nodes[0] === node) return 'prefix';
27690         if (this.nodes[this.nodes.length - 1] === node) return 'suffix';
27691     },
27692
27693     layer: function() {
27694         // explicit layer tag, clamp between -10, 10..
27695         if (this.tags.layer !== undefined) {
27696             return Math.max(-10, Math.min(+(this.tags.layer), 10));
27697         }
27698
27699         // implied layer tag..
27700         if (this.tags.location === 'overground') return 1;
27701         if (this.tags.location === 'underground') return -1;
27702         if (this.tags.location === 'underwater') return -10;
27703
27704         if (this.tags.power === 'line') return 10;
27705         if (this.tags.power === 'minor_line') return 10;
27706         if (this.tags.aerialway) return 10;
27707         if (this.tags.bridge) return 1;
27708         if (this.tags.cutting) return -1;
27709         if (this.tags.tunnel) return -1;
27710         if (this.tags.waterway) return -1;
27711         if (this.tags.man_made === 'pipeline') return -10;
27712         if (this.tags.boundary) return -10;
27713         return 0;
27714     },
27715
27716     isOneWay: function() {
27717         // explicit oneway tag..
27718         if (['yes', '1', '-1'].indexOf(this.tags.oneway) !== -1) { return true; }
27719         if (['no', '0'].indexOf(this.tags.oneway) !== -1) { return false; }
27720
27721         // implied oneway tag..
27722         for (var key in this.tags) {
27723             if (key in iD.oneWayTags && (this.tags[key] in iD.oneWayTags[key]))
27724                 return true;
27725         }
27726         return false;
27727     },
27728
27729     isClosed: function() {
27730         return this.nodes.length > 0 && this.first() === this.last();
27731     },
27732
27733     isConvex: function(resolver) {
27734         if (!this.isClosed() || this.isDegenerate()) return null;
27735
27736         var nodes = _.uniq(resolver.childNodes(this)),
27737             coords = _.pluck(nodes, 'loc'),
27738             curr = 0, prev = 0;
27739
27740         for (var i = 0; i < coords.length; i++) {
27741             var o = coords[(i+1) % coords.length],
27742                 a = coords[i],
27743                 b = coords[(i+2) % coords.length],
27744                 res = iD.geo.cross(o, a, b);
27745
27746             curr = (res > 0) ? 1 : (res < 0) ? -1 : 0;
27747             if (curr === 0) {
27748                 continue;
27749             } else if (prev && curr !== prev) {
27750                 return false;
27751             }
27752             prev = curr;
27753         }
27754         return true;
27755     },
27756
27757     isArea: function() {
27758         if (this.tags.area === 'yes')
27759             return true;
27760         if (!this.isClosed() || this.tags.area === 'no')
27761             return false;
27762         for (var key in this.tags)
27763             if (key in iD.areaKeys && !(this.tags[key] in iD.areaKeys[key]))
27764                 return true;
27765         return false;
27766     },
27767
27768     isDegenerate: function() {
27769         return _.uniq(this.nodes).length < (this.isArea() ? 3 : 2);
27770     },
27771
27772     areAdjacent: function(n1, n2) {
27773         for (var i = 0; i < this.nodes.length; i++) {
27774             if (this.nodes[i] === n1) {
27775                 if (this.nodes[i - 1] === n2) return true;
27776                 if (this.nodes[i + 1] === n2) return true;
27777             }
27778         }
27779         return false;
27780     },
27781
27782     geometry: function(graph) {
27783         return graph.transient(this, 'geometry', function() {
27784             return this.isArea() ? 'area' : 'line';
27785         });
27786     },
27787
27788     addNode: function(id, index) {
27789         var nodes = this.nodes.slice();
27790         nodes.splice(index === undefined ? nodes.length : index, 0, id);
27791         return this.update({nodes: nodes});
27792     },
27793
27794     updateNode: function(id, index) {
27795         var nodes = this.nodes.slice();
27796         nodes.splice(index, 1, id);
27797         return this.update({nodes: nodes});
27798     },
27799
27800     replaceNode: function(needle, replacement) {
27801         if (this.nodes.indexOf(needle) < 0)
27802             return this;
27803
27804         var nodes = this.nodes.slice();
27805         for (var i = 0; i < nodes.length; i++) {
27806             if (nodes[i] === needle) {
27807                 nodes[i] = replacement;
27808             }
27809         }
27810         return this.update({nodes: nodes});
27811     },
27812
27813     removeNode: function(id) {
27814         var nodes = [];
27815
27816         for (var i = 0; i < this.nodes.length; i++) {
27817             var node = this.nodes[i];
27818             if (node !== id && nodes[nodes.length - 1] !== node) {
27819                 nodes.push(node);
27820             }
27821         }
27822
27823         // Preserve circularity
27824         if (this.nodes.length > 1 && this.first() === id && this.last() === id && nodes[nodes.length - 1] !== nodes[0]) {
27825             nodes.push(nodes[0]);
27826         }
27827
27828         return this.update({nodes: nodes});
27829     },
27830
27831     asJXON: function(changeset_id) {
27832         var r = {
27833             way: {
27834                 '@id': this.osmId(),
27835                 '@version': this.version || 0,
27836                 nd: _.map(this.nodes, function(id) {
27837                     return { keyAttributes: { ref: iD.Entity.id.toOSM(id) } };
27838                 }),
27839                 tag: _.map(this.tags, function(v, k) {
27840                     return { keyAttributes: { k: k, v: v } };
27841                 })
27842             }
27843         };
27844         if (changeset_id) r.way['@changeset'] = changeset_id;
27845         return r;
27846     },
27847
27848     asGeoJSON: function(resolver) {
27849         return resolver.transient(this, 'GeoJSON', function() {
27850             var coordinates = _.pluck(resolver.childNodes(this), 'loc');
27851             if (this.isArea() && this.isClosed()) {
27852                 return {
27853                     type: 'Polygon',
27854                     coordinates: [coordinates]
27855                 };
27856             } else {
27857                 return {
27858                     type: 'LineString',
27859                     coordinates: coordinates
27860                 };
27861             }
27862         });
27863     },
27864
27865     area: function(resolver) {
27866         return resolver.transient(this, 'area', function() {
27867             var nodes = resolver.childNodes(this);
27868
27869             var json = {
27870                 type: 'Polygon',
27871                 coordinates: [_.pluck(nodes, 'loc')]
27872             };
27873
27874             if (!this.isClosed() && nodes.length) {
27875                 json.coordinates[0].push(nodes[0].loc);
27876             }
27877
27878             var area = d3.geo.area(json);
27879
27880             // Heuristic for detecting counterclockwise winding order. Assumes
27881             // that OpenStreetMap polygons are not hemisphere-spanning.
27882             if (area > 2 * Math.PI) {
27883                 json.coordinates[0] = json.coordinates[0].reverse();
27884                 area = d3.geo.area(json);
27885             }
27886
27887             return isNaN(area) ? 0 : area;
27888         });
27889     }
27890 });
27891 iD.Background = function(context) {
27892     var dispatch = d3.dispatch('change'),
27893         baseLayer = iD.TileLayer()
27894             .projection(context.projection),
27895         gpxLayer = iD.GpxLayer(context, dispatch)
27896             .projection(context.projection),
27897         mapillaryLayer = iD.MapillaryLayer(context),
27898         overlayLayers = [];
27899
27900     var backgroundSources;
27901
27902     function findSource(id) {
27903         return _.find(backgroundSources, function(d) {
27904             return d.id && d.id === id;
27905         });
27906     }
27907
27908     function updateImagery() {
27909         var b = background.baseLayerSource(),
27910             o = overlayLayers.map(function (d) { return d.source().id; }).join(','),
27911             q = iD.util.stringQs(location.hash.substring(1));
27912
27913         var id = b.id;
27914         if (id === 'custom') {
27915             id = 'custom:' + b.template;
27916         }
27917
27918         if (id) {
27919             q.background = id;
27920         } else {
27921             delete q.background;
27922         }
27923
27924         if (o) {
27925             q.overlays = o;
27926         } else {
27927             delete q.overlays;
27928         }
27929
27930         location.replace('#' + iD.util.qsString(q, true));
27931
27932         var imageryUsed = [b.imageryUsed()];
27933
27934         overlayLayers.forEach(function (d) {
27935             var source = d.source();
27936             if (!source.isLocatorOverlay()) {
27937                 imageryUsed.push(source.imageryUsed());
27938             }
27939         });
27940
27941         if (background.showsGpxLayer()) {
27942             imageryUsed.push('Local GPX');
27943         }
27944
27945         context.history().imageryUsed(imageryUsed);
27946     }
27947
27948     function background(selection) {
27949         var base = selection.selectAll('.background-layer')
27950             .data([0]);
27951
27952         base.enter().insert('div', '.layer-data')
27953             .attr('class', 'layer-layer background-layer');
27954
27955         base.call(baseLayer);
27956
27957         var overlays = selection.selectAll('.layer-overlay')
27958             .data(overlayLayers, function(d) { return d.source().name(); });
27959
27960         overlays.enter().insert('div', '.layer-data')
27961             .attr('class', 'layer-layer layer-overlay');
27962
27963         overlays.each(function(layer) {
27964             d3.select(this).call(layer);
27965         });
27966
27967         overlays.exit()
27968             .remove();
27969
27970         var gpx = selection.selectAll('.layer-gpx')
27971             .data([0]);
27972
27973         gpx.enter().insert('div')
27974             .attr('class', 'layer-layer layer-gpx');
27975
27976         gpx.call(gpxLayer);
27977
27978         var mapillary = selection.selectAll('.layer-mapillary')
27979             .data([0]);
27980
27981         mapillary.enter().insert('div')
27982             .attr('class', 'layer-layer layer-mapillary');
27983
27984         mapillary.call(mapillaryLayer);
27985     }
27986
27987     background.sources = function(extent) {
27988         return backgroundSources.filter(function(source) {
27989             return source.intersects(extent);
27990         });
27991     };
27992
27993     background.dimensions = function(_) {
27994         baseLayer.dimensions(_);
27995         gpxLayer.dimensions(_);
27996         mapillaryLayer.dimensions(_);
27997
27998         overlayLayers.forEach(function(layer) {
27999             layer.dimensions(_);
28000         });
28001     };
28002
28003     background.baseLayerSource = function(d) {
28004         if (!arguments.length) return baseLayer.source();
28005
28006         baseLayer.source(d);
28007         dispatch.change();
28008         updateImagery();
28009
28010         return background;
28011     };
28012
28013     background.bing = function() {
28014         background.baseLayerSource(findSource('Bing'));
28015     };
28016
28017     background.hasGpxLayer = function() {
28018         return !_.isEmpty(gpxLayer.geojson());
28019     };
28020
28021     background.showsGpxLayer = function() {
28022         return background.hasGpxLayer() && gpxLayer.enable();
28023     };
28024
28025     function toDom(x) {
28026         return (new DOMParser()).parseFromString(x, 'text/xml');
28027     }
28028
28029     background.gpxLayerFiles = function(fileList) {
28030         var f = fileList[0],
28031             reader = new FileReader();
28032
28033         reader.onload = function(e) {
28034             gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
28035             iD.ui.MapInMap.gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
28036             background.zoomToGpxLayer();
28037             dispatch.change();
28038         };
28039
28040         reader.readAsText(f);
28041     };
28042
28043     background.zoomToGpxLayer = function() {
28044         if (background.hasGpxLayer()) {
28045             var map = context.map(),
28046                 viewport = map.trimmedExtent().polygon(),
28047                 coords = _.reduce(gpxLayer.geojson().features, function(coords, feature) {
28048                     var c = feature.geometry.coordinates;
28049                     return _.union(coords, feature.geometry.type === 'Point' ? [c] : c);
28050                 }, []);
28051
28052             if (!iD.geo.polygonIntersectsPolygon(viewport, coords, true)) {
28053                 var extent = iD.geo.Extent(d3.geo.bounds(gpxLayer.geojson()));
28054                 map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
28055             }
28056         }
28057     };
28058
28059     background.toggleGpxLayer = function() {
28060         gpxLayer.enable(!gpxLayer.enable());
28061         iD.ui.MapInMap.gpxLayer.enable(!iD.ui.MapInMap.gpxLayer.enable());
28062         dispatch.change();
28063     };
28064
28065     background.showsMapillaryLayer = function() {
28066         return mapillaryLayer.enable();
28067     };
28068
28069     background.toggleMapillaryLayer = function() {
28070         mapillaryLayer.enable(!mapillaryLayer.enable());
28071         dispatch.change();
28072     };
28073
28074     background.showsLayer = function(d) {
28075         return d === baseLayer.source() ||
28076             (d.id === 'custom' && baseLayer.source().id === 'custom') ||
28077             overlayLayers.some(function(l) { return l.source() === d; });
28078     };
28079
28080     background.overlayLayerSources = function() {
28081         return overlayLayers.map(function (l) { return l.source(); });
28082     };
28083
28084     background.toggleOverlayLayer = function(d) {
28085         var layer;
28086
28087         for (var i = 0; i < overlayLayers.length; i++) {
28088             layer = overlayLayers[i];
28089             if (layer.source() === d) {
28090                 overlayLayers.splice(i, 1);
28091                 dispatch.change();
28092                 updateImagery();
28093                 return;
28094             }
28095         }
28096
28097         layer = iD.TileLayer()
28098             .source(d)
28099             .projection(context.projection)
28100             .dimensions(baseLayer.dimensions());
28101
28102         overlayLayers.push(layer);
28103         dispatch.change();
28104         updateImagery();
28105     };
28106
28107     background.nudge = function(d, zoom) {
28108         baseLayer.source().nudge(d, zoom);
28109         dispatch.change();
28110         return background;
28111     };
28112
28113     background.offset = function(d) {
28114         if (!arguments.length) return baseLayer.source().offset();
28115         baseLayer.source().offset(d);
28116         dispatch.change();
28117         return background;
28118     };
28119
28120     background.load = function(imagery) {
28121         backgroundSources = imagery.map(function(source) {
28122             if (source.type === 'bing') {
28123                 return iD.BackgroundSource.Bing(source, dispatch);
28124             } else {
28125                 return iD.BackgroundSource(source);
28126             }
28127         });
28128
28129         backgroundSources.unshift(iD.BackgroundSource.None());
28130
28131         var q = iD.util.stringQs(location.hash.substring(1)),
28132             chosen = q.background || q.layer;
28133
28134         if (chosen && chosen.indexOf('custom:') === 0) {
28135             background.baseLayerSource(iD.BackgroundSource.Custom(chosen.replace(/^custom:/, '')));
28136         } else {
28137             background.baseLayerSource(findSource(chosen) || findSource('Bing') || backgroundSources[1]);
28138         }
28139
28140         var locator = _.find(backgroundSources, function(d) {
28141             return d.overlay && d.default;
28142         });
28143
28144         if (locator) {
28145             background.toggleOverlayLayer(locator);
28146         }
28147
28148         var overlays = (q.overlays || '').split(',');
28149         overlays.forEach(function(overlay) {
28150             overlay = findSource(overlay);
28151             if (overlay) background.toggleOverlayLayer(overlay);
28152         });
28153
28154         var gpx = q.gpx;
28155         if (gpx) {
28156             d3.text(gpx, function(err, gpxTxt) {
28157                 if (!err) {
28158                     gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28159                     iD.ui.MapInMap.gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28160                     dispatch.change();
28161                 }
28162             });
28163         }
28164     };
28165
28166     return d3.rebind(background, dispatch, 'on');
28167 };
28168 iD.BackgroundSource = function(data) {
28169     var source = _.clone(data),
28170         offset = [0, 0],
28171         name = source.name;
28172
28173     source.scaleExtent = data.scaleExtent || [0, 20];
28174     source.overzoom = data.overzoom !== false;
28175
28176     source.offset = function(_) {
28177         if (!arguments.length) return offset;
28178         offset = _;
28179         return source;
28180     };
28181
28182     source.nudge = function(_, zoomlevel) {
28183         offset[0] += _[0] / Math.pow(2, zoomlevel);
28184         offset[1] += _[1] / Math.pow(2, zoomlevel);
28185         return source;
28186     };
28187
28188     source.name = function() {
28189         return name;
28190     };
28191
28192     source.imageryUsed = function() {
28193         return source.id || name;
28194     };
28195
28196     source.url = function(coord) {
28197         return data.template
28198             .replace('{x}', coord[0])
28199             .replace('{y}', coord[1])
28200             // TMS-flipped y coordinate
28201             .replace(/\{[t-]y\}/, Math.pow(2, coord[2]) - coord[1] - 1)
28202             .replace(/\{z(oom)?\}/, coord[2])
28203             .replace(/\{switch:([^}]+)\}/, function(s, r) {
28204                 var subdomains = r.split(',');
28205                 return subdomains[(coord[0] + coord[1]) % subdomains.length];
28206             })
28207             .replace('{u}', function() {
28208                 var u = '';
28209                 for (var zoom = coord[2]; zoom > 0; zoom--) {
28210                     var b = 0;
28211                     var mask = 1 << (zoom - 1);
28212                     if ((coord[0] & mask) !== 0) b++;
28213                     if ((coord[1] & mask) !== 0) b += 2;
28214                     u += b.toString();
28215                 }
28216                 return u;
28217             });
28218     };
28219
28220     source.intersects = function(extent) {
28221         extent = extent.polygon();
28222         return !data.polygon || data.polygon.some(function(polygon) {
28223             return iD.geo.polygonIntersectsPolygon(polygon, extent, true);
28224         });
28225     };
28226
28227     source.validZoom = function(z) {
28228         return source.scaleExtent[0] <= z &&
28229             (source.overzoom || source.scaleExtent[1] > z);
28230     };
28231
28232     source.isLocatorOverlay = function() {
28233         return name === 'Locator Overlay';
28234     };
28235
28236     source.copyrightNotices = function() {};
28237
28238     return source;
28239 };
28240
28241 iD.BackgroundSource.Bing = function(data, dispatch) {
28242     // http://msdn.microsoft.com/en-us/library/ff701716.aspx
28243     // http://msdn.microsoft.com/en-us/library/ff701701.aspx
28244
28245     data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z';
28246
28247     var bing = iD.BackgroundSource(data),
28248         key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU', // Same as P2 and JOSM
28249         url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' +
28250             key + '&jsonp={callback}',
28251         providers = [];
28252
28253     d3.jsonp(url, function(json) {
28254         providers = json.resourceSets[0].resources[0].imageryProviders.map(function(provider) {
28255             return {
28256                 attribution: provider.attribution,
28257                 areas: provider.coverageAreas.map(function(area) {
28258                     return {
28259                         zoom: [area.zoomMin, area.zoomMax],
28260                         extent: iD.geo.Extent([area.bbox[1], area.bbox[0]], [area.bbox[3], area.bbox[2]])
28261                     };
28262                 })
28263             };
28264         });
28265         dispatch.change();
28266     });
28267
28268     bing.copyrightNotices = function(zoom, extent) {
28269         zoom = Math.min(zoom, 21);
28270         return providers.filter(function(provider) {
28271             return _.any(provider.areas, function(area) {
28272                 return extent.intersects(area.extent) &&
28273                     area.zoom[0] <= zoom &&
28274                     area.zoom[1] >= zoom;
28275             });
28276         }).map(function(provider) {
28277             return provider.attribution;
28278         }).join(', ');
28279     };
28280
28281     bing.logo = 'bing_maps.png';
28282     bing.terms_url = 'http://opengeodata.org/microsoft-imagery-details';
28283
28284     return bing;
28285 };
28286
28287 iD.BackgroundSource.None = function() {
28288     var source = iD.BackgroundSource({id: 'none', template: ''});
28289
28290     source.name = function() {
28291         return t('background.none');
28292     };
28293
28294     source.imageryUsed = function() {
28295         return 'None';
28296     };
28297
28298     return source;
28299 };
28300
28301 iD.BackgroundSource.Custom = function(template) {
28302     var source = iD.BackgroundSource({id: 'custom', template: template});
28303
28304     source.name = function() {
28305         return t('background.custom');
28306     };
28307
28308     source.imageryUsed = function() {
28309         return 'Custom (' + template + ')';
28310     };
28311
28312     return source;
28313 };
28314 iD.Features = function(context) {
28315     var major_roads = {
28316         'motorway': true,
28317         'motorway_link': true,
28318         'trunk': true,
28319         'trunk_link': true,
28320         'primary': true,
28321         'primary_link': true,
28322         'secondary': true,
28323         'secondary_link': true,
28324         'tertiary': true,
28325         'tertiary_link': true,
28326         'residential': true
28327     };
28328
28329     var minor_roads = {
28330         'service': true,
28331         'living_street': true,
28332         'road': true,
28333         'unclassified': true,
28334         'track': true
28335     };
28336
28337     var paths = {
28338         'path': true,
28339         'footway': true,
28340         'cycleway': true,
28341         'bridleway': true,
28342         'steps': true,
28343         'pedestrian': true,
28344         'corridor': true
28345     };
28346
28347     var past_futures = {
28348         'proposed': true,
28349         'construction': true,
28350         'abandoned': true,
28351         'dismantled': true,
28352         'disused': true,
28353         'razed': true,
28354         'demolished': true,
28355         'obliterated': true
28356     };
28357
28358     var dispatch = d3.dispatch('change', 'redraw'),
28359         _cullFactor = 1,
28360         _cache = {},
28361         _features = {},
28362         _stats = {},
28363         _keys = [],
28364         _hidden = [];
28365
28366     function update() {
28367         _hidden = features.hidden();
28368         dispatch.change();
28369         dispatch.redraw();
28370     }
28371
28372     function defineFeature(k, filter, max) {
28373         _keys.push(k);
28374         _features[k] = {
28375             filter: filter,
28376             enabled: true,   // whether the user wants it enabled..
28377             count: 0,
28378             currentMax: (max || Infinity),
28379             defaultMax: (max || Infinity),
28380             enable: function() { this.enabled = true; this.currentMax = this.defaultMax; },
28381             disable: function() { this.enabled = false; this.currentMax = 0; },
28382             hidden: function() { return !context.editable() || this.count > this.currentMax * _cullFactor; },
28383             autoHidden: function() { return this.hidden() && this.currentMax > 0; }
28384         };
28385     }
28386
28387
28388     defineFeature('points', function isPoint(entity, resolver, geometry) {
28389         return geometry === 'point';
28390     }, 200);
28391
28392     defineFeature('major_roads', function isMajorRoad(entity) {
28393         return major_roads[entity.tags.highway];
28394     });
28395
28396     defineFeature('minor_roads', function isMinorRoad(entity) {
28397         return minor_roads[entity.tags.highway];
28398     });
28399
28400     defineFeature('paths', function isPath(entity) {
28401         return paths[entity.tags.highway];
28402     });
28403
28404     defineFeature('buildings', function isBuilding(entity) {
28405         return (
28406             !!entity.tags['building:part'] ||
28407             (!!entity.tags.building && entity.tags.building !== 'no') ||
28408             entity.tags.amenity === 'shelter' ||
28409             entity.tags.parking === 'multi-storey' ||
28410             entity.tags.parking === 'sheds' ||
28411             entity.tags.parking === 'carports' ||
28412             entity.tags.parking === 'garage_boxes'
28413         );
28414     }, 250);
28415
28416     defineFeature('landuse', function isLanduse(entity, resolver, geometry) {
28417         return geometry === 'area' &&
28418             !_features.buildings.filter(entity) &&
28419             !_features.water.filter(entity);
28420     });
28421
28422     defineFeature('boundaries', function isBoundary(entity) {
28423         return !!entity.tags.boundary;
28424     });
28425
28426     defineFeature('water', function isWater(entity) {
28427         return (
28428             !!entity.tags.waterway ||
28429             entity.tags.natural === 'water' ||
28430             entity.tags.natural === 'coastline' ||
28431             entity.tags.natural === 'bay' ||
28432             entity.tags.landuse === 'pond' ||
28433             entity.tags.landuse === 'basin' ||
28434             entity.tags.landuse === 'reservoir' ||
28435             entity.tags.landuse === 'salt_pond'
28436         );
28437     });
28438
28439     defineFeature('rail', function isRail(entity) {
28440         return (
28441             !!entity.tags.railway ||
28442             entity.tags.landuse === 'railway'
28443         ) && !(
28444             major_roads[entity.tags.highway] ||
28445             minor_roads[entity.tags.highway] ||
28446             paths[entity.tags.highway]
28447         );
28448     });
28449
28450     defineFeature('power', function isPower(entity) {
28451         return !!entity.tags.power;
28452     });
28453
28454     // contains a past/future tag, but not in active use as a road/path/cycleway/etc..
28455     defineFeature('past_future', function isPastFuture(entity) {
28456         if (
28457             major_roads[entity.tags.highway] ||
28458             minor_roads[entity.tags.highway] ||
28459             paths[entity.tags.highway]
28460         ) { return false; }
28461
28462         var strings = Object.keys(entity.tags);
28463
28464         for (var i = 0; i < strings.length; i++) {
28465             var s = strings[i];
28466             if (past_futures[s] || past_futures[entity.tags[s]]) { return true; }
28467         }
28468         return false;
28469     });
28470
28471     // Lines or areas that don't match another feature filter.
28472     // IMPORTANT: The 'others' feature must be the last one defined,
28473     //   so that code in getMatches can skip this test if `hasMatch = true`
28474     defineFeature('others', function isOther(entity, resolver, geometry) {
28475         return (geometry === 'line' || geometry === 'area');
28476     });
28477
28478
28479     function features() {}
28480
28481     features.features = function() {
28482         return _features;
28483     };
28484
28485     features.keys = function() {
28486         return _keys;
28487     };
28488
28489     features.enabled = function(k) {
28490         if (!arguments.length) {
28491             return _.filter(_keys, function(k) { return _features[k].enabled; });
28492         }
28493         return _features[k] && _features[k].enabled;
28494     };
28495
28496     features.disabled = function(k) {
28497         if (!arguments.length) {
28498             return _.reject(_keys, function(k) { return _features[k].enabled; });
28499         }
28500         return _features[k] && !_features[k].enabled;
28501     };
28502
28503     features.hidden = function(k) {
28504         if (!arguments.length) {
28505             return _.filter(_keys, function(k) { return _features[k].hidden(); });
28506         }
28507         return _features[k] && _features[k].hidden();
28508     };
28509
28510     features.autoHidden = function(k) {
28511         if (!arguments.length) {
28512             return _.filter(_keys, function(k) { return _features[k].autoHidden(); });
28513         }
28514         return _features[k] && _features[k].autoHidden();
28515     };
28516
28517     features.enable = function(k) {
28518         if (_features[k] && !_features[k].enabled) {
28519             _features[k].enable();
28520             update();
28521         }
28522     };
28523
28524     features.disable = function(k) {
28525         if (_features[k] && _features[k].enabled) {
28526             _features[k].disable();
28527             update();
28528         }
28529     };
28530
28531     features.toggle = function(k) {
28532         if (_features[k]) {
28533             (function(f) { return f.enabled ? f.disable() : f.enable(); }(_features[k]));
28534             update();
28535         }
28536     };
28537
28538     features.resetStats = function() {
28539         _.each(_features, function(f) { f.count = 0; });
28540         dispatch.change();
28541     };
28542
28543     features.gatherStats = function(d, resolver, dimensions) {
28544         var needsRedraw = false,
28545             type = _.groupBy(d, function(ent) { return ent.type; }),
28546             entities = [].concat(type.relation || [], type.way || [], type.node || []),
28547             currHidden, geometry, matches;
28548
28549         _.each(_features, function(f) { f.count = 0; });
28550
28551         // adjust the threshold for point/building culling based on viewport size..
28552         // a _cullFactor of 1 corresponds to a 1000x1000px viewport..
28553         _cullFactor = dimensions[0] * dimensions[1] / 1000000;
28554
28555         for (var i = 0; i < entities.length; i++) {
28556             geometry = entities[i].geometry(resolver);
28557             if (!(geometry === 'vertex' || geometry === 'relation')) {
28558                 matches = Object.keys(features.getMatches(entities[i], resolver, geometry));
28559                 for (var j = 0; j < matches.length; j++) {
28560                     _features[matches[j]].count++;
28561                 }
28562             }
28563         }
28564
28565         currHidden = features.hidden();
28566         if (currHidden !== _hidden) {
28567             _hidden = currHidden;
28568             needsRedraw = true;
28569             dispatch.change();
28570         }
28571
28572         return needsRedraw;
28573     };
28574
28575     features.stats = function() {
28576         _.each(_keys, function(k) { _stats[k] = _features[k].count; });
28577         return _stats;
28578     };
28579
28580     features.clear = function(d) {
28581         for (var i = 0; i < d.length; i++) {
28582             features.clearEntity(d[i]);
28583         }
28584     };
28585
28586     features.clearEntity = function(entity) {
28587         delete _cache[iD.Entity.key(entity)];
28588     };
28589
28590     features.reset = function() {
28591         _cache = {};
28592     };
28593
28594     features.getMatches = function(entity, resolver, geometry) {
28595         var ent = iD.Entity.key(entity);
28596
28597         if (!_cache[ent]) {
28598             _cache[ent] = {};
28599         }
28600         if (!_cache[ent].matches) {
28601             var matches = {},
28602                 hasMatch = false;
28603
28604             if (!(geometry === 'vertex' || geometry === 'relation')) {
28605                 for (var i = 0; i < _keys.length; i++) {
28606
28607                     if (_keys[i] === 'others') {
28608                         if (hasMatch) continue;
28609
28610                         // If the entity is a way that has not matched any other
28611                         // feature type, see if it has a parent relation, and if so,
28612                         // match whatever feature types the parent has matched.
28613                         // (The way is a member of a multipolygon.)
28614                         //
28615                         // IMPORTANT:
28616                         // For this to work, getMatches must be called on relations before ways.
28617                         //
28618                         if (entity.type === 'way') {
28619                             var parents = features.getParents(entity, resolver, geometry);
28620                             if (parents.length === 1) {
28621                                 var pkey = iD.Entity.key(parents[0]);
28622                                 if (_cache[pkey] && _cache[pkey].matches) {
28623                                     matches = _.clone(_cache[pkey].matches);
28624                                     continue;
28625                                 }
28626                             }
28627                         }
28628                     }
28629
28630                     if (_features[_keys[i]].filter(entity, resolver, geometry)) {
28631                         matches[_keys[i]] = hasMatch = true;
28632                     }
28633                 }
28634             }
28635             _cache[ent].matches = matches;
28636         }
28637         return _cache[ent].matches;
28638     };
28639
28640     features.getParents = function(entity, resolver, geometry) {
28641         var ent = iD.Entity.key(entity);
28642
28643         if (!_cache[ent]) {
28644             _cache[ent] = {};
28645         }
28646         if (!_cache[ent].parents) {
28647             var parents = [];
28648
28649             if (geometry !== 'point') {
28650                 if (geometry === 'vertex') {
28651                     parents = resolver.parentWays(entity);
28652                 } else {   // 'line', 'area', 'relation'
28653                     parents = resolver.parentRelations(entity);
28654                 }
28655             }
28656             _cache[ent].parents = parents;
28657         }
28658         return _cache[ent].parents;
28659     };
28660
28661     features.isHiddenFeature = function(entity, resolver, geometry) {
28662         if (!entity.version) return false;
28663
28664         var matches = features.getMatches(entity, resolver, geometry);
28665
28666         for (var i = 0; i < _hidden.length; i++) {
28667             if (matches[_hidden[i]]) { return true; }
28668         }
28669         return false;
28670     };
28671
28672     features.isHiddenChild = function(entity, resolver, geometry) {
28673         if (!entity.version || geometry === 'point') { return false; }
28674
28675         var parents = features.getParents(entity, resolver, geometry);
28676
28677         if (!parents.length) { return false; }
28678
28679         for (var i = 0; i < parents.length; i++) {
28680             if (!features.isHidden(parents[i], resolver, parents[i].geometry(resolver))) {
28681                 return false;
28682             }
28683         }
28684         return true;
28685     };
28686
28687     features.hasHiddenConnections = function(entity, resolver) {
28688         var childNodes, connections;
28689
28690         if (entity.type === 'midpoint') {
28691             childNodes = [resolver.entity(entity.edge[0]), resolver.entity(entity.edge[1])];
28692             connections = [];
28693         } else {
28694             childNodes = resolver.childNodes(entity);
28695             connections = features.getParents(entity, resolver, entity.geometry(resolver));
28696         }
28697
28698         // gather ways connected to child nodes..
28699         connections = _.reduce(childNodes, function(result, e) {
28700             return resolver.isShared(e) ? _.union(result, resolver.parentWays(e)) : result;
28701         }, connections);
28702
28703         return connections.length ? _.any(connections, function(e) {
28704             return features.isHidden(e, resolver, e.geometry(resolver));
28705         }) : false;
28706     };
28707
28708     features.isHidden = function(entity, resolver, geometry) {
28709         if (!entity.version) return false;
28710
28711         if (geometry === 'vertex')
28712             return features.isHiddenChild(entity, resolver, geometry);
28713         if (geometry === 'point')
28714             return features.isHiddenFeature(entity, resolver, geometry);
28715
28716         return features.isHiddenFeature(entity, resolver, geometry) ||
28717                features.isHiddenChild(entity, resolver, geometry);
28718     };
28719
28720     features.filter = function(d, resolver) {
28721         if (!_hidden.length)
28722             return d;
28723
28724         var result = [];
28725         for (var i = 0; i < d.length; i++) {
28726             var entity = d[i];
28727             if (!features.isHidden(entity, resolver, entity.geometry(resolver))) {
28728                 result.push(entity);
28729             }
28730         }
28731         return result;
28732     };
28733
28734     return d3.rebind(features, dispatch, 'on');
28735 };
28736 iD.GpxLayer = function(context) {
28737     var projection,
28738         gj = {},
28739         enable = true,
28740         svg;
28741
28742     function render(selection) {
28743         svg = selection.selectAll('svg')
28744             .data([render]);
28745
28746         svg.enter()
28747             .append('svg');
28748
28749         svg.style('display', enable ? 'block' : 'none');
28750
28751         var paths = svg
28752             .selectAll('path')
28753             .data([gj]);
28754
28755         paths
28756             .enter()
28757             .append('path')
28758             .attr('class', 'gpx');
28759
28760         var path = d3.geo.path()
28761             .projection(projection);
28762
28763         paths
28764             .attr('d', path);
28765
28766         if (typeof gj.features !== 'undefined') {
28767             svg
28768                 .selectAll('text')
28769                 .remove();
28770
28771             svg
28772                 .selectAll('path')
28773                 .data(gj.features)
28774                 .enter()
28775                 .append('text')
28776                 .attr('class', 'gpx')
28777                 .text(function(d) {
28778                     return d.properties.desc || d.properties.name;
28779                 })
28780                 .attr('x', function(d) {
28781                     var centroid = path.centroid(d);
28782                     return centroid[0] + 5;
28783                 })
28784                 .attr('y', function(d) {
28785                     var centroid = path.centroid(d);
28786                     return centroid[1];
28787                 });
28788         }
28789     }
28790
28791     render.projection = function(_) {
28792         if (!arguments.length) return projection;
28793         projection = _;
28794         return render;
28795     };
28796
28797     render.enable = function(_) {
28798         if (!arguments.length) return enable;
28799         enable = _;
28800         return render;
28801     };
28802
28803     render.geojson = function(_) {
28804         if (!arguments.length) return gj;
28805         gj = _;
28806         return render;
28807     };
28808
28809     render.dimensions = function(_) {
28810         if (!arguments.length) return svg.dimensions();
28811         svg.dimensions(_);
28812         return render;
28813     };
28814
28815     render.id = 'layer-gpx';
28816
28817     function over() {
28818         d3.event.stopPropagation();
28819         d3.event.preventDefault();
28820         d3.event.dataTransfer.dropEffect = 'copy';
28821     }
28822
28823     d3.select('body')
28824         .attr('dropzone', 'copy')
28825         .on('drop.localgpx', function() {
28826             d3.event.stopPropagation();
28827             d3.event.preventDefault();
28828             if (!iD.detect().filedrop) return;
28829             context.background().gpxLayerFiles(d3.event.dataTransfer.files);
28830         })
28831         .on('dragenter.localgpx', over)
28832         .on('dragexit.localgpx', over)
28833         .on('dragover.localgpx', over);
28834
28835     return render;
28836 };
28837 iD.Map = function(context) {
28838     var dimensions = [1, 1],
28839         dispatch = d3.dispatch('move', 'drawn'),
28840         projection = context.projection,
28841         roundedProjection = iD.svg.RoundProjection(projection),
28842         zoom = d3.behavior.zoom()
28843             .translate(projection.translate())
28844             .scale(projection.scale() * 2 * Math.PI)
28845             .scaleExtent([1024, 256 * Math.pow(2, 24)])
28846             .on('zoom', zoomPan),
28847         dblclickEnabled = true,
28848         transformStart,
28849         transformed = false,
28850         minzoom = 0,
28851         points = iD.svg.Points(roundedProjection, context),
28852         vertices = iD.svg.Vertices(roundedProjection, context),
28853         lines = iD.svg.Lines(projection),
28854         areas = iD.svg.Areas(projection),
28855         midpoints = iD.svg.Midpoints(roundedProjection, context),
28856         labels = iD.svg.Labels(projection, context),
28857         supersurface, surface,
28858         mouse,
28859         mousemove;
28860
28861     function map(selection) {
28862         context.history()
28863             .on('change.map', redraw);
28864         context.background()
28865             .on('change.map', redraw);
28866         context.features()
28867             .on('redraw.map', redraw);
28868
28869         selection
28870             .on('dblclick.map', dblClick)
28871             .call(zoom);
28872
28873         supersurface = selection.append('div')
28874             .attr('id', 'supersurface');
28875
28876         // Need a wrapper div because Opera can't cope with an absolutely positioned
28877         // SVG element: http://bl.ocks.org/jfirebaugh/6fbfbd922552bf776c16
28878         var dataLayer = supersurface.append('div')
28879             .attr('class', 'layer-layer layer-data');
28880
28881         map.surface = surface = dataLayer.append('svg')
28882             .on('mousedown.zoom', function() {
28883                 if (d3.event.button === 2) {
28884                     d3.event.stopPropagation();
28885                 }
28886             }, true)
28887             .on('mouseup.zoom', function() {
28888                 if (resetTransform()) redraw();
28889             })
28890             .attr('id', 'surface')
28891             .call(iD.svg.Surface(context));
28892
28893         supersurface.call(context.background());
28894
28895         surface.on('mousemove.map', function() {
28896             mousemove = d3.event;
28897         });
28898
28899         surface.on('mouseover.vertices', function() {
28900             if (map.editable() && !transformed) {
28901                 var hover = d3.event.target.__data__;
28902                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28903                 dispatch.drawn({full: false});
28904             }
28905         });
28906
28907         surface.on('mouseout.vertices', function() {
28908             if (map.editable() && !transformed) {
28909                 var hover = d3.event.relatedTarget && d3.event.relatedTarget.__data__;
28910                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28911                 dispatch.drawn({full: false});
28912             }
28913         });
28914
28915         context.on('enter.map', function() {
28916             if (map.editable() && !transformed) {
28917                 var all = context.intersects(map.extent()),
28918                     filter = d3.functor(true),
28919                     graph = context.graph();
28920
28921                 all = context.features().filter(all, graph);
28922                 surface.call(vertices, graph, all, filter, map.extent(), map.zoom());
28923                 surface.call(midpoints, graph, all, filter, map.trimmedExtent());
28924                 dispatch.drawn({full: false});
28925             }
28926         });
28927
28928         map.dimensions(selection.dimensions());
28929
28930         labels.supersurface(supersurface);
28931     }
28932
28933     function pxCenter() { return [dimensions[0] / 2, dimensions[1] / 2]; }
28934
28935     function drawVector(difference, extent) {
28936         var graph = context.graph(),
28937             features = context.features(),
28938             all = context.intersects(map.extent()),
28939             data, filter;
28940
28941         if (difference) {
28942             var complete = difference.complete(map.extent());
28943             data = _.compact(_.values(complete));
28944             filter = function(d) { return d.id in complete; };
28945             features.clear(data);
28946
28947         } else {
28948             // force a full redraw if gatherStats detects that a feature
28949             // should be auto-hidden (e.g. points or buildings)..
28950             if (features.gatherStats(all, graph, dimensions)) {
28951                 extent = undefined;
28952             }
28953
28954             if (extent) {
28955                 data = context.intersects(map.extent().intersection(extent));
28956                 var set = d3.set(_.pluck(data, 'id'));
28957                 filter = function(d) { return set.has(d.id); };
28958
28959             } else {
28960                 data = all;
28961                 filter = d3.functor(true);
28962             }
28963         }
28964
28965         data = features.filter(data, graph);
28966
28967         surface
28968             .call(vertices, graph, data, filter, map.extent(), map.zoom())
28969             .call(lines, graph, data, filter)
28970             .call(areas, graph, data, filter)
28971             .call(midpoints, graph, data, filter, map.trimmedExtent())
28972             .call(labels, graph, data, filter, dimensions, !difference && !extent)
28973             .call(points, data, filter);
28974
28975         dispatch.drawn({full: true});
28976     }
28977
28978     function editOff() {
28979         context.features().resetStats();
28980         surface.selectAll('.layer *').remove();
28981         dispatch.drawn({full: true});
28982     }
28983
28984     function dblClick() {
28985         if (!dblclickEnabled) {
28986             d3.event.preventDefault();
28987             d3.event.stopImmediatePropagation();
28988         }
28989     }
28990
28991     function zoomPan() {
28992         if (Math.log(d3.event.scale) / Math.LN2 - 8 < minzoom) {
28993             surface.interrupt();
28994             iD.ui.flash(context.container())
28995                 .select('.content')
28996                 .text(t('cannot_zoom'));
28997             setZoom(context.minEditableZoom(), true);
28998             queueRedraw();
28999             dispatch.move(map);
29000             return;
29001         }
29002
29003         projection
29004             .translate(d3.event.translate)
29005             .scale(d3.event.scale / (2 * Math.PI));
29006
29007         var scale = d3.event.scale / transformStart[0],
29008             tX = Math.round((d3.event.translate[0] / scale - transformStart[1][0]) * scale),
29009             tY = Math.round((d3.event.translate[1] / scale - transformStart[1][1]) * scale);
29010
29011         transformed = true;
29012         iD.util.setTransform(supersurface, tX, tY, scale);
29013         queueRedraw();
29014
29015         dispatch.move(map);
29016     }
29017
29018     function resetTransform() {
29019         if (!transformed) return false;
29020         iD.util.setTransform(supersurface, 0, 0);
29021         transformed = false;
29022         return true;
29023     }
29024
29025     function redraw(difference, extent) {
29026
29027         if (!surface) return;
29028
29029         clearTimeout(timeoutId);
29030
29031         // If we are in the middle of a zoom/pan, we can't do differenced redraws.
29032         // It would result in artifacts where differenced entities are redrawn with
29033         // one transform and unchanged entities with another.
29034         if (resetTransform()) {
29035             difference = extent = undefined;
29036         }
29037
29038         var zoom = String(~~map.zoom());
29039         if (surface.attr('data-zoom') !== zoom) {
29040             surface.attr('data-zoom', zoom)
29041                 .classed('low-zoom', zoom <= 16);
29042         }
29043
29044         if (!difference) {
29045             supersurface.call(context.background());
29046         }
29047
29048         if (map.editable()) {
29049             context.loadTiles(projection, dimensions);
29050             drawVector(difference, extent);
29051         } else {
29052             editOff();
29053         }
29054
29055         transformStart = [
29056             projection.scale() * 2 * Math.PI,
29057             projection.translate().slice()];
29058
29059         return map;
29060     }
29061
29062     var timeoutId;
29063     function queueRedraw() {
29064         clearTimeout(timeoutId);
29065         timeoutId = setTimeout(function() { redraw(); }, 300);
29066     }
29067
29068     function pointLocation(p) {
29069         var translate = projection.translate(),
29070             scale = projection.scale() * 2 * Math.PI;
29071         return [(p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale];
29072     }
29073
29074     function locationPoint(l) {
29075         var translate = projection.translate(),
29076             scale = projection.scale() * 2 * Math.PI;
29077         return [l[0] * scale + translate[0], l[1] * scale + translate[1]];
29078     }
29079
29080     map.mouse = function() {
29081         var e = mousemove || d3.event, s;
29082         while ((s = e.sourceEvent)) e = s;
29083         return mouse(e);
29084     };
29085
29086     map.mouseCoordinates = function() {
29087         return projection.invert(map.mouse());
29088     };
29089
29090     map.dblclickEnable = function(_) {
29091         if (!arguments.length) return dblclickEnabled;
29092         dblclickEnabled = _;
29093         return map;
29094     };
29095
29096     function interpolateZoom(_) {
29097         var k = projection.scale(),
29098             t = projection.translate();
29099
29100         surface.node().__chart__ = {
29101             x: t[0],
29102             y: t[1],
29103             k: k * 2 * Math.PI
29104         };
29105
29106         setZoom(_);
29107         projection.scale(k).translate(t);  // undo setZoom projection changes
29108
29109         zoom.event(surface.transition());
29110     }
29111
29112     function setZoom(_, force) {
29113         if (_ === map.zoom() && !force)
29114             return false;
29115         var scale = 256 * Math.pow(2, _),
29116             center = pxCenter(),
29117             l = pointLocation(center);
29118         scale = Math.max(1024, Math.min(256 * Math.pow(2, 24), scale));
29119         projection.scale(scale / (2 * Math.PI));
29120         zoom.scale(scale);
29121         var t = projection.translate();
29122         l = locationPoint(l);
29123         t[0] += center[0] - l[0];
29124         t[1] += center[1] - l[1];
29125         projection.translate(t);
29126         zoom.translate(projection.translate());
29127         return true;
29128     }
29129
29130     function setCenter(_) {
29131         var c = map.center();
29132         if (_[0] === c[0] && _[1] === c[1])
29133             return false;
29134         var t = projection.translate(),
29135             pxC = pxCenter(),
29136             ll = projection(_);
29137         projection.translate([
29138             t[0] - ll[0] + pxC[0],
29139             t[1] - ll[1] + pxC[1]]);
29140         zoom.translate(projection.translate());
29141         return true;
29142     }
29143
29144     map.pan = function(d) {
29145         var t = projection.translate();
29146         t[0] += d[0];
29147         t[1] += d[1];
29148         projection.translate(t);
29149         zoom.translate(projection.translate());
29150         dispatch.move(map);
29151         return redraw();
29152     };
29153
29154     map.dimensions = function(_) {
29155         if (!arguments.length) return dimensions;
29156         var center = map.center();
29157         dimensions = _;
29158         surface.dimensions(dimensions);
29159         context.background().dimensions(dimensions);
29160         projection.clipExtent([[0, 0], dimensions]);
29161         mouse = iD.util.fastMouse(supersurface.node());
29162         setCenter(center);
29163         return redraw();
29164     };
29165
29166     function zoomIn(integer) {
29167       interpolateZoom(~~map.zoom() + integer);
29168     }
29169
29170     function zoomOut(integer) {
29171       interpolateZoom(~~map.zoom() - integer);
29172     }
29173
29174     map.zoomIn = function() { zoomIn(1); };
29175     map.zoomInFurther = function() { zoomIn(4); };
29176
29177     map.zoomOut = function() { zoomOut(1); };
29178     map.zoomOutFurther = function() { zoomOut(4); };
29179
29180     map.center = function(loc) {
29181         if (!arguments.length) {
29182             return projection.invert(pxCenter());
29183         }
29184
29185         if (setCenter(loc)) {
29186             dispatch.move(map);
29187         }
29188
29189         return redraw();
29190     };
29191
29192     map.zoom = function(z) {
29193         if (!arguments.length) {
29194             return Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.LN2 - 8, 0);
29195         }
29196
29197         if (z < minzoom) {
29198             surface.interrupt();
29199             iD.ui.flash(context.container())
29200                 .select('.content')
29201                 .text(t('cannot_zoom'));
29202             z = context.minEditableZoom();
29203         }
29204
29205         if (setZoom(z)) {
29206             dispatch.move(map);
29207         }
29208
29209         return redraw();
29210     };
29211
29212     map.zoomTo = function(entity, zoomLimits) {
29213         var extent = entity.extent(context.graph());
29214         if (!isFinite(extent.area())) return;
29215
29216         var zoom = map.trimmedExtentZoom(extent);
29217         zoomLimits = zoomLimits || [context.minEditableZoom(), 20];
29218         map.centerZoom(extent.center(), Math.min(Math.max(zoom, zoomLimits[0]), zoomLimits[1]));
29219     };
29220
29221     map.centerZoom = function(loc, z) {
29222         var centered = setCenter(loc),
29223             zoomed   = setZoom(z);
29224
29225         if (centered || zoomed) {
29226             dispatch.move(map);
29227         }
29228
29229         return redraw();
29230     };
29231
29232     map.centerEase = function(loc) {
29233         var from = map.center().slice(),
29234             t = 0,
29235             stop;
29236
29237         surface.one('mousedown.ease', function() {
29238             stop = true;
29239         });
29240
29241         d3.timer(function() {
29242             if (stop) return true;
29243             map.center(iD.geo.interp(from, loc, (t += 1) / 10));
29244             return t === 10;
29245         }, 20);
29246         return map;
29247     };
29248
29249     map.extent = function(_) {
29250         if (!arguments.length) {
29251             return new iD.geo.Extent(projection.invert([0, dimensions[1]]),
29252                                  projection.invert([dimensions[0], 0]));
29253         } else {
29254             var extent = iD.geo.Extent(_);
29255             map.centerZoom(extent.center(), map.extentZoom(extent));
29256         }
29257     };
29258
29259     map.trimmedExtent = function(_) {
29260         if (!arguments.length) {
29261             var headerY = 60, footerY = 30, pad = 10;
29262             return new iD.geo.Extent(projection.invert([pad, dimensions[1] - footerY - pad]),
29263                     projection.invert([dimensions[0] - pad, headerY + pad]));
29264         } else {
29265             var extent = iD.geo.Extent(_);
29266             map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
29267         }
29268     };
29269
29270     function calcZoom(extent, dim) {
29271         var tl = projection([extent[0][0], extent[1][1]]),
29272             br = projection([extent[1][0], extent[0][1]]);
29273
29274         // Calculate maximum zoom that fits extent
29275         var hFactor = (br[0] - tl[0]) / dim[0],
29276             vFactor = (br[1] - tl[1]) / dim[1],
29277             hZoomDiff = Math.log(Math.abs(hFactor)) / Math.LN2,
29278             vZoomDiff = Math.log(Math.abs(vFactor)) / Math.LN2,
29279             newZoom = map.zoom() - Math.max(hZoomDiff, vZoomDiff);
29280
29281         return newZoom;
29282     }
29283
29284     map.extentZoom = function(_) {
29285         return calcZoom(iD.geo.Extent(_), dimensions);
29286     };
29287
29288     map.trimmedExtentZoom = function(_) {
29289         var trimY = 120, trimX = 40,
29290             trimmed = [dimensions[0] - trimX, dimensions[1] - trimY];
29291         return calcZoom(iD.geo.Extent(_), trimmed);
29292     };
29293
29294     map.editable = function() {
29295         return map.zoom() >= context.minEditableZoom();
29296     };
29297
29298     map.minzoom = function(_) {
29299         if (!arguments.length) return minzoom;
29300         minzoom = _;
29301         return map;
29302     };
29303
29304     return d3.rebind(map, dispatch, 'on');
29305 };
29306 iD.MapillaryLayer = function (context) {
29307     var enable = false,
29308         currentImage,
29309         svg, div, request;
29310
29311     function show(image) {
29312         svg.selectAll('g')
29313             .classed('selected', function(d) {
29314                 return currentImage && d.key === currentImage.key;
29315             });
29316
29317         div.classed('hidden', false)
29318             .classed('temp', image !== currentImage);
29319
29320         div.selectAll('img')
29321             .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg');
29322
29323         div.selectAll('a')
29324             .attr('href', 'http://mapillary.com/map/im/' + image.key);
29325     }
29326
29327     function hide() {
29328         currentImage = undefined;
29329
29330         svg.selectAll('g')
29331             .classed('selected', false);
29332
29333         div.classed('hidden', true);
29334     }
29335
29336     function transform(image) {
29337         var t = 'translate(' + context.projection(image.loc) + ')';
29338         if (image.ca) t += 'rotate(' + image.ca + ',0,0)';
29339         return t;
29340     }
29341
29342     function render(selection) {
29343         svg = selection.selectAll('svg')
29344             .data([0]);
29345
29346         svg.enter().append('svg')
29347             .on('click', function() {
29348                 var image = d3.event.target.__data__;
29349                 if (currentImage === image) {
29350                     hide();
29351                 } else {
29352                     currentImage = image;
29353                     show(image);
29354                 }
29355             })
29356             .on('mouseover', function() {
29357                 show(d3.event.target.__data__);
29358             })
29359             .on('mouseout', function() {
29360                 if (currentImage) {
29361                     show(currentImage);
29362                 } else {
29363                     hide();
29364                 }
29365             });
29366
29367         svg.style('display', enable ? 'block' : 'none');
29368
29369         div = context.container().selectAll('.mapillary-image')
29370             .data([0]);
29371
29372         var enter = div.enter().append('div')
29373             .attr('class', 'mapillary-image');
29374
29375         enter.append('button')
29376             .on('click', hide)
29377             .append('div')
29378             .call(iD.svg.Icon('#icon-close'));
29379
29380         enter.append('img');
29381
29382         enter
29383             .append('a')
29384             .attr('class', 'link')
29385             .attr('target', '_blank')
29386             .call(iD.svg.Icon('#icon-out-link', 'inline'))
29387             .append('span')
29388             .text(t('mapillary.view_on_mapillary'));
29389
29390         if (!enable) {
29391             hide();
29392
29393             svg.selectAll('g')
29394                 .remove();
29395
29396             return;
29397         }
29398
29399         // Update existing images while waiting for new ones to load.
29400         svg.selectAll('g')
29401             .attr('transform', transform);
29402
29403         var extent = context.map().extent();
29404
29405         if (request)
29406             request.abort();
29407
29408         request = d3.json('https://a.mapillary.com/v2/search/s/geojson?client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' +
29409             extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' +
29410             extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true',
29411             function (error, data) {
29412                 if (error) return;
29413
29414                 var images = [];
29415
29416                 for (var i = 0; i < data.features.length; i++) {
29417                     var sequence = data.features[i];
29418                     for (var j = 0; j < sequence.geometry.coordinates.length; j++) {
29419                         images.push({
29420                             key: sequence.properties.keys[j],
29421                             ca: sequence.properties.cas[j],
29422                             loc: sequence.geometry.coordinates[j]
29423                         });
29424                         if (images.length >= 1000) break;
29425                     }
29426                 }
29427
29428                 var g = svg.selectAll('g')
29429                     .data(images, function(d) { return d.key; });
29430
29431                 var enter = g.enter().append('g')
29432                     .attr('class', 'image');
29433
29434                 enter.append('path')
29435                     .attr('class', 'viewfield')
29436                     .attr('transform', 'scale(1.5,1.5),translate(-8, -13)')
29437                     .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');
29438
29439                 enter.append('circle')
29440                     .attr('dx', '0')
29441                     .attr('dy', '0')
29442                     .attr('r', '6');
29443
29444                 g.attr('transform', transform);
29445
29446                 g.exit()
29447                     .remove();
29448             });
29449     }
29450
29451     render.enable = function(_) {
29452         if (!arguments.length) return enable;
29453         enable = _;
29454         return render;
29455     };
29456
29457     render.dimensions = function(_) {
29458         if (!arguments.length) return svg.dimensions();
29459         svg.dimensions(_);
29460         return render;
29461     };
29462
29463     return render;
29464 };
29465 iD.TileLayer = function() {
29466     var tileSize = 256,
29467         tile = d3.geo.tile(),
29468         projection,
29469         cache = {},
29470         tileOrigin,
29471         z,
29472         transformProp = iD.util.prefixCSSProperty('Transform'),
29473         source = d3.functor('');
29474
29475     function tileSizeAtZoom(d, z) {
29476         return Math.ceil(tileSize * Math.pow(2, z - d[2])) / tileSize;
29477     }
29478
29479     function atZoom(t, distance) {
29480         var power = Math.pow(2, distance);
29481         return [
29482             Math.floor(t[0] * power),
29483             Math.floor(t[1] * power),
29484             t[2] + distance];
29485     }
29486
29487     function lookUp(d) {
29488         for (var up = -1; up > -d[2]; up--) {
29489             var tile = atZoom(d, up);
29490             if (cache[source.url(tile)] !== false) {
29491                 return tile;
29492             }
29493         }
29494     }
29495
29496     function uniqueBy(a, n) {
29497         var o = [], seen = {};
29498         for (var i = 0; i < a.length; i++) {
29499             if (seen[a[i][n]] === undefined) {
29500                 o.push(a[i]);
29501                 seen[a[i][n]] = true;
29502             }
29503         }
29504         return o;
29505     }
29506
29507     function addSource(d) {
29508         d.push(source.url(d));
29509         return d;
29510     }
29511
29512     // Update tiles based on current state of `projection`.
29513     function background(selection) {
29514         tile.scale(projection.scale() * 2 * Math.PI)
29515             .translate(projection.translate());
29516
29517         tileOrigin = [
29518             projection.scale() * Math.PI - projection.translate()[0],
29519             projection.scale() * Math.PI - projection.translate()[1]];
29520
29521         z = Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.log(2) - 8, 0);
29522
29523         render(selection);
29524     }
29525
29526     // Derive the tiles onscreen, remove those offscreen and position them.
29527     // Important that this part not depend on `projection` because it's
29528     // rentered when tiles load/error (see #644).
29529     function render(selection) {
29530         var requests = [];
29531
29532         if (source.validZoom(z)) {
29533             tile().forEach(function(d) {
29534                 addSource(d);
29535                 if (d[3] === '') return;
29536                 if (typeof d[3] !== 'string') return; // Workaround for chrome crash https://github.com/openstreetmap/iD/issues/2295
29537                 requests.push(d);
29538                 if (cache[d[3]] === false && lookUp(d)) {
29539                     requests.push(addSource(lookUp(d)));
29540                 }
29541             });
29542
29543             requests = uniqueBy(requests, 3).filter(function(r) {
29544                 // don't re-request tiles which have failed in the past
29545                 return cache[r[3]] !== false;
29546             });
29547         }
29548
29549         var pixelOffset = [
29550             Math.round(source.offset()[0] * Math.pow(2, z)),
29551             Math.round(source.offset()[1] * Math.pow(2, z))
29552         ];
29553
29554         function load(d) {
29555             cache[d[3]] = true;
29556             d3.select(this)
29557                 .on('error', null)
29558                 .on('load', null)
29559                 .classed('tile-loaded', true);
29560             render(selection);
29561         }
29562
29563         function error(d) {
29564             cache[d[3]] = false;
29565             d3.select(this)
29566                 .on('error', null)
29567                 .on('load', null)
29568                 .remove();
29569             render(selection);
29570         }
29571
29572         function imageTransform(d) {
29573             var _ts = tileSize * Math.pow(2, z - d[2]);
29574             var scale = tileSizeAtZoom(d, z);
29575             return 'translate(' +
29576                 (Math.round((d[0] * _ts) - tileOrigin[0]) + pixelOffset[0]) + 'px,' +
29577                 (Math.round((d[1] * _ts) - tileOrigin[1]) + pixelOffset[1]) + 'px)' +
29578                 'scale(' + scale + ',' + scale + ')';
29579         }
29580
29581         var image = selection
29582             .selectAll('img')
29583             .data(requests, function(d) { return d[3]; });
29584
29585         image.exit()
29586             .style(transformProp, imageTransform)
29587             .classed('tile-removing', true)
29588             .each(function() {
29589                 var tile = d3.select(this);
29590                 window.setTimeout(function() {
29591                     if (tile.classed('tile-removing')) {
29592                         tile.remove();
29593                     }
29594                 }, 300);
29595             });
29596
29597         image.enter().append('img')
29598             .attr('class', 'tile')
29599             .attr('src', function(d) { return d[3]; })
29600             .on('error', error)
29601             .on('load', load);
29602
29603         image
29604             .style(transformProp, imageTransform)
29605             .classed('tile-removing', false);
29606     }
29607
29608     background.projection = function(_) {
29609         if (!arguments.length) return projection;
29610         projection = _;
29611         return background;
29612     };
29613
29614     background.dimensions = function(_) {
29615         if (!arguments.length) return tile.size();
29616         tile.size(_);
29617         return background;
29618     };
29619
29620     background.source = function(_) {
29621         if (!arguments.length) return source;
29622         source = _;
29623         cache = {};
29624         tile.scaleExtent(source.scaleExtent);
29625         return background;
29626     };
29627
29628     return background;
29629 };
29630 iD.svg = {
29631     RoundProjection: function(projection) {
29632         return function(d) {
29633             return iD.geo.roundCoords(projection(d));
29634         };
29635     },
29636
29637     PointTransform: function(projection) {
29638         return function(entity) {
29639             // http://jsperf.com/short-array-join
29640             var pt = projection(entity.loc);
29641             return 'translate(' + pt[0] + ',' + pt[1] + ')';
29642         };
29643     },
29644
29645     Round: function () {
29646         return d3.geo.transform({
29647             point: function(x, y) { return this.stream.point(Math.floor(x), Math.floor(y)); }
29648         });
29649     },
29650
29651     Path: function(projection, graph, polygon) {
29652         var cache = {},
29653             round = iD.svg.Round().stream,
29654             clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29655             project = projection.stream,
29656             path = d3.geo.path()
29657                 .projection({stream: function(output) { return polygon ? project(round(output)) : project(clip(round(output))); }});
29658
29659         return function(entity) {
29660             if (entity.id in cache) {
29661                 return cache[entity.id];
29662             } else {
29663                 return cache[entity.id] = path(entity.asGeoJSON(graph));
29664             }
29665         };
29666     },
29667
29668     OneWaySegments: function(projection, graph, dt) {
29669         return function(entity) {
29670             var a,
29671                 b,
29672                 i = 0,
29673                 offset = dt,
29674                 segments = [],
29675                 clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29676                 coordinates = graph.childNodes(entity).map(function(n) {
29677                     return n.loc;
29678                 });
29679
29680             if (entity.tags.oneway === '-1') coordinates.reverse();
29681
29682             d3.geo.stream({
29683                 type: 'LineString',
29684                 coordinates: coordinates
29685             }, projection.stream(clip({
29686                 lineStart: function() {},
29687                 lineEnd: function() {
29688                     a = null;
29689                 },
29690                 point: function(x, y) {
29691                     b = [x, y];
29692
29693                     if (a) {
29694                         var span = iD.geo.euclideanDistance(a, b) - offset;
29695
29696                         if (span >= 0) {
29697                             var angle = Math.atan2(b[1] - a[1], b[0] - a[0]),
29698                                 dx = dt * Math.cos(angle),
29699                                 dy = dt * Math.sin(angle),
29700                                 p = [a[0] + offset * Math.cos(angle),
29701                                      a[1] + offset * Math.sin(angle)];
29702
29703                             var segment = 'M' + a[0] + ',' + a[1] +
29704                                           'L' + p[0] + ',' + p[1];
29705
29706                             for (span -= dt; span >= 0; span -= dt) {
29707                                 p[0] += dx;
29708                                 p[1] += dy;
29709                                 segment += 'L' + p[0] + ',' + p[1];
29710                             }
29711
29712                             segment += 'L' + b[0] + ',' + b[1];
29713                             segments.push({id: entity.id, index: i, d: segment});
29714                         }
29715
29716                         offset = -span;
29717                         i++;
29718                     }
29719
29720                     a = b;
29721                 }
29722             })));
29723
29724             return segments;
29725         };
29726     },
29727
29728     MultipolygonMemberTags: function(graph) {
29729         return function(entity) {
29730             var tags = entity.tags;
29731             graph.parentRelations(entity).forEach(function(relation) {
29732                 if (relation.isMultipolygon()) {
29733                     tags = _.extend({}, relation.tags, tags);
29734                 }
29735             });
29736             return tags;
29737         };
29738     }
29739 };
29740 iD.svg.Areas = function(projection) {
29741     // Patterns only work in Firefox when set directly on element.
29742     // (This is not a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=750632)
29743     var patterns = {
29744         wetland: 'wetland',
29745         beach: 'beach',
29746         scrub: 'scrub',
29747         construction: 'construction',
29748         military: 'construction',
29749         cemetery: 'cemetery',
29750         grave_yard: 'cemetery',
29751         meadow: 'meadow',
29752         farm: 'farmland',
29753         farmland: 'farmland',
29754         orchard: 'orchard'
29755     };
29756
29757     var patternKeys = ['landuse', 'natural', 'amenity'];
29758
29759     function setPattern(d) {
29760         for (var i = 0; i < patternKeys.length; i++) {
29761             if (patterns.hasOwnProperty(d.tags[patternKeys[i]])) {
29762                 this.style.fill = this.style.stroke = 'url("#pattern-' + patterns[d.tags[patternKeys[i]]] + '")';
29763                 return;
29764             }
29765         }
29766         this.style.fill = this.style.stroke = '';
29767     }
29768
29769     return function drawAreas(surface, graph, entities, filter) {
29770         var path = iD.svg.Path(projection, graph, true),
29771             areas = {},
29772             multipolygon;
29773
29774         for (var i = 0; i < entities.length; i++) {
29775             var entity = entities[i];
29776             if (entity.geometry(graph) !== 'area') continue;
29777
29778             multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph);
29779             if (multipolygon) {
29780                 areas[multipolygon.id] = {
29781                     entity: multipolygon.mergeTags(entity.tags),
29782                     area: Math.abs(entity.area(graph))
29783                 };
29784             } else if (!areas[entity.id]) {
29785                 areas[entity.id] = {
29786                     entity: entity,
29787                     area: Math.abs(entity.area(graph))
29788                 };
29789             }
29790         }
29791
29792         areas = d3.values(areas).filter(function hasPath(a) { return path(a.entity); });
29793         areas.sort(function areaSort(a, b) { return b.area - a.area; });
29794         areas = _.pluck(areas, 'entity');
29795
29796         var strokes = areas.filter(function(area) {
29797             return area.type === 'way';
29798         });
29799
29800         var data = {
29801             clip: areas,
29802             shadow: strokes,
29803             stroke: strokes,
29804             fill: areas
29805         };
29806
29807         var clipPaths = surface.selectAll('defs').selectAll('.clipPath')
29808            .filter(filter)
29809            .data(data.clip, iD.Entity.key);
29810
29811         clipPaths.enter()
29812            .append('clipPath')
29813            .attr('class', 'clipPath')
29814            .attr('id', function(entity) { return entity.id + '-clippath'; })
29815            .append('path');
29816
29817         clipPaths.selectAll('path')
29818            .attr('d', path);
29819
29820         clipPaths.exit()
29821            .remove();
29822
29823         var areagroup = surface
29824             .select('.layer-areas')
29825             .selectAll('g.areagroup')
29826             .data(['fill', 'shadow', 'stroke']);
29827
29828         areagroup.enter()
29829             .append('g')
29830             .attr('class', function(d) { return 'layer areagroup area-' + d; });
29831
29832         var paths = areagroup
29833             .selectAll('path')
29834             .filter(filter)
29835             .data(function(layer) { return data[layer]; }, iD.Entity.key);
29836
29837         // Remove exiting areas first, so they aren't included in the `fills`
29838         // array used for sorting below (https://github.com/openstreetmap/iD/issues/1903).
29839         paths.exit()
29840             .remove();
29841
29842         var fills = surface.selectAll('.area-fill path.area')[0];
29843
29844         var bisect = d3.bisector(function(node) {
29845             return -node.__data__.area(graph);
29846         }).left;
29847
29848         function sortedByArea(entity) {
29849             if (this.__data__ === 'fill') {
29850                 return fills[bisect(fills, -entity.area(graph))];
29851             }
29852         }
29853
29854         paths.enter()
29855             .insert('path', sortedByArea)
29856             .each(function(entity) {
29857                 var layer = this.parentNode.__data__;
29858
29859                 this.setAttribute('class', entity.type + ' area ' + layer + ' ' + entity.id);
29860
29861                 if (layer === 'fill') {
29862                     this.setAttribute('clip-path', 'url(#' + entity.id + '-clippath)');
29863                     setPattern.apply(this, arguments);
29864                 }
29865             })
29866             .call(iD.svg.TagClasses());
29867
29868         paths
29869             .attr('d', path);
29870     };
29871 };
29872 /*
29873     A standalone SVG element that contains only a `defs` sub-element. To be
29874     used once globally, since defs IDs must be unique within a document.
29875 */
29876 iD.svg.Defs = function(context) {
29877
29878     function SVGSpriteDefinition(id, href) {
29879         return function(defs) {
29880             d3.xml(href, 'image/svg+xml', function(err, svg) {
29881                 if (err) return;
29882                 defs.node().appendChild(
29883                     d3.select(svg.documentElement).attr('id', id).node()
29884                 );
29885             });
29886         };
29887     }
29888
29889     return function (selection) {
29890         var defs = selection.append('defs');
29891
29892         // marker
29893         defs.append('marker')
29894             .attr({
29895                 id: 'oneway-marker',
29896                 viewBox: '0 0 10 10',
29897                 refY: 2.5,
29898                 refX: 5,
29899                 markerWidth: 2,
29900                 markerHeight: 2,
29901                 orient: 'auto'
29902             })
29903             .append('path')
29904             .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');
29905
29906         // patterns
29907         var patterns = defs.selectAll('pattern')
29908             .data([
29909                 // pattern name, pattern image name
29910                 ['wetland', 'wetland'],
29911                 ['construction', 'construction'],
29912                 ['cemetery', 'cemetery'],
29913                 ['orchard', 'orchard'],
29914                 ['farmland', 'farmland'],
29915                 ['beach', 'dots'],
29916                 ['scrub', 'dots'],
29917                 ['meadow', 'dots']
29918             ])
29919             .enter()
29920             .append('pattern')
29921             .attr({
29922                 id: function (d) {
29923                     return 'pattern-' + d[0];
29924                 },
29925                 width: 32,
29926                 height: 32,
29927                 patternUnits: 'userSpaceOnUse'
29928             });
29929
29930         patterns.append('rect')
29931             .attr({
29932                 x: 0,
29933                 y: 0,
29934                 width: 32,
29935                 height: 32,
29936                 'class': function (d) {
29937                     return 'pattern-color-' + d[0];
29938                 }
29939             });
29940
29941         patterns.append('image')
29942             .attr({
29943                 x: 0,
29944                 y: 0,
29945                 width: 32,
29946                 height: 32
29947             })
29948             .attr('xlink:href', function (d) {
29949                 return context.imagePath('pattern/' + d[1] + '.png');
29950             });
29951
29952         // clip paths
29953         defs.selectAll()
29954             .data([12, 18, 20, 32, 45])
29955             .enter().append('clipPath')
29956             .attr('id', function (d) {
29957                 return 'clip-square-' + d;
29958             })
29959             .append('rect')
29960             .attr('x', 0)
29961             .attr('y', 0)
29962             .attr('width', function (d) {
29963                 return d;
29964             })
29965             .attr('height', function (d) {
29966                 return d;
29967             });
29968
29969         defs.call(SVGSpriteDefinition(
29970             'iD-sprite',
29971             context.imagePath('iD-sprite.svg')));
29972
29973         defs.call(SVGSpriteDefinition(
29974             'maki-sprite',
29975             context.imagePath('maki-sprite.svg')));
29976     };
29977 };
29978 iD.svg.Icon = function(name, svgklass, useklass) {
29979     return function (selection) {
29980         selection.selectAll('svg')
29981             .data([0])
29982             .enter()
29983             .append('svg')
29984             .attr('class', 'icon ' + (svgklass || ''))
29985             .append('use')
29986             .attr('xlink:href', name)
29987             .attr('class', useklass);
29988     };
29989 };
29990 iD.svg.Labels = function(projection, context) {
29991     var path = d3.geo.path().projection(projection);
29992
29993     // Replace with dict and iterate over entities tags instead?
29994     var label_stack = [
29995         ['line', 'aeroway'],
29996         ['line', 'highway'],
29997         ['line', 'railway'],
29998         ['line', 'waterway'],
29999         ['area', 'aeroway'],
30000         ['area', 'amenity'],
30001         ['area', 'building'],
30002         ['area', 'historic'],
30003         ['area', 'leisure'],
30004         ['area', 'man_made'],
30005         ['area', 'natural'],
30006         ['area', 'shop'],
30007         ['area', 'tourism'],
30008         ['point', 'aeroway'],
30009         ['point', 'amenity'],
30010         ['point', 'building'],
30011         ['point', 'historic'],
30012         ['point', 'leisure'],
30013         ['point', 'man_made'],
30014         ['point', 'natural'],
30015         ['point', 'shop'],
30016         ['point', 'tourism'],
30017         ['line', 'name'],
30018         ['area', 'name'],
30019         ['point', 'name']
30020     ];
30021
30022     var default_size = 12;
30023
30024     var font_sizes = label_stack.map(function(d) {
30025         var style = iD.util.getStyle('text.' + d[0] + '.tag-' + d[1]),
30026             m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
30027         if (m) return parseInt(m[1], 10);
30028
30029         style = iD.util.getStyle('text.' + d[0]);
30030         m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
30031         if (m) return parseInt(m[1], 10);
30032
30033         return default_size;
30034     });
30035
30036     var iconSize = 18;
30037
30038     var pointOffsets = [
30039         [15, -11, 'start'], // right
30040         [10, -11, 'start'], // unused right now
30041         [-15, -11, 'end']
30042     ];
30043
30044     var lineOffsets = [50, 45, 55, 40, 60, 35, 65, 30, 70, 25,
30045         75, 20, 80, 15, 95, 10, 90, 5, 95];
30046
30047
30048     var noIcons = ['building', 'landuse', 'natural'];
30049     function blacklisted(preset) {
30050         return _.any(noIcons, function(s) {
30051             return preset.id.indexOf(s) >= 0;
30052         });
30053     }
30054
30055     function get(array, prop) {
30056         return function(d, i) { return array[i][prop]; };
30057     }
30058
30059     var textWidthCache = {};
30060
30061     function textWidth(text, size, elem) {
30062         var c = textWidthCache[size];
30063         if (!c) c = textWidthCache[size] = {};
30064
30065         if (c[text]) {
30066             return c[text];
30067
30068         } else if (elem) {
30069             c[text] = elem.getComputedTextLength();
30070             return c[text];
30071
30072         } else {
30073             var str = encodeURIComponent(text).match(/%[CDEFcdef]/g);
30074             if (str === null) {
30075                 return size / 3 * 2 * text.length;
30076             } else {
30077                 return size / 3 * (2 * text.length + str.length);
30078             }
30079         }
30080     }
30081
30082     function drawLineLabels(group, entities, filter, classes, labels) {
30083         var texts = group.selectAll('text.' + classes)
30084             .filter(filter)
30085             .data(entities, iD.Entity.key);
30086
30087         texts.enter()
30088             .append('text')
30089             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; })
30090             .append('textPath')
30091             .attr('class', 'textpath');
30092
30093
30094         texts.selectAll('.textpath')
30095             .filter(filter)
30096             .data(entities, iD.Entity.key)
30097             .attr({
30098                 'startOffset': '50%',
30099                 'xlink:href': function(d) { return '#labelpath-' + d.id; }
30100             })
30101             .text(iD.util.displayName);
30102
30103         texts.exit().remove();
30104     }
30105
30106     function drawLinePaths(group, entities, filter, classes, labels) {
30107         var halos = group.selectAll('path')
30108             .filter(filter)
30109             .data(entities, iD.Entity.key);
30110
30111         halos.enter()
30112             .append('path')
30113             .style('stroke-width', get(labels, 'font-size'))
30114             .attr('id', function(d) { return 'labelpath-' + d.id; })
30115             .attr('class', classes);
30116
30117         halos.attr('d', get(labels, 'lineString'));
30118
30119         halos.exit().remove();
30120     }
30121
30122     function drawPointLabels(group, entities, filter, classes, labels) {
30123
30124         var texts = group.selectAll('text.' + classes)
30125             .filter(filter)
30126             .data(entities, iD.Entity.key);
30127
30128         texts.enter()
30129             .append('text')
30130             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; });
30131
30132         texts.attr('x', get(labels, 'x'))
30133             .attr('y', get(labels, 'y'))
30134             .style('text-anchor', get(labels, 'textAnchor'))
30135             .text(iD.util.displayName)
30136             .each(function(d, i) { textWidth(iD.util.displayName(d), labels[i].height, this); });
30137
30138         texts.exit().remove();
30139         return texts;
30140     }
30141
30142     function drawAreaLabels(group, entities, filter, classes, labels) {
30143         entities = entities.filter(hasText);
30144         labels = labels.filter(hasText);
30145         return drawPointLabels(group, entities, filter, classes, labels);
30146
30147         function hasText(d, i) {
30148             return labels[i].hasOwnProperty('x') && labels[i].hasOwnProperty('y');
30149         }
30150     }
30151
30152     function drawAreaIcons(group, entities, filter, classes, labels) {
30153         var icons = group.selectAll('use')
30154             .filter(filter)
30155             .data(entities, iD.Entity.key);
30156
30157         icons.enter()
30158             .append('use')
30159             .attr('width', '18px')
30160             .attr('height', '18px');
30161
30162         icons.attr('transform', get(labels, 'transform'))
30163             .attr('xlink:href', function(d) {
30164                 return '#' + context.presets().match(d, context.graph()).icon + '-18';
30165             });
30166
30167
30168         icons.exit().remove();
30169     }
30170
30171     function reverse(p) {
30172         var angle = Math.atan2(p[1][1] - p[0][1], p[1][0] - p[0][0]);
30173         return !(p[0][0] < p[p.length - 1][0] && angle < Math.PI/2 && angle > -Math.PI/2);
30174     }
30175
30176     function lineString(nodes) {
30177         return 'M' + nodes.join('L');
30178     }
30179
30180     function subpath(nodes, from, to) {
30181         function segmentLength(i) {
30182             var dx = nodes[i][0] - nodes[i + 1][0];
30183             var dy = nodes[i][1] - nodes[i + 1][1];
30184             return Math.sqrt(dx * dx + dy * dy);
30185         }
30186
30187         var sofar = 0,
30188             start, end, i0, i1;
30189         for (var i = 0; i < nodes.length - 1; i++) {
30190             var current = segmentLength(i);
30191             var portion;
30192             if (!start && sofar + current >= from) {
30193                 portion = (from - sofar) / current;
30194                 start = [
30195                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30196                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30197                 ];
30198                 i0 = i + 1;
30199             }
30200             if (!end && sofar + current >= to) {
30201                 portion = (to - sofar) / current;
30202                 end = [
30203                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30204                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30205                 ];
30206                 i1 = i + 1;
30207             }
30208             sofar += current;
30209
30210         }
30211         var ret = nodes.slice(i0, i1);
30212         ret.unshift(start);
30213         ret.push(end);
30214         return ret;
30215
30216     }
30217
30218     function hideOnMouseover() {
30219         var layers = d3.select(this)
30220             .selectAll('.layer-label, .layer-halo');
30221
30222         layers.selectAll('.proximate')
30223             .classed('proximate', false);
30224
30225         var mouse = context.mouse(),
30226             pad = 50,
30227             rect = [mouse[0] - pad, mouse[1] - pad, mouse[0] + pad, mouse[1] + pad],
30228             ids = _.pluck(rtree.search(rect), 'id');
30229
30230         if (!ids.length) return;
30231         layers.selectAll('.' + ids.join(', .'))
30232             .classed('proximate', true);
30233     }
30234
30235     var rtree = rbush(),
30236         rectangles = {};
30237
30238     function labels(surface, graph, entities, filter, dimensions, fullRedraw) {
30239
30240         var hidePoints = !surface.select('.node.point').node();
30241
30242         var labelable = [], i, k, entity;
30243         for (i = 0; i < label_stack.length; i++) labelable.push([]);
30244
30245         if (fullRedraw) {
30246             rtree.clear();
30247             rectangles = {};
30248         } else {
30249             for (i = 0; i < entities.length; i++) {
30250                 rtree.remove(rectangles[entities[i].id]);
30251             }
30252         }
30253
30254         // Split entities into groups specified by label_stack
30255         for (i = 0; i < entities.length; i++) {
30256             entity = entities[i];
30257             var geometry = entity.geometry(graph);
30258
30259             if (geometry === 'vertex')
30260                 continue;
30261             if (hidePoints && geometry === 'point')
30262                 continue;
30263
30264             var preset = geometry === 'area' && context.presets().match(entity, graph),
30265                 icon = preset && !blacklisted(preset) && preset.icon;
30266
30267             if (!icon && !iD.util.displayName(entity))
30268                 continue;
30269
30270             for (k = 0; k < label_stack.length; k++) {
30271                 if (geometry === label_stack[k][0] && entity.tags[label_stack[k][1]]) {
30272                     labelable[k].push(entity);
30273                     break;
30274                 }
30275             }
30276         }
30277
30278         var positions = {
30279             point: [],
30280             line: [],
30281             area: []
30282         };
30283
30284         var labelled = {
30285             point: [],
30286             line: [],
30287             area: []
30288         };
30289
30290         // Try and find a valid label for labellable entities
30291         for (k = 0; k < labelable.length; k++) {
30292             var font_size = font_sizes[k];
30293             for (i = 0; i < labelable[k].length; i++) {
30294                 entity = labelable[k][i];
30295                 var name = iD.util.displayName(entity),
30296                     width = name && textWidth(name, font_size),
30297                     p;
30298                 if (entity.geometry(graph) === 'point') {
30299                     p = getPointLabel(entity, width, font_size);
30300                 } else if (entity.geometry(graph) === 'line') {
30301                     p = getLineLabel(entity, width, font_size);
30302                 } else if (entity.geometry(graph) === 'area') {
30303                     p = getAreaLabel(entity, width, font_size);
30304                 }
30305                 if (p) {
30306                     p.classes = entity.geometry(graph) + ' tag-' + label_stack[k][1];
30307                     positions[entity.geometry(graph)].push(p);
30308                     labelled[entity.geometry(graph)].push(entity);
30309                 }
30310             }
30311         }
30312
30313         function getPointLabel(entity, width, height) {
30314             var coord = projection(entity.loc),
30315                 m = 5,  // margin
30316                 offset = pointOffsets[0],
30317                 p = {
30318                     height: height,
30319                     width: width,
30320                     x: coord[0] + offset[0],
30321                     y: coord[1] + offset[1],
30322                     textAnchor: offset[2]
30323                 };
30324             var rect = [p.x - m, p.y - m, p.x + width + m, p.y + height + m];
30325             if (tryInsert(rect, entity.id)) return p;
30326         }
30327
30328
30329         function getLineLabel(entity, width, height) {
30330             var nodes = _.pluck(graph.childNodes(entity), 'loc').map(projection),
30331                 length = iD.geo.pathLength(nodes);
30332             if (length < width + 20) return;
30333
30334             for (var i = 0; i < lineOffsets.length; i++) {
30335                 var offset = lineOffsets[i],
30336                     middle = offset / 100 * length,
30337                     start = middle - width/2;
30338                 if (start < 0 || start + width > length) continue;
30339                 var sub = subpath(nodes, start, start + width),
30340                     rev = reverse(sub),
30341                     rect = [
30342                         Math.min(sub[0][0], sub[sub.length - 1][0]) - 10,
30343                         Math.min(sub[0][1], sub[sub.length - 1][1]) - 10,
30344                         Math.max(sub[0][0], sub[sub.length - 1][0]) + 20,
30345                         Math.max(sub[0][1], sub[sub.length - 1][1]) + 30
30346                     ];
30347                 if (rev) sub = sub.reverse();
30348                 if (tryInsert(rect, entity.id)) return {
30349                     'font-size': height + 2,
30350                     lineString: lineString(sub),
30351                     startOffset: offset + '%'
30352                 };
30353             }
30354         }
30355
30356         function getAreaLabel(entity, width, height) {
30357             var centroid = path.centroid(entity.asGeoJSON(graph, true)),
30358                 extent = entity.extent(graph),
30359                 entitywidth = projection(extent[1])[0] - projection(extent[0])[0],
30360                 rect;
30361
30362             if (isNaN(centroid[0]) || entitywidth < 20) return;
30363
30364             var iconX = centroid[0] - (iconSize/2),
30365                 iconY = centroid[1] - (iconSize/2),
30366                 textOffset = iconSize + 5;
30367
30368             var p = {
30369                 transform: 'translate(' + iconX + ',' + iconY + ')'
30370             };
30371
30372             if (width && entitywidth >= width + 20) {
30373                 p.x = centroid[0];
30374                 p.y = centroid[1] + textOffset;
30375                 p.textAnchor = 'middle';
30376                 p.height = height;
30377                 rect = [p.x - width/2, p.y, p.x + width/2, p.y + height + textOffset];
30378             } else {
30379                 rect = [iconX, iconY, iconX + iconSize, iconY + iconSize];
30380             }
30381
30382             if (tryInsert(rect, entity.id)) return p;
30383
30384         }
30385
30386         function tryInsert(rect, id) {
30387             // Check that label is visible
30388             if (rect[0] < 0 || rect[1] < 0 || rect[2] > dimensions[0] ||
30389                 rect[3] > dimensions[1]) return false;
30390             var v = rtree.search(rect).length === 0;
30391             if (v) {
30392                 rect.id = id;
30393                 rtree.insert(rect);
30394                 rectangles[id] = rect;
30395             }
30396             return v;
30397         }
30398
30399         var label = surface.select('.layer-label'),
30400             halo = surface.select('.layer-halo');
30401
30402         // points
30403         drawPointLabels(label, labelled.point, filter, 'pointlabel', positions.point);
30404         drawPointLabels(halo, labelled.point, filter, 'pointlabel-halo', positions.point);
30405
30406         // lines
30407         drawLinePaths(halo, labelled.line, filter, '', positions.line);
30408         drawLineLabels(label, labelled.line, filter, 'linelabel', positions.line);
30409         drawLineLabels(halo, labelled.line, filter, 'linelabel-halo', positions.line);
30410
30411         // areas
30412         drawAreaLabels(label, labelled.area, filter, 'arealabel', positions.area);
30413         drawAreaLabels(halo, labelled.area, filter, 'arealabel-halo', positions.area);
30414         drawAreaIcons(label, labelled.area, filter, 'arealabel-icon', positions.area);
30415     }
30416
30417     labels.supersurface = function(supersurface) {
30418         supersurface
30419             .on('mousemove.hidelabels', hideOnMouseover)
30420             .on('mousedown.hidelabels', function () {
30421                 supersurface.on('mousemove.hidelabels', null);
30422             })
30423             .on('mouseup.hidelabels', function () {
30424                 supersurface.on('mousemove.hidelabels', hideOnMouseover);
30425             });
30426     };
30427
30428     return labels;
30429 };
30430 iD.svg.Lines = function(projection) {
30431
30432     var highway_stack = {
30433         motorway: 0,
30434         motorway_link: 1,
30435         trunk: 2,
30436         trunk_link: 3,
30437         primary: 4,
30438         primary_link: 5,
30439         secondary: 6,
30440         tertiary: 7,
30441         unclassified: 8,
30442         residential: 9,
30443         service: 10,
30444         footway: 11
30445     };
30446
30447     function waystack(a, b) {
30448         var as = 0, bs = 0;
30449
30450         if (a.tags.highway) { as -= highway_stack[a.tags.highway]; }
30451         if (b.tags.highway) { bs -= highway_stack[b.tags.highway]; }
30452         return as - bs;
30453     }
30454
30455     return function drawLines(surface, graph, entities, filter) {
30456         var ways = [], pathdata = {}, onewaydata = {},
30457             getPath = iD.svg.Path(projection, graph);
30458
30459         for (var i = 0; i < entities.length; i++) {
30460             var entity = entities[i],
30461                 outer = iD.geo.simpleMultipolygonOuterMember(entity, graph);
30462             if (outer) {
30463                 ways.push(entity.mergeTags(outer.tags));
30464             } else if (entity.geometry(graph) === 'line') {
30465                 ways.push(entity);
30466             }
30467         }
30468
30469         ways = ways.filter(getPath);
30470
30471         pathdata = _.groupBy(ways, function(way) { return way.layer(); });
30472
30473         _.forOwn(pathdata, function(v, k) {
30474             onewaydata[k] = _(v)
30475                 .filter(function(d) { return d.isOneWay(); })
30476                 .map(iD.svg.OneWaySegments(projection, graph, 35))
30477                 .flatten()
30478                 .valueOf();
30479         });
30480
30481         var layergroup = surface
30482             .select('.layer-lines')
30483             .selectAll('g.layergroup')
30484             .data(d3.range(-10, 11));
30485
30486         layergroup.enter()
30487             .append('g')
30488             .attr('class', function(d) { return 'layer layergroup layer' + String(d); });
30489
30490
30491         var linegroup = layergroup
30492             .selectAll('g.linegroup')
30493             .data(['shadow', 'casing', 'stroke']);
30494
30495         linegroup.enter()
30496             .append('g')
30497             .attr('class', function(d) { return 'layer linegroup line-' + d; });
30498
30499
30500         var lines = linegroup
30501             .selectAll('path')
30502             .filter(filter)
30503             .data(
30504                 function() { return pathdata[this.parentNode.parentNode.__data__] || []; },
30505                 iD.Entity.key
30506             );
30507
30508         // Optimization: call simple TagClasses only on enter selection. This
30509         // works because iD.Entity.key is defined to include the entity v attribute.
30510         lines.enter()
30511             .append('path')
30512             .attr('class', function(d) { return 'way line ' + this.parentNode.__data__ + ' ' + d.id; })
30513             .call(iD.svg.TagClasses());
30514
30515         lines
30516             .sort(waystack)
30517             .attr('d', getPath)
30518             .call(iD.svg.TagClasses().tags(iD.svg.MultipolygonMemberTags(graph)));
30519
30520         lines.exit()
30521             .remove();
30522
30523
30524         var onewaygroup = layergroup
30525             .selectAll('g.onewaygroup')
30526             .data(['oneway']);
30527
30528         onewaygroup.enter()
30529             .append('g')
30530             .attr('class', 'layer onewaygroup');
30531
30532
30533         var oneways = onewaygroup
30534             .selectAll('path')
30535             .filter(filter)
30536             .data(
30537                 function() { return onewaydata[this.parentNode.parentNode.__data__] || []; },
30538                 function(d) { return [d.id, d.index]; }
30539             );
30540
30541         oneways.enter()
30542             .append('path')
30543             .attr('class', 'oneway')
30544             .attr('marker-mid', 'url(#oneway-marker)');
30545
30546         oneways
30547             .attr('d', function(d) { return d.d; });
30548
30549         oneways.exit()
30550             .remove();
30551
30552     };
30553 };
30554 iD.svg.Midpoints = function(projection, context) {
30555     return function drawMidpoints(surface, graph, entities, filter, extent) {
30556         var poly = extent.polygon(),
30557             midpoints = {};
30558
30559         for (var i = 0; i < entities.length; i++) {
30560             var entity = entities[i];
30561
30562             if (entity.type !== 'way')
30563                 continue;
30564             if (!filter(entity))
30565                 continue;
30566             if (context.selectedIDs().indexOf(entity.id) < 0)
30567                 continue;
30568
30569             var nodes = graph.childNodes(entity);
30570             for (var j = 0; j < nodes.length - 1; j++) {
30571
30572                 var a = nodes[j],
30573                     b = nodes[j + 1],
30574                     id = [a.id, b.id].sort().join('-');
30575
30576                 if (midpoints[id]) {
30577                     midpoints[id].parents.push(entity);
30578                 } else {
30579                     if (iD.geo.euclideanDistance(projection(a.loc), projection(b.loc)) > 40) {
30580                         var point = iD.geo.interp(a.loc, b.loc, 0.5),
30581                             loc = null;
30582
30583                         if (extent.intersects(point)) {
30584                             loc = point;
30585                         } else {
30586                             for (var k = 0; k < 4; k++) {
30587                                 point = iD.geo.lineIntersection([a.loc, b.loc], [poly[k], poly[k+1]]);
30588                                 if (point &&
30589                                     iD.geo.euclideanDistance(projection(a.loc), projection(point)) > 20 &&
30590                                     iD.geo.euclideanDistance(projection(b.loc), projection(point)) > 20)
30591                                 {
30592                                     loc = point;
30593                                     break;
30594                                 }
30595                             }
30596                         }
30597
30598                         if (loc) {
30599                             midpoints[id] = {
30600                                 type: 'midpoint',
30601                                 id: id,
30602                                 loc: loc,
30603                                 edge: [a.id, b.id],
30604                                 parents: [entity]
30605                             };
30606                         }
30607                     }
30608                 }
30609             }
30610         }
30611
30612         function midpointFilter(d) {
30613             if (midpoints[d.id])
30614                 return true;
30615
30616             for (var i = 0; i < d.parents.length; i++)
30617                 if (filter(d.parents[i]))
30618                     return true;
30619
30620             return false;
30621         }
30622
30623         var groups = surface.select('.layer-hit').selectAll('g.midpoint')
30624             .filter(midpointFilter)
30625             .data(_.values(midpoints), function(d) { return d.id; });
30626
30627         var enter = groups.enter()
30628             .insert('g', ':first-child')
30629             .attr('class', 'midpoint');
30630
30631         enter.append('polygon')
30632             .attr('points', '-6,8 10,0 -6,-8')
30633             .attr('class', 'shadow');
30634
30635         enter.append('polygon')
30636             .attr('points', '-3,4 5,0 -3,-4')
30637             .attr('class', 'fill');
30638
30639         groups
30640             .attr('transform', function(d) {
30641                 var translate = iD.svg.PointTransform(projection),
30642                     a = context.entity(d.edge[0]),
30643                     b = context.entity(d.edge[1]),
30644                     angle = Math.round(iD.geo.angle(a, b, projection) * (180 / Math.PI));
30645                 return translate(d) + ' rotate(' + angle + ')';
30646             })
30647             .call(iD.svg.TagClasses().tags(
30648                 function(d) { return d.parents[0].tags; }
30649             ));
30650
30651         // Propagate data bindings.
30652         groups.select('polygon.shadow');
30653         groups.select('polygon.fill');
30654
30655         groups.exit()
30656             .remove();
30657     };
30658 };
30659 iD.svg.Points = function(projection, context) {
30660     function markerPath(selection, klass) {
30661         selection
30662             .attr('class', klass)
30663             .attr('transform', 'translate(-8, -23)')
30664             .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');
30665     }
30666
30667     function sortY(a, b) {
30668         return b.loc[1] - a.loc[1];
30669     }
30670
30671     return function drawPoints(surface, entities, filter) {
30672         var graph = context.graph(),
30673             wireframe = surface.classed('fill-wireframe'),
30674             points = wireframe ? [] : _.filter(entities, function(e) {
30675                 return e.geometry(graph) === 'point';
30676             });
30677
30678         points.sort(sortY);
30679
30680         var groups = surface.select('.layer-hit').selectAll('g.point')
30681             .filter(filter)
30682             .data(points, iD.Entity.key);
30683
30684         var group = groups.enter()
30685             .append('g')
30686             .attr('class', function(d) { return 'node point ' + d.id; })
30687             .order();
30688
30689         group.append('path')
30690             .call(markerPath, 'shadow');
30691
30692         group.append('path')
30693             .call(markerPath, 'stroke');
30694
30695         group.append('use')
30696             .attr('transform', 'translate(-6, -20)')
30697             .attr('class', 'icon')
30698             .attr('width', '12px')
30699             .attr('height', '12px');
30700
30701         groups.attr('transform', iD.svg.PointTransform(projection))
30702             .call(iD.svg.TagClasses());
30703
30704         // Selecting the following implicitly
30705         // sets the data (point entity) on the element
30706         groups.select('.shadow');
30707         groups.select('.stroke');
30708         groups.select('.icon')
30709             .attr('xlink:href', function(entity) {
30710                 var preset = context.presets().match(entity, context.graph());
30711                 return preset.icon ? '#' + preset.icon + '-12' : '';
30712             });
30713
30714         groups.exit()
30715             .remove();
30716     };
30717 };
30718 iD.svg.Surface = function() {
30719     return function (selection) {
30720         selection.selectAll('defs')
30721             .data([0])
30722             .enter()
30723             .append('defs');
30724
30725         var layers = selection.selectAll('.layer')
30726             .data(['areas', 'lines', 'hit', 'halo', 'label']);
30727
30728         layers.enter().append('g')
30729             .attr('class', function(d) { return 'layer layer-' + d; });
30730     };
30731 };
30732 iD.svg.TagClasses = function() {
30733     var primaries = [
30734             'building', 'highway', 'railway', 'waterway', 'aeroway',
30735             'motorway', 'boundary', 'power', 'amenity', 'natural', 'landuse',
30736             'leisure', 'place'
30737         ],
30738         statuses = [
30739             'proposed', 'construction', 'disused', 'abandoned', 'dismantled',
30740             'razed', 'demolished', 'obliterated'
30741         ],
30742         secondaries = [
30743             'oneway', 'bridge', 'tunnel', 'embankment', 'cutting', 'barrier'
30744         ],
30745         tagClassRe = /^tag-/,
30746         tags = function(entity) { return entity.tags; };
30747
30748
30749     var tagClasses = function(selection) {
30750         selection.each(function tagClassesEach(entity) {
30751             var value = this.className,
30752                 classes, primary, status;
30753
30754             if (value.baseVal !== undefined) value = value.baseVal;
30755
30756             classes = value.trim().split(/\s+/).filter(function(name) {
30757                 return name.length && !tagClassRe.test(name);
30758             }).join(' ');
30759
30760             var t = tags(entity), i, k, v;
30761
30762             // pick at most one primary classification tag..
30763             for (i = 0; i < primaries.length; i++) {
30764                 k = primaries[i];
30765                 v = t[k];
30766                 if (!v || v === 'no') continue;
30767
30768                 primary = k;
30769                 if (statuses.indexOf(v) !== -1) {   // e.g. `railway=abandoned`
30770                     status = v;
30771                     classes += ' tag-' + k;
30772                 } else {
30773                     classes += ' tag-' + k + ' tag-' + k + '-' + v;
30774                 }
30775
30776                 break;
30777             }
30778
30779             // add at most one ephemeral status tag, only if relates to primary tag..
30780             if (!status) {
30781                 for (i = 0; i < statuses.length; i++) {
30782                     k = statuses[i];
30783                     v = t[k];
30784                     if (!v || v === 'no') continue;
30785
30786                     if (v === 'yes') {   // e.g. `railway=rail + abandoned=yes`
30787                         status = k;
30788                     }
30789                     else if (primary && primary === v) {  // e.g. `railway=rail + abandoned=railway`
30790                         status = k;
30791                     } else if (!primary && primaries.indexOf(v) !== -1) {  // e.g. `abandoned=railway`
30792                         status = k;
30793                         primary = v;
30794                         classes += ' tag-' + v;
30795                     }  // else ignore e.g.  `highway=path + abandoned=railway`
30796
30797                     if (status) break;
30798                 }
30799             }
30800
30801             if (status) {
30802                 classes += ' tag-ephemeral';
30803             }
30804
30805             // add any secondary (structure) tags
30806             for (i = 0; i < secondaries.length; i++) {
30807                 k = secondaries[i];
30808                 v = t[k];
30809                 if (!v || v === 'no') continue;
30810                 classes += ' tag-' + k + ' tag-' + k + '-' + v;
30811             }
30812
30813             classes = classes.trim();
30814
30815             if (classes !== value) {
30816                 d3.select(this).attr('class', classes);
30817             }
30818         });
30819     };
30820
30821     tagClasses.tags = function(_) {
30822         if (!arguments.length) return tags;
30823         tags = _;
30824         return tagClasses;
30825     };
30826
30827     return tagClasses;
30828 };
30829 iD.svg.Turns = function(projection) {
30830     return function(surface, graph, turns) {
30831         function key(turn) {
30832             return [turn.from.node + turn.via.node + turn.to.node].join('-');
30833         }
30834
30835         function icon(turn) {
30836             var u = turn.u ? '-u' : '';
30837             if (!turn.restriction)
30838                 return '#turn-yes' + u;
30839             var restriction = graph.entity(turn.restriction).tags.restriction;
30840             return '#turn-' +
30841                 (!turn.indirect_restriction && /^only_/.test(restriction) ? 'only' : 'no') + u;
30842         }
30843
30844         var groups = surface.select('.layer-hit').selectAll('g.turn')
30845             .data(turns, key);
30846
30847         // Enter
30848         var enter = groups.enter().append('g')
30849             .attr('class', 'turn');
30850
30851         var nEnter = enter.filter(function (turn) { return !turn.u; });
30852
30853         nEnter.append('rect')
30854             .attr('transform', 'translate(-22, -12)')
30855             .attr('width', '44')
30856             .attr('height', '24');
30857
30858         nEnter.append('use')
30859             .attr('width', '44')
30860             .attr('height', '24');
30861
30862
30863         var uEnter = enter.filter(function (turn) { return turn.u; });
30864
30865         uEnter.append('circle')
30866             .attr('r', '16');
30867
30868         uEnter.append('use')
30869             .attr('width', '32')
30870             .attr('height', '32');
30871
30872
30873         // Update
30874         groups
30875             .attr('transform', function (turn) {
30876                 var v = graph.entity(turn.via.node),
30877                     t = graph.entity(turn.to.node),
30878                     a = iD.geo.angle(v, t, projection),
30879                     p = projection(v.loc),
30880                     r = turn.u ? 0 : 60;
30881
30882                 return 'translate(' + (r * Math.cos(a) + p[0]) + ',' + (r * Math.sin(a) + p[1]) + ') ' +
30883                     'rotate(' + a * 180 / Math.PI + ')';
30884             });
30885
30886         groups.select('use')
30887             .attr('xlink:href', icon);
30888
30889         groups.select('rect');
30890         groups.select('circle');
30891
30892
30893         // Exit
30894         groups.exit()
30895             .remove();
30896
30897         return this;
30898     };
30899 };
30900 iD.svg.Vertices = function(projection, context) {
30901     var radiuses = {
30902         //       z16-, z17, z18+, tagged
30903         shadow: [6,    7.5,   7.5,  11.5],
30904         stroke: [2.5,  3.5,   3.5,  7],
30905         fill:   [1,    1.5,   1.5,  1.5]
30906     };
30907
30908     var hover;
30909
30910     function siblingAndChildVertices(ids, graph, extent) {
30911         var vertices = {};
30912
30913         function addChildVertices(entity) {
30914             if (!context.features().isHiddenFeature(entity, graph, entity.geometry(graph))) {
30915                 var i;
30916                 if (entity.type === 'way') {
30917                     for (i = 0; i < entity.nodes.length; i++) {
30918                         addChildVertices(graph.entity(entity.nodes[i]));
30919                     }
30920                 } else if (entity.type === 'relation') {
30921                     for (i = 0; i < entity.members.length; i++) {
30922                         var member = context.hasEntity(entity.members[i].id);
30923                         if (member) {
30924                             addChildVertices(member);
30925                         }
30926                     }
30927                 } else if (entity.intersects(extent, graph)) {
30928                     vertices[entity.id] = entity;
30929                 }
30930             }
30931         }
30932
30933         ids.forEach(function(id) {
30934             var entity = context.hasEntity(id);
30935             if (entity && entity.type === 'node') {
30936                 vertices[entity.id] = entity;
30937                 context.graph().parentWays(entity).forEach(function(entity) {
30938                     addChildVertices(entity);
30939                 });
30940             } else if (entity) {
30941                 addChildVertices(entity);
30942             }
30943         });
30944
30945         return vertices;
30946     }
30947
30948     function draw(selection, vertices, klass, graph, zoom) {
30949         var icons = {},
30950             z;
30951
30952         if (zoom < 17) {
30953             z = 0;
30954         } else if (zoom < 18) {
30955             z = 1;
30956         } else {
30957             z = 2;
30958         }
30959
30960         var groups = selection.data(vertices, function(entity) {
30961             return iD.Entity.key(entity);
30962         });
30963
30964         function icon(entity) {
30965             if (entity.id in icons) return icons[entity.id];
30966             icons[entity.id] =
30967                 entity.hasInterestingTags() &&
30968                 context.presets().match(entity, graph).icon;
30969             return icons[entity.id];
30970         }
30971
30972         function classCircle(klass) {
30973             return function(entity) {
30974                 this.setAttribute('class', 'node vertex ' + klass + ' ' + entity.id);
30975             };
30976         }
30977
30978         function setAttributes(selection) {
30979             ['shadow','stroke','fill'].forEach(function(klass) {
30980                 var rads = radiuses[klass];
30981                 selection.selectAll('.' + klass)
30982                     .each(function(entity) {
30983                         var i = z && icon(entity),
30984                             c = i ? 0.5 : 0,
30985                             r = rads[i ? 3 : z];
30986                         this.setAttribute('cx', c);
30987                         this.setAttribute('cy', -c);
30988                         this.setAttribute('r', r);
30989                         if (i && klass === 'fill') {
30990                             this.setAttribute('visibility', 'hidden');
30991                         } else {
30992                             this.removeAttribute('visibility');
30993                         }
30994                     });
30995             });
30996
30997             selection.selectAll('use')
30998                 .each(function() {
30999                     if (z) {
31000                         this.removeAttribute('visibility');
31001                     } else {
31002                         this.setAttribute('visibility', 'hidden');
31003                     }
31004                 });
31005         }
31006
31007         var enter = groups.enter()
31008             .append('g')
31009             .attr('class', function(d) { return 'node vertex ' + klass + ' ' + d.id; });
31010
31011         enter.append('circle')
31012             .each(classCircle('shadow'));
31013
31014         enter.append('circle')
31015             .each(classCircle('stroke'));
31016
31017         // Vertices with icons get a `use`.
31018         enter.filter(function(d) { return icon(d); })
31019             .append('use')
31020             .attr('transform', 'translate(-6, -6)')
31021             .attr('xlink:href', function(d) { return '#' + icon(d) + '-12'; })
31022             .attr('width', '12px')
31023             .attr('height', '12px');
31024
31025         // Vertices with tags get a fill.
31026         enter.filter(function(d) { return d.hasInterestingTags(); })
31027             .append('circle')
31028             .each(classCircle('fill'));
31029
31030         groups
31031             .attr('transform', iD.svg.PointTransform(projection))
31032             .classed('shared', function(entity) { return graph.isShared(entity); })
31033             .call(setAttributes);
31034
31035         groups.exit()
31036             .remove();
31037     }
31038
31039     function drawVertices(surface, graph, entities, filter, extent, zoom) {
31040         var selected = siblingAndChildVertices(context.selectedIDs(), graph, extent),
31041             wireframe = surface.classed('fill-wireframe'),
31042             vertices = [];
31043
31044         for (var i = 0; i < entities.length; i++) {
31045             var entity = entities[i],
31046                 geometry = entity.geometry(graph);
31047
31048             if (wireframe && geometry === 'point') {
31049                 vertices.push(entity);
31050                 continue;
31051             }
31052
31053             if (geometry !== 'vertex')
31054                 continue;
31055
31056             if (entity.id in selected ||
31057                 entity.hasInterestingTags() ||
31058                 entity.isIntersection(graph)) {
31059                 vertices.push(entity);
31060             }
31061         }
31062
31063         surface.select('.layer-hit').selectAll('g.vertex.vertex-persistent')
31064             .filter(filter)
31065             .call(draw, vertices, 'vertex-persistent', graph, zoom);
31066
31067         drawHover(surface, graph, extent, zoom);
31068     }
31069
31070     function drawHover(surface, graph, extent, zoom) {
31071         var hovered = hover ? siblingAndChildVertices([hover.id], graph, extent) : {};
31072
31073         surface.select('.layer-hit').selectAll('g.vertex.vertex-hover')
31074             .call(draw, d3.values(hovered), 'vertex-hover', graph, zoom);
31075     }
31076
31077     drawVertices.drawHover = function(surface, graph, _, extent, zoom) {
31078         if (hover !== _) {
31079             hover = _;
31080             drawHover(surface, graph, extent, zoom);
31081         }
31082     };
31083
31084     return drawVertices;
31085 };
31086 iD.ui = function(context) {
31087     function render(container) {
31088         var map = context.map();
31089
31090         if (iD.detect().opera) container.classed('opera', true);
31091
31092         var hash = iD.behavior.Hash(context);
31093
31094         hash();
31095
31096         if (!hash.hadHash) {
31097             map.centerZoom([-77.02271, 38.90085], 20);
31098         }
31099
31100         container.append('svg')
31101             .attr('id', 'defs')
31102             .call(iD.svg.Defs(context));
31103
31104         container.append('div')
31105             .attr('id', 'sidebar')
31106             .attr('class', 'col4')
31107             .call(ui.sidebar);
31108
31109         var content = container.append('div')
31110             .attr('id', 'content');
31111
31112         var bar = content.append('div')
31113             .attr('id', 'bar')
31114             .attr('class', 'fillD');
31115
31116         var m = content.append('div')
31117             .attr('id', 'map')
31118             .call(map);
31119
31120         content.append('div')
31121             .attr('class', 'map-in-map')
31122             .style('display', 'none')
31123             .call(iD.ui.MapInMap(context));
31124
31125         content.append('div')
31126             .attr('class', 'infobox fillD2')
31127             .style('display', 'none')
31128             .call(iD.ui.Info(context));
31129
31130         bar.append('div')
31131             .attr('class', 'spacer col4');
31132
31133         var limiter = bar.append('div')
31134             .attr('class', 'limiter');
31135
31136         limiter.append('div')
31137             .attr('class', 'button-wrap joined col3')
31138             .call(iD.ui.Modes(context), limiter);
31139
31140         limiter.append('div')
31141             .attr('class', 'button-wrap joined col1')
31142             .call(iD.ui.UndoRedo(context));
31143
31144         limiter.append('div')
31145             .attr('class', 'button-wrap col1')
31146             .call(iD.ui.Save(context));
31147
31148         bar.append('div')
31149             .attr('class', 'full-screen')
31150             .call(iD.ui.FullScreen(context));
31151
31152         bar.append('div')
31153             .attr('class', 'spinner')
31154             .call(iD.ui.Spinner(context));
31155
31156         var controls = bar.append('div')
31157             .attr('class', 'map-controls');
31158
31159         controls.append('div')
31160             .attr('class', 'map-control zoombuttons')
31161             .call(iD.ui.Zoom(context));
31162
31163         controls.append('div')
31164             .attr('class', 'map-control geolocate-control')
31165             .call(iD.ui.Geolocate(map));
31166
31167         controls.append('div')
31168             .attr('class', 'map-control background-control')
31169             .call(iD.ui.Background(context));
31170
31171         controls.append('div')
31172             .attr('class', 'map-control map-data-control')
31173             .call(iD.ui.MapData(context));
31174
31175         controls.append('div')
31176             .attr('class', 'map-control help-control')
31177             .call(iD.ui.Help(context));
31178
31179         var about = content.append('div')
31180             .attr('id', 'about');
31181
31182         about.append('div')
31183             .attr('id', 'attrib')
31184             .call(iD.ui.Attribution(context));
31185
31186         var footer = about.append('div')
31187             .attr('id', 'footer')
31188             .attr('class', 'fillD');
31189
31190         footer.append('div')
31191             .attr('class', 'api-status')
31192             .call(iD.ui.Status(context));
31193
31194         footer.append('div')
31195             .attr('id', 'scale-block')
31196             .call(iD.ui.Scale(context));
31197
31198         var aboutList = footer.append('div')
31199             .attr('id', 'info-block')
31200             .append('ul')
31201             .attr('id', 'about-list');
31202
31203         if (!context.embed()) {
31204             aboutList.call(iD.ui.Account(context));
31205         }
31206
31207         aboutList.append('li')
31208             .append('a')
31209             .attr('target', '_blank')
31210             .attr('tabindex', -1)
31211             .attr('href', 'http://github.com/openstreetmap/iD')
31212             .text(iD.version);
31213
31214         var issueLinks = aboutList.append('li');
31215
31216         issueLinks.append('a')
31217             .attr('target', '_blank')
31218             .attr('tabindex', -1)
31219             .attr('href', 'https://github.com/openstreetmap/iD/issues')
31220             .call(iD.svg.Icon('#icon-bug', 'light'))
31221             .call(bootstrap.tooltip()
31222                 .title(t('report_a_bug'))
31223                 .placement('top')
31224             );
31225
31226         issueLinks.append('a')
31227             .attr('target', '_blank')
31228             .attr('tabindex', -1)
31229             .attr('href', 'https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating')
31230             .call(iD.svg.Icon('#icon-translate', 'light'))
31231             .call(bootstrap.tooltip()
31232                 .title(t('help_translate'))
31233                 .placement('top')
31234             );
31235
31236         aboutList.append('li')
31237             .attr('class', 'feature-warning')
31238             .attr('tabindex', -1)
31239             .call(iD.ui.FeatureInfo(context));
31240
31241         aboutList.append('li')
31242             .attr('class', 'user-list')
31243             .attr('tabindex', -1)
31244             .call(iD.ui.Contributors(context));
31245
31246         window.onbeforeunload = function() {
31247             return context.save();
31248         };
31249
31250         window.onunload = function() {
31251             context.history().unlock();
31252         };
31253
31254         var mapDimensions = map.dimensions();
31255
31256         d3.select(window).on('resize.editor', function() {
31257             mapDimensions = m.dimensions();
31258             map.dimensions(m.dimensions());
31259         });
31260
31261         function pan(d) {
31262             return function() {
31263                 d3.event.preventDefault();
31264                 context.pan(d);
31265             };
31266         }
31267
31268         // pan amount
31269         var pa = 10;
31270
31271         var keybinding = d3.keybinding('main')
31272             .on('⌫', function() { d3.event.preventDefault(); })
31273             .on('←', pan([pa, 0]))
31274             .on('↑', pan([0, pa]))
31275             .on('→', pan([-pa, 0]))
31276             .on('↓', pan([0, -pa]))
31277             .on('⇧←', pan([mapDimensions[0], 0]))
31278             .on('⇧↑', pan([0, mapDimensions[1]]))
31279             .on('⇧→', pan([-mapDimensions[0], 0]))
31280             .on('⇧↓', pan([0, -mapDimensions[1]]))
31281             .on(iD.ui.cmd('⌘←'), pan([mapDimensions[0], 0]))
31282             .on(iD.ui.cmd('⌘↑'), pan([0, mapDimensions[1]]))
31283             .on(iD.ui.cmd('⌘→'), pan([-mapDimensions[0], 0]))
31284             .on(iD.ui.cmd('⌘↓'), pan([0, -mapDimensions[1]]));
31285
31286         d3.select(document)
31287             .call(keybinding);
31288
31289         context.enter(iD.modes.Browse(context));
31290
31291         context.container()
31292             .call(iD.ui.Splash(context))
31293             .call(iD.ui.Restore(context));
31294
31295         var authenticating = iD.ui.Loading(context)
31296             .message(t('loading_auth'));
31297
31298         context.connection()
31299             .on('authenticating.ui', function() {
31300                 context.container()
31301                     .call(authenticating);
31302             })
31303             .on('authenticated.ui', function() {
31304                 authenticating.close();
31305             });
31306     }
31307
31308     function ui(container) {
31309         context.container(container);
31310         context.loadLocale(function() {
31311             render(container);
31312         });
31313     }
31314
31315     ui.sidebar = iD.ui.Sidebar(context);
31316
31317     return ui;
31318 };
31319
31320 iD.ui.tooltipHtml = function(text, key) {
31321     var s = '<span>' + text + '</span>';
31322     if (key) {
31323         s += '<div class="keyhint-wrap">' +
31324             '<span> ' + (t('tooltip_keyhint')) + ' </span>' +
31325             '<span class="keyhint"> ' + key + '</span></div>';
31326     }
31327     return s;
31328 };
31329 iD.ui.Account = function(context) {
31330     var connection = context.connection();
31331
31332     function update(selection) {
31333         if (!connection.authenticated()) {
31334             selection.selectAll('#userLink, #logoutLink')
31335                 .classed('hide', true);
31336             return;
31337         }
31338
31339         connection.userDetails(function(err, details) {
31340             var userLink = selection.select('#userLink'),
31341                 logoutLink = selection.select('#logoutLink');
31342
31343             userLink.html('');
31344             logoutLink.html('');
31345
31346             if (err) return;
31347
31348             selection.selectAll('#userLink, #logoutLink')
31349                 .classed('hide', false);
31350
31351             // Link
31352             userLink.append('a')
31353                 .attr('href', connection.userURL(details.display_name))
31354                 .attr('target', '_blank');
31355
31356             // Add thumbnail or dont
31357             if (details.image_url) {
31358                 userLink.append('img')
31359                     .attr('class', 'icon pre-text user-icon')
31360                     .attr('src', details.image_url);
31361             } else {
31362                 userLink
31363                     .call(iD.svg.Icon('#icon-avatar', 'pre-text light'));
31364             }
31365
31366             // Add user name
31367             userLink.append('span')
31368                 .attr('class', 'label')
31369                 .text(details.display_name);
31370
31371             logoutLink.append('a')
31372                 .attr('class', 'logout')
31373                 .attr('href', '#')
31374                 .text(t('logout'))
31375                 .on('click.logout', function() {
31376                     d3.event.preventDefault();
31377                     connection.logout();
31378                 });
31379         });
31380     }
31381
31382     return function(selection) {
31383         selection.append('li')
31384             .attr('id', 'logoutLink')
31385             .classed('hide', true);
31386
31387         selection.append('li')
31388             .attr('id', 'userLink')
31389             .classed('hide', true);
31390
31391         connection.on('auth.account', function() { update(selection); });
31392         update(selection);
31393     };
31394 };
31395 iD.ui.Attribution = function(context) {
31396     var selection;
31397
31398     function attribution(data, klass) {
31399         var div = selection.selectAll('.' + klass)
31400             .data([0]);
31401
31402         div.enter()
31403             .append('div')
31404             .attr('class', klass);
31405
31406         var background = div.selectAll('.attribution')
31407             .data(data, function(d) { return d.name(); });
31408
31409         background.enter()
31410             .append('span')
31411             .attr('class', 'attribution')
31412             .each(function(d) {
31413                 if (d.terms_html) {
31414                     d3.select(this)
31415                         .html(d.terms_html);
31416                     return;
31417                 }
31418
31419                 var source = d.terms_text || d.id || d.name();
31420
31421                 if (d.logo) {
31422                     source = '<img class="source-image" src="' + context.imagePath(d.logo) + '">';
31423                 }
31424
31425                 if (d.terms_url) {
31426                     d3.select(this)
31427                         .append('a')
31428                         .attr('href', d.terms_url)
31429                         .attr('target', '_blank')
31430                         .html(source);
31431                 } else {
31432                     d3.select(this)
31433                         .text(source);
31434                 }
31435             });
31436
31437         background.exit()
31438             .remove();
31439
31440         var copyright = background.selectAll('.copyright-notice')
31441             .data(function(d) {
31442                 var notice = d.copyrightNotices(context.map().zoom(), context.map().extent());
31443                 return notice ? [notice] : [];
31444             });
31445
31446         copyright.enter()
31447             .append('span')
31448             .attr('class', 'copyright-notice');
31449
31450         copyright.text(String);
31451
31452         copyright.exit()
31453             .remove();
31454     }
31455
31456     function update() {
31457         attribution([context.background().baseLayerSource()], 'base-layer-attribution');
31458         attribution(context.background().overlayLayerSources().filter(function (s) {
31459             return s.validZoom(context.map().zoom());
31460         }), 'overlay-layer-attribution');
31461     }
31462
31463     return function(select) {
31464         selection = select;
31465
31466         context.background()
31467             .on('change.attribution', update);
31468
31469         context.map()
31470             .on('move.attribution', _.throttle(update, 400, {leading: false}));
31471
31472         update();
31473     };
31474 };
31475 iD.ui.Background = function(context) {
31476     var key = 'B',
31477         opacities = [1, 0.75, 0.5, 0.25],
31478         directions = [
31479             ['left', [1, 0]],
31480             ['top', [0, -1]],
31481             ['right', [-1, 0]],
31482             ['bottom', [0, 1]]],
31483         opacityDefault = (context.storage('background-opacity') !== null) ?
31484             (+context.storage('background-opacity')) : 1.0,
31485         customTemplate = context.storage('background-custom-template') || '';
31486
31487     // Can be 0 from <1.3.0 use or due to issue #1923.
31488     if (opacityDefault === 0) opacityDefault = 1.0;
31489
31490     function background(selection) {
31491
31492         function setOpacity(d) {
31493             var bg = context.container().selectAll('.background-layer')
31494                 .transition()
31495                 .style('opacity', d)
31496                 .attr('data-opacity', d);
31497
31498             if (!iD.detect().opera) {
31499                 iD.util.setTransform(bg, 0, 0);
31500             }
31501
31502             opacityList.selectAll('li')
31503                 .classed('active', function(_) { return _ === d; });
31504
31505             context.storage('background-opacity', d);
31506         }
31507
31508         function selectLayer() {
31509             function active(d) {
31510                 return context.background().showsLayer(d);
31511             }
31512
31513             content.selectAll('.layer, .custom_layer')
31514                 .classed('active', active)
31515                 .selectAll('input')
31516                 .property('checked', active);
31517         }
31518
31519         function clickSetSource(d) {
31520             d3.event.preventDefault();
31521             context.background().baseLayerSource(d);
31522             selectLayer();
31523         }
31524
31525         function editCustom() {
31526             d3.event.preventDefault();
31527             var template = window.prompt(t('background.custom_prompt'), customTemplate);
31528             if (!template ||
31529                 template.indexOf('google.com') !== -1 ||
31530                 template.indexOf('googleapis.com') !== -1 ||
31531                 template.indexOf('google.ru') !== -1) {
31532                 selectLayer();
31533                 return;
31534             }
31535             setCustom(template);
31536         }
31537
31538         function setCustom(template) {
31539             context.background().baseLayerSource(iD.BackgroundSource.Custom(template));
31540             selectLayer();
31541             context.storage('background-custom-template', template);
31542         }
31543
31544         function clickSetOverlay(d) {
31545             d3.event.preventDefault();
31546             context.background().toggleOverlayLayer(d);
31547             selectLayer();
31548         }
31549
31550         function drawList(layerList, type, change, filter) {
31551             var sources = context.background()
31552                 .sources(context.map().extent())
31553                 .filter(filter);
31554
31555             var layerLinks = layerList.selectAll('li.layer')
31556                 .data(sources, function(d) { return d.name(); });
31557
31558             var enter = layerLinks.enter()
31559                 .insert('li', '.custom_layer')
31560                 .attr('class', 'layer');
31561
31562             // only set tooltips for layers with tooltips
31563             enter.filter(function(d) { return d.description; })
31564                 .call(bootstrap.tooltip()
31565                     .title(function(d) { return d.description; })
31566                     .placement('top'));
31567
31568             var label = enter.append('label');
31569
31570             label.append('input')
31571                 .attr('type', type)
31572                 .attr('name', 'layers')
31573                 .on('change', change);
31574
31575             label.append('span')
31576                 .text(function(d) { return d.name(); });
31577
31578             layerLinks.exit()
31579                 .remove();
31580
31581             layerList.style('display', layerList.selectAll('li.layer').data().length > 0 ? 'block' : 'none');
31582         }
31583
31584         function update() {
31585             backgroundList.call(drawList, 'radio', clickSetSource, function(d) { return !d.overlay; });
31586             overlayList.call(drawList, 'checkbox', clickSetOverlay, function(d) { return d.overlay; });
31587
31588             selectLayer();
31589
31590             var source = context.background().baseLayerSource();
31591             if (source.id === 'custom') {
31592                 customTemplate = source.template;
31593             }
31594         }
31595
31596         function clickNudge(d) {
31597
31598             var timeout = window.setTimeout(function() {
31599                     interval = window.setInterval(nudge, 100);
31600                 }, 500),
31601                 interval;
31602
31603             d3.select(this).on('mouseup', function() {
31604                 window.clearInterval(interval);
31605                 window.clearTimeout(timeout);
31606                 nudge();
31607             });
31608
31609             function nudge() {
31610                 var offset = context.background()
31611                     .nudge(d[1], context.map().zoom())
31612                     .offset();
31613                 resetButton.classed('disabled', offset[0] === 0 && offset[1] === 0);
31614             }
31615         }
31616
31617         function hide() { setVisible(false); }
31618
31619         function toggle() {
31620             if (d3.event) d3.event.preventDefault();
31621             tooltip.hide(button);
31622             setVisible(!button.classed('active'));
31623         }
31624
31625         function setVisible(show) {
31626             if (show !== shown) {
31627                 button.classed('active', show);
31628                 shown = show;
31629
31630                 if (show) {
31631                     selection.on('mousedown.background-inside', function() {
31632                         return d3.event.stopPropagation();
31633                     });
31634                     content.style('display', 'block')
31635                         .style('right', '-300px')
31636                         .transition()
31637                         .duration(200)
31638                         .style('right', '0px');
31639                 } else {
31640                     content.style('display', 'block')
31641                         .style('right', '0px')
31642                         .transition()
31643                         .duration(200)
31644                         .style('right', '-300px')
31645                         .each('end', function() {
31646                             d3.select(this).style('display', 'none');
31647                         });
31648                     selection.on('mousedown.background-inside', null);
31649                 }
31650             }
31651         }
31652
31653
31654         var content = selection.append('div')
31655                 .attr('class', 'fillL map-overlay col3 content hide'),
31656             tooltip = bootstrap.tooltip()
31657                 .placement('left')
31658                 .html(true)
31659                 .title(iD.ui.tooltipHtml(t('background.description'), key)),
31660             button = selection.append('button')
31661                 .attr('tabindex', -1)
31662                 .on('click', toggle)
31663                 .call(iD.svg.Icon('#icon-layers', 'light'))
31664                 .call(tooltip),
31665             shown = false;
31666
31667         var opa = content.append('div')
31668                 .attr('class', 'opacity-options-wrapper');
31669
31670         opa.append('h4')
31671             .text(t('background.title'));
31672
31673         var opacityList = opa.append('ul')
31674             .attr('class', 'opacity-options');
31675
31676         opacityList.selectAll('div.opacity')
31677             .data(opacities)
31678             .enter()
31679             .append('li')
31680             .attr('data-original-title', function(d) {
31681                 return t('background.percent_brightness', { opacity: (d * 100) });
31682             })
31683             .on('click.set-opacity', setOpacity)
31684             .html('<div class="select-box"></div>')
31685             .call(bootstrap.tooltip()
31686                 .placement('left'))
31687             .append('div')
31688             .attr('class', 'opacity')
31689             .style('opacity', function(d) { return 1.25 - d; });
31690
31691         var backgroundList = content.append('ul')
31692             .attr('class', 'layer-list');
31693
31694         var custom = backgroundList.append('li')
31695             .attr('class', 'custom_layer')
31696             .datum(iD.BackgroundSource.Custom());
31697
31698         custom.append('button')
31699             .attr('class', 'layer-browse')
31700             .call(bootstrap.tooltip()
31701                 .title(t('background.custom_button'))
31702                 .placement('left'))
31703             .on('click', editCustom)
31704             .call(iD.svg.Icon('#icon-search'));
31705
31706         var label = custom.append('label');
31707
31708         label.append('input')
31709             .attr('type', 'radio')
31710             .attr('name', 'layers')
31711             .on('change', function () {
31712                 if (customTemplate) {
31713                     setCustom(customTemplate);
31714                 } else {
31715                     editCustom();
31716                 }
31717             });
31718
31719         label.append('span')
31720             .text(t('background.custom'));
31721
31722         var overlayList = content.append('ul')
31723             .attr('class', 'layer-list');
31724
31725         var controls = content.append('div')
31726             .attr('class', 'controls-list');
31727
31728         var minimapLabel = controls
31729             .append('label')
31730             .call(bootstrap.tooltip()
31731                 .html(true)
31732                 .title(iD.ui.tooltipHtml(t('background.minimap.tooltip'), '/'))
31733                 .placement('top')
31734             );
31735
31736         minimapLabel.classed('minimap-toggle', true)
31737             .append('input')
31738             .attr('type', 'checkbox')
31739             .on('change', function() {
31740                 iD.ui.MapInMap.toggle();
31741                 d3.event.preventDefault();
31742             });
31743
31744         minimapLabel.append('span')
31745             .text(t('background.minimap.description'));
31746
31747         var adjustments = content.append('div')
31748             .attr('class', 'adjustments');
31749
31750         adjustments.append('a')
31751             .text(t('background.fix_misalignment'))
31752             .attr('href', '#')
31753             .classed('hide-toggle', true)
31754             .classed('expanded', false)
31755             .on('click', function() {
31756                 var exp = d3.select(this).classed('expanded');
31757                 nudgeContainer.style('display', exp ? 'none' : 'block');
31758                 d3.select(this).classed('expanded', !exp);
31759                 d3.event.preventDefault();
31760             });
31761
31762         var nudgeContainer = adjustments.append('div')
31763             .attr('class', 'nudge-container cf')
31764             .style('display', 'none');
31765
31766         nudgeContainer.selectAll('button')
31767             .data(directions).enter()
31768             .append('button')
31769             .attr('class', function(d) { return d[0] + ' nudge'; })
31770             .on('mousedown', clickNudge);
31771
31772         var resetButton = nudgeContainer
31773             .append('button')
31774             .attr('class', 'reset disabled')
31775             .on('click', function () {
31776                 context.background().offset([0, 0]);
31777                 resetButton.classed('disabled', true);
31778             })
31779             .call(iD.svg.Icon('#icon-undo'));
31780
31781         context.map()
31782             .on('move.background-update', _.debounce(update, 1000));
31783
31784         context.background()
31785             .on('change.background-update', update);
31786
31787         update();
31788         setOpacity(opacityDefault);
31789
31790         var keybinding = d3.keybinding('background')
31791             .on(key, toggle)
31792             .on('F', hide)
31793             .on('H', hide);
31794
31795         d3.select(document)
31796             .call(keybinding);
31797
31798         context.surface().on('mousedown.background-outside', hide);
31799         context.container().on('mousedown.background-outside', hide);
31800     }
31801
31802     return background;
31803 };
31804 // Translate a MacOS key command into the appropriate Windows/Linux equivalent.
31805 // For example, ⌘Z -> Ctrl+Z
31806 iD.ui.cmd = function(code) {
31807     if (iD.detect().os === 'mac') {
31808         return code;
31809     }
31810
31811     if (iD.detect().os === 'win') {
31812         if (code === '⌘⇧Z') return 'Ctrl+Y';
31813     }
31814
31815     var result = '',
31816         replacements = {
31817             '⌘': 'Ctrl',
31818             '⇧': 'Shift',
31819             '⌥': 'Alt',
31820             '⌫': 'Backspace',
31821             '⌦': 'Delete'
31822         };
31823
31824     for (var i = 0; i < code.length; i++) {
31825         if (code[i] in replacements) {
31826             result += replacements[code[i]] + '+';
31827         } else {
31828             result += code[i];
31829         }
31830     }
31831
31832     return result;
31833 };
31834 iD.ui.Commit = function(context) {
31835     var dispatch = d3.dispatch('cancel', 'save');
31836
31837     function commit(selection) {
31838         var changes = context.history().changes(),
31839             summary = context.history().difference().summary();
31840
31841         function zoomToEntity(change) {
31842             var entity = change.entity;
31843             if (change.changeType !== 'deleted' &&
31844                 context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
31845                 context.map().zoomTo(entity);
31846                 context.surface().selectAll(
31847                     iD.util.entityOrMemberSelector([entity.id], context.graph()))
31848                     .classed('hover', true);
31849             }
31850         }
31851
31852         var header = selection.append('div')
31853             .attr('class', 'header fillL');
31854
31855         header.append('h3')
31856             .text(t('commit.title'));
31857
31858         var body = selection.append('div')
31859             .attr('class', 'body');
31860
31861
31862         // Comment Section
31863         var commentSection = body.append('div')
31864             .attr('class', 'modal-section form-field commit-form');
31865
31866         commentSection.append('label')
31867             .attr('class', 'form-label')
31868             .text(t('commit.message_label'));
31869
31870         var commentField = commentSection.append('textarea')
31871             .attr('placeholder', t('commit.description_placeholder'))
31872             .attr('maxlength', 255)
31873             .property('value', context.storage('comment') || '')
31874             .on('input.save', function() {
31875                 d3.selectAll('.save-section .save-button')
31876                     .attr('disabled', (this.value.length ? null : true));
31877             })
31878             .on('blur.save', function() {
31879                 context.storage('comment', this.value);
31880             });
31881
31882         commentField.node().select();
31883
31884
31885         // Warnings
31886         var warnings = body.selectAll('div.warning-section')
31887             .data([context.history().validate(changes)])
31888             .enter()
31889             .append('div')
31890             .attr('class', 'modal-section warning-section fillL2')
31891             .style('display', function(d) { return _.isEmpty(d) ? 'none' : null; })
31892             .style('background', '#ffb');
31893
31894         warnings.append('h3')
31895             .text(t('commit.warnings'));
31896
31897         var warningLi = warnings.append('ul')
31898             .attr('class', 'changeset-list')
31899             .selectAll('li')
31900             .data(function(d) { return d; })
31901             .enter()
31902             .append('li')
31903             .style()
31904             .on('mouseover', mouseover)
31905             .on('mouseout', mouseout)
31906             .on('click', warningClick);
31907
31908         warningLi
31909             .call(iD.svg.Icon('#icon-alert', 'pre-text'));
31910
31911         warningLi
31912             .append('strong').text(function(d) {
31913                 return d.message;
31914             });
31915
31916         warningLi.filter(function(d) { return d.tooltip; })
31917             .call(bootstrap.tooltip()
31918                 .title(function(d) { return d.tooltip; })
31919                 .placement('top')
31920             );
31921
31922
31923         // Upload Explanation
31924         var saveSection = body.append('div')
31925             .attr('class','modal-section save-section fillL cf');
31926
31927         var prose = saveSection.append('p')
31928             .attr('class', 'commit-info')
31929             .html(t('commit.upload_explanation'));
31930
31931         context.connection().userDetails(function(err, user) {
31932             if (err) return;
31933
31934             var userLink = d3.select(document.createElement('div'));
31935
31936             if (user.image_url) {
31937                 userLink.append('img')
31938                     .attr('src', user.image_url)
31939                     .attr('class', 'icon pre-text user-icon');
31940             }
31941
31942             userLink.append('a')
31943                 .attr('class','user-info')
31944                 .text(user.display_name)
31945                 .attr('href', context.connection().userURL(user.display_name))
31946                 .attr('tabindex', -1)
31947                 .attr('target', '_blank');
31948
31949             prose.html(t('commit.upload_explanation_with_user', {user: userLink.html()}));
31950         });
31951
31952
31953         // Buttons
31954         var buttonSection = saveSection.append('div')
31955             .attr('class','buttons fillL cf');
31956
31957         var saveButton = buttonSection.append('button')
31958             .attr('class', 'action col5 button save-button')
31959             .attr('disabled', function() {
31960                 var n = d3.select('.commit-form textarea').node();
31961                 return (n && n.value.length) ? null : true;
31962             })
31963             .on('click.save', function() {
31964                 dispatch.save({
31965                     comment: commentField.node().value
31966                 });
31967             });
31968
31969         saveButton.append('span')
31970             .attr('class', 'label')
31971             .text(t('commit.save'));
31972
31973         var cancelButton = buttonSection.append('button')
31974             .attr('class', 'action col5 button cancel-button')
31975             .on('click.cancel', function() { dispatch.cancel(); });
31976
31977         cancelButton.append('span')
31978             .attr('class', 'label')
31979             .text(t('commit.cancel'));
31980
31981
31982         // Changes
31983         var changeSection = body.selectAll('div.commit-section')
31984             .data([0])
31985             .enter()
31986             .append('div')
31987             .attr('class', 'commit-section modal-section fillL2');
31988
31989         changeSection.append('h3')
31990             .text(t('commit.changes', {count: summary.length}));
31991
31992         var li = changeSection.append('ul')
31993             .attr('class', 'changeset-list')
31994             .selectAll('li')
31995             .data(summary)
31996             .enter()
31997             .append('li')
31998             .on('mouseover', mouseover)
31999             .on('mouseout', mouseout)
32000             .on('click', zoomToEntity);
32001
32002         li.each(function(d) {
32003             d3.select(this)
32004                 .call(iD.svg.Icon('#icon-' + d.entity.geometry(d.graph), 'pre-text ' + d.changeType));
32005         });
32006
32007         li.append('span')
32008             .attr('class', 'change-type')
32009             .text(function(d) {
32010                 return t('commit.' + d.changeType) + ' ';
32011             });
32012
32013         li.append('strong')
32014             .attr('class', 'entity-type')
32015             .text(function(d) {
32016                 return context.presets().match(d.entity, d.graph).name();
32017             });
32018
32019         li.append('span')
32020             .attr('class', 'entity-name')
32021             .text(function(d) {
32022                 var name = iD.util.displayName(d.entity) || '',
32023                     string = '';
32024                 if (name !== '') string += ':';
32025                 return string += ' ' + name;
32026             });
32027
32028         li.style('opacity', 0)
32029             .transition()
32030             .style('opacity', 1);
32031
32032         li.style('opacity', 0)
32033             .transition()
32034             .style('opacity', 1);
32035
32036         function mouseover(d) {
32037             if (d.entity) {
32038                 context.surface().selectAll(
32039                     iD.util.entityOrMemberSelector([d.entity.id], context.graph())
32040                 ).classed('hover', true);
32041             }
32042         }
32043
32044         function mouseout() {
32045             context.surface().selectAll('.hover')
32046                 .classed('hover', false);
32047         }
32048
32049         function warningClick(d) {
32050             if (d.entity) {
32051                 context.map().zoomTo(d.entity);
32052                 context.enter(
32053                     iD.modes.Select(context, [d.entity.id])
32054                         .suppressMenu(true));
32055             }
32056         }
32057     }
32058
32059     return d3.rebind(commit, dispatch, 'on');
32060 };
32061 iD.ui.confirm = function(selection) {
32062     var modal = iD.ui.modal(selection);
32063
32064     modal.select('.modal')
32065         .classed('modal-alert', true);
32066
32067     var section = modal.select('.content');
32068
32069     section.append('div')
32070         .attr('class', 'modal-section header');
32071
32072     section.append('div')
32073         .attr('class', 'modal-section message-text');
32074
32075     var buttons = section.append('div')
32076         .attr('class', 'modal-section buttons cf');
32077
32078     modal.okButton = function() {
32079         buttons
32080             .append('button')
32081             .attr('class', 'action col4')
32082             .on('click.confirm', function() {
32083                 modal.remove();
32084             })
32085             .text(t('confirm.okay'));
32086
32087         return modal;
32088     };
32089
32090     return modal;
32091 };
32092 iD.ui.Conflicts = function(context) {
32093     var dispatch = d3.dispatch('download', 'cancel', 'save'),
32094         list;
32095
32096     function conflicts(selection) {
32097         var header = selection
32098             .append('div')
32099             .attr('class', 'header fillL');
32100
32101         header
32102             .append('button')
32103             .attr('class', 'fr')
32104             .on('click', function() { dispatch.cancel(); })
32105             .call(iD.svg.Icon('#icon-close'));
32106
32107         header
32108             .append('h3')
32109             .text(t('save.conflict.header'));
32110
32111         var body = selection
32112             .append('div')
32113             .attr('class', 'body fillL');
32114
32115         body
32116             .append('div')
32117             .attr('class', 'conflicts-help')
32118             .text(t('save.conflict.help'))
32119             .append('a')
32120             .attr('class', 'conflicts-download')
32121             .text(t('save.conflict.download_changes'))
32122             .on('click.download', function() { dispatch.download(); });
32123
32124         body
32125             .append('div')
32126             .attr('class', 'conflict-container fillL3')
32127             .call(showConflict, 0);
32128
32129         body
32130             .append('div')
32131             .attr('class', 'conflicts-done')
32132             .attr('opacity', 0)
32133             .style('display', 'none')
32134             .text(t('save.conflict.done'));
32135
32136         var buttons = body
32137             .append('div')
32138             .attr('class','buttons col12 joined conflicts-buttons');
32139
32140         buttons
32141             .append('button')
32142             .attr('disabled', list.length > 1)
32143             .attr('class', 'action conflicts-button col6')
32144             .text(t('save.title'))
32145             .on('click.try_again', function() { dispatch.save(); });
32146
32147         buttons
32148             .append('button')
32149             .attr('class', 'secondary-action conflicts-button col6')
32150             .text(t('confirm.cancel'))
32151             .on('click.cancel', function() { dispatch.cancel(); });
32152     }
32153
32154
32155     function showConflict(selection, index) {
32156         if (index < 0 || index >= list.length) return;
32157
32158         var parent = d3.select(selection.node().parentElement);
32159
32160         // enable save button if this is the last conflict being reviewed..
32161         if (index === list.length - 1) {
32162             window.setTimeout(function() {
32163                 parent.select('.conflicts-button')
32164                     .attr('disabled', null);
32165
32166                 parent.select('.conflicts-done')
32167                     .transition()
32168                     .attr('opacity', 1)
32169                     .style('display', 'block');
32170             }, 250);
32171         }
32172
32173         var item = selection
32174             .selectAll('.conflict')
32175             .data([list[index]]);
32176
32177         var enter = item.enter()
32178             .append('div')
32179             .attr('class', 'conflict');
32180
32181         enter
32182             .append('h4')
32183             .attr('class', 'conflict-count')
32184             .text(t('save.conflict.count', { num: index + 1, total: list.length }));
32185
32186         enter
32187             .append('a')
32188             .attr('class', 'conflict-description')
32189             .attr('href', '#')
32190             .text(function(d) { return d.name; })
32191             .on('click', function(d) {
32192                 zoomToEntity(d.id);
32193                 d3.event.preventDefault();
32194             });
32195
32196         var details = enter
32197             .append('div')
32198             .attr('class', 'conflict-detail-container');
32199
32200         details
32201             .append('ul')
32202             .attr('class', 'conflict-detail-list')
32203             .selectAll('li')
32204             .data(function(d) { return d.details || []; })
32205             .enter()
32206             .append('li')
32207             .attr('class', 'conflict-detail-item')
32208             .html(function(d) { return d; });
32209
32210         details
32211             .append('div')
32212             .attr('class', 'conflict-choices')
32213             .call(addChoices);
32214
32215         details
32216             .append('div')
32217             .attr('class', 'conflict-nav-buttons joined cf')
32218             .selectAll('button')
32219             .data(['previous', 'next'])
32220             .enter()
32221             .append('button')
32222             .text(function(d) { return t('save.conflict.' + d); })
32223             .attr('class', 'conflict-nav-button action col6')
32224             .attr('disabled', function(d, i) {
32225                 return (i === 0 && index === 0) ||
32226                     (i === 1 && index === list.length - 1) || null;
32227             })
32228             .on('click', function(d, i) {
32229                 var container = parent.select('.conflict-container'),
32230                 sign = (i === 0 ? -1 : 1);
32231
32232                 container
32233                     .selectAll('.conflict')
32234                     .remove();
32235
32236                 container
32237                     .call(showConflict, index + sign);
32238
32239                 d3.event.preventDefault();
32240             });
32241
32242         item.exit()
32243             .remove();
32244
32245     }
32246
32247     function addChoices(selection) {
32248         var choices = selection
32249             .append('ul')
32250             .attr('class', 'layer-list')
32251             .selectAll('li')
32252             .data(function(d) { return d.choices || []; });
32253
32254         var enter = choices.enter()
32255             .append('li')
32256             .attr('class', 'layer');
32257
32258         var label = enter
32259             .append('label');
32260
32261         label
32262             .append('input')
32263             .attr('type', 'radio')
32264             .attr('name', function(d) { return d.id; })
32265             .on('change', function(d, i) {
32266                 var ul = this.parentElement.parentElement.parentElement;
32267                 ul.__data__.chosen = i;
32268                 choose(ul, d);
32269             });
32270
32271         label
32272             .append('span')
32273             .text(function(d) { return d.text; });
32274
32275         choices
32276             .each(function(d, i) {
32277                 var ul = this.parentElement;
32278                 if (ul.__data__.chosen === i) choose(ul, d);
32279             });
32280     }
32281
32282     function choose(ul, datum) {
32283         if (d3.event) d3.event.preventDefault();
32284
32285         d3.select(ul)
32286             .selectAll('li')
32287             .classed('active', function(d) { return d === datum; })
32288             .selectAll('input')
32289             .property('checked', function(d) { return d === datum; });
32290
32291         var extent = iD.geo.Extent(),
32292             entity;
32293
32294         entity = context.graph().hasEntity(datum.id);
32295         if (entity) extent._extend(entity.extent(context.graph()));
32296
32297         datum.action();
32298
32299         entity = context.graph().hasEntity(datum.id);
32300         if (entity) extent._extend(entity.extent(context.graph()));
32301
32302         zoomToEntity(datum.id, extent);
32303     }
32304
32305     function zoomToEntity(id, extent) {
32306         context.surface().selectAll('.hover')
32307             .classed('hover', false);
32308
32309         var entity = context.graph().hasEntity(id);
32310         if (entity) {
32311             if (extent) {
32312                 context.map().trimmedExtent(extent);
32313             } else {
32314                 context.map().zoomTo(entity);
32315             }
32316             context.surface().selectAll(
32317                 iD.util.entityOrMemberSelector([entity.id], context.graph()))
32318                 .classed('hover', true);
32319         }
32320     }
32321
32322
32323     // The conflict list should be an array of objects like:
32324     // {
32325     //     id: id,
32326     //     name: entityName(local),
32327     //     details: merge.conflicts(),
32328     //     chosen: 1,
32329     //     choices: [
32330     //         choice(id, keepMine, forceLocal),
32331     //         choice(id, keepTheirs, forceRemote)
32332     //     ]
32333     // }
32334     conflicts.list = function(_) {
32335         if (!arguments.length) return list;
32336         list = _;
32337         return conflicts;
32338     };
32339
32340     return d3.rebind(conflicts, dispatch, 'on');
32341 };
32342 iD.ui.Contributors = function(context) {
32343     function update(selection) {
32344         var users = {},
32345             limit = 4,
32346             entities = context.intersects(context.map().extent());
32347
32348         entities.forEach(function(entity) {
32349             if (entity && entity.user) users[entity.user] = true;
32350         });
32351
32352         var u = Object.keys(users),
32353             subset = u.slice(0, u.length > limit ? limit - 1 : limit);
32354
32355         selection.html('')
32356             .call(iD.svg.Icon('#icon-nearby', 'pre-text light'));
32357
32358         var userList = d3.select(document.createElement('span'));
32359
32360         userList.selectAll()
32361             .data(subset)
32362             .enter()
32363             .append('a')
32364             .attr('class', 'user-link')
32365             .attr('href', function(d) { return context.connection().userURL(d); })
32366             .attr('target', '_blank')
32367             .attr('tabindex', -1)
32368             .text(String);
32369
32370         if (u.length > limit) {
32371             var count = d3.select(document.createElement('span'));
32372
32373             count.append('a')
32374                 .attr('target', '_blank')
32375                 .attr('tabindex', -1)
32376                 .attr('href', function() {
32377                     return context.connection().changesetsURL(context.map().center(), context.map().zoom());
32378                 })
32379                 .text(u.length - limit + 1);
32380
32381             selection.append('span')
32382                 .html(t('contributors.truncated_list', {users: userList.html(), count: count.html()}));
32383         } else {
32384             selection.append('span')
32385                 .html(t('contributors.list', {users: userList.html()}));
32386         }
32387
32388         if (!u.length) {
32389             selection.transition().style('opacity', 0);
32390         } else if (selection.style('opacity') === '0') {
32391             selection.transition().style('opacity', 1);
32392         }
32393     }
32394
32395     return function(selection) {
32396         update(selection);
32397
32398         context.connection().on('loaded.contributors', function() {
32399             update(selection);
32400         });
32401
32402         context.map().on('move.contributors', _.debounce(function() {
32403             update(selection);
32404         }, 500));
32405     };
32406 };
32407 iD.ui.Disclosure = function() {
32408     var dispatch = d3.dispatch('toggled'),
32409         title,
32410         expanded = false,
32411         content = function () {};
32412
32413     var disclosure = function(selection) {
32414         var $link = selection.selectAll('.hide-toggle')
32415             .data([0]);
32416
32417         $link.enter().append('a')
32418             .attr('href', '#')
32419             .attr('class', 'hide-toggle');
32420
32421         $link.text(title)
32422             .on('click', toggle)
32423             .classed('expanded', expanded);
32424
32425         var $body = selection.selectAll('div')
32426             .data([0]);
32427
32428         $body.enter().append('div');
32429
32430         $body.classed('hide', !expanded)
32431             .call(content);
32432
32433         function toggle() {
32434             expanded = !expanded;
32435             $link.classed('expanded', expanded);
32436             $body.call(iD.ui.Toggle(expanded));
32437             dispatch.toggled(expanded);
32438         }
32439     };
32440
32441     disclosure.title = function(_) {
32442         if (!arguments.length) return title;
32443         title = _;
32444         return disclosure;
32445     };
32446
32447     disclosure.expanded = function(_) {
32448         if (!arguments.length) return expanded;
32449         expanded = _;
32450         return disclosure;
32451     };
32452
32453     disclosure.content = function(_) {
32454         if (!arguments.length) return content;
32455         content = _;
32456         return disclosure;
32457     };
32458
32459     return d3.rebind(disclosure, dispatch, 'on');
32460 };
32461 iD.ui.EntityEditor = function(context) {
32462     var event = d3.dispatch('choose'),
32463         state = 'select',
32464         id,
32465         preset,
32466         reference;
32467
32468     var presetEditor = iD.ui.preset(context)
32469         .on('change', changeTags);
32470     var rawTagEditor = iD.ui.RawTagEditor(context)
32471         .on('change', changeTags);
32472
32473     function entityEditor(selection) {
32474         var entity = context.entity(id),
32475             tags = _.clone(entity.tags);
32476
32477         var $header = selection.selectAll('.header')
32478             .data([0]);
32479
32480         // Enter
32481
32482         var $enter = $header.enter().append('div')
32483             .attr('class', 'header fillL cf');
32484
32485         $enter.append('button')
32486             .attr('class', 'fr preset-close')
32487             .call(iD.svg.Icon('#icon-close'));
32488
32489         $enter.append('h3');
32490
32491         // Update
32492
32493         $header.select('h3')
32494             .text(t('inspector.edit'));
32495
32496         $header.select('.preset-close')
32497             .on('click', function() {
32498                 context.enter(iD.modes.Browse(context));
32499             });
32500
32501         var $body = selection.selectAll('.inspector-body')
32502             .data([0]);
32503
32504         // Enter
32505
32506         $enter = $body.enter().append('div')
32507             .attr('class', 'inspector-body');
32508
32509         $enter.append('div')
32510             .attr('class', 'preset-list-item inspector-inner')
32511             .append('div')
32512             .attr('class', 'preset-list-button-wrap')
32513             .append('button')
32514             .attr('class', 'preset-list-button preset-reset')
32515             .call(bootstrap.tooltip()
32516                 .title(t('inspector.back_tooltip'))
32517                 .placement('bottom'))
32518             .append('div')
32519             .attr('class', 'label');
32520
32521         $body.select('.preset-list-button-wrap')
32522             .call(reference.button);
32523
32524         $body.select('.preset-list-item')
32525             .call(reference.body);
32526
32527         $enter.append('div')
32528             .attr('class', 'inspector-border inspector-preset');
32529
32530         $enter.append('div')
32531             .attr('class', 'inspector-border raw-tag-editor inspector-inner');
32532
32533         $enter.append('div')
32534             .attr('class', 'inspector-border raw-member-editor inspector-inner');
32535
32536         $enter.append('div')
32537             .attr('class', 'raw-membership-editor inspector-inner');
32538
32539         selection.selectAll('.preset-reset')
32540             .on('click', function() {
32541                 event.choose(preset);
32542             });
32543
32544         // Update
32545
32546         $body.select('.preset-list-item button')
32547             .call(iD.ui.PresetIcon()
32548                 .geometry(context.geometry(id))
32549                 .preset(preset));
32550
32551         $body.select('.preset-list-item .label')
32552             .text(preset.name());
32553
32554         $body.select('.inspector-preset')
32555             .call(presetEditor
32556                 .preset(preset)
32557                 .entityID(id)
32558                 .tags(tags)
32559                 .state(state));
32560
32561         $body.select('.raw-tag-editor')
32562             .call(rawTagEditor
32563                 .preset(preset)
32564                 .entityID(id)
32565                 .tags(tags)
32566                 .state(state));
32567
32568         if (entity.type === 'relation') {
32569             $body.select('.raw-member-editor')
32570                 .style('display', 'block')
32571                 .call(iD.ui.RawMemberEditor(context)
32572                     .entityID(id));
32573         } else {
32574             $body.select('.raw-member-editor')
32575                 .style('display', 'none');
32576         }
32577
32578         $body.select('.raw-membership-editor')
32579             .call(iD.ui.RawMembershipEditor(context)
32580                 .entityID(id));
32581
32582         function historyChanged() {
32583             if (state === 'hide') return;
32584             var entity = context.hasEntity(id);
32585             if (!entity) return;
32586             entityEditor.preset(context.presets().match(entity, context.graph()));
32587             entityEditor(selection);
32588         }
32589
32590         context.history()
32591             .on('change.entity-editor', historyChanged);
32592     }
32593
32594     function clean(o) {
32595
32596         function cleanVal(k, v) {
32597             function keepSpaces(k) {
32598                 var whitelist = ['opening_hours', 'service_times', 'collection_times',
32599                     'operating_times', 'smoking_hours', 'happy_hours'];
32600                 return _.any(whitelist, function(s) { return k.indexOf(s) !== -1; });
32601             }
32602
32603             var blacklist = ['description', 'note', 'fixme'];
32604             if (_.any(blacklist, function(s) { return k.indexOf(s) !== -1; })) return v;
32605
32606             var cleaned = v.split(';')
32607                 .map(function(s) { return s.trim(); })
32608                 .join(keepSpaces(k) ? '; ' : ';');
32609
32610             // The code below is not intended to validate websites and emails.
32611             // It is only intended to prevent obvious copy-paste errors. (#2323)
32612
32613             // clean website-like tags
32614             if (k.indexOf('website') !== -1 || cleaned.indexOf('http') === 0) {
32615                 cleaned = cleaned
32616                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32617                     .replace(/[^\w\+\-\.\/\?\[\]\(\)~!@#$%&*',:;=]/g, encodeURIComponent);
32618
32619             // clean email-like tags
32620             } else if (k.indexOf('email') !== -1) {
32621                 cleaned = cleaned
32622                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32623                     .replace(/[^\w\+\-\.\/\?\|~!@#$%^&*'`{};=]/g, '');  // note: ';' allowed as OSM delimiter
32624             }
32625
32626             return cleaned;
32627         }
32628
32629         var out = {}, k, v;
32630         for (k in o) {
32631             if (k && (v = o[k]) !== undefined) {
32632                 out[k] = cleanVal(k, v);
32633             }
32634         }
32635         return out;
32636     }
32637
32638     function changeTags(changed) {
32639         var entity = context.entity(id),
32640             tags = clean(_.extend({}, entity.tags, changed));
32641
32642         if (!_.isEqual(entity.tags, tags)) {
32643             context.perform(
32644                 iD.actions.ChangeTags(id, tags),
32645                 t('operations.change_tags.annotation'));
32646         }
32647     }
32648
32649     entityEditor.state = function(_) {
32650         if (!arguments.length) return state;
32651         state = _;
32652         return entityEditor;
32653     };
32654
32655     entityEditor.entityID = function(_) {
32656         if (!arguments.length) return id;
32657         id = _;
32658         entityEditor.preset(context.presets().match(context.entity(id), context.graph()));
32659         return entityEditor;
32660     };
32661
32662     entityEditor.preset = function(_) {
32663         if (!arguments.length) return preset;
32664         if (_ !== preset) {
32665             preset = _;
32666             reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context)
32667                 .showing(false);
32668         }
32669         return entityEditor;
32670     };
32671
32672     return d3.rebind(entityEditor, event, 'on');
32673 };
32674 iD.ui.FeatureInfo = function(context) {
32675     function update(selection) {
32676         var features = context.features(),
32677             stats = features.stats(),
32678             count = 0,
32679             hiddenList = _.compact(_.map(features.hidden(), function(k) {
32680                 if (stats[k]) {
32681                     count += stats[k];
32682                     return String(stats[k]) + ' ' + t('feature.' + k + '.description');
32683                 }
32684             }));
32685
32686         selection.html('');
32687
32688         if (hiddenList.length) {
32689             var tooltip = bootstrap.tooltip()
32690                     .placement('top')
32691                     .html(true)
32692                     .title(function() {
32693                         return iD.ui.tooltipHtml(hiddenList.join('<br/>'));
32694                     });
32695
32696             var warning = selection.append('a')
32697                 .attr('href', '#')
32698                 .attr('tabindex', -1)
32699                 .html(t('feature_info.hidden_warning', { count: count }))
32700                 .call(tooltip)
32701                 .on('click', function() {
32702                     tooltip.hide(warning);
32703                     // open map data panel?
32704                     d3.event.preventDefault();
32705                 });
32706         }
32707
32708         selection
32709             .classed('hide', !hiddenList.length);
32710     }
32711
32712     return function(selection) {
32713         update(selection);
32714
32715         context.features().on('change.feature_info', function() {
32716             update(selection);
32717         });
32718     };
32719 };
32720 iD.ui.FeatureList = function(context) {
32721     var geocodeResults;
32722
32723     function featureList(selection) {
32724         var header = selection.append('div')
32725             .attr('class', 'header fillL cf');
32726
32727         header.append('h3')
32728             .text(t('inspector.feature_list'));
32729
32730         function keypress() {
32731             var q = search.property('value'),
32732                 items = list.selectAll('.feature-list-item');
32733             if (d3.event.keyCode === 13 && q.length && items.size()) {
32734                 click(items.datum());
32735             }
32736         }
32737
32738         function inputevent() {
32739             geocodeResults = undefined;
32740             drawList();
32741         }
32742
32743         var searchWrap = selection.append('div')
32744             .attr('class', 'search-header');
32745
32746         var search = searchWrap.append('input')
32747             .attr('placeholder', t('inspector.search'))
32748             .attr('type', 'search')
32749             .on('keypress', keypress)
32750             .on('input', inputevent);
32751
32752         searchWrap
32753             .call(iD.svg.Icon('#icon-search', 'pre-text'));
32754
32755         var listWrap = selection.append('div')
32756             .attr('class', 'inspector-body');
32757
32758         var list = listWrap.append('div')
32759             .attr('class', 'feature-list cf');
32760
32761         context.map()
32762             .on('drawn.feature-list', mapDrawn);
32763
32764         function mapDrawn(e) {
32765             if (e.full) {
32766                 drawList();
32767             }
32768         }
32769
32770         function features() {
32771             var entities = {},
32772                 result = [],
32773                 graph = context.graph(),
32774                 q = search.property('value').toLowerCase();
32775
32776             if (!q) return result;
32777
32778             var idMatch = q.match(/^([nwr])([0-9]+)$/);
32779
32780             if (idMatch) {
32781                 result.push({
32782                     id: idMatch[0],
32783                     geometry: idMatch[1] === 'n' ? 'point' : idMatch[1] === 'w' ? 'line' : 'relation',
32784                     type: idMatch[1] === 'n' ? t('inspector.node') : idMatch[1] === 'w' ? t('inspector.way') : t('inspector.relation'),
32785                     name: idMatch[2]
32786                 });
32787             }
32788
32789             var locationMatch = sexagesimal.pair(q.toUpperCase()) || q.match(/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)$/);
32790
32791             if (locationMatch) {
32792                 var loc = [parseFloat(locationMatch[0]), parseFloat(locationMatch[1])];
32793                 result.push({
32794                     id: -1,
32795                     geometry: 'point',
32796                     type: t('inspector.location'),
32797                     name: loc[0].toFixed(6) + ', ' + loc[1].toFixed(6),
32798                     location: loc
32799                 });
32800             }
32801
32802             function addEntity(entity) {
32803                 if (entity.id in entities || result.length > 200)
32804                     return;
32805
32806                 entities[entity.id] = true;
32807
32808                 var name = iD.util.displayName(entity) || '';
32809                 if (name.toLowerCase().indexOf(q) >= 0) {
32810                     result.push({
32811                         id: entity.id,
32812                         entity: entity,
32813                         geometry: context.geometry(entity.id),
32814                         type: context.presets().match(entity, graph).name(),
32815                         name: name
32816                     });
32817                 }
32818
32819                 graph.parentRelations(entity).forEach(function(parent) {
32820                     addEntity(parent);
32821                 });
32822             }
32823
32824             var visible = context.surface().selectAll('.point, .line, .area')[0];
32825             for (var i = 0; i < visible.length && result.length <= 200; i++) {
32826                 addEntity(visible[i].__data__);
32827             }
32828
32829             (geocodeResults || []).forEach(function(d) {
32830                 // https://github.com/openstreetmap/iD/issues/1890
32831                 if (d.osm_type && d.osm_id) {
32832                     result.push({
32833                         id: iD.Entity.id.fromOSM(d.osm_type, d.osm_id),
32834                         geometry: d.osm_type === 'relation' ? 'relation' : d.osm_type === 'way' ? 'line' : 'point',
32835                         type: d.type !== 'yes' ? (d.type.charAt(0).toUpperCase() + d.type.slice(1)).replace('_', ' ')
32836                                                : (d.class.charAt(0).toUpperCase() + d.class.slice(1)).replace('_', ' '),
32837                         name: d.display_name,
32838                         extent: new iD.geo.Extent(
32839                             [parseFloat(d.boundingbox[3]), parseFloat(d.boundingbox[0])],
32840                             [parseFloat(d.boundingbox[2]), parseFloat(d.boundingbox[1])])
32841                     });
32842                 }
32843             });
32844
32845             return result;
32846         }
32847
32848         function drawList() {
32849             var value = search.property('value'),
32850                 results = features();
32851
32852             list.classed('filtered', value.length);
32853
32854             var noResultsWorldwide = geocodeResults && geocodeResults.length === 0;
32855
32856             var resultsIndicator = list.selectAll('.no-results-item')
32857                 .data([0])
32858                 .enter().append('button')
32859                 .property('disabled', true)
32860                 .attr('class', 'no-results-item')
32861                 .call(iD.svg.Icon('#icon-alert', 'pre-text'));
32862
32863             resultsIndicator.append('span')
32864                 .attr('class', 'entity-name');
32865
32866             list.selectAll('.no-results-item .entity-name')
32867                 .text(noResultsWorldwide ? t('geocoder.no_results_worldwide') : t('geocoder.no_results_visible'));
32868
32869             list.selectAll('.geocode-item')
32870                 .data([0])
32871                 .enter().append('button')
32872                 .attr('class', 'geocode-item')
32873                 .on('click', geocode)
32874                 .append('div')
32875                 .attr('class', 'label')
32876                 .append('span')
32877                 .attr('class', 'entity-name')
32878                 .text(t('geocoder.search'));
32879
32880             list.selectAll('.no-results-item')
32881                 .style('display', (value.length && !results.length) ? 'block' : 'none');
32882
32883             list.selectAll('.geocode-item')
32884                 .style('display', (value && geocodeResults === undefined) ? 'block' : 'none');
32885
32886             list.selectAll('.feature-list-item')
32887                 .data([-1])
32888                 .remove();
32889
32890             var items = list.selectAll('.feature-list-item')
32891                 .data(results, function(d) { return d.id; });
32892
32893             var enter = items.enter()
32894                 .insert('button', '.geocode-item')
32895                 .attr('class', 'feature-list-item')
32896                 .on('mouseover', mouseover)
32897                 .on('mouseout', mouseout)
32898                 .on('click', click);
32899
32900             var label = enter
32901                 .append('div')
32902                 .attr('class', 'label');
32903
32904             label.each(function(d) {
32905                 d3.select(this)
32906                     .call(iD.svg.Icon('#icon-' + d.geometry, 'pre-text'));
32907             });
32908
32909             label.append('span')
32910                 .attr('class', 'entity-type')
32911                 .text(function(d) { return d.type; });
32912
32913             label.append('span')
32914                 .attr('class', 'entity-name')
32915                 .text(function(d) { return d.name; });
32916
32917             enter.style('opacity', 0)
32918                 .transition()
32919                 .style('opacity', 1);
32920
32921             items.order();
32922
32923             items.exit()
32924                 .remove();
32925         }
32926
32927         function mouseover(d) {
32928             if (d.id === -1) return;
32929
32930             context.surface().selectAll(iD.util.entityOrMemberSelector([d.id], context.graph()))
32931                 .classed('hover', true);
32932         }
32933
32934         function mouseout() {
32935             context.surface().selectAll('.hover')
32936                 .classed('hover', false);
32937         }
32938
32939         function click(d) {
32940             d3.event.preventDefault();
32941             if (d.location) {
32942                 context.map().centerZoom([d.location[1], d.location[0]], 20);
32943             }
32944             else if (d.entity) {
32945                 context.enter(iD.modes.Select(context, [d.entity.id]));
32946             } else {
32947                 context.zoomToEntity(d.id);
32948             }
32949         }
32950
32951         function geocode() {
32952             var searchVal = encodeURIComponent(search.property('value'));
32953             d3.json('http://nominatim.openstreetmap.org/search/' + searchVal + '?limit=10&format=json', function(err, resp) {
32954                 geocodeResults = resp || [];
32955                 drawList();
32956             });
32957         }
32958     }
32959
32960     return featureList;
32961 };
32962 iD.ui.flash = function(selection) {
32963     var modal = iD.ui.modal(selection);
32964
32965     modal.select('.modal').classed('modal-flash', true);
32966
32967     modal.select('.content')
32968         .classed('modal-section', true)
32969         .append('div')
32970         .attr('class', 'description');
32971
32972     modal.on('click.flash', function() { modal.remove(); });
32973
32974     setTimeout(function() {
32975         modal.remove();
32976         return true;
32977     }, 1500);
32978
32979     return modal;
32980 };
32981 iD.ui.FullScreen = function(context) {
32982     var element = context.container().node(),
32983         keybinding = d3.keybinding('full-screen');
32984         // button;
32985
32986     function getFullScreenFn() {
32987         if (element.requestFullscreen) {
32988             return element.requestFullscreen;
32989         } else if (element.msRequestFullscreen) {
32990             return  element.msRequestFullscreen;
32991         } else if (element.mozRequestFullScreen) {
32992             return  element.mozRequestFullScreen;
32993         } else if (element.webkitRequestFullscreen) {
32994             return element.webkitRequestFullscreen;
32995         }
32996     }
32997
32998     function getExitFullScreenFn() {
32999         if (document.exitFullscreen) {
33000             return document.exitFullscreen;
33001         } else if (document.msExitFullscreen) {
33002             return  document.msExitFullscreen;
33003         } else if (document.mozCancelFullScreen) {
33004             return  document.mozCancelFullScreen;
33005         } else if (document.webkitExitFullscreen) {
33006             return document.webkitExitFullscreen;
33007         }
33008     }
33009
33010     function isFullScreen() {
33011         return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement ||
33012             document.msFullscreenElement;
33013     }
33014
33015     function isSupported() {
33016         return !!getFullScreenFn();
33017     }
33018
33019     function fullScreen() {
33020         d3.event.preventDefault();
33021         if (!isFullScreen()) {
33022             // button.classed('active', true);
33023             getFullScreenFn().apply(element);
33024         } else {
33025             // button.classed('active', false);
33026             getExitFullScreenFn().apply(document);
33027         }
33028     }
33029
33030     return function() { // selection) {
33031         if (!isSupported())
33032             return;
33033
33034         // var tooltip = bootstrap.tooltip()
33035         //     .placement('left');
33036
33037         // button = selection.append('button')
33038         //     .attr('title', t('full_screen'))
33039         //     .attr('tabindex', -1)
33040         //     .on('click', fullScreen)
33041         //     .call(tooltip);
33042
33043         // button.append('span')
33044         //     .attr('class', 'icon full-screen');
33045
33046         keybinding
33047             .on('f11', fullScreen)
33048             .on(iD.ui.cmd('⌘⇧F'), fullScreen);
33049
33050         d3.select(document)
33051             .call(keybinding);
33052     };
33053 };
33054 iD.ui.Geolocate = function(map) {
33055     function click() {
33056         navigator.geolocation.getCurrentPosition(
33057             success, error);
33058     }
33059
33060     function success(position) {
33061         var extent = iD.geo.Extent([position.coords.longitude, position.coords.latitude])
33062             .padByMeters(position.coords.accuracy);
33063
33064         map.centerZoom(extent.center(), Math.min(20, map.extentZoom(extent)));
33065     }
33066
33067     function error() { }
33068
33069     return function(selection) {
33070         if (!navigator.geolocation) return;
33071
33072         selection.append('button')
33073             .attr('tabindex', -1)
33074             .attr('title', t('geolocate.title'))
33075             .on('click', click)
33076             .call(iD.svg.Icon('#icon-geolocate', 'light'))
33077             .call(bootstrap.tooltip()
33078                 .placement('left'));
33079     };
33080 };
33081 iD.ui.Help = function(context) {
33082     var key = 'H';
33083
33084     var docKeys = [
33085         'help.help',
33086         'help.editing_saving',
33087         'help.roads',
33088         'help.gps',
33089         'help.imagery',
33090         'help.addresses',
33091         'help.inspector',
33092         'help.buildings',
33093         'help.relations'];
33094
33095     var docs = docKeys.map(function(key) {
33096         var text = t(key);
33097         return {
33098             title: text.split('\n')[0].replace('#', '').trim(),
33099             html: marked(text.split('\n').slice(1).join('\n'))
33100         };
33101     });
33102
33103     function help(selection) {
33104
33105         function hide() {
33106             setVisible(false);
33107         }
33108
33109         function toggle() {
33110             if (d3.event) d3.event.preventDefault();
33111             tooltip.hide(button);
33112             setVisible(!button.classed('active'));
33113         }
33114
33115         function setVisible(show) {
33116             if (show !== shown) {
33117                 button.classed('active', show);
33118                 shown = show;
33119
33120                 if (show) {
33121                     selection.on('mousedown.help-inside', function() {
33122                         return d3.event.stopPropagation();
33123                     });
33124                     pane.style('display', 'block')
33125                         .style('right', '-500px')
33126                         .transition()
33127                         .duration(200)
33128                         .style('right', '0px');
33129                 } else {
33130                     pane.style('right', '0px')
33131                         .transition()
33132                         .duration(200)
33133                         .style('right', '-500px')
33134                         .each('end', function() {
33135                             d3.select(this).style('display', 'none');
33136                         });
33137                     selection.on('mousedown.help-inside', null);
33138                 }
33139             }
33140         }
33141
33142         function clickHelp(d, i) {
33143             pane.property('scrollTop', 0);
33144             doctitle.html(d.title);
33145             body.html(d.html);
33146             body.selectAll('a')
33147                 .attr('target', '_blank');
33148             menuItems.classed('selected', function(m) {
33149                 return m.title === d.title;
33150             });
33151
33152             nav.html('');
33153
33154             if (i > 0) {
33155                 var prevLink = nav.append('a')
33156                     .attr('class', 'previous')
33157                     .on('click', function() {
33158                         clickHelp(docs[i - 1], i - 1);
33159                     });
33160                 prevLink.append('span').html('&#9668; ' + docs[i - 1].title);
33161             }
33162             if (i < docs.length - 1) {
33163                 var nextLink = nav.append('a')
33164                     .attr('class', 'next')
33165                     .on('click', function() {
33166                         clickHelp(docs[i + 1], i + 1);
33167                     });
33168                 nextLink.append('span').html(docs[i + 1].title + ' &#9658;');
33169             }
33170         }
33171
33172         function clickWalkthrough() {
33173             d3.select(document.body).call(iD.ui.intro(context));
33174             setVisible(false);
33175         }
33176
33177
33178         var pane = selection.append('div')
33179                 .attr('class', 'help-wrap map-overlay fillL col5 content hide'),
33180             tooltip = bootstrap.tooltip()
33181                 .placement('left')
33182                 .html(true)
33183                 .title(iD.ui.tooltipHtml(t('help.title'), key)),
33184             button = selection.append('button')
33185                 .attr('tabindex', -1)
33186                 .on('click', toggle)
33187                 .call(iD.svg.Icon('#icon-help', 'light'))
33188                 .call(tooltip),
33189             shown = false;
33190
33191
33192         var toc = pane.append('ul')
33193             .attr('class', 'toc');
33194
33195         var menuItems = toc.selectAll('li')
33196             .data(docs)
33197             .enter()
33198             .append('li')
33199             .append('a')
33200             .html(function(d) { return d.title; })
33201             .on('click', clickHelp);
33202
33203         toc.append('li')
33204             .attr('class','walkthrough')
33205             .append('a')
33206             .text(t('splash.walkthrough'))
33207             .on('click', clickWalkthrough);
33208
33209         var content = pane.append('div')
33210             .attr('class', 'left-content');
33211
33212         var doctitle = content.append('h2')
33213             .text(t('help.title'));
33214
33215         var body = content.append('div')
33216             .attr('class', 'body');
33217
33218         var nav = content.append('div')
33219             .attr('class', 'nav');
33220
33221         clickHelp(docs[0], 0);
33222
33223         var keybinding = d3.keybinding('help')
33224             .on(key, toggle)
33225             .on('B', hide)
33226             .on('F', hide);
33227
33228         d3.select(document)
33229             .call(keybinding);
33230
33231         context.surface().on('mousedown.help-outside', hide);
33232         context.container().on('mousedown.help-outside', hide);
33233     }
33234
33235     return help;
33236 };
33237 iD.ui.Info = function(context) {
33238     var key = iD.ui.cmd('⌘I'),
33239         imperial = (iD.detect().locale.toLowerCase() === 'en-us');
33240
33241     function info(selection) {
33242         function radiansToMeters(r) {
33243             // using WGS84 authalic radius (6371007.1809 m)
33244             return r * 6371007.1809;
33245         }
33246
33247         function steradiansToSqmeters(r) {
33248             // http://gis.stackexchange.com/a/124857/40446
33249             return r / 12.56637 * 510065621724000;
33250         }
33251
33252         function toLineString(feature) {
33253             if (feature.type === 'LineString') return feature;
33254
33255             var result = { type: 'LineString', coordinates: [] };
33256             if (feature.type === 'Polygon') {
33257                 result.coordinates = feature.coordinates[0];
33258             } else if (feature.type === 'MultiPolygon') {
33259                 result.coordinates = feature.coordinates[0][0];
33260             }
33261
33262             return result;
33263         }
33264
33265         function displayLength(m) {
33266             var d = m * (imperial ? 3.28084 : 1),
33267                 p, unit;
33268
33269             if (imperial) {
33270                 if (d >= 5280) {
33271                     d /= 5280;
33272                     unit = 'mi';
33273                 } else {
33274                     unit = 'ft';
33275                 }
33276             } else {
33277                 if (d >= 1000) {
33278                     d /= 1000;
33279                     unit = 'km';
33280                 } else {
33281                     unit = 'm';
33282                 }
33283             }
33284
33285             // drop unnecessary precision
33286             p = d > 1000 ? 0 : d > 100 ? 1 : 2;
33287
33288             return String(d.toFixed(p)) + ' ' + unit;
33289         }
33290
33291         function displayArea(m2) {
33292             var d = m2 * (imperial ? 10.7639111056 : 1),
33293                 d1, d2, p1, p2, unit1, unit2;
33294
33295             if (imperial) {
33296                 if (d >= 6969600) {     // > 0.25mi² show mi²
33297                     d1 = d / 27878400;
33298                     unit1 = 'mi²';
33299                 } else {
33300                     d1 = d;
33301                     unit1 = 'ft²';
33302                 }
33303
33304                 if (d > 4356 && d < 43560000) {   // 0.1 - 1000 acres
33305                     d2 = d / 43560;
33306                     unit2 = 'ac';
33307                 }
33308
33309             } else {
33310                 if (d >= 250000) {    // > 0.25km² show km²
33311                     d1 = d / 1000000;
33312                     unit1 = 'km²';
33313                 } else {
33314                     d1 = d;
33315                     unit1 = 'm²';
33316                 }
33317
33318                 if (d > 1000 && d < 10000000) {   // 0.1 - 1000 hectares
33319                     d2 = d / 10000;
33320                     unit2 = 'ha';
33321                 }
33322             }
33323
33324             // drop unnecessary precision
33325             p1 = d1 > 1000 ? 0 : d1 > 100 ? 1 : 2;
33326             p2 = d2 > 1000 ? 0 : d2 > 100 ? 1 : 2;
33327
33328             return String(d1.toFixed(p1)) + ' ' + unit1 +
33329                 (d2 ? ' (' + String(d2.toFixed(p2)) + ' ' + unit2 + ')' : '');
33330         }
33331
33332
33333         function redraw() {
33334             if (hidden()) return;
33335
33336             var resolver = context.graph(),
33337                 selected = _.filter(context.selectedIDs(), function(e) { return context.hasEntity(e); }),
33338                 singular = selected.length === 1 ? selected[0] : null,
33339                 extent = iD.geo.Extent(),
33340                 entity;
33341
33342             selection.html('');
33343             selection.append('h4')
33344                 .attr('class', 'selection-heading fillD')
33345                 .text(singular || t('infobox.selected', { n: selected.length }));
33346
33347             if (!selected.length) return;
33348
33349             var center;
33350             for (var i = 0; i < selected.length; i++) {
33351                 entity = context.entity(selected[i]);
33352                 extent._extend(entity.extent(resolver));
33353             }
33354             center = extent.center();
33355
33356
33357             var list = selection.append('ul');
33358
33359             // multiple selection, just display extent center..
33360             if (!singular) {
33361                 list.append('li')
33362                     .text(t('infobox.center') + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33363                 return;
33364             }
33365
33366             // single selection, display details..
33367             if (!entity) return;
33368             var geometry = entity.geometry(resolver);
33369
33370             if (geometry === 'line' || geometry === 'area') {
33371                 var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()),
33372                     feature = entity.asGeoJSON(resolver),
33373                     length = radiansToMeters(d3.geo.length(toLineString(feature))),
33374                     lengthLabel = t('infobox.' + (closed ? 'perimeter' : 'length')),
33375                     centroid = d3.geo.centroid(feature);
33376
33377                 list.append('li')
33378                     .text(t('infobox.geometry') + ': ' +
33379                         (closed ? t('infobox.closed') + ' ' : '') + t('geometry.' + geometry) );
33380
33381                 if (closed) {
33382                     var area = steradiansToSqmeters(entity.area(resolver));
33383                     list.append('li')
33384                         .text(t('infobox.area') + ': ' + displayArea(area));
33385                 }
33386
33387                 list.append('li')
33388                     .text(lengthLabel + ': ' + displayLength(length));
33389
33390                 list.append('li')
33391                     .text(t('infobox.centroid') + ': ' + centroid[0].toFixed(5) + ', ' + centroid[1].toFixed(5));
33392
33393
33394                 var toggle  = imperial ? 'imperial' : 'metric';
33395                 selection.append('a')
33396                     .text(t('infobox.' + toggle))
33397                     .attr('href', '#')
33398                     .attr('class', 'button')
33399                     .on('click', function() {
33400                         d3.event.preventDefault();
33401                         imperial = !imperial;
33402                         redraw();
33403                     });
33404
33405             } else {
33406                 var centerLabel = t('infobox.' + (entity.type === 'node' ? 'location' : 'center'));
33407
33408                 list.append('li')
33409                     .text(t('infobox.geometry') + ': ' + t('geometry.' + geometry));
33410
33411                 list.append('li')
33412                     .text(centerLabel + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33413             }
33414         }
33415
33416
33417         function hidden() {
33418             return selection.style('display') === 'none';
33419         }
33420
33421
33422         function toggle() {
33423             if (d3.event) d3.event.preventDefault();
33424
33425             if (hidden()) {
33426                 selection
33427                     .style('display', 'block')
33428                     .style('opacity', 0)
33429                     .transition()
33430                     .duration(200)
33431                     .style('opacity', 1);
33432
33433                 redraw();
33434
33435             } else {
33436                 selection
33437                     .style('display', 'block')
33438                     .style('opacity', 1)
33439                     .transition()
33440                     .duration(200)
33441                     .style('opacity', 0)
33442                     .each('end', function() {
33443                         d3.select(this).style('display', 'none');
33444                     });
33445             }
33446         }
33447
33448         context.map()
33449             .on('drawn.info', redraw);
33450
33451         redraw();
33452
33453         var keybinding = d3.keybinding('info')
33454             .on(key, toggle);
33455
33456         d3.select(document)
33457             .call(keybinding);
33458     }
33459
33460     return info;
33461 };
33462 iD.ui.Inspector = function(context) {
33463     var presetList = iD.ui.PresetList(context),
33464         entityEditor = iD.ui.EntityEditor(context),
33465         state = 'select',
33466         entityID,
33467         newFeature = false;
33468
33469     function inspector(selection) {
33470         presetList
33471             .entityID(entityID)
33472             .autofocus(newFeature)
33473             .on('choose', setPreset);
33474
33475         entityEditor
33476             .state(state)
33477             .entityID(entityID)
33478             .on('choose', showList);
33479
33480         var $wrap = selection.selectAll('.panewrap')
33481             .data([0]);
33482
33483         var $enter = $wrap.enter().append('div')
33484             .attr('class', 'panewrap');
33485
33486         $enter.append('div')
33487             .attr('class', 'preset-list-pane pane');
33488
33489         $enter.append('div')
33490             .attr('class', 'entity-editor-pane pane');
33491
33492         var $presetPane = $wrap.select('.preset-list-pane');
33493         var $editorPane = $wrap.select('.entity-editor-pane');
33494
33495         var graph = context.graph(),
33496             entity = context.entity(entityID),
33497             showEditor = state === 'hover' ||
33498                 entity.isUsed(graph) ||
33499                 entity.isHighwayIntersection(graph);
33500
33501         if (showEditor) {
33502             $wrap.style('right', '0%');
33503             $editorPane.call(entityEditor);
33504         } else {
33505             $wrap.style('right', '-100%');
33506             $presetPane.call(presetList);
33507         }
33508
33509         var $footer = selection.selectAll('.footer')
33510             .data([0]);
33511
33512         $footer.enter().append('div')
33513             .attr('class', 'footer');
33514
33515         selection.select('.footer')
33516             .call(iD.ui.ViewOnOSM(context)
33517                 .entityID(entityID));
33518
33519         function showList(preset) {
33520             $wrap.transition()
33521                 .styleTween('right', function() { return d3.interpolate('0%', '-100%'); });
33522
33523             $presetPane.call(presetList
33524                 .preset(preset)
33525                 .autofocus(true));
33526         }
33527
33528         function setPreset(preset) {
33529             $wrap.transition()
33530                 .styleTween('right', function() { return d3.interpolate('-100%', '0%'); });
33531
33532             $editorPane.call(entityEditor
33533                 .preset(preset));
33534         }
33535     }
33536
33537     inspector.state = function(_) {
33538         if (!arguments.length) return state;
33539         state = _;
33540         entityEditor.state(state);
33541         return inspector;
33542     };
33543
33544     inspector.entityID = function(_) {
33545         if (!arguments.length) return entityID;
33546         entityID = _;
33547         return inspector;
33548     };
33549
33550     inspector.newFeature = function(_) {
33551         if (!arguments.length) return newFeature;
33552         newFeature = _;
33553         return inspector;
33554     };
33555
33556     return inspector;
33557 };
33558 iD.ui.intro = function(context) {
33559
33560     var step;
33561
33562     function intro(selection) {
33563
33564         context.enter(iD.modes.Browse(context));
33565
33566         // Save current map state
33567         var history = context.history().toJSON(),
33568             hash = window.location.hash,
33569             background = context.background().baseLayerSource(),
33570             opacity = d3.select('.background-layer').style('opacity'),
33571             loadedTiles = context.connection().loadedTiles(),
33572             baseEntities = context.history().graph().base().entities,
33573             introGraph;
33574
33575         // Load semi-real data used in intro
33576         context.connection().toggle(false).flush();
33577         context.history().reset();
33578
33579         introGraph = JSON.parse(iD.introGraph);
33580         for (var key in introGraph) {
33581             introGraph[key] = iD.Entity(introGraph[key]);
33582         }
33583         context.history().merge(d3.values(iD.Graph().load(introGraph).entities));
33584         context.background().bing();
33585
33586         // Block saving
33587         var savebutton = d3.select('#bar button.save'),
33588             save = savebutton.on('click');
33589         savebutton.on('click', null);
33590         context.inIntro(true);
33591
33592         d3.select('.background-layer').style('opacity', 1);
33593
33594         var curtain = d3.curtain();
33595         selection.call(curtain);
33596
33597         function reveal(box, text, options) {
33598             options = options || {};
33599             if (text) curtain.reveal(box, text, options.tooltipClass, options.duration);
33600             else curtain.reveal(box, '', '', options.duration);
33601         }
33602
33603         var steps = ['navigation', 'point', 'area', 'line', 'startEditing'].map(function(step, i) {
33604             var s = iD.ui.intro[step](context, reveal)
33605                 .on('done', function() {
33606                     entered.filter(function(d) {
33607                         return d.title === s.title;
33608                     }).classed('finished', true);
33609                     enter(steps[i + 1]);
33610                 });
33611             return s;
33612         });
33613
33614         steps[steps.length - 1].on('startEditing', function() {
33615             curtain.remove();
33616             navwrap.remove();
33617             d3.select('.background-layer').style('opacity', opacity);
33618             context.connection().toggle(true).flush().loadedTiles(loadedTiles);
33619             context.history().reset().merge(d3.values(baseEntities));
33620             context.background().baseLayerSource(background);
33621             if (history) context.history().fromJSON(history, false);
33622             window.location.replace(hash);
33623             context.inIntro(false);
33624             d3.select('#bar button.save').on('click', save);
33625         });
33626
33627         var navwrap = selection.append('div').attr('class', 'intro-nav-wrap fillD');
33628
33629         var buttonwrap = navwrap.append('div')
33630             .attr('class', 'joined')
33631             .selectAll('button.step');
33632
33633         var entered = buttonwrap
33634             .data(steps)
33635             .enter()
33636             .append('button')
33637             .attr('class', 'step')
33638             .on('click', enter);
33639
33640         entered
33641             .call(iD.svg.Icon('#icon-apply', 'pre-text'));
33642
33643         entered
33644             .append('label')
33645             .text(function(d) { return t(d.title); });
33646
33647         enter(steps[0]);
33648
33649         function enter (newStep) {
33650             if (step) { step.exit(); }
33651
33652             context.enter(iD.modes.Browse(context));
33653
33654             step = newStep;
33655             step.enter();
33656
33657             entered.classed('active', function(d) {
33658                 return d.title === step.title;
33659             });
33660         }
33661
33662     }
33663     return intro;
33664 };
33665
33666 iD.ui.intro.pointBox = function(point, context) {
33667     var rect = context.surfaceRect();
33668     point = context.projection(point);
33669     return {
33670         left: point[0] + rect.left - 30,
33671         top: point[1] + rect.top - 50,
33672         width: 60,
33673         height: 70
33674     };
33675 };
33676
33677 iD.ui.intro.pad = function(box, padding, context) {
33678     if (box instanceof Array) {
33679         var rect = context.surfaceRect();
33680         box = context.projection(box);
33681         box = {
33682             left: box[0] + rect.left,
33683             top: box[1] + rect.top
33684         };
33685     }
33686     return {
33687         left: box.left - padding,
33688         top: box.top - padding,
33689         width: (box.width || 0) + 2 * padding,
33690         height: (box.width || 0) + 2 * padding
33691     };
33692 };
33693 iD.ui.Lasso = function(context) {
33694
33695     var box, group,
33696         a = [0, 0],
33697         b = [0, 0];
33698
33699     function lasso(selection) {
33700
33701         context.container().classed('lasso', true);
33702
33703         group = selection.append('g')
33704             .attr('class', 'lasso hide');
33705
33706         box = group.append('rect')
33707             .attr('class', 'lasso-box');
33708
33709         group.call(iD.ui.Toggle(true));
33710
33711     }
33712
33713     // top-left
33714     function topLeft(d) {
33715         return 'translate(' + Math.min(d[0][0], d[1][0]) + ',' + Math.min(d[0][1], d[1][1]) + ')';
33716     }
33717
33718     function width(d) { return Math.abs(d[0][0] - d[1][0]); }
33719     function height(d) { return Math.abs(d[0][1] - d[1][1]); }
33720
33721     function draw() {
33722         if (box) {
33723             box.data([[a, b]])
33724                 .attr('transform', topLeft)
33725                 .attr('width', width)
33726                 .attr('height', height);
33727         }
33728     }
33729
33730     lasso.a = function(_) {
33731         if (!arguments.length) return a;
33732         a = _;
33733         draw();
33734         return lasso;
33735     };
33736
33737     lasso.b = function(_) {
33738         if (!arguments.length) return b;
33739         b = _;
33740         draw();
33741         return lasso;
33742     };
33743
33744     lasso.close = function() {
33745         if (group) {
33746             group.call(iD.ui.Toggle(false, function() {
33747                 d3.select(this).remove();
33748             }));
33749         }
33750         context.container().classed('lasso', false);
33751     };
33752
33753     return lasso;
33754 };
33755 iD.ui.Loading = function(context) {
33756     var message = '',
33757         blocking = false,
33758         modal;
33759
33760     var loading = function(selection) {
33761         modal = iD.ui.modal(selection, blocking);
33762
33763         var loadertext = modal.select('.content')
33764             .classed('loading-modal', true)
33765             .append('div')
33766             .attr('class', 'modal-section fillL');
33767
33768         loadertext.append('img')
33769             .attr('class', 'loader')
33770             .attr('src', context.imagePath('loader-white.gif'));
33771
33772         loadertext.append('h3')
33773             .text(message);
33774
33775         modal.select('button.close')
33776             .attr('class', 'hide');
33777
33778         return loading;
33779     };
33780
33781     loading.message = function(_) {
33782         if (!arguments.length) return message;
33783         message = _;
33784         return loading;
33785     };
33786
33787     loading.blocking = function(_) {
33788         if (!arguments.length) return blocking;
33789         blocking = _;
33790         return loading;
33791     };
33792
33793     loading.close = function() {
33794         modal.remove();
33795     };
33796
33797     return loading;
33798 };
33799 iD.ui.MapData = function(context) {
33800     var key = 'F',
33801         features = context.features().keys(),
33802         fills = ['wireframe', 'partial', 'full'],
33803         fillDefault = context.storage('area-fill') || 'partial',
33804         fillSelected = fillDefault;
33805
33806     function map_data(selection) {
33807
33808         function showsFeature(d) {
33809             return context.features().enabled(d);
33810         }
33811
33812         function autoHiddenFeature(d) {
33813             return context.features().autoHidden(d);
33814         }
33815
33816         function clickFeature(d) {
33817             context.features().toggle(d);
33818             update();
33819         }
33820
33821         function showsFill(d) {
33822             return fillSelected === d;
33823         }
33824
33825         function setFill(d) {
33826             _.each(fills, function(opt) {
33827                 context.surface().classed('fill-' + opt, Boolean(opt === d));
33828             });
33829
33830             fillSelected = d;
33831             if (d !== 'wireframe') {
33832                 fillDefault = d;
33833                 context.storage('area-fill', d);
33834             }
33835             update();
33836         }
33837
33838         function clickGpx() {
33839             context.background().toggleGpxLayer();
33840             update();
33841         }
33842
33843         function clickMapillary() {
33844             context.background().toggleMapillaryLayer();
33845             update();
33846         }
33847
33848         function drawList(selection, data, type, name, change, active) {
33849             var items = selection.selectAll('li')
33850                 .data(data);
33851
33852             //enter
33853             var enter = items.enter()
33854                 .append('li')
33855                 .attr('class', 'layer')
33856                 .call(bootstrap.tooltip()
33857                     .html(true)
33858                     .title(function(d) {
33859                         var tip = t(name + '.' + d + '.tooltip'),
33860                             key = (d === 'wireframe' ? 'W' : null);
33861
33862                         if (name === 'feature' && autoHiddenFeature(d)) {
33863                             tip += '<div>' + t('map_data.autohidden') + '</div>';
33864                         }
33865                         return iD.ui.tooltipHtml(tip, key);
33866                     })
33867                     .placement('top')
33868                 );
33869
33870             var label = enter.append('label');
33871
33872             label.append('input')
33873                 .attr('type', type)
33874                 .attr('name', name)
33875                 .on('change', change);
33876
33877             label.append('span')
33878                 .text(function(d) { return t(name + '.' + d + '.description'); });
33879
33880             //update
33881             items
33882                 .classed('active', active)
33883                 .selectAll('input')
33884                 .property('checked', active)
33885                 .property('indeterminate', function(d) {
33886                     return (name === 'feature' && autoHiddenFeature(d));
33887                 });
33888
33889             //exit
33890             items.exit()
33891                 .remove();
33892         }
33893
33894         function update() {
33895             featureList.call(drawList, features, 'checkbox', 'feature', clickFeature, showsFeature);
33896             fillList.call(drawList, fills, 'radio', 'area_fill', setFill, showsFill);
33897
33898             var hasGpx = context.background().hasGpxLayer(),
33899                 showsGpx = context.background().showsGpxLayer(),
33900                 showsMapillary = context.background().showsMapillaryLayer();
33901
33902             gpxLayerItem
33903                 .classed('active', showsGpx)
33904                 .selectAll('input')
33905                 .property('disabled', !hasGpx)
33906                 .property('checked', showsGpx);
33907
33908             mapillaryLayerItem
33909                 .classed('active', showsMapillary)
33910                 .selectAll('input')
33911                 .property('checked', showsMapillary);
33912         }
33913
33914         function hidePanel() { setVisible(false); }
33915
33916         function togglePanel() {
33917             if (d3.event) d3.event.preventDefault();
33918             tooltip.hide(button);
33919             setVisible(!button.classed('active'));
33920         }
33921
33922         function toggleWireframe() {
33923             if (d3.event) {
33924                 d3.event.preventDefault();
33925                 d3.event.stopPropagation();
33926             }
33927             setFill((fillSelected === 'wireframe' ? fillDefault : 'wireframe'));
33928             context.map().pan([0,0]);  // trigger a redraw
33929         }
33930
33931         function setVisible(show) {
33932             if (show !== shown) {
33933                 button.classed('active', show);
33934                 shown = show;
33935
33936                 if (show) {
33937                     selection.on('mousedown.map_data-inside', function() {
33938                         return d3.event.stopPropagation();
33939                     });
33940                     content.style('display', 'block')
33941                         .style('right', '-300px')
33942                         .transition()
33943                         .duration(200)
33944                         .style('right', '0px');
33945                 } else {
33946                     content.style('display', 'block')
33947                         .style('right', '0px')
33948                         .transition()
33949                         .duration(200)
33950                         .style('right', '-300px')
33951                         .each('end', function() {
33952                             d3.select(this).style('display', 'none');
33953                         });
33954                     selection.on('mousedown.map_data-inside', null);
33955                 }
33956             }
33957         }
33958
33959
33960         var content = selection.append('div')
33961                 .attr('class', 'fillL map-overlay col3 content hide'),
33962             tooltip = bootstrap.tooltip()
33963                 .placement('left')
33964                 .html(true)
33965                 .title(iD.ui.tooltipHtml(t('map_data.description'), key)),
33966             button = selection.append('button')
33967                 .attr('tabindex', -1)
33968                 .on('click', togglePanel)
33969                 .call(iD.svg.Icon('#icon-data', 'light'))
33970                 .call(tooltip),
33971             shown = false;
33972
33973         content.append('h4')
33974             .text(t('map_data.title'));
33975
33976
33977         // data layers
33978         content.append('a')
33979             .text(t('map_data.data_layers'))
33980             .attr('href', '#')
33981             .classed('hide-toggle', true)
33982             .classed('expanded', true)
33983             .on('click', function() {
33984                 var exp = d3.select(this).classed('expanded');
33985                 layerContainer.style('display', exp ? 'none' : 'block');
33986                 d3.select(this).classed('expanded', !exp);
33987                 d3.event.preventDefault();
33988             });
33989
33990         var layerContainer = content.append('div')
33991             .attr('class', 'filters')
33992             .style('display', 'block');
33993
33994         // mapillary
33995         var mapillaryLayerItem = layerContainer.append('ul')
33996             .attr('class', 'layer-list')
33997             .append('li');
33998
33999         var label = mapillaryLayerItem.append('label')
34000             .call(bootstrap.tooltip()
34001                 .title(t('mapillary.tooltip'))
34002                 .placement('top'));
34003
34004         label.append('input')
34005             .attr('type', 'checkbox')
34006             .on('change', clickMapillary);
34007
34008         label.append('span')
34009             .text(t('mapillary.title'));
34010
34011         // gpx
34012         var gpxLayerItem = layerContainer.append('ul')
34013             .style('display', iD.detect().filedrop ? 'block' : 'none')
34014             .attr('class', 'layer-list')
34015             .append('li')
34016             .classed('layer-toggle-gpx', true);
34017
34018         gpxLayerItem.append('button')
34019             .attr('class', 'layer-extent')
34020             .call(bootstrap.tooltip()
34021                 .title(t('gpx.zoom'))
34022                 .placement('left'))
34023             .on('click', function() {
34024                 d3.event.preventDefault();
34025                 d3.event.stopPropagation();
34026                 context.background().zoomToGpxLayer();
34027             })
34028             .call(iD.svg.Icon('#icon-search'));
34029
34030         gpxLayerItem.append('button')
34031             .attr('class', 'layer-browse')
34032             .call(bootstrap.tooltip()
34033                 .title(t('gpx.browse'))
34034                 .placement('left'))
34035             .on('click', function() {
34036                 d3.select(document.createElement('input'))
34037                     .attr('type', 'file')
34038                     .on('change', function() {
34039                         context.background().gpxLayerFiles(d3.event.target.files);
34040                     })
34041                     .node().click();
34042             })
34043             .call(iD.svg.Icon('#icon-geolocate'));
34044
34045         label = gpxLayerItem.append('label')
34046             .call(bootstrap.tooltip()
34047                 .title(t('gpx.drag_drop'))
34048                 .placement('top'));
34049
34050         label.append('input')
34051             .attr('type', 'checkbox')
34052             .property('disabled', true)
34053             .on('change', clickGpx);
34054
34055         label.append('span')
34056             .text(t('gpx.local_layer'));
34057
34058
34059         // area fills
34060         content.append('a')
34061             .text(t('map_data.fill_area'))
34062             .attr('href', '#')
34063             .classed('hide-toggle', true)
34064             .classed('expanded', false)
34065             .on('click', function() {
34066                 var exp = d3.select(this).classed('expanded');
34067                 fillContainer.style('display', exp ? 'none' : 'block');
34068                 d3.select(this).classed('expanded', !exp);
34069                 d3.event.preventDefault();
34070             });
34071
34072         var fillContainer = content.append('div')
34073             .attr('class', 'filters')
34074             .style('display', 'none');
34075
34076         var fillList = fillContainer.append('ul')
34077             .attr('class', 'layer-list');
34078
34079
34080         // feature filters
34081         content.append('a')
34082             .text(t('map_data.map_features'))
34083             .attr('href', '#')
34084             .classed('hide-toggle', true)
34085             .classed('expanded', false)
34086             .on('click', function() {
34087                 var exp = d3.select(this).classed('expanded');
34088                 featureContainer.style('display', exp ? 'none' : 'block');
34089                 d3.select(this).classed('expanded', !exp);
34090                 d3.event.preventDefault();
34091             });
34092
34093         var featureContainer = content.append('div')
34094             .attr('class', 'filters')
34095             .style('display', 'none');
34096
34097         var featureList = featureContainer.append('ul')
34098             .attr('class', 'layer-list');
34099
34100
34101         context.features()
34102             .on('change.map_data-update', update);
34103
34104         setFill(fillDefault);
34105
34106         var keybinding = d3.keybinding('features')
34107             .on(key, togglePanel)
34108             .on('W', toggleWireframe)
34109             .on('B', hidePanel)
34110             .on('H', hidePanel);
34111
34112         d3.select(document)
34113             .call(keybinding);
34114
34115         context.surface().on('mousedown.map_data-outside', hidePanel);
34116         context.container().on('mousedown.map_data-outside', hidePanel);
34117     }
34118
34119     return map_data;
34120 };
34121 iD.ui.MapInMap = function(context) {
34122     var key = '/';
34123
34124     function map_in_map(selection) {
34125
34126         var backgroundLayer = iD.TileLayer(),
34127             dispatch = d3.dispatch('change'),
34128             gpxLayer = iD.GpxLayer(context, dispatch),
34129             overlayLayer = iD.TileLayer(),
34130             projection = iD.geo.RawMercator(),
34131             zoom = d3.behavior.zoom()
34132                 .scaleExtent([ztok(0.5), ztok(24)])
34133                 .on('zoom', zoomPan),
34134             transformed = false,
34135             panning = false,
34136             zDiff = 6,    // by default, minimap renders at (main zoom - 6)
34137             tStart, tLast, tCurr, kLast, kCurr, tiles, svg, gpx, timeoutId;
34138
34139         iD.ui.MapInMap.gpxLayer = gpxLayer;
34140
34141         function ztok(z) { return 256 * Math.pow(2, z); }
34142         function ktoz(k) { return Math.log(k) / Math.LN2 - 8; }
34143
34144
34145         function startMouse() {
34146             context.surface().on('mouseup.map-in-map-outside', endMouse);
34147             context.container().on('mouseup.map-in-map-outside', endMouse);
34148
34149             tStart = tLast = tCurr = projection.translate();
34150             panning = true;
34151         }
34152
34153
34154         function zoomPan() {
34155             var e = d3.event.sourceEvent,
34156                 t = d3.event.translate,
34157                 k = d3.event.scale,
34158                 zMain = ktoz(context.projection.scale() * 2 * Math.PI),
34159                 zMini = ktoz(k);
34160
34161             // restrict minimap zoom to < (main zoom - 3)
34162             if (zMini > zMain - 3) {
34163                 zMini = zMain - 3;
34164                 zoom.scale(kCurr).translate(tCurr);  // restore last good values
34165                 return;
34166             }
34167
34168             tCurr = t;
34169             kCurr = k;
34170             zDiff = zMain - zMini;
34171
34172             var scale = kCurr / kLast,
34173                 tX = Math.round((tCurr[0] / scale - tLast[0]) * scale),
34174                 tY = Math.round((tCurr[1] / scale - tLast[1]) * scale);
34175
34176             iD.util.setTransform(tiles, tX, tY, scale);
34177             iD.util.setTransform(svg, 0, 0, scale);
34178             iD.util.setTransform(gpx, 0, 0, scale);
34179             transformed = true;
34180
34181             queueRedraw();
34182
34183             e.preventDefault();
34184             e.stopPropagation();
34185         }
34186
34187
34188         function endMouse() {
34189             context.surface().on('mouseup.map-in-map-outside', null);
34190             context.container().on('mouseup.map-in-map-outside', null);
34191
34192             updateProjection();
34193             panning = false;
34194
34195             if (tCurr[0] !== tStart[0] && tCurr[1] !== tStart[1]) {
34196                 var dMini = selection.dimensions(),
34197                     cMini = [ dMini[0] / 2, dMini[1] / 2 ];
34198
34199                 context.map().center(projection.invert(cMini));
34200             }
34201         }
34202
34203
34204         function updateProjection() {
34205             var loc = context.map().center(),
34206                 dMini = selection.dimensions(),
34207                 cMini = [ dMini[0] / 2, dMini[1] / 2 ],
34208                 tMain = context.projection.translate(),
34209                 kMain = context.projection.scale(),
34210                 zMain = ktoz(kMain * 2 * Math.PI),
34211                 zMini = Math.max(zMain - zDiff, 0.5),
34212                 kMini = ztok(zMini);
34213
34214             projection
34215                 .translate(tMain)
34216                 .scale(kMini / (2 * Math.PI));
34217
34218             var s = projection(loc),
34219                 mouse = panning ? [ tCurr[0] - tStart[0], tCurr[1] - tStart[1] ] : [0, 0],
34220                 tMini = [
34221                     cMini[0] - s[0] + tMain[0] + mouse[0],
34222                     cMini[1] - s[1] + tMain[1] + mouse[1]
34223                 ];
34224
34225             projection
34226                 .translate(tMini)
34227                 .clipExtent([[0, 0], dMini]);
34228
34229             zoom
34230                 .center(cMini)
34231                 .translate(tMini)
34232                 .scale(kMini);
34233
34234             tLast = tCurr = tMini;
34235             kLast = kCurr = kMini;
34236
34237             if (transformed) {
34238                 iD.util.setTransform(tiles, 0, 0);
34239                 iD.util.setTransform(svg, 0, 0);
34240                 iD.util.setTransform(gpx, 0, 0);
34241                 transformed = false;
34242             }
34243         }
34244
34245
34246         function redraw() {
34247             if (hidden()) return;
34248
34249             updateProjection();
34250
34251             var dMini = selection.dimensions(),
34252                 zMini = ktoz(projection.scale() * 2 * Math.PI);
34253
34254             // setup tile container
34255             tiles = selection
34256                 .selectAll('.map-in-map-tiles')
34257                 .data([0]);
34258
34259             tiles
34260                 .enter()
34261                 .append('div')
34262                 .attr('class', 'map-in-map-tiles');
34263
34264             // redraw background
34265             backgroundLayer
34266                 .source(context.background().baseLayerSource())
34267                 .projection(projection)
34268                 .dimensions(dMini);
34269
34270             var background = tiles
34271                 .selectAll('.map-in-map-background')
34272                 .data([0]);
34273
34274             background.enter()
34275                 .append('div')
34276                 .attr('class', 'map-in-map-background');
34277
34278             background
34279                 .call(backgroundLayer);
34280
34281             // redraw overlay
34282             var overlaySources = context.background().overlayLayerSources(),
34283                 hasOverlay = false;
34284
34285             for (var i = 0; i < overlaySources.length; i++) {
34286                 if (overlaySources[i].validZoom(zMini)) {
34287                     overlayLayer
34288                         .source(overlaySources[i])
34289                         .projection(projection)
34290                         .dimensions(dMini);
34291
34292                     hasOverlay = true;
34293                     break;
34294                 }
34295             }
34296
34297             var overlay = tiles
34298                 .selectAll('.map-in-map-overlay')
34299                 .data(hasOverlay ? [0] : []);
34300
34301             overlay.enter()
34302                 .append('div')
34303                 .attr('class', 'map-in-map-overlay');
34304
34305             overlay.exit()
34306                 .remove();
34307
34308             if (hasOverlay) {
34309                 overlay
34310                     .call(overlayLayer);
34311             }
34312
34313             gpxLayer
34314                 .projection(projection);
34315
34316             gpx = tiles
34317                 .selectAll('.map-in-map-gpx')
34318                 .data([0]);
34319
34320             gpx.enter()
34321                 .append('div')
34322                 .attr('class', 'map-in-map-gpx');
34323
34324             gpx.call(gpxLayer);
34325             gpx.dimensions(dMini);
34326
34327             // redraw bounding box
34328             if (!panning) {
34329                 var getPath = d3.geo.path().projection(projection),
34330                     bbox = { type: 'Polygon', coordinates: [context.map().extent().polygon()] };
34331
34332                 svg = selection.selectAll('.map-in-map-svg')
34333                     .data([0]);
34334
34335                 svg.enter()
34336                     .append('svg')
34337                     .attr('class', 'map-in-map-svg');
34338
34339                 var path = svg.selectAll('.map-in-map-bbox')
34340                     .data([bbox]);
34341
34342                 path.enter()
34343                     .append('path')
34344                     .attr('class', 'map-in-map-bbox');
34345
34346                 path
34347                     .attr('d', getPath)
34348                     .classed('thick', function(d) { return getPath.area(d) < 30; });
34349             }
34350         }
34351
34352
34353         function queueRedraw() {
34354             clearTimeout(timeoutId);
34355             timeoutId = setTimeout(function() { redraw(); }, 300);
34356         }
34357
34358
34359         function hidden() {
34360             return selection.style('display') === 'none';
34361         }
34362
34363
34364         function toggle() {
34365             if (d3.event) d3.event.preventDefault();
34366
34367             var label = d3.select('.minimap-toggle');
34368
34369             if (hidden()) {
34370                 selection
34371                     .style('display', 'block')
34372                     .style('opacity', 0)
34373                     .transition()
34374                     .duration(200)
34375                     .style('opacity', 1);
34376
34377                 label.classed('active', true)
34378                     .select('input').property('checked', true);
34379
34380                 redraw();
34381
34382             } else {
34383                 selection
34384                     .style('display', 'block')
34385                     .style('opacity', 1)
34386                     .transition()
34387                     .duration(200)
34388                     .style('opacity', 0)
34389                     .each('end', function() {
34390                         d3.select(this).style('display', 'none');
34391                     });
34392
34393                 label.classed('active', false)
34394                     .select('input').property('checked', false);
34395             }
34396         }
34397
34398         iD.ui.MapInMap.toggle = toggle;
34399
34400         selection
34401             .on('mousedown.map-in-map', startMouse)
34402             .on('mouseup.map-in-map', endMouse);
34403
34404         selection
34405             .call(zoom)
34406             .on('dblclick.zoom', null);
34407
34408         context.map()
34409             .on('drawn.map-in-map', function(drawn) {
34410                 if (drawn.full === true) redraw();
34411             });
34412
34413         redraw();
34414
34415         var keybinding = d3.keybinding('map-in-map')
34416             .on(key, toggle);
34417
34418         d3.select(document)
34419             .call(keybinding);
34420     }
34421
34422     return map_in_map;
34423 };
34424 iD.ui.modal = function(selection, blocking) {
34425
34426     var previous = selection.select('div.modal');
34427     var animate = previous.empty();
34428
34429     previous.transition()
34430         .duration(200)
34431         .style('opacity', 0)
34432         .remove();
34433
34434     var shaded = selection
34435         .append('div')
34436         .attr('class', 'shaded')
34437         .style('opacity', 0);
34438
34439     shaded.close = function() {
34440         shaded
34441             .transition()
34442             .duration(200)
34443             .style('opacity',0)
34444             .remove();
34445         modal
34446             .transition()
34447             .duration(200)
34448             .style('top','0px');
34449         keybinding.off();
34450     };
34451
34452     var keybinding = d3.keybinding('modal')
34453         .on('⌫', shaded.close)
34454         .on('⎋', shaded.close);
34455
34456     d3.select(document).call(keybinding);
34457
34458     var modal = shaded.append('div')
34459         .attr('class', 'modal fillL col6');
34460
34461         shaded.on('click.remove-modal', function() {
34462             if (d3.event.target === this && !blocking) shaded.close();
34463         });
34464
34465     modal.append('button')
34466         .attr('class', 'close')
34467         .on('click', function() {
34468             if (!blocking) shaded.close();
34469         })
34470         .append('div')
34471             .attr('class','icon close');
34472
34473     modal.append('div')
34474         .attr('class', 'content');
34475
34476     if (animate) {
34477         shaded.transition().style('opacity', 1);
34478     } else {
34479         shaded.style('opacity', 1);
34480     }
34481
34482     return shaded;
34483 };
34484 iD.ui.Modes = function(context) {
34485     var modes = [
34486         iD.modes.AddPoint(context),
34487         iD.modes.AddLine(context),
34488         iD.modes.AddArea(context)];
34489
34490     function editable() {
34491         return context.editable() && context.mode().id !== 'save';
34492     }
34493
34494     return function(selection) {
34495         var buttons = selection.selectAll('button.add-button')
34496             .data(modes);
34497
34498        buttons.enter().append('button')
34499            .attr('tabindex', -1)
34500            .attr('class', function(mode) { return mode.id + ' add-button col4'; })
34501            .on('click.mode-buttons', function(mode) {
34502                if (mode.id === context.mode().id) {
34503                    context.enter(iD.modes.Browse(context));
34504                } else {
34505                    context.enter(mode);
34506                }
34507            })
34508            .call(bootstrap.tooltip()
34509                .placement('bottom')
34510                .html(true)
34511                .title(function(mode) {
34512                    return iD.ui.tooltipHtml(mode.description, mode.key);
34513                }));
34514
34515         context.map()
34516             .on('move.modes', _.debounce(update, 500));
34517
34518         context
34519             .on('enter.modes', update);
34520
34521         buttons.each(function(d) {
34522             d3.select(this)
34523                 .call(iD.svg.Icon('#icon-' + d.button, 'pre-text'));
34524         });
34525
34526         buttons.append('span')
34527             .attr('class', 'label')
34528             .text(function(mode) { return mode.title; });
34529
34530         context.on('enter.editor', function(entered) {
34531             buttons.classed('active', function(mode) { return entered.button === mode.button; });
34532             context.container()
34533                 .classed('mode-' + entered.id, true);
34534         });
34535
34536         context.on('exit.editor', function(exited) {
34537             context.container()
34538                 .classed('mode-' + exited.id, false);
34539         });
34540
34541         var keybinding = d3.keybinding('mode-buttons');
34542
34543         modes.forEach(function(m) {
34544             keybinding.on(m.key, function() { if (editable()) context.enter(m); });
34545         });
34546
34547         d3.select(document)
34548             .call(keybinding);
34549
34550         function update() {
34551             buttons.property('disabled', !editable());
34552         }
34553     };
34554 };
34555 iD.ui.Notice = function(context) {
34556     return function(selection) {
34557         var div = selection.append('div')
34558             .attr('class', 'notice');
34559
34560         var button = div.append('button')
34561             .attr('class', 'zoom-to notice')
34562             .on('click', function() { context.map().zoom(context.minEditableZoom()); });
34563
34564         button
34565             .call(iD.svg.Icon('#icon-plus', 'pre-text'))
34566             .append('span')
34567             .attr('class', 'label')
34568             .text(t('zoom_in_edit'));
34569
34570         function disableTooHigh() {
34571             div.style('display', context.editable() ? 'none' : 'block');
34572         }
34573
34574         context.map()
34575             .on('move.notice', _.debounce(disableTooHigh, 500));
34576
34577         disableTooHigh();
34578     };
34579 };
34580 iD.ui.preset = function(context) {
34581     var event = d3.dispatch('change'),
34582         state,
34583         fields,
34584         preset,
34585         tags,
34586         id;
34587
34588     function UIField(field, entity, show) {
34589         field = _.clone(field);
34590
34591         field.input = iD.ui.preset[field.type](field, context)
34592             .on('change', event.change);
34593
34594         if (field.input.entity) field.input.entity(entity);
34595
34596         field.keys = field.keys || [field.key];
34597
34598         field.show = show;
34599
34600         field.shown = function() {
34601             return field.id === 'name' || field.show || _.any(field.keys, function(key) { return !!tags[key]; });
34602         };
34603
34604         field.modified = function() {
34605             var original = context.graph().base().entities[entity.id];
34606             return _.any(field.keys, function(key) {
34607                 return original ? tags[key] !== original.tags[key] : tags[key];
34608             });
34609         };
34610
34611         field.revert = function() {
34612             var original = context.graph().base().entities[entity.id],
34613                 t = {};
34614             field.keys.forEach(function(key) {
34615                 t[key] = original ? original.tags[key] : undefined;
34616             });
34617             return t;
34618         };
34619
34620         field.present = function() {
34621             return _.any(field.keys, function(key) {
34622                 return tags[key];
34623             });
34624         };
34625
34626         field.remove = function() {
34627             var t = {};
34628             field.keys.forEach(function(key) {
34629                 t[key] = undefined;
34630             });
34631             return t;
34632         };
34633
34634         return field;
34635     }
34636
34637     function fieldKey(field) {
34638         return field.id;
34639     }
34640
34641     function presets(selection) {
34642         if (!fields) {
34643             var entity = context.entity(id),
34644                 geometry = context.geometry(id);
34645
34646             fields = [UIField(context.presets().field('name'), entity)];
34647
34648             preset.fields.forEach(function(field) {
34649                 if (field.matchGeometry(geometry)) {
34650                     fields.push(UIField(field, entity, true));
34651                 }
34652             });
34653
34654             if (entity.isHighwayIntersection(context.graph())) {
34655                 fields.push(UIField(context.presets().field('restrictions'), entity, true));
34656             }
34657
34658             context.presets().universal().forEach(function(field) {
34659                 if (preset.fields.indexOf(field) < 0) {
34660                     fields.push(UIField(field, entity));
34661                 }
34662             });
34663         }
34664
34665         var shown = fields.filter(function(field) { return field.shown(); }),
34666             notShown = fields.filter(function(field) { return !field.shown(); });
34667
34668         var $form = selection.selectAll('.preset-form')
34669             .data([0]);
34670
34671         $form.enter().append('div')
34672             .attr('class', 'preset-form inspector-inner fillL3');
34673
34674         var $fields = $form.selectAll('.form-field')
34675             .data(shown, fieldKey);
34676
34677         // Enter
34678
34679         var $enter = $fields.enter()
34680             .append('div')
34681             .attr('class', function(field) {
34682                 return 'form-field form-field-' + field.id;
34683             });
34684
34685         var $label = $enter.append('label')
34686             .attr('class', 'form-label')
34687             .attr('for', function(field) { return 'preset-input-' + field.id; })
34688             .text(function(field) { return field.label(); });
34689
34690         var wrap = $label.append('div')
34691             .attr('class', 'form-label-button-wrap');
34692
34693         wrap.append('button')
34694             .attr('class', 'remove-icon')
34695             .call(iD.svg.Icon('#operation-delete'));
34696
34697         wrap.append('button')
34698             .attr('class', 'modified-icon')
34699             .attr('tabindex', -1)
34700             .call(iD.svg.Icon('#icon-undo'));
34701
34702         // Update
34703
34704         $fields.select('.form-label-button-wrap .remove-icon')
34705             .on('click', remove);
34706
34707         $fields.select('.modified-icon')
34708             .on('click', revert);
34709
34710         $fields
34711             .order()
34712             .classed('modified', function(field) {
34713                 return field.modified();
34714             })
34715             .classed('present', function(field) {
34716                 return field.present();
34717             })
34718             .each(function(field) {
34719                 var reference = iD.ui.TagReference(field.reference || {key: field.key}, context);
34720
34721                 if (state === 'hover') {
34722                     reference.showing(false);
34723                 }
34724
34725                 d3.select(this)
34726                     .call(field.input)
34727                     .call(reference.body)
34728                     .select('.form-label-button-wrap')
34729                     .call(reference.button);
34730
34731                 field.input.tags(tags);
34732             });
34733
34734         $fields.exit()
34735             .remove();
34736
34737         notShown = notShown.map(function(field) {
34738             return {
34739                 title: field.label(),
34740                 value: field.label(),
34741                 field: field
34742             };
34743         });
34744
34745         var $more = selection.selectAll('.more-fields')
34746             .data((notShown.length > 0) ? [0] : []);
34747
34748         $more.enter().append('div')
34749             .attr('class', 'more-fields')
34750             .append('label')
34751                 .text(t('inspector.add_fields'));
34752
34753         var $input = $more.selectAll('.value')
34754             .data([0]);
34755
34756         $input.enter().append('input')
34757             .attr('class', 'value')
34758             .attr('type', 'text');
34759
34760         $input.value('')
34761             .attr('placeholder', function() {
34762                 var placeholder = [];
34763                 for (var field in notShown) {
34764                     placeholder.push(notShown[field].title);
34765                 }
34766                 return placeholder.slice(0,3).join(', ') + ((placeholder.length > 3) ? '…' : '');
34767             })
34768             .call(d3.combobox().data(notShown)
34769                 .minItems(1)
34770                 .on('accept', show));
34771
34772         $more.exit()
34773             .remove();
34774
34775         $input.exit()
34776             .remove();
34777
34778         function show(field) {
34779             field = field.field;
34780             field.show = true;
34781             presets(selection);
34782             field.input.focus();
34783         }
34784
34785         function revert(field) {
34786             d3.event.stopPropagation();
34787             d3.event.preventDefault();
34788             event.change(field.revert());
34789         }
34790
34791         function remove(field) {
34792             d3.event.stopPropagation();
34793             d3.event.preventDefault();
34794             event.change(field.remove());
34795         }
34796     }
34797
34798     presets.preset = function(_) {
34799         if (!arguments.length) return preset;
34800         if (preset && preset.id === _.id) return presets;
34801         preset = _;
34802         fields = null;
34803         return presets;
34804     };
34805
34806     presets.state = function(_) {
34807         if (!arguments.length) return state;
34808         state = _;
34809         return presets;
34810     };
34811
34812     presets.tags = function(_) {
34813         if (!arguments.length) return tags;
34814         tags = _;
34815         // Don't reset fields here.
34816         return presets;
34817     };
34818
34819     presets.entityID = function(_) {
34820         if (!arguments.length) return id;
34821         if (id === _) return presets;
34822         id = _;
34823         fields = null;
34824         return presets;
34825     };
34826
34827     return d3.rebind(presets, event, 'on');
34828 };
34829 iD.ui.PresetIcon = function() {
34830     var preset, geometry;
34831
34832     function presetIcon(selection) {
34833         selection.each(render);
34834     }
34835
34836     function render() {
34837         var selection = d3.select(this),
34838             p = preset.apply(this, arguments),
34839             geom = geometry.apply(this, arguments),
34840             icon = p.icon || (geom === 'line' ? 'other-line' : 'marker-stroked'),
34841             maki = iD.data.featureIcons.hasOwnProperty(icon + '-24');
34842
34843         function tag_classes(p) {
34844             var s = '';
34845             for (var i in p.tags) {
34846                 s += ' tag-' + i;
34847                 if (p.tags[i] !== '*') {
34848                     s += ' tag-' + i + '-' + p.tags[i];
34849                 }
34850             }
34851             return s;
34852         }
34853
34854         var $fill = selection.selectAll('.preset-icon-fill')
34855             .data([0]);
34856
34857         $fill.enter().append('div');
34858
34859         $fill.attr('class', function() {
34860             return 'preset-icon-fill preset-icon-fill-' + geom + tag_classes(p);
34861         });
34862
34863         var $frame = selection.selectAll('.preset-icon-frame')
34864             .data([0]);
34865
34866         $frame.enter()
34867             .append('div')
34868             .call(iD.svg.Icon('#preset-icon-frame'));
34869
34870         $frame.attr('class', function() {
34871             return 'preset-icon-frame ' + (geom === 'area' ? '' : 'hide');
34872         });
34873
34874
34875         var $icon = selection.selectAll('.preset-icon')
34876             .data([0]);
34877
34878         $icon.enter()
34879             .append('div')
34880             .attr('class', 'preset-icon')
34881             .call(iD.svg.Icon(''));
34882
34883         $icon
34884             .attr('class', 'preset-icon preset-icon-' + (maki ? '32' : '60'));
34885
34886         $icon.selectAll('svg')
34887             .attr('class', function() {
34888                 return 'icon ' + icon + tag_classes(p);
34889             });
34890
34891         $icon.selectAll('use')       // workaround: maki parking-24 broken?
34892             .attr('href', '#' + icon + (maki ? ( icon === 'parking' ? '-18' : '-24') : ''));
34893     }
34894
34895     presetIcon.preset = function(_) {
34896         if (!arguments.length) return preset;
34897         preset = d3.functor(_);
34898         return presetIcon;
34899     };
34900
34901     presetIcon.geometry = function(_) {
34902         if (!arguments.length) return geometry;
34903         geometry = d3.functor(_);
34904         return presetIcon;
34905     };
34906
34907     return presetIcon;
34908 };
34909 iD.ui.PresetList = function(context) {
34910     var event = d3.dispatch('choose'),
34911         id,
34912         currentPreset,
34913         autofocus = false;
34914
34915     function presetList(selection) {
34916         var geometry = context.geometry(id),
34917             presets = context.presets().matchGeometry(geometry);
34918
34919         selection.html('');
34920
34921         var messagewrap = selection.append('div')
34922             .attr('class', 'header fillL cf');
34923
34924         var message = messagewrap.append('h3')
34925             .text(t('inspector.choose'));
34926
34927         if (context.entity(id).isUsed(context.graph())) {
34928             messagewrap.append('button')
34929                 .attr('class', 'preset-choose')
34930                 .on('click', function() { event.choose(currentPreset); })
34931                 .append('span')
34932                 .html('&#9658;');
34933         } else {
34934             messagewrap.append('button')
34935                 .attr('class', 'close')
34936                 .on('click', function() {
34937                     context.enter(iD.modes.Browse(context));
34938                 })
34939                 .call(iD.svg.Icon('#icon-close'));
34940         }
34941
34942         function keydown() {
34943             // hack to let delete shortcut work when search is autofocused
34944             if (search.property('value').length === 0 &&
34945                 (d3.event.keyCode === d3.keybinding.keyCodes['⌫'] ||
34946                  d3.event.keyCode === d3.keybinding.keyCodes['⌦'])) {
34947                 d3.event.preventDefault();
34948                 d3.event.stopPropagation();
34949                 iD.operations.Delete([id], context)();
34950             } else if (search.property('value').length === 0 &&
34951                 (d3.event.ctrlKey || d3.event.metaKey) &&
34952                 d3.event.keyCode === d3.keybinding.keyCodes.z) {
34953                 d3.event.preventDefault();
34954                 d3.event.stopPropagation();
34955                 context.undo();
34956             } else if (!d3.event.ctrlKey && !d3.event.metaKey) {
34957                 d3.select(this).on('keydown', null);
34958             }
34959         }
34960
34961         function keypress() {
34962             // enter
34963             var value = search.property('value');
34964             if (d3.event.keyCode === 13 && value.length) {
34965                 list.selectAll('.preset-list-item:first-child').datum().choose();
34966             }
34967         }
34968
34969         function inputevent() {
34970             var value = search.property('value');
34971             list.classed('filtered', value.length);
34972             if (value.length) {
34973                 var results = presets.search(value, geometry);
34974                 message.text(t('inspector.results', {
34975                     n: results.collection.length,
34976                     search: value
34977                 }));
34978                 list.call(drawList, results);
34979             } else {
34980                 list.call(drawList, context.presets().defaults(geometry, 36));
34981                 message.text(t('inspector.choose'));
34982             }
34983         }
34984
34985         var searchWrap = selection.append('div')
34986             .attr('class', 'search-header');
34987
34988         var search = searchWrap.append('input')
34989             .attr('class', 'preset-search-input')
34990             .attr('placeholder', t('inspector.search'))
34991             .attr('type', 'search')
34992             .on('keydown', keydown)
34993             .on('keypress', keypress)
34994             .on('input', inputevent);
34995
34996         searchWrap
34997             .call(iD.svg.Icon('#icon-search', 'pre-text'));
34998
34999         if (autofocus) {
35000             search.node().focus();
35001         }
35002
35003         var listWrap = selection.append('div')
35004             .attr('class', 'inspector-body');
35005
35006         var list = listWrap.append('div')
35007             .attr('class', 'preset-list fillL cf')
35008             .call(drawList, context.presets().defaults(geometry, 36));
35009     }
35010
35011     function drawList(list, presets) {
35012         var collection = presets.collection.map(function(preset) {
35013             return preset.members ? CategoryItem(preset) : PresetItem(preset);
35014         });
35015
35016         var items = list.selectAll('.preset-list-item')
35017             .data(collection, function(d) { return d.preset.id; });
35018
35019         items.enter().append('div')
35020             .attr('class', function(item) { return 'preset-list-item preset-' + item.preset.id.replace('/', '-'); })
35021             .classed('current', function(item) { return item.preset === currentPreset; })
35022             .each(function(item) {
35023                 d3.select(this).call(item);
35024             })
35025             .style('opacity', 0)
35026             .transition()
35027             .style('opacity', 1);
35028
35029         items.order();
35030
35031         items.exit()
35032             .remove();
35033     }
35034
35035     function CategoryItem(preset) {
35036         var box, sublist, shown = false;
35037
35038         function item(selection) {
35039             var wrap = selection.append('div')
35040                 .attr('class', 'preset-list-button-wrap category col12');
35041
35042             wrap.append('button')
35043                 .attr('class', 'preset-list-button')
35044                 .call(iD.ui.PresetIcon()
35045                     .geometry(context.geometry(id))
35046                     .preset(preset))
35047                 .on('click', item.choose)
35048                 .append('div')
35049                 .attr('class', 'label')
35050                 .text(preset.name());
35051
35052             box = selection.append('div')
35053                 .attr('class', 'subgrid col12')
35054                 .style('max-height', '0px')
35055                 .style('opacity', 0);
35056
35057             box.append('div')
35058                 .attr('class', 'arrow');
35059
35060             sublist = box.append('div')
35061                 .attr('class', 'preset-list fillL3 cf fl');
35062         }
35063
35064         item.choose = function() {
35065             if (shown) {
35066                 shown = false;
35067                 box.transition()
35068                     .duration(200)
35069                     .style('opacity', '0')
35070                     .style('max-height', '0px')
35071                     .style('padding-bottom', '0px');
35072             } else {
35073                 shown = true;
35074                 sublist.call(drawList, preset.members);
35075                 box.transition()
35076                     .duration(200)
35077                     .style('opacity', '1')
35078                     .style('max-height', 200 + preset.members.collection.length * 80 + 'px')
35079                     .style('padding-bottom', '20px');
35080             }
35081         };
35082
35083         item.preset = preset;
35084
35085         return item;
35086     }
35087
35088     function PresetItem(preset) {
35089         function item(selection) {
35090             var wrap = selection.append('div')
35091                 .attr('class', 'preset-list-button-wrap col12');
35092
35093             wrap.append('button')
35094                 .attr('class', 'preset-list-button')
35095                 .call(iD.ui.PresetIcon()
35096                     .geometry(context.geometry(id))
35097                     .preset(preset))
35098                 .on('click', item.choose)
35099                 .append('div')
35100                 .attr('class', 'label')
35101                 .text(preset.name());
35102
35103             wrap.call(item.reference.button);
35104             selection.call(item.reference.body);
35105         }
35106
35107         item.choose = function() {
35108             context.presets().choose(preset);
35109
35110             context.perform(
35111                 iD.actions.ChangePreset(id, currentPreset, preset),
35112                 t('operations.change_tags.annotation'));
35113
35114             event.choose(preset);
35115         };
35116
35117         item.help = function() {
35118             d3.event.stopPropagation();
35119             item.reference.toggle();
35120         };
35121
35122         item.preset = preset;
35123         item.reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context);
35124
35125         return item;
35126     }
35127
35128     presetList.autofocus = function(_) {
35129         if (!arguments.length) return autofocus;
35130         autofocus = _;
35131         return presetList;
35132     };
35133
35134     presetList.entityID = function(_) {
35135         if (!arguments.length) return id;
35136         id = _;
35137         presetList.preset(context.presets().match(context.entity(id), context.graph()));
35138         return presetList;
35139     };
35140
35141     presetList.preset = function(_) {
35142         if (!arguments.length) return currentPreset;
35143         currentPreset = _;
35144         return presetList;
35145     };
35146
35147     return d3.rebind(presetList, event, 'on');
35148 };
35149 iD.ui.RadialMenu = function(context, operations) {
35150     var menu,
35151         center = [0, 0],
35152         tooltip;
35153
35154     var radialMenu = function(selection) {
35155         if (!operations.length)
35156             return;
35157
35158         selection.node().parentNode.focus();
35159
35160         function click(operation) {
35161             d3.event.stopPropagation();
35162             if (operation.disabled())
35163                 return;
35164             operation();
35165             radialMenu.close();
35166         }
35167
35168         menu = selection.append('g')
35169             .attr('class', 'radial-menu')
35170             .attr('transform', 'translate(' + center + ')')
35171             .attr('opacity', 0);
35172
35173         menu.transition()
35174             .attr('opacity', 1);
35175
35176         var r = 50,
35177             a = Math.PI / 4,
35178             a0 = -Math.PI / 4,
35179             a1 = a0 + (operations.length - 1) * a;
35180
35181         menu.append('path')
35182             .attr('class', 'radial-menu-background')
35183             .attr('d', 'M' + r * Math.sin(a0) + ',' +
35184                              r * Math.cos(a0) +
35185                       ' A' + r + ',' + r + ' 0 ' + (operations.length > 5 ? '1' : '0') + ',0 ' +
35186                              (r * Math.sin(a1) + 1e-3) + ',' +
35187                              (r * Math.cos(a1) + 1e-3)) // Force positive-length path (#1305)
35188             .attr('stroke-width', 50)
35189             .attr('stroke-linecap', 'round');
35190
35191         var button = menu.selectAll()
35192             .data(operations)
35193             .enter()
35194             .append('g')
35195             .attr('class', function(d) { return 'radial-menu-item radial-menu-item-' + d.id; })
35196             .classed('disabled', function(d) { return d.disabled(); })
35197             .attr('transform', function(d, i) {
35198                 return 'translate(' + iD.geo.roundCoords([
35199                         r * Math.sin(a0 + i * a),
35200                         r * Math.cos(a0 + i * a)]).join(',') + ')';
35201             });
35202
35203         button.append('circle')
35204             .attr('r', 15)
35205             .on('click', click)
35206             .on('mousedown', mousedown)
35207             .on('mouseover', mouseover)
35208             .on('mouseout', mouseout);
35209
35210         button.append('use')
35211             .attr('transform', 'translate(-10,-10)')
35212             .attr('width', '20')
35213             .attr('height', '20')
35214             .attr('xlink:href', function(d) { return '#operation-' + d.id; });
35215
35216         tooltip = d3.select(document.body)
35217             .append('div')
35218             .attr('class', 'tooltip-inner radial-menu-tooltip');
35219
35220         function mousedown() {
35221             d3.event.stopPropagation(); // https://github.com/openstreetmap/iD/issues/1869
35222         }
35223
35224         function mouseover(d, i) {
35225             var rect = context.surfaceRect(),
35226                 angle = a0 + i * a,
35227                 top = rect.top + (r + 25) * Math.cos(angle) + center[1] + 'px',
35228                 left = rect.left + (r + 25) * Math.sin(angle) + center[0] + 'px',
35229                 bottom = rect.height - (r + 25) * Math.cos(angle) - center[1] + 'px',
35230                 right = rect.width - (r + 25) * Math.sin(angle) - center[0] + 'px';
35231
35232             tooltip
35233                 .style('top', null)
35234                 .style('left', null)
35235                 .style('bottom', null)
35236                 .style('right', null)
35237                 .style('display', 'block')
35238                 .html(iD.ui.tooltipHtml(d.tooltip(), d.keys[0]));
35239
35240             if (i === 0) {
35241                 tooltip
35242                     .style('right', right)
35243                     .style('top', top);
35244             } else if (i >= 4) {
35245                 tooltip
35246                     .style('left', left)
35247                     .style('bottom', bottom);
35248             } else {
35249                 tooltip
35250                     .style('left', left)
35251                     .style('top', top);
35252             }
35253         }
35254
35255         function mouseout() {
35256             tooltip.style('display', 'none');
35257         }
35258     };
35259
35260     radialMenu.close = function() {
35261         if (menu) {
35262             menu
35263                 .style('pointer-events', 'none')
35264                 .transition()
35265                 .attr('opacity', 0)
35266                 .remove();
35267         }
35268
35269         if (tooltip) {
35270             tooltip.remove();
35271         }
35272     };
35273
35274     radialMenu.center = function(_) {
35275         if (!arguments.length) return center;
35276         center = _;
35277         return radialMenu;
35278     };
35279
35280     return radialMenu;
35281 };
35282 iD.ui.RawMemberEditor = function(context) {
35283     var id;
35284
35285     function selectMember(d) {
35286         d3.event.preventDefault();
35287         context.enter(iD.modes.Select(context, [d.id]));
35288     }
35289
35290     function changeRole(d) {
35291         var role = d3.select(this).property('value');
35292         context.perform(
35293             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.id, {role: role}), d.index),
35294             t('operations.change_role.annotation'));
35295     }
35296
35297     function deleteMember(d) {
35298         context.perform(
35299             iD.actions.DeleteMember(d.relation.id, d.index),
35300             t('operations.delete_member.annotation'));
35301
35302         if (!context.hasEntity(d.relation.id)) {
35303             context.enter(iD.modes.Browse(context));
35304         }
35305     }
35306
35307     function rawMemberEditor(selection) {
35308         var entity = context.entity(id),
35309             memberships = [];
35310
35311         entity.members.forEach(function(member, index) {
35312             memberships.push({
35313                 index: index,
35314                 id: member.id,
35315                 role: member.role,
35316                 relation: entity,
35317                 member: context.hasEntity(member.id)
35318             });
35319         });
35320
35321         selection.call(iD.ui.Disclosure()
35322             .title(t('inspector.all_members') + ' (' + memberships.length + ')')
35323             .expanded(true)
35324             .on('toggled', toggled)
35325             .content(content));
35326
35327         function toggled(expanded) {
35328             if (expanded) {
35329                 selection.node().parentNode.scrollTop += 200;
35330             }
35331         }
35332
35333         function content($wrap) {
35334             var $list = $wrap.selectAll('.member-list')
35335                 .data([0]);
35336
35337             $list.enter().append('ul')
35338                 .attr('class', 'member-list');
35339
35340             var $items = $list.selectAll('li')
35341                 .data(memberships, function(d) {
35342                     return iD.Entity.key(d.relation) + ',' + d.index + ',' +
35343                         (d.member ? iD.Entity.key(d.member) : 'incomplete');
35344                 });
35345
35346             var $enter = $items.enter().append('li')
35347                 .attr('class', 'member-row form-field')
35348                 .classed('member-incomplete', function(d) { return !d.member; });
35349
35350             $enter.each(function(d) {
35351                 if (d.member) {
35352                     var $label = d3.select(this).append('label')
35353                         .attr('class', 'form-label')
35354                         .append('a')
35355                         .attr('href', '#')
35356                         .on('click', selectMember);
35357
35358                     $label.append('span')
35359                         .attr('class', 'member-entity-type')
35360                         .text(function(d) { return context.presets().match(d.member, context.graph()).name(); });
35361
35362                     $label.append('span')
35363                         .attr('class', 'member-entity-name')
35364                         .text(function(d) { return iD.util.displayName(d.member); });
35365
35366                 } else {
35367                     d3.select(this).append('label')
35368                         .attr('class', 'form-label')
35369                         .text(t('inspector.incomplete'));
35370                 }
35371             });
35372
35373             $enter.append('input')
35374                 .attr('class', 'member-role')
35375                 .property('type', 'text')
35376                 .attr('maxlength', 255)
35377                 .attr('placeholder', t('inspector.role'))
35378                 .property('value', function(d) { return d.role; })
35379                 .on('change', changeRole);
35380
35381             $enter.append('button')
35382                 .attr('tabindex', -1)
35383                 .attr('class', 'remove button-input-action member-delete minor')
35384                 .on('click', deleteMember)
35385                 .call(iD.svg.Icon('#operation-delete'));
35386
35387             $items.exit()
35388                 .remove();
35389         }
35390     }
35391
35392     rawMemberEditor.entityID = function(_) {
35393         if (!arguments.length) return id;
35394         id = _;
35395         return rawMemberEditor;
35396     };
35397
35398     return rawMemberEditor;
35399 };
35400 iD.ui.RawMembershipEditor = function(context) {
35401     var id, showBlank;
35402
35403     function selectRelation(d) {
35404         d3.event.preventDefault();
35405         context.enter(iD.modes.Select(context, [d.relation.id]));
35406     }
35407
35408     function changeRole(d) {
35409         var role = d3.select(this).property('value');
35410         context.perform(
35411             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.member, {role: role}), d.index),
35412             t('operations.change_role.annotation'));
35413     }
35414
35415     function addMembership(d, role) {
35416         showBlank = false;
35417
35418         if (d.relation) {
35419             context.perform(
35420                 iD.actions.AddMember(d.relation.id, {id: id, type: context.entity(id).type, role: role}),
35421                 t('operations.add_member.annotation'));
35422
35423         } else {
35424             var relation = iD.Relation();
35425
35426             context.perform(
35427                 iD.actions.AddEntity(relation),
35428                 iD.actions.AddMember(relation.id, {id: id, type: context.entity(id).type, role: role}),
35429                 t('operations.add.annotation.relation'));
35430
35431             context.enter(iD.modes.Select(context, [relation.id]));
35432         }
35433     }
35434
35435     function deleteMembership(d) {
35436         context.perform(
35437             iD.actions.DeleteMember(d.relation.id, d.index),
35438             t('operations.delete_member.annotation'));
35439     }
35440
35441     function relations(q) {
35442         var newRelation = {
35443                 relation: null,
35444                 value: t('inspector.new_relation')
35445             },
35446             result = [],
35447             graph = context.graph();
35448
35449         context.intersects(context.extent()).forEach(function(entity) {
35450             if (entity.type !== 'relation' || entity.id === id)
35451                 return;
35452
35453             var presetName = context.presets().match(entity, graph).name(),
35454                 entityName = iD.util.displayName(entity) || '';
35455
35456             var value = presetName + ' ' + entityName;
35457             if (q && value.toLowerCase().indexOf(q.toLowerCase()) === -1)
35458                 return;
35459
35460             result.push({
35461                 relation: entity,
35462                 value: value
35463             });
35464         });
35465
35466         result.sort(function(a, b) {
35467             return iD.Relation.creationOrder(a.relation, b.relation);
35468         });
35469         result.unshift(newRelation);
35470
35471         return result;
35472     }
35473
35474     function rawMembershipEditor(selection) {
35475         var entity = context.entity(id),
35476             memberships = [];
35477
35478         context.graph().parentRelations(entity).forEach(function(relation) {
35479             relation.members.forEach(function(member, index) {
35480                 if (member.id === entity.id) {
35481                     memberships.push({relation: relation, member: member, index: index});
35482                 }
35483             });
35484         });
35485
35486         selection.call(iD.ui.Disclosure()
35487             .title(t('inspector.all_relations') + ' (' + memberships.length + ')')
35488             .expanded(true)
35489             .on('toggled', toggled)
35490             .content(content));
35491
35492         function toggled(expanded) {
35493             if (expanded) {
35494                 selection.node().parentNode.scrollTop += 200;
35495             }
35496         }
35497
35498         function content($wrap) {
35499             var $list = $wrap.selectAll('.member-list')
35500                 .data([0]);
35501
35502             $list.enter().append('ul')
35503                 .attr('class', 'member-list');
35504
35505             var $items = $list.selectAll('li.member-row-normal')
35506                 .data(memberships, function(d) { return iD.Entity.key(d.relation) + ',' + d.index; });
35507
35508             var $enter = $items.enter().append('li')
35509                 .attr('class', 'member-row member-row-normal form-field');
35510
35511             var $label = $enter.append('label')
35512                 .attr('class', 'form-label')
35513                 .append('a')
35514                 .attr('href', '#')
35515                 .on('click', selectRelation);
35516
35517             $label.append('span')
35518                 .attr('class', 'member-entity-type')
35519                 .text(function(d) { return context.presets().match(d.relation, context.graph()).name(); });
35520
35521             $label.append('span')
35522                 .attr('class', 'member-entity-name')
35523                 .text(function(d) { return iD.util.displayName(d.relation); });
35524
35525             $enter.append('input')
35526                 .attr('class', 'member-role')
35527                 .property('type', 'text')
35528                 .attr('maxlength', 255)
35529                 .attr('placeholder', t('inspector.role'))
35530                 .property('value', function(d) { return d.member.role; })
35531                 .on('change', changeRole);
35532
35533             $enter.append('button')
35534                 .attr('tabindex', -1)
35535                 .attr('class', 'remove button-input-action member-delete minor')
35536                 .on('click', deleteMembership)
35537                 .call(iD.svg.Icon('#operation-delete'));
35538
35539             $items.exit()
35540                 .remove();
35541
35542             if (showBlank) {
35543                 var $new = $list.selectAll('.member-row-new')
35544                     .data([0]);
35545
35546                 $enter = $new.enter().append('li')
35547                     .attr('class', 'member-row member-row-new form-field');
35548
35549                 $enter.append('input')
35550                     .attr('type', 'text')
35551                     .attr('class', 'member-entity-input')
35552                     .call(d3.combobox()
35553                         .minItems(1)
35554                         .fetcher(function(value, callback) {
35555                             callback(relations(value));
35556                         })
35557                         .on('accept', function(d) {
35558                             addMembership(d, $new.select('.member-role').property('value'));
35559                         }));
35560
35561                 $enter.append('input')
35562                     .attr('class', 'member-role')
35563                     .property('type', 'text')
35564                     .attr('maxlength', 255)
35565                     .attr('placeholder', t('inspector.role'))
35566                     .on('change', changeRole);
35567
35568                 $enter.append('button')
35569                     .attr('tabindex', -1)
35570                     .attr('class', 'remove button-input-action member-delete minor')
35571                     .on('click', deleteMembership)
35572                     .call(iD.svg.Icon('#operation-delete'));
35573
35574             } else {
35575                 $list.selectAll('.member-row-new')
35576                     .remove();
35577             }
35578
35579             var $add = $wrap.selectAll('.add-relation')
35580                 .data([0]);
35581
35582             $add.enter()
35583                 .append('button')
35584                 .attr('class', 'add-relation')
35585                 .call(iD.svg.Icon('#icon-plus', 'light'));
35586
35587             $wrap.selectAll('.add-relation')
35588                 .on('click', function() {
35589                     showBlank = true;
35590                     content($wrap);
35591                     $list.selectAll('.member-entity-input').node().focus();
35592                 });
35593         }
35594     }
35595
35596     rawMembershipEditor.entityID = function(_) {
35597         if (!arguments.length) return id;
35598         id = _;
35599         return rawMembershipEditor;
35600     };
35601
35602     return rawMembershipEditor;
35603 };
35604 iD.ui.RawTagEditor = function(context) {
35605     var event = d3.dispatch('change'),
35606         showBlank = false,
35607         state,
35608         preset,
35609         tags,
35610         id;
35611
35612     function rawTagEditor(selection) {
35613         var count = Object.keys(tags).filter(function(d) { return d; }).length;
35614
35615         selection.call(iD.ui.Disclosure()
35616             .title(t('inspector.all_tags') + ' (' + count + ')')
35617             .expanded(context.storage('raw_tag_editor.expanded') === 'true' || preset.isFallback())
35618             .on('toggled', toggled)
35619             .content(content));
35620
35621         function toggled(expanded) {
35622             context.storage('raw_tag_editor.expanded', expanded);
35623             if (expanded) {
35624                 selection.node().parentNode.scrollTop += 200;
35625             }
35626         }
35627     }
35628
35629     function content($wrap) {
35630         var entries = d3.entries(tags);
35631
35632         if (!entries.length || showBlank) {
35633             showBlank = false;
35634             entries.push({key: '', value: ''});
35635         }
35636
35637         var $list = $wrap.selectAll('.tag-list')
35638             .data([0]);
35639
35640         $list.enter().append('ul')
35641             .attr('class', 'tag-list');
35642
35643         var $newTag = $wrap.selectAll('.add-tag')
35644             .data([0]);
35645
35646         $newTag.enter()
35647             .append('button')
35648             .attr('class', 'add-tag')
35649             .call(iD.svg.Icon('#icon-plus', 'light'));
35650
35651         $newTag.on('click', addTag);
35652
35653         var $items = $list.selectAll('li')
35654             .data(entries, function(d) { return d.key; });
35655
35656         // Enter
35657
35658         var $enter = $items.enter().append('li')
35659             .attr('class', 'tag-row cf');
35660
35661         $enter.append('div')
35662             .attr('class', 'key-wrap')
35663             .append('input')
35664             .property('type', 'text')
35665             .attr('class', 'key')
35666             .attr('maxlength', 255);
35667
35668         $enter.append('div')
35669             .attr('class', 'input-wrap-position')
35670             .append('input')
35671             .property('type', 'text')
35672             .attr('class', 'value')
35673             .attr('maxlength', 255);
35674
35675         $enter.append('button')
35676             .attr('tabindex', -1)
35677             .attr('class', 'remove minor')
35678             .call(iD.svg.Icon('#operation-delete'));
35679
35680         if (context.taginfo()) {
35681             $enter.each(bindTypeahead);
35682         }
35683
35684         // Update
35685
35686         $items.order();
35687
35688         $items.each(function(tag) {
35689             var isRelation = (context.entity(id).type === 'relation'),
35690                 reference;
35691             if (isRelation && tag.key === 'type')
35692                 reference = iD.ui.TagReference({rtype: tag.value}, context);
35693             else
35694                 reference = iD.ui.TagReference({key: tag.key, value: tag.value}, context);
35695
35696             if (state === 'hover') {
35697                 reference.showing(false);
35698             }
35699
35700             d3.select(this)
35701                 .call(reference.button)
35702                 .call(reference.body);
35703         });
35704
35705         $items.select('input.key')
35706             .value(function(d) { return d.key; })
35707             .on('blur', keyChange)
35708             .on('change', keyChange);
35709
35710         $items.select('input.value')
35711             .value(function(d) { return d.value; })
35712             .on('blur', valueChange)
35713             .on('change', valueChange)
35714             .on('keydown.push-more', pushMore);
35715
35716         $items.select('button.remove')
35717             .on('click', removeTag);
35718
35719         $items.exit()
35720             .remove();
35721
35722         function pushMore() {
35723             if (d3.event.keyCode === 9 && !d3.event.shiftKey &&
35724                 $list.selectAll('li:last-child input.value').node() === this) {
35725                 addTag();
35726             }
35727         }
35728
35729         function bindTypeahead() {
35730             var row = d3.select(this),
35731                 key = row.selectAll('input.key'),
35732                 value = row.selectAll('input.value');
35733
35734             function sort(value, data) {
35735                 var sameletter = [],
35736                     other = [];
35737                 for (var i = 0; i < data.length; i++) {
35738                     if (data[i].value.substring(0, value.length) === value) {
35739                         sameletter.push(data[i]);
35740                     } else {
35741                         other.push(data[i]);
35742                     }
35743                 }
35744                 return sameletter.concat(other);
35745             }
35746
35747             key.call(d3.combobox()
35748                 .fetcher(function(value, callback) {
35749                     context.taginfo().keys({
35750                         debounce: true,
35751                         geometry: context.geometry(id),
35752                         query: value
35753                     }, function(err, data) {
35754                         if (!err) callback(sort(value, data));
35755                     });
35756                 }));
35757
35758             value.call(d3.combobox()
35759                 .fetcher(function(value, callback) {
35760                     context.taginfo().values({
35761                         debounce: true,
35762                         key: key.value(),
35763                         geometry: context.geometry(id),
35764                         query: value
35765                     }, function(err, data) {
35766                         if (!err) callback(sort(value, data));
35767                     });
35768                 }));
35769         }
35770
35771         function keyChange(d) {
35772             var kOld = d.key,
35773                 kNew = this.value.trim(),
35774                 tag = {};
35775
35776             if (kNew && kNew !== kOld) {
35777                 var match = kNew.match(/^(.*?)(?:_(\d+))?$/),
35778                     base = match[1],
35779                     suffix = +(match[2] || 1);
35780                 while (tags[kNew]) {  // rename key if already in use
35781                     kNew = base + '_' + suffix++;
35782                 }
35783             }
35784             tag[kOld] = undefined;
35785             tag[kNew] = d.value;
35786             d.key = kNew; // Maintain DOM identity through the subsequent update.
35787             this.value = kNew;
35788             event.change(tag);
35789         }
35790
35791         function valueChange(d) {
35792             var tag = {};
35793             tag[d.key] = this.value;
35794             event.change(tag);
35795         }
35796
35797         function removeTag(d) {
35798             var tag = {};
35799             tag[d.key] = undefined;
35800             event.change(tag);
35801             d3.select(this.parentNode).remove();
35802         }
35803
35804         function addTag() {
35805             // Wrapped in a setTimeout in case it's being called from a blur
35806             // handler. Without the setTimeout, the call to `content` would
35807             // wipe out the pending value change.
35808             setTimeout(function() {
35809                 showBlank = true;
35810                 content($wrap);
35811                 $list.selectAll('li:last-child input.key').node().focus();
35812             }, 0);
35813         }
35814     }
35815
35816     rawTagEditor.state = function(_) {
35817         if (!arguments.length) return state;
35818         state = _;
35819         return rawTagEditor;
35820     };
35821
35822     rawTagEditor.preset = function(_) {
35823         if (!arguments.length) return preset;
35824         preset = _;
35825         return rawTagEditor;
35826     };
35827
35828     rawTagEditor.tags = function(_) {
35829         if (!arguments.length) return tags;
35830         tags = _;
35831         return rawTagEditor;
35832     };
35833
35834     rawTagEditor.entityID = function(_) {
35835         if (!arguments.length) return id;
35836         id = _;
35837         return rawTagEditor;
35838     };
35839
35840     return d3.rebind(rawTagEditor, event, 'on');
35841 };
35842 iD.ui.Restore = function(context) {
35843     return function(selection) {
35844         if (!context.history().lock() || !context.history().restorableChanges())
35845             return;
35846
35847         var modal = iD.ui.modal(selection);
35848
35849         modal.select('.modal')
35850             .attr('class', 'modal fillL col6');
35851
35852         var introModal = modal.select('.content');
35853
35854         introModal.attr('class','cf');
35855
35856         introModal.append('div')
35857             .attr('class', 'modal-section')
35858             .append('h3')
35859             .text(t('restore.heading'));
35860
35861         introModal.append('div')
35862             .attr('class','modal-section')
35863             .append('p')
35864             .text(t('restore.description'));
35865
35866         var buttonWrap = introModal.append('div')
35867             .attr('class', 'modal-actions cf');
35868
35869         var restore = buttonWrap.append('button')
35870             .attr('class', 'restore col6')
35871             .text(t('restore.restore'))
35872             .on('click', function() {
35873                 context.history().restore();
35874                 modal.remove();
35875             });
35876
35877         buttonWrap.append('button')
35878             .attr('class', 'reset col6')
35879             .text(t('restore.reset'))
35880             .on('click', function() {
35881                 context.history().clearSaved();
35882                 modal.remove();
35883             });
35884
35885         restore.node().focus();
35886     };
35887 };
35888 iD.ui.Save = function(context) {
35889     var history = context.history(),
35890         key = iD.ui.cmd('⌘S');
35891
35892     function saving() {
35893         return context.mode().id === 'save';
35894     }
35895
35896     function save() {
35897         d3.event.preventDefault();
35898         if (!saving() && history.hasChanges()) {
35899             context.enter(iD.modes.Save(context));
35900         }
35901     }
35902
35903     return function(selection) {
35904         var tooltip = bootstrap.tooltip()
35905             .placement('bottom')
35906             .html(true)
35907             .title(iD.ui.tooltipHtml(t('save.no_changes'), key));
35908
35909         var button = selection.append('button')
35910             .attr('class', 'save col12 disabled')
35911             .attr('tabindex', -1)
35912             .on('click', save)
35913             .call(tooltip);
35914
35915         button.append('span')
35916             .attr('class', 'label')
35917             .text(t('save.title'));
35918
35919         button.append('span')
35920             .attr('class', 'count')
35921             .text('0');
35922
35923         var keybinding = d3.keybinding('undo-redo')
35924             .on(key, save, true);
35925
35926         d3.select(document)
35927             .call(keybinding);
35928
35929         var numChanges = 0;
35930
35931         context.history().on('change.save', function() {
35932             var _ = history.difference().summary().length;
35933             if (_ === numChanges)
35934                 return;
35935             numChanges = _;
35936
35937             tooltip.title(iD.ui.tooltipHtml(t(numChanges > 0 ?
35938                     'save.help' : 'save.no_changes'), key));
35939
35940             button
35941                 .classed('disabled', numChanges === 0)
35942                 .classed('has-count', numChanges > 0);
35943
35944             button.select('span.count')
35945                 .text(numChanges);
35946         });
35947
35948         context.on('enter.save', function() {
35949             button.property('disabled', saving());
35950             if (saving()) button.call(tooltip.hide);
35951         });
35952     };
35953 };
35954 iD.ui.Scale = function(context) {
35955     var projection = context.projection,
35956         maxLength = 180,
35957         tickHeight = 8;
35958
35959     function scaleDefs(loc1, loc2) {
35960         var lat = (loc2[1] + loc1[1]) / 2,
35961             imperial = (iD.detect().locale.toLowerCase() === 'en-us'),
35962             conversion = (imperial ? 3.28084 : 1),
35963             dist = iD.geo.lonToMeters(loc2[0] - loc1[0], lat) * conversion,
35964             scale = { dist: 0, px: 0, text: '' },
35965             buckets, i, val, dLon;
35966
35967         if (imperial) {
35968             buckets = [5280000, 528000, 52800, 5280, 500, 50, 5, 1];
35969         } else {
35970             buckets = [5000000, 500000, 50000, 5000, 500, 50, 5, 1];
35971         }
35972
35973         // determine a user-friendly endpoint for the scale
35974         for (i = 0; i < buckets.length; i++) {
35975             val = buckets[i];
35976             if (dist >= val) {
35977                 scale.dist = Math.floor(dist / val) * val;
35978                 break;
35979             }
35980         }
35981
35982         dLon = iD.geo.metersToLon(scale.dist / conversion, lat);
35983         scale.px = Math.round(projection([loc1[0] + dLon, loc1[1]])[0]);
35984
35985         if (imperial) {
35986             if (scale.dist >= 5280) {
35987                 scale.dist /= 5280;
35988                 scale.text = String(scale.dist) + ' mi';
35989             } else {
35990                 scale.text = String(scale.dist) + ' ft';
35991             }
35992         } else {
35993             if (scale.dist >= 1000) {
35994                 scale.dist /= 1000;
35995                 scale.text = String(scale.dist) + ' km';
35996             } else {
35997                 scale.text = String(scale.dist) + ' m';
35998             }
35999         }
36000
36001         return scale;
36002     }
36003
36004     function update(selection) {
36005         // choose loc1, loc2 along bottom of viewport (near where the scale will be drawn)
36006         var dims = context.map().dimensions(),
36007             loc1 = projection.invert([0, dims[1]]),
36008             loc2 = projection.invert([maxLength, dims[1]]),
36009             scale = scaleDefs(loc1, loc2);
36010
36011         selection.select('#scalepath')
36012             .attr('d', 'M0.5,0.5v' + tickHeight + 'h' + scale.px + 'v-' + tickHeight);
36013
36014         selection.select('#scaletext')
36015             .attr('x', scale.px + 8)
36016             .attr('y', tickHeight)
36017             .text(scale.text);
36018     }
36019
36020     return function(selection) {
36021         var g = selection.append('svg')
36022             .attr('id', 'scale')
36023             .append('g')
36024             .attr('transform', 'translate(10,11)');
36025
36026         g.append('path').attr('id', 'scalepath');
36027         g.append('text').attr('id', 'scaletext');
36028
36029         update(selection);
36030
36031         context.map().on('move.scale', function() {
36032             update(selection);
36033         });
36034     };
36035 };
36036 iD.ui.SelectionList = function(context, selectedIDs) {
36037
36038     function selectEntity(entity) {
36039         context.enter(iD.modes.Select(context, [entity.id]).suppressMenu(true));
36040     }
36041
36042
36043     function selectionList(selection) {
36044         selection.classed('selection-list-pane', true);
36045
36046         var header = selection.append('div')
36047             .attr('class', 'header fillL cf');
36048
36049         header.append('h3')
36050             .text(t('inspector.multiselect'));
36051
36052         var listWrap = selection.append('div')
36053             .attr('class', 'inspector-body');
36054
36055         var list = listWrap.append('div')
36056             .attr('class', 'feature-list cf');
36057
36058         context.history().on('change.selection-list', drawList);
36059         drawList();
36060
36061         function drawList() {
36062             var entities = selectedIDs
36063                 .map(function(id) { return context.hasEntity(id); })
36064                 .filter(function(entity) { return entity; });
36065
36066             var items = list.selectAll('.feature-list-item')
36067                 .data(entities, iD.Entity.key);
36068
36069             var enter = items.enter().append('button')
36070                 .attr('class', 'feature-list-item')
36071                 .on('click', selectEntity);
36072
36073             // Enter
36074             var label = enter.append('div')
36075                 .attr('class', 'label')
36076                 .call(iD.svg.Icon('', 'pre-text'));
36077
36078             label.append('span')
36079                 .attr('class', 'entity-type');
36080
36081             label.append('span')
36082                 .attr('class', 'entity-name');
36083
36084             // Update
36085             items.selectAll('use')
36086                 .attr('href', function() {
36087                     var entity = this.parentElement.parentElement.__data__;
36088                     return '#icon-' + context.geometry(entity.id);
36089                 });
36090
36091             items.selectAll('.entity-type')
36092                 .text(function(entity) { return context.presets().match(entity, context.graph()).name(); });
36093
36094             items.selectAll('.entity-name')
36095                 .text(function(entity) { return iD.util.displayName(entity); });
36096
36097             // Exit
36098             items.exit()
36099                 .remove();
36100         }
36101     }
36102
36103     return selectionList;
36104
36105 };
36106 iD.ui.Sidebar = function(context) {
36107     var inspector = iD.ui.Inspector(context),
36108         current;
36109
36110     function sidebar(selection) {
36111         var featureListWrap = selection.append('div')
36112             .attr('class', 'feature-list-pane')
36113             .call(iD.ui.FeatureList(context));
36114
36115         selection.call(iD.ui.Notice(context));
36116
36117         var inspectorWrap = selection.append('div')
36118             .attr('class', 'inspector-hidden inspector-wrap fr');
36119
36120         sidebar.hover = function(id) {
36121             if (!current && id) {
36122                 featureListWrap.classed('inspector-hidden', true);
36123                 inspectorWrap.classed('inspector-hidden', false)
36124                     .classed('inspector-hover', true);
36125
36126                 if (inspector.entityID() !== id || inspector.state() !== 'hover') {
36127                     inspector
36128                         .state('hover')
36129                         .entityID(id);
36130
36131                     inspectorWrap.call(inspector);
36132                 }
36133             } else if (!current) {
36134                 featureListWrap.classed('inspector-hidden', false);
36135                 inspectorWrap.classed('inspector-hidden', true);
36136                 inspector.state('hide');
36137             }
36138         };
36139
36140         sidebar.hover = _.throttle(sidebar.hover, 200);
36141
36142         sidebar.select = function(id, newFeature) {
36143             if (!current && id) {
36144                 featureListWrap.classed('inspector-hidden', true);
36145                 inspectorWrap.classed('inspector-hidden', false)
36146                     .classed('inspector-hover', false);
36147
36148                 if (inspector.entityID() !== id || inspector.state() !== 'select') {
36149                     inspector
36150                         .state('select')
36151                         .entityID(id)
36152                         .newFeature(newFeature);
36153
36154                     inspectorWrap.call(inspector);
36155                 }
36156             } else if (!current) {
36157                 featureListWrap.classed('inspector-hidden', false);
36158                 inspectorWrap.classed('inspector-hidden', true);
36159                 inspector.state('hide');
36160             }
36161         };
36162
36163         sidebar.show = function(component) {
36164             featureListWrap.classed('inspector-hidden', true);
36165             inspectorWrap.classed('inspector-hidden', true);
36166             if (current) current.remove();
36167             current = selection.append('div')
36168                 .attr('class', 'sidebar-component')
36169                 .call(component);
36170         };
36171
36172         sidebar.hide = function() {
36173             featureListWrap.classed('inspector-hidden', false);
36174             inspectorWrap.classed('inspector-hidden', true);
36175             if (current) current.remove();
36176             current = null;
36177         };
36178     }
36179
36180     sidebar.hover = function() {};
36181     sidebar.select = function() {};
36182     sidebar.show = function() {};
36183     sidebar.hide = function() {};
36184
36185     return sidebar;
36186 };
36187 iD.ui.SourceSwitch = function(context) {
36188     var keys;
36189
36190     function click() {
36191         d3.event.preventDefault();
36192
36193         if (context.history().hasChanges() &&
36194             !window.confirm(t('source_switch.lose_changes'))) return;
36195
36196         var live = d3.select(this)
36197             .classed('live');
36198
36199         context.connection()
36200             .switch(live ? keys[1] : keys[0]);
36201
36202         context.enter(iD.modes.Browse(context));
36203         context.flush();
36204
36205         d3.select(this)
36206             .text(live ? t('source_switch.dev') : t('source_switch.live'))
36207             .classed('live', !live);
36208     }
36209
36210     var sourceSwitch = function(selection) {
36211         selection.append('a')
36212             .attr('href', '#')
36213             .text(t('source_switch.live'))
36214             .classed('live', true)
36215             .attr('tabindex', -1)
36216             .on('click', click);
36217     };
36218
36219     sourceSwitch.keys = function(_) {
36220         if (!arguments.length) return keys;
36221         keys = _;
36222         return sourceSwitch;
36223     };
36224
36225     return sourceSwitch;
36226 };
36227 iD.ui.Spinner = function(context) {
36228     var connection = context.connection();
36229
36230     return function(selection) {
36231         var img = selection.append('img')
36232             .attr('src', context.imagePath('loader-black.gif'))
36233             .style('opacity', 0);
36234
36235         connection.on('loading.spinner', function() {
36236             img.transition()
36237                 .style('opacity', 1);
36238         });
36239
36240         connection.on('loaded.spinner', function() {
36241             img.transition()
36242                 .style('opacity', 0);
36243         });
36244     };
36245 };
36246 iD.ui.Splash = function(context) {
36247     return function(selection) {
36248         if (context.storage('sawSplash'))
36249              return;
36250
36251         context.storage('sawSplash', true);
36252
36253         var modal = iD.ui.modal(selection);
36254
36255         modal.select('.modal')
36256             .attr('class', 'modal-splash modal col6');
36257
36258         var introModal = modal.select('.content')
36259             .append('div')
36260             .attr('class', 'fillL');
36261
36262         introModal.append('div')
36263             .attr('class','modal-section cf')
36264             .append('h3').text(t('splash.welcome'));
36265
36266         introModal.append('div')
36267             .attr('class','modal-section')
36268             .append('p')
36269             .html(t('splash.text', {
36270                 version: iD.version,
36271                 website: '<a href="http://ideditor.com/">ideditor.com</a>',
36272                 github: '<a href="https://github.com/openstreetmap/iD">github.com</a>'
36273             }));
36274
36275         var buttons = introModal.append('div').attr('class', 'modal-actions cf');
36276
36277         buttons.append('button')
36278             .attr('class', 'col6 walkthrough')
36279             .text(t('splash.walkthrough'))
36280             .on('click', function() {
36281                 d3.select(document.body).call(iD.ui.intro(context));
36282                 modal.close();
36283             });
36284
36285         buttons.append('button')
36286             .attr('class', 'col6 start')
36287             .text(t('splash.start'))
36288             .on('click', modal.close);
36289
36290         modal.select('button.close').attr('class','hide');
36291
36292     };
36293 };
36294 iD.ui.Status = function(context) {
36295     var connection = context.connection(),
36296         errCount = 0;
36297
36298     return function(selection) {
36299
36300         function update() {
36301
36302             connection.status(function(err, apiStatus) {
36303
36304                 selection.html('');
36305
36306                 if (err && errCount++ < 2) return;
36307
36308                 if (err) {
36309                     selection.text(t('status.error'));
36310
36311                 } else if (apiStatus === 'readonly') {
36312                     selection.text(t('status.readonly'));
36313
36314                 } else if (apiStatus === 'offline') {
36315                     selection.text(t('status.offline'));
36316                 }
36317
36318                 selection.attr('class', 'api-status ' + (err ? 'error' : apiStatus));
36319                 if (!err) errCount = 0;
36320
36321             });
36322         }
36323
36324         connection.on('auth', function() { update(selection); });
36325         window.setInterval(update, 90000);
36326         update(selection);
36327     };
36328 };
36329 iD.ui.Success = function(context) {
36330     var dispatch = d3.dispatch('cancel'),
36331         changeset;
36332
36333     function success(selection) {
36334         var message = (changeset.comment || t('success.edited_osm')).substring(0, 130) +
36335             ' ' + context.connection().changesetURL(changeset.id);
36336
36337         var header = selection.append('div')
36338             .attr('class', 'header fillL');
36339
36340         header.append('button')
36341             .attr('class', 'fr')
36342             .on('click', function() { dispatch.cancel(); })
36343             .call(iD.svg.Icon('#icon-close'));
36344
36345         header.append('h3')
36346             .text(t('success.just_edited'));
36347
36348         var body = selection.append('div')
36349             .attr('class', 'body save-success fillL');
36350
36351         body.append('p')
36352             .html(t('success.help_html'));
36353
36354         var changesetURL = context.connection().changesetURL(changeset.id);
36355
36356         body.append('a')
36357             .attr('class', 'button col12 osm')
36358             .attr('target', '_blank')
36359             .attr('href', changesetURL)
36360             .text(t('success.view_on_osm'));
36361
36362         var sharing = {
36363             facebook: 'https://facebook.com/sharer/sharer.php?u=' + encodeURIComponent(changesetURL),
36364             twitter: 'https://twitter.com/intent/tweet?source=webclient&text=' + encodeURIComponent(message),
36365             google: 'https://plus.google.com/share?url=' + encodeURIComponent(changesetURL)
36366         };
36367
36368         body.selectAll('.button.social')
36369             .data(d3.entries(sharing))
36370             .enter()
36371             .append('a')
36372             .attr('class', 'button social col4')
36373             .attr('target', '_blank')
36374             .attr('href', function(d) { return d.value; })
36375             .call(bootstrap.tooltip()
36376                 .title(function(d) { return t('success.' + d.key); })
36377                 .placement('bottom'))
36378             .each(function(d) { d3.select(this).call(iD.svg.Icon('#logo-' + d.key, 'social')); });
36379     }
36380
36381     success.changeset = function(_) {
36382         if (!arguments.length) return changeset;
36383         changeset = _;
36384         return success;
36385     };
36386
36387     return d3.rebind(success, dispatch, 'on');
36388 };
36389 iD.ui.TagReference = function(tag, context) {
36390     var tagReference = {},
36391         button,
36392         body,
36393         loaded,
36394         showing;
36395
36396     function findLocal(docs) {
36397         var locale = iD.detect().locale.toLowerCase(),
36398             localized;
36399
36400         localized = _.find(docs, function(d) {
36401             return d.lang.toLowerCase() === locale;
36402         });
36403         if (localized) return localized;
36404
36405         // try the non-regional version of a language, like
36406         // 'en' if the language is 'en-US'
36407         if (locale.indexOf('-') !== -1) {
36408             var first = locale.split('-')[0];
36409             localized = _.find(docs, function(d) {
36410                 return d.lang.toLowerCase() === first;
36411             });
36412             if (localized) return localized;
36413         }
36414
36415         // finally fall back to english
36416         return _.find(docs, function(d) {
36417             return d.lang.toLowerCase() === 'en';
36418         });
36419     }
36420
36421     function load() {
36422         button.classed('tag-reference-loading', true);
36423
36424         context.taginfo().docs(tag, function(err, docs, softfail) {
36425             if (!err && docs) {
36426                 docs = findLocal(docs);
36427             }
36428
36429             body.html('');
36430
36431             if (!docs || !docs.description) {
36432                 if (!softfail) {
36433                     body.append('p').text(t('inspector.no_documentation_key'));
36434                     show();
36435                 }
36436                 return false;
36437             }
36438
36439             if (docs.image && docs.image.thumb_url_prefix) {
36440                 body
36441                     .append('img')
36442                     .attr('class', 'wiki-image')
36443                     .attr('src', docs.image.thumb_url_prefix + '100' + docs.image.thumb_url_suffix)
36444                     .on('load', function() { show(); })
36445                     .on('error', function() { d3.select(this).remove(); show(); });
36446             } else {
36447                 show();
36448             }
36449
36450             body
36451                 .append('p')
36452                 .text(docs.description);
36453
36454             body
36455                 .append('a')
36456                 .attr('target', '_blank')
36457                 .attr('href', 'http://wiki.openstreetmap.org/wiki/' + docs.title)
36458                 .call(iD.svg.Icon('#icon-out-link', 'inline'))
36459                 .append('span')
36460                 .text(t('inspector.reference'));
36461
36462             return true;
36463         });
36464     }
36465
36466     function show() {
36467         loaded = true;
36468
36469         button.classed('tag-reference-loading', false);
36470
36471         body.transition()
36472             .duration(200)
36473             .style('max-height', '200px')
36474             .style('opacity', '1');
36475
36476         showing = true;
36477     }
36478
36479     function hide(selection) {
36480         selection = selection || body.transition().duration(200);
36481
36482         selection
36483             .style('max-height', '0px')
36484             .style('opacity', '0');
36485
36486         showing = false;
36487     }
36488
36489     tagReference.button = function(selection) {
36490         button = selection.selectAll('.tag-reference-button')
36491             .data([0]);
36492
36493         button.enter()
36494             .append('button')
36495             .attr('class', 'tag-reference-button')
36496             .attr('tabindex', -1)
36497             .call(iD.svg.Icon('#icon-inspect'));
36498
36499         button.on('click', function () {
36500             d3.event.stopPropagation();
36501             d3.event.preventDefault();
36502             if (showing) {
36503                 hide();
36504             } else if (loaded) {
36505                 show();
36506             } else {
36507                 if (context.taginfo()) {
36508                     load();
36509                 }
36510             }
36511         });
36512     };
36513
36514     tagReference.body = function(selection) {
36515         body = selection.selectAll('.tag-reference-body')
36516             .data([0]);
36517
36518         body.enter().append('div')
36519             .attr('class', 'tag-reference-body cf')
36520             .style('max-height', '0')
36521             .style('opacity', '0');
36522
36523         if (showing === false) {
36524             hide(body);
36525         }
36526     };
36527
36528     tagReference.showing = function(_) {
36529         if (!arguments.length) return showing;
36530         showing = _;
36531         return tagReference;
36532     };
36533
36534     return tagReference;
36535 };
36536 // toggles the visibility of ui elements, using a combination of the
36537 // hide class, which sets display=none, and a d3 transition for opacity.
36538 // this will cause blinking when called repeatedly, so check that the
36539 // value actually changes between calls.
36540 iD.ui.Toggle = function(show, callback) {
36541     return function(selection) {
36542         selection
36543             .style('opacity', show ? 0 : 1)
36544             .classed('hide', false)
36545             .transition()
36546             .style('opacity', show ? 1 : 0)
36547             .each('end', function() {
36548                 d3.select(this).classed('hide', !show);
36549                 if (callback) callback.apply(this);
36550             });
36551     };
36552 };
36553 iD.ui.UndoRedo = function(context) {
36554     var commands = [{
36555         id: 'undo',
36556         cmd: iD.ui.cmd('⌘Z'),
36557         action: function() { if (!saving()) context.undo(); },
36558         annotation: function() { return context.history().undoAnnotation(); }
36559     }, {
36560         id: 'redo',
36561         cmd: iD.ui.cmd('⌘⇧Z'),
36562         action: function() { if (!saving()) context.redo(); },
36563         annotation: function() { return context.history().redoAnnotation(); }
36564     }];
36565
36566     function saving() {
36567         return context.mode().id === 'save';
36568     }
36569
36570     return function(selection) {
36571         var tooltip = bootstrap.tooltip()
36572             .placement('bottom')
36573             .html(true)
36574             .title(function (d) {
36575                 return iD.ui.tooltipHtml(d.annotation() ?
36576                     t(d.id + '.tooltip', {action: d.annotation()}) :
36577                     t(d.id + '.nothing'), d.cmd);
36578             });
36579
36580         var buttons = selection.selectAll('button')
36581             .data(commands)
36582             .enter().append('button')
36583             .attr('class', 'col6 disabled')
36584             .on('click', function(d) { return d.action(); })
36585             .call(tooltip);
36586
36587         buttons.each(function(d) {
36588             d3.select(this)
36589                 .call(iD.svg.Icon('#icon-' + d.id));
36590         });
36591
36592         var keybinding = d3.keybinding('undo')
36593             .on(commands[0].cmd, function() { d3.event.preventDefault(); commands[0].action(); })
36594             .on(commands[1].cmd, function() { d3.event.preventDefault(); commands[1].action(); });
36595
36596         d3.select(document)
36597             .call(keybinding);
36598
36599         context.history()
36600             .on('change.undo_redo', update);
36601
36602         context
36603             .on('enter.undo_redo', update);
36604
36605         function update() {
36606             buttons
36607                 .property('disabled', saving())
36608                 .classed('disabled', function(d) { return !d.annotation(); })
36609                 .each(function() {
36610                     var selection = d3.select(this);
36611                     if (selection.property('tooltipVisible')) {
36612                         selection.call(tooltip.show);
36613                     }
36614                 });
36615         }
36616     };
36617 };
36618 iD.ui.ViewOnOSM = function(context) {
36619     var id;
36620
36621     function viewOnOSM(selection) {
36622         var entity = context.entity(id);
36623
36624         selection.style('display', entity.isNew() ? 'none' : null);
36625
36626         var $link = selection.selectAll('.view-on-osm')
36627             .data([0]);
36628
36629         $link.enter()
36630             .append('a')
36631             .attr('class', 'view-on-osm')
36632             .attr('target', '_blank')
36633             .call(iD.svg.Icon('#icon-out-link', 'inline'))
36634             .append('span')
36635             .text(t('inspector.view_on_osm'));
36636
36637         $link
36638             .attr('href', context.connection().entityURL(entity));
36639     }
36640
36641     viewOnOSM.entityID = function(_) {
36642         if (!arguments.length) return id;
36643         id = _;
36644         return viewOnOSM;
36645     };
36646
36647     return viewOnOSM;
36648 };
36649 iD.ui.Zoom = function(context) {
36650     var zooms = [{
36651         id: 'zoom-in',
36652         icon: 'plus',
36653         title: t('zoom.in'),
36654         action: context.zoomIn,
36655         key: '+'
36656     }, {
36657         id: 'zoom-out',
36658         icon: 'minus',
36659         title: t('zoom.out'),
36660         action: context.zoomOut,
36661         key: '-'
36662     }];
36663
36664     function zoomIn() {
36665         d3.event.preventDefault();
36666         context.zoomIn();
36667     }
36668
36669     function zoomOut() {
36670         d3.event.preventDefault();
36671         context.zoomOut();
36672     }
36673
36674     function zoomInFurther() {
36675         d3.event.preventDefault();
36676         context.zoomInFurther();
36677     }
36678
36679     function zoomOutFurther() {
36680         d3.event.preventDefault();
36681         context.zoomOutFurther();
36682     }
36683
36684
36685     return function(selection) {
36686         var button = selection.selectAll('button')
36687             .data(zooms)
36688             .enter().append('button')
36689             .attr('tabindex', -1)
36690             .attr('class', function(d) { return d.id; })
36691             .on('click.editor', function(d) { d.action(); })
36692             .call(bootstrap.tooltip()
36693                 .placement('left')
36694                 .html(true)
36695                 .title(function(d) {
36696                     return iD.ui.tooltipHtml(d.title, d.key);
36697                 }));
36698
36699         button.each(function(d) {
36700             d3.select(this)
36701                 .call(iD.svg.Icon('#icon-' + d.icon, 'light'));
36702         });
36703
36704         var keybinding = d3.keybinding('zoom');
36705
36706         _.each(['=','ffequals','plus','ffplus'], function(key) {
36707             keybinding.on(key, zoomIn);
36708             keybinding.on('⇧' + key, zoomIn);
36709             keybinding.on(iD.ui.cmd('⌘' + key), zoomInFurther);
36710             keybinding.on(iD.ui.cmd('⌘⇧' + key), zoomInFurther);
36711         });
36712         _.each(['-','ffminus','_','dash'], function(key) {
36713             keybinding.on(key, zoomOut);
36714             keybinding.on('⇧' + key, zoomOut);
36715             keybinding.on(iD.ui.cmd('⌘' + key), zoomOutFurther);
36716             keybinding.on(iD.ui.cmd('⌘⇧' + key), zoomOutFurther);
36717         });
36718
36719         d3.select(document)
36720             .call(keybinding);
36721     };
36722 };
36723 iD.ui.preset.access = function(field) {
36724     var event = d3.dispatch('change'),
36725         items;
36726
36727     function access(selection) {
36728         var wrap = selection.selectAll('.preset-input-wrap')
36729             .data([0]);
36730
36731         wrap.enter().append('div')
36732             .attr('class', 'cf preset-input-wrap')
36733             .append('ul');
36734
36735         items = wrap.select('ul').selectAll('li')
36736             .data(field.keys);
36737
36738         // Enter
36739
36740         var enter = items.enter().append('li')
36741             .attr('class', function(d) { return 'cf preset-access-' + d; });
36742
36743         enter.append('span')
36744             .attr('class', 'col6 label preset-label-access')
36745             .attr('for', function(d) { return 'preset-input-access-' + d; })
36746             .text(function(d) { return field.t('types.' + d); });
36747
36748         enter.append('div')
36749             .attr('class', 'col6 preset-input-access-wrap')
36750             .append('input')
36751             .attr('type', 'text')
36752             .attr('class', 'preset-input-access')
36753             .attr('id', function(d) { return 'preset-input-access-' + d; })
36754             .each(function(d) {
36755                 d3.select(this)
36756                     .call(d3.combobox()
36757                         .data(access.options(d)));
36758             });
36759
36760         // Update
36761
36762         wrap.selectAll('.preset-input-access')
36763             .on('change', change)
36764             .on('blur', change);
36765     }
36766
36767     function change(d) {
36768         var tag = {};
36769         tag[d] = d3.select(this).value() || undefined;
36770         event.change(tag);
36771     }
36772
36773     access.options = function(type) {
36774         var options = ['no', 'permissive', 'private', 'destination'];
36775
36776         if (type !== 'access') {
36777             options.unshift('yes');
36778             options.push('designated');
36779
36780             if (type === 'bicycle') {
36781                 options.push('dismount');
36782             }
36783         }
36784
36785         return options.map(function(option) {
36786             return {
36787                 title: field.t('options.' + option + '.description'),
36788                 value: option
36789             };
36790         });
36791     };
36792
36793     var placeholders = {
36794         footway: {
36795             foot: 'designated',
36796             motor_vehicle: 'no'
36797         },
36798         steps: {
36799             foot: 'yes',
36800             motor_vehicle: 'no',
36801             bicycle: 'no',
36802             horse: 'no'
36803         },
36804         pedestrian: {
36805             foot: 'yes',
36806             motor_vehicle: 'no'
36807         },
36808         cycleway: {
36809             motor_vehicle: 'no',
36810             bicycle: 'designated'
36811         },
36812         bridleway: {
36813             motor_vehicle: 'no',
36814             horse: 'designated'
36815         },
36816         path: {
36817             foot: 'yes',
36818             motor_vehicle: 'no',
36819             bicycle: 'yes',
36820             horse: 'yes'
36821         },
36822         motorway: {
36823             foot: 'no',
36824             motor_vehicle: 'yes',
36825             bicycle: 'no',
36826             horse: 'no'
36827         },
36828         trunk: {
36829             motor_vehicle: 'yes'
36830         },
36831         primary: {
36832             foot: 'yes',
36833             motor_vehicle: 'yes',
36834             bicycle: 'yes',
36835             horse: 'yes'
36836         },
36837         secondary: {
36838             foot: 'yes',
36839             motor_vehicle: 'yes',
36840             bicycle: 'yes',
36841             horse: 'yes'
36842         },
36843         tertiary: {
36844             foot: 'yes',
36845             motor_vehicle: 'yes',
36846             bicycle: 'yes',
36847             horse: 'yes'
36848         },
36849         residential: {
36850             foot: 'yes',
36851             motor_vehicle: 'yes',
36852             bicycle: 'yes',
36853             horse: 'yes'
36854         },
36855         unclassified: {
36856             foot: 'yes',
36857             motor_vehicle: 'yes',
36858             bicycle: 'yes',
36859             horse: 'yes'
36860         },
36861         service: {
36862             foot: 'yes',
36863             motor_vehicle: 'yes',
36864             bicycle: 'yes',
36865             horse: 'yes'
36866         },
36867         motorway_link: {
36868             foot: 'no',
36869             motor_vehicle: 'yes',
36870             bicycle: 'no',
36871             horse: 'no'
36872         },
36873         trunk_link: {
36874             motor_vehicle: 'yes'
36875         },
36876         primary_link: {
36877             foot: 'yes',
36878             motor_vehicle: 'yes',
36879             bicycle: 'yes',
36880             horse: 'yes'
36881         },
36882         secondary_link: {
36883             foot: 'yes',
36884             motor_vehicle: 'yes',
36885             bicycle: 'yes',
36886             horse: 'yes'
36887         },
36888         tertiary_link: {
36889             foot: 'yes',
36890             motor_vehicle: 'yes',
36891             bicycle: 'yes',
36892             horse: 'yes'
36893         }
36894     };
36895
36896     access.tags = function(tags) {
36897         items.selectAll('.preset-input-access')
36898             .value(function(d) { return tags[d] || ''; })
36899             .attr('placeholder', function() {
36900                 return tags.access ? tags.access : field.placeholder();
36901             });
36902
36903         // items.selectAll('#preset-input-access-access')
36904         //     .attr('placeholder', 'yes');
36905
36906         _.forEach(placeholders[tags.highway], function(v, k) {
36907             items.selectAll('#preset-input-access-' + k)
36908                 .attr('placeholder', function() { return (tags.access || v); });
36909         });
36910     };
36911
36912     access.focus = function() {
36913         items.selectAll('.preset-input-access')
36914             .node().focus();
36915     };
36916
36917     return d3.rebind(access, event, 'on');
36918 };
36919 iD.ui.preset.address = function(field, context) {
36920     var event = d3.dispatch('init', 'change'),
36921         wrap,
36922         entity,
36923         isInitialized;
36924
36925     var widths = {
36926         housenumber: 1/3,
36927         street: 2/3,
36928         city: 2/3,
36929         state: 1/4,
36930         postcode: 1/3
36931     };
36932
36933     function getStreets() {
36934         var extent = entity.extent(context.graph()),
36935             l = extent.center(),
36936             box = iD.geo.Extent(l).padByMeters(200);
36937
36938         return context.intersects(box)
36939             .filter(isAddressable)
36940             .map(function(d) {
36941                 var loc = context.projection([
36942                     (extent[0][0] + extent[1][0]) / 2,
36943                     (extent[0][1] + extent[1][1]) / 2]),
36944                     choice = iD.geo.chooseEdge(context.childNodes(d), loc, context.projection);
36945                 return {
36946                     title: d.tags.name,
36947                     value: d.tags.name,
36948                     dist: choice.distance
36949                 };
36950             }).sort(function(a, b) {
36951                 return a.dist - b.dist;
36952             });
36953
36954         function isAddressable(d) {
36955             return d.tags.highway && d.tags.name && d.type === 'way';
36956         }
36957     }
36958
36959     function getCities() {
36960         var extent = entity.extent(context.graph()),
36961             l = extent.center(),
36962             box = iD.geo.Extent(l).padByMeters(200);
36963
36964         return context.intersects(box)
36965             .filter(isAddressable)
36966             .map(function(d) {
36967                 return {
36968                     title: d.tags['addr:city'] || d.tags.name,
36969                     value: d.tags['addr:city'] || d.tags.name,
36970                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
36971                 };
36972             }).sort(function(a, b) {
36973                 return a.dist - b.dist;
36974             });
36975
36976         function isAddressable(d) {
36977             if (d.tags.name &&
36978                 (d.tags.admin_level === '8' || d.tags.border_type === 'city'))
36979                 return true;
36980
36981             if (d.tags.place && d.tags.name && (
36982                     d.tags.place === 'city' ||
36983                     d.tags.place === 'town' ||
36984                     d.tags.place === 'village'))
36985                 return true;
36986
36987             if (d.tags['addr:city']) return true;
36988
36989             return false;
36990         }
36991     }
36992
36993     function getPostCodes() {
36994         var extent = entity.extent(context.graph()),
36995             l = extent.center(),
36996             box = iD.geo.Extent(l).padByMeters(200);
36997
36998         return context.intersects(box)
36999             .filter(isAddressable)
37000             .map(function(d) {
37001                 return {
37002                     title: d.tags['addr:postcode'],
37003                     value: d.tags['addr:postcode'],
37004                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
37005                 };
37006             }).sort(function(a, b) {
37007                 return a.dist - b.dist;
37008             });
37009
37010         function isAddressable(d) {
37011             return d.tags['addr:postcode'];
37012         }
37013     }
37014
37015     function address(selection) {
37016         isInitialized = false;
37017         
37018         selection.selectAll('.preset-input-wrap')
37019             .remove();
37020
37021         var center = entity.extent(context.graph()).center(),
37022             addressFormat;
37023
37024         // Enter
37025
37026         wrap = selection.append('div')
37027             .attr('class', 'preset-input-wrap');
37028
37029         iD.countryCode().search(center, function (err, countryCode) {
37030             addressFormat = _.find(iD.data.addressFormats, function (a) {
37031                 return a && a.countryCodes && _.contains(a.countryCodes, countryCode);
37032             }) || _.first(iD.data.addressFormats);
37033
37034             function row(r) {
37035                 // Normalize widths.
37036                 var total = _.reduce(r, function(sum, field) {
37037                     return sum + (widths[field] || 0.5);
37038                 }, 0);
37039
37040                 return r.map(function (field) {
37041                     return {
37042                         id: field,
37043                         width: (widths[field] || 0.5) / total
37044                     };
37045                 });
37046             }
37047
37048             wrap.selectAll('div')
37049                 .data(addressFormat.format)
37050                 .enter()
37051                 .append('div')
37052                 .attr('class', 'addr-row')
37053                 .selectAll('input')
37054                 .data(row)
37055                 .enter()
37056                 .append('input')
37057                 .property('type', 'text')
37058                 .attr('placeholder', function (d) { return field.t('placeholders.' + d.id); })
37059                 .attr('class', function (d) { return 'addr-' + d.id; })
37060                 .style('width', function (d) { return d.width * 100 + '%'; });
37061
37062             // Update
37063
37064             wrap.selectAll('.addr-street')
37065                 .call(d3.combobox()
37066                     .fetcher(function(value, callback) {
37067                         callback(getStreets());
37068                     }));
37069
37070             wrap.selectAll('.addr-city')
37071                 .call(d3.combobox()
37072                     .fetcher(function(value, callback) {
37073                         callback(getCities());
37074                     }));
37075
37076             wrap.selectAll('.addr-postcode')
37077                 .call(d3.combobox()
37078                     .fetcher(function(value, callback) {
37079                         callback(getPostCodes());
37080                     }));
37081
37082             wrap.selectAll('input')
37083                 .on('blur', change)
37084                 .on('change', change);
37085
37086             event.init();
37087             isInitialized = true;
37088         });
37089     }
37090
37091     function change() {
37092         var tags = {};
37093
37094         wrap.selectAll('input')
37095             .each(function (field) {
37096                 tags['addr:' + field.id] = this.value || undefined;
37097             });
37098
37099         event.change(tags);
37100     }
37101
37102     function updateTags(tags) {
37103         wrap.selectAll('input')
37104             .value(function (field) {
37105                 return tags['addr:' + field.id] || '';
37106             });
37107     }
37108
37109     address.entity = function(_) {
37110         if (!arguments.length) return entity;
37111         entity = _;
37112         return address;
37113     };
37114
37115     address.tags = function(tags) {
37116         if (isInitialized) {
37117             updateTags(tags);
37118         } else {
37119             event.on('init', function () {
37120                 updateTags(tags);
37121             });
37122         }
37123     };
37124
37125     address.focus = function() {
37126         var node = wrap.selectAll('input').node();
37127         if (node) node.focus();
37128     };
37129
37130     return d3.rebind(address, event, 'on');
37131 };
37132 iD.ui.preset.check =
37133 iD.ui.preset.defaultcheck = function(field) {
37134     var event = d3.dispatch('change'),
37135         options = field.strings && field.strings.options,
37136         values = [],
37137         texts = [],
37138         entity, value, box, text, label;
37139
37140     if (options) {
37141         for (var k in options) {
37142             values.push(k === 'undefined' ? undefined : k);
37143             texts.push(field.t('options.' + k, { 'default': options[k] }));
37144         }
37145     } else {
37146         values = [undefined, 'yes'];
37147         texts = [t('inspector.unknown'), t('inspector.check.yes')];
37148         if (field.type === 'check') {
37149             values.push('no');
37150             texts.push(t('inspector.check.no'));
37151         }
37152     }
37153
37154     var check = function(selection) {
37155         // hack: pretend oneway field is a oneway_yes field
37156         // where implied oneway tag exists (e.g. `junction=roundabout`) #2220, #1841
37157         if (field.id === 'oneway') {
37158             for (var key in entity.tags) {
37159                 if (key in iD.oneWayTags && (entity.tags[key] in iD.oneWayTags[key])) {
37160                     texts[0] = t('presets.fields.oneway_yes.options.undefined');
37161                     break;
37162                 }
37163             }
37164         }
37165
37166         selection.classed('checkselect', 'true');
37167
37168         label = selection.selectAll('.preset-input-wrap')
37169             .data([0]);
37170
37171         var enter = label.enter().append('label')
37172             .attr('class', 'preset-input-wrap');
37173
37174         enter.append('input')
37175             .property('indeterminate', field.type === 'check')
37176             .attr('type', 'checkbox')
37177             .attr('id', 'preset-input-' + field.id);
37178
37179         enter.append('span')
37180             .text(texts[0])
37181             .attr('class', 'value');
37182
37183         box = label.select('input')
37184             .on('click', function() {
37185                 var t = {};
37186                 t[field.key] = values[(values.indexOf(value) + 1) % values.length];
37187                 event.change(t);
37188                 d3.event.stopPropagation();
37189             });
37190
37191         text = label.select('span.value');
37192     };
37193
37194     check.entity = function(_) {
37195         if (!arguments.length) return entity;
37196         entity = _;
37197         return check;
37198     };
37199
37200     check.tags = function(tags) {
37201         value = tags[field.key];
37202         box.property('indeterminate', field.type === 'check' && !value);
37203         box.property('checked', value === 'yes');
37204         text.text(texts[values.indexOf(value)]);
37205         label.classed('set', !!value);
37206     };
37207
37208     check.focus = function() {
37209         box.node().focus();
37210     };
37211
37212     return d3.rebind(check, event, 'on');
37213 };
37214 iD.ui.preset.combo =
37215 iD.ui.preset.typeCombo = function(field, context) {
37216     var event = d3.dispatch('change'),
37217         optstrings = field.strings && field.strings.options,
37218         optarray = field.options,
37219         strings = {},
37220         input;
37221
37222     function combo(selection) {
37223         var combobox = d3.combobox();
37224
37225         input = selection.selectAll('input')
37226             .data([0]);
37227
37228         var enter = input.enter()
37229             .append('input')
37230             .attr('type', 'text')
37231             .attr('id', 'preset-input-' + field.id);
37232
37233         if (optstrings) { enter.attr('readonly', 'readonly'); }
37234
37235         input
37236             .call(combobox)
37237             .on('change', change)
37238             .on('blur', change)
37239             .each(function() {
37240                 if (optstrings) {
37241                     _.each(optstrings, function(v, k) {
37242                         strings[k] = field.t('options.' + k, { 'default': v });
37243                     });
37244                     stringsLoaded();
37245                 } else if (optarray) {
37246                     _.each(optarray, function(k) {
37247                         strings[k] = k.replace(/_+/g, ' ');
37248                     });
37249                     stringsLoaded();
37250                 } else if (context.taginfo()) {
37251                     context.taginfo().values({key: field.key}, function(err, data) {
37252                         if (!err) {
37253                             _.each(_.pluck(data, 'value'), function(k) {
37254                                 strings[k] = k.replace(/_+/g, ' ');
37255                             });
37256                             stringsLoaded();
37257                         }
37258                     });
37259                 }
37260             });
37261
37262         function stringsLoaded() {
37263             var keys = _.keys(strings),
37264                 strs = [],
37265                 placeholders;
37266
37267             combobox.data(keys.map(function(k) {
37268                 var s = strings[k],
37269                     o = {};
37270                 o.title = o.value = s;
37271                 if (s.length < 20) { strs.push(s); }
37272                 return o;
37273             }));
37274
37275             placeholders = strs.length > 1 ? strs : keys;
37276             input.attr('placeholder', field.placeholder() ||
37277                 (placeholders.slice(0, 3).join(', ') + '...'));
37278         }
37279     }
37280
37281     function change() {
37282         var optstring = _.find(_.keys(strings), function(k) { return strings[k] === input.value(); }),
37283             value = optstring || (input.value()
37284                 .split(';')
37285                 .map(function(s) { return s.trim(); })
37286                 .join(';')
37287                 .replace(/\s+/g, '_'));
37288
37289         if (field.type === 'typeCombo' && !value) value = 'yes';
37290
37291         var t = {};
37292         t[field.key] = value || undefined;
37293         event.change(t);
37294     }
37295
37296     combo.tags = function(tags) {
37297         var key = tags[field.key],
37298             value = strings[key] || key || '';
37299         if (field.type === 'typeCombo' && value.toLowerCase() === 'yes') value = '';
37300         input.value(value);
37301     };
37302
37303     combo.focus = function() {
37304         input.node().focus();
37305     };
37306
37307     return d3.rebind(combo, event, 'on');
37308 };
37309 iD.ui.preset.cycleway = function(field) {
37310     var event = d3.dispatch('change'),
37311         items;
37312
37313     function cycleway(selection) {
37314         var wrap = selection.selectAll('.preset-input-wrap')
37315             .data([0]);
37316
37317         wrap.enter().append('div')
37318             .attr('class', 'cf preset-input-wrap')
37319             .append('ul');
37320
37321         items = wrap.select('ul').selectAll('li')
37322             .data(field.keys);
37323
37324         // Enter
37325
37326         var enter = items.enter().append('li')
37327             .attr('class', function(d) { return 'cf preset-cycleway-' + d; });
37328
37329         enter.append('span')
37330             .attr('class', 'col6 label preset-label-cycleway')
37331             .attr('for', function(d) { return 'preset-input-cycleway-' + d; })
37332             .text(function(d) { return field.t('types.' + d); });
37333
37334         enter.append('div')
37335             .attr('class', 'col6 preset-input-cycleway-wrap')
37336             .append('input')
37337             .attr('type', 'text')
37338             .attr('class', 'preset-input-cycleway')
37339             .attr('id', function(d) { return 'preset-input-cycleway-' + d; })
37340             .each(function(d) {
37341                 d3.select(this)
37342                     .call(d3.combobox()
37343                         .data(cycleway.options(d)));
37344             });
37345
37346         // Update
37347
37348         wrap.selectAll('.preset-input-cycleway')
37349             .on('change', change)
37350             .on('blur', change);
37351     }
37352
37353     function change() {
37354         var inputs = d3.selectAll('.preset-input-cycleway')[0],
37355             left = d3.select(inputs[0]).value(),
37356             right = d3.select(inputs[1]).value(),
37357             tag = {};
37358         if (left === 'none' || left === '') { left = undefined; }
37359         if (right === 'none' || right === '') { right = undefined; }
37360
37361         // Always set both left and right as changing one can affect the other
37362         tag = {
37363             cycleway: undefined,
37364             'cycleway:left': left,
37365             'cycleway:right': right
37366         };
37367
37368         // If the left and right tags match, use the cycleway tag to tag both
37369         // sides the same way
37370         if (left === right) {
37371             tag = {
37372                 cycleway: left,
37373                 'cycleway:left': undefined,
37374                 'cycleway:right': undefined
37375             };
37376         }
37377
37378         event.change(tag);
37379     }
37380
37381     cycleway.options = function() {
37382         return d3.keys(field.strings.options).map(function(option) {
37383             return {
37384                 title: field.t('options.' + option + '.description'),
37385                 value: option
37386             };
37387         });
37388     };
37389
37390     cycleway.tags = function(tags) {
37391         items.selectAll('.preset-input-cycleway')
37392             .value(function(d) {
37393                 // If cycleway is set, always return that
37394                 if (tags.cycleway) {
37395                     return tags.cycleway;
37396                 }
37397                 return tags[d] || '';
37398             })
37399             .attr('placeholder', field.placeholder());
37400     };
37401
37402     cycleway.focus = function() {
37403         items.selectAll('.preset-input-cycleway')
37404             .node().focus();
37405     };
37406
37407     return d3.rebind(cycleway, event, 'on');
37408 };
37409 iD.ui.preset.text =
37410 iD.ui.preset.number =
37411 iD.ui.preset.tel =
37412 iD.ui.preset.email =
37413 iD.ui.preset.url = function(field) {
37414
37415     var event = d3.dispatch('change'),
37416         input;
37417
37418     function i(selection) {
37419         input = selection.selectAll('input')
37420             .data([0]);
37421
37422         input.enter().append('input')
37423             .attr('type', field.type)
37424             .attr('id', 'preset-input-' + field.id)
37425             .attr('placeholder', field.placeholder() || t('inspector.unknown'));
37426
37427         input
37428             .on('blur', change)
37429             .on('change', change);
37430
37431         if (field.type === 'number') {
37432             input.attr('type', 'text');
37433
37434             var spinControl = selection.selectAll('.spin-control')
37435                 .data([0]);
37436
37437             var enter = spinControl.enter().append('div')
37438                 .attr('class', 'spin-control');
37439
37440             enter.append('button')
37441                 .datum(1)
37442                 .attr('class', 'increment');
37443
37444             enter.append('button')
37445                 .datum(-1)
37446                 .attr('class', 'decrement');
37447
37448             spinControl.selectAll('button')
37449                 .on('click', function(d) {
37450                     d3.event.preventDefault();
37451                     var num = parseInt(input.node().value || 0, 10);
37452                     if (!isNaN(num)) input.node().value = num + d;
37453                     change();
37454                 });
37455         }
37456     }
37457
37458     function change() {
37459         var t = {};
37460         t[field.key] = input.value() || undefined;
37461         event.change(t);
37462     }
37463
37464     i.tags = function(tags) {
37465         input.value(tags[field.key] || '');
37466     };
37467
37468     i.focus = function() {
37469         input.node().focus();
37470     };
37471
37472     return d3.rebind(i, event, 'on');
37473 };
37474 iD.ui.preset.localized = function(field, context) {
37475
37476     var event = d3.dispatch('change'),
37477         wikipedia = iD.wikipedia(),
37478         input, localizedInputs, wikiTitles,
37479         entity;
37480
37481     function i(selection) {
37482         input = selection.selectAll('.localized-main')
37483             .data([0]);
37484
37485         input.enter().append('input')
37486             .attr('type', 'text')
37487             .attr('id', 'preset-input-' + field.id)
37488             .attr('class', 'localized-main')
37489             .attr('placeholder', field.placeholder());
37490
37491         if (field.id === 'name') {
37492             var preset = context.presets().match(entity, context.graph());
37493             input.call(d3.combobox().fetcher(
37494                 iD.util.SuggestNames(preset, iD.data.suggestions)
37495             ));
37496         }
37497
37498         input
37499             .on('blur', change)
37500             .on('change', change);
37501
37502         var translateButton = selection.selectAll('.localized-add')
37503             .data([0]);
37504
37505         translateButton.enter()
37506             .append('button')
37507             .attr('class', 'button-input-action localized-add minor')
37508             .call(iD.svg.Icon('#icon-plus'))
37509             .call(bootstrap.tooltip()
37510                 .title(t('translate.translate'))
37511                 .placement('left'));
37512
37513         translateButton
37514             .on('click', addBlank);
37515
37516         localizedInputs = selection.selectAll('.localized-wrap')
37517             .data([0]);
37518
37519         localizedInputs.enter().append('div')
37520             .attr('class', 'localized-wrap');
37521     }
37522
37523     function addBlank() {
37524         d3.event.preventDefault();
37525         var data = localizedInputs.selectAll('div.entry').data();
37526         data.push({ lang: '', value: '' });
37527         localizedInputs.call(render, data);
37528     }
37529
37530     function change() {
37531         var t = {};
37532         t[field.key] = d3.select(this).value() || undefined;
37533         event.change(t);
37534     }
37535
37536     function key(lang) { return field.key + ':' + lang; }
37537
37538     function changeLang(d) {
37539         var lang = d3.select(this).value(),
37540             t = {},
37541             language = _.find(iD.data.wikipedia, function(d) {
37542                 return d[0].toLowerCase() === lang.toLowerCase() ||
37543                     d[1].toLowerCase() === lang.toLowerCase();
37544             });
37545
37546         if (language) lang = language[2];
37547
37548         if (d.lang && d.lang !== lang) {
37549             t[key(d.lang)] = undefined;
37550         }
37551
37552         var value = d3.select(this.parentNode)
37553             .selectAll('.localized-value')
37554             .value();
37555
37556         if (lang && value) {
37557             t[key(lang)] = value;
37558         } else if (lang && wikiTitles && wikiTitles[d.lang]) {
37559             t[key(lang)] = wikiTitles[d.lang];
37560         }
37561
37562         d.lang = lang;
37563         event.change(t);
37564     }
37565
37566     function changeValue(d) {
37567         if (!d.lang) return;
37568         var t = {};
37569         t[key(d.lang)] = d3.select(this).value() || undefined;
37570         event.change(t);
37571     }
37572
37573     function fetcher(value, cb) {
37574         var v = value.toLowerCase();
37575
37576         cb(iD.data.wikipedia.filter(function(d) {
37577             return d[0].toLowerCase().indexOf(v) >= 0 ||
37578             d[1].toLowerCase().indexOf(v) >= 0 ||
37579             d[2].toLowerCase().indexOf(v) >= 0;
37580         }).map(function(d) {
37581             return { value: d[1] };
37582         }));
37583     }
37584
37585     function render(selection, data) {
37586         var wraps = selection.selectAll('div.entry').
37587             data(data, function(d) { return d.lang; });
37588
37589         var innerWrap = wraps.enter()
37590             .insert('div', ':first-child');
37591
37592         innerWrap.attr('class', 'entry')
37593             .each(function() {
37594                 var wrap = d3.select(this);
37595                 var langcombo = d3.combobox().fetcher(fetcher);
37596
37597                 var label = wrap.append('label')
37598                     .attr('class','form-label')
37599                     .text(t('translate.localized_translation_label'))
37600                     .attr('for','localized-lang');
37601
37602                 label.append('button')
37603                     .attr('class', 'minor remove')
37604                     .on('click', function(d){
37605                         d3.event.preventDefault();
37606                         var t = {};
37607                         t[key(d.lang)] = undefined;
37608                         event.change(t);
37609                         d3.select(this.parentNode.parentNode)
37610                             .style('top','0')
37611                             .style('max-height','240px')
37612                             .transition()
37613                             .style('opacity', '0')
37614                             .style('max-height','0px')
37615                             .remove();
37616                     })
37617                     .call(iD.svg.Icon('#operation-delete'));
37618
37619                 wrap.append('input')
37620                     .attr('class', 'localized-lang')
37621                     .attr('type', 'text')
37622                     .attr('placeholder',t('translate.localized_translation_language'))
37623                     .on('blur', changeLang)
37624                     .on('change', changeLang)
37625                     .call(langcombo);
37626
37627                 wrap.append('input')
37628                     .on('blur', changeValue)
37629                     .on('change', changeValue)
37630                     .attr('type', 'text')
37631                     .attr('placeholder', t('translate.localized_translation_name'))
37632                     .attr('class', 'localized-value');
37633             });
37634
37635         innerWrap
37636             .style('margin-top', '0px')
37637             .style('max-height', '0px')
37638             .style('opacity', '0')
37639             .transition()
37640             .duration(200)
37641             .style('margin-top', '10px')
37642             .style('max-height', '240px')
37643             .style('opacity', '1')
37644             .each('end', function() {
37645                 d3.select(this)
37646                     .style('max-height', '')
37647                     .style('overflow', 'visible');
37648             });
37649
37650         wraps.exit()
37651             .transition()
37652             .duration(200)
37653             .style('max-height','0px')
37654             .style('opacity', '0')
37655             .style('top','-10px')
37656             .remove();
37657
37658         var entry = selection.selectAll('.entry');
37659
37660         entry.select('.localized-lang')
37661             .value(function(d) {
37662                 var lang = _.find(iD.data.wikipedia, function(lang) { return lang[2] === d.lang; });
37663                 return lang ? lang[1] : d.lang;
37664             });
37665
37666         entry.select('.localized-value')
37667             .value(function(d) { return d.value; });
37668     }
37669
37670     i.tags = function(tags) {
37671
37672         // Fetch translations from wikipedia
37673         if (tags.wikipedia && !wikiTitles) {
37674             wikiTitles = {};
37675             var wm = tags.wikipedia.match(/([^:]+):(.+)/);
37676             if (wm && wm[0] && wm[1]) {
37677                 wikipedia.translations(wm[1], wm[2], function(d) {
37678                     wikiTitles = d;
37679                 });
37680             }
37681         }
37682
37683         input.value(tags[field.key] || '');
37684
37685         var postfixed = [], k, m;
37686         for (k in tags) {
37687             m = k.match(/^(.*):([a-zA-Z_-]+)$/);
37688             if (m && m[1] === field.key && m[2]) {
37689                 postfixed.push({ lang: m[2], value: tags[k] });
37690             }
37691         }
37692
37693         localizedInputs.call(render, postfixed.reverse());
37694     };
37695
37696     i.focus = function() {
37697         input.node().focus();
37698     };
37699
37700     i.entity = function(_) {
37701         entity = _;
37702     };
37703
37704     return d3.rebind(i, event, 'on');
37705 };
37706 iD.ui.preset.maxspeed = function(field, context) {
37707
37708     var event = d3.dispatch('change'),
37709         entity,
37710         imperial,
37711         unitInput,
37712         combobox,
37713         input;
37714
37715     var metricValues = [20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120],
37716         imperialValues = [20, 25, 30, 35, 40, 45, 50, 55, 65, 70];
37717
37718     function maxspeed(selection) {
37719         combobox = d3.combobox();
37720         var unitCombobox = d3.combobox().data(['km/h', 'mph'].map(comboValues));
37721
37722         input = selection.selectAll('#preset-input-' + field.id)
37723             .data([0]);
37724
37725         input.enter().append('input')
37726             .attr('type', 'text')
37727             .attr('id', 'preset-input-' + field.id)
37728             .attr('placeholder', field.placeholder());
37729
37730         input
37731             .call(combobox)
37732             .on('change', change)
37733             .on('blur', change);
37734
37735         var childNodes = context.graph().childNodes(context.entity(entity.id)),
37736             loc = childNodes[~~(childNodes.length/2)].loc;
37737
37738         imperial = _.any(iD.data.imperial.features, function(f) {
37739             return _.any(f.geometry.coordinates, function(d) {
37740                 return iD.geo.pointInPolygon(loc, d[0]);
37741             });
37742         });
37743
37744         unitInput = selection.selectAll('input.maxspeed-unit')
37745             .data([0]);
37746
37747         unitInput.enter().append('input')
37748             .attr('type', 'text')
37749             .attr('class', 'maxspeed-unit');
37750
37751         unitInput
37752             .on('blur', changeUnits)
37753             .on('change', changeUnits)
37754             .call(unitCombobox);
37755
37756         function changeUnits() {
37757             imperial = unitInput.value() === 'mph';
37758             unitInput.value(imperial ? 'mph' : 'km/h');
37759             setSuggestions();
37760             change();
37761         }
37762
37763     }
37764
37765     function setSuggestions() {
37766         combobox.data((imperial ? imperialValues : metricValues).map(comboValues));
37767         unitInput.value(imperial ? 'mph' : 'km/h');
37768     }
37769
37770     function comboValues(d) {
37771         return {
37772             value: d.toString(),
37773             title: d.toString()
37774         };
37775     }
37776
37777     function change() {
37778         var tag = {},
37779             value = input.value();
37780
37781         if (!value) {
37782             tag[field.key] = undefined;
37783         } else if (isNaN(value) || !imperial) {
37784             tag[field.key] = value;
37785         } else {
37786             tag[field.key] = value + ' mph';
37787         }
37788
37789         event.change(tag);
37790     }
37791
37792     maxspeed.tags = function(tags) {
37793         var value = tags[field.key];
37794
37795         if (value && value.indexOf('mph') >= 0) {
37796             value = parseInt(value, 10);
37797             imperial = true;
37798         } else if (value) {
37799             imperial = false;
37800         }
37801
37802         setSuggestions();
37803
37804         input.value(value || '');
37805     };
37806
37807     maxspeed.focus = function() {
37808         input.node().focus();
37809     };
37810
37811     maxspeed.entity = function(_) {
37812         entity = _;
37813     };
37814
37815     return d3.rebind(maxspeed, event, 'on');
37816 };
37817 iD.ui.preset.radio = function(field) {
37818
37819     var event = d3.dispatch('change'),
37820         labels, radios, placeholder;
37821
37822     function radio(selection) {
37823         selection.classed('preset-radio', true);
37824
37825         var wrap = selection.selectAll('.preset-input-wrap')
37826             .data([0]);
37827
37828         var buttonWrap = wrap.enter().append('div')
37829             .attr('class', 'preset-input-wrap toggle-list');
37830
37831         buttonWrap.append('span')
37832             .attr('class', 'placeholder');
37833
37834         placeholder = selection.selectAll('.placeholder');
37835
37836         labels = wrap.selectAll('label')
37837             .data(field.options || field.keys);
37838
37839         var enter = labels.enter().append('label');
37840
37841         enter.append('input')
37842             .attr('type', 'radio')
37843             .attr('name', field.id)
37844             .attr('value', function(d) { return field.t('options.' + d, { 'default': d }); })
37845             .attr('checked', false);
37846
37847         enter.append('span')
37848             .text(function(d) { return field.t('options.' + d, { 'default': d }); });
37849
37850         radios = labels.selectAll('input')
37851             .on('change', change);
37852     }
37853
37854     function change() {
37855         var t = {};
37856         if (field.key) t[field.key] = undefined;
37857         radios.each(function(d) {
37858             var active = d3.select(this).property('checked');
37859             if (field.key) {
37860                 if (active) t[field.key] = d;
37861             } else {
37862                 t[d] = active ? 'yes' : undefined;
37863             }
37864         });
37865         event.change(t);
37866     }
37867
37868     radio.tags = function(tags) {
37869         function checked(d) {
37870             if (field.key) {
37871                 return tags[field.key] === d;
37872             } else {
37873                 return !!(tags[d] && tags[d] !== 'no');
37874             }
37875         }
37876
37877         labels.classed('active', checked);
37878         radios.property('checked', checked);
37879         var selection = radios.filter(function() { return this.checked; });
37880         if (selection.empty()) {
37881             placeholder.text(t('inspector.none'));
37882         } else {
37883             placeholder.text(selection.attr('value'));
37884         }
37885     };
37886
37887     radio.focus = function() {
37888         radios.node().focus();
37889     };
37890
37891     return d3.rebind(radio, event, 'on');
37892 };
37893 iD.ui.preset.restrictions = function(field, context) {
37894     var event = d3.dispatch('change'),
37895         vertexID,
37896         fromNodeID;
37897
37898     function restrictions(selection) {
37899         var wrap = selection.selectAll('.preset-input-wrap')
37900             .data([0]);
37901
37902         var enter = wrap.enter().append('div')
37903             .attr('class', 'preset-input-wrap');
37904
37905         enter.append('div')
37906             .attr('class', 'restriction-help');
37907
37908         enter.append('svg')
37909             .call(iD.svg.Surface(context))
37910             .call(iD.behavior.Hover(context));
37911
37912         var intersection = iD.geo.Intersection(context.graph(), vertexID),
37913             graph = intersection.graph,
37914             vertex = graph.entity(vertexID),
37915             surface = wrap.selectAll('svg'),
37916             filter = function () { return true; },
37917             extent = iD.geo.Extent(),
37918             projection = iD.geo.RawMercator(),
37919             lines = iD.svg.Lines(projection, context),
37920             vertices = iD.svg.Vertices(projection, context),
37921             turns = iD.svg.Turns(projection, context);
37922
37923         var d = wrap.dimensions(),
37924             c = [d[0] / 2, d[1] / 2],
37925             z = 21;
37926
37927         projection
37928             .scale(256 * Math.pow(2, z) / (2 * Math.PI));
37929
37930         var s = projection(vertex.loc);
37931
37932         projection
37933             .translate([c[0] - s[0], c[1] - s[1]])
37934             .clipExtent([[0, 0], d]);
37935
37936         surface
37937             .call(vertices, graph, [vertex], filter, extent, z)
37938             .call(lines, graph, intersection.ways, filter)
37939             .call(turns, graph, intersection.turns(fromNodeID));
37940
37941         surface
37942             .on('click.restrictions', click)
37943             .on('mouseover.restrictions', mouseover)
37944             .on('mouseout.restrictions', mouseout);
37945
37946         surface
37947             .selectAll('.selected')
37948             .classed('selected', false);
37949
37950         if (fromNodeID) {
37951             surface
37952                 .selectAll('.' + intersection.highways[fromNodeID].id)
37953                 .classed('selected', true);
37954         }
37955
37956         mouseout();
37957
37958         context.history()
37959             .on('change.restrictions', render);
37960
37961         d3.select(window)
37962             .on('resize.restrictions', render);
37963
37964         function click() {
37965             var datum = d3.event.target.__data__;
37966             if (datum instanceof iD.Entity) {
37967                 fromNodeID = intersection.adjacentNodeId(datum.id);
37968                 render();
37969             } else if (datum instanceof iD.geo.Turn) {
37970                 if (datum.restriction) {
37971                     context.perform(
37972                         iD.actions.UnrestrictTurn(datum, projection),
37973                         t('operations.restriction.annotation.delete'));
37974                 } else {
37975                     context.perform(
37976                         iD.actions.RestrictTurn(datum, projection),
37977                         t('operations.restriction.annotation.create'));
37978                 }
37979             }
37980         }
37981
37982         function mouseover() {
37983             var datum = d3.event.target.__data__;
37984             if (datum instanceof iD.geo.Turn) {
37985                 var graph = context.graph(),
37986                     presets = context.presets(),
37987                     preset;
37988
37989                 if (datum.restriction) {
37990                     preset = presets.match(graph.entity(datum.restriction), graph);
37991                 } else {
37992                     preset = presets.item('type/restriction/' +
37993                         iD.geo.inferRestriction(
37994                             graph,
37995                             datum.from,
37996                             datum.via,
37997                             datum.to,
37998                             projection));
37999                 }
38000
38001                 wrap.selectAll('.restriction-help')
38002                     .text(t('operations.restriction.help.' +
38003                         (datum.restriction ? 'toggle_off' : 'toggle_on'),
38004                         {restriction: preset.name()}));
38005             }
38006         }
38007
38008         function mouseout() {
38009             wrap.selectAll('.restriction-help')
38010                 .text(t('operations.restriction.help.' +
38011                     (fromNodeID ? 'toggle' : 'select')));
38012         }
38013
38014         function render() {
38015             if (context.hasEntity(vertexID)) {
38016                 restrictions(selection);
38017             }
38018         }
38019     }
38020
38021     restrictions.entity = function(_) {
38022         if (!vertexID || vertexID !== _.id) {
38023             fromNodeID = null;
38024             vertexID = _.id;
38025         }
38026     };
38027
38028     restrictions.tags = function() {};
38029     restrictions.focus = function() {};
38030
38031     return d3.rebind(restrictions, event, 'on');
38032 };
38033 iD.ui.preset.textarea = function(field) {
38034
38035     var event = d3.dispatch('change'),
38036         input;
38037
38038     function i(selection) {
38039         input = selection.selectAll('textarea')
38040             .data([0]);
38041
38042         input.enter().append('textarea')
38043             .attr('id', 'preset-input-' + field.id)
38044             .attr('placeholder', field.placeholder() || t('inspector.unknown'))
38045             .attr('maxlength', 255);
38046
38047         input
38048             .on('blur', change)
38049             .on('change', change);
38050     }
38051
38052     function change() {
38053         var t = {};
38054         t[field.key] = input.value() || undefined;
38055         event.change(t);
38056     }
38057
38058     i.tags = function(tags) {
38059         input.value(tags[field.key] || '');
38060     };
38061
38062     i.focus = function() {
38063         input.node().focus();
38064     };
38065
38066     return d3.rebind(i, event, 'on');
38067 };
38068 iD.ui.preset.wikipedia = function(field, context) {
38069
38070     var event = d3.dispatch('change'),
38071         wikipedia = iD.wikipedia(),
38072         link, entity, lang, title;
38073
38074     function i(selection) {
38075
38076         var langcombo = d3.combobox()
38077             .fetcher(function(value, cb) {
38078                 var v = value.toLowerCase();
38079
38080                 cb(iD.data.wikipedia.filter(function(d) {
38081                     return d[0].toLowerCase().indexOf(v) >= 0 ||
38082                         d[1].toLowerCase().indexOf(v) >= 0 ||
38083                         d[2].toLowerCase().indexOf(v) >= 0;
38084                 }).map(function(d) {
38085                     return { value: d[1] };
38086                 }));
38087             });
38088
38089         var titlecombo = d3.combobox()
38090             .fetcher(function(value, cb) {
38091
38092                 if (!value) value = context.entity(entity.id).tags.name || '';
38093                 var searchfn = value.length > 7 ? wikipedia.search : wikipedia.suggestions;
38094
38095                 searchfn(language()[2], value, function(query, data) {
38096                     cb(data.map(function(d) {
38097                         return { value: d };
38098                     }));
38099                 });
38100             });
38101
38102         lang = selection.selectAll('input.wiki-lang')
38103             .data([0]);
38104
38105         lang.enter().append('input')
38106             .attr('type', 'text')
38107             .attr('class', 'wiki-lang')
38108             .value('English');
38109
38110         lang
38111             .call(langcombo)
38112             .on('blur', changeLang)
38113             .on('change', changeLang);
38114
38115         title = selection.selectAll('input.wiki-title')
38116             .data([0]);
38117
38118         title.enter().append('input')
38119             .attr('type', 'text')
38120             .attr('class', 'wiki-title')
38121             .attr('id', 'preset-input-' + field.id);
38122
38123         title
38124             .call(titlecombo)
38125             .on('blur', change)
38126             .on('change', change);
38127
38128         link = selection.selectAll('a.wiki-link')
38129             .data([0]);
38130
38131         link.enter().append('a')
38132             .attr('class', 'wiki-link button-input-action minor')
38133             .attr('target', '_blank')
38134             .call(iD.svg.Icon('#icon-out-link', 'inline'));
38135     }
38136
38137     function language() {
38138         var value = lang.value().toLowerCase();
38139         var locale = iD.detect().locale.toLowerCase();
38140         var localeLanguage;
38141         return _.find(iD.data.wikipedia, function(d) {
38142             if (d[2] === locale) localeLanguage = d;
38143             return d[0].toLowerCase() === value ||
38144                 d[1].toLowerCase() === value ||
38145                 d[2] === value;
38146         }) || localeLanguage || ['English', 'English', 'en'];
38147     }
38148
38149     function changeLang() {
38150         lang.value(language()[1]);
38151         change();
38152     }
38153
38154     function change() {
38155         var value = title.value(),
38156             m = value.match(/https?:\/\/([-a-z]+)\.wikipedia\.org\/(?:wiki|\1-[-a-z]+)\/([^#]+)(?:#(.+))?/),
38157             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }),
38158             anchor;
38159
38160         if (l) {
38161             // Normalize title http://www.mediawiki.org/wiki/API:Query#Title_normalization
38162             value = decodeURIComponent(m[2]).replace(/_/g, ' ');
38163             if (m[3]) {
38164                 try {
38165                     // Best-effort `anchordecode:` implementation
38166                     anchor = decodeURIComponent(m[3].replace(/\.([0-9A-F]{2})/g, '%$1'));
38167                 } catch (e) {
38168                     anchor = decodeURIComponent(m[3]);
38169                 }
38170                 value += '#' + anchor.replace(/_/g, ' ');
38171             }
38172             value = value.slice(0, 1).toUpperCase() + value.slice(1);
38173             lang.value(l[1]);
38174             title.value(value);
38175         }
38176
38177         var t = {};
38178         t[field.key] = value ? language()[2] + ':' + value : undefined;
38179         event.change(t);
38180     }
38181
38182     i.tags = function(tags) {
38183         var value = tags[field.key] || '',
38184             m = value.match(/([^:]+):([^#]+)(?:#(.+))?/),
38185             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }),
38186             anchor = m && m[3];
38187
38188         // value in correct format
38189         if (l) {
38190             lang.value(l[1]);
38191             title.value(m[2] + (anchor ? ('#' + anchor) : ''));
38192             if (anchor) {
38193                 try {
38194                     // Best-effort `anchorencode:` implementation
38195                     anchor = encodeURIComponent(anchor.replace(/ /g, '_')).replace(/%/g, '.');
38196                 } catch (e) {
38197                     anchor = anchor.replace(/ /g, '_');
38198                 }
38199             }
38200             link.attr('href', 'http://' + m[1] + '.wikipedia.org/wiki/' +
38201                       m[2].replace(/ /g, '_') + (anchor ? ('#' + anchor) : ''));
38202
38203         // unrecognized value format
38204         } else {
38205             title.value(value);
38206             link.attr('href', 'http://en.wikipedia.org/wiki/Special:Search?search=' + value);
38207         }
38208     };
38209
38210     i.entity = function(_) {
38211         entity = _;
38212     };
38213
38214     i.focus = function() {
38215         title.node().focus();
38216     };
38217
38218     return d3.rebind(i, event, 'on');
38219 };
38220 iD.ui.intro.area = function(context, reveal) {
38221
38222     var event = d3.dispatch('done'),
38223         timeout;
38224
38225     var step = {
38226         title: 'intro.areas.title'
38227     };
38228
38229     step.enter = function() {
38230
38231         var playground = [-85.63552, 41.94159],
38232             corner = [-85.63565411045074, 41.9417715536927];
38233         context.map().centerZoom(playground, 19);
38234         reveal('button.add-area', t('intro.areas.add'), {tooltipClass: 'intro-areas-add'});
38235
38236         context.on('enter.intro', addArea);
38237
38238         function addArea(mode) {
38239             if (mode.id !== 'add-area') return;
38240             context.on('enter.intro', drawArea);
38241
38242             var padding = 120 * Math.pow(2, context.map().zoom() - 19);
38243             var pointBox = iD.ui.intro.pad(corner, padding, context);
38244             reveal(pointBox, t('intro.areas.corner'));
38245
38246             context.map().on('move.intro', function() {
38247                 padding = 120 * Math.pow(2, context.map().zoom() - 19);
38248                 pointBox = iD.ui.intro.pad(corner, padding, context);
38249                 reveal(pointBox, t('intro.areas.corner'), {duration: 0});
38250             });
38251         }
38252
38253         function drawArea(mode) {
38254             if (mode.id !== 'draw-area') return;
38255             context.on('enter.intro', enterSelect);
38256
38257             var padding = 150 * Math.pow(2, context.map().zoom() - 19);
38258             var pointBox = iD.ui.intro.pad(playground, padding, context);
38259             reveal(pointBox, t('intro.areas.place'));
38260
38261             context.map().on('move.intro', function() {
38262                 padding = 150 * Math.pow(2, context.map().zoom() - 19);
38263                 pointBox = iD.ui.intro.pad(playground, padding, context);
38264                 reveal(pointBox, t('intro.areas.place'), {duration: 0});
38265             });
38266         }
38267
38268         function enterSelect(mode) {
38269             if (mode.id !== 'select') return;
38270             context.map().on('move.intro', null);
38271             context.on('enter.intro', null);
38272
38273             timeout = setTimeout(function() {
38274                 reveal('.preset-search-input', t('intro.areas.search', {name: context.presets().item('leisure/playground').name()}));
38275                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38276             }, 500);
38277         }
38278
38279         function keySearch() {
38280             var first = d3.select('.preset-list-item:first-child');
38281             if (first.classed('preset-leisure-playground')) {
38282                 reveal(first.select('.preset-list-button').node(), t('intro.areas.choose'));
38283                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38284                 d3.select('.preset-search-input').on('keyup.intro', null);
38285             }
38286         }
38287
38288         function selectedPreset() {
38289             reveal('.pane', t('intro.areas.describe'));
38290             context.on('exit.intro', event.done);
38291         }
38292     };
38293
38294     step.exit = function() {
38295         window.clearTimeout(timeout);
38296         context.on('enter.intro', null);
38297         context.on('exit.intro', null);
38298         context.history().on('change.intro', null);
38299         context.map().on('move.intro', null);
38300         d3.select('.preset-search-input').on('keyup.intro', null);
38301     };
38302
38303     return d3.rebind(step, event, 'on');
38304 };
38305 iD.ui.intro.line = function(context, reveal) {
38306
38307     var event = d3.dispatch('done'),
38308         timeouts = [];
38309
38310     var step = {
38311         title: 'intro.lines.title'
38312     };
38313
38314     function timeout(f, t) {
38315         timeouts.push(window.setTimeout(f, t));
38316     }
38317
38318     step.enter = function() {
38319
38320         var centroid = [-85.62830, 41.95699];
38321         var midpoint = [-85.62975395449628, 41.95787501510204];
38322         var start = [-85.6297754121684, 41.95805253325314];
38323         var intersection = [-85.62974496187628, 41.95742515554585];
38324
38325         context.map().centerZoom(start, 18);
38326         reveal('button.add-line', t('intro.lines.add'), {tooltipClass: 'intro-lines-add'});
38327
38328         context.on('enter.intro', addLine);
38329
38330         function addLine(mode) {
38331             if (mode.id !== 'add-line') return;
38332             context.on('enter.intro', drawLine);
38333
38334             var padding = 150 * Math.pow(2, context.map().zoom() - 18);
38335             var pointBox = iD.ui.intro.pad(start, padding, context);
38336             reveal(pointBox, t('intro.lines.start'));
38337
38338             context.map().on('move.intro', function() {
38339                 padding = 150 * Math.pow(2, context.map().zoom() - 18);
38340                 pointBox = iD.ui.intro.pad(start, padding, context);
38341                 reveal(pointBox, t('intro.lines.start'), {duration: 0});
38342             });
38343         }
38344
38345         function drawLine(mode) {
38346             if (mode.id !== 'draw-line') return;
38347             context.history().on('change.intro', addIntersection);
38348             context.on('enter.intro', retry);
38349
38350             var padding = 300 * Math.pow(2, context.map().zoom() - 19);
38351             var pointBox = iD.ui.intro.pad(midpoint, padding, context);
38352             reveal(pointBox, t('intro.lines.intersect'));
38353
38354             context.map().on('move.intro', function() {
38355                 padding = 300 * Math.pow(2, context.map().zoom() - 19);
38356                 pointBox = iD.ui.intro.pad(midpoint, padding, context);
38357                 reveal(pointBox, t('intro.lines.intersect'), {duration: 0});
38358             });
38359         }
38360
38361         // ended line before creating intersection
38362         function retry(mode) {
38363             if (mode.id !== 'select') return;
38364             var pointBox = iD.ui.intro.pad(intersection, 30, context);
38365             reveal(pointBox, t('intro.lines.restart'));
38366             timeout(function() {
38367                 context.replace(iD.actions.DeleteMultiple(mode.selectedIDs()));
38368                 step.exit();
38369                 step.enter();
38370             }, 3000);
38371         }
38372
38373         function addIntersection(changes) {
38374             if ( _.any(changes.created(), function(d) {
38375                 return d.type === 'node' && context.graph().parentWays(d).length > 1;
38376             })) {
38377                 context.history().on('change.intro', null);
38378                 context.on('enter.intro', enterSelect);
38379
38380                 var padding = 900 * Math.pow(2, context.map().zoom() - 19);
38381                 var pointBox = iD.ui.intro.pad(centroid, padding, context);
38382                 reveal(pointBox, t('intro.lines.finish'));
38383
38384                 context.map().on('move.intro', function() {
38385                     padding = 900 * Math.pow(2, context.map().zoom() - 19);
38386                     pointBox = iD.ui.intro.pad(centroid, padding, context);
38387                     reveal(pointBox, t('intro.lines.finish'), {duration: 0});
38388                 });
38389             }
38390         }
38391
38392         function enterSelect(mode) {
38393             if (mode.id !== 'select') return;
38394             context.map().on('move.intro', null);
38395             context.on('enter.intro', null);
38396             d3.select('#curtain').style('pointer-events', 'all');
38397
38398             presetCategory();
38399         }
38400
38401         function presetCategory() {
38402             timeout(function() {
38403                 d3.select('#curtain').style('pointer-events', 'none');
38404                 var road = d3.select('.preset-category-road .preset-list-button');
38405                 reveal(road.node(), t('intro.lines.road'));
38406                 road.one('click.intro', roadCategory);
38407             }, 500);
38408         }
38409
38410         function roadCategory() {
38411             timeout(function() {
38412                 var grid = d3.select('.subgrid');
38413                 reveal(grid.node(), t('intro.lines.residential'));
38414                 grid.selectAll(':not(.preset-highway-residential) .preset-list-button')
38415                     .one('click.intro', retryPreset);
38416                 grid.selectAll('.preset-highway-residential .preset-list-button')
38417                     .one('click.intro', roadDetails);
38418             }, 500);
38419         }
38420
38421         // selected wrong road type
38422         function retryPreset() {
38423             timeout(function() {
38424                 var preset = d3.select('.entity-editor-pane .preset-list-button');
38425                 reveal(preset.node(), t('intro.lines.wrong_preset'));
38426                 preset.one('click.intro', presetCategory);
38427             }, 500);
38428         }
38429
38430         function roadDetails() {
38431             reveal('.pane', t('intro.lines.describe'));
38432             context.on('exit.intro', event.done);
38433         }
38434
38435     };
38436
38437     step.exit = function() {
38438         d3.select('#curtain').style('pointer-events', 'none');
38439         timeouts.forEach(window.clearTimeout);
38440         context.on('enter.intro', null);
38441         context.on('exit.intro', null);
38442         context.map().on('move.intro', null);
38443         context.history().on('change.intro', null);
38444     };
38445
38446     return d3.rebind(step, event, 'on');
38447 };
38448 iD.ui.intro.navigation = function(context, reveal) {
38449
38450     var event = d3.dispatch('done'),
38451         timeouts = [];
38452
38453     var step = {
38454         title: 'intro.navigation.title'
38455     };
38456
38457     function set(f, t) {
38458         timeouts.push(window.setTimeout(f, t));
38459     }
38460
38461     /*
38462      * Steps:
38463      * Drag map
38464      * Select poi
38465      * Show editor header
38466      * Show editor pane
38467      * Select road
38468      * Show header
38469      */
38470
38471     step.enter = function() {
38472
38473         var rect = context.surfaceRect(),
38474             map = {
38475                 left: rect.left + 10,
38476                 top: rect.top + 70,
38477                 width: rect.width - 70,
38478                 height: rect.height - 170
38479             };
38480
38481         context.map().centerZoom([-85.63591, 41.94285], 19);
38482
38483         reveal(map, t('intro.navigation.drag'));
38484
38485         context.map().on('move.intro', _.debounce(function() {
38486             context.map().on('move.intro', null);
38487             townhall();
38488             context.on('enter.intro', inspectTownHall);
38489         }, 400));
38490
38491         function townhall() {
38492             var hall = [-85.63645945147184, 41.942986488012565];
38493
38494             var point = context.projection(hall);
38495             if (point[0] < 0 || point[0] > rect.width ||
38496                 point[1] < 0 || point[1] > rect.height) {
38497                 context.map().center(hall);
38498             }
38499
38500             var box = iD.ui.intro.pointBox(hall, context);
38501             reveal(box, t('intro.navigation.select'));
38502
38503             context.map().on('move.intro', function() {
38504                 var box = iD.ui.intro.pointBox(hall, context);
38505                 reveal(box, t('intro.navigation.select'), {duration: 0});
38506             });
38507         }
38508
38509         function inspectTownHall(mode) {
38510             if (mode.id !== 'select') return;
38511             context.on('enter.intro', null);
38512             context.map().on('move.intro', null);
38513             set(function() {
38514                 reveal('.entity-editor-pane', t('intro.navigation.pane'));
38515                 context.on('exit.intro', event.done);
38516             }, 700);
38517         }
38518
38519     };
38520
38521     step.exit = function() {
38522         context.map().on('move.intro', null);
38523         context.on('enter.intro', null);
38524         context.on('exit.intro', null);
38525         timeouts.forEach(window.clearTimeout);
38526     };
38527
38528     return d3.rebind(step, event, 'on');
38529 };
38530 iD.ui.intro.point = function(context, reveal) {
38531
38532     var event = d3.dispatch('done'),
38533         timeouts = [];
38534
38535     var step = {
38536         title: 'intro.points.title'
38537     };
38538
38539     function setTimeout(f, t) {
38540         timeouts.push(window.setTimeout(f, t));
38541     }
38542
38543     step.enter = function() {
38544
38545         context.map().centerZoom([-85.63279, 41.94394], 19);
38546         reveal('button.add-point', t('intro.points.add'), {tooltipClass: 'intro-points-add'});
38547
38548         var corner = [-85.632481,41.944094];
38549
38550         context.on('enter.intro', addPoint);
38551
38552         function addPoint(mode) {
38553             if (mode.id !== 'add-point') return;
38554             context.on('enter.intro', enterSelect);
38555
38556             var pointBox = iD.ui.intro.pad(corner, 150, context);
38557             reveal(pointBox, t('intro.points.place'));
38558
38559             context.map().on('move.intro', function() {
38560                 pointBox = iD.ui.intro.pad(corner, 150, context);
38561                 reveal(pointBox, t('intro.points.place'), {duration: 0});
38562             });
38563
38564         }
38565
38566         function enterSelect(mode) {
38567             if (mode.id !== 'select') return;
38568             context.map().on('move.intro', null);
38569             context.on('enter.intro', null);
38570
38571             setTimeout(function() {
38572                 reveal('.preset-search-input', t('intro.points.search', {name: context.presets().item('amenity/cafe').name()}));
38573                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38574             }, 500);
38575         }
38576
38577         function keySearch() {
38578             var first = d3.select('.preset-list-item:first-child');
38579             if (first.classed('preset-amenity-cafe')) {
38580                 reveal(first.select('.preset-list-button').node(), t('intro.points.choose'));
38581                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38582
38583                 d3.select('.preset-search-input').on('keydown.intro', function() {
38584                     // Prevent search from updating and changing the grid
38585                     d3.event.stopPropagation();
38586                     d3.event.preventDefault();
38587                 }, true).on('keyup.intro', null);
38588             }
38589         }
38590
38591         function selectedPreset() {
38592             setTimeout(function() {
38593                 reveal('.entity-editor-pane', t('intro.points.describe'), {tooltipClass: 'intro-points-describe'});
38594                 context.history().on('change.intro', closeEditor);
38595                 context.on('exit.intro', selectPoint);
38596             }, 400);
38597         }
38598
38599         function closeEditor() {
38600             d3.select('.preset-search-input').on('keydown.intro', null);
38601             context.history().on('change.intro', null);
38602             reveal('.entity-editor-pane', t('intro.points.close'));
38603         }
38604
38605         function selectPoint() {
38606             context.on('exit.intro', null);
38607             context.history().on('change.intro', null);
38608             context.on('enter.intro', enterReselect);
38609
38610             var pointBox = iD.ui.intro.pad(corner, 150, context);
38611             reveal(pointBox, t('intro.points.reselect'));
38612
38613             context.map().on('move.intro', function() {
38614                 pointBox = iD.ui.intro.pad(corner, 150, context);
38615                 reveal(pointBox, t('intro.points.reselect'), {duration: 0});
38616             });
38617         }
38618
38619         function enterReselect(mode) {
38620             if (mode.id !== 'select') return;
38621             context.map().on('move.intro', null);
38622             context.on('enter.intro', null);
38623
38624             setTimeout(function() {
38625                 reveal('.entity-editor-pane', t('intro.points.fixname'));
38626                 context.on('exit.intro', deletePoint);
38627             }, 500);
38628         }
38629
38630         function deletePoint() {
38631             context.on('exit.intro', null);
38632             context.on('enter.intro', enterDelete);
38633
38634             var pointBox = iD.ui.intro.pad(corner, 150, context);
38635             reveal(pointBox, t('intro.points.reselect_delete'));
38636
38637             context.map().on('move.intro', function() {
38638                 pointBox = iD.ui.intro.pad(corner, 150, context);
38639                 reveal(pointBox, t('intro.points.reselect_delete'), {duration: 0});
38640             });
38641         }
38642
38643         function enterDelete(mode) {
38644             if (mode.id !== 'select') return;
38645             context.map().on('move.intro', null);
38646             context.on('enter.intro', null);
38647             context.on('exit.intro', deletePoint);
38648             context.map().on('move.intro', deletePoint);
38649             context.history().on('change.intro', deleted);
38650
38651             setTimeout(function() {
38652                 var node = d3.select('.radial-menu-item-delete').node();
38653                 var pointBox = iD.ui.intro.pad(node.getBoundingClientRect(), 50, context);
38654                 reveal(pointBox, t('intro.points.delete'));
38655             }, 300);
38656         }
38657
38658         function deleted(changed) {
38659             if (changed.deleted().length) event.done();
38660         }
38661
38662     };
38663
38664     step.exit = function() {
38665         timeouts.forEach(window.clearTimeout);
38666         context.on('exit.intro', null);
38667         context.on('enter.intro', null);
38668         context.map().on('move.intro', null);
38669         context.history().on('change.intro', null);
38670         d3.select('.preset-search-input').on('keyup.intro', null).on('keydown.intro', null);
38671     };
38672
38673     return d3.rebind(step, event, 'on');
38674 };
38675 iD.ui.intro.startEditing = function(context, reveal) {
38676
38677     var event = d3.dispatch('done', 'startEditing'),
38678         modal,
38679         timeouts = [];
38680
38681     var step = {
38682         title: 'intro.startediting.title'
38683     };
38684
38685     function timeout(f, t) {
38686         timeouts.push(window.setTimeout(f, t));
38687     }
38688
38689     step.enter = function() {
38690
38691         reveal('.map-control.help-control', t('intro.startediting.help'));
38692
38693         timeout(function() {
38694             reveal('#bar button.save', t('intro.startediting.save'));
38695         }, 3500);
38696
38697         timeout(function() {
38698             reveal('#surface');
38699         }, 7000);
38700
38701         timeout(function() {
38702             modal = iD.ui.modal(context.container());
38703
38704             modal.select('.modal')
38705                 .attr('class', 'modal-splash modal col6');
38706
38707             modal.selectAll('.close').remove();
38708
38709             var startbutton = modal.select('.content')
38710                 .attr('class', 'fillL')
38711                     .append('button')
38712                         .attr('class', 'modal-section huge-modal-button')
38713                         .on('click', function() {
38714                                 modal.remove();
38715                         });
38716
38717                 startbutton.append('div')
38718                     .attr('class','illustration');
38719                 startbutton.append('h2')
38720                     .text(t('intro.startediting.start'));
38721
38722             event.startEditing();
38723
38724         }, 7500);
38725     };
38726
38727     step.exit = function() {
38728         if (modal) modal.remove();
38729         timeouts.forEach(window.clearTimeout);
38730     };
38731
38732     return d3.rebind(step, event, 'on');
38733 };
38734 iD.presets = function() {
38735
38736     // an iD.presets.Collection with methods for
38737     // loading new data and returning defaults
38738
38739     var all = iD.presets.Collection([]),
38740         defaults = { area: all, line: all, point: all, vertex: all, relation: all },
38741         fields = {},
38742         universal = [],
38743         recent = iD.presets.Collection([]);
38744
38745     // Index of presets by (geometry, tag key).
38746     var index = {
38747         point: {},
38748         vertex: {},
38749         line: {},
38750         area: {},
38751         relation: {}
38752     };
38753
38754     all.match = function(entity, resolver) {
38755         var geometry = entity.geometry(resolver),
38756             geometryMatches = index[geometry],
38757             best = -1,
38758             match;
38759
38760         for (var k in entity.tags) {
38761             var keyMatches = geometryMatches[k];
38762             if (!keyMatches) continue;
38763
38764             for (var i = 0; i < keyMatches.length; i++) {
38765                 var score = keyMatches[i].matchScore(entity);
38766                 if (score > best) {
38767                     best = score;
38768                     match = keyMatches[i];
38769                 }
38770             }
38771         }
38772
38773         return match || all.item(geometry);
38774     };
38775
38776     // Because of the open nature of tagging, iD will never have a complete
38777     // list of tags used in OSM, so we want it to have logic like "assume
38778     // that a closed way with an amenity tag is an area, unless the amenity
38779     // is one of these specific types". This function computes a structure
38780     // that allows testing of such conditions, based on the presets designated
38781     // as as supporting (or not supporting) the area geometry.
38782     //
38783     // The returned object L is a whitelist/blacklist of tags. A closed way
38784     // with a tag (k, v) is considered to be an area if `k in L && !(v in L[k])`
38785     // (see `iD.Way#isArea()`). In other words, the keys of L form the whitelist,
38786     // and the subkeys form the blacklist.
38787     all.areaKeys = function() {
38788         var areaKeys = {},
38789             ignore = ['barrier', 'highway', 'footway', 'railway', 'type'],
38790             presets = _.reject(all.collection, 'suggestion');
38791
38792         // whitelist
38793         presets.forEach(function(d) {
38794             for (var key in d.tags) break;
38795             if (!key) return;
38796             if (ignore.indexOf(key) !== -1) return;
38797
38798             if (d.geometry.indexOf('area') !== -1) {
38799                 areaKeys[key] = areaKeys[key] || {};
38800             }
38801         });
38802
38803         // blacklist
38804         presets.forEach(function(d) {
38805             for (var key in d.tags) break;
38806             if (!key) return;
38807             if (ignore.indexOf(key) !== -1) return;
38808
38809             var value = d.tags[key];
38810             if (d.geometry.indexOf('area') === -1 && key in areaKeys && value !== '*') {
38811                 areaKeys[key][value] = true;
38812             }
38813         });
38814
38815         return areaKeys;
38816     };
38817
38818     all.load = function(d) {
38819
38820         if (d.fields) {
38821             _.forEach(d.fields, function(d, id) {
38822                 fields[id] = iD.presets.Field(id, d);
38823                 if (d.universal) universal.push(fields[id]);
38824             });
38825         }
38826
38827         if (d.presets) {
38828             _.forEach(d.presets, function(d, id) {
38829                 all.collection.push(iD.presets.Preset(id, d, fields));
38830             });
38831         }
38832
38833         if (d.categories) {
38834             _.forEach(d.categories, function(d, id) {
38835                 all.collection.push(iD.presets.Category(id, d, all));
38836             });
38837         }
38838
38839         if (d.defaults) {
38840             var getItem = _.bind(all.item, all);
38841             defaults = {
38842                 area: iD.presets.Collection(d.defaults.area.map(getItem)),
38843                 line: iD.presets.Collection(d.defaults.line.map(getItem)),
38844                 point: iD.presets.Collection(d.defaults.point.map(getItem)),
38845                 vertex: iD.presets.Collection(d.defaults.vertex.map(getItem)),
38846                 relation: iD.presets.Collection(d.defaults.relation.map(getItem))
38847             };
38848         }
38849
38850         for (var i = 0; i < all.collection.length; i++) {
38851             var preset = all.collection[i],
38852                 geometry = preset.geometry;
38853
38854             for (var j = 0; j < geometry.length; j++) {
38855                 var g = index[geometry[j]];
38856                 for (var k in preset.tags) {
38857                     (g[k] = g[k] || []).push(preset);
38858                 }
38859             }
38860         }
38861
38862         return all;
38863     };
38864
38865     all.field = function(id) {
38866         return fields[id];
38867     };
38868
38869     all.universal = function() {
38870         return universal;
38871     };
38872
38873     all.defaults = function(geometry, n) {
38874         var rec = recent.matchGeometry(geometry).collection.slice(0, 4),
38875             def = _.uniq(rec.concat(defaults[geometry].collection)).slice(0, n - 1);
38876         return iD.presets.Collection(_.unique(rec.concat(def).concat(all.item(geometry))));
38877     };
38878
38879     all.choose = function(preset) {
38880         if (!preset.isFallback()) {
38881             recent = iD.presets.Collection(_.unique([preset].concat(recent.collection)));
38882         }
38883         return all;
38884     };
38885
38886     return all;
38887 };
38888 iD.presets.Category = function(id, category, all) {
38889     category = _.clone(category);
38890
38891     category.id = id;
38892
38893     category.members = iD.presets.Collection(category.members.map(function(id) {
38894         return all.item(id);
38895     }));
38896
38897     category.matchGeometry = function(geometry) {
38898         return category.geometry.indexOf(geometry) >= 0;
38899     };
38900
38901     category.matchScore = function() { return -1; };
38902
38903     category.name = function() {
38904         return t('presets.categories.' + id + '.name', {'default': id});
38905     };
38906
38907     category.terms = function() {
38908         return [];
38909     };
38910
38911     return category;
38912 };
38913 iD.presets.Collection = function(collection) {
38914
38915     var maxSearchResults = 50,
38916         maxSuggestionResults = 10;
38917
38918     var presets = {
38919
38920         collection: collection,
38921
38922         item: function(id) {
38923             return _.find(collection, function(d) {
38924                 return d.id === id;
38925             });
38926         },
38927
38928         matchGeometry: function(geometry) {
38929             return iD.presets.Collection(collection.filter(function(d) {
38930                 return d.matchGeometry(geometry);
38931             }));
38932         },
38933
38934         search: function(value, geometry) {
38935             if (!value) return this;
38936
38937             value = value.toLowerCase();
38938
38939             var searchable = _.filter(collection, function(a) {
38940                     return a.searchable !== false && a.suggestion !== true;
38941                 }),
38942                 suggestions = _.filter(collection, function(a) {
38943                     return a.suggestion === true;
38944                 });
38945
38946             function leading(a) {
38947                 var index = a.indexOf(value);
38948                 return index === 0 || a[index - 1] === ' ';
38949             }
38950
38951             // matches value to preset.name
38952             var leading_name = _.filter(searchable, function(a) {
38953                     return leading(a.name().toLowerCase());
38954                 }).sort(function(a, b) {
38955                     var i = a.name().toLowerCase().indexOf(value) - b.name().toLowerCase().indexOf(value);
38956                     if (i === 0) return a.name().length - b.name().length;
38957                     else return i;
38958                 });
38959
38960             // matches value to preset.terms values
38961             var leading_terms = _.filter(searchable, function(a) {
38962                     return _.any(a.terms() || [], leading);
38963                 });
38964
38965             // matches value to preset.tags values
38966             var leading_tag_values = _.filter(searchable, function(a) {
38967                     return _.any(_.without(_.values(a.tags || {}), '*'), leading);
38968                 });
38969
38970
38971             // finds close matches to value in preset.name
38972             var levenstein_name = searchable.map(function(a) {
38973                     return {
38974                         preset: a,
38975                         dist: iD.util.editDistance(value, a.name().toLowerCase())
38976                     };
38977                 }).filter(function(a) {
38978                     return a.dist + Math.min(value.length - a.preset.name().length, 0) < 3;
38979                 }).sort(function(a, b) {
38980                     return a.dist - b.dist;
38981                 }).map(function(a) {
38982                     return a.preset;
38983                 });
38984
38985             // finds close matches to value in preset.terms
38986             var leventstein_terms = _.filter(searchable, function(a) {
38987                     return _.any(a.terms() || [], function(b) {
38988                         return iD.util.editDistance(value, b) + Math.min(value.length - b.length, 0) < 3;
38989                     });
38990                 });
38991
38992             function suggestionName(name) {
38993                 var nameArray = name.split(' - ');
38994                 if (nameArray.length > 1) {
38995                     name = nameArray.slice(0, nameArray.length-1).join(' - ');
38996                 }
38997                 return name.toLowerCase();
38998             }
38999
39000             var leading_suggestions = _.filter(suggestions, function(a) {
39001                     return leading(suggestionName(a.name()));
39002                 }).sort(function(a, b) {
39003                     a = suggestionName(a.name());
39004                     b = suggestionName(b.name());
39005                     var i = a.indexOf(value) - b.indexOf(value);
39006                     if (i === 0) return a.length - b.length;
39007                     else return i;
39008                 });
39009
39010             var leven_suggestions = suggestions.map(function(a) {
39011                     return {
39012                         preset: a,
39013                         dist: iD.util.editDistance(value, suggestionName(a.name()))
39014                     };
39015                 }).filter(function(a) {
39016                     return a.dist + Math.min(value.length - suggestionName(a.preset.name()).length, 0) < 1;
39017                 }).sort(function(a, b) {
39018                     return a.dist - b.dist;
39019                 }).map(function(a) {
39020                     return a.preset;
39021                 });
39022
39023             var other = presets.item(geometry);
39024
39025             var results = leading_name.concat(
39026                             leading_terms,
39027                             leading_tag_values,
39028                             leading_suggestions.slice(0, maxSuggestionResults+5),
39029                             levenstein_name,
39030                             leventstein_terms,
39031                             leven_suggestions.slice(0, maxSuggestionResults)
39032                         ).slice(0, maxSearchResults-1);
39033
39034             return iD.presets.Collection(_.unique(
39035                     results.concat(other)
39036                 ));
39037         }
39038     };
39039
39040     return presets;
39041 };
39042 iD.presets.Field = function(id, field) {
39043     field = _.clone(field);
39044
39045     field.id = id;
39046
39047     field.matchGeometry = function(geometry) {
39048         return !field.geometry || field.geometry === geometry;
39049     };
39050
39051     field.t = function(scope, options) {
39052         return t('presets.fields.' + id + '.' + scope, options);
39053     };
39054
39055     field.label = function() {
39056         return field.t('label', {'default': id});
39057     };
39058
39059     var placeholder = field.placeholder;
39060     field.placeholder = function() {
39061         return field.t('placeholder', {'default': placeholder});
39062     };
39063
39064     return field;
39065 };
39066 iD.presets.Preset = function(id, preset, fields) {
39067     preset = _.clone(preset);
39068
39069     preset.id = id;
39070     preset.fields = (preset.fields || []).map(getFields);
39071     preset.geometry = (preset.geometry || []);
39072
39073     function getFields(f) {
39074         return fields[f];
39075     }
39076
39077     preset.matchGeometry = function(geometry) {
39078         return preset.geometry.indexOf(geometry) >= 0;
39079     };
39080
39081     var matchScore = preset.matchScore || 1;
39082     preset.matchScore = function(entity) {
39083         var tags = preset.tags,
39084             score = 0;
39085
39086         for (var t in tags) {
39087             if (entity.tags[t] === tags[t]) {
39088                 score += matchScore;
39089             } else if (tags[t] === '*' && t in entity.tags) {
39090                 score += matchScore / 2;
39091             } else {
39092                 return -1;
39093             }
39094         }
39095
39096         return score;
39097     };
39098
39099     preset.t = function(scope, options) {
39100         return t('presets.presets.' + id + '.' + scope, options);
39101     };
39102
39103     var name = preset.name;
39104     preset.name = function() {
39105         if (preset.suggestion) {
39106             id = id.split('/');
39107             id = id[0] + '/' + id[1];
39108             return name + ' - ' + t('presets.presets.' + id + '.name');
39109         }
39110         return preset.t('name', {'default': name});
39111     };
39112
39113     preset.terms = function() {
39114         return preset.t('terms', {'default': ''}).toLowerCase().trim().split(/\s*,+\s*/);
39115     };
39116
39117     preset.isFallback = function() {
39118         return Object.keys(preset.tags).length === 0;
39119     };
39120
39121     preset.reference = function(geometry) {
39122         var key = Object.keys(preset.tags)[0],
39123             value = preset.tags[key];
39124
39125         if (geometry === 'relation' && key === 'type') {
39126             return { rtype: value };
39127         } else if (value === '*') {
39128             return { key: key };
39129         } else {
39130             return { key: key, value: value };
39131         }
39132     };
39133
39134     var removeTags = preset.removeTags || preset.tags;
39135     preset.removeTags = function(tags, geometry) {
39136         tags = _.omit(tags, _.keys(removeTags));
39137
39138         for (var f in preset.fields) {
39139             var field = preset.fields[f];
39140             if (field.matchGeometry(geometry) && field.default === tags[field.key]) {
39141                 delete tags[field.key];
39142             }
39143         }
39144
39145         delete tags.area;
39146         return tags;
39147     };
39148
39149     var applyTags = preset.addTags || preset.tags;
39150     preset.applyTags = function(tags, geometry) {
39151         var k;
39152
39153         tags = _.clone(tags);
39154
39155         for (k in applyTags) {
39156             if (applyTags[k] === '*') {
39157                 tags[k] = 'yes';
39158             } else {
39159                 tags[k] = applyTags[k];
39160             }
39161         }
39162
39163         // Add area=yes if necessary.
39164         // This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
39165         // 1. chosen preset could be either an area or a line (`barrier=city_wall`)
39166         // 2. chosen preset doesn't have a key in areaKeys (`railway=station`)
39167         if (geometry === 'area') {
39168             var needsAreaTag = true;
39169             if (preset.geometry.indexOf('line') === -1) {
39170                 for (k in applyTags) {
39171                     if (k in iD.areaKeys) {
39172                         needsAreaTag = false;
39173                         break;
39174                     }
39175                 }
39176             }
39177             if (needsAreaTag) {
39178                 tags.area = 'yes';
39179             }
39180         }
39181
39182         for (var f in preset.fields) {
39183             var field = preset.fields[f];
39184             if (field.matchGeometry(geometry) && field.key && !tags[field.key] && field.default) {
39185                 tags[field.key] = field.default;
39186             }
39187         }
39188
39189         return tags;
39190     };
39191
39192     return preset;
39193 };
39194 iD.validations = {};
39195 iD.validations.DeprecatedTag = function() {
39196
39197     var validation = function(changes) {
39198         var warnings = [];
39199         for (var i = 0; i < changes.created.length; i++) {
39200             var change = changes.created[i],
39201                 deprecatedTags = change.deprecatedTags();
39202
39203             if (!_.isEmpty(deprecatedTags)) {
39204                 var tags = iD.util.tagText({ tags: deprecatedTags });
39205                 warnings.push({
39206                     id: 'deprecated_tags',
39207                     message: t('validations.deprecated_tags', { tags: tags }),
39208                     entity: change
39209                 });
39210             }
39211         }
39212         return warnings;
39213     };
39214
39215     return validation;
39216 };
39217 iD.validations.ManyDeletions = function() {
39218     var threshold = 100;
39219
39220     var validation = function(changes) {
39221         var warnings = [];
39222         if (changes.deleted.length > threshold) {
39223             warnings.push({
39224                 id: 'many_deletions',
39225                 message: t('validations.many_deletions', { n: changes.deleted.length })
39226             });
39227         }
39228         return warnings;
39229     };
39230
39231     return validation;
39232 };
39233 iD.validations.MissingTag = function() {
39234
39235     var validation = function(changes, graph) {
39236         var warnings = [];
39237         for (var i = 0; i < changes.created.length; i++) {
39238             var change = changes.created[i],
39239                 geometry = change.geometry(graph);
39240
39241             if ((geometry === 'point' || geometry === 'line' || geometry === 'area') && !change.isUsed(graph)) {
39242                 warnings.push({
39243                     id: 'missing_tag',
39244                     message: t('validations.untagged_' + geometry),
39245                     tooltip: t('validations.untagged_' + geometry + '_tooltip'),
39246                     entity: change
39247                 });
39248             }
39249         }
39250         return warnings;
39251     };
39252
39253     return validation;
39254 };
39255 iD.validations.TagSuggestsArea = function() {
39256
39257     // https://github.com/openstreetmap/josm/blob/mirror/src/org/
39258     // openstreetmap/josm/data/validation/tests/UnclosedWays.java#L80
39259     function tagSuggestsArea(tags) {
39260         if (_.isEmpty(tags)) return false;
39261
39262         var presence = ['landuse', 'amenities', 'tourism', 'shop'];
39263         for (var i = 0; i < presence.length; i++) {
39264             if (tags[presence[i]] !== undefined) {
39265                 return presence[i] + '=' + tags[presence[i]];
39266             }
39267         }
39268
39269         if (tags.building && tags.building === 'yes') return 'building=yes';
39270     }
39271
39272     var validation = function(changes, graph) {
39273         var warnings = [];
39274         for (var i = 0; i < changes.created.length; i++) {
39275             var change = changes.created[i],
39276                 geometry = change.geometry(graph),
39277                 suggestion = (geometry === 'line' ? tagSuggestsArea(change.tags) : undefined);
39278
39279             if (suggestion) {
39280                 warnings.push({
39281                     id: 'tag_suggests_area',
39282                     message: t('validations.tag_suggests_area', { tag: suggestion }),
39283                     entity: change
39284                 });
39285             }
39286         }
39287         return warnings;
39288     };
39289
39290     return validation;
39291 };
39292 })();
39293 window.locale = { _current: 'en' };
39294
39295 locale.current = function(_) {
39296     if (!arguments.length) return locale._current;
39297     if (locale[_] !== undefined) locale._current = _;
39298     else if (locale[_.split('-')[0]]) locale._current = _.split('-')[0];
39299     return locale;
39300 };
39301
39302 function t(s, o, loc) {
39303     loc = loc || locale._current;
39304
39305     var path = s.split(".").reverse(),
39306         rep = locale[loc];
39307
39308     while (rep !== undefined && path.length) rep = rep[path.pop()];
39309
39310     if (rep !== undefined) {
39311         if (o) for (var k in o) rep = rep.replace('{' + k + '}', o[k]);
39312         return rep;
39313     }
39314
39315     if (loc !== 'en') {
39316         return t(s, o, 'en');
39317     }
39318
39319     if (o && 'default' in o) {
39320         return o['default'];
39321     }
39322
39323     var missing = 'Missing ' + loc + ' translation: ' + s;
39324     if (typeof console !== "undefined") console.error(missing);
39325
39326     return missing;
39327 }
39328 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 = {
39329     "deprecated": [
39330         {
39331             "old": {
39332                 "amenity": "firepit"
39333             },
39334             "replace": {
39335                 "leisure": "firepit"
39336             }
39337         },
39338         {
39339             "old": {
39340                 "barrier": "wire_fence"
39341             },
39342             "replace": {
39343                 "barrier": "fence",
39344                 "fence_type": "chain"
39345             }
39346         },
39347         {
39348             "old": {
39349                 "barrier": "wood_fence"
39350             },
39351             "replace": {
39352                 "barrier": "fence",
39353                 "fence_type": "wood"
39354             }
39355         },
39356         {
39357             "old": {
39358                 "highway": "ford"
39359             },
39360             "replace": {
39361                 "ford": "yes"
39362             }
39363         },
39364         {
39365             "old": {
39366                 "highway": "stile"
39367             },
39368             "replace": {
39369                 "barrier": "stile"
39370             }
39371         },
39372         {
39373             "old": {
39374                 "highway": "incline"
39375             },
39376             "replace": {
39377                 "highway": "road",
39378                 "incline": "up"
39379             }
39380         },
39381         {
39382             "old": {
39383                 "highway": "incline_steep"
39384             },
39385             "replace": {
39386                 "highway": "road",
39387                 "incline": "up"
39388             }
39389         },
39390         {
39391             "old": {
39392                 "highway": "unsurfaced"
39393             },
39394             "replace": {
39395                 "highway": "road",
39396                 "incline": "unpaved"
39397             }
39398         },
39399         {
39400             "old": {
39401                 "landuse": "wood"
39402             },
39403             "replace": {
39404                 "landuse": "forest",
39405                 "natural": "wood"
39406             }
39407         },
39408         {
39409             "old": {
39410                 "natural": "marsh"
39411             },
39412             "replace": {
39413                 "natural": "wetland",
39414                 "wetland": "marsh"
39415             }
39416         },
39417         {
39418             "old": {
39419                 "power_source": "*"
39420             },
39421             "replace": {
39422                 "generator:source": "$1"
39423             }
39424         },
39425         {
39426             "old": {
39427                 "power_rating": "*"
39428             },
39429             "replace": {
39430                 "generator:output": "$1"
39431             }
39432         },
39433         {
39434             "old": {
39435                 "shop": "organic"
39436             },
39437             "replace": {
39438                 "shop": "supermarket",
39439                 "organic": "only"
39440             }
39441         }
39442     ],
39443     "discarded": [
39444         "created_by",
39445         "odbl",
39446         "odbl:note",
39447         "tiger:upload_uuid",
39448         "tiger:tlid",
39449         "tiger:source",
39450         "tiger:separated",
39451         "geobase:datasetName",
39452         "geobase:uuid",
39453         "sub_sea:type",
39454         "KSJ2:ADS",
39455         "KSJ2:ARE",
39456         "KSJ2:AdminArea",
39457         "KSJ2:COP_label",
39458         "KSJ2:DFD",
39459         "KSJ2:INT",
39460         "KSJ2:INT_label",
39461         "KSJ2:LOC",
39462         "KSJ2:LPN",
39463         "KSJ2:OPC",
39464         "KSJ2:PubFacAdmin",
39465         "KSJ2:RAC",
39466         "KSJ2:RAC_label",
39467         "KSJ2:RIC",
39468         "KSJ2:RIN",
39469         "KSJ2:WSC",
39470         "KSJ2:coordinate",
39471         "KSJ2:curve_id",
39472         "KSJ2:curve_type",
39473         "KSJ2:filename",
39474         "KSJ2:lake_id",
39475         "KSJ2:lat",
39476         "KSJ2:long",
39477         "KSJ2:river_id",
39478         "yh:LINE_NAME",
39479         "yh:LINE_NUM",
39480         "yh:STRUCTURE",
39481         "yh:TOTYUMONO",
39482         "yh:TYPE",
39483         "yh:WIDTH",
39484         "yh:WIDTH_RANK",
39485         "SK53_bulk:load"
39486     ],
39487     "wikipedia": [
39488         [
39489             "Abkhazian",
39490             "Аҧсшәа",
39491             "ab"
39492         ],
39493         [
39494             "Achinese",
39495             "Acèh",
39496             "ace"
39497         ],
39498         [
39499             "Afrikaans",
39500             "Afrikaans",
39501             "af"
39502         ],
39503         [
39504             "Akan",
39505             "Akan",
39506             "ak"
39507         ],
39508         [
39509             "Alemannisch",
39510             "Alemannisch",
39511             "als"
39512         ],
39513         [
39514             "Amharic",
39515             "አማርኛ",
39516             "am"
39517         ],
39518         [
39519             "Aragonese",
39520             "aragonés",
39521             "an"
39522         ],
39523         [
39524             "Old English",
39525             "Ænglisc",
39526             "ang"
39527         ],
39528         [
39529             "Arabic",
39530             "العربية",
39531             "ar"
39532         ],
39533         [
39534             "Aramaic",
39535             "ܐܪܡܝܐ",
39536             "arc"
39537         ],
39538         [
39539             "Egyptian Arabic",
39540             "مصرى",
39541             "arz"
39542         ],
39543         [
39544             "Assamese",
39545             "অসমীয়া",
39546             "as"
39547         ],
39548         [
39549             "Asturian",
39550             "asturianu",
39551             "ast"
39552         ],
39553         [
39554             "Avaric",
39555             "авар",
39556             "av"
39557         ],
39558         [
39559             "Aymara",
39560             "Aymar aru",
39561             "ay"
39562         ],
39563         [
39564             "Azerbaijani",
39565             "azərbaycanca",
39566             "az"
39567         ],
39568         [
39569             "South Azerbaijani",
39570             "تۆرکجه",
39571             "azb"
39572         ],
39573         [
39574             "Bashkir",
39575             "башҡортса",
39576             "ba"
39577         ],
39578         [
39579             "Bavarian",
39580             "Boarisch",
39581             "bar"
39582         ],
39583         [
39584             "Samogitian",
39585             "žemaitėška",
39586             "bat-smg"
39587         ],
39588         [
39589             "Bikol Central",
39590             "Bikol Central",
39591             "bcl"
39592         ],
39593         [
39594             "Belarusian",
39595             "беларуская",
39596             "be"
39597         ],
39598         [
39599             "беларуская (тарашкевіца)‎",
39600             "беларуская (тарашкевіца)‎",
39601             "be-x-old"
39602         ],
39603         [
39604             "Bulgarian",
39605             "български",
39606             "bg"
39607         ],
39608         [
39609             "भोजपुरी",
39610             "भोजपुरी",
39611             "bh"
39612         ],
39613         [
39614             "Bislama",
39615             "Bislama",
39616             "bi"
39617         ],
39618         [
39619             "Banjar",
39620             "Bahasa Banjar",
39621             "bjn"
39622         ],
39623         [
39624             "Bambara",
39625             "bamanankan",
39626             "bm"
39627         ],
39628         [
39629             "Bengali",
39630             "বাংলা",
39631             "bn"
39632         ],
39633         [
39634             "Tibetan",
39635             "བོད་ཡིག",
39636             "bo"
39637         ],
39638         [
39639             "Bishnupriya",
39640             "বিষ্ণুপ্রিয়া মণিপুরী",
39641             "bpy"
39642         ],
39643         [
39644             "Breton",
39645             "brezhoneg",
39646             "br"
39647         ],
39648         [
39649             "Bosnian",
39650             "bosanski",
39651             "bs"
39652         ],
39653         [
39654             "Buginese",
39655             "ᨅᨔ ᨕᨘᨁᨗ",
39656             "bug"
39657         ],
39658         [
39659             "буряад",
39660             "буряад",
39661             "bxr"
39662         ],
39663         [
39664             "Catalan",
39665             "català",
39666             "ca"
39667         ],
39668         [
39669             "Chavacano de Zamboanga",
39670             "Chavacano de Zamboanga",
39671             "cbk-zam"
39672         ],
39673         [
39674             "Min Dong Chinese",
39675             "Mìng-dĕ̤ng-ngṳ̄",
39676             "cdo"
39677         ],
39678         [
39679             "Chechen",
39680             "нохчийн",
39681             "ce"
39682         ],
39683         [
39684             "Cebuano",
39685             "Cebuano",
39686             "ceb"
39687         ],
39688         [
39689             "Chamorro",
39690             "Chamoru",
39691             "ch"
39692         ],
39693         [
39694             "Cherokee",
39695             "ᏣᎳᎩ",
39696             "chr"
39697         ],
39698         [
39699             "Cheyenne",
39700             "Tsetsêhestâhese",
39701             "chy"
39702         ],
39703         [
39704             "Central Kurdish",
39705             "کوردیی ناوەندی",
39706             "ckb"
39707         ],
39708         [
39709             "Corsican",
39710             "corsu",
39711             "co"
39712         ],
39713         [
39714             "Cree",
39715             "Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ",
39716             "cr"
39717         ],
39718         [
39719             "Crimean Turkish",
39720             "qırımtatarca",
39721             "crh"
39722         ],
39723         [
39724             "Czech",
39725             "čeština",
39726             "cs"
39727         ],
39728         [
39729             "Kashubian",
39730             "kaszëbsczi",
39731             "csb"
39732         ],
39733         [
39734             "Church Slavic",
39735             "словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ",
39736             "cu"
39737         ],
39738         [
39739             "Chuvash",
39740             "Чӑвашла",
39741             "cv"
39742         ],
39743         [
39744             "Welsh",
39745             "Cymraeg",
39746             "cy"
39747         ],
39748         [
39749             "Danish",
39750             "dansk",
39751             "da"
39752         ],
39753         [
39754             "German",
39755             "Deutsch",
39756             "de"
39757         ],
39758         [
39759             "Zazaki",
39760             "Zazaki",
39761             "diq"
39762         ],
39763         [
39764             "Lower Sorbian",
39765             "dolnoserbski",
39766             "dsb"
39767         ],
39768         [
39769             "Divehi",
39770             "ދިވެހިބަސް",
39771             "dv"
39772         ],
39773         [
39774             "Dzongkha",
39775             "ཇོང་ཁ",
39776             "dz"
39777         ],
39778         [
39779             "Ewe",
39780             "eʋegbe",
39781             "ee"
39782         ],
39783         [
39784             "Greek",
39785             "Ελληνικά",
39786             "el"
39787         ],
39788         [
39789             "Emiliano-Romagnolo",
39790             "emiliàn e rumagnòl",
39791             "eml"
39792         ],
39793         [
39794             "English",
39795             "English",
39796             "en"
39797         ],
39798         [
39799             "Esperanto",
39800             "Esperanto",
39801             "eo"
39802         ],
39803         [
39804             "Spanish",
39805             "español",
39806             "es"
39807         ],
39808         [
39809             "Estonian",
39810             "eesti",
39811             "et"
39812         ],
39813         [
39814             "Basque",
39815             "euskara",
39816             "eu"
39817         ],
39818         [
39819             "Extremaduran",
39820             "estremeñu",
39821             "ext"
39822         ],
39823         [
39824             "Persian",
39825             "فارسی",
39826             "fa"
39827         ],
39828         [
39829             "Fulah",
39830             "Fulfulde",
39831             "ff"
39832         ],
39833         [
39834             "Finnish",
39835             "suomi",
39836             "fi"
39837         ],
39838         [
39839             "Võro",
39840             "Võro",
39841             "fiu-vro"
39842         ],
39843         [
39844             "Fijian",
39845             "Na Vosa Vakaviti",
39846             "fj"
39847         ],
39848         [
39849             "Faroese",
39850             "føroyskt",
39851             "fo"
39852         ],
39853         [
39854             "French",
39855             "français",
39856             "fr"
39857         ],
39858         [
39859             "Arpitan",
39860             "arpetan",
39861             "frp"
39862         ],
39863         [
39864             "Northern Frisian",
39865             "Nordfriisk",
39866             "frr"
39867         ],
39868         [
39869             "Friulian",
39870             "furlan",
39871             "fur"
39872         ],
39873         [
39874             "Western Frisian",
39875             "Frysk",
39876             "fy"
39877         ],
39878         [
39879             "Irish",
39880             "Gaeilge",
39881             "ga"
39882         ],
39883         [
39884             "Gagauz",
39885             "Gagauz",
39886             "gag"
39887         ],
39888         [
39889             "Gan Chinese",
39890             "贛語",
39891             "gan"
39892         ],
39893         [
39894             "Scottish Gaelic",
39895             "Gàidhlig",
39896             "gd"
39897         ],
39898         [
39899             "Galician",
39900             "galego",
39901             "gl"
39902         ],
39903         [
39904             "Gilaki",
39905             "گیلکی",
39906             "glk"
39907         ],
39908         [
39909             "Guarani",
39910             "Avañe'ẽ",
39911             "gn"
39912         ],
39913         [
39914             "Goan Konkani",
39915             "गोवा कोंकणी / Gova Konknni",
39916             "gom"
39917         ],
39918         [
39919             "Gothic",
39920             "𐌲𐌿𐍄𐌹𐍃𐌺",
39921             "got"
39922         ],
39923         [
39924             "Gujarati",
39925             "ગુજરાતી",
39926             "gu"
39927         ],
39928         [
39929             "Manx",
39930             "Gaelg",
39931             "gv"
39932         ],
39933         [
39934             "Hausa",
39935             "Hausa",
39936             "ha"
39937         ],
39938         [
39939             "Hakka Chinese",
39940             "客家語/Hak-kâ-ngî",
39941             "hak"
39942         ],
39943         [
39944             "Hawaiian",
39945             "Hawai`i",
39946             "haw"
39947         ],
39948         [
39949             "Hebrew",
39950             "עברית",
39951             "he"
39952         ],
39953         [
39954             "Hindi",
39955             "हिन्दी",
39956             "hi"
39957         ],
39958         [
39959             "Fiji Hindi",
39960             "Fiji Hindi",
39961             "hif"
39962         ],
39963         [
39964             "Croatian",
39965             "hrvatski",
39966             "hr"
39967         ],
39968         [
39969             "Upper Sorbian",
39970             "hornjoserbsce",
39971             "hsb"
39972         ],
39973         [
39974             "Haitian",
39975             "Kreyòl ayisyen",
39976             "ht"
39977         ],
39978         [
39979             "Hungarian",
39980             "magyar",
39981             "hu"
39982         ],
39983         [
39984             "Armenian",
39985             "Հայերեն",
39986             "hy"
39987         ],
39988         [
39989             "Interlingua",
39990             "interlingua",
39991             "ia"
39992         ],
39993         [
39994             "Indonesian",
39995             "Bahasa Indonesia",
39996             "id"
39997         ],
39998         [
39999             "Interlingue",
40000             "Interlingue",
40001             "ie"
40002         ],
40003         [
40004             "Igbo",
40005             "Igbo",
40006             "ig"
40007         ],
40008         [
40009             "Inupiaq",
40010             "Iñupiak",
40011             "ik"
40012         ],
40013         [
40014             "Iloko",
40015             "Ilokano",
40016             "ilo"
40017         ],
40018         [
40019             "Ido",
40020             "Ido",
40021             "io"
40022         ],
40023         [
40024             "Icelandic",
40025             "íslenska",
40026             "is"
40027         ],
40028         [
40029             "Italian",
40030             "italiano",
40031             "it"
40032         ],
40033         [
40034             "Inuktitut",
40035             "ᐃᓄᒃᑎᑐᑦ/inuktitut",
40036             "iu"
40037         ],
40038         [
40039             "Japanese",
40040             "日本語",
40041             "ja"
40042         ],
40043         [
40044             "Lojban",
40045             "Lojban",
40046             "jbo"
40047         ],
40048         [
40049             "Javanese",
40050             "Basa Jawa",
40051             "jv"
40052         ],
40053         [
40054             "Georgian",
40055             "ქართული",
40056             "ka"
40057         ],
40058         [
40059             "Kara-Kalpak",
40060             "Qaraqalpaqsha",
40061             "kaa"
40062         ],
40063         [
40064             "Kabyle",
40065             "Taqbaylit",
40066             "kab"
40067         ],
40068         [
40069             "Kabardian",
40070             "Адыгэбзэ",
40071             "kbd"
40072         ],
40073         [
40074             "Kongo",
40075             "Kongo",
40076             "kg"
40077         ],
40078         [
40079             "Kikuyu",
40080             "Gĩkũyũ",
40081             "ki"
40082         ],
40083         [
40084             "Kazakh",
40085             "қазақша",
40086             "kk"
40087         ],
40088         [
40089             "Kalaallisut",
40090             "kalaallisut",
40091             "kl"
40092         ],
40093         [
40094             "Khmer",
40095             "ភាសាខ្មែរ",
40096             "km"
40097         ],
40098         [
40099             "Kannada",
40100             "ಕನ್ನಡ",
40101             "kn"
40102         ],
40103         [
40104             "Korean",
40105             "한국어",
40106             "ko"
40107         ],
40108         [
40109             "Komi-Permyak",
40110             "Перем Коми",
40111             "koi"
40112         ],
40113         [
40114             "Karachay-Balkar",
40115             "къарачай-малкъар",
40116             "krc"
40117         ],
40118         [
40119             "Kashmiri",
40120             "कॉशुर / کٲشُر",
40121             "ks"
40122         ],
40123         [
40124             "Colognian",
40125             "Ripoarisch",
40126             "ksh"
40127         ],
40128         [
40129             "Kurdish",
40130             "Kurdî",
40131             "ku"
40132         ],
40133         [
40134             "Komi",
40135             "коми",
40136             "kv"
40137         ],
40138         [
40139             "Cornish",
40140             "kernowek",
40141             "kw"
40142         ],
40143         [
40144             "Kyrgyz",
40145             "Кыргызча",
40146             "ky"
40147         ],
40148         [
40149             "Latin",
40150             "Latina",
40151             "la"
40152         ],
40153         [
40154             "Ladino",
40155             "Ladino",
40156             "lad"
40157         ],
40158         [
40159             "Luxembourgish",
40160             "Lëtzebuergesch",
40161             "lb"
40162         ],
40163         [
40164             "лакку",
40165             "лакку",
40166             "lbe"
40167         ],
40168         [
40169             "Lezghian",
40170             "лезги",
40171             "lez"
40172         ],
40173         [
40174             "Ganda",
40175             "Luganda",
40176             "lg"
40177         ],
40178         [
40179             "Limburgish",
40180             "Limburgs",
40181             "li"
40182         ],
40183         [
40184             "Ligurian",
40185             "Ligure",
40186             "lij"
40187         ],
40188         [
40189             "Lombard",
40190             "lumbaart",
40191             "lmo"
40192         ],
40193         [
40194             "Lingala",
40195             "lingála",
40196             "ln"
40197         ],
40198         [
40199             "Lao",
40200             "ລາວ",
40201             "lo"
40202         ],
40203         [
40204             "Northern Luri",
40205             "لۊری شومالی",
40206             "lrc"
40207         ],
40208         [
40209             "Lithuanian",
40210             "lietuvių",
40211             "lt"
40212         ],
40213         [
40214             "Latgalian",
40215             "latgaļu",
40216             "ltg"
40217         ],
40218         [
40219             "Latvian",
40220             "latviešu",
40221             "lv"
40222         ],
40223         [
40224             "Maithili",
40225             "मैथिली",
40226             "mai"
40227         ],
40228         [
40229             "Basa Banyumasan",
40230             "Basa Banyumasan",
40231             "map-bms"
40232         ],
40233         [
40234             "Moksha",
40235             "мокшень",
40236             "mdf"
40237         ],
40238         [
40239             "Malagasy",
40240             "Malagasy",
40241             "mg"
40242         ],
40243         [
40244             "Eastern Mari",
40245             "олык марий",
40246             "mhr"
40247         ],
40248         [
40249             "Maori",
40250             "Māori",
40251             "mi"
40252         ],
40253         [
40254             "Minangkabau",
40255             "Baso Minangkabau",
40256             "min"
40257         ],
40258         [
40259             "Macedonian",
40260             "македонски",
40261             "mk"
40262         ],
40263         [
40264             "Malayalam",
40265             "മലയാളം",
40266             "ml"
40267         ],
40268         [
40269             "Mongolian",
40270             "монгол",
40271             "mn"
40272         ],
40273         [
40274             "Marathi",
40275             "मराठी",
40276             "mr"
40277         ],
40278         [
40279             "Western Mari",
40280             "кырык мары",
40281             "mrj"
40282         ],
40283         [
40284             "Malay",
40285             "Bahasa Melayu",
40286             "ms"
40287         ],
40288         [
40289             "Maltese",
40290             "Malti",
40291             "mt"
40292         ],
40293         [
40294             "Mirandese",
40295             "Mirandés",
40296             "mwl"
40297         ],
40298         [
40299             "Burmese",
40300             "မြန်မာဘာသာ",
40301             "my"
40302         ],
40303         [
40304             "Erzya",
40305             "эрзянь",
40306             "myv"
40307         ],
40308         [
40309             "Mazanderani",
40310             "مازِرونی",
40311             "mzn"
40312         ],
40313         [
40314             "Nauru",
40315             "Dorerin Naoero",
40316             "na"
40317         ],
40318         [
40319             "Nāhuatl",
40320             "Nāhuatl",
40321             "nah"
40322         ],
40323         [
40324             "Neapolitan",
40325             "Napulitano",
40326             "nap"
40327         ],
40328         [
40329             "Low German",
40330             "Plattdüütsch",
40331             "nds"
40332         ],
40333         [
40334             "Low Saxon (Netherlands)",
40335             "Nedersaksies",
40336             "nds-nl"
40337         ],
40338         [
40339             "Nepali",
40340             "नेपाली",
40341             "ne"
40342         ],
40343         [
40344             "Newari",
40345             "नेपाल भाषा",
40346             "new"
40347         ],
40348         [
40349             "Dutch",
40350             "Nederlands",
40351             "nl"
40352         ],
40353         [
40354             "Norwegian Nynorsk",
40355             "norsk nynorsk",
40356             "nn"
40357         ],
40358         [
40359             "Norwegian",
40360             "norsk bokmål",
40361             "no"
40362         ],
40363         [
40364             "Novial",
40365             "Novial",
40366             "nov"
40367         ],
40368         [
40369             "Nouormand",
40370             "Nouormand",
40371             "nrm"
40372         ],
40373         [
40374             "Northern Sotho",
40375             "Sesotho sa Leboa",
40376             "nso"
40377         ],
40378         [
40379             "Navajo",
40380             "Diné bizaad",
40381             "nv"
40382         ],
40383         [
40384             "Nyanja",
40385             "Chi-Chewa",
40386             "ny"
40387         ],
40388         [
40389             "Occitan",
40390             "occitan",
40391             "oc"
40392         ],
40393         [
40394             "Oromo",
40395             "Oromoo",
40396             "om"
40397         ],
40398         [
40399             "Oriya",
40400             "ଓଡ଼ିଆ",
40401             "or"
40402         ],
40403         [
40404             "Ossetic",
40405             "Ирон",
40406             "os"
40407         ],
40408         [
40409             "Punjabi",
40410             "ਪੰਜਾਬੀ",
40411             "pa"
40412         ],
40413         [
40414             "Pangasinan",
40415             "Pangasinan",
40416             "pag"
40417         ],
40418         [
40419             "Pampanga",
40420             "Kapampangan",
40421             "pam"
40422         ],
40423         [
40424             "Papiamento",
40425             "Papiamentu",
40426             "pap"
40427         ],
40428         [
40429             "Picard",
40430             "Picard",
40431             "pcd"
40432         ],
40433         [
40434             "Pennsylvania German",
40435             "Deitsch",
40436             "pdc"
40437         ],
40438         [
40439             "Palatine German",
40440             "Pälzisch",
40441             "pfl"
40442         ],
40443         [
40444             "Pali",
40445             "पालि",
40446             "pi"
40447         ],
40448         [
40449             "Norfuk / Pitkern",
40450             "Norfuk / Pitkern",
40451             "pih"
40452         ],
40453         [
40454             "Polish",
40455             "polski",
40456             "pl"
40457         ],
40458         [
40459             "Piedmontese",
40460             "Piemontèis",
40461             "pms"
40462         ],
40463         [
40464             "Western Punjabi",
40465             "پنجابی",
40466             "pnb"
40467         ],
40468         [
40469             "Pontic",
40470             "Ποντιακά",
40471             "pnt"
40472         ],
40473         [
40474             "Pashto",
40475             "پښتو",
40476             "ps"
40477         ],
40478         [
40479             "Portuguese",
40480             "português",
40481             "pt"
40482         ],
40483         [
40484             "Quechua",
40485             "Runa Simi",
40486             "qu"
40487         ],
40488         [
40489             "Romansh",
40490             "rumantsch",
40491             "rm"
40492         ],
40493         [
40494             "Romani",
40495             "Romani",
40496             "rmy"
40497         ],
40498         [
40499             "Rundi",
40500             "Kirundi",
40501             "rn"
40502         ],
40503         [
40504             "Romanian",
40505             "română",
40506             "ro"
40507         ],
40508         [
40509             "Aromanian",
40510             "armãneashti",
40511             "roa-rup"
40512         ],
40513         [
40514             "tarandíne",
40515             "tarandíne",
40516             "roa-tara"
40517         ],
40518         [
40519             "Russian",
40520             "русский",
40521             "ru"
40522         ],
40523         [
40524             "Rusyn",
40525             "русиньскый",
40526             "rue"
40527         ],
40528         [
40529             "Kinyarwanda",
40530             "Kinyarwanda",
40531             "rw"
40532         ],
40533         [
40534             "Sanskrit",
40535             "संस्कृतम्",
40536             "sa"
40537         ],
40538         [
40539             "Sakha",
40540             "саха тыла",
40541             "sah"
40542         ],
40543         [
40544             "Sardinian",
40545             "sardu",
40546             "sc"
40547         ],
40548         [
40549             "Sicilian",
40550             "sicilianu",
40551             "scn"
40552         ],
40553         [
40554             "Scots",
40555             "Scots",
40556             "sco"
40557         ],
40558         [
40559             "Sindhi",
40560             "سنڌي",
40561             "sd"
40562         ],
40563         [
40564             "Northern Sami",
40565             "sámegiella",
40566             "se"
40567         ],
40568         [
40569             "Sango",
40570             "Sängö",
40571             "sg"
40572         ],
40573         [
40574             "Serbo-Croatian",
40575             "srpskohrvatski / српскохрватски",
40576             "sh"
40577         ],
40578         [
40579             "Sinhala",
40580             "සිංහල",
40581             "si"
40582         ],
40583         [
40584             "Simple English",
40585             "Simple English",
40586             "simple"
40587         ],
40588         [
40589             "Slovak",
40590             "slovenčina",
40591             "sk"
40592         ],
40593         [
40594             "Slovenian",
40595             "slovenščina",
40596             "sl"
40597         ],
40598         [
40599             "Samoan",
40600             "Gagana Samoa",
40601             "sm"
40602         ],
40603         [
40604             "Shona",
40605             "chiShona",
40606             "sn"
40607         ],
40608         [
40609             "Somali",
40610             "Soomaaliga",
40611             "so"
40612         ],
40613         [
40614             "Albanian",
40615             "shqip",
40616             "sq"
40617         ],
40618         [
40619             "Serbian",
40620             "српски / srpski",
40621             "sr"
40622         ],
40623         [
40624             "Sranan Tongo",
40625             "Sranantongo",
40626             "srn"
40627         ],
40628         [
40629             "Swati",
40630             "SiSwati",
40631             "ss"
40632         ],
40633         [
40634             "Southern Sotho",
40635             "Sesotho",
40636             "st"
40637         ],
40638         [
40639             "Saterland Frisian",
40640             "Seeltersk",
40641             "stq"
40642         ],
40643         [
40644             "Sundanese",
40645             "Basa Sunda",
40646             "su"
40647         ],
40648         [
40649             "Swedish",
40650             "svenska",
40651             "sv"
40652         ],
40653         [
40654             "Swahili",
40655             "Kiswahili",
40656             "sw"
40657         ],
40658         [
40659             "Silesian",
40660             "ślůnski",
40661             "szl"
40662         ],
40663         [
40664             "Tamil",
40665             "தமிழ்",
40666             "ta"
40667         ],
40668         [
40669             "Telugu",
40670             "తెలుగు",
40671             "te"
40672         ],
40673         [
40674             "Tetum",
40675             "tetun",
40676             "tet"
40677         ],
40678         [
40679             "Tajik",
40680             "тоҷикӣ",
40681             "tg"
40682         ],
40683         [
40684             "Thai",
40685             "ไทย",
40686             "th"
40687         ],
40688         [
40689             "Tigrinya",
40690             "ትግርኛ",
40691             "ti"
40692         ],
40693         [
40694             "Turkmen",
40695             "Türkmençe",
40696             "tk"
40697         ],
40698         [
40699             "Tagalog",
40700             "Tagalog",
40701             "tl"
40702         ],
40703         [
40704             "Tswana",
40705             "Setswana",
40706             "tn"
40707         ],
40708         [
40709             "Tongan",
40710             "lea faka-Tonga",
40711             "to"
40712         ],
40713         [
40714             "Tok Pisin",
40715             "Tok Pisin",
40716             "tpi"
40717         ],
40718         [
40719             "Turkish",
40720             "Türkçe",
40721             "tr"
40722         ],
40723         [
40724             "Tsonga",
40725             "Xitsonga",
40726             "ts"
40727         ],
40728         [
40729             "Tatar",
40730             "татарча/tatarça",
40731             "tt"
40732         ],
40733         [
40734             "Tumbuka",
40735             "chiTumbuka",
40736             "tum"
40737         ],
40738         [
40739             "Twi",
40740             "Twi",
40741             "tw"
40742         ],
40743         [
40744             "Tahitian",
40745             "reo tahiti",
40746             "ty"
40747         ],
40748         [
40749             "Tuvinian",
40750             "тыва дыл",
40751             "tyv"
40752         ],
40753         [
40754             "Udmurt",
40755             "удмурт",
40756             "udm"
40757         ],
40758         [
40759             "Uyghur",
40760             "ئۇيغۇرچە / Uyghurche",
40761             "ug"
40762         ],
40763         [
40764             "Ukrainian",
40765             "українська",
40766             "uk"
40767         ],
40768         [
40769             "Urdu",
40770             "اردو",
40771             "ur"
40772         ],
40773         [
40774             "Uzbek",
40775             "oʻzbekcha/ўзбекча",
40776             "uz"
40777         ],
40778         [
40779             "Venda",
40780             "Tshivenda",
40781             "ve"
40782         ],
40783         [
40784             "Venetian",
40785             "vèneto",
40786             "vec"
40787         ],
40788         [
40789             "Veps",
40790             "vepsän kel’",
40791             "vep"
40792         ],
40793         [
40794             "Vietnamese",
40795             "Tiếng Việt",
40796             "vi"
40797         ],
40798         [
40799             "West Flemish",
40800             "West-Vlams",
40801             "vls"
40802         ],
40803         [
40804             "Volapük",
40805             "Volapük",
40806             "vo"
40807         ],
40808         [
40809             "Walloon",
40810             "walon",
40811             "wa"
40812         ],
40813         [
40814             "Waray",
40815             "Winaray",
40816             "war"
40817         ],
40818         [
40819             "Wolof",
40820             "Wolof",
40821             "wo"
40822         ],
40823         [
40824             "Wu Chinese",
40825             "吴语",
40826             "wuu"
40827         ],
40828         [
40829             "Kalmyk",
40830             "хальмг",
40831             "xal"
40832         ],
40833         [
40834             "Xhosa",
40835             "isiXhosa",
40836             "xh"
40837         ],
40838         [
40839             "Mingrelian",
40840             "მარგალური",
40841             "xmf"
40842         ],
40843         [
40844             "Yiddish",
40845             "ייִדיש",
40846             "yi"
40847         ],
40848         [
40849             "Yoruba",
40850             "Yorùbá",
40851             "yo"
40852         ],
40853         [
40854             "Zhuang",
40855             "Vahcuengh",
40856             "za"
40857         ],
40858         [
40859             "Zeelandic",
40860             "Zeêuws",
40861             "zea"
40862         ],
40863         [
40864             "Chinese",
40865             "中文",
40866             "zh"
40867         ],
40868         [
40869             "Classical Chinese",
40870             "文言",
40871             "zh-classical"
40872         ],
40873         [
40874             "Chinese (Min Nan)",
40875             "Bân-lâm-gú",
40876             "zh-min-nan"
40877         ],
40878         [
40879             "Cantonese",
40880             "粵語",
40881             "zh-yue"
40882         ],
40883         [
40884             "Zulu",
40885             "isiZulu",
40886             "zu"
40887         ]
40888     ],
40889     "imperial": {
40890         "type": "FeatureCollection",
40891         "features": [
40892             {
40893                 "type": "Feature",
40894                 "properties": {
40895                     "id": 0
40896                 },
40897                 "geometry": {
40898                     "type": "MultiPolygon",
40899                     "coordinates": [
40900                         [
40901                             [
40902                                 [
40903                                     -1.426496,
40904                                     50.639342
40905                                 ],
40906                                 [
40907                                     -1.445953,
40908                                     50.648139
40909                                 ],
40910                                 [
40911                                     -1.452789,
40912                                     50.654283
40913                                 ],
40914                                 [
40915                                     -1.485951,
40916                                     50.669338
40917                                 ],
40918                                 [
40919                                     -1.497426,
40920                                     50.672309
40921                                 ],
40922                                 [
40923                                     -1.535146,
40924                                     50.669379
40925                                 ],
40926                                 [
40927                                     -1.551503,
40928                                     50.665107
40929                                 ],
40930                                 [
40931                                     -1.569488,
40932                                     50.658026
40933                                 ],
40934                                 [
40935                                     -1.545318,
40936                                     50.686103
40937                                 ],
40938                                 [
40939                                     -1.50593,
40940                                     50.707709
40941                                 ],
40942                                 [
40943                                     -1.418691,
40944                                     50.733791
40945                                 ],
40946                                 [
40947                                     -1.420888,
40948                                     50.730455
40949                                 ],
40950                                 [
40951                                     -1.423451,
40952                                     50.7237
40953                                 ],
40954                                 [
40955                                     -1.425364,
40956                                     50.72012
40957                                 ],
40958                                 [
40959                                     -1.400868,
40960                                     50.721991
40961                                 ],
40962                                 [
40963                                     -1.377553,
40964                                     50.734198
40965                                 ],
40966                                 [
40967                                     -1.343495,
40968                                     50.761054
40969                                 ],
40970                                 [
40971                                     -1.318512,
40972                                     50.772162
40973                                 ],
40974                                 [
40975                                     -1.295766,
40976                                     50.773179
40977                                 ],
40978                                 [
40979                                     -1.144276,
40980                                     50.733791
40981                                 ],
40982                                 [
40983                                     -1.119537,
40984                                     50.734198
40985                                 ],
40986                                 [
40987                                     -1.10912,
40988                                     50.732856
40989                                 ],
40990                                 [
40991                                     -1.097035,
40992                                     50.726955
40993                                 ],
40994                                 [
40995                                     -1.096425,
40996                                     50.724433
40997                                 ],
40998                                 [
40999                                     -1.097646,
41000                                     50.71601
41001                                 ],
41002                                 [
41003                                     -1.097035,
41004                                     50.713324
41005                                 ],
41006                                 [
41007                                     -1.094228,
41008                                     50.712633
41009                                 ],
41010                                 [
41011                                     -1.085561,
41012                                     50.714016
41013                                 ],
41014                                 [
41015                                     -1.082753,
41016                                     50.713324
41017                                 ],
41018                                 [
41019                                     -1.062327,
41020                                     50.692816
41021                                 ],
41022                                 [
41023                                     -1.062327,
41024                                     50.685289
41025                                 ],
41026                                 [
41027                                     -1.066965,
41028                                     50.685248
41029                                 ],
41030                                 [
41031                                     -1.069651,
41032                                     50.683498
41033                                 ],
41034                                 [
41035                                     -1.071889,
41036                                     50.680976
41037                                 ],
41038                                 [
41039                                     -1.075307,
41040                                     50.678534
41041                                 ],
41042                                 [
41043                                     -1.112701,
41044                                     50.671454
41045                                 ],
41046                                 [
41047                                     -1.128651,
41048                                     50.666449
41049                                 ],
41050                                 [
41051                                     -1.156361,
41052                                     50.650784
41053                                 ],
41054                                 [
41055                                     -1.162221,
41056                                     50.645982
41057                                 ],
41058                                 [
41059                                     -1.164703,
41060                                     50.640937
41061                                 ],
41062                                 [
41063                                     -1.164666,
41064                                     50.639543
41065                                 ],
41066                                 [
41067                                     -1.426496,
41068                                     50.639342
41069                                 ]
41070                             ]
41071                         ],
41072                         [
41073                             [
41074                                 [
41075                                     -7.240314,
41076                                     55.050389
41077                                 ],
41078                                 [
41079                                     -7.013736,
41080                                     55.1615
41081                                 ],
41082                                 [
41083                                     -6.958913,
41084                                     55.20349
41085                                 ],
41086                                 [
41087                                     -6.571562,
41088                                     55.268366
41089                                 ],
41090                                 [
41091                                     -6.509633,
41092                                     55.31398
41093                                 ],
41094                                 [
41095                                     -6.226158,
41096                                     55.344406
41097                                 ],
41098                                 [
41099                                     -6.07105,
41100                                     55.25001
41101                                 ],
41102                                 [
41103                                     -5.712696,
41104                                     55.017635
41105                                 ],
41106                                 [
41107                                     -5.242021,
41108                                     54.415204
41109                                 ],
41110                                 [
41111                                     -5.695554,
41112                                     54.14284
41113                                 ],
41114                                 [
41115                                     -5.72473,
41116                                     54.07455
41117                                 ],
41118                                 [
41119                                     -6.041633,
41120                                     54.006238
41121                                 ],
41122                                 [
41123                                     -6.153953,
41124                                     54.054931
41125                                 ],
41126                                 [
41127                                     -6.220539,
41128                                     54.098803
41129                                 ],
41130                                 [
41131                                     -6.242502,
41132                                     54.099758
41133                                 ],
41134                                 [
41135                                     -6.263661,
41136                                     54.104682
41137                                 ],
41138                                 [
41139                                     -6.269887,
41140                                     54.097927
41141                                 ],
41142                                 [
41143                                     -6.28465,
41144                                     54.105226
41145                                 ],
41146                                 [
41147                                     -6.299585,
41148                                     54.104037
41149                                 ],
41150                                 [
41151                                     -6.313796,
41152                                     54.099696
41153                                 ],
41154                                 [
41155                                     -6.327128,
41156                                     54.097888
41157                                 ],
41158                                 [
41159                                     -6.338962,
41160                                     54.102952
41161                                 ],
41162                                 [
41163                                     -6.346662,
41164                                     54.109877
41165                                 ],
41166                                 [
41167                                     -6.354827,
41168                                     54.110652
41169                                 ],
41170                                 [
41171                                     -6.368108,
41172                                     54.097319
41173                                 ],
41174                                 [
41175                                     -6.369348,
41176                                     54.091118
41177                                 ],
41178                                 [
41179                                     -6.367643,
41180                                     54.083418
41181                                 ],
41182                                 [
41183                                     -6.366919,
41184                                     54.075098
41185                                 ],
41186                                 [
41187                                     -6.371157,
41188                                     54.066778
41189                                 ],
41190                                 [
41191                                     -6.377513,
41192                                     54.063264
41193                                 ],
41194                                 [
41195                                     -6.401026,
41196                                     54.060887
41197                                 ],
41198                                 [
41199                                     -6.426761,
41200                                     54.05541
41201                                 ],
41202                                 [
41203                                     -6.433892,
41204                                     54.055306
41205                                 ],
41206                                 [
41207                                     -6.4403,
41208                                     54.057993
41209                                 ],
41210                                 [
41211                                     -6.446243,
41212                                     54.062438
41213                                 ],
41214                                 [
41215                                     -6.450222,
41216                                     54.066675
41217                                 ],
41218                                 [
41219                                     -6.450894,
41220                                     54.068432
41221                                 ],
41222                                 [
41223                                     -6.47854,
41224                                     54.067709
41225                                 ],
41226                                 [
41227                                     -6.564013,
41228                                     54.04895
41229                                 ],
41230                                 [
41231                                     -6.571868,
41232                                     54.049519
41233                                 ],
41234                                 [
41235                                     -6.587164,
41236                                     54.053343
41237                                 ],
41238                                 [
41239                                     -6.595071,
41240                                     54.052412
41241                                 ],
41242                                 [
41243                                     -6.60029,
41244                                     54.04895
41245                                 ],
41246                                 [
41247                                     -6.605217,
41248                                     54.044475
41249                                 ],
41250                                 [
41251                                     -6.610987,
41252                                     54.039235
41253                                 ],
41254                                 [
41255                                     -6.616465,
41256                                     54.037271
41257                                 ],
41258                                 [
41259                                     -6.630624,
41260                                     54.041819
41261                                 ],
41262                                 [
41263                                     -6.657289,
41264                                     54.061146
41265                                 ],
41266                                 [
41267                                     -6.672534,
41268                                     54.068432
41269                                 ],
41270                                 [
41271                                     -6.657082,
41272                                     54.091945
41273                                 ],
41274                                 [
41275                                     -6.655791,
41276                                     54.103314
41277                                 ],
41278                                 [
41279                                     -6.666436,
41280                                     54.114786
41281                                 ],
41282                                 [
41283                                     -6.643957,
41284                                     54.131839
41285                                 ],
41286                                 [
41287                                     -6.634552,
41288                                     54.150133
41289                                 ],
41290                                 [
41291                                     -6.640339,
41292                                     54.168013
41293                                 ],
41294                                 [
41295                                     -6.648448,
41296                                     54.173665
41297                                 ],
41298                                 [
41299                                     -6.663025,
41300                                     54.183826
41301                                 ],
41302                                 [
41303                                     -6.683954,
41304                                     54.194368
41305                                 ],
41306                                 [
41307                                     -6.694651,
41308                                     54.197985
41309                                 ],
41310                                 [
41311                                     -6.706537,
41312                                     54.198915
41313                                 ],
41314                                 [
41315                                     -6.717234,
41316                                     54.195143
41317                                 ],
41318                                 [
41319                                     -6.724779,
41320                                     54.188631
41321                                 ],
41322                                 [
41323                                     -6.73284,
41324                                     54.183567
41325                                 ],
41326                                 [
41327                                     -6.744777,
41328                                     54.184187
41329                                 ],
41330                                 [
41331                                     -6.766481,
41332                                     54.192352
41333                                 ],
41334                                 [
41335                                     -6.787824,
41336                                     54.202998
41337                                 ],
41338                                 [
41339                                     -6.807358,
41340                                     54.21633
41341                                 ],
41342                                 [
41343                                     -6.823946,
41344                                     54.23235
41345                                 ],
41346                                 [
41347                                     -6.829733,
41348                                     54.242375
41349                                 ],
41350                                 [
41351                                     -6.833196,
41352                                     54.25209
41353                                 ],
41354                                 [
41355                                     -6.837743,
41356                                     54.260513
41357                                 ],
41358                                 [
41359                                     -6.846683,
41360                                     54.266456
41361                                 ],
41362                                 [
41363                                     -6.882185,
41364                                     54.277257
41365                                 ],
41366                                 [
41367                                     -6.864667,
41368                                     54.282734
41369                                 ],
41370                                 [
41371                                     -6.856657,
41372                                     54.292811
41373                                 ],
41374                                 [
41375                                     -6.858414,
41376                                     54.307332
41377                                 ],
41378                                 [
41379                                     -6.870015,
41380                                     54.326001
41381                                 ],
41382                                 [
41383                                     -6.879705,
41384                                     54.341594
41385                                 ],
41386                                 [
41387                                     -6.885957,
41388                                     54.345624
41389                                 ],
41390                                 [
41391                                     -6.897895,
41392                                     54.346193
41393                                 ],
41394                                 [
41395                                     -6.905956,
41396                                     54.349035
41397                                 ],
41398                                 [
41399                                     -6.915051,
41400                                     54.365933
41401                                 ],
41402                                 [
41403                                     -6.922028,
41404                                     54.372703
41405                                 ],
41406                                 [
41407                                     -6.984091,
41408                                     54.403089
41409                                 ],
41410                                 [
41411                                     -7.017836,
41412                                     54.413166
41413                                 ],
41414                                 [
41415                                     -7.049255,
41416                                     54.411512
41417                                 ],
41418                                 [
41419                                     -7.078504,
41420                                     54.394717
41421                                 ],
41422                                 [
41423                                     -7.127028,
41424                                     54.349759
41425                                 ],
41426                                 [
41427                                     -7.159894,
41428                                     54.335186
41429                                 ],
41430                                 [
41431                                     -7.168059,
41432                                     54.335031
41433                                 ],
41434                                 [
41435                                     -7.185629,
41436                                     54.336943
41437                                 ],
41438                                 [
41439                                     -7.18947,
41440                                     54.335692
41441                                 ],
41442                                 [
41443                                     -7.19245,
41444                                     54.334721
41445                                 ],
41446                                 [
41447                                     -7.193949,
41448                                     54.329967
41449                                 ],
41450                                 [
41451                                     -7.191468,
41452                                     54.323869
41453                                 ],
41454                                 [
41455                                     -7.187644,
41456                                     54.318804
41457                                 ],
41458                                 [
41459                                     -7.185009,
41460                                     54.317254
41461                                 ],
41462                                 [
41463                                     -7.184647,
41464                                     54.316634
41465                                 ],
41466                                 [
41467                                     -7.192399,
41468                                     54.307384
41469                                 ],
41470                                 [
41471                                     -7.193691,
41472                                     54.307539
41473                                 ],
41474                                 [
41475                                     -7.199168,
41476                                     54.303457
41477                                 ],
41478                                 [
41479                                     -7.206661,
41480                                     54.304903
41481                                 ],
41482                                 [
41483                                     -7.211467,
41484                                     54.30418
41485                                 ],
41486                                 [
41487                                     -7.209038,
41488                                     54.293431
41489                                 ],
41490                                 [
41491                                     -7.1755,
41492                                     54.283664
41493                                 ],
41494                                 [
41495                                     -7.181495,
41496                                     54.269763
41497                                 ],
41498                                 [
41499                                     -7.14589,
41500                                     54.25209
41501                                 ],
41502                                 [
41503                                     -7.159739,
41504                                     54.24067
41505                                 ],
41506                                 [
41507                                     -7.153331,
41508                                     54.224237
41509                                 ],
41510                                 [
41511                                     -7.174725,
41512                                     54.216072
41513                                 ],
41514                                 [
41515                                     -7.229502,
41516                                     54.207545
41517                                 ],
41518                                 [
41519                                     -7.240871,
41520                                     54.202326
41521                                 ],
41522                                 [
41523                                     -7.249088,
41524                                     54.197416
41525                                 ],
41526                                 [
41527                                     -7.255496,
41528                                     54.190854
41529                                 ],
41530                                 [
41531                                     -7.261128,
41532                                     54.18088
41533                                 ],
41534                                 [
41535                                     -7.256322,
41536                                     54.176901
41537                                 ],
41538                                 [
41539                                     -7.247021,
41540                                     54.17225
41541                                 ],
41542                                 [
41543                                     -7.24578,
41544                                     54.166979
41545                                 ],
41546                                 [
41547                                     -7.265366,
41548                                     54.16114
41549                                 ],
41550                                 [
41551                                     -7.26087,
41552                                     54.151166
41553                                 ],
41554                                 [
41555                                     -7.263505,
41556                                     54.140986
41557                                 ],
41558                                 [
41559                                     -7.27074,
41560                                     54.132253
41561                                 ],
41562                                 [
41563                                     -7.280042,
41564                                     54.126155
41565                                 ],
41566                                 [
41567                                     -7.293788,
41568                                     54.122021
41569                                 ],
41570                                 [
41571                                     -7.297353,
41572                                     54.125896
41573                                 ],
41574                                 [
41575                                     -7.29632,
41576                                     54.134991
41577                                 ],
41578                                 [
41579                                     -7.296423,
41580                                     54.146515
41581                                 ],
41582                                 [
41583                                     -7.295028,
41584                                     54.155404
41585                                 ],
41586                                 [
41587                                     -7.292134,
41588                                     54.162638
41589                                 ],
41590                                 [
41591                                     -7.295545,
41592                                     54.165119
41593                                 ],
41594                                 [
41595                                     -7.325982,
41596                                     54.154577
41597                                 ],
41598                                 [
41599                                     -7.333165,
41600                                     54.149409
41601                                 ],
41602                                 [
41603                                     -7.333165,
41604                                     54.142743
41605                                 ],
41606                                 [
41607                                     -7.310324,
41608                                     54.114683
41609                                 ],
41610                                 [
41611                                     -7.316489,
41612                                     54.11428
41613                                 ],
41614                                 [
41615                                     -7.326964,
41616                                     54.113597
41617                                 ],
41618                                 [
41619                                     -7.375488,
41620                                     54.123312
41621                                 ],
41622                                 [
41623                                     -7.390216,
41624                                     54.121194
41625                                 ],
41626                                 [
41627                                     -7.39466,
41628                                     54.121917
41629                                 ],
41630                                 [
41631                                     -7.396624,
41632                                     54.126258
41633                                 ],
41634                                 [
41635                                     -7.403962,
41636                                     54.135043
41637                                 ],
41638                                 [
41639                                     -7.41223,
41640                                     54.136438
41641                                 ],
41642                                 [
41643                                     -7.422255,
41644                                     54.135456
41645                                 ],
41646                                 [
41647                                     -7.425769,
41648                                     54.136955
41649                                 ],
41650                                 [
41651                                     -7.414659,
41652                                     54.145688
41653                                 ],
41654                                 [
41655                                     -7.439619,
41656                                     54.146929
41657                                 ],
41658                                 [
41659                                     -7.480753,
41660                                     54.127653
41661                                 ],
41662                                 [
41663                                     -7.502302,
41664                                     54.125121
41665                                 ],
41666                                 [
41667                                     -7.609014,
41668                                     54.139901
41669                                 ],
41670                                 [
41671                                     -7.620796,
41672                                     54.144965
41673                                 ],
41674                                 [
41675                                     -7.624052,
41676                                     54.153336
41677                                 ],
41678                                 [
41679                                     -7.625706,
41680                                     54.162173
41681                                 ],
41682                                 [
41683                                     -7.632682,
41684                                     54.168529
41685                                 ],
41686                                 [
41687                                     -7.70477,
41688                                     54.200362
41689                                 ],
41690                                 [
41691                                     -7.722599,
41692                                     54.202326
41693                                 ],
41694                                 [
41695                                     -7.782078,
41696                                     54.2
41697                                 ],
41698                                 [
41699                                     -7.836959,
41700                                     54.204341
41701                                 ],
41702                                 [
41703                                     -7.856441,
41704                                     54.211421
41705                                 ],
41706                                 [
41707                                     -7.86967,
41708                                     54.226872
41709                                 ],
41710                                 [
41711                                     -7.873649,
41712                                     54.271055
41713                                 ],
41714                                 [
41715                                     -7.880264,
41716                                     54.287023
41717                                 ],
41718                                 [
41719                                     -7.894966,
41720                                     54.293586
41721                                 ],
41722                                 [
41723                                     -7.93411,
41724                                     54.297049
41725                                 ],
41726                                 [
41727                                     -7.942075,
41728                                     54.298873
41729                                 ],
41730                                 [
41731                                     -7.950802,
41732                                     54.300873
41733                                 ],
41734                                 [
41735                                     -7.96801,
41736                                     54.31219
41737                                 ],
41738                                 [
41739                                     -7.981033,
41740                                     54.326556
41741                                 ],
41742                                 [
41743                                     -8.002194,
41744                                     54.357923
41745                                 ],
41746                                 [
41747                                     -8.03134,
41748                                     54.358027
41749                                 ],
41750                                 [
41751                                     -8.05648,
41752                                     54.365882
41753                                 ],
41754                                 [
41755                                     -8.079941,
41756                                     54.380196
41757                                 ],
41758                                 [
41759                                     -8.122419,
41760                                     54.415233
41761                                 ],
41762                                 [
41763                                     -8.146346,
41764                                     54.430736
41765                                 ],
41766                                 [
41767                                     -8.156035,
41768                                     54.439055
41769                                 ],
41770                                 [
41771                                     -8.158128,
41772                                     54.447117
41773                                 ],
41774                                 [
41775                                     -8.161177,
41776                                     54.454817
41777                                 ],
41778                                 [
41779                                     -8.173837,
41780                                     54.461741
41781                                 ],
41782                                 [
41783                                     -8.168467,
41784                                     54.463477
41785                                 ],
41786                                 [
41787                                     -8.15017,
41788                                     54.46939
41789                                 ],
41790                                 [
41791                                     -8.097046,
41792                                     54.478588
41793                                 ],
41794                                 [
41795                                     -8.072448,
41796                                     54.487063
41797                                 ],
41798                                 [
41799                                     -8.060976,
41800                                     54.493316
41801                                 ],
41802                                 [
41803                                     -8.05586,
41804                                     54.497553
41805                                 ],
41806                                 [
41807                                     -8.043561,
41808                                     54.512229
41809                                 ],
41810                                 [
41811                                     -8.023278,
41812                                     54.529696
41813                                 ],
41814                                 [
41815                                     -8.002194,
41816                                     54.543442
41817                                 ],
41818                                 [
41819                                     -7.926411,
41820                                     54.533055
41821                                 ],
41822                                 [
41823                                     -7.887137,
41824                                     54.532125
41825                                 ],
41826                                 [
41827                                     -7.848844,
41828                                     54.54091
41829                                 ],
41830                                 [
41831                                     -7.749264,
41832                                     54.596152
41833                                 ],
41834                                 [
41835                                     -7.707871,
41836                                     54.604162
41837                                 ],
41838                                 [
41839                                     -7.707944,
41840                                     54.604708
41841                                 ],
41842                                 [
41843                                     -7.707951,
41844                                     54.604763
41845                                 ],
41846                                 [
41847                                     -7.710558,
41848                                     54.624264
41849                                 ],
41850                                 [
41851                                     -7.721204,
41852                                     54.625866
41853                                 ],
41854                                 [
41855                                     -7.736758,
41856                                     54.619251
41857                                 ],
41858                                 [
41859                                     -7.753553,
41860                                     54.614497
41861                                 ],
41862                                 [
41863                                     -7.769159,
41864                                     54.618011
41865                                 ],
41866                                 [
41867                                     -7.801199,
41868                                     54.634806
41869                                 ],
41870                                 [
41871                                     -7.814996,
41872                                     54.639457
41873                                 ],
41874                                 [
41875                                     -7.822541,
41876                                     54.638113
41877                                 ],
41878                                 [
41879                                     -7.838044,
41880                                     54.63124
41881                                 ],
41882                                 [
41883                                     -7.846416,
41884                                     54.631447
41885                                 ],
41886                                 [
41887                                     -7.85427,
41888                                     54.636408
41889                                 ],
41890                                 [
41891                                     -7.864347,
41892                                     54.649069
41893                                 ],
41894                                 [
41895                                     -7.872771,
41896                                     54.652221
41897                                 ],
41898                                 [
41899                                     -7.890082,
41900                                     54.655063
41901                                 ],
41902                                 [
41903                                     -7.906619,
41904                                     54.661316
41905                                 ],
41906                                 [
41907                                     -7.914835,
41908                                     54.671651
41909                                 ],
41910                                 [
41911                                     -7.907135,
41912                                     54.686689
41913                                 ],
41914                                 [
41915                                     -7.913233,
41916                                     54.688653
41917                                 ],
41918                                 [
41919                                     -7.929666,
41920                                     54.696714
41921                                 ],
41922                                 [
41923                                     -7.880109,
41924                                     54.711029
41925                                 ],
41926                                 [
41927                                     -7.845899,
41928                                     54.731027
41929                                 ],
41930                                 [
41931                                     -7.832153,
41932                                     54.730614
41933                                 ],
41934                                 [
41935                                     -7.803576,
41936                                     54.716145
41937                                 ],
41938                                 [
41939                                     -7.770503,
41940                                     54.706016
41941                                 ],
41942                                 [
41943                                     -7.736603,
41944                                     54.707463
41945                                 ],
41946                                 [
41947                                     -7.70229,
41948                                     54.718883
41949                                 ],
41950                                 [
41951                                     -7.667512,
41952                                     54.738779
41953                                 ],
41954                                 [
41955                                     -7.649683,
41956                                     54.744877
41957                                 ],
41958                                 [
41959                                     -7.61537,
41960                                     54.739347
41961                                 ],
41962                                 [
41963                                     -7.585398,
41964                                     54.744722
41965                                 ],
41966                                 [
41967                                     -7.566639,
41968                                     54.738675
41969                                 ],
41970                                 [
41971                                     -7.556149,
41972                                     54.738365
41973                                 ],
41974                                 [
41975                                     -7.543075,
41976                                     54.741673
41977                                 ],
41978                                 [
41979                                     -7.543023,
41980                                     54.743791
41981                                 ],
41982                                 [
41983                                     -7.548398,
41984                                     54.747202
41985                                 ],
41986                                 [
41987                                     -7.551705,
41988                                     54.754695
41989                                 ],
41990                                 [
41991                                     -7.549741,
41992                                     54.779603
41993                                 ],
41994                                 [
41995                                     -7.543385,
41996                                     54.793091
41997                                 ],
41998                                 [
41999                                     -7.470831,
42000                                     54.845284
42001                                 ],
42002                                 [
42003                                     -7.45507,
42004                                     54.863009
42005                                 ],
42006                                 [
42007                                     -7.444735,
42008                                     54.884455
42009                                 ],
42010                                 [
42011                                     -7.444735,
42012                                     54.894893
42013                                 ],
42014                                 [
42015                                     -7.448972,
42016                                     54.920318
42017                                 ],
42018                                 [
42019                                     -7.445251,
42020                                     54.932152
42021                                 ],
42022                                 [
42023                                     -7.436983,
42024                                     54.938301
42025                                 ],
42026                                 [
42027                                     -7.417139,
42028                                     54.943056
42029                                 ],
42030                                 [
42031                                     -7.415755,
42032                                     54.944372
42033                                 ],
42034                                 [
42035                                     -7.408665,
42036                                     54.951117
42037                                 ],
42038                                 [
42039                                     -7.407424,
42040                                     54.959437
42041                                 ],
42042                                 [
42043                                     -7.413109,
42044                                     54.984965
42045                                 ],
42046                                 [
42047                                     -7.409078,
42048                                     54.992045
42049                                 ],
42050                                 [
42051                                     -7.403755,
42052                                     54.99313
42053                                 ],
42054                                 [
42055                                     -7.40112,
42056                                     54.994836
42057                                 ],
42058                                 [
42059                                     -7.405254,
42060                                     55.003569
42061                                 ],
42062                                 [
42063                                     -7.376987,
42064                                     55.02889
42065                                 ],
42066                                 [
42067                                     -7.366962,
42068                                     55.035557
42069                                 ],
42070                                 [
42071                                     -7.355024,
42072                                     55.040931
42073                                 ],
42074                                 [
42075                                     -7.291152,
42076                                     55.046615
42077                                 ],
42078                                 [
42079                                     -7.282987,
42080                                     55.051835
42081                                 ],
42082                                 [
42083                                     -7.275288,
42084                                     55.058863
42085                                 ],
42086                                 [
42087                                     -7.266503,
42088                                     55.065167
42089                                 ],
42090                                 [
42091                                     -7.247097,
42092                                     55.069328
42093                                 ],
42094                                 [
42095                                     -7.2471,
42096                                     55.069322
42097                                 ],
42098                                 [
42099                                     -7.256744,
42100                                     55.050686
42101                                 ],
42102                                 [
42103                                     -7.240956,
42104                                     55.050279
42105                                 ],
42106                                 [
42107                                     -7.240314,
42108                                     55.050389
42109                                 ]
42110                             ]
42111                         ],
42112                         [
42113                             [
42114                                 [
42115                                     -13.688588,
42116                                     57.596259
42117                                 ],
42118                                 [
42119                                     -13.690419,
42120                                     57.596259
42121                                 ],
42122                                 [
42123                                     -13.691314,
42124                                     57.596503
42125                                 ],
42126                                 [
42127                                     -13.691314,
42128                                     57.597154
42129                                 ],
42130                                 [
42131                                     -13.690419,
42132                                     57.597805
42133                                 ],
42134                                 [
42135                                     -13.688588,
42136                                     57.597805
42137                                 ],
42138                                 [
42139                                     -13.687652,
42140                                     57.597154
42141                                 ],
42142                                 [
42143                                     -13.687652,
42144                                     57.596869
42145                                 ],
42146                                 [
42147                                     -13.688588,
42148                                     57.596259
42149                                 ]
42150                             ]
42151                         ],
42152                         [
42153                             [
42154                                 [
42155                                     -4.839121,
42156                                     54.469789
42157                                 ],
42158                                 [
42159                                     -4.979941,
42160                                     54.457977
42161                                 ],
42162                                 [
42163                                     -5.343644,
42164                                     54.878637
42165                                 ],
42166                                 [
42167                                     -5.308469,
42168                                     55.176452
42169                                 ],
42170                                 [
42171                                     -6.272566,
42172                                     55.418443
42173                                 ],
42174                                 [
42175                                     -8.690528,
42176                                     57.833706
42177                                 ],
42178                                 [
42179                                     -6.344705,
42180                                     59.061083
42181                                 ],
42182                                 [
42183                                     -4.204785,
42184                                     58.63305
42185                                 ],
42186                                 [
42187                                     -2.31566,
42188                                     60.699068
42189                                 ],
42190                                 [
42191                                     -1.695335,
42192                                     60.76432
42193                                 ],
42194                                 [
42195                                     -1.58092,
42196                                     60.866001
42197                                 ],
42198                                 [
42199                                     -0.17022,
42200                                     60.897204
42201                                 ],
42202                                 [
42203                                     -0.800508,
42204                                     59.770037
42205                                 ],
42206                                 [
42207                                     -1.292368,
42208                                     57.732574
42209                                 ],
42210                                 [
42211                                     -1.850077,
42212                                     55.766368
42213                                 ],
42214                                 [
42215                                     -1.73054,
42216                                     55.782219
42217                                 ],
42218                                 [
42219                                     1.892395,
42220                                     52.815229
42221                                 ],
42222                                 [
42223                                     1.742775,
42224                                     51.364209
42225                                 ],
42226                                 [
42227                                     1.080173,
42228                                     50.847526
42229                                 ],
42230                                 [
42231                                     0.000774,
42232                                     50.664982
42233                                 ],
42234                                 [
42235                                     -0.162997,
42236                                     50.752401
42237                                 ],
42238                                 [
42239                                     -0.725152,
42240                                     50.731879
42241                                 ],
42242                                 [
42243                                     -0.768853,
42244                                     50.741516
42245                                 ],
42246                                 [
42247                                     -0.770985,
42248                                     50.736884
42249                                 ],
42250                                 [
42251                                     -0.789947,
42252                                     50.730048
42253                                 ],
42254                                 [
42255                                     -0.812815,
42256                                     50.734768
42257                                 ],
42258                                 [
42259                                     -0.877742,
42260                                     50.761156
42261                                 ],
42262                                 [
42263                                     -0.942879,
42264                                     50.758338
42265                                 ],
42266                                 [
42267                                     -0.992581,
42268                                     50.737379
42269                                 ],
42270                                 [
42271                                     -1.18513,
42272                                     50.766989
42273                                 ],
42274                                 [
42275                                     -1.282741,
42276                                     50.792353
42277                                 ],
42278                                 [
42279                                     -1.375004,
42280                                     50.772063
42281                                 ],
42282                                 [
42283                                     -1.523427,
42284                                     50.719605
42285                                 ],
42286                                 [
42287                                     -1.630649,
42288                                     50.695128
42289                                 ],
42290                                 [
42291                                     -1.663617,
42292                                     50.670508
42293                                 ],
42294                                 [
42295                                     -1.498021,
42296                                     50.40831
42297                                 ],
42298                                 [
42299                                     -4.097427,
42300                                     49.735486
42301                                 ],
42302                                 [
42303                                     -6.825199,
42304                                     49.700905
42305                                 ],
42306                                 [
42307                                     -5.541541,
42308                                     51.446591
42309                                 ],
42310                                 [
42311                                     -6.03361,
42312                                     51.732369
42313                                 ],
42314                                 [
42315                                     -4.791746,
42316                                     52.635365
42317                                 ],
42318                                 [
42319                                     -4.969244,
42320                                     52.637413
42321                                 ],
42322                                 [
42323                                     -5.049473,
42324                                     53.131209
42325                                 ],
42326                                 [
42327                                     -4.787393,
42328                                     53.409491
42329                                 ],
42330                                 [
42331                                     -4.734148,
42332                                     53.424866
42333                                 ],
42334                                 [
42335                                     -4.917096,
42336                                     53.508212
42337                                 ],
42338                                 [
42339                                     -4.839121,
42340                                     54.469789
42341                                 ]
42342                             ]
42343                         ]
42344                     ]
42345                 }
42346             },
42347             {
42348                 "type": "Feature",
42349                 "properties": {
42350                     "id": 0
42351                 },
42352                 "geometry": {
42353                     "type": "MultiPolygon",
42354                     "coordinates": [
42355                         [
42356                             [
42357                                 [
42358                                     -157.018938,
42359                                     19.300864
42360                                 ],
42361                                 [
42362                                     -179.437336,
42363                                     27.295312
42364                                 ],
42365                                 [
42366                                     -179.480084,
42367                                     28.991459
42368                                 ],
42369                                 [
42370                                     -168.707465,
42371                                     26.30325
42372                                 ],
42373                                 [
42374                                     -163.107414,
42375                                     24.60499
42376                                 ],
42377                                 [
42378                                     -153.841679,
42379                                     20.079306
42380                                 ],
42381                                 [
42382                                     -154.233846,
42383                                     19.433391
42384                                 ],
42385                                 [
42386                                     -153.61725,
42387                                     18.900587
42388                                 ],
42389                                 [
42390                                     -154.429471,
42391                                     18.171036
42392                                 ],
42393                                 [
42394                                     -156.780638,
42395                                     18.718492
42396                                 ],
42397                                 [
42398                                     -157.018938,
42399                                     19.300864
42400                                 ]
42401                             ]
42402                         ],
42403                         [
42404                             [
42405                                 [
42406                                     -78.91269,
42407                                     43.037032
42408                                 ],
42409                                 [
42410                                     -78.964351,
42411                                     42.976393
42412                                 ],
42413                                 [
42414                                     -78.981718,
42415                                     42.979043
42416                                 ],
42417                                 [
42418                                     -78.998055,
42419                                     42.991111
42420                                 ],
42421                                 [
42422                                     -79.01189,
42423                                     43.004358
42424                                 ],
42425                                 [
42426                                     -79.022046,
42427                                     43.010539
42428                                 ],
42429                                 [
42430                                     -79.023076,
42431                                     43.017015
42432                                 ],
42433                                 [
42434                                     -79.00983,
42435                                     43.050867
42436                                 ],
42437                                 [
42438                                     -79.011449,
42439                                     43.065291
42440                                 ],
42441                                 [
42442                                     -78.993051,
42443                                     43.066174
42444                                 ],
42445                                 [
42446                                     -78.975536,
42447                                     43.069707
42448                                 ],
42449                                 [
42450                                     -78.958905,
42451                                     43.070884
42452                                 ],
42453                                 [
42454                                     -78.943304,
42455                                     43.065291
42456                                 ],
42457                                 [
42458                                     -78.917399,
42459                                     43.058521
42460                                 ],
42461                                 [
42462                                     -78.908569,
42463                                     43.049396
42464                                 ],
42465                                 [
42466                                     -78.91269,
42467                                     43.037032
42468                                 ]
42469                             ]
42470                         ],
42471                         [
42472                             [
42473                                 [
42474                                     -123.03529,
42475                                     48.992515
42476                                 ],
42477                                 [
42478                                     -123.035308,
42479                                     48.992499
42480                                 ],
42481                                 [
42482                                     -123.045277,
42483                                     48.984361
42484                                 ],
42485                                 [
42486                                     -123.08849,
42487                                     48.972235
42488                                 ],
42489                                 [
42490                                     -123.089345,
42491                                     48.987982
42492                                 ],
42493                                 [
42494                                     -123.090484,
42495                                     48.992499
42496                                 ],
42497                                 [
42498                                     -123.090488,
42499                                     48.992515
42500                                 ],
42501                                 [
42502                                     -123.035306,
42503                                     48.992515
42504                                 ],
42505                                 [
42506                                     -123.03529,
42507                                     48.992515
42508                                 ]
42509                             ]
42510                         ],
42511                         [
42512                             [
42513                                 [
42514                                     -103.837038,
42515                                     29.279906
42516                                 ],
42517                                 [
42518                                     -103.864121,
42519                                     29.281366
42520                                 ],
42521                                 [
42522                                     -103.928122,
42523                                     29.293019
42524                                 ],
42525                                 [
42526                                     -104.01915,
42527                                     29.32033
42528                                 ],
42529                                 [
42530                                     -104.057313,
42531                                     29.339037
42532                                 ],
42533                                 [
42534                                     -104.105424,
42535                                     29.385675
42536                                 ],
42537                                 [
42538                                     -104.139789,
42539                                     29.400584
42540                                 ],
42541                                 [
42542                                     -104.161648,
42543                                     29.416759
42544                                 ],
42545                                 [
42546                                     -104.194514,
42547                                     29.448927
42548                                 ],
42549                                 [
42550                                     -104.212291,
42551                                     29.484661
42552                                 ],
42553                                 [
42554                                     -104.218698,
42555                                     29.489829
42556                                 ],
42557                                 [
42558                                     -104.227148,
42559                                     29.493033
42560                                 ],
42561                                 [
42562                                     -104.251022,
42563                                     29.508588
42564                                 ],
42565                                 [
42566                                     -104.267171,
42567                                     29.526571
42568                                 ],
42569                                 [
42570                                     -104.292751,
42571                                     29.532824
42572                                 ],
42573                                 [
42574                                     -104.320604,
42575                                     29.532255
42576                                 ],
42577                                 [
42578                                     -104.338484,
42579                                     29.524013
42580                                 ],
42581                                 [
42582                                     -104.349026,
42583                                     29.537578
42584                                 ],
42585                                 [
42586                                     -104.430443,
42587                                     29.582795
42588                                 ],
42589                                 [
42590                                     -104.437832,
42591                                     29.58543
42592                                 ],
42593                                 [
42594                                     -104.444008,
42595                                     29.589203
42596                                 ],
42597                                 [
42598                                     -104.448555,
42599                                     29.597678
42600                                 ],
42601                                 [
42602                                     -104.452069,
42603                                     29.607109
42604                                 ],
42605                                 [
42606                                     -104.455222,
42607                                     29.613387
42608                                 ],
42609                                 [
42610                                     -104.469381,
42611                                     29.625402
42612                                 ],
42613                                 [
42614                                     -104.516639,
42615                                     29.654315
42616                                 ],
42617                                 [
42618                                     -104.530824,
42619                                     29.667906
42620                                 ],
42621                                 [
42622                                     -104.535036,
42623                                     29.677802
42624                                 ],
42625                                 [
42626                                     -104.535191,
42627                                     29.687853
42628                                 ],
42629                                 [
42630                                     -104.537103,
42631                                     29.702116
42632                                 ],
42633                                 [
42634                                     -104.543666,
42635                                     29.71643
42636                                 ],
42637                                 [
42638                                     -104.561391,
42639                                     29.745421
42640                                 ],
42641                                 [
42642                                     -104.570279,
42643                                     29.787511
42644                                 ],
42645                                 [
42646                                     -104.583586,
42647                                     29.802575
42648                                 ],
42649                                 [
42650                                     -104.601207,
42651                                     29.81477
42652                                 ],
42653                                 [
42654                                     -104.619682,
42655                                     29.833064
42656                                 ],
42657                                 [
42658                                     -104.623764,
42659                                     29.841487
42660                                 ],
42661                                 [
42662                                     -104.637588,
42663                                     29.887996
42664                                 ],
42665                                 [
42666                                     -104.656346,
42667                                     29.908201
42668                                 ],
42669                                 [
42670                                     -104.660635,
42671                                     29.918433
42672                                 ],
42673                                 [
42674                                     -104.663478,
42675                                     29.923084
42676                                 ],
42677                                 [
42678                                     -104.676526,
42679                                     29.93683
42680                                 ],
42681                                 [
42682                                     -104.680479,
42683                                     29.942308
42684                                 ],
42685                                 [
42686                                     -104.682469,
42687                                     29.952126
42688                                 ],
42689                                 [
42690                                     -104.680117,
42691                                     29.967784
42692                                 ],
42693                                 [
42694                                     -104.680479,
42695                                     29.976466
42696                                 ],
42697                                 [
42698                                     -104.699108,
42699                                     30.03145
42700                                 ],
42701                                 [
42702                                     -104.701589,
42703                                     30.055324
42704                                 ],
42705                                 [
42706                                     -104.698592,
42707                                     30.075271
42708                                 ],
42709                                 [
42710                                     -104.684639,
42711                                     30.111135
42712                                 ],
42713                                 [
42714                                     -104.680479,
42715                                     30.134131
42716                                 ],
42717                                 [
42718                                     -104.67867,
42719                                     30.170356
42720                                 ],
42721                                 [
42722                                     -104.681564,
42723                                     30.192939
42724                                 ],
42725                                 [
42726                                     -104.695853,
42727                                     30.208441
42728                                 ],
42729                                 [
42730                                     -104.715231,
42731                                     30.243995
42732                                 ],
42733                                 [
42734                                     -104.724585,
42735                                     30.252211
42736                                 ],
42737                                 [
42738                                     -104.742155,
42739                                     30.25986
42740                                 ],
42741                                 [
42742                                     -104.74939,
42743                                     30.264459
42744                                 ],
42745                                 [
42746                                     -104.761689,
42747                                     30.284199
42748                                 ],
42749                                 [
42750                                     -104.774143,
42751                                     30.311588
42752                                 ],
42753                                 [
42754                                     -104.788767,
42755                                     30.335927
42756                                 ],
42757                                 [
42758                                     -104.807732,
42759                                     30.346418
42760                                 ],
42761                                 [
42762                                     -104.8129,
42763                                     30.350707
42764                                 ],
42765                                 [
42766                                     -104.814967,
42767                                     30.360577
42768                                 ],
42769                                 [
42770                                     -104.816001,
42771                                     30.371997
42772                                 ],
42773                                 [
42774                                     -104.818274,
42775                                     30.380524
42776                                 ],
42777                                 [
42778                                     -104.824269,
42779                                     30.38719
42780                                 ],
42781                                 [
42782                                     -104.83755,
42783                                     30.394063
42784                                 ],
42785                                 [
42786                                     -104.844939,
42787                                     30.40104
42788                                 ],
42789                                 [
42790                                     -104.853259,
42791                                     30.41215
42792                                 ],
42793                                 [
42794                                     -104.855016,
42795                                     30.417473
42796                                 ],
42797                                 [
42798                                     -104.853621,
42799                                     30.423984
42800                                 ],
42801                                 [
42802                                     -104.852432,
42803                                     30.438867
42804                                 ],
42805                                 [
42806                                     -104.854655,
42807                                     30.448737
42808                                 ],
42809                                 [
42810                                     -104.864473,
42811                                     30.462018
42812                                 ],
42813                                 [
42814                                     -104.866695,
42815                                     30.473025
42816                                 ],
42817                                 [
42818                                     -104.865248,
42819                                     30.479898
42820                                 ],
42821                                 [
42822                                     -104.859615,
42823                                     30.491112
42824                                 ],
42825                                 [
42826                                     -104.859254,
42827                                     30.497261
42828                                 ],
42829                                 [
42830                                     -104.863026,
42831                                     30.502377
42832                                 ],
42833                                 [
42834                                     -104.879718,
42835                                     30.510852
42836                                 ],
42837                                 [
42838                                     -104.882146,
42839                                     30.520929
42840                                 ],
42841                                 [
42842                                     -104.884007,
42843                                     30.541858
42844                                 ],
42845                                 [
42846                                     -104.886591,
42847                                     30.551883
42848                                 ],
42849                                 [
42850                                     -104.898166,
42851                                     30.569401
42852                                 ],
42853                                 [
42854                                     -104.928242,
42855                                     30.599529
42856                                 ],
42857                                 [
42858                                     -104.93434,
42859                                     30.610536
42860                                 ],
42861                                 [
42862                                     -104.941057,
42863                                     30.61405
42864                                 ],
42865                                 [
42866                                     -104.972735,
42867                                     30.618029
42868                                 ],
42869                                 [
42870                                     -104.98276,
42871                                     30.620716
42872                                 ],
42873                                 [
42874                                     -104.989117,
42875                                     30.629553
42876                                 ],
42877                                 [
42878                                     -104.991649,
42879                                     30.640301
42880                                 ],
42881                                 [
42882                                     -104.992941,
42883                                     30.651464
42884                                 ],
42885                                 [
42886                                     -104.995783,
42887                                     30.661747
42888                                 ],
42889                                 [
42890                                     -105.008495,
42891                                     30.676992
42892                                 ],
42893                                 [
42894                                     -105.027977,
42895                                     30.690117
42896                                 ],
42897                                 [
42898                                     -105.049475,
42899                                     30.699264
42900                                 ],
42901                                 [
42902                                     -105.06813,
42903                                     30.702675
42904                                 ],
42905                                 [
42906                                     -105.087043,
42907                                     30.709806
42908                                 ],
42909                                 [
42910                                     -105.133604,
42911                                     30.757917
42912                                 ],
42913                                 [
42914                                     -105.140425,
42915                                     30.750476
42916                                 ],
42917                                 [
42918                                     -105.153241,
42919                                     30.763188
42920                                 ],
42921                                 [
42922                                     -105.157788,
42923                                     30.76572
42924                                 ],
42925                                 [
42926                                     -105.160889,
42927                                     30.764118
42928                                 ],
42929                                 [
42930                                     -105.162698,
42931                                     30.774919
42932                                 ],
42933                                 [
42934                                     -105.167297,
42935                                     30.781171
42936                                 ],
42937                                 [
42938                                     -105.17479,
42939                                     30.783962
42940                                 ],
42941                                 [
42942                                     -105.185125,
42943                                     30.784634
42944                                 ],
42945                                 [
42946                                     -105.195306,
42947                                     30.787941
42948                                 ],
42949                                 [
42950                                     -105.204917,
42951                                     30.80241
42952                                 ],
42953                                 [
42954                                     -105.2121,
42955                                     30.805718
42956                                 ],
42957                                 [
42958                                     -105.21825,
42959                                     30.806803
42960                                 ],
42961                                 [
42962                                     -105.229257,
42963                                     30.810214
42964                                 ],
42965                                 [
42966                                     -105.232874,
42967                                     30.809128
42968                                 ],
42969                                 [
42970                                     -105.239851,
42971                                     30.801532
42972                                 ],
42973                                 [
42974                                     -105.243985,
42975                                     30.799103
42976                                 ],
42977                                 [
42978                                     -105.249049,
42979                                     30.798845
42980                                 ],
42981                                 [
42982                                     -105.259488,
42983                                     30.802979
42984                                 ],
42985                                 [
42986                                     -105.265844,
42987                                     30.808405
42988                                 ],
42989                                 [
42990                                     -105.270753,
42991                                     30.814348
42992                                 ],
42993                                 [
42994                                     -105.277006,
42995                                     30.819412
42996                                 ],
42997                                 [
42998                                     -105.334315,
42999                                     30.843803
43000                                 ],
43001                                 [
43002                                     -105.363771,
43003                                     30.850366
43004                                 ],
43005                                 [
43006                                     -105.376173,
43007                                     30.859565
43008                                 ],
43009                                 [
43010                                     -105.41555,
43011                                     30.902456
43012                                 ],
43013                                 [
43014                                     -105.496682,
43015                                     30.95651
43016                                 ],
43017                                 [
43018                                     -105.530789,
43019                                     30.991701
43020                                 ],
43021                                 [
43022                                     -105.555955,
43023                                     31.002605
43024                                 ],
43025                                 [
43026                                     -105.565722,
43027                                     31.016661
43028                                 ],
43029                                 [
43030                                     -105.578641,
43031                                     31.052163
43032                                 ],
43033                                 [
43034                                     -105.59094,
43035                                     31.071438
43036                                 ],
43037                                 [
43038                                     -105.605875,
43039                                     31.081928
43040                                 ],
43041                                 [
43042                                     -105.623496,
43043                                     31.090351
43044                                 ],
43045                                 [
43046                                     -105.643805,
43047                                     31.103684
43048                                 ],
43049                                 [
43050                                     -105.668042,
43051                                     31.127869
43052                                 ],
43053                                 [
43054                                     -105.675225,
43055                                     31.131951
43056                                 ],
43057                                 [
43058                                     -105.692278,
43059                                     31.137635
43060                                 ],
43061                                 [
43062                                     -105.76819,
43063                                     31.18001
43064                                 ],
43065                                 [
43066                                     -105.777854,
43067                                     31.192722
43068                                 ],
43069                                 [
43070                                     -105.78483,
43071                                     31.211016
43072                                 ],
43073                                 [
43074                                     -105.861983,
43075                                     31.288376
43076                                 ],
43077                                 [
43078                                     -105.880147,
43079                                     31.300881
43080                                 ],
43081                                 [
43082                                     -105.896994,
43083                                     31.305997
43084                                 ],
43085                                 [
43086                                     -105.897149,
43087                                     31.309511
43088                                 ],
43089                                 [
43090                                     -105.908802,
43091                                     31.317004
43092                                 ],
43093                                 [
43094                                     -105.928052,
43095                                     31.326461
43096                                 ],
43097                                 [
43098                                     -105.934563,
43099                                     31.335504
43100                                 ],
43101                                 [
43102                                     -105.941772,
43103                                     31.352351
43104                                 ],
43105                                 [
43106                                     -105.948515,
43107                                     31.361239
43108                                 ],
43109                                 [
43110                                     -105.961202,
43111                                     31.371006
43112                                 ],
43113                                 [
43114                                     -106.004739,
43115                                     31.396948
43116                                 ],
43117                                 [
43118                                     -106.021147,
43119                                     31.402167
43120                                 ],
43121                                 [
43122                                     -106.046261,
43123                                     31.404648
43124                                 ],
43125                                 [
43126                                     -106.065304,
43127                                     31.410952
43128                                 ],
43129                                 [
43130                                     -106.099385,
43131                                     31.428884
43132                                 ],
43133                                 [
43134                                     -106.141113,
43135                                     31.439167
43136                                 ],
43137                                 [
43138                                     -106.164316,
43139                                     31.447797
43140                                 ],
43141                                 [
43142                                     -106.174471,
43143                                     31.460251
43144                                 ],
43145                                 [
43146                                     -106.209249,
43147                                     31.477305
43148                                 ],
43149                                 [
43150                                     -106.215424,
43151                                     31.483919
43152                                 ],
43153                                 [
43154                                     -106.21744,
43155                                     31.488725
43156                                 ],
43157                                 [
43158                                     -106.218731,
43159                                     31.494616
43160                                 ],
43161                                 [
43162                                     -106.222891,
43163                                     31.50459
43164                                 ],
43165                                 [
43166                                     -106.232658,
43167                                     31.519938
43168                                 ],
43169                                 [
43170                                     -106.274749,
43171                                     31.562622
43172                                 ],
43173                                 [
43174                                     -106.286298,
43175                                     31.580141
43176                                 ],
43177                                 [
43178                                     -106.312292,
43179                                     31.648612
43180                                 ],
43181                                 [
43182                                     -106.331309,
43183                                     31.68215
43184                                 ],
43185                                 [
43186                                     -106.35849,
43187                                     31.717548
43188                                 ],
43189                                 [
43190                                     -106.39177,
43191                                     31.745919
43192                                 ],
43193                                 [
43194                                     -106.428951,
43195                                     31.758476
43196                                 ],
43197                                 [
43198                                     -106.473135,
43199                                     31.755065
43200                                 ],
43201                                 [
43202                                     -106.492797,
43203                                     31.759044
43204                                 ],
43205                                 [
43206                                     -106.501425,
43207                                     31.766344
43208                                 ],
43209                                 [
43210                                     -106.506052,
43211                                     31.770258
43212                                 ],
43213                                 [
43214                                     -106.517189,
43215                                     31.773824
43216                                 ],
43217                                 [
43218                                     -106.558969,
43219                                     31.773876
43220                                 ],
43221                                 [
43222                                     -106.584859,
43223                                     31.773927
43224                                 ],
43225                                 [
43226                                     -106.610697,
43227                                     31.773979
43228                                 ],
43229                                 [
43230                                     -106.636587,
43231                                     31.774082
43232                                 ],
43233                                 [
43234                                     -106.662477,
43235                                     31.774134
43236                                 ],
43237                                 [
43238                                     -106.688315,
43239                                     31.774237
43240                                 ],
43241                                 [
43242                                     -106.714205,
43243                                     31.774237
43244                                 ],
43245                                 [
43246                                     -106.740095,
43247                                     31.774289
43248                                 ],
43249                                 [
43250                                     -106.765933,
43251                                     31.774392
43252                                 ],
43253                                 [
43254                                     -106.791823,
43255                                     31.774444
43256                                 ],
43257                                 [
43258                                     -106.817713,
43259                                     31.774496
43260                                 ],
43261                                 [
43262                                     -106.843603,
43263                                     31.774547
43264                                 ],
43265                                 [
43266                                     -106.869441,
43267                                     31.774599
43268                                 ],
43269                                 [
43270                                     -106.895331,
43271                                     31.774702
43272                                 ],
43273                                 [
43274                                     -106.921221,
43275                                     31.774702
43276                                 ],
43277                                 [
43278                                     -106.947111,
43279                                     31.774754
43280                                 ],
43281                                 [
43282                                     -106.973001,
43283                                     31.774857
43284                                 ],
43285                                 [
43286                                     -106.998891,
43287                                     31.774909
43288                                 ],
43289                                 [
43290                                     -107.02478,
43291                                     31.774961
43292                                 ],
43293                                 [
43294                                     -107.05067,
43295                                     31.775013
43296                                 ],
43297                                 [
43298                                     -107.076509,
43299                                     31.775064
43300                                 ],
43301                                 [
43302                                     -107.102398,
43303                                     31.775168
43304                                 ],
43305                                 [
43306                                     -107.128288,
43307                                     31.775168
43308                                 ],
43309                                 [
43310                                     -107.154127,
43311                                     31.775219
43312                                 ],
43313                                 [
43314                                     -107.180016,
43315                                     31.775374
43316                                 ],
43317                                 [
43318                                     -107.205906,
43319                                     31.775374
43320                                 ],
43321                                 [
43322                                     -107.231796,
43323                                     31.775426
43324                                 ],
43325                                 [
43326                                     -107.257634,
43327                                     31.775478
43328                                 ],
43329                                 [
43330                                     -107.283524,
43331                                     31.775529
43332                                 ],
43333                                 [
43334                                     -107.309414,
43335                                     31.775633
43336                                 ],
43337                                 [
43338                                     -107.335252,
43339                                     31.775684
43340                                 ],
43341                                 [
43342                                     -107.361142,
43343                                     31.775788
43344                                 ],
43345                                 [
43346                                     -107.387032,
43347                                     31.775788
43348                                 ],
43349                                 [
43350                                     -107.412896,
43351                                     31.775839
43352                                 ],
43353                                 [
43354                                     -107.438786,
43355                                     31.775943
43356                                 ],
43357                                 [
43358                                     -107.464676,
43359                                     31.775994
43360                                 ],
43361                                 [
43362                                     -107.490566,
43363                                     31.776098
43364                                 ],
43365                                 [
43366                                     -107.516404,
43367                                     31.776149
43368                                 ],
43369                                 [
43370                                     -107.542294,
43371                                     31.776201
43372                                 ],
43373                                 [
43374                                     -107.568184,
43375                                     31.776253
43376                                 ],
43377                                 [
43378                                     -107.594074,
43379                                     31.776304
43380                                 ],
43381                                 [
43382                                     -107.619964,
43383                                     31.776408
43384                                 ],
43385                                 [
43386                                     -107.645854,
43387                                     31.776459
43388                                 ],
43389                                 [
43390                                     -107.671744,
43391                                     31.776459
43392                                 ],
43393                                 [
43394                                     -107.697633,
43395                                     31.776563
43396                                 ],
43397                                 [
43398                                     -107.723472,
43399                                     31.776614
43400                                 ],
43401                                 [
43402                                     -107.749362,
43403                                     31.776666
43404                                 ],
43405                                 [
43406                                     -107.775251,
43407                                     31.776718
43408                                 ],
43409                                 [
43410                                     -107.801141,
43411                                     31.77677
43412                                 ],
43413                                 [
43414                                     -107.82698,
43415                                     31.776873
43416                                 ],
43417                                 [
43418                                     -107.852869,
43419                                     31.776925
43420                                 ],
43421                                 [
43422                                     -107.878759,
43423                                     31.776925
43424                                 ],
43425                                 [
43426                                     -107.904598,
43427                                     31.777028
43428                                 ],
43429                                 [
43430                                     -107.930487,
43431                                     31.77708
43432                                 ],
43433                                 [
43434                                     -107.956377,
43435                                     31.777131
43436                                 ],
43437                                 [
43438                                     -107.982216,
43439                                     31.777183
43440                                 ],
43441                                 [
43442                                     -108.008105,
43443                                     31.777235
43444                                 ],
43445                                 [
43446                                     -108.033995,
43447                                     31.777338
43448                                 ],
43449                                 [
43450                                     -108.059885,
43451                                     31.77739
43452                                 ],
43453                                 [
43454                                     -108.085723,
43455                                     31.77739
43456                                 ],
43457                                 [
43458                                     -108.111613,
43459                                     31.777545
43460                                 ],
43461                                 [
43462                                     -108.137503,
43463                                     31.777545
43464                                 ],
43465                                 [
43466                                     -108.163341,
43467                                     31.777648
43468                                 ],
43469                                 [
43470                                     -108.189283,
43471                                     31.7777
43472                                 ],
43473                                 [
43474                                     -108.215121,
43475                                     31.777751
43476                                 ],
43477                                 [
43478                                     -108.215121,
43479                                     31.770723
43480                                 ],
43481                                 [
43482                                     -108.215121,
43483                                     31.763695
43484                                 ],
43485                                 [
43486                                     -108.215121,
43487                                     31.756667
43488                                 ],
43489                                 [
43490                                     -108.215121,
43491                                     31.749639
43492                                 ],
43493                                 [
43494                                     -108.215121,
43495                                     31.74256
43496                                 ],
43497                                 [
43498                                     -108.215121,
43499                                     31.735583
43500                                 ],
43501                                 [
43502                                     -108.215121,
43503                                     31.728555
43504                                 ],
43505                                 [
43506                                     -108.215121,
43507                                     31.721476
43508                                 ],
43509                                 [
43510                                     -108.215121,
43511                                     31.714396
43512                                 ],
43513                                 [
43514                                     -108.215121,
43515                                     31.70742
43516                                 ],
43517                                 [
43518                                     -108.215121,
43519                                     31.700392
43520                                 ],
43521                                 [
43522                                     -108.215121,
43523                                     31.693312
43524                                 ],
43525                                 [
43526                                     -108.215121,
43527                                     31.686284
43528                                 ],
43529                                 [
43530                                     -108.215121,
43531                                     31.679256
43532                                 ],
43533                                 [
43534                                     -108.215121,
43535                                     31.672176
43536                                 ],
43537                                 [
43538                                     -108.21507,
43539                                     31.665148
43540                                 ],
43541                                 [
43542                                     -108.215018,
43543                                     31.658172
43544                                 ],
43545                                 [
43546                                     -108.215018,
43547                                     31.651092
43548                                 ],
43549                                 [
43550                                     -108.215018,
43551                                     31.644064
43552                                 ],
43553                                 [
43554                                     -108.215018,
43555                                     31.637036
43556                                 ],
43557                                 [
43558                                     -108.215018,
43559                                     31.630008
43560                                 ],
43561                                 [
43562                                     -108.215018,
43563                                     31.62298
43564                                 ],
43565                                 [
43566                                     -108.215018,
43567                                     31.615952
43568                                 ],
43569                                 [
43570                                     -108.215018,
43571                                     31.608873
43572                                 ],
43573                                 [
43574                                     -108.215018,
43575                                     31.601845
43576                                 ],
43577                                 [
43578                                     -108.215018,
43579                                     31.594817
43580                                 ],
43581                                 [
43582                                     -108.215018,
43583                                     31.587789
43584                                 ],
43585                                 [
43586                                     -108.215018,
43587                                     31.580761
43588                                 ],
43589                                 [
43590                                     -108.215018,
43591                                     31.573733
43592                                 ],
43593                                 [
43594                                     -108.215018,
43595                                     31.566653
43596                                 ],
43597                                 [
43598                                     -108.215018,
43599                                     31.559625
43600                                 ],
43601                                 [
43602                                     -108.214966,
43603                                     31.552597
43604                                 ],
43605                                 [
43606                                     -108.214966,
43607                                     31.545569
43608                                 ],
43609                                 [
43610                                     -108.214966,
43611                                     31.538489
43612                                 ],
43613                                 [
43614                                     -108.214966,
43615                                     31.531461
43616                                 ],
43617                                 [
43618                                     -108.214966,
43619                                     31.524485
43620                                 ],
43621                                 [
43622                                     -108.214966,
43623                                     31.517405
43624                                 ],
43625                                 [
43626                                     -108.214966,
43627                                     31.510378
43628                                 ],
43629                                 [
43630                                     -108.214966,
43631                                     31.503401
43632                                 ],
43633                                 [
43634                                     -108.214966,
43635                                     31.496322
43636                                 ],
43637                                 [
43638                                     -108.214966,
43639                                     31.489242
43640                                 ],
43641                                 [
43642                                     -108.214966,
43643                                     31.482214
43644                                 ],
43645                                 [
43646                                     -108.214966,
43647                                     31.475238
43648                                 ],
43649                                 [
43650                                     -108.214966,
43651                                     31.468158
43652                                 ],
43653                                 [
43654                                     -108.214966,
43655                                     31.46113
43656                                 ],
43657                                 [
43658                                     -108.214966,
43659                                     31.454102
43660                                 ],
43661                                 [
43662                                     -108.214966,
43663                                     31.447074
43664                                 ],
43665                                 [
43666                                     -108.214915,
43667                                     31.440046
43668                                 ],
43669                                 [
43670                                     -108.214863,
43671                                     31.432966
43672                                 ],
43673                                 [
43674                                     -108.214863,
43675                                     31.425938
43676                                 ],
43677                                 [
43678                                     -108.214863,
43679                                     31.41891
43680                                 ],
43681                                 [
43682                                     -108.214863,
43683                                     31.411882
43684                                 ],
43685                                 [
43686                                     -108.214863,
43687                                     31.404803
43688                                 ],
43689                                 [
43690                                     -108.214863,
43691                                     31.397826
43692                                 ],
43693                                 [
43694                                     -108.214863,
43695                                     31.390798
43696                                 ],
43697                                 [
43698                                     -108.214863,
43699                                     31.383719
43700                                 ],
43701                                 [
43702                                     -108.214863,
43703                                     31.376639
43704                                 ],
43705                                 [
43706                                     -108.214863,
43707                                     31.369663
43708                                 ],
43709                                 [
43710                                     -108.214863,
43711                                     31.362635
43712                                 ],
43713                                 [
43714                                     -108.214863,
43715                                     31.355555
43716                                 ],
43717                                 [
43718                                     -108.214863,
43719                                     31.348527
43720                                 ],
43721                                 [
43722                                     -108.214863,
43723                                     31.341551
43724                                 ],
43725                                 [
43726                                     -108.214863,
43727                                     31.334471
43728                                 ],
43729                                 [
43730                                     -108.214811,
43731                                     31.327443
43732                                 ],
43733                                 [
43734                                     -108.257573,
43735                                     31.327391
43736                                 ],
43737                                 [
43738                                     -108.300336,
43739                                     31.327391
43740                                 ],
43741                                 [
43742                                     -108.34302,
43743                                     31.327391
43744                                 ],
43745                                 [
43746                                     -108.385731,
43747                                     31.327391
43748                                 ],
43749                                 [
43750                                     -108.428442,
43751                                     31.327391
43752                                 ],
43753                                 [
43754                                     -108.471152,
43755                                     31.327391
43756                                 ],
43757                                 [
43758                                     -108.513837,
43759                                     31.327391
43760                                 ],
43761                                 [
43762                                     -108.556547,
43763                                     31.327391
43764                                 ],
43765                                 [
43766                                     -108.59931,
43767                                     31.327391
43768                                 ],
43769                                 [
43770                                     -108.64202,
43771                                     31.327391
43772                                 ],
43773                                 [
43774                                     -108.684757,
43775                                     31.327391
43776                                 ],
43777                                 [
43778                                     -108.727467,
43779                                     31.327391
43780                                 ],
43781                                 [
43782                                     -108.770178,
43783                                     31.327391
43784                                 ],
43785                                 [
43786                                     -108.812914,
43787                                     31.327391
43788                                 ],
43789                                 [
43790                                     -108.855625,
43791                                     31.327391
43792                                 ],
43793                                 [
43794                                     -108.898335,
43795                                     31.327391
43796                                 ],
43797                                 [
43798                                     -108.941046,
43799                                     31.327391
43800                                 ],
43801                                 [
43802                                     -108.968282,
43803                                     31.327391
43804                                 ],
43805                                 [
43806                                     -108.983731,
43807                                     31.327391
43808                                 ],
43809                                 [
43810                                     -109.026493,
43811                                     31.327391
43812                                 ],
43813                                 [
43814                                     -109.04743,
43815                                     31.327391
43816                                 ],
43817                                 [
43818                                     -109.069203,
43819                                     31.327391
43820                                 ],
43821                                 [
43822                                     -109.111914,
43823                                     31.327391
43824                                 ],
43825                                 [
43826                                     -109.154599,
43827                                     31.327391
43828                                 ],
43829                                 [
43830                                     -109.197361,
43831                                     31.327391
43832                                 ],
43833                                 [
43834                                     -109.240072,
43835                                     31.32734
43836                                 ],
43837                                 [
43838                                     -109.282782,
43839                                     31.32734
43840                                 ],
43841                                 [
43842                                     -109.325519,
43843                                     31.32734
43844                                 ],
43845                                 [
43846                                     -109.368229,
43847                                     31.32734
43848                                 ],
43849                                 [
43850                                     -109.410914,
43851                                     31.32734
43852                                 ],
43853                                 [
43854                                     -109.45365,
43855                                     31.32734
43856                                 ],
43857                                 [
43858                                     -109.496387,
43859                                     31.32734
43860                                 ],
43861                                 [
43862                                     -109.539071,
43863                                     31.32734
43864                                 ],
43865                                 [
43866                                     -109.581808,
43867                                     31.32734
43868                                 ],
43869                                 [
43870                                     -109.624493,
43871                                     31.32734
43872                                 ],
43873                                 [
43874                                     -109.667177,
43875                                     31.32734
43876                                 ],
43877                                 [
43878                                     -109.709965,
43879                                     31.32734
43880                                 ],
43881                                 [
43882                                     -109.75265,
43883                                     31.32734
43884                                 ],
43885                                 [
43886                                     -109.795335,
43887                                     31.32734
43888                                 ],
43889                                 [
43890                                     -109.838123,
43891                                     31.32734
43892                                 ],
43893                                 [
43894                                     -109.880808,
43895                                     31.32734
43896                                 ],
43897                                 [
43898                                     -109.923596,
43899                                     31.327288
43900                                 ],
43901                                 [
43902                                     -109.96628,
43903                                     31.327236
43904                                 ],
43905                                 [
43906                                     -110.008965,
43907                                     31.327236
43908                                 ],
43909                                 [
43910                                     -110.051702,
43911                                     31.327236
43912                                 ],
43913                                 [
43914                                     -110.094386,
43915                                     31.327236
43916                                 ],
43917                                 [
43918                                     -110.137071,
43919                                     31.327236
43920                                 ],
43921                                 [
43922                                     -110.179807,
43923                                     31.327236
43924                                 ],
43925                                 [
43926                                     -110.222544,
43927                                     31.327236
43928                                 ],
43929                                 [
43930                                     -110.265229,
43931                                     31.327236
43932                                 ],
43933                                 [
43934                                     -110.308017,
43935                                     31.327236
43936                                 ],
43937                                 [
43938                                     -110.350753,
43939                                     31.327236
43940                                 ],
43941                                 [
43942                                     -110.39349,
43943                                     31.327236
43944                                 ],
43945                                 [
43946                                     -110.436174,
43947                                     31.327236
43948                                 ],
43949                                 [
43950                                     -110.478859,
43951                                     31.327236
43952                                 ],
43953                                 [
43954                                     -110.521595,
43955                                     31.327236
43956                                 ],
43957                                 [
43958                                     -110.56428,
43959                                     31.327236
43960                                 ],
43961                                 [
43962                                     -110.606965,
43963                                     31.327236
43964                                 ],
43965                                 [
43966                                     -110.649727,
43967                                     31.327236
43968                                 ],
43969                                 [
43970                                     -110.692438,
43971                                     31.327236
43972                                 ],
43973                                 [
43974                                     -110.7352,
43975                                     31.327236
43976                                 ],
43977                                 [
43978                                     -110.777885,
43979                                     31.327236
43980                                 ],
43981                                 [
43982                                     -110.820595,
43983                                     31.327236
43984                                 ],
43985                                 [
43986                                     -110.863358,
43987                                     31.327236
43988                                 ],
43989                                 [
43990                                     -110.906068,
43991                                     31.327236
43992                                 ],
43993                                 [
43994                                     -110.948753,
43995                                     31.327185
43996                                 ],
43997                                 [
43998                                     -111.006269,
43999                                     31.327185
44000                                 ],
44001                                 [
44002                                     -111.067118,
44003                                     31.333644
44004                                 ],
44005                                 [
44006                                     -111.094455,
44007                                     31.342532
44008                                 ],
44009                                 [
44010                                     -111.145924,
44011                                     31.359069
44012                                 ],
44013                                 [
44014                                     -111.197446,
44015                                     31.375554
44016                                 ],
44017                                 [
44018                                     -111.248864,
44019                                     31.392142
44020                                 ],
44021                                 [
44022                                     -111.300333,
44023                                     31.40873
44024                                 ],
44025                                 [
44026                                     -111.351803,
44027                                     31.425318
44028                                 ],
44029                                 [
44030                                     -111.403299,
44031                                     31.441855
44032                                 ],
44033                                 [
44034                                     -111.454768,
44035                                     31.458339
44036                                 ],
44037                                 [
44038                                     -111.506238,
44039                                     31.474979
44040                                 ],
44041                                 [
44042                                     -111.915464,
44043                                     31.601431
44044                                 ],
44045                                 [
44046                                     -112.324715,
44047                                     31.727987
44048                                 ],
44049                                 [
44050                                     -112.733967,
44051                                     31.854543
44052                                 ],
44053                                 [
44054                                     -113.143218,
44055                                     31.981046
44056                                 ],
44057                                 [
44058                                     -113.552444,
44059                                     32.107602
44060                                 ],
44061                                 [
44062                                     -113.961696,
44063                                     32.234132
44064                                 ],
44065                                 [
44066                                     -114.370921,
44067                                     32.360687
44068                                 ],
44069                                 [
44070                                     -114.780147,
44071                                     32.487243
44072                                 ],
44073                                 [
44074                                     -114.816785,
44075                                     32.498534
44076                                 ],
44077                                 [
44078                                     -114.819373,
44079                                     32.499363
44080                                 ],
44081                                 [
44082                                     -114.822108,
44083                                     32.50024
44084                                 ],
44085                                 [
44086                                     -114.809447,
44087                                     32.511324
44088                                 ],
44089                                 [
44090                                     -114.795546,
44091                                     32.552226
44092                                 ],
44093                                 [
44094                                     -114.794203,
44095                                     32.574111
44096                                 ],
44097                                 [
44098                                     -114.802678,
44099                                     32.594497
44100                                 ],
44101                                 [
44102                                     -114.786813,
44103                                     32.621033
44104                                 ],
44105                                 [
44106                                     -114.781542,
44107                                     32.628061
44108                                 ],
44109                                 [
44110                                     -114.758804,
44111                                     32.64483
44112                                 ],
44113                                 [
44114                                     -114.751156,
44115                                     32.65222
44116                                 ],
44117                                 [
44118                                     -114.739477,
44119                                     32.669066
44120                                 ],
44121                                 [
44122                                     -114.731209,
44123                                     32.686636
44124                                 ],
44125                                 [
44126                                     -114.723871,
44127                                     32.711519
44128                                 ],
44129                                 [
44130                                     -114.724284,
44131                                     32.712835
44132                                 ],
44133                                 [
44134                                     -114.724285,
44135                                     32.712836
44136                                 ],
44137                                 [
44138                                     -114.764541,
44139                                     32.709839
44140                                 ],
44141                                 [
44142                                     -114.838076,
44143                                     32.704206
44144                                 ],
44145                                 [
44146                                     -114.911612,
44147                                     32.698703
44148                                 ],
44149                                 [
44150                                     -114.985199,
44151                                     32.693122
44152                                 ],
44153                                 [
44154                                     -115.058734,
44155                                     32.687567
44156                                 ],
44157                                 [
44158                                     -115.13227,
44159                                     32.681986
44160                                 ],
44161                                 [
44162                                     -115.205806,
44163                                     32.676456
44164                                 ],
44165                                 [
44166                                     -115.27929,
44167                                     32.670823
44168                                 ],
44169                                 [
44170                                     -115.352851,
44171                                     32.665346
44172                                 ],
44173                                 [
44174                                     -115.426386,
44175                                     32.659765
44176                                 ],
44177                                 [
44178                                     -115.499922,
44179                                     32.654209
44180                                 ],
44181                                 [
44182                                     -115.573535,
44183                                     32.648654
44184                                 ],
44185                                 [
44186                                     -115.647019,
44187                                     32.643073
44188                                 ],
44189                                 [
44190                                     -115.720529,
44191                                     32.637518
44192                                 ],
44193                                 [
44194                                     -115.794064,
44195                                     32.631963
44196                                 ],
44197                                 [
44198                                     -115.8676,
44199                                     32.626408
44200                                 ],
44201                                 [
44202                                     -115.941213,
44203                                     32.620827
44204                                 ],
44205                                 [
44206                                     -116.014748,
44207                                     32.615271
44208                                 ],
44209                                 [
44210                                     -116.088232,
44211                                     32.609664
44212                                 ],
44213                                 [
44214                                     -116.161742,
44215                                     32.604161
44216                                 ],
44217                                 [
44218                                     -116.235329,
44219                                     32.598554
44220                                 ],
44221                                 [
44222                                     -116.308891,
44223                                     32.593025
44224                                 ],
44225                                 [
44226                                     -116.382426,
44227                                     32.587469
44228                                 ],
44229                                 [
44230                                     -116.455962,
44231                                     32.581888
44232                                 ],
44233                                 [
44234                                     -116.529472,
44235                                     32.576333
44236                                 ],
44237                                 [
44238                                     -116.603007,
44239                                     32.570804
44240                                 ],
44241                                 [
44242                                     -116.676543,
44243                                     32.565223
44244                                 ],
44245                                 [
44246                                     -116.750104,
44247                                     32.559667
44248                                 ],
44249                                 [
44250                                     -116.82364,
44251                                     32.554086
44252                                 ],
44253                                 [
44254                                     -116.897201,
44255                                     32.548531
44256                                 ],
44257                                 [
44258                                     -116.970737,
44259                                     32.542976
44260                                 ],
44261                                 [
44262                                     -117.044221,
44263                                     32.537421
44264                                 ],
44265                                 [
44266                                     -117.125121,
44267                                     32.531669
44268                                 ],
44269                                 [
44270                                     -117.125969,
44271                                     32.538258
44272                                 ],
44273                                 [
44274                                     -117.239623,
44275                                     32.531308
44276                                 ],
44277                                 [
44278                                     -120.274098,
44279                                     32.884264
44280                                 ],
44281                                 [
44282                                     -121.652736,
44283                                     34.467248
44284                                 ],
44285                                 [
44286                                     -124.367265,
44287                                     37.662798
44288                                 ],
44289                                 [
44290                                     -126.739806,
44291                                     41.37928
44292                                 ],
44293                                 [
44294                                     -126.996297,
44295                                     45.773888
44296                                 ],
44297                                 [
44298                                     -124.770704,
44299                                     48.44258
44300                                 ],
44301                                 [
44302                                     -123.734053,
44303                                     48.241906
44304                                 ],
44305                                 [
44306                                     -123.1663,
44307                                     48.27837
44308                                 ],
44309                                 [
44310                                     -123.193018,
44311                                     48.501035
44312                                 ],
44313                                 [
44314                                     -123.176987,
44315                                     48.65482
44316                                 ],
44317                                 [
44318                                     -122.912481,
44319                                     48.753561
44320                                 ],
44321                                 [
44322                                     -122.899122,
44323                                     48.897797
44324                                 ],
44325                                 [
44326                                     -122.837671,
44327                                     48.97502
44328                                 ],
44329                                 [
44330                                     -122.743986,
44331                                     48.980582
44332                                 ],
44333                                 [
44334                                     -122.753,
44335                                     48.992499
44336                                 ],
44337                                 [
44338                                     -122.753012,
44339                                     48.992515
44340                                 ],
44341                                 [
44342                                     -122.653258,
44343                                     48.992515
44344                                 ],
44345                                 [
44346                                     -122.433375,
44347                                     48.992515
44348                                 ],
44349                                 [
44350                                     -122.213517,
44351                                     48.992515
44352                                 ],
44353                                 [
44354                                     -121.993763,
44355                                     48.992515
44356                                 ],
44357                                 [
44358                                     -121.773958,
44359                                     48.992515
44360                                 ],
44361                                 [
44362                                     -121.554152,
44363                                     48.992515
44364                                 ],
44365                                 [
44366                                     -121.33432,
44367                                     48.992515
44368                                 ],
44369                                 [
44370                                     -121.114515,
44371                                     48.992515
44372                                 ],
44373                                 [
44374                                     -95.396937,
44375                                     48.99267
44376                                 ],
44377                                 [
44378                                     -95.177106,
44379                                     48.99267
44380                                 ],
44381                                 [
44382                                     -95.168527,
44383                                     48.995047
44384                                 ],
44385                                 [
44386                                     -95.161887,
44387                                     49.001145
44388                                 ],
44389                                 [
44390                                     -95.159329,
44391                                     49.01179
44392                                 ],
44393                                 [
44394                                     -95.159665,
44395                                     49.10951
44396                                 ],
44397                                 [
44398                                     -95.160027,
44399                                     49.223353
44400                                 ],
44401                                 [
44402                                     -95.160337,
44403                                     49.313012
44404                                 ],
44405                                 [
44406                                     -95.160569,
44407                                     49.369494
44408                                 ],
44409                                 [
44410                                     -95.102821,
44411                                     49.35394
44412                                 ],
44413                                 [
44414                                     -94.982518,
44415                                     49.356162
44416                                 ],
44417                                 [
44418                                     -94.926087,
44419                                     49.345568
44420                                 ],
44421                                 [
44422                                     -94.856195,
44423                                     49.318283
44424                                 ],
44425                                 [
44426                                     -94.839142,
44427                                     49.308878
44428                                 ],
44429                                 [
44430                                     -94.827256,
44431                                     49.292858
44432                                 ],
44433                                 [
44434                                     -94.819892,
44435                                     49.252034
44436                                 ],
44437                                 [
44438                                     -94.810358,
44439                                     49.229606
44440                                 ],
44441                                 [
44442                                     -94.806121,
44443                                     49.210899
44444                                 ],
44445                                 [
44446                                     -94.811185,
44447                                     49.166561
44448                                 ],
44449                                 [
44450                                     -94.803743,
44451                                     49.146407
44452                                 ],
44453                                 [
44454                                     -94.792039,
44455                                     49.12646
44456                                 ],
44457                                 [
44458                                     -94.753772,
44459                                     49.026156
44460                                 ],
44461                                 [
44462                                     -94.711217,
44463                                     48.914586
44464                                 ],
44465                                 [
44466                                     -94.711734,
44467                                     48.862755
44468                                 ],
44469                                 [
44470                                     -94.712147,
44471                                     48.842446
44472                                 ],
44473                                 [
44474                                     -94.713284,
44475                                     48.823843
44476                                 ],
44477                                 [
44478                                     -94.710907,
44479                                     48.807513
44480                                 ],
44481                                 [
44482                                     -94.701786,
44483                                     48.790098
44484                                 ],
44485                                 [
44486                                     -94.688893,
44487                                     48.778832
44488                                 ],
44489                                 [
44490                                     -94.592852,
44491                                     48.726433
44492                                 ],
44493                                 [
44494                                     -94.519161,
44495                                     48.70447
44496                                 ],
44497                                 [
44498                                     -94.4795,
44499                                     48.700698
44500                                 ],
44501                                 [
44502                                     -94.311577,
44503                                     48.713927
44504                                 ],
44505                                 [
44506                                     -94.292586,
44507                                     48.711912
44508                                 ],
44509                                 [
44510                                     -94.284034,
44511                                     48.709069
44512                                 ],
44513                                 [
44514                                     -94.274499,
44515                                     48.704108
44516                                 ],
44517                                 [
44518                                     -94.265482,
44519                                     48.697752
44520                                 ],
44521                                 [
44522                                     -94.258454,
44523                                     48.690828
44524                                 ],
44525                                 [
44526                                     -94.255767,
44527                                     48.683541
44528                                 ],
44529                                 [
44530                                     -94.252459,
44531                                     48.662405
44532                                 ],
44533                                 [
44534                                     -94.251038,
44535                                     48.65729
44536                                 ],
44537                                 [
44538                                     -94.23215,
44539                                     48.652019
44540                                 ],
44541                                 [
44542                                     -94.03485,
44543                                     48.643311
44544                                 ],
44545                                 [
44546                                     -93.874885,
44547                                     48.636206
44548                                 ],
44549                                 [
44550                                     -93.835741,
44551                                     48.617137
44552                                 ],
44553                                 [
44554                                     -93.809386,
44555                                     48.543576
44556                                 ],
44557                                 [
44558                                     -93.778664,
44559                                     48.519468
44560                                 ],
44561                                 [
44562                                     -93.756779,
44563                                     48.516549
44564                                 ],
44565                                 [
44566                                     -93.616297,
44567                                     48.531302
44568                                 ],
44569                                 [
44570                                     -93.599889,
44571                                     48.526341
44572                                 ],
44573                                 [
44574                                     -93.566584,
44575                                     48.538279
44576                                 ],
44577                                 [
44578                                     -93.491756,
44579                                     48.542309
44580                                 ],
44581                                 [
44582                                     -93.459924,
44583                                     48.557399
44584                                 ],
44585                                 [
44586                                     -93.45225,
44587                                     48.572721
44588                                 ],
44589                                 [
44590                                     -93.453774,
44591                                     48.586958
44592                                 ],
44593                                 [
44594                                     -93.451475,
44595                                     48.597422
44596                                 ],
44597                                 [
44598                                     -93.417316,
44599                                     48.604114
44600                                 ],
44601                                 [
44602                                     -93.385716,
44603                                     48.614863
44604                                 ],
44605                                 [
44606                                     -93.25774,
44607                                     48.630314
44608                                 ],
44609                                 [
44610                                     -93.131701,
44611                                     48.62463
44612                                 ],
44613                                 [
44614                                     -92.97972,
44615                                     48.61768
44616                                 ],
44617                                 [
44618                                     -92.955588,
44619                                     48.612228
44620                                 ],
44621                                 [
44622                                     -92.884197,
44623                                     48.579878
44624                                 ],
44625                                 [
44626                                     -92.72555,
44627                                     48.548692
44628                                 ],
44629                                 [
44630                                     -92.648604,
44631                                     48.536263
44632                                 ],
44633                                 [
44634                                     -92.630181,
44635                                     48.519468
44636                                 ],
44637                                 [
44638                                     -92.627468,
44639                                     48.502777
44640                                 ],
44641                                 [
44642                                     -92.646743,
44643                                     48.497428
44644                                 ],
44645                                 [
44646                                     -92.691366,
44647                                     48.489858
44648                                 ],
44649                                 [
44650                                     -92.710641,
44651                                     48.482882
44652                                 ],
44653                                 [
44654                                     -92.718909,
44655                                     48.459782
44656                                 ],
44657                                 [
44658                                     -92.704052,
44659                                     48.445158
44660                                 ],
44661                                 [
44662                                     -92.677129,
44663                                     48.441747
44664                                 ],
44665                                 [
44666                                     -92.657053,
44667                                     48.438233
44668                                 ],
44669                                 [
44670                                     -92.570521,
44671                                     48.446656
44672                                 ],
44673                                 [
44674                                     -92.526932,
44675                                     48.445623
44676                                 ],
44677                                 [
44678                                     -92.490629,
44679                                     48.433117
44680                                 ],
44681                                 [
44682                                     -92.474532,
44683                                     48.410483
44684                                 ],
44685                                 [
44686                                     -92.467581,
44687                                     48.394282
44688                                 ],
44689                                 [
44690                                     -92.467064,
44691                                     48.353225
44692                                 ],
44693                                 [
44694                                     -92.462465,
44695                                     48.329299
44696                                 ],
44697                                 [
44698                                     -92.451381,
44699                                     48.312685
44700                                 ],
44701                                 [
44702                                     -92.41823,
44703                                     48.282041
44704                                 ],
44705                                 [
44706                                     -92.38464,
44707                                     48.232406
44708                                 ],
44709                                 [
44710                                     -92.371851,
44711                                     48.222587
44712                                 ],
44713                                 [
44714                                     -92.353815,
44715                                     48.222897
44716                                 ],
44717                                 [
44718                                     -92.327874,
44719                                     48.229435
44720                                 ],
44721                                 [
44722                                     -92.303663,
44723                                     48.239279
44724                                 ],
44725                                 [
44726                                     -92.291029,
44727                                     48.249562
44728                                 ],
44729                                 [
44730                                     -92.292062,
44731                                     48.270336
44732                                 ],
44733                                 [
44734                                     -92.301416,
44735                                     48.290645
44736                                 ],
44737                                 [
44738                                     -92.303095,
44739                                     48.310928
44740                                 ],
44741                                 [
44742                                     -92.281598,
44743                                     48.33178
44744                                 ],
44745                                 [
44746                                     -92.259118,
44747                                     48.339635
44748                                 ],
44749                                 [
44750                                     -92.154732,
44751                                     48.350125
44752                                 ],
44753                                 [
44754                                     -92.070499,
44755                                     48.346714
44756                                 ],
44757                                 [
44758                                     -92.043421,
44759                                     48.334596
44760                                 ],
44761                                 [
44762                                     -92.030114,
44763                                     48.313176
44764                                 ],
44765                                 [
44766                                     -92.021355,
44767                                     48.287441
44768                                 ],
44769                                 [
44770                                     -92.007997,
44771                                     48.262482
44772                                 ],
44773                                 [
44774                                     -91.992158,
44775                                     48.247909
44776                                 ],
44777                                 [
44778                                     -91.975492,
44779                                     48.236566
44780                                 ],
44781                                 [
44782                                     -91.957302,
44783                                     48.228323
44784                                 ],
44785                                 [
44786                                     -91.852244,
44787                                     48.195974
44788                                 ],
44789                                 [
44790                                     -91.764988,
44791                                     48.187344
44792                                 ],
44793                                 [
44794                                     -91.744137,
44795                                     48.179593
44796                                 ],
44797                                 [
44798                                     -91.727575,
44799                                     48.168327
44800                                 ],
44801                                 [
44802                                     -91.695509,
44803                                     48.13758
44804                                 ],
44805                                 [
44806                                     -91.716438,
44807                                     48.112051
44808                                 ],
44809                                 [
44810                                     -91.692512,
44811                                     48.097866
44812                                 ],
44813                                 [
44814                                     -91.618615,
44815                                     48.089572
44816                                 ],
44817                                 [
44818                                     -91.597479,
44819                                     48.090399
44820                                 ],
44821                                 [
44822                                     -91.589676,
44823                                     48.088332
44824                                 ],
44825                                 [
44826                                     -91.581098,
44827                                     48.080942
44828                                 ],
44829                                 [
44830                                     -91.579806,
44831                                     48.070969
44832                                 ],
44833                                 [
44834                                     -91.585129,
44835                                     48.06084
44836                                 ],
44837                                 [
44838                                     -91.586989,
44839                                     48.052572
44840                                 ],
44841                                 [
44842                                     -91.574845,
44843                                     48.048205
44844                                 ],
44845                                 [
44846                                     -91.487098,
44847                                     48.053476
44848                                 ],
44849                                 [
44850                                     -91.464722,
44851                                     48.048955
44852                                 ],
44853                                 [
44854                                     -91.446274,
44855                                     48.040738
44856                                 ],
44857                                 [
44858                                     -91.427929,
44859                                     48.036449
44860                                 ],
44861                                 [
44862                                     -91.3654,
44863                                     48.057843
44864                                 ],
44865                                 [
44866                                     -91.276362,
44867                                     48.064768
44868                                 ],
44869                                 [
44870                                     -91.23807,
44871                                     48.082648
44872                                 ],
44873                                 [
44874                                     -91.203963,
44875                                     48.107659
44876                                 ],
44877                                 [
44878                                     -91.071103,
44879                                     48.170859
44880                                 ],
44881                                 [
44882                                     -91.02816,
44883                                     48.184838
44884                                 ],
44885                                 [
44886                                     -91.008109,
44887                                     48.194372
44888                                 ],
44889                                 [
44890                                     -90.923153,
44891                                     48.227109
44892                                 ],
44893                                 [
44894                                     -90.873802,
44895                                     48.234344
44896                                 ],
44897                                 [
44898                                     -90.840678,
44899                                     48.220107
44900                                 ],
44901                                 [
44902                                     -90.837939,
44903                                     48.210547
44904                                 ],
44905                                 [
44906                                     -90.848843,
44907                                     48.198713
44908                                 ],
44909                                 [
44910                                     -90.849721,
44911                                     48.189566
44912                                 ],
44913                                 [
44914                                     -90.843003,
44915                                     48.176983
44916                                 ],
44917                                 [
44918                                     -90.83427,
44919                                     48.171789
44920                                 ],
44921                                 [
44922                                     -90.823883,
44923                                     48.168327
44924                                 ],
44925                                 [
44926                                     -90.812307,
44927                                     48.160989
44928                                 ],
44929                                 [
44930                                     -90.803057,
44931                                     48.147166
44932                                 ],
44933                                 [
44934                                     -90.796701,
44935                                     48.117064
44936                                 ],
44937                                 [
44938                                     -90.786469,
44939                                     48.10045
44940                                 ],
44941                                 [
44942                                     -90.750347,
44943                                     48.083991
44944                                 ],
44945                                 [
44946                                     -90.701307,
44947                                     48.08456
44948                                 ],
44949                                 [
44950                                     -90.611079,
44951                                     48.103499
44952                                 ],
44953                                 [
44954                                     -90.586843,
44955                                     48.104817
44956                                 ],
44957                                 [
44958                                     -90.573872,
44959                                     48.097892
44960                                 ],
44961                                 [
44962                                     -90.562194,
44963                                     48.088849
44964                                 ],
44965                                 [
44966                                     -90.542014,
44967                                     48.083733
44968                                 ],
44969                                 [
44970                                     -90.531601,
44971                                     48.08456
44972                                 ],
44973                                 [
44974                                     -90.501887,
44975                                     48.094275
44976                                 ],
44977                                 [
44978                                     -90.490493,
44979                                     48.096239
44980                                 ],
44981                                 [
44982                                     -90.483465,
44983                                     48.094482
44984                                 ],
44985                                 [
44986                                     -90.477858,
44987                                     48.091536
44988                                 ],
44989                                 [
44990                                     -90.470623,
44991                                     48.089882
44992                                 ],
44993                                 [
44994                                     -90.178625,
44995                                     48.116444
44996                                 ],
44997                                 [
44998                                     -90.120386,
44999                                     48.115359
45000                                 ],
45001                                 [
45002                                     -90.073257,
45003                                     48.101199
45004                                 ],
45005                                 [
45006                                     -90.061036,
45007                                     48.091019
45008                                 ],
45009                                 [
45010                                     -90.008222,
45011                                     48.029731
45012                                 ],
45013                                 [
45014                                     -89.995329,
45015                                     48.018595
45016                                 ],
45017                                 [
45018                                     -89.980317,
45019                                     48.010094
45020                                 ],
45021                                 [
45022                                     -89.92045,
45023                                     47.98746
45024                                 ],
45025                                 [
45026                                     -89.902441,
45027                                     47.985909
45028                                 ],
45029                                 [
45030                                     -89.803454,
45031                                     48.013763
45032                                 ],
45033                                 [
45034                                     -89.780975,
45035                                     48.017199
45036                                 ],
45037                                 [
45038                                     -89.763302,
45039                                     48.017303
45040                                 ],
45041                                 [
45042                                     -89.745964,
45043                                     48.013763
45044                                 ],
45045                                 [
45046                                     -89.724596,
45047                                     48.005908
45048                                 ],
45049                                 [
45050                                     -89.712788,
45051                                     48.003376
45052                                 ],
45053                                 [
45054                                     -89.678656,
45055                                     48.008699
45056                                 ],
45057                                 [
45058                                     -89.65659,
45059                                     48.007975
45060                                 ],
45061                                 [
45062                                     -89.593105,
45063                                     47.996503
45064                                 ],
45065                                 [
45066                                     -89.581753,
45067                                     47.996333
45068                                 ],
45069                                 [
45070                                     -89.586724,
45071                                     47.992938
45072                                 ],
45073                                 [
45074                                     -89.310872,
45075                                     47.981097
45076                                 ],
45077                                 [
45078                                     -89.072861,
45079                                     48.046842
45080                                 ],
45081                                 [
45082                                     -88.49789,
45083                                     48.212841
45084                                 ],
45085                                 [
45086                                     -88.286621,
45087                                     48.156675
45088                                 ],
45089                                 [
45090                                     -85.939935,
45091                                     47.280501
45092                                 ],
45093                                 [
45094                                     -84.784644,
45095                                     46.770068
45096                                 ],
45097                                 [
45098                                     -84.516909,
45099                                     46.435083
45100                                 ],
45101                                 [
45102                                     -84.489712,
45103                                     46.446652
45104                                 ],
45105                                 [
45106                                     -84.491052,
45107                                     46.457658
45108                                 ],
45109                                 [
45110                                     -84.478301,
45111                                     46.466467
45112                                 ],
45113                                 [
45114                                     -84.465408,
45115                                     46.478172
45116                                 ],
45117                                 [
45118                                     -84.448096,
45119                                     46.489722
45120                                 ],
45121                                 [
45122                                     -84.42324,
45123                                     46.511581
45124                                 ],
45125                                 [
45126                                     -84.389702,
45127                                     46.520262
45128                                 ],
45129                                 [
45130                                     -84.352469,
45131                                     46.522743
45132                                 ],
45133                                 [
45134                                     -84.30534,
45135                                     46.501607
45136                                 ],
45137                                 [
45138                                     -84.242011,
45139                                     46.526464
45140                                 ],
45141                                 [
45142                                     -84.197285,
45143                                     46.546359
45144                                 ],
45145                                 [
45146                                     -84.147676,
45147                                     46.541346
45148                                 ],
45149                                 [
45150                                     -84.110443,
45151                                     46.526464
45152                                 ],
45153                                 [
45154                                     -84.158812,
45155                                     46.433343
45156                                 ],
45157                                 [
45158                                     -84.147676,
45159                                     46.399882
45160                                 ],
45161                                 [
45162                                     -84.129046,
45163                                     46.375026
45164                                 ],
45165                                 [
45166                                     -84.10543,
45167                                     46.347741
45168                                 ],
45169                                 [
45170                                     -84.105944,
45171                                     46.346374
45172                                 ],
45173                                 [
45174                                     -84.117195,
45175                                     46.347157
45176                                 ],
45177                                 [
45178                                     -84.117489,
45179                                     46.338326
45180                                 ],
45181                                 [
45182                                     -84.122361,
45183                                     46.331922
45184                                 ],
45185                                 [
45186                                     -84.112061,
45187                                     46.287102
45188                                 ],
45189                                 [
45190                                     -84.092672,
45191                                     46.227469
45192                                 ],
45193                                 [
45194                                     -84.111983,
45195                                     46.20337
45196                                 ],
45197                                 [
45198                                     -84.015118,
45199                                     46.149712
45200                                 ],
45201                                 [
45202                                     -83.957038,
45203                                     46.045736
45204                                 ],
45205                                 [
45206                                     -83.676821,
45207                                     46.15388
45208                                 ],
45209                                 [
45210                                     -83.429449,
45211                                     46.086221
45212                                 ],
45213                                 [
45214                                     -83.523049,
45215                                     45.892052
45216                                 ],
45217                                 [
45218                                     -83.574563,
45219                                     45.890259
45220                                 ],
45221                                 [
45222                                     -82.551615,
45223                                     44.857931
45224                                 ],
45225                                 [
45226                                     -82.655591,
45227                                     43.968545
45228                                 ],
45229                                 [
45230                                     -82.440632,
45231                                     43.096285
45232                                 ],
45233                                 [
45234                                     -82.460131,
45235                                     43.084392
45236                                 ],
45237                                 [
45238                                     -82.458894,
45239                                     43.083247
45240                                 ],
45241                                 [
45242                                     -82.431813,
45243                                     43.039387
45244                                 ],
45245                                 [
45246                                     -82.424748,
45247                                     43.02408
45248                                 ],
45249                                 [
45250                                     -82.417242,
45251                                     43.01731
45252                                 ],
45253                                 [
45254                                     -82.416369,
45255                                     43.01742
45256                                 ],
45257                                 [
45258                                     -82.416412,
45259                                     43.017143
45260                                 ],
45261                                 [
45262                                     -82.414603,
45263                                     42.983243
45264                                 ],
45265                                 [
45266                                     -82.430442,
45267                                     42.951307
45268                                 ],
45269                                 [
45270                                     -82.453179,
45271                                     42.918983
45272                                 ],
45273                                 [
45274                                     -82.464781,
45275                                     42.883637
45276                                 ],
45277                                 [
45278                                     -82.468036,
45279                                     42.863974
45280                                 ],
45281                                 [
45282                                     -82.482325,
45283                                     42.835113
45284                                 ],
45285                                 [
45286                                     -82.485271,
45287                                     42.818524
45288                                 ],
45289                                 [
45290                                     -82.473618,
45291                                     42.798164
45292                                 ],
45293                                 [
45294                                     -82.470982,
45295                                     42.790568
45296                                 ],
45297                                 [
45298                                     -82.471344,
45299                                     42.779845
45300                                 ],
45301                                 [
45302                                     -82.476951,
45303                                     42.761474
45304                                 ],
45305                                 [
45306                                     -82.48341,
45307                                     42.719254
45308                                 ],
45309                                 [
45310                                     -82.511264,
45311                                     42.646675
45312                                 ],
45313                                 [
45314                                     -82.526224,
45315                                     42.619906
45316                                 ],
45317                                 [
45318                                     -82.549246,
45319                                     42.590941
45320                                 ],
45321                                 [
45322                                     -82.575833,
45323                                     42.571795
45324                                 ],
45325                                 [
45326                                     -82.608467,
45327                                     42.561098
45328                                 ],
45329                                 [
45330                                     -82.644331,
45331                                     42.557817
45332                                 ],
45333                                 [
45334                                     -82.644698,
45335                                     42.557533
45336                                 ],
45337                                 [
45338                                     -82.644932,
45339                                     42.561634
45340                                 ],
45341                                 [
45342                                     -82.637132,
45343                                     42.568405
45344                                 ],
45345                                 [
45346                                     -82.60902,
45347                                     42.579296
45348                                 ],
45349                                 [
45350                                     -82.616673,
45351                                     42.582828
45352                                 ],
45353                                 [
45354                                     -82.636985,
45355                                     42.599607
45356                                 ],
45357                                 [
45358                                     -82.625357,
45359                                     42.616092
45360                                 ],
45361                                 [
45362                                     -82.629331,
45363                                     42.626394
45364                                 ],
45365                                 [
45366                                     -82.638751,
45367                                     42.633459
45368                                 ],
45369                                 [
45370                                     -82.644344,
45371                                     42.640524
45372                                 ],
45373                                 [
45374                                     -82.644166,
45375                                     42.641056
45376                                 ],
45377                                 [
45378                                     -82.716083,
45379                                     42.617461
45380                                 ],
45381                                 [
45382                                     -82.777592,
45383                                     42.408506
45384                                 ],
45385                                 [
45386                                     -82.888693,
45387                                     42.406093
45388                                 ],
45389                                 [
45390                                     -82.889991,
45391                                     42.403266
45392                                 ],
45393                                 [
45394                                     -82.905739,
45395                                     42.387665
45396                                 ],
45397                                 [
45398                                     -82.923842,
45399                                     42.374419
45400                                 ],
45401                                 [
45402                                     -82.937972,
45403                                     42.366176
45404                                 ],
45405                                 [
45406                                     -82.947686,
45407                                     42.363527
45408                                 ],
45409                                 [
45410                                     -82.979624,
45411                                     42.359406
45412                                 ],
45413                                 [
45414                                     -83.042618,
45415                                     42.340861
45416                                 ],
45417                                 [
45418                                     -83.061899,
45419                                     42.32732
45420                                 ],
45421                                 [
45422                                     -83.081622,
45423                                     42.30907
45424                                 ],
45425                                 [
45426                                     -83.11342,
45427                                     42.279619
45428                                 ],
45429                                 [
45430                                     -83.145306,
45431                                     42.066968
45432                                 ],
45433                                 [
45434                                     -83.177398,
45435                                     41.960666
45436                                 ],
45437                                 [
45438                                     -83.21512,
45439                                     41.794493
45440                                 ],
45441                                 [
45442                                     -82.219051,
45443                                     41.516445
45444                                 ],
45445                                 [
45446                                     -80.345329,
45447                                     42.13344
45448                                 ],
45449                                 [
45450                                     -80.316455,
45451                                     42.123137
45452                                 ],
45453                                 [
45454                                     -79.270266,
45455                                     42.591872
45456                                 ],
45457                                 [
45458                                     -79.221058,
45459                                     42.582892
45460                                 ],
45461                                 [
45462                                     -78.871842,
45463                                     42.860012
45464                                 ],
45465                                 [
45466                                     -78.875011,
45467                                     42.867184
45468                                 ],
45469                                 [
45470                                     -78.896205,
45471                                     42.897209
45472                                 ],
45473                                 [
45474                                     -78.901651,
45475                                     42.908101
45476                                 ],
45477                                 [
45478                                     -78.90901,
45479                                     42.952255
45480                                 ],
45481                                 [
45482                                     -78.913426,
45483                                     42.957848
45484                                 ],
45485                                 [
45486                                     -78.932118,
45487                                     42.9708
45488                                 ],
45489                                 [
45490                                     -78.936386,
45491                                     42.979631
45492                                 ],
45493                                 [
45494                                     -78.927997,
45495                                     43.002003
45496                                 ],
45497                                 [
45498                                     -78.893114,
45499                                     43.029379
45500                                 ],
45501                                 [
45502                                     -78.887963,
45503                                     43.051456
45504                                 ],
45505                                 [
45506                                     -78.914897,
45507                                     43.076477
45508                                 ],
45509                                 [
45510                                     -79.026167,
45511                                     43.086485
45512                                 ],
45513                                 [
45514                                     -79.065231,
45515                                     43.10573
45516                                 ],
45517                                 [
45518                                     -79.065273,
45519                                     43.105897
45520                                 ],
45521                                 [
45522                                     -79.065738,
45523                                     43.120237
45524                                 ],
45525                                 [
45526                                     -79.061423,
45527                                     43.130288
45528                                 ],
45529                                 [
45530                                     -79.055583,
45531                                     43.138427
45532                                 ],
45533                                 [
45534                                     -79.051604,
45535                                     43.146851
45536                                 ],
45537                                 [
45538                                     -79.04933,
45539                                     43.159847
45540                                 ],
45541                                 [
45542                                     -79.048607,
45543                                     43.170622
45544                                 ],
45545                                 [
45546                                     -79.053775,
45547                                     43.260358
45548                                 ],
45549                                 [
45550                                     -79.058425,
45551                                     43.277799
45552                                 ],
45553                                 [
45554                                     -79.058631,
45555                                     43.2782
45556                                 ],
45557                                 [
45558                                     -78.990696,
45559                                     43.286947
45560                                 ],
45561                                 [
45562                                     -78.862059,
45563                                     43.324332
45564                                 ],
45565                                 [
45566                                     -78.767813,
45567                                     43.336418
45568                                 ],
45569                                 [
45570                                     -78.516117,
45571                                     43.50645
45572                                 ],
45573                                 [
45574                                     -76.363317,
45575                                     43.943219
45576                                 ],
45577                                 [
45578                                     -76.396746,
45579                                     44.106667
45580                                 ],
45581                                 [
45582                                     -76.364697,
45583                                     44.111631
45584                                 ],
45585                                 [
45586                                     -76.366146,
45587                                     44.117349
45588                                 ],
45589                                 [
45590                                     -76.357462,
45591                                     44.131478
45592                                 ],
45593                                 [
45594                                     -76.183493,
45595                                     44.223025
45596                                 ],
45597                                 [
45598                                     -76.162644,
45599                                     44.229888
45600                                 ],
45601                                 [
45602                                     -76.176117,
45603                                     44.30795
45604                                 ],
45605                                 [
45606                                     -76.046414,
45607                                     44.354817
45608                                 ],
45609                                 [
45610                                     -75.928746,
45611                                     44.391137
45612                                 ],
45613                                 [
45614                                     -75.852508,
45615                                     44.381639
45616                                 ],
45617                                 [
45618                                     -75.849095,
45619                                     44.386103
45620                                 ],
45621                                 [
45622                                     -75.847623,
45623                                     44.392579
45624                                 ],
45625                                 [
45626                                     -75.84674,
45627                                     44.398172
45628                                 ],
45629                                 [
45630                                     -75.845415,
45631                                     44.40141
45632                                 ],
45633                                 [
45634                                     -75.780803,
45635                                     44.432318
45636                                 ],
45637                                 [
45638                                     -75.770205,
45639                                     44.446153
45640                                 ],
45641                                 [
45642                                     -75.772266,
45643                                     44.463815
45644                                 ],
45645                                 [
45646                                     -75.779184,
45647                                     44.48236
45648                                 ],
45649                                 [
45650                                     -75.791496,
45651                                     44.496513
45652                                 ],
45653                                 [
45654                                     -75.791183,
45655                                     44.496768
45656                                 ],
45657                                 [
45658                                     -75.754622,
45659                                     44.527567
45660                                 ],
45661                                 [
45662                                     -75.69969,
45663                                     44.581673
45664                                 ],
45665                                 [
45666                                     -75.578199,
45667                                     44.661513
45668                                 ],
45669                                 [
45670                                     -75.455958,
45671                                     44.741766
45672                                 ],
45673                                 [
45674                                     -75.341831,
45675                                     44.816749
45676                                 ],
45677                                 [
45678                                     -75.270233,
45679                                     44.863774
45680                                 ],
45681                                 [
45682                                     -75.129647,
45683                                     44.925166
45684                                 ],
45685                                 [
45686                                     -75.075594,
45687                                     44.935501
45688                                 ],
45689                                 [
45690                                     -75.058721,
45691                                     44.941031
45692                                 ],
45693                                 [
45694                                     -75.0149,
45695                                     44.96599
45696                                 ],
45697                                 [
45698                                     -74.998647,
45699                                     44.972398
45700                                 ],
45701                                 [
45702                                     -74.940201,
45703                                     44.987746
45704                                 ],
45705                                 [
45706                                     -74.903744,
45707                                     45.005213
45708                                 ],
45709                                 [
45710                                     -74.88651,
45711                                     45.009398
45712                                 ],
45713                                 [
45714                                     -74.868474,
45715                                     45.010122
45716                                 ],
45717                                 [
45718                                     -74.741557,
45719                                     44.998857
45720                                 ],
45721                                 [
45722                                     -74.712961,
45723                                     44.999254
45724                                 ],
45725                                 [
45726                                     -74.695875,
45727                                     44.99803
45728                                 ],
45729                                 [
45730                                     -74.596114,
45731                                     44.998495
45732                                 ],
45733                                 [
45734                                     -74.496352,
45735                                     44.999012
45736                                 ],
45737                                 [
45738                                     -74.197146,
45739                                     45.000458
45740                                 ],
45741                                 [
45742                                     -71.703551,
45743                                     45.012757
45744                                 ],
45745                                 [
45746                                     -71.603816,
45747                                     45.013274
45748                                 ],
45749                                 [
45750                                     -71.505848,
45751                                     45.013731
45752                                 ],
45753                                 [
45754                                     -71.50408,
45755                                     45.013739
45756                                 ],
45757                                 [
45758                                     -71.506613,
45759                                     45.037045
45760                                 ],
45761                                 [
45762                                     -71.504752,
45763                                     45.052962
45764                                 ],
45765                                 [
45766                                     -71.497259,
45767                                     45.066553
45768                                 ],
45769                                 [
45770                                     -71.45659,
45771                                     45.110994
45772                                 ],
45773                                 [
45774                                     -71.451215,
45775                                     45.121691
45776                                 ],
45777                                 [
45778                                     -71.445996,
45779                                     45.140295
45780                                 ],
45781                                 [
45782                                     -71.441604,
45783                                     45.150682
45784                                 ],
45785                                 [
45786                                     -71.413026,
45787                                     45.186184
45788                                 ],
45789                                 [
45790                                     -71.406567,
45791                                     45.204942
45792                                 ],
45793                                 [
45794                                     -71.42269,
45795                                     45.217189
45796                                 ],
45797                                 [
45798                                     -71.449045,
45799                                     45.226905
45800                                 ],
45801                                 [
45802                                     -71.438813,
45803                                     45.233468
45804                                 ],
45805                                 [
45806                                     -71.394888,
45807                                     45.241529
45808                                 ],
45809                                 [
45810                                     -71.381245,
45811                                     45.250779
45812                                 ],
45813                                 [
45814                                     -71.3521,
45815                                     45.278323
45816                                 ],
45817                                 [
45818                                     -71.334323,
45819                                     45.28871
45820                                 ],
45821                                 [
45822                                     -71.311534,
45823                                     45.294136
45824                                 ],
45825                                 [
45826                                     -71.293396,
45827                                     45.292327
45828                                 ],
45829                                 [
45830                                     -71.20937,
45831                                     45.254758
45832                                 ],
45833                                 [
45834                                     -71.185133,
45835                                     45.248557
45836                                 ],
45837                                 [
45838                                     -71.160329,
45839                                     45.245767
45840                                 ],
45841                                 [
45842                                     -71.141725,
45843                                     45.252329
45844                                 ],
45845                                 [
45846                                     -71.111029,
45847                                     45.287108
45848                                 ],
45849                                 [
45850                                     -71.095242,
45851                                     45.300905
45852                                 ],
45853                                 [
45854                                     -71.085553,
45855                                     45.304213
45856                                 ],
45857                                 [
45858                                     -71.084952,
45859                                     45.304293
45860                                 ],
45861                                 [
45862                                     -71.064211,
45863                                     45.307055
45864                                 ],
45865                                 [
45866                                     -71.054418,
45867                                     45.310362
45868                                 ],
45869                                 [
45870                                     -71.036667,
45871                                     45.323385
45872                                 ],
45873                                 [
45874                                     -71.027598,
45875                                     45.33465
45876                                 ],
45877                                 [
45878                                     -71.016539,
45879                                     45.343125
45880                                 ],
45881                                 [
45882                                     -70.993155,
45883                                     45.347827
45884                                 ],
45885                                 [
45886                                     -70.968118,
45887                                     45.34452
45888                                 ],
45889                                 [
45890                                     -70.951608,
45891                                     45.332014
45892                                 ],
45893                                 [
45894                                     -70.906908,
45895                                     45.246232
45896                                 ],
45897                                 [
45898                                     -70.892412,
45899                                     45.234604
45900                                 ],
45901                                 [
45902                                     -70.874351,
45903                                     45.245663
45904                                 ],
45905                                 [
45906                                     -70.870605,
45907                                     45.255275
45908                                 ],
45909                                 [
45910                                     -70.872491,
45911                                     45.274189
45912                                 ],
45913                                 [
45914                                     -70.870243,
45915                                     45.283129
45916                                 ],
45917                                 [
45918                                     -70.862621,
45919                                     45.290363
45920                                 ],
45921                                 [
45922                                     -70.842389,
45923                                     45.301215
45924                                 ],
45925                                 [
45926                                     -70.835258,
45927                                     45.309794
45928                                 ],
45929                                 [
45930                                     -70.83208,
45931                                     45.328552
45932                                 ],
45933                                 [
45934                                     -70.835465,
45935                                     45.373097
45936                                 ],
45937                                 [
45938                                     -70.833837,
45939                                     45.393096
45940                                 ],
45941                                 [
45942                                     -70.825982,
45943                                     45.410459
45944                                 ],
45945                                 [
45946                                     -70.812986,
45947                                     45.42343
45948                                 ],
45949                                 [
45950                                     -70.794873,
45951                                     45.430406
45952                                 ],
45953                                 [
45954                                     -70.771877,
45955                                     45.430045
45956                                 ],
45957                                 [
45958                                     -70.75255,
45959                                     45.422345
45960                                 ],
45961                                 [
45962                                     -70.718004,
45963                                     45.397282
45964                                 ],
45965                                 [
45966                                     -70.696739,
45967                                     45.388652
45968                                 ],
45969                                 [
45970                                     -70.675785,
45971                                     45.388704
45972                                 ],
45973                                 [
45974                                     -70.65359,
45975                                     45.395473
45976                                 ],
45977                                 [
45978                                     -70.641316,
45979                                     45.408496
45980                                 ],
45981                                 [
45982                                     -70.650257,
45983                                     45.427461
45984                                 ],
45985                                 [
45986                                     -70.668162,
45987                                     45.439036
45988                                 ],
45989                                 [
45990                                     -70.707385,
45991                                     45.4564
45992                                 ],
45993                                 [
45994                                     -70.722836,
45995                                     45.470921
45996                                 ],
45997                                 [
45998                                     -70.732009,
45999                                     45.491591
46000                                 ],
46001                                 [
46002                                     -70.730329,
46003                                     45.507973
46004                                 ],
46005                                 [
46006                                     -70.686792,
46007                                     45.572723
46008                                 ],
46009                                 [
46010                                     -70.589614,
46011                                     45.651788
46012                                 ],
46013                                 [
46014                                     -70.572406,
46015                                     45.662279
46016                                 ],
46017                                 [
46018                                     -70.514735,
46019                                     45.681709
46020                                 ],
46021                                 [
46022                                     -70.484763,
46023                                     45.699641
46024                                 ],
46025                                 [
46026                                     -70.4728,
46027                                     45.703568
46028                                 ],
46029                                 [
46030                                     -70.450424,
46031                                     45.703723
46032                                 ],
46033                                 [
46034                                     -70.439132,
46035                                     45.705893
46036                                 ],
46037                                 [
46038                                     -70.419315,
46039                                     45.716901
46040                                 ],
46041                                 [
46042                                     -70.407351,
46043                                     45.731525
46044                                 ],
46045                                 [
46046                                     -70.402442,
46047                                     45.749663
46048                                 ],
46049                                 [
46050                                     -70.403941,
46051                                     45.771161
46052                                 ],
46053                                 [
46054                                     -70.408282,
46055                                     45.781651
46056                                 ],
46057                                 [
46058                                     -70.413682,
46059                                     45.787697
46060                                 ],
46061                                 [
46062                                     -70.41717,
46063                                     45.793795
46064                                 ],
46065                                 [
46066                                     -70.415232,
46067                                     45.804389
46068                                 ],
46069                                 [
46070                                     -70.409935,
46071                                     45.810745
46072                                 ],
46073                                 [
46074                                     -70.389807,
46075                                     45.825059
46076                                 ],
46077                                 [
46078                                     -70.312654,
46079                                     45.867641
46080                                 ],
46081                                 [
46082                                     -70.283173,
46083                                     45.890482
46084                                 ],
46085                                 [
46086                                     -70.262528,
46087                                     45.923038
46088                                 ],
46089                                 [
46090                                     -70.255939,
46091                                     45.948876
46092                                 ],
46093                                 [
46094                                     -70.263148,
46095                                     45.956834
46096                                 ],
46097                                 [
46098                                     -70.280434,
46099                                     45.959315
46100                                 ],
46101                                 [
46102                                     -70.303947,
46103                                     45.968616
46104                                 ],
46105                                 [
46106                                     -70.316298,
46107                                     45.982982
46108                                 ],
46109                                 [
46110                                     -70.316892,
46111                                     45.999002
46112                                 ],
46113                                 [
46114                                     -70.306143,
46115                                     46.035331
46116                                 ],
46117                                 [
46118                                     -70.303637,
46119                                     46.038483
46120                                 ],
46121                                 [
46122                                     -70.294309,
46123                                     46.044943
46124                                 ],
46125                                 [
46126                                     -70.29201,
46127                                     46.048663
46128                                 ],
46129                                 [
46130                                     -70.293017,
46131                                     46.054038
46132                                 ],
46133                                 [
46134                                     -70.296092,
46135                                     46.057862
46136                                 ],
46137                                 [
46138                                     -70.300795,
46139                                     46.061737
46140                                 ],
46141                                 [
46142                                     -70.304774,
46143                                     46.065975
46144                                 ],
46145                                 [
46146                                     -70.311362,
46147                                     46.071866
46148                                 ],
46149                                 [
46150                                     -70.312629,
46151                                     46.079566
46152                                 ],
46153                                 [
46154                                     -70.30033,
46155                                     46.089281
46156                                 ],
46157                                 [
46158                                     -70.26444,
46159                                     46.106593
46160                                 ],
46161                                 [
46162                                     -70.24948,
46163                                     46.120597
46164                                 ],
46165                                 [
46166                                     -70.244002,
46167                                     46.141009
46168                                 ],
46169                                 [
46170                                     -70.249247,
46171                                     46.162765
46172                                 ],
46173                                 [
46174                                     -70.263329,
46175                                     46.183229
46176                                 ],
46177                                 [
46178                                     -70.284801,
46179                                     46.191859
46180                                 ],
46181                                 [
46182                                     -70.280899,
46183                                     46.211857
46184                                 ],
46185                                 [
46186                                     -70.253407,
46187                                     46.251493
46188                                 ],
46189                                 [
46190                                     -70.236173,
46191                                     46.288339
46192                                 ],
46193                                 [
46194                                     -70.223693,
46195                                     46.300793
46196                                 ],
46197                                 [
46198                                     -70.201886,
46199                                     46.305495
46200                                 ],
46201                                 [
46202                                     -70.199509,
46203                                     46.315262
46204                                 ],
46205                                 [
46206                                     -70.197028,
46207                                     46.336863
46208                                 ],
46209                                 [
46210                                     -70.188398,
46211                                     46.358412
46212                                 ],
46213                                 [
46214                                     -70.167418,
46215                                     46.368179
46216                                 ],
46217                                 [
46218                                     -70.153052,
46219                                     46.372829
46220                                 ],
46221                                 [
46222                                     -70.074323,
46223                                     46.419545
46224                                 ],
46225                                 [
46226                                     -70.061817,
46227                                     46.445409
46228                                 ],
46229                                 [
46230                                     -70.050086,
46231                                     46.511271
46232                                 ],
46233                                 [
46234                                     -70.032723,
46235                                     46.609766
46236                                 ],
46237                                 [
46238                                     -70.023628,
46239                                     46.661287
46240                                 ],
46241                                 [
46242                                     -70.007763,
46243                                     46.704075
46244                                 ],
46245                                 [
46246                                     -69.989961,
46247                                     46.721697
46248                                 ],
46249                                 [
46250                                     -69.899708,
46251                                     46.811562
46252                                 ],
46253                                 [
46254                                     -69.809403,
46255                                     46.901299
46256                                 ],
46257                                 [
46258                                     -69.719099,
46259                                     46.991086
46260                                 ],
46261                                 [
46262                                     -69.628794,
46263                                     47.080797
46264                                 ],
46265                                 [
46266                                     -69.538464,
46267                                     47.17061
46268                                 ],
46269                                 [
46270                                     -69.448159,
46271                                     47.260346
46272                                 ],
46273                                 [
46274                                     -69.357906,
46275                                     47.350134
46276                                 ],
46277                                 [
46278                                     -69.267628,
46279                                     47.439844
46280                                 ],
46281                                 [
46282                                     -69.25091,
46283                                     47.452919
46284                                 ],
46285                                 [
46286                                     -69.237268,
46287                                     47.45881
46288                                 ],
46289                                 [
46290                                     -69.221972,
46291                                     47.459688
46292                                 ],
46293                                 [
46294                                     -69.069655,
46295                                     47.431886
46296                                 ],
46297                                 [
46298                                     -69.054023,
46299                                     47.418399
46300                                 ],
46301                                 [
46302                                     -69.054333,
46303                                     47.389253
46304                                 ],
46305                                 [
46306                                     -69.066193,
46307                                     47.32967
46308                                 ],
46309                                 [
46310                                     -69.065134,
46311                                     47.296339
46312                                 ],
46313                                 [
46314                                     -69.06356,
46315                                     47.290809
46316                                 ],
46317                                 [
46318                                     -69.057486,
46319                                     47.269467
46320                                 ],
46321                                 [
46322                                     -69.0402,
46323                                     47.249055
46324                                 ],
46325                                 [
46326                                     -68.906229,
46327                                     47.190221
46328                                 ],
46329                                 [
46330                                     -68.889718,
46331                                     47.190609
46332                                 ],
46333                                 [
46334                                     -68.761819,
46335                                     47.23704
46336                                 ],
46337                                 [
46338                                     -68.71779,
46339                                     47.245231
46340                                 ],
46341                                 [
46342                                     -68.668801,
46343                                     47.243422
46344                                 ],
46345                                 [
46346                                     -68.644203,
46347                                     47.245283
46348                                 ],
46349                                 [
46350                                     -68.6256,
46351                                     47.255205
46352                                 ],
46353                                 [
46354                                     -68.607926,
46355                                     47.269829
46356                                 ],
46357                                 [
46358                                     -68.58524,
46359                                     47.28249
46360                                 ],
46361                                 [
46362                                     -68.539662,
46363                                     47.299853
46364                                 ],
46365                                 [
46366                                     -68.518009,
46367                                     47.304762
46368                                 ],
46369                                 [
46370                                     -68.492016,
46371                                     47.307553
46372                                 ],
46373                                 [
46374                                     -68.466746,
46375                                     47.305692
46376                                 ],
46377                                 [
46378                                     -68.435327,
46379                                     47.291275
46380                                 ],
46381                                 [
46382                                     -68.422563,
46383                                     47.293109
46384                                 ],
46385                                 [
46386                                     -68.410212,
46387                                     47.297424
46388                                 ],
46389                                 [
46390                                     -68.385614,
46391                                     47.301713
46392                                 ],
46393                                 [
46394                                     -68.383392,
46395                                     47.307139
46396                                 ],
46397                                 [
46398                                     -68.384839,
46399                                     47.315873
46400                                 ],
46401                                 [
46402                                     -68.382049,
46403                                     47.32781
46404                                 ],
46405                                 [
46406                                     -68.347839,
46407                                     47.358506
46408                                 ],
46409                                 [
46410                                     -68.299728,
46411                                     47.367833
46412                                 ],
46413                                 [
46414                                     -68.24645,
46415                                     47.360573
46416                                 ],
46417                                 [
46418                                     -68.197047,
46419                                     47.341401
46420                                 ],
46421                                 [
46422                                     -68.184335,
46423                                     47.333133
46424                                 ],
46425                                 [
46426                                     -68.156068,
46427                                     47.306674
46428                                 ],
46429                                 [
46430                                     -68.145061,
46431                                     47.301455
46432                                 ],
46433                                 [
46434                                     -68.115398,
46435                                     47.292282
46436                                 ],
46437                                 [
46438                                     -68.101446,
46439                                     47.286185
46440                                 ],
46441                                 [
46442                                     -68.039382,
46443                                     47.245231
46444                                 ],
46445                                 [
46446                                     -67.993184,
46447                                     47.223217
46448                                 ],
46449                                 [
46450                                     -67.962436,
46451                                     47.197689
46452                                 ],
46453                                 [
46454                                     -67.953703,
46455                                     47.18663
46456                                 ],
46457                                 [
46458                                     -67.949982,
46459                                     47.172936
46460                                 ],
46461                                 [
46462                                     -67.943419,
46463                                     47.164538
46464                                 ],
46465                                 [
46466                                     -67.899132,
46467                                     47.138778
46468                                 ],
46469                                 [
46470                                     -67.870607,
46471                                     47.107358
46472                                 ],
46473                                 [
46474                                     -67.854742,
46475                                     47.09785
46476                                 ],
46477                                 [
46478                                     -67.813556,
46479                                     47.081908
46480                                 ],
46481                                 [
46482                                     -67.808699,
46483                                     47.075138
46484                                 ],
46485                                 [
46486                                     -67.805185,
46487                                     47.035631
46488                                 ],
46489                                 [
46490                                     -67.802549,
46491                                     46.901247
46492                                 ],
46493                                 [
46494                                     -67.800017,
46495                                     46.766785
46496                                 ],
46497                                 [
46498                                     -67.797433,
46499                                     46.632297
46500                                 ],
46501                                 [
46502                                     -67.794849,
46503                                     46.497861
46504                                 ],
46505                                 [
46506                                     -67.792317,
46507                                     46.363476
46508                                 ],
46509                                 [
46510                                     -67.789733,
46511                                     46.229014
46512                                 ],
46513                                 [
46514                                     -67.78715,
46515                                     46.094552
46516                                 ],
46517                                 [
46518                                     -67.784566,
46519                                     45.960142
46520                                 ],
46521                                 [
46522                                     -67.782757,
46523                                     45.95053
46524                                 ],
46525                                 [
46526                                     -67.776556,
46527                                     45.942933
46528                                 ],
46529                                 [
46530                                     -67.767461,
46531                                     45.935957
46532                                 ],
46533                                 [
46534                                     -67.759658,
46535                                     45.928567
46536                                 ],
46537                                 [
46538                                     -67.757849,
46539                                     45.919472
46540                                 ],
46541                                 [
46542                                     -67.769425,
46543                                     45.903969
46544                                 ],
46545                                 [
46546                                     -67.787356,
46547                                     45.890017
46548                                 ],
46549                                 [
46550                                     -67.799242,
46551                                     45.875651
46552                                 ],
46553                                 [
46554                                     -67.792627,
46555                                     45.858907
46556                                 ],
46557                                 [
46558                                     -67.776091,
46559                                     45.840821
46560                                 ],
46561                                 [
46562                                     -67.772835,
46563                                     45.828057
46564                                 ],
46565                                 [
46566                                     -67.779863,
46567                                     45.815706
46568                                 ],
46569                                 [
46570                                     -67.794126,
46571                                     45.799169
46572                                 ],
46573                                 [
46574                                     -67.80627,
46575                                     45.781754
46576                                 ],
46577                                 [
46578                                     -67.811127,
46579                                     45.76651
46580                                 ],
46581                                 [
46582                                     -67.810816,
46583                                     45.762414
46584                                 ],
46585                                 [
46586                                     -67.817811,
46587                                     45.754896
46588                                 ],
46589                                 [
46590                                     -67.821785,
46591                                     45.740767
46592                                 ],
46593                                 [
46594                                     -67.827673,
46595                                     45.739001
46596                                 ],
46597                                 [
46598                                     -67.868884,
46599                                     45.744593
46600                                 ],
46601                                 [
46602                                     -67.856815,
46603                                     45.723694
46604                                 ],
46605                                 [
46606                                     -67.835768,
46607                                     45.703971
46608                                 ],
46609                                 [
46610                                     -67.793821,
46611                                     45.676301
46612                                 ],
46613                                 [
46614                                     -67.733034,
46615                                     45.651869
46616                                 ],
46617                                 [
46618                                     -67.723173,
46619                                     45.645393
46620                                 ],
46621                                 [
46622                                     -67.711546,
46623                                     45.642155
46624                                 ],
46625                                 [
46626                                     -67.697564,
46627                                     45.64922
46628                                 ],
46629                                 [
46630                                     -67.66695,
46631                                     45.620077
46632                                 ],
46633                                 [
46634                                     -67.649435,
46635                                     45.611247
46636                                 ],
46637                                 [
46638                                     -67.603073,
46639                                     45.605948
46640                                 ],
46641                                 [
46642                                     -67.561862,
46643                                     45.596234
46644                                 ],
46645                                 [
46646                                     -67.54052,
46647                                     45.593879
46648                                 ],
46649                                 [
46650                                     -67.442056,
46651                                     45.603593
46652                                 ],
46653                                 [
46654                                     -67.440939,
46655                                     45.604586
46656                                 ],
46657                                 [
46658                                     -67.431306,
46659                                     45.597941
46660                                 ],
46661                                 [
46662                                     -67.422107,
46663                                     45.568796
46664                                 ],
46665                                 [
46666                                     -67.42619,
46667                                     45.533449
46668                                 ],
46669                                 [
46670                                     -67.443036,
46671                                     45.522184
46672                                 ],
46673                                 [
46674                                     -67.467531,
46675                                     45.508283
46676                                 ],
46677                                 [
46678                                     -67.493214,
46679                                     45.493142
46680                                 ],
46681                                 [
46682                                     -67.48231,
46683                                     45.455521
46684                                 ],
46685                                 [
46686                                     -67.428825,
46687                                     45.38705
46688                                 ],
46689                                 [
46690                                     -67.434561,
46691                                     45.350308
46692                                 ],
46693                                 [
46694                                     -67.459056,
46695                                     45.318424
46696                                 ],
46697                                 [
46698                                     -67.468668,
46699                                     45.301835
46700                                 ],
46701                                 [
46702                                     -67.475024,
46703                                     45.282353
46704                                 ],
46705                                 [
46706                                     -67.471303,
46707                                     45.266282
46708                                 ],
46709                                 [
46710                                     -67.427585,
46711                                     45.236568
46712                                 ],
46713                                 [
46714                                     -67.390533,
46715                                     45.193108
46716                                 ],
46717                                 [
46718                                     -67.356272,
46719                                     45.165926
46720                                 ],
46721                                 [
46722                                     -67.31922,
46723                                     45.153886
46724                                 ],
46725                                 [
46726                                     -67.284648,
46727                                     45.169699
46728                                 ],
46729                                 [
46730                                     -67.279584,
46731                                     45.179052
46732                                 ],
46733                                 [
46734                                     -67.279222,
46735                                     45.187372
46736                                 ],
46737                                 [
46738                                     -67.277207,
46739                                     45.195072
46740                                 ],
46741                                 [
46742                                     -67.267336,
46743                                     45.202513
46744                                 ],
46745                                 [
46746                                     -67.254986,
46747                                     45.205045
46748                                 ],
46749                                 [
46750                                     -67.242428,
46751                                     45.202565
46752                                 ],
46753                                 [
46754                                     -67.219071,
46755                                     45.192126
46756                                 ],
46757                                 [
46758                                     -67.206166,
46759                                     45.189401
46760                                 ],
46761                                 [
46762                                     -67.176015,
46763                                     45.178656
46764                                 ],
46765                                 [
46766                                     -67.191274,
46767                                     45.180365
46768                                 ],
46769                                 [
46770                                     -67.204376,
46771                                     45.178209
46772                                 ],
46773                                 [
46774                                     -67.204724,
46775                                     45.177791
46776                                 ],
46777                                 [
46778                                     -67.152423,
46779                                     45.148932
46780                                 ],
46781                                 [
46782                                     -67.048033,
46783                                     45.043407
46784                                 ],
46785                                 [
46786                                     -66.962727,
46787                                     45.047088
46788                                 ],
46789                                 [
46790                                     -66.857192,
46791                                     44.968696
46792                                 ],
46793                                 [
46794                                     -66.897268,
46795                                     44.817275
46796                                 ],
46797                                 [
46798                                     -67.2159,
46799                                     44.593511
46800                                 ],
46801                                 [
46802                                     -67.122366,
46803                                     44.423624
46804                                 ],
46805                                 [
46806                                     -67.68447,
46807                                     44.192544
46808                                 ],
46809                                 [
46810                                     -67.459678,
46811                                     40.781645
46812                                 ],
46813                                 [
46814                                     -76.607854,
46815                                     32.495823
46816                                 ],
46817                                 [
46818                                     -76.798479,
46819                                     32.713735
46820                                 ],
46821                                 [
46822                                     -78.561892,
46823                                     29.037718
46824                                 ],
46825                                 [
46826                                     -78.892446,
46827                                     29.039659
46828                                 ],
46829                                 [
46830                                     -79.762295,
46831                                     26.719312
46832                                 ],
46833                                 [
46834                                     -80.026352,
46835                                     24.932961
46836                                 ],
46837                                 [
46838                                     -82.368794,
46839                                     23.994833
46840                                 ],
46841                                 [
46842                                     -83.806281,
46843                                     29.068506
46844                                 ],
46845                                 [
46846                                     -87.460772,
46847                                     29.089961
46848                                 ],
46849                                 [
46850                                     -87.922646,
46851                                     28.666131
46852                                 ],
46853                                 [
46854                                     -90.461001,
46855                                     28.246758
46856                                 ],
46857                                 [
46858                                     -91.787336,
46859                                     29.11536
46860                                 ],
46861                                 [
46862                                     -93.311871,
46863                                     29.12431
46864                                 ],
46865                                 [
46866                                     -96.423449,
46867                                     26.057857
46868                                 ],
46869                                 [
46870                                     -97.129057,
46871                                     25.991017
46872                                 ],
46873                                 [
46874                                     -97.129509,
46875                                     25.966833
46876                                 ],
46877                                 [
46878                                     -97.139358,
46879                                     25.965876
46880                                 ],
46881                                 [
46882                                     -97.202171,
46883                                     25.960893
46884                                 ],
46885                                 [
46886                                     -97.202176,
46887                                     25.960857
46888                                 ],
46889                                 [
46890                                     -97.204941,
46891                                     25.960639
46892                                 ],
46893                                 [
46894                                     -97.253051,
46895                                     25.963481
46896                                 ],
46897                                 [
46898                                     -97.266358,
46899                                     25.960639
46900                                 ],
46901                                 [
46902                                     -97.2692,
46903                                     25.944361
46904                                 ],
46905                                 [
46906                                     -97.287649,
46907                                     25.928651
46908                                 ],
46909                                 [
46910                                     -97.310981,
46911                                     25.922088
46912                                 ],
46913                                 [
46914                                     -97.328447,
46915                                     25.933302
46916                                 ],
46917                                 [
46918                                     -97.351107,
46919                                     25.918419
46920                                 ],
46921                                 [
46922                                     -97.355112,
46923                                     25.912786
46924                                 ],
46925                                 [
46926                                     -97.35227,
46927                                     25.894493
46928                                 ],
46929                                 [
46930                                     -97.345165,
46931                                     25.871704
46932                                 ],
46933                                 [
46934                                     -97.345733,
46935                                     25.852222
46936                                 ],
46937                                 [
46938                                     -97.36599,
46939                                     25.843902
46940                                 ],
46941                                 [
46942                                     -97.376015,
46943                                     25.846744
46944                                 ],
46945                                 [
46946                                     -97.380124,
46947                                     25.853203
46948                                 ],
46949                                 [
46950                                     -97.383121,
46951                                     25.860541
46952                                 ],
46953                                 [
46954                                     -97.389891,
46955                                     25.865657
46956                                 ],
46957                                 [
46958                                     -97.397823,
46959                                     25.865812
46960                                 ],
46961                                 [
46962                                     -97.399476,
46963                                     25.861162
46964                                 ],
46965                                 [
46966                                     -97.39989,
46967                                     25.855115
46968                                 ],
46969                                 [
46970                                     -97.404179,
46971                                     25.851395
46972                                 ],
46973                                 [
46974                                     -97.425418,
46975                                     25.854857
46976                                 ],
46977                                 [
46978                                     -97.435727,
46979                                     25.869275
46980                                 ],
46981                                 [
46982                                     -97.441309,
46983                                     25.884933
46984                                 ],
46985                                 [
46986                                     -97.448259,
46987                                     25.892322
46988                                 ],
46989                                 [
46990                                     -97.469421,
46991                                     25.892943
46992                                 ],
46993                                 [
46994                                     -97.486319,
46995                                     25.895733
46996                                 ],
46997                                 [
46998                                     -97.502209,
46999                                     25.901883
47000                                 ],
47001                                 [
47002                                     -97.52027,
47003                                     25.912786
47004                                 ],
47005                                 [
47006                                     -97.565177,
47007                                     25.954748
47008                                 ],
47009                                 [
47010                                     -97.594322,
47011                                     25.966375
47012                                 ],
47013                                 [
47014                                     -97.604787,
47015                                     25.979966
47016                                 ],
47017                                 [
47018                                     -97.613055,
47019                                     25.995985
47020                                 ],
47021                                 [
47022                                     -97.622641,
47023                                     26.00906
47024                                 ],
47025                                 [
47026                                     -97.641451,
47027                                     26.022495
47028                                 ],
47029                                 [
47030                                     -97.659874,
47031                                     26.03066
47032                                 ],
47033                                 [
47034                                     -97.679614,
47035                                     26.034639
47036                                 ],
47037                                 [
47038                                     -97.766948,
47039                                     26.039652
47040                                 ],
47041                                 [
47042                                     -97.780306,
47043                                     26.043218
47044                                 ],
47045                                 [
47046                                     -97.782321,
47047                                     26.058617
47048                                 ],
47049                                 [
47050                                     -97.80201,
47051                                     26.063733
47052                                 ],
47053                                 [
47054                                     -97.878181,
47055                                     26.063733
47056                                 ],
47057                                 [
47058                                     -97.941666,
47059                                     26.056809
47060                                 ],
47061                                 [
47062                                     -97.999233,
47063                                     26.064302
47064                                 ],
47065                                 [
47066                                     -98.013057,
47067                                     26.063682
47068                                 ],
47069                                 [
47070                                     -98.044166,
47071                                     26.048799
47072                                 ],
47073                                 [
47074                                     -98.065457,
47075                                     26.042184
47076                                 ],
47077                                 [
47078                                     -98.075146,
47079                                     26.046628
47080                                 ],
47081                                 [
47082                                     -98.083311,
47083                                     26.070916
47084                                 ],
47085                                 [
47086                                     -98.103103,
47087                                     26.074947
47088                                 ],
47089                                 [
47090                                     -98.150232,
47091                                     26.063682
47092                                 ],
47093                                 [
47094                                     -98.185062,
47095                                     26.065232
47096                                 ],
47097                                 [
47098                                     -98.222656,
47099                                     26.075412
47100                                 ],
47101                                 [
47102                                     -98.300429,
47103                                     26.111431
47104                                 ],
47105                                 [
47106                                     -98.309809,
47107                                     26.121094
47108                                 ],
47109                                 [
47110                                     -98.333037,
47111                                     26.15303
47112                                 ],
47113                                 [
47114                                     -98.339264,
47115                                     26.159851
47116                                 ],
47117                                 [
47118                                     -98.365774,
47119                                     26.160161
47120                                 ],
47121                                 [
47122                                     -98.377272,
47123                                     26.163572
47124                                 ],
47125                                 [
47126                                     -98.377272,
47127                                     26.173649
47128                                 ],
47129                                 [
47130                                     -98.36934,
47131                                     26.19401
47132                                 ],
47133                                 [
47134                                     -98.397193,
47135                                     26.201141
47136                                 ],
47137                                 [
47138                                     -98.428845,
47139                                     26.217729
47140                                 ],
47141                                 [
47142                                     -98.456544,
47143                                     26.225946
47144                                 ],
47145                                 [
47146                                     -98.472383,
47147                                     26.207652
47148                                 ],
47149                                 [
47150                                     -98.49295,
47151                                     26.230596
47152                                 ],
47153                                 [
47154                                     -98.521527,
47155                                     26.240932
47156                                 ],
47157                                 [
47158                                     -98.552791,
47159                                     26.248321
47160                                 ],
47161                                 [
47162                                     -98.581627,
47163                                     26.262274
47164                                 ],
47165                                 [
47166                                     -98.640564,
47167                                     26.24181
47168                                 ],
47169                                 [
47170                                     -98.653663,
47171                                     26.244291
47172                                 ],
47173                                 [
47174                                     -98.664696,
47175                                     26.250647
47176                                 ],
47177                                 [
47178                                     -98.685289,
47179                                     26.268475
47180                                 ],
47181                                 [
47182                                     -98.693325,
47183                                     26.270542
47184                                 ],
47185                                 [
47186                                     -98.702239,
47187                                     26.271628
47188                                 ],
47189                                 [
47190                                     -98.704255,
47191                                     26.27664
47192                                 ],
47193                                 [
47194                                     -98.691465,
47195                                     26.290231
47196                                 ],
47197                                 [
47198                                     -98.701413,
47199                                     26.299119
47200                                 ],
47201                                 [
47202                                     -98.713169,
47203                                     26.303357
47204                                 ],
47205                                 [
47206                                     -98.726217,
47207                                     26.30439
47208                                 ],
47209                                 [
47210                                     -98.739911,
47211                                     26.303253
47212                                 ],
47213                                 [
47214                                     -98.735932,
47215                                     26.320048
47216                                 ],
47217                                 [
47218                                     -98.746397,
47219                                     26.332141
47220                                 ],
47221                                 [
47222                                     -98.780839,
47223                                     26.351674
47224                                 ],
47225                                 [
47226                                     -98.795851,
47227                                     26.368314
47228                                 ],
47229                                 [
47230                                     -98.801329,
47231                                     26.372138
47232                                 ],
47233                                 [
47234                                     -98.810295,
47235                                     26.372448
47236                                 ],
47237                                 [
47238                                     -98.817323,
47239                                     26.368521
47240                                 ],
47241                                 [
47242                                     -98.825023,
47243                                     26.366454
47244                                 ],
47245                                 [
47246                                     -98.836081,
47247                                     26.372138
47248                                 ],
47249                                 [
47250                                     -98.842334,
47251                                     26.365834
47252                                 ],
47253                                 [
47254                                     -98.850835,
47255                                     26.364077
47256                                 ],
47257                                 [
47258                                     -98.860524,
47259                                     26.366299
47260                                 ],
47261                                 [
47262                                     -98.870214,
47263                                     26.372138
47264                                 ],
47265                                 [
47266                                     -98.893029,
47267                                     26.367849
47268                                 ],
47269                                 [
47270                                     -98.9299,
47271                                     26.39224
47272                                 ],
47273                                 [
47274                                     -98.945377,
47275                                     26.378288
47276                                 ],
47277                                 [
47278                                     -98.954136,
47279                                     26.393946
47280                                 ],
47281                                 [
47282                                     -98.962844,
47283                                     26.399527
47284                                 ],
47285                                 [
47286                                     -98.986951,
47287                                     26.400095
47288                                 ],
47289                                 [
47290                                     -99.004056,
47291                                     26.393842
47292                                 ],
47293                                 [
47294                                     -99.010515,
47295                                     26.392602
47296                                 ],
47297                                 [
47298                                     -99.016432,
47299                                     26.394462
47300                                 ],
47301                                 [
47302                                     -99.022995,
47303                                     26.403351
47304                                 ],
47305                                 [
47306                                     -99.027878,
47307                                     26.406245
47308                                 ],
47309                                 [
47310                                     -99.047645,
47311                                     26.406968
47312                                 ],
47313                                 [
47314                                     -99.066351,
47315                                     26.404746
47316                                 ],
47317                                 [
47318                                     -99.085498,
47319                                     26.40764
47320                                 ],
47321                                 [
47322                                     -99.106427,
47323                                     26.423039
47324                                 ],
47325                                 [
47326                                     -99.108907,
47327                                     26.434253
47328                                 ],
47329                                 [
47330                                     -99.102525,
47331                                     26.446966
47332                                 ],
47333                                 [
47334                                     -99.09374,
47335                                     26.459781
47336                                 ],
47337                                 [
47338                                     -99.089373,
47339                                     26.47115
47340                                 ],
47341                                 [
47342                                     -99.091492,
47343                                     26.484018
47344                                 ],
47345                                 [
47346                                     -99.10299,
47347                                     26.512078
47348                                 ],
47349                                 [
47350                                     -99.115108,
47351                                     26.525617
47352                                 ],
47353                                 [
47354                                     -99.140946,
47355                                     26.531405
47356                                 ],
47357                                 [
47358                                     -99.164873,
47359                                     26.540448
47360                                 ],
47361                                 [
47362                                     -99.17128,
47363                                     26.563961
47364                                 ],
47365                                 [
47366                                     -99.171548,
47367                                     26.56583
47368                                 ],
47369                                 [
47370                                     -99.213953,
47371                                     26.568537
47372                                 ],
47373                                 [
47374                                     -99.242801,
47375                                     26.579723
47376                                 ],
47377                                 [
47378                                     -99.254575,
47379                                     26.6018
47380                                 ],
47381                                 [
47382                                     -99.258844,
47383                                     26.614752
47384                                 ],
47385                                 [
47386                                     -99.277683,
47387                                     26.638007
47388                                 ],
47389                                 [
47390                                     -99.281951,
47391                                     26.649781
47392                                 ],
47393                                 [
47394                                     -99.277389,
47395                                     26.657729
47396                                 ],
47397                                 [
47398                                     -99.26635,
47399                                     26.653314
47400                                 ],
47401                                 [
47402                                     -99.252662,
47403                                     26.644483
47404                                 ],
47405                                 [
47406                                     -99.240299,
47407                                     26.639184
47408                                 ],
47409                                 [
47410                                     -99.244861,
47411                                     26.652431
47412                                 ],
47413                                 [
47414                                     -99.240299,
47415                                     26.697763
47416                                 ],
47417                                 [
47418                                     -99.242507,
47419                                     26.713658
47420                                 ],
47421                                 [
47422                                     -99.252368,
47423                                     26.743683
47424                                 ],
47425                                 [
47426                                     -99.254575,
47427                                     26.75899
47428                                 ],
47429                                 [
47430                                     -99.252368,
47431                                     26.799024
47432                                 ],
47433                                 [
47434                                     -99.254575,
47435                                     26.810504
47436                                 ],
47437                                 [
47438                                     -99.257666,
47439                                     26.813153
47440                                 ],
47441                                 [
47442                                     -99.262229,
47443                                     26.814036
47444                                 ],
47445                                 [
47446                                     -99.266497,
47447                                     26.817863
47448                                 ],
47449                                 [
47450                                     -99.268263,
47451                                     26.827872
47452                                 ],
47453                                 [
47454                                     -99.271649,
47455                                     26.832876
47456                                 ],
47457                                 [
47458                                     -99.289458,
47459                                     26.84465
47460                                 ],
47461                                 [
47462                                     -99.308444,
47463                                     26.830521
47464                                 ],
47465                                 [
47466                                     -99.316539,
47467                                     26.822279
47468                                 ],
47469                                 [
47470                                     -99.323457,
47471                                     26.810504
47472                                 ],
47473                                 [
47474                                     -99.328166,
47475                                     26.797258
47476                                 ],
47477                                 [
47478                                     -99.329197,
47479                                     26.789016
47480                                 ],
47481                                 [
47482                                     -99.331699,
47483                                     26.78254
47484                                 ],
47485                                 [
47486                                     -99.340383,
47487                                     26.77312
47488                                 ],
47489                                 [
47490                                     -99.366728,
47491                                     26.761345
47492                                 ],
47493                                 [
47494                                     -99.380269,
47495                                     26.777241
47496                                 ],
47497                                 [
47498                                     -99.391896,
47499                                     26.796963
47500                                 ],
47501                                 [
47502                                     -99.412207,
47503                                     26.796963
47504                                 ],
47505                                 [
47506                                     -99.410883,
47507                                     26.808149
47508                                 ],
47509                                 [
47510                                     -99.405437,
47511                                     26.818452
47512                                 ],
47513                                 [
47514                                     -99.396606,
47515                                     26.824928
47516                                 ],
47517                                 [
47518                                     -99.384979,
47519                                     26.824928
47520                                 ],
47521                                 [
47522                                     -99.377178,
47523                                     26.816686
47524                                 ],
47525                                 [
47526                                     -99.374823,
47527                                     26.804028
47528                                 ],
47529                                 [
47530                                     -99.374234,
47531                                     26.791076
47532                                 ],
47533                                 [
47534                                     -99.371291,
47535                                     26.783128
47536                                 ],
47537                                 [
47538                                     -99.360694,
47539                                     26.780479
47540                                 ],
47541                                 [
47542                                     -99.359369,
47543                                     26.790487
47544                                 ],
47545                                 [
47546                                     -99.36452,
47547                                     26.810504
47548                                 ],
47549                                 [
47550                                     -99.357897,
47551                                     26.822279
47552                                 ],
47553                                 [
47554                                     -99.351274,
47555                                     26.83111
47556                                 ],
47557                                 [
47558                                     -99.346123,
47559                                     26.840824
47560                                 ],
47561                                 [
47562                                     -99.344062,
47563                                     26.855247
47564                                 ],
47565                                 [
47566                                     -99.348772,
47567                                     26.899696
47568                                 ],
47569                                 [
47570                                     -99.355101,
47571                                     26.920302
47572                                 ],
47573                                 [
47574                                     -99.36452,
47575                                     26.934726
47576                                 ],
47577                                 [
47578                                     -99.403377,
47579                                     26.952093
47580                                 ],
47581                                 [
47582                                     -99.413974,
47583                                     26.964162
47584                                 ],
47585                                 [
47586                                     -99.401758,
47587                                     26.985651
47588                                 ],
47589                                 [
47590                                     -99.399991,
47591                                     26.999192
47592                                 ],
47593                                 [
47594                                     -99.418831,
47595                                     27.007728
47596                                 ],
47597                                 [
47598                                     -99.441938,
47599                                     27.013615
47600                                 ],
47601                                 [
47602                                     -99.453271,
47603                                     27.019797
47604                                 ],
47605                                 [
47606                                     -99.455332,
47607                                     27.025979
47608                                 ],
47609                                 [
47610                                     -99.464751,
47611                                     27.039225
47612                                 ],
47613                                 [
47614                                     -99.466959,
47615                                     27.047467
47616                                 ],
47617                                 [
47618                                     -99.462544,
47619                                     27.057181
47620                                 ],
47621                                 [
47622                                     -99.461635,
47623                                     27.056839
47624                                 ],
47625                                 [
47626                                     -99.461728,
47627                                     27.056954
47628                                 ],
47629                                 [
47630                                     -99.442039,
47631                                     27.089614
47632                                 ],
47633                                 [
47634                                     -99.439404,
47635                                     27.098347
47636                                 ],
47637                                 [
47638                                     -99.441419,
47639                                     27.107494
47640                                 ],
47641                                 [
47642                                     -99.445734,
47643                                     27.114728
47644                                 ],
47645                                 [
47646                                     -99.450178,
47647                                     27.120465
47648                                 ],
47649                                 [
47650                                     -99.452452,
47651                                     27.125012
47652                                 ],
47653                                 [
47654                                     -99.450333,
47655                                     27.145166
47656                                 ],
47657                                 [
47658                                     -99.435786,
47659                                     27.188419
47660                                 ],
47661                                 [
47662                                     -99.431988,
47663                                     27.207591
47664                                 ],
47665                                 [
47666                                     -99.434029,
47667                                     27.22697
47668                                 ],
47669                                 [
47670                                     -99.440902,
47671                                     27.244798
47672                                 ],
47673                                 [
47674                                     -99.451832,
47675                                     27.26118
47676                                 ],
47677                                 [
47678                                     -99.46612,
47679                                     27.276527
47680                                 ],
47681                                 [
47682                                     -99.468963,
47683                                     27.278233
47684                                 ],
47685                                 [
47686                                     -99.480409,
47687                                     27.283297
47688                                 ],
47689                                 [
47690                                     -99.482941,
47691                                     27.286708
47692                                 ],
47693                                 [
47694                                     -99.484879,
47695                                     27.294821
47696                                 ],
47697                                 [
47698                                     -99.486584,
47699                                     27.297611
47700                                 ],
47701                                 [
47702                                     -99.493199,
47703                                     27.30128
47704                                 ],
47705                                 [
47706                                     -99.521362,
47707                                     27.311254
47708                                 ],
47709                                 [
47710                                     -99.5148,
47711                                     27.321796
47712                                 ],
47713                                 [
47714                                     -99.497591,
47715                                     27.338798
47716                                 ],
47717                                 [
47718                                     -99.494026,
47719                                     27.348203
47720                                 ],
47721                                 [
47722                                     -99.492889,
47723                                     27.358848
47724                                 ],
47725                                 [
47726                                     -99.487721,
47727                                     27.37187
47728                                 ],
47729                                 [
47730                                     -99.484621,
47731                                     27.391766
47732                                 ],
47733                                 [
47734                                     -99.475706,
47735                                     27.414762
47736                                 ],
47737                                 [
47738                                     -99.472916,
47739                                     27.426647
47740                                 ],
47741                                 [
47742                                     -99.473639,
47743                                     27.463803
47744                                 ],
47745                                 [
47746                                     -99.472916,
47747                                     27.468299
47748                                 ],
47749                                 [
47750                                     -99.47643,
47751                                     27.48251
47752                                 ],
47753                                 [
47754                                     -99.480409,
47755                                     27.490778
47756                                 ],
47757                                 [
47758                                     -99.48829,
47759                                     27.494654
47760                                 ],
47761                                 [
47762                                     -99.503689,
47763                                     27.495584
47764                                 ],
47765                                 [
47766                                     -99.509503,
47767                                     27.500028
47768                                 ],
47769                                 [
47770                                     -99.510071,
47771                                     27.510518
47772                                 ],
47773                                 [
47774                                     -99.507074,
47775                                     27.533437
47776                                 ],
47777                                 [
47778                                     -99.507203,
47779                                     27.57377
47780                                 ],
47781                                 [
47782                                     -99.515006,
47783                                     27.588601
47784                                 ],
47785                                 [
47786                                     -99.535031,
47787                                     27.604828
47788                                 ],
47789                                 [
47790                                     -99.55503,
47791                                     27.613509
47792                                 ],
47793                                 [
47794                                     -99.572264,
47795                                     27.61847
47796                                 ],
47797                                 [
47798                                     -99.578232,
47799                                     27.622811
47800                                 ],
47801                                 [
47802                                     -99.590247,
47803                                     27.642061
47804                                 ],
47805                                 [
47806                                     -99.600169,
47807                                     27.646427
47808                                 ],
47809                                 [
47810                                     -99.612442,
47811                                     27.643637
47812                                 ],
47813                                 [
47814                                     -99.633526,
47815                                     27.633069
47816                                 ],
47817                                 [
47818                                     -99.644869,
47819                                     27.632733
47820                                 ],
47821                                 [
47822                                     -99.648642,
47823                                     27.636919
47824                                 ],
47825                                 [
47826                                     -99.658693,
47827                                     27.654024
47828                                 ],
47829                                 [
47830                                     -99.664739,
47831                                     27.659398
47832                                 ],
47833                                 [
47834                                     -99.70037,
47835                                     27.659191
47836                                 ],
47837                                 [
47838                                     -99.705692,
47839                                     27.66317
47840                                 ],
47841                                 [
47842                                     -99.710674,
47843                                     27.670116
47844                                 ],
47845                                 [
47846                                     -99.723056,
47847                                     27.687381
47848                                 ],
47849                                 [
47850                                     -99.730652,
47851                                     27.691825
47852                                 ],
47853                                 [
47854                                     -99.734037,
47855                                     27.702031
47856                                 ],
47857                                 [
47858                                     -99.736311,
47859                                     27.713607
47860                                 ],
47861                                 [
47862                                     -99.740445,
47863                                     27.722159
47864                                 ],
47865                                 [
47866                                     -99.747344,
47867                                     27.726009
47868                                 ],
47869                                 [
47870                                     -99.765198,
47871                                     27.731177
47872                                 ],
47873                                 [
47874                                     -99.774577,
47875                                     27.735828
47876                                 ],
47877                                 [
47878                                     -99.78685,
47879                                     27.748488
47880                                 ],
47881                                 [
47882                                     -99.795428,
47883                                     27.761924
47884                                 ],
47885                                 [
47886                                     -99.806963,
47887                                     27.771423
47888                                 ],
47889                                 [
47890                                     -99.808167,
47891                                     27.772414
47892                                 ],
47893                                 [
47894                                     -99.83292,
47895                                     27.776755
47896                                 ],
47897                                 [
47898                                     -99.832971,
47899                                     27.782181
47900                                 ],
47901                                 [
47902                                     -99.844779,
47903                                     27.793576
47904                                 ],
47905                                 [
47906                                     -99.858241,
47907                                     27.803524
47908                                 ],
47909                                 [
47910                                     -99.863357,
47911                                     27.804661
47912                                 ],
47913                                 [
47914                                     -99.864727,
47915                                     27.814324
47916                                 ],
47917                                 [
47918                                     -99.861858,
47919                                     27.83608
47920                                 ],
47921                                 [
47922                                     -99.863357,
47923                                     27.845666
47924                                 ],
47925                                 [
47926                                     -99.870928,
47927                                     27.854477
47928                                 ],
47929                                 [
47930                                     -99.880204,
47931                                     27.859231
47932                                 ],
47933                                 [
47934                                     -99.888007,
47935                                     27.864812
47936                                 ],
47937                                 [
47938                                     -99.891288,
47939                                     27.876026
47940                                 ],
47941                                 [
47942                                     -99.882684,
47943                                     27.89158
47944                                 ],
47945                                 [
47946                                     -99.878808,
47947                                     27.901838
47948                                 ],
47949                                 [
47950                                     -99.88134,
47951                                     27.906463
47952                                 ],
47953                                 [
47954                                     -99.896766,
47955                                     27.912923
47956                                 ],
47957                                 [
47958                                     -99.914336,
47959                                     27.928245
47960                                 ],
47961                                 [
47962                                     -99.929916,
47963                                     27.946331
47964                                 ],
47965                                 [
47966                                     -99.939683,
47967                                     27.961085
47968                                 ],
47969                                 [
47970                                     -99.928289,
47971                                     27.975761
47972                                 ],
47973                                 [
47974                                     -99.940717,
47975                                     27.983254
47976                                 ],
47977                                 [
47978                                     -99.961852,
47979                                     27.987492
47980                                 ],
47981                                 [
47982                                     -99.976606,
47983                                     27.992453
47984                                 ],
47985                                 [
47986                                     -99.991127,
47987                                     28.007801
47988                                 ],
47989                                 [
47990                                     -100.000584,
47991                                     28.02041
47992                                 ],
47993                                 [
47994                                     -100.007457,
47995                                     28.033561
47996                                 ],
47997                                 [
47998                                     -100.014123,
47999                                     28.050459
48000                                 ],
48001                                 [
48002                                     -100.013503,
48003                                     28.056971
48004                                 ],
48005                                 [
48006                                     -100.010506,
48007                                     28.063611
48008                                 ],
48009                                 [
48010                                     -100.010196,
48011                                     28.068882
48012                                 ],
48013                                 [
48014                                     -100.017585,
48015                                     28.070949
48016                                 ],
48017                                 [
48018                                     -100.031538,
48019                                     28.081801
48020                                 ],
48021                                 [
48022                                     -100.045077,
48023                                     28.095289
48024                                 ],
48025                                 [
48026                                     -100.048023,
48027                                     28.102523
48028                                 ],
48029                                 [
48030                                     -100.048901,
48031                                     28.115959
48032                                 ],
48033                                 [
48034                                     -100.056498,
48035                                     28.137922
48036                                 ],
48037                                 [
48038                                     -100.074895,
48039                                     28.154407
48040                                 ],
48041                                 [
48042                                     -100.172873,
48043                                     28.198538
48044                                 ],
48045                                 [
48046                                     -100.189203,
48047                                     28.201329
48048                                 ],
48049                                 [
48050                                     -100.197626,
48051                                     28.207168
48052                                 ],
48053                                 [
48054                                     -100.201192,
48055                                     28.220346
48056                                 ],
48057                                 [
48058                                     -100.202949,
48059                                     28.234428
48060                                 ],
48061                                 [
48062                                     -100.205946,
48063                                     28.242877
48064                                 ],
48065                                 [
48066                                     -100.212819,
48067                                     28.245073
48068                                 ],
48069                                 [
48070                                     -100.240724,
48071                                     28.249698
48072                                 ],
48073                                 [
48074                                     -100.257932,
48075                                     28.260524
48076                                 ],
48077                                 [
48078                                     -100.275089,
48079                                     28.277242
48080                                 ],
48081                                 [
48082                                     -100.284339,
48083                                     28.296517
48084                                 ],
48085                                 [
48086                                     -100.277931,
48087                                     28.314888
48088                                 ],
48089                                 [
48090                                     -100.278551,
48091                                     28.331088
48092                                 ],
48093                                 [
48094                                     -100.293899,
48095                                     28.353413
48096                                 ],
48097                                 [
48098                                     -100.322631,
48099                                     28.386899
48100                                 ],
48101                                 [
48102                                     -100.331675,
48103                                     28.422013
48104                                 ],
48105                                 [
48106                                     -100.336326,
48107                                     28.458574
48108                                 ],
48109                                 [
48110                                     -100.340201,
48111                                     28.464259
48112                                 ],
48113                                 [
48114                                     -100.348315,
48115                                     28.470253
48116                                 ],
48117                                 [
48118                                     -100.355549,
48119                                     28.478185
48120                                 ],
48121                                 [
48122                                     -100.35679,
48123                                     28.489322
48124                                 ],
48125                                 [
48126                                     -100.351622,
48127                                     28.496711
48128                                 ],
48129                                 [
48130                                     -100.322631,
48131                                     28.510406
48132                                 ],
48133                                 [
48134                                     -100.364024,
48135                                     28.524797
48136                                 ],
48137                                 [
48138                                     -100.38423,
48139                                     28.537174
48140                                 ],
48141                                 [
48142                                     -100.397769,
48143                                     28.557586
48144                                 ],
48145                                 [
48146                                     -100.398751,
48147                                     28.568645
48148                                 ],
48149                                 [
48150                                     -100.397097,
48151                                     28.592726
48152                                 ],
48153                                 [
48154                                     -100.401438,
48155                                     28.60226
48156                                 ],
48157                                 [
48158                                     -100.411463,
48159                                     28.609314
48160                                 ],
48161                                 [
48162                                     -100.434821,
48163                                     28.619133
48164                                 ],
48165                                 [
48166                                     -100.44619,
48167                                     28.626497
48168                                 ],
48169                                 [
48170                                     -100.444898,
48171                                     28.643782
48172                                 ],
48173                                 [
48174                                     -100.481381,
48175                                     28.686054
48176                                 ],
48177                                 [
48178                                     -100.493939,
48179                                     28.708378
48180                                 ],
48181                                 [
48182                                     -100.519054,
48183                                     28.804961
48184                                 ],
48185                                 [
48186                                     -100.524996,
48187                                     28.814831
48188                                 ],
48189                                 [
48190                                     -100.529285,
48191                                     28.819947
48192                                 ],
48193                                 [
48194                                     -100.534453,
48195                                     28.830231
48196                                 ],
48197                                 [
48198                                     -100.538639,
48199                                     28.835631
48200                                 ],
48201                                 [
48202                                     -100.54515,
48203                                     28.83899
48204                                 ],
48205                                 [
48206                                     -100.559671,
48207                                     28.839378
48208                                 ],
48209                                 [
48210                                     -100.566234,
48211                                     28.842504
48212                                 ],
48213                                 [
48214                                     -100.569696,
48215                                     28.84961
48216                                 ],
48217                                 [
48218                                     -100.56334,
48219                                     28.86209
48220                                 ],
48221                                 [
48222                                     -100.566234,
48223                                     28.869789
48224                                 ],
48225                                 [
48226                                     -100.571763,
48227                                     28.8732
48228                                 ],
48229                                 [
48230                                     -100.586543,
48231                                     28.879789
48232                                 ],
48233                                 [
48234                                     -100.58954,
48235                                     28.883458
48236                                 ],
48237                                 [
48238                                     -100.594966,
48239                                     28.899322
48240                                 ],
48241                                 [
48242                                     -100.606955,
48243                                     28.910123
48244                                 ],
48245                                 [
48246                                     -100.618841,
48247                                     28.917926
48248                                 ],
48249                                 [
48250                                     -100.624318,
48251                                     28.924721
48252                                 ],
48253                                 [
48254                                     -100.624783,
48255                                     28.93777
48256                                 ],
48257                                 [
48258                                     -100.626696,
48259                                     28.948338
48260                                 ],
48261                                 [
48262                                     -100.630778,
48263                                     28.956683
48264                                 ],
48265                                 [
48266                                     -100.637909,
48267                                     28.962884
48268                                 ],
48269                                 [
48270                                     -100.628918,
48271                                     28.98433
48272                                 ],
48273                                 [
48274                                     -100.632793,
48275                                     29.005156
48276                                 ],
48277                                 [
48278                                     -100.652224,
48279                                     29.044817
48280                                 ],
48281                                 [
48282                                     -100.660854,
48283                                     29.102669
48284                                 ],
48285                                 [
48286                                     -100.668967,
48287                                     29.116208
48288                                 ],
48289                                 [
48290                                     -100.678165,
48291                                     29.119412
48292                                 ],
48293                                 [
48294                                     -100.690826,
48295                                     29.121014
48296                                 ],
48297                                 [
48298                                     -100.70204,
48299                                     29.12365
48300                                 ],
48301                                 [
48302                                     -100.706846,
48303                                     29.130187
48304                                 ],
48305                                 [
48306                                     -100.70974,
48307                                     29.135561
48308                                 ],
48309                                 [
48310                                     -100.762501,
48311                                     29.173776
48312                                 ],
48313                                 [
48314                                     -100.770098,
48315                                     29.187289
48316                                 ],
48317                                 [
48318                                     -100.762088,
48319                                     29.208658
48320                                 ],
48321                                 [
48322                                     -100.783172,
48323                                     29.243074
48324                                 ],
48325                                 [
48326                                     -100.796143,
48327                                     29.257673
48328                                 ],
48329                                 [
48330                                     -100.81609,
48331                                     29.270773
48332                                 ],
48333                                 [
48334                                     -100.86389,
48335                                     29.290616
48336                                 ],
48337                                 [
48338                                     -100.871797,
48339                                     29.296456
48340                                 ],
48341                                 [
48342                                     -100.891227,
48343                                     29.318547
48344                                 ],
48345                                 [
48346                                     -100.91474,
48347                                     29.337048
48348                                 ],
48349                                 [
48350                                     -100.987397,
48351                                     29.366322
48352                                 ],
48353                                 [
48354                                     -100.998301,
48355                                     29.372472
48356                                 ],
48357                                 [
48358                                     -101.008068,
48359                                     29.380585
48360                                 ],
48361                                 [
48362                                     -101.016232,
48363                                     29.390068
48364                                 ],
48365                                 [
48366                                     -101.022175,
48367                                     29.40048
48368                                 ],
48369                                 [
48370                                     -101.025948,
48371                                     29.414356
48372                                 ],
48373                                 [
48374                                     -101.029617,
48375                                     29.442984
48376                                 ],
48377                                 [
48378                                     -101.037782,
48379                                     29.460063
48380                                 ],
48381                                 [
48382                                     -101.039026,
48383                                     29.460452
48384                                 ],
48385                                 [
48386                                     -101.040188,
48387                                     29.457132
48388                                 ],
48389                                 [
48390                                     -101.045487,
48391                                     29.451245
48392                                 ],
48393                                 [
48394                                     -101.060205,
48395                                     29.449184
48396                                 ],
48397                                 [
48398                                     -101.067711,
48399                                     29.45095
48400                                 ],
48401                                 [
48402                                     -101.076101,
48403                                     29.453894
48404                                 ],
48405                                 [
48406                                     -101.085962,
48407                                     29.454483
48408                                 ],
48409                                 [
48410                                     -101.098031,
48411                                     29.449184
48412                                 ],
48413                                 [
48414                                     -101.113043,
48415                                     29.466552
48416                                 ],
48417                                 [
48418                                     -101.142774,
48419                                     29.475383
48420                                 ],
48421                                 [
48422                                     -101.174124,
48423                                     29.475971
48424                                 ],
48425                                 [
48426                                     -101.193699,
48427                                     29.469495
48428                                 ],
48429                                 [
48430                                     -101.198703,
48431                                     29.473911
48432                                 ],
48433                                 [
48434                                     -101.198851,
48435                                     29.476854
48436                                 ],
48437                                 [
48438                                     -101.184132,
48439                                     29.497754
48440                                 ],
48441                                 [
48442                                     -101.184868,
48443                                     29.512767
48444                                 ],
48445                                 [
48446                                     -101.195171,
48447                                     29.521892
48448                                 ],
48449                                 [
48450                                     -101.214157,
48451                                     29.518065
48452                                 ],
48453                                 [
48454                                     -101.245213,
48455                                     29.493044
48456                                 ],
48457                                 [
48458                                     -101.265818,
48459                                     29.487157
48460                                 ],
48461                                 [
48462                                     -101.290545,
48463                                     29.49746
48464                                 ],
48465                                 [
48466                                     -101.297315,
48467                                     29.503936
48468                                 ],
48469                                 [
48470                                     -101.300995,
48471                                     29.512767
48472                                 ],
48473                                 [
48474                                     -101.294372,
48475                                     29.520715
48476                                 ],
48477                                 [
48478                                     -101.273177,
48479                                     29.524247
48480                                 ],
48481                                 [
48482                                     -101.259195,
48483                                     29.533372
48484                                 ],
48485                                 [
48486                                     -101.243888,
48487                                     29.554861
48488                                 ],
48489                                 [
48490                                     -101.231966,
48491                                     29.580176
48492                                 ],
48493                                 [
48494                                     -101.227845,
48495                                     29.599899
48496                                 ],
48497                                 [
48498                                     -101.239178,
48499                                     29.616677
48500                                 ],
48501                                 [
48502                                     -101.26052,
48503                                     29.613439
48504                                 ],
48505                                 [
48506                                     -101.281272,
48507                                     29.597249
48508                                 ],
48509                                 [
48510                                     -101.290545,
48511                                     29.575761
48512                                 ],
48513                                 [
48514                                     -101.295255,
48515                                     29.570168
48516                                 ],
48517                                 [
48518                                     -101.306146,
48519                                     29.574583
48520                                 ],
48521                                 [
48522                                     -101.317626,
48523                                     29.584003
48524                                 ],
48525                                 [
48526                                     -101.323955,
48527                                     29.592539
48528                                 ],
48529                                 [
48530                                     -101.323661,
48531                                     29.603137
48532                                 ],
48533                                 [
48534                                     -101.318804,
48535                                     29.616383
48536                                 ],
48537                                 [
48538                                     -101.311445,
48539                                     29.628158
48540                                 ],
48541                                 [
48542                                     -101.303497,
48543                                     29.634045
48544                                 ],
48545                                 [
48546                                     -101.303669,
48547                                     29.631411
48548                                 ],
48549                                 [
48550                                     -101.302727,
48551                                     29.633851
48552                                 ],
48553                                 [
48554                                     -101.301073,
48555                                     29.649509
48556                                 ],
48557                                 [
48558                                     -101.30978,
48559                                     29.654548
48560                                 ],
48561                                 [
48562                                     -101.336239,
48563                                     29.654315
48564                                 ],
48565                                 [
48566                                     -101.349029,
48567                                     29.660103
48568                                 ],
48569                                 [
48570                                     -101.357684,
48571                                     29.667441
48572                                 ],
48573                                 [
48574                                     -101.364351,
48575                                     29.676665
48576                                 ],
48577                                 [
48578                                     -101.376624,
48579                                     29.700643
48580                                 ],
48581                                 [
48582                                     -101.383368,
48583                                     29.718497
48584                                 ],
48585                                 [
48586                                     -101.39962,
48587                                     29.740718
48588                                 ],
48589                                 [
48590                                     -101.406545,
48591                                     29.752888
48592                                 ],
48593                                 [
48594                                     -101.409309,
48595                                     29.765781
48596                                 ],
48597                                 [
48598                                     -101.405098,
48599                                     29.778442
48600                                 ],
48601                                 [
48602                                     -101.414012,
48603                                     29.774411
48604                                 ],
48605                                 [
48606                                     -101.424218,
48607                                     29.771414
48608                                 ],
48609                                 [
48610                                     -101.435096,
48611                                     29.770122
48612                                 ],
48613                                 [
48614                                     -101.446103,
48615                                     29.771052
48616                                 ],
48617                                 [
48618                                     -101.455689,
48619                                     29.77591
48620                                 ],
48621                                 [
48622                                     -101.462433,
48623                                     29.788932
48624                                 ],
48625                                 [
48626                                     -101.470908,
48627                                     29.791516
48628                                 ],
48629                                 [
48630                                     -101.490286,
48631                                     29.785547
48632                                 ],
48633                                 [
48634                                     -101.505763,
48635                                     29.773894
48636                                 ],
48637                                 [
48638                                     -101.521809,
48639                                     29.765936
48640                                 ],
48641                                 [
48642                                     -101.542893,
48643                                     29.771052
48644                                 ],
48645                                 [
48646                                     -101.539689,
48647                                     29.779191
48648                                 ],
48649                                 [
48650                                     -101.530516,
48651                                     29.796477
48652                                 ],
48653                                 [
48654                                     -101.528604,
48655                                     29.801438
48656                                 ],
48657                                 [
48658                                     -101.531912,
48659                                     29.811101
48660                                 ],
48661                                 [
48662                                     -101.539172,
48663                                     29.817974
48664                                 ],
48665                                 [
48666                                     -101.546458,
48667                                     29.820145
48668                                 ],
48669                                 [
48670                                     -101.549766,
48671                                     29.815701
48672                                 ],
48673                                 [
48674                                     -101.553977,
48675                                     29.796684
48676                                 ],
48677                                 [
48678                                     -101.564907,
48679                                     29.786478
48680                                 ],
48681                                 [
48682                                     -101.580281,
48683                                     29.781568
48684                                 ],
48685                                 [
48686                                     -101.632216,
48687                                     29.775651
48688                                 ],
48689                                 [
48690                                     -101.794531,
48691                                     29.795857
48692                                 ],
48693                                 [
48694                                     -101.80298,
48695                                     29.801438
48696                                 ],
48697                                 [
48698                                     -101.805978,
48699                                     29.811928
48700                                 ],
48701                                 [
48702                                     -101.812695,
48703                                     29.812032
48704                                 ],
48705                                 [
48706                                     -101.82409,
48707                                     29.805184
48708                                 ],
48709                                 [
48710                                     -101.857602,
48711                                     29.805184
48712                                 ],
48713                                 [
48714                                     -101.877524,
48715                                     29.810843
48716                                 ],
48717                                 [
48718                                     -101.88742,
48719                                     29.81229
48720                                 ],
48721                                 [
48722                                     -101.895455,
48723                                     29.808621
48724                                 ],
48725                                 [
48726                                     -101.90238,
48727                                     29.803247
48728                                 ],
48729                                 [
48730                                     -101.910881,
48731                                     29.799888
48732                                 ],
48733                                 [
48734                                     -101.920157,
48735                                     29.798182
48736                                 ],
48737                                 [
48738                                     -101.929613,
48739                                     29.797717
48740                                 ],
48741                                 [
48742                                     -101.942662,
48743                                     29.803608
48744                                 ],
48745                                 [
48746                                     -101.957054,
48747                                     29.814047
48748                                 ],
48749                                 [
48750                                     -101.972246,
48751                                     29.818181
48752                                 ],
48753                                 [
48754                                     -101.98793,
48755                                     29.805184
48756                                 ],
48757                                 [
48758                                     -102.014595,
48759                                     29.810998
48760                                 ],
48761                                 [
48762                                     -102.109344,
48763                                     29.80211
48764                                 ],
48765                                 [
48766                                     -102.145647,
48767                                     29.815701
48768                                 ],
48769                                 [
48770                                     -102.157248,
48771                                     29.824537
48772                                 ],
48773                                 [
48774                                     -102.203679,
48775                                     29.846138
48776                                 ],
48777                                 [
48778                                     -102.239775,
48779                                     29.849135
48780                                 ],
48781                                 [
48782                                     -102.253444,
48783                                     29.855285
48784                                 ],
48785                                 [
48786                                     -102.258276,
48787                                     29.873475
48788                                 ],
48789                                 [
48790                                     -102.276181,
48791                                     29.869547
48792                                 ],
48793                                 [
48794                                     -102.289023,
48795                                     29.878126
48796                                 ],
48797                                 [
48798                                     -102.302175,
48799                                     29.889391
48800                                 ],
48801                                 [
48802                                     -102.321011,
48803                                     29.893939
48804                                 ],
48805                                 [
48806                                     -102.330235,
48807                                     29.888926
48808                                 ],
48809                                 [
48810                                     -102.339769,
48811                                     29.870633
48812                                 ],
48813                                 [
48814                                     -102.351061,
48815                                     29.866602
48816                                 ],
48817                                 [
48818                                     -102.36323,
48819                                     29.864276
48820                                 ],
48821                                 [
48822                                     -102.370723,
48823                                     29.857765
48824                                 ],
48825                                 [
48826                                     -102.374547,
48827                                     29.848102
48828                                 ],
48829                                 [
48830                                     -102.376589,
48831                                     29.821488
48832                                 ],
48833                                 [
48834                                     -102.380051,
48835                                     29.811386
48836                                 ],
48837                                 [
48838                                     -102.404132,
48839                                     29.780793
48840                                 ],
48841                                 [
48842                                     -102.406096,
48843                                     29.777279
48844                                 ],
48845                                 [
48846                                     -102.515288,
48847                                     29.784721
48848                                 ],
48849                                 [
48850                                     -102.523066,
48851                                     29.782318
48852                                 ],
48853                                 [
48854                                     -102.531127,
48855                                     29.769915
48856                                 ],
48857                                 [
48858                                     -102.54154,
48859                                     29.762474
48860                                 ],
48861                                 [
48862                                     -102.543349,
48863                                     29.760123
48864                                 ],
48865                                 [
48866                                     -102.546578,
48867                                     29.757875
48868                                 ],
48869                                 [
48870                                     -102.553141,
48871                                     29.756738
48872                                 ],
48873                                 [
48874                                     -102.558309,
48875                                     29.759089
48876                                 ],
48877                                 [
48878                                     -102.562882,
48879                                     29.769347
48880                                 ],
48881                                 [
48882                                     -102.566758,
48883                                     29.771052
48884                                 ],
48885                                 [
48886                                     -102.58531,
48887                                     29.764696
48888                                 ],
48889                                 [
48890                                     -102.621225,
48891                                     29.747281
48892                                 ],
48893                                 [
48894                                     -102.638743,
48895                                     29.743715
48896                                 ],
48897                                 [
48898                                     -102.676054,
48899                                     29.74449
48900                                 ],
48901                                 [
48902                                     -102.683469,
48903                                     29.743715
48904                                 ],
48905                                 [
48906                                     -102.69104,
48907                                     29.736817
48908                                 ],
48909                                 [
48910                                     -102.693624,
48911                                     29.729401
48912                                 ],
48913                                 [
48914                                     -102.694709,
48915                                     29.720616
48916                                 ],
48917                                 [
48918                                     -102.697758,
48919                                     29.709557
48920                                 ],
48921                                 [
48922                                     -102.726748,
48923                                     29.664495
48924                                 ],
48925                                 [
48926                                     -102.73127,
48927                                     29.650594
48928                                 ],
48929                                 [
48930                                     -102.735507,
48931                                     29.649509
48932                                 ],
48933                                 [
48934                                     -102.751656,
48935                                     29.622457
48936                                 ],
48937                                 [
48938                                     -102.75176,
48939                                     29.620157
48940                                 ],
48941                                 [
48942                                     -102.761346,
48943                                     29.603414
48944                                 ],
48945                                 [
48946                                     -102.767598,
48947                                     29.59729
48948                                 ],
48949                                 [
48950                                     -102.779665,
48951                                     29.592303
48952                                 ],
48953                                 [
48954                                     -102.774084,
48955                                     29.579617
48956                                 ],
48957                                 [
48958                                     -102.776461,
48959                                     29.575948
48960                                 ],
48961                                 [
48962                                     -102.785892,
48963                                     29.571814
48964                                 ],
48965                                 [
48966                                     -102.78075,
48967                                     29.558249
48968                                 ],
48969                                 [
48970                                     -102.786512,
48971                                     29.550497
48972                                 ],
48973                                 [
48974                                     -102.795478,
48975                                     29.54427
48976                                 ],
48977                                 [
48978                                     -102.827311,
48979                                     29.470502
48980                                 ],
48981                                 [
48982                                     -102.833951,
48983                                     29.461355
48984                                 ],
48985                                 [
48986                                     -102.839067,
48987                                     29.45195
48988                                 ],
48989                                 [
48990                                     -102.841134,
48991                                     29.438308
48992                                 ],
48993                                 [
48994                                     -102.838705,
48995                                     29.426939
48996                                 ],
48997                                 [
48998                                     -102.834984,
48999                                     29.415699
49000                                 ],
49001                                 [
49002                                     -102.835191,
49003                                     29.403839
49004                                 ],
49005                                 [
49006                                     -102.844545,
49007                                     29.390533
49008                                 ],
49009                                 [
49010                                     -102.845578,
49011                                     29.384719
49012                                 ],
49013                                 [
49014                                     -102.838033,
49015                                     29.370534
49016                                 ],
49017                                 [
49018                                     -102.837672,
49019                                     29.366322
49020                                 ],
49021                                 [
49022                                     -102.84656,
49023                                     29.361749
49024                                 ],
49025                                 [
49026                                     -102.853872,
49027                                     29.361
49028                                 ],
49029                                 [
49030                                     -102.859867,
49031                                     29.361155
49032                                 ],
49033                                 [
49034                                     -102.864957,
49035                                     29.359527
49036                                 ],
49037                                 [
49038                                     -102.876972,
49039                                     29.350871
49040                                 ],
49041                                 [
49042                                     -102.883069,
49043                                     29.343766
49044                                 ],
49045                                 [
49046                                     -102.885188,
49047                                     29.333379
49048                                 ],
49049                                 [
49050                                     -102.885498,
49051                                     29.314801
49052                                 ],
49053                                 [
49054                                     -102.899399,
49055                                     29.276095
49056                                 ],
49057                                 [
49058                                     -102.899709,
49059                                     29.2639
49060                                 ],
49061                                 [
49062                                     -102.892139,
49063                                     29.254391
49064                                 ],
49065                                 [
49066                                     -102.867954,
49067                                     29.240387
49068                                 ],
49069                                 [
49070                                     -102.858781,
49071                                     29.229147
49072                                 ],
49073                                 [
49074                                     -102.869866,
49075                                     29.224781
49076                                 ],
49077                                 [
49078                                     -102.896893,
49079                                     29.220285
49080                                 ],
49081                                 [
49082                                     -102.942265,
49083                                     29.190209
49084                                 ],
49085                                 [
49086                                     -102.947536,
49087                                     29.182018
49088                                 ],
49089                                 [
49090                                     -102.969757,
49091                                     29.192845
49092                                 ],
49093                                 [
49094                                     -102.988386,
49095                                     29.177135
49096                                 ],
49097                                 [
49098                                     -103.015826,
49099                                     29.126776
49100                                 ],
49101                                 [
49102                                     -103.024275,
49103                                     29.116157
49104                                 ],
49105                                 [
49106                                     -103.032621,
49107                                     29.110214
49108                                 ],
49109                                 [
49110                                     -103.072541,
49111                                     29.091404
49112                                 ],
49113                                 [
49114                                     -103.080758,
49115                                     29.085203
49116                                 ],
49117                                 [
49118                                     -103.085589,
49119                                     29.07572
49120                                 ],
49121                                 [
49122                                     -103.091532,
49123                                     29.057866
49124                                 ],
49125                                 [
49126                                     -103.095356,
49127                                     29.060294
49128                                 ],
49129                                 [
49130                                     -103.104684,
49131                                     29.057866
49132                                 ],
49133                                 [
49134                                     -103.109205,
49135                                     29.023372
49136                                 ],
49137                                 [
49138                                     -103.122771,
49139                                     28.996474
49140                                 ],
49141                                 [
49142                                     -103.147989,
49143                                     28.985105
49144                                 ],
49145                                 [
49146                                     -103.187108,
49147                                     28.990221
49148                                 ],
49149                                 [
49150                                     -103.241756,
49151                                     29.003502
49152                                 ],
49153                                 [
49154                                     -103.301545,
49155                                     29.002365
49156                                 ],
49157                                 [
49158                                     -103.316247,
49159                                     29.010065
49160                                 ],
49161                                 [
49162                                     -103.311514,
49163                                     29.026043
49164                                 ],
49165                                 [
49166                                     -103.309994,
49167                                     29.031175
49168                                 ],
49169                                 [
49170                                     -103.3248,
49171                                     29.026808
49172                                 ],
49173                                 [
49174                                     -103.330484,
49175                                     29.023733
49176                                 ],
49177                                 [
49178                                     -103.342602,
49179                                     29.041226
49180                                 ],
49181                                 [
49182                                     -103.351671,
49183                                     29.039417
49184                                 ],
49185                                 [
49186                                     -103.360534,
49187                                     29.029831
49188                                 ],
49189                                 [
49190                                     -103.372083,
49191                                     29.023733
49192                                 ],
49193                                 [
49194                                     -103.38663,
49195                                     29.028798
49196                                 ],
49197                                 [
49198                                     -103.414639,
49199                                     29.052414
49200                                 ],
49201                                 [
49202                                     -103.423605,
49203                                     29.057866
49204                                 ],
49205                                 [
49206                                     -103.435697,
49207                                     29.061121
49208                                 ],
49209                                 [
49210                                     -103.478537,
49211                                     29.08205
49212                                 ],
49213                                 [
49214                                     -103.529748,
49215                                     29.126776
49216                                 ],
49217                                 [
49218                                     -103.535588,
49219                                     29.135122
49220                                 ],
49221                                 [
49222                                     -103.538223,
49223                                     29.142408
49224                                 ],
49225                                 [
49226                                     -103.541711,
49227                                     29.148816
49228                                 ],
49229                                 [
49230                                     -103.550238,
49231                                     29.154656
49232                                 ],
49233                                 [
49234                                     -103.558015,
49235                                     29.156206
49236                                 ],
49237                                 [
49238                                     -103.58499,
49239                                     29.154656
49240                                 ],
49241                                 [
49242                                     -103.673125,
49243                                     29.173569
49244                                 ],
49245                                 [
49246                                     -103.702477,
49247                                     29.187858
49248                                 ],
49249                                 [
49250                                     -103.749476,
49251                                     29.222972
49252                                 ],
49253                                 [
49254                                     -103.759062,
49255                                     29.226848
49256                                 ],
49257                                 [
49258                                     -103.770767,
49259                                     29.229845
49260                                 ],
49261                                 [
49262                                     -103.777718,
49263                                     29.235297
49264                                 ],
49265                                 [
49266                                     -103.769424,
49267                                     29.257543
49268                                 ],
49269                                 [
49270                                     -103.774229,
49271                                     29.267517
49272                                 ],
49273                                 [
49274                                     -103.78366,
49275                                     29.274803
49276                                 ],
49277                                 [
49278                                     -103.794177,
49279                                     29.277594
49280                                 ],
49281                                 [
49282                                     -103.837038,
49283                                     29.279906
49284                                 ]
49285                             ]
49286                         ],
49287                         [
49288                             [
49289                                 [
49290                                     178.301106,
49291                                     52.056551
49292                                 ],
49293                                 [
49294                                     179.595462,
49295                                     52.142083
49296                                 ],
49297                                 [
49298                                     179.825447,
49299                                     51.992849
49300                                 ],
49301                                 [
49302                                     179.661729,
49303                                     51.485763
49304                                 ],
49305                                 [
49306                                     179.723231,
49307                                     51.459963
49308                                 ],
49309                                 [
49310                                     179.408066,
49311                                     51.209841
49312                                 ],
49313                                 [
49314                                     178.411463,
49315                                     51.523605
49316                                 ],
49317                                 [
49318                                     177.698335,
49319                                     51.877899
49320                                 ],
49321                                 [
49322                                     177.16784,
49323                                     51.581866
49324                                 ],
49325                                 [
49326                                     176.487008,
49327                                     52.175325
49328                                 ],
49329                                 [
49330                                     174.484678,
49331                                     52.08716
49332                                 ],
49333                                 [
49334                                     172.866263,
49335                                     52.207379
49336                                 ],
49337                                 [
49338                                     172.825506,
49339                                     52.716846
49340                                 ],
49341                                 [
49342                                     172.747012,
49343                                     52.654022
49344                                 ],
49345                                 [
49346                                     172.08261,
49347                                     52.952695
49348                                 ],
49349                                 [
49350                                     172.942925,
49351                                     53.183013
49352                                 ],
49353                                 [
49354                                     173.029416,
49355                                     52.993628
49356                                 ],
49357                                 [
49358                                     173.127208,
49359                                     52.99494
49360                                 ],
49361                                 [
49362                                     173.143321,
49363                                     52.990383
49364                                 ],
49365                                 [
49366                                     173.175059,
49367                                     52.971747
49368                                 ],
49369                                 [
49370                                     173.182932,
49371                                     52.968373
49372                                 ],
49373                                 [
49374                                     176.45233,
49375                                     52.628178
49376                                 ],
49377                                 [
49378                                     176.468135,
49379                                     52.488358
49380                                 ],
49381                                 [
49382                                     177.900385,
49383                                     52.488358
49384                                 ],
49385                                 [
49386                                     178.007601,
49387                                     52.179677
49388                                 ],
49389                                 [
49390                                     178.301106,
49391                                     52.056551
49392                                 ]
49393                             ]
49394                         ],
49395                         [
49396                             [
49397                                 [
49398                                     -168.899607,
49399                                     65.747626
49400                                 ],
49401                                 [
49402                                     -168.909861,
49403                                     65.739569
49404                                 ],
49405                                 [
49406                                     -168.926218,
49407                                     65.739895
49408                                 ],
49409                                 [
49410                                     -168.942128,
49411                                     65.74372
49412                                 ],
49413                                 [
49414                                     -168.951731,
49415                                     65.75316
49416                                 ],
49417                                 [
49418                                     -168.942983,
49419                                     65.764716
49420                                 ],
49421                                 [
49422                                     -168.920115,
49423                                     65.768866
49424                                 ],
49425                                 [
49426                                     -168.907908,
49427                                     65.768297
49428                                 ],
49429                                 [
49430                                     -168.902781,
49431                                     65.761542
49432                                 ],
49433                                 [
49434                                     -168.899607,
49435                                     65.747626
49436                                 ]
49437                             ]
49438                         ],
49439                         [
49440                             [
49441                                 [
49442                                     -131.160718,
49443                                     54.787192
49444                                 ],
49445                                 [
49446                                     -132.853508,
49447                                     54.482536
49448                                 ],
49449                                 [
49450                                     -134.77719,
49451                                     54.717786
49452                                 ],
49453                                 [
49454                                     -142.6966,
49455                                     55.845503
49456                                 ],
49457                                 [
49458                                     -142.861997,
49459                                     49.948308
49460                                 ],
49461                                 [
49462                                     -155.675916,
49463                                     51.109976
49464                                 ],
49465                                 [
49466                                     -164.492732,
49467                                     50.603976
49468                                 ],
49469                                 [
49470                                     -164.691217,
49471                                     50.997975
49472                                 ],
49473                                 [
49474                                     -171.246993,
49475                                     49.948308
49476                                 ],
49477                                 [
49478                                     -171.215436,
49479                                     50.576636
49480                                 ],
49481                                 [
49482                                     -173.341669,
49483                                     50.968826
49484                                 ],
49485                                 [
49486                                     -173.362022,
49487                                     51.082198
49488                                 ],
49489                                 [
49490                                     -177.799603,
49491                                     51.272899
49492                                 ],
49493                                 [
49494                                     -179.155463,
49495                                     50.982285
49496                                 ],
49497                                 [
49498                                     -179.476076,
49499                                     52.072632
49500                                 ],
49501                                 [
49502                                     -177.11459,
49503                                     52.248701
49504                                 ],
49505                                 [
49506                                     -177.146284,
49507                                     52.789384
49508                                 ],
49509                                 [
49510                                     -174.777218,
49511                                     52.443779
49512                                 ],
49513                                 [
49514                                     -174.773743,
49515                                     52.685853
49516                                 ],
49517                                 [
49518                                     -173.653194,
49519                                     52.704099
49520                                 ],
49521                                 [
49522                                     -173.790528,
49523                                     53.469081
49524                                 ],
49525                                 [
49526                                     -171.063371,
49527                                     53.604473
49528                                 ],
49529                                 [
49530                                     -170.777733,
49531                                     59.291898
49532                                 ],
49533                                 [
49534                                     -174.324884,
49535                                     60.332184
49536                                 ],
49537                                 [
49538                                     -171.736408,
49539                                     62.68026
49540                                 ],
49541                                 [
49542                                     -172.315705,
49543                                     62.725352
49544                                 ],
49545                                 [
49546                                     -171.995091,
49547                                     63.999658
49548                                 ],
49549                                 [
49550                                     -168.501424,
49551                                     65.565173
49552                                 ],
49553                                 [
49554                                     -168.714145,
49555                                     65.546708
49556                                 ],
49557                                 [
49558                                     -168.853077,
49559                                     68.370871
49560                                 ],
49561                                 [
49562                                     -161.115601,
49563                                     72.416214
49564                                 ],
49565                                 [
49566                                     -146.132257,
49567                                     70.607941
49568                                 ],
49569                                 [
49570                                     -140.692512,
49571                                     69.955349
49572                                 ],
49573                                 [
49574                                     -141.145395,
49575                                     69.671641
49576                                 ],
49577                                 [
49578                                     -141.015207,
49579                                     69.654202
49580                                 ],
49581                                 [
49582                                     -141.006459,
49583                                     69.651272
49584                                 ],
49585                                 [
49586                                     -141.005564,
49587                                     69.650946
49588                                 ],
49589                                 [
49590                                     -141.005549,
49591                                     69.650941
49592                                 ],
49593                                 [
49594                                     -141.005471,
49595                                     69.505164
49596                                 ],
49597                                 [
49598                                     -141.001208,
49599                                     60.466879
49600                                 ],
49601                                 [
49602                                     -141.001156,
49603                                     60.321074
49604                                 ],
49605                                 [
49606                                     -140.994929,
49607                                     60.304382
49608                                 ],
49609                                 [
49610                                     -140.979555,
49611                                     60.295804
49612                                 ],
49613                                 [
49614                                     -140.909146,
49615                                     60.28366
49616                                 ],
49617                                 [
49618                                     -140.768457,
49619                                     60.259269
49620                                 ],
49621                                 [
49622                                     -140.660505,
49623                                     60.24051
49624                                 ],
49625                                 [
49626                                     -140.533743,
49627                                     60.218548
49628                                 ],
49629                                 [
49630                                     -140.518705,
49631                                     60.22387
49632                                 ],
49633                                 [
49634                                     -140.506664,
49635                                     60.236324
49636                                 ],
49637                                 [
49638                                     -140.475323,
49639                                     60.276477
49640                                 ],
49641                                 [
49642                                     -140.462791,
49643                                     60.289138
49644                                 ],
49645                                 [
49646                                     -140.447805,
49647                                     60.29446
49648                                 ],
49649                                 [
49650                                     -140.424111,
49651                                     60.293168
49652                                 ],
49653                                 [
49654                                     -140.32497,
49655                                     60.267537
49656                                 ],
49657                                 [
49658                                     -140.169243,
49659                                     60.227229
49660                                 ],
49661                                 [
49662                                     -140.01579,
49663                                     60.187387
49664                                 ],
49665                                 [
49666                                     -139.967757,
49667                                     60.188369
49668                                 ],
49669                                 [
49670                                     -139.916933,
49671                                     60.207851
49672                                 ],
49673                                 [
49674                                     -139.826318,
49675                                     60.256478
49676                                 ],
49677                                 [
49678                                     -139.728417,
49679                                     60.309033
49680                                 ],
49681                                 [
49682                                     -139.679816,
49683                                     60.32681
49684                                 ],
49685                                 [
49686                                     -139.628346,
49687                                     60.334096
49688                                 ],
49689                                 [
49690                                     -139.517965,
49691                                     60.336732
49692                                 ],
49693                                 [
49694                                     -139.413992,
49695                                     60.339212
49696                                 ],
49697                                 [
49698                                     -139.262193,
49699                                     60.342778
49700                                 ],
49701                                 [
49702                                     -139.101608,
49703                                     60.346602
49704                                 ],
49705                                 [
49706                                     -139.079465,
49707                                     60.341021
49708                                 ],
49709                                 [
49710                                     -139.06869,
49711                                     60.322056
49712                                 ],
49713                                 [
49714                                     -139.073186,
49715                                     60.299835
49716                                 ],
49717                                 [
49718                                     -139.113468,
49719                                     60.226816
49720                                 ],
49721                                 [
49722                                     -139.149615,
49723                                     60.161187
49724                                 ],
49725                                 [
49726                                     -139.183231,
49727                                     60.100157
49728                                 ],
49729                                 [
49730                                     -139.182146,
49731                                     60.073389
49732                                 ],
49733                                 [
49734                                     -139.112305,
49735                                     60.031376
49736                                 ],
49737                                 [
49738                                     -139.060207,
49739                                     60.000059
49740                                 ],
49741                                 [
49742                                     -139.051611,
49743                                     59.994892
49744                                 ],
49745                                 [
49746                                     -139.003759,
49747                                     59.977219
49748                                 ],
49749                                 [
49750                                     -138.842425,
49751                                     59.937686
49752                                 ],
49753                                 [
49754                                     -138.742586,
49755                                     59.913192
49756                                 ],
49757                                 [
49758                                     -138.704888,
49759                                     59.898464
49760                                 ],
49761                                 [
49762                                     -138.697188,
49763                                     59.89371
49764                                 ],
49765                                 [
49766                                     -138.692098,
49767                                     59.886888
49768                                 ],
49769                                 [
49770                                     -138.654349,
49771                                     59.805498
49772                                 ],
49773                                 [
49774                                     -138.63745,
49775                                     59.784052
49776                                 ],
49777                                 [
49778                                     -138.59921,
49779                                     59.753822
49780                                 ],
49781                                 [
49782                                     -138.488881,
49783                                     59.696357
49784                                 ],
49785                                 [
49786                                     -138.363617,
49787                                     59.631142
49788                                 ],
49789                                 [
49790                                     -138.219543,
49791                                     59.556004
49792                                 ],
49793                                 [
49794                                     -138.067614,
49795                                     59.476991
49796                                 ],
49797                                 [
49798                                     -137.91057,
49799                                     59.395187
49800                                 ],
49801                                 [
49802                                     -137.758305,
49803                                     59.315915
49804                                 ],
49805                                 [
49806                                     -137.611363,
49807                                     59.239331
49808                                 ],
49809                                 [
49810                                     -137.594181,
49811                                     59.225275
49812                                 ],
49813                                 [
49814                                     -137.582088,
49815                                     59.206568
49816                                 ],
49817                                 [
49818                                     -137.5493,
49819                                     59.134531
49820                                 ],
49821                                 [
49822                                     -137.521007,
49823                                     59.072364
49824                                 ],
49825                                 [
49826                                     -137.484394,
49827                                     58.991904
49828                                 ],
49829                                 [
49830                                     -137.507752,
49831                                     58.939969
49832                                 ],
49833                                 [
49834                                     -137.50876,
49835                                     58.914906
49836                                 ],
49837                                 [
49838                                     -137.486875,
49839                                     58.900075
49840                                 ],
49841                                 [
49842                                     -137.453466,
49843                                     58.899145
49844                                 ],
49845                                 [
49846                                     -137.423106,
49847                                     58.907723
49848                                 ],
49849                                 [
49850                                     -137.338098,
49851                                     58.955472
49852                                 ],
49853                                 [
49854                                     -137.2819,
49855                                     58.98715
49856                                 ],
49857                                 [
49858                                     -137.172346,
49859                                     59.027148
49860                                 ],
49861                                 [
49862                                     -137.062367,
49863                                     59.067572
49864                                 ],
49865                                 [
49866                                     -137.047109,
49867                                     59.07331
49868                                 ],
49869                                 [
49870                                     -136.942282,
49871                                     59.11107
49872                                 ],
49873                                 [
49874                                     -136.840816,
49875                                     59.148174
49876                                 ],
49877                                 [
49878                                     -136.785496,
49879                                     59.157217
49880                                 ],
49881                                 [
49882                                     -136.671911,
49883                                     59.150809
49884                                 ],
49885                                 [
49886                                     -136.613491,
49887                                     59.15422
49888                                 ],
49889                                 [
49890                                     -136.569489,
49891                                     59.172152
49892                                 ],
49893                                 [
49894                                     -136.484791,
49895                                     59.2538
49896                                 ],
49897                                 [
49898                                     -136.483551,
49899                                     59.257469
49900                                 ],
49901                                 [
49902                                     -136.466549,
49903                                     59.287803
49904                                 ],
49905                                 [
49906                                     -136.467092,
49907                                     59.38449
49908                                 ],
49909                                 [
49910                                     -136.467557,
49911                                     59.461643
49912                                 ],
49913                                 [
49914                                     -136.415958,
49915                                     59.452238
49916                                 ],
49917                                 [
49918                                     -136.36684,
49919                                     59.449551
49920                                 ],
49921                                 [
49922                                     -136.319995,
49923                                     59.459059
49924                                 ],
49925                                 [
49926                                     -136.275036,
49927                                     59.486448
49928                                 ],
49929                                 [
49930                                     -136.244728,
49931                                     59.528202
49932                                 ],
49933                                 [
49934                                     -136.258474,
49935                                     59.556107
49936                                 ],
49937                                 [
49938                                     -136.29935,
49939                                     59.575745
49940                                 ],
49941                                 [
49942                                     -136.350329,
49943                                     59.592384
49944                                 ],
49945                                 [
49946                                     -136.2585,
49947                                     59.621582
49948                                 ],
49949                                 [
49950                                     -136.145406,
49951                                     59.636826
49952                                 ],
49953                                 [
49954                                     -136.02686,
49955                                     59.652846
49956                                 ],
49957                                 [
49958                                     -135.923818,
49959                                     59.666747
49960                                 ],
49961                                 [
49962                                     -135.830955,
49963                                     59.693257
49964                                 ],
49965                                 [
49966                                     -135.641251,
49967                                     59.747362
49968                                 ],
49969                                 [
49970                                     -135.482759,
49971                                     59.792475
49972                                 ],
49973                                 [
49974                                     -135.465137,
49975                                     59.789685
49976                                 ],
49977                                 [
49978                                     -135.404392,
49979                                     59.753305
49980                                 ],
49981                                 [
49982                                     -135.345791,
49983                                     59.731032
49984                                 ],
49985                                 [
49986                                     -135.259879,
49987                                     59.698218
49988                                 ],
49989                                 [
49990                                     -135.221897,
49991                                     59.675273
49992                                 ],
49993                                 [
49994                                     -135.192028,
49995                                     59.64711
49996                                 ],
49997                                 [
49998                                     -135.157792,
49999                                     59.623287
50000                                 ],
50001                                 [
50002                                     -135.106684,
50003                                     59.613158
50004                                 ],
50005                                 [
50006                                     -135.087874,
50007                                     59.606544
50008                                 ],
50009                                 [
50010                                     -135.032942,
50011                                     59.573109
50012                                 ],
50013                                 [
50014                                     -135.018524,
50015                                     59.559363
50016                                 ],
50017                                 [
50018                                     -135.016198,
50019                                     59.543447
50020                                 ],
50021                                 [
50022                                     -135.01948,
50023                                     59.493166
50024                                 ],
50025                                 [
50026                                     -135.023252,
50027                                     59.477146
50028                                 ],
50029                                 [
50030                                     -135.037489,
50031                                     59.461591
50032                                 ],
50033                                 [
50034                                     -135.078598,
50035                                     59.438337
50036                                 ],
50037                                 [
50038                                     -135.095754,
50039                                     59.418855
50040                                 ],
50041                                 [
50042                                     -134.993254,
50043                                     59.381906
50044                                 ],
50045                                 [
50046                                     -135.00483,
50047                                     59.367127
50048                                 ],
50049                                 [
50050                                     -135.014441,
50051                                     59.35152
50052                                 ],
50053                                 [
50054                                     -135.016198,
50055                                     59.336173
50056                                 ],
50057                                 [
50058                                     -134.979973,
50059                                     59.297415
50060                                 ],
50061                                 [
50062                                     -134.95783,
50063                                     59.280982
50064                                 ],
50065                                 [
50066                                     -134.932431,
50067                                     59.270647
50068                                 ],
50069                                 [
50070                                     -134.839465,
50071                                     59.258141
50072                                 ],
50073                                 [
50074                                     -134.74345,
50075                                     59.245119
50076                                 ],
50077                                 [
50078                                     -134.70552,
50079                                     59.240106
50080                                 ],
50081                                 [
50082                                     -134.692084,
50083                                     59.235249
50084                                 ],
50085                                 [
50086                                     -134.68286,
50087                                     59.223001
50088                                 ],
50089                                 [
50090                                     -134.671439,
50091                                     59.193752
50092                                 ],
50093                                 [
50094                                     -134.66038,
50095                                     59.181298
50096                                 ],
50097                                 [
50098                                     -134.610771,
50099                                     59.144556
50100                                 ],
50101                                 [
50102                                     -134.582788,
50103                                     59.128847
50104                                 ],
50105                                 [
50106                                     -134.556717,
50107                                     59.123059
50108                                 ],
50109                                 [
50110                                     -134.509072,
50111                                     59.122801
50112                                 ],
50113                                 [
50114                                     -134.477575,
50115                                     59.114946
50116                                 ],
50117                                 [
50118                                     -134.451013,
50119                                     59.097893
50120                                 ],
50121                                 [
50122                                     -134.398019,
50123                                     59.051952
50124                                 ],
50125                                 [
50126                                     -134.387167,
50127                                     59.036863
50128                                 ],
50129                                 [
50130                                     -134.385591,
50131                                     59.018828
50132                                 ],
50133                                 [
50134                                     -134.399389,
50135                                     58.974954
50136                                 ],
50137                                 [
50138                                     -134.343423,
50139                                     58.968857
50140                                 ],
50141                                 [
50142                                     -134.329651,
50143                                     58.963017
50144                                 ],
50145                                 [
50146                                     -134.320039,
50147                                     58.952682
50148                                 ],
50149                                 [
50150                                     -134.32314,
50151                                     58.949168
50152                                 ],
50153                                 [
50154                                     -134.330323,
50155                                     58.945344
50156                                 ],
50157                                 [
50158                                     -134.333036,
50159                                     58.93413
50160                                 ],
50161                                 [
50162                                     -134.327403,
50163                                     58.916457
50164                                 ],
50165                                 [
50166                                     -134.316939,
50167                                     58.903796
50168                                 ],
50169                                 [
50170                                     -134.22219,
50171                                     58.842714
50172                                 ],
50173                                 [
50174                                     -134.108838,
50175                                     58.808246
50176                                 ],
50177                                 [
50178                                     -133.983109,
50179                                     58.769902
50180                                 ],
50181                                 [
50182                                     -133.87123,
50183                                     58.735899
50184                                 ],
50185                                 [
50186                                     -133.831129,
50187                                     58.718019
50188                                 ],
50189                                 [
50190                                     -133.796402,
50191                                     58.693421
50192                                 ],
50193                                 [
50194                                     -133.700077,
50195                                     58.59937
50196                                 ],
50197                                 [
50198                                     -133.626283,
50199                                     58.546402
50200                                 ],
50201                                 [
50202                                     -133.547063,
50203                                     58.505577
50204                                 ],
50205                                 [
50206                                     -133.463089,
50207                                     58.462221
50208                                 ],
50209                                 [
50210                                     -133.392241,
50211                                     58.403878
50212                                 ],
50213                                 [
50214                                     -133.43012,
50215                                     58.372097
50216                                 ],
50217                                 [
50218                                     -133.41503,
50219                                     58.330549
50220                                 ],
50221                                 [
50222                                     -133.374567,
50223                                     58.290965
50224                                 ],
50225                                 [
50226                                     -133.257262,
50227                                     58.210298
50228                                 ],
50229                                 [
50230                                     -133.165588,
50231                                     58.147305
50232                                 ],
50233                                 [
50234                                     -133.142127,
50235                                     58.120588
50236                                 ],
50237                                 [
50238                                     -133.094843,
50239                                     58.0331
50240                                 ],
50241                                 [
50242                                     -133.075154,
50243                                     58.007882
50244                                 ],
50245                                 [
50246                                     -132.99335,
50247                                     57.941917
50248                                 ],
50249                                 [
50250                                     -132.917153,
50251                                     57.880499
50252                                 ],
50253                                 [
50254                                     -132.83212,
50255                                     57.791564
50256                                 ],
50257                                 [
50258                                     -132.70944,
50259                                     57.663303
50260                                 ],
50261                                 [
50262                                     -132.629057,
50263                                     57.579277
50264                                 ],
50265                                 [
50266                                     -132.552447,
50267                                     57.499075
50268                                 ],
50269                                 [
50270                                     -132.455735,
50271                                     57.420992
50272                                 ],
50273                                 [
50274                                     -132.362304,
50275                                     57.3457
50276                                 ],
50277                                 [
50278                                     -132.304684,
50279                                     57.280355
50280                                 ],
50281                                 [
50282                                     -132.230994,
50283                                     57.19682
50284                                 ],
50285                                 [
50286                                     -132.276366,
50287                                     57.14889
50288                                 ],
50289                                 [
50290                                     -132.34122,
50291                                     57.080393
50292                                 ],
50293                                 [
50294                                     -132.16229,
50295                                     57.050317
50296                                 ],
50297                                 [
50298                                     -132.031859,
50299                                     57.028406
50300                                 ],
50301                                 [
50302                                     -132.107384,
50303                                     56.858753
50304                                 ],
50305                                 [
50306                                     -131.871558,
50307                                     56.79346
50308                                 ],
50309                                 [
50310                                     -131.865874,
50311                                     56.785708
50312                                 ],
50313                                 [
50314                                     -131.872411,
50315                                     56.77297
50316                                 ],
50317                                 [
50318                                     -131.882617,
50319                                     56.759146
50320                                 ],
50321                                 [
50322                                     -131.887966,
50323                                     56.747958
50324                                 ],
50325                                 [
50326                                     -131.886028,
50327                                     56.737055
50328                                 ],
50329                                 [
50330                                     -131.880705,
50331                                     56.728838
50332                                 ],
50333                                 [
50334                                     -131.864789,
50335                                     56.71349
50336                                 ],
50337                                 [
50338                                     -131.838976,
50339                                     56.682278
50340                                 ],
50341                                 [
50342                                     -131.830424,
50343                                     56.664759
50344                                 ],
50345                                 [
50346                                     -131.826574,
50347                                     56.644606
50348                                 ],
50349                                 [
50350                                     -131.832103,
50351                                     56.603368
50352                                 ],
50353                                 [
50354                                     -131.825592,
50355                                     56.593343
50356                                 ],
50357                                 [
50358                                     -131.799108,
50359                                     56.587658
50360                                 ],
50361                                 [
50362                                     -131.692293,
50363                                     56.585074
50364                                 ],
50365                                 [
50366                                     -131.585891,
50367                                     56.595048
50368                                 ],
50369                                 [
50370                                     -131.560363,
50371                                     56.594066
50372                                 ],
50373                                 [
50374                                     -131.536437,
50375                                     56.585229
50376                                 ],
50377                                 [
50378                                     -131.491659,
50379                                     56.560166
50380                                 ],
50381                                 [
50382                                     -131.345699,
50383                                     56.503271
50384                                 ],
50385                                 [
50386                                     -131.215604,
50387                                     56.45255
50388                                 ],
50389                                 [
50390                                     -131.100546,
50391                                     56.407669
50392                                 ],
50393                                 [
50394                                     -131.016934,
50395                                     56.38705
50396                                 ],
50397                                 [
50398                                     -130.839089,
50399                                     56.372452
50400                                 ],
50401                                 [
50402                                     -130.760334,
50403                                     56.345192
50404                                 ],
50405                                 [
50406                                     -130.645768,
50407                                     56.261942
50408                                 ],
50409                                 [
50410                                     -130.602256,
50411                                     56.247059
50412                                 ],
50413                                 [
50414                                     -130.495518,
50415                                     56.232434
50416                                 ],
50417                                 [
50418                                     -130.47229,
50419                                     56.22489
50420                                 ],
50421                                 [
50422                                     -130.458053,
50423                                     56.210653
50424                                 ],
50425                                 [
50426                                     -130.427926,
50427                                     56.143964
50428                                 ],
50429                                 [
50430                                     -130.418159,
50431                                     56.129702
50432                                 ],
50433                                 [
50434                                     -130.403974,
50435                                     56.121898
50436                                 ],
50437                                 [
50438                                     -130.290311,
50439                                     56.10097
50440                                 ],
50441                                 [
50442                                     -130.243156,
50443                                     56.092391
50444                                 ],
50445                                 [
50446                                     -130.211246,
50447                                     56.089962
50448                                 ],
50449                                 [
50450                                     -130.116756,
50451                                     56.105646
50452                                 ],
50453                                 [
50454                                     -130.094328,
50455                                     56.101486
50456                                 ],
50457                                 [
50458                                     -130.071539,
50459                                     56.084123
50460                                 ],
50461                                 [
50462                                     -130.039319,
50463                                     56.045521
50464                                 ],
50465                                 [
50466                                     -130.026632,
50467                                     56.024101
50468                                 ],
50469                                 [
50470                                     -130.01901,
50471                                     56.002216
50472                                 ],
50473                                 [
50474                                     -130.014695,
50475                                     55.963252
50476                                 ],
50477                                 [
50478                                     -130.016788,
50479                                     55.918913
50480                                 ],
50481                                 [
50482                                     -130.019612,
50483                                     55.907978
50484                                 ],
50485                                 [
50486                                     -130.019618,
50487                                     55.907952
50488                                 ],
50489                                 [
50490                                     -130.022817,
50491                                     55.901353
50492                                 ],
50493                                 [
50494                                     -130.049387,
50495                                     55.871405
50496                                 ],
50497                                 [
50498                                     -130.104726,
50499                                     55.825263
50500                                 ],
50501                                 [
50502                                     -130.136627,
50503                                     55.806464
50504                                 ],
50505                                 [
50506                                     -130.148834,
50507                                     55.795356
50508                                 ],
50509                                 [
50510                                     -130.163482,
50511                                     55.771145
50512                                 ],
50513                                 [
50514                                     -130.167307,
50515                                     55.766262
50516                                 ],
50517                                 [
50518                                     -130.170806,
50519                                     55.759833
50520                                 ],
50521                                 [
50522                                     -130.173655,
50523                                     55.749498
50524                                 ],
50525                                 [
50526                                     -130.170806,
50527                                     55.740953
50528                                 ],
50529                                 [
50530                                     -130.163808,
50531                                     55.734565
50532                                 ],
50533                                 [
50534                                     -130.160064,
50535                                     55.727118
50536                                 ],
50537                                 [
50538                                     -130.167388,
50539                                     55.715399
50540                                 ],
50541                                 [
50542                                     -130.155914,
50543                                     55.700141
50544                                 ],
50545                                 [
50546                                     -130.142893,
50547                                     55.689521
50548                                 ],
50549                                 [
50550                                     -130.131825,
50551                                     55.676581
50552                                 ],
50553                                 [
50554                                     -130.126454,
50555                                     55.653998
50556                                 ],
50557                                 [
50558                                     -130.12857,
50559                                     55.63642
50560                                 ],
50561                                 [
50562                                     -130.135121,
50563                                     55.619127
50564                                 ],
50565                                 [
50566                                     -130.153147,
50567                                     55.58511
50568                                 ],
50569                                 [
50570                                     -130.148671,
50571                                     55.578192
50572                                 ],
50573                                 [
50574                                     -130.146881,
50575                                     55.569322
50576                                 ],
50577                                 [
50578                                     -130.146962,
50579                                     55.547187
50580                                 ],
50581                                 [
50582                                     -130.112172,
50583                                     55.509345
50584                                 ],
50585                                 [
50586                                     -130.101674,
50587                                     55.481147
50588                                 ],
50589                                 [
50590                                     -130.095082,
50591                                     55.472113
50592                                 ],
50593                                 [
50594                                     -130.065419,
50595                                     55.446112
50596                                 ],
50597                                 [
50598                                     -130.057525,
50599                                     55.434882
50600                                 ],
50601                                 [
50602                                     -130.052561,
50603                                     55.414008
50604                                 ],
50605                                 [
50606                                     -130.054311,
50607                                     55.366645
50608                                 ],
50609                                 [
50610                                     -130.05012,
50611                                     55.345445
50612                                 ],
50613                                 [
50614                                     -130.039296,
50615                                     55.330756
50616                                 ],
50617                                 [
50618                                     -129.989247,
50619                                     55.284003
50620                                 ],
50621                                 [
50622                                     -130.031239,
50623                                     55.26435
50624                                 ],
50625                                 [
50626                                     -130.050038,
50627                                     55.252875
50628                                 ],
50629                                 [
50630                                     -130.067494,
50631                                     55.239
50632                                 ],
50633                                 [
50634                                     -130.078236,
50635                                     55.233791
50636                                 ],
50637                                 [
50638                                     -130.100494,
50639                                     55.230292
50640                                 ],
50641                                 [
50642                                     -130.104726,
50643                                     55.225653
50644                                 ],
50645                                 [
50646                                     -130.105702,
50647                                     55.211127
50648                                 ],
50649                                 [
50650                                     -130.10912,
50651                                     55.200751
50652                                 ],
50653                                 [
50654                                     -130.115793,
50655                                     55.191596
50656                                 ],
50657                                 [
50658                                     -130.126454,
50659                                     55.180976
50660                                 ],
50661                                 [
50662                                     -130.151967,
50663                                     55.163275
50664                                 ],
50665                                 [
50666                                     -130.159983,
50667                                     55.153713
50668                                 ],
50669                                 [
50670                                     -130.167592,
50671                                     55.129584
50672                                 ],
50673                                 [
50674                                     -130.173695,
50675                                     55.117743
50676                                 ],
50677                                 [
50678                                     -130.200266,
50679                                     55.104153
50680                                 ],
50681                                 [
50682                                     -130.211781,
50683                                     55.084133
50684                                 ],
50685                                 [
50686                                     -130.228871,
50687                                     55.04385
50688                                 ],
50689                                 [
50690                                     -130.238678,
50691                                     55.03441
50692                                 ],
50693                                 [
50694                                     -130.261342,
50695                                     55.022895
50696                                 ],
50697                                 [
50698                                     -130.269846,
50699                                     55.016547
50700                                 ],
50701                                 [
50702                                     -130.275706,
50703                                     55.006985
50704                                 ],
50705                                 [
50706                                     -130.286366,
50707                                     54.983222
50708                                 ],
50709                                 [
50710                                     -130.294342,
50711                                     54.971869
50712                                 ],
50713                                 [
50714                                     -130.326568,
50715                                     54.952094
50716                                 ],
50717                                 [
50718                                     -130.335561,
50719                                     54.938707
50720                                 ],
50721                                 [
50722                                     -130.365387,
50723                                     54.907294
50724                                 ],
50725                                 [
50726                                     -130.385243,
50727                                     54.896552
50728                                 ],
50729                                 [
50730                                     -130.430816,
50731                                     54.881252
50732                                 ],
50733                                 [
50734                                     -130.488759,
50735                                     54.844184
50736                                 ],
50737                                 [
50738                                     -130.580312,
50739                                     54.806383
50740                                 ],
50741                                 [
50742                                     -130.597485,
50743                                     54.803391
50744                                 ],
50745                                 [
50746                                     -130.71074,
50747                                     54.733215
50748                                 ],
50749                                 [
50750                                     -131.160718,
50751                                     54.787192
50752                                 ]
50753                             ]
50754                         ]
50755                     ]
50756                 }
50757             }
50758         ]
50759     },
50760     "featureIcons": {
50761         "circle-stroked-24": {
50762             "x": 0,
50763             "y": 0,
50764             "width": 24,
50765             "height": 24
50766         },
50767         "circle-stroked-18": {
50768             "x": 24,
50769             "y": 0,
50770             "width": 18,
50771             "height": 18
50772         },
50773         "circle-stroked-12": {
50774             "x": 42,
50775             "y": 0,
50776             "width": 12,
50777             "height": 12
50778         },
50779         "circle-24": {
50780             "x": 54,
50781             "y": 0,
50782             "width": 24,
50783             "height": 24
50784         },
50785         "circle-18": {
50786             "x": 78,
50787             "y": 0,
50788             "width": 18,
50789             "height": 18
50790         },
50791         "circle-12": {
50792             "x": 96,
50793             "y": 0,
50794             "width": 12,
50795             "height": 12
50796         },
50797         "square-stroked-24": {
50798             "x": 108,
50799             "y": 0,
50800             "width": 24,
50801             "height": 24
50802         },
50803         "square-stroked-18": {
50804             "x": 132,
50805             "y": 0,
50806             "width": 18,
50807             "height": 18
50808         },
50809         "square-stroked-12": {
50810             "x": 150,
50811             "y": 0,
50812             "width": 12,
50813             "height": 12
50814         },
50815         "square-24": {
50816             "x": 162,
50817             "y": 0,
50818             "width": 24,
50819             "height": 24
50820         },
50821         "square-18": {
50822             "x": 186,
50823             "y": 0,
50824             "width": 18,
50825             "height": 18
50826         },
50827         "square-12": {
50828             "x": 204,
50829             "y": 0,
50830             "width": 12,
50831             "height": 12
50832         },
50833         "triangle-stroked-24": {
50834             "x": 216,
50835             "y": 0,
50836             "width": 24,
50837             "height": 24
50838         },
50839         "triangle-stroked-18": {
50840             "x": 240,
50841             "y": 0,
50842             "width": 18,
50843             "height": 18
50844         },
50845         "triangle-stroked-12": {
50846             "x": 258,
50847             "y": 0,
50848             "width": 12,
50849             "height": 12
50850         },
50851         "triangle-24": {
50852             "x": 0,
50853             "y": 24,
50854             "width": 24,
50855             "height": 24
50856         },
50857         "triangle-18": {
50858             "x": 24,
50859             "y": 24,
50860             "width": 18,
50861             "height": 18
50862         },
50863         "triangle-12": {
50864             "x": 42,
50865             "y": 24,
50866             "width": 12,
50867             "height": 12
50868         },
50869         "star-stroked-24": {
50870             "x": 54,
50871             "y": 24,
50872             "width": 24,
50873             "height": 24
50874         },
50875         "star-stroked-18": {
50876             "x": 78,
50877             "y": 24,
50878             "width": 18,
50879             "height": 18
50880         },
50881         "star-stroked-12": {
50882             "x": 96,
50883             "y": 24,
50884             "width": 12,
50885             "height": 12
50886         },
50887         "star-24": {
50888             "x": 108,
50889             "y": 24,
50890             "width": 24,
50891             "height": 24
50892         },
50893         "star-18": {
50894             "x": 132,
50895             "y": 24,
50896             "width": 18,
50897             "height": 18
50898         },
50899         "star-12": {
50900             "x": 150,
50901             "y": 24,
50902             "width": 12,
50903             "height": 12
50904         },
50905         "cross-24": {
50906             "x": 162,
50907             "y": 24,
50908             "width": 24,
50909             "height": 24
50910         },
50911         "cross-18": {
50912             "x": 186,
50913             "y": 24,
50914             "width": 18,
50915             "height": 18
50916         },
50917         "cross-12": {
50918             "x": 204,
50919             "y": 24,
50920             "width": 12,
50921             "height": 12
50922         },
50923         "marker-stroked-24": {
50924             "x": 216,
50925             "y": 24,
50926             "width": 24,
50927             "height": 24
50928         },
50929         "marker-stroked-18": {
50930             "x": 240,
50931             "y": 24,
50932             "width": 18,
50933             "height": 18
50934         },
50935         "marker-stroked-12": {
50936             "x": 258,
50937             "y": 24,
50938             "width": 12,
50939             "height": 12
50940         },
50941         "marker-24": {
50942             "x": 0,
50943             "y": 48,
50944             "width": 24,
50945             "height": 24
50946         },
50947         "marker-18": {
50948             "x": 24,
50949             "y": 48,
50950             "width": 18,
50951             "height": 18
50952         },
50953         "marker-12": {
50954             "x": 42,
50955             "y": 48,
50956             "width": 12,
50957             "height": 12
50958         },
50959         "religious-jewish-24": {
50960             "x": 54,
50961             "y": 48,
50962             "width": 24,
50963             "height": 24
50964         },
50965         "religious-jewish-18": {
50966             "x": 78,
50967             "y": 48,
50968             "width": 18,
50969             "height": 18
50970         },
50971         "religious-jewish-12": {
50972             "x": 96,
50973             "y": 48,
50974             "width": 12,
50975             "height": 12
50976         },
50977         "religious-christian-24": {
50978             "x": 108,
50979             "y": 48,
50980             "width": 24,
50981             "height": 24
50982         },
50983         "religious-christian-18": {
50984             "x": 132,
50985             "y": 48,
50986             "width": 18,
50987             "height": 18
50988         },
50989         "religious-christian-12": {
50990             "x": 150,
50991             "y": 48,
50992             "width": 12,
50993             "height": 12
50994         },
50995         "religious-muslim-24": {
50996             "x": 162,
50997             "y": 48,
50998             "width": 24,
50999             "height": 24
51000         },
51001         "religious-muslim-18": {
51002             "x": 186,
51003             "y": 48,
51004             "width": 18,
51005             "height": 18
51006         },
51007         "religious-muslim-12": {
51008             "x": 204,
51009             "y": 48,
51010             "width": 12,
51011             "height": 12
51012         },
51013         "cemetery-24": {
51014             "x": 216,
51015             "y": 48,
51016             "width": 24,
51017             "height": 24
51018         },
51019         "cemetery-18": {
51020             "x": 240,
51021             "y": 48,
51022             "width": 18,
51023             "height": 18
51024         },
51025         "cemetery-12": {
51026             "x": 258,
51027             "y": 48,
51028             "width": 12,
51029             "height": 12
51030         },
51031         "rocket-24": {
51032             "x": 0,
51033             "y": 72,
51034             "width": 24,
51035             "height": 24
51036         },
51037         "rocket-18": {
51038             "x": 24,
51039             "y": 72,
51040             "width": 18,
51041             "height": 18
51042         },
51043         "rocket-12": {
51044             "x": 42,
51045             "y": 72,
51046             "width": 12,
51047             "height": 12
51048         },
51049         "airport-24": {
51050             "x": 54,
51051             "y": 72,
51052             "width": 24,
51053             "height": 24
51054         },
51055         "airport-18": {
51056             "x": 78,
51057             "y": 72,
51058             "width": 18,
51059             "height": 18
51060         },
51061         "airport-12": {
51062             "x": 96,
51063             "y": 72,
51064             "width": 12,
51065             "height": 12
51066         },
51067         "heliport-24": {
51068             "x": 108,
51069             "y": 72,
51070             "width": 24,
51071             "height": 24
51072         },
51073         "heliport-18": {
51074             "x": 132,
51075             "y": 72,
51076             "width": 18,
51077             "height": 18
51078         },
51079         "heliport-12": {
51080             "x": 150,
51081             "y": 72,
51082             "width": 12,
51083             "height": 12
51084         },
51085         "rail-24": {
51086             "x": 162,
51087             "y": 72,
51088             "width": 24,
51089             "height": 24
51090         },
51091         "rail-18": {
51092             "x": 186,
51093             "y": 72,
51094             "width": 18,
51095             "height": 18
51096         },
51097         "rail-12": {
51098             "x": 204,
51099             "y": 72,
51100             "width": 12,
51101             "height": 12
51102         },
51103         "rail-metro-24": {
51104             "x": 216,
51105             "y": 72,
51106             "width": 24,
51107             "height": 24
51108         },
51109         "rail-metro-18": {
51110             "x": 240,
51111             "y": 72,
51112             "width": 18,
51113             "height": 18
51114         },
51115         "rail-metro-12": {
51116             "x": 258,
51117             "y": 72,
51118             "width": 12,
51119             "height": 12
51120         },
51121         "rail-light-24": {
51122             "x": 0,
51123             "y": 96,
51124             "width": 24,
51125             "height": 24
51126         },
51127         "rail-light-18": {
51128             "x": 24,
51129             "y": 96,
51130             "width": 18,
51131             "height": 18
51132         },
51133         "rail-light-12": {
51134             "x": 42,
51135             "y": 96,
51136             "width": 12,
51137             "height": 12
51138         },
51139         "bus-24": {
51140             "x": 54,
51141             "y": 96,
51142             "width": 24,
51143             "height": 24
51144         },
51145         "bus-18": {
51146             "x": 78,
51147             "y": 96,
51148             "width": 18,
51149             "height": 18
51150         },
51151         "bus-12": {
51152             "x": 96,
51153             "y": 96,
51154             "width": 12,
51155             "height": 12
51156         },
51157         "fuel-24": {
51158             "x": 108,
51159             "y": 96,
51160             "width": 24,
51161             "height": 24
51162         },
51163         "fuel-18": {
51164             "x": 132,
51165             "y": 96,
51166             "width": 18,
51167             "height": 18
51168         },
51169         "fuel-12": {
51170             "x": 150,
51171             "y": 96,
51172             "width": 12,
51173             "height": 12
51174         },
51175         "parking-24": {
51176             "x": 162,
51177             "y": 96,
51178             "width": 24,
51179             "height": 24
51180         },
51181         "parking-18": {
51182             "x": 186,
51183             "y": 96,
51184             "width": 18,
51185             "height": 18
51186         },
51187         "parking-12": {
51188             "x": 204,
51189             "y": 96,
51190             "width": 12,
51191             "height": 12
51192         },
51193         "parking-garage-24": {
51194             "x": 216,
51195             "y": 96,
51196             "width": 24,
51197             "height": 24
51198         },
51199         "parking-garage-18": {
51200             "x": 240,
51201             "y": 96,
51202             "width": 18,
51203             "height": 18
51204         },
51205         "parking-garage-12": {
51206             "x": 258,
51207             "y": 96,
51208             "width": 12,
51209             "height": 12
51210         },
51211         "airfield-24": {
51212             "x": 0,
51213             "y": 120,
51214             "width": 24,
51215             "height": 24
51216         },
51217         "airfield-18": {
51218             "x": 24,
51219             "y": 120,
51220             "width": 18,
51221             "height": 18
51222         },
51223         "airfield-12": {
51224             "x": 42,
51225             "y": 120,
51226             "width": 12,
51227             "height": 12
51228         },
51229         "roadblock-24": {
51230             "x": 54,
51231             "y": 120,
51232             "width": 24,
51233             "height": 24
51234         },
51235         "roadblock-18": {
51236             "x": 78,
51237             "y": 120,
51238             "width": 18,
51239             "height": 18
51240         },
51241         "roadblock-12": {
51242             "x": 96,
51243             "y": 120,
51244             "width": 12,
51245             "height": 12
51246         },
51247         "ferry-24": {
51248             "x": 108,
51249             "y": 120,
51250             "width": 24,
51251             "height": 24
51252         },
51253         "ferry-18": {
51254             "x": 132,
51255             "y": 120,
51256             "width": 18,
51257             "height": 18
51258         },
51259         "ferry-12": {
51260             "x": 150,
51261             "y": 120,
51262             "width": 12,
51263             "height": 12
51264         },
51265         "harbor-24": {
51266             "x": 162,
51267             "y": 120,
51268             "width": 24,
51269             "height": 24
51270         },
51271         "harbor-18": {
51272             "x": 186,
51273             "y": 120,
51274             "width": 18,
51275             "height": 18
51276         },
51277         "harbor-12": {
51278             "x": 204,
51279             "y": 120,
51280             "width": 12,
51281             "height": 12
51282         },
51283         "bicycle-24": {
51284             "x": 216,
51285             "y": 120,
51286             "width": 24,
51287             "height": 24
51288         },
51289         "bicycle-18": {
51290             "x": 240,
51291             "y": 120,
51292             "width": 18,
51293             "height": 18
51294         },
51295         "bicycle-12": {
51296             "x": 258,
51297             "y": 120,
51298             "width": 12,
51299             "height": 12
51300         },
51301         "park-24": {
51302             "x": 0,
51303             "y": 144,
51304             "width": 24,
51305             "height": 24
51306         },
51307         "park-18": {
51308             "x": 24,
51309             "y": 144,
51310             "width": 18,
51311             "height": 18
51312         },
51313         "park-12": {
51314             "x": 42,
51315             "y": 144,
51316             "width": 12,
51317             "height": 12
51318         },
51319         "park2-24": {
51320             "x": 54,
51321             "y": 144,
51322             "width": 24,
51323             "height": 24
51324         },
51325         "park2-18": {
51326             "x": 78,
51327             "y": 144,
51328             "width": 18,
51329             "height": 18
51330         },
51331         "park2-12": {
51332             "x": 96,
51333             "y": 144,
51334             "width": 12,
51335             "height": 12
51336         },
51337         "museum-24": {
51338             "x": 108,
51339             "y": 144,
51340             "width": 24,
51341             "height": 24
51342         },
51343         "museum-18": {
51344             "x": 132,
51345             "y": 144,
51346             "width": 18,
51347             "height": 18
51348         },
51349         "museum-12": {
51350             "x": 150,
51351             "y": 144,
51352             "width": 12,
51353             "height": 12
51354         },
51355         "lodging-24": {
51356             "x": 162,
51357             "y": 144,
51358             "width": 24,
51359             "height": 24
51360         },
51361         "lodging-18": {
51362             "x": 186,
51363             "y": 144,
51364             "width": 18,
51365             "height": 18
51366         },
51367         "lodging-12": {
51368             "x": 204,
51369             "y": 144,
51370             "width": 12,
51371             "height": 12
51372         },
51373         "monument-24": {
51374             "x": 216,
51375             "y": 144,
51376             "width": 24,
51377             "height": 24
51378         },
51379         "monument-18": {
51380             "x": 240,
51381             "y": 144,
51382             "width": 18,
51383             "height": 18
51384         },
51385         "monument-12": {
51386             "x": 258,
51387             "y": 144,
51388             "width": 12,
51389             "height": 12
51390         },
51391         "zoo-24": {
51392             "x": 0,
51393             "y": 168,
51394             "width": 24,
51395             "height": 24
51396         },
51397         "zoo-18": {
51398             "x": 24,
51399             "y": 168,
51400             "width": 18,
51401             "height": 18
51402         },
51403         "zoo-12": {
51404             "x": 42,
51405             "y": 168,
51406             "width": 12,
51407             "height": 12
51408         },
51409         "garden-24": {
51410             "x": 54,
51411             "y": 168,
51412             "width": 24,
51413             "height": 24
51414         },
51415         "garden-18": {
51416             "x": 78,
51417             "y": 168,
51418             "width": 18,
51419             "height": 18
51420         },
51421         "garden-12": {
51422             "x": 96,
51423             "y": 168,
51424             "width": 12,
51425             "height": 12
51426         },
51427         "campsite-24": {
51428             "x": 108,
51429             "y": 168,
51430             "width": 24,
51431             "height": 24
51432         },
51433         "campsite-18": {
51434             "x": 132,
51435             "y": 168,
51436             "width": 18,
51437             "height": 18
51438         },
51439         "campsite-12": {
51440             "x": 150,
51441             "y": 168,
51442             "width": 12,
51443             "height": 12
51444         },
51445         "theatre-24": {
51446             "x": 162,
51447             "y": 168,
51448             "width": 24,
51449             "height": 24
51450         },
51451         "theatre-18": {
51452             "x": 186,
51453             "y": 168,
51454             "width": 18,
51455             "height": 18
51456         },
51457         "theatre-12": {
51458             "x": 204,
51459             "y": 168,
51460             "width": 12,
51461             "height": 12
51462         },
51463         "art-gallery-24": {
51464             "x": 216,
51465             "y": 168,
51466             "width": 24,
51467             "height": 24
51468         },
51469         "art-gallery-18": {
51470             "x": 240,
51471             "y": 168,
51472             "width": 18,
51473             "height": 18
51474         },
51475         "art-gallery-12": {
51476             "x": 258,
51477             "y": 168,
51478             "width": 12,
51479             "height": 12
51480         },
51481         "pitch-24": {
51482             "x": 0,
51483             "y": 192,
51484             "width": 24,
51485             "height": 24
51486         },
51487         "pitch-18": {
51488             "x": 24,
51489             "y": 192,
51490             "width": 18,
51491             "height": 18
51492         },
51493         "pitch-12": {
51494             "x": 42,
51495             "y": 192,
51496             "width": 12,
51497             "height": 12
51498         },
51499         "soccer-24": {
51500             "x": 54,
51501             "y": 192,
51502             "width": 24,
51503             "height": 24
51504         },
51505         "soccer-18": {
51506             "x": 78,
51507             "y": 192,
51508             "width": 18,
51509             "height": 18
51510         },
51511         "soccer-12": {
51512             "x": 96,
51513             "y": 192,
51514             "width": 12,
51515             "height": 12
51516         },
51517         "america-football-24": {
51518             "x": 108,
51519             "y": 192,
51520             "width": 24,
51521             "height": 24
51522         },
51523         "america-football-18": {
51524             "x": 132,
51525             "y": 192,
51526             "width": 18,
51527             "height": 18
51528         },
51529         "america-football-12": {
51530             "x": 150,
51531             "y": 192,
51532             "width": 12,
51533             "height": 12
51534         },
51535         "tennis-24": {
51536             "x": 162,
51537             "y": 192,
51538             "width": 24,
51539             "height": 24
51540         },
51541         "tennis-18": {
51542             "x": 186,
51543             "y": 192,
51544             "width": 18,
51545             "height": 18
51546         },
51547         "tennis-12": {
51548             "x": 204,
51549             "y": 192,
51550             "width": 12,
51551             "height": 12
51552         },
51553         "basketball-24": {
51554             "x": 216,
51555             "y": 192,
51556             "width": 24,
51557             "height": 24
51558         },
51559         "basketball-18": {
51560             "x": 240,
51561             "y": 192,
51562             "width": 18,
51563             "height": 18
51564         },
51565         "basketball-12": {
51566             "x": 258,
51567             "y": 192,
51568             "width": 12,
51569             "height": 12
51570         },
51571         "baseball-24": {
51572             "x": 0,
51573             "y": 216,
51574             "width": 24,
51575             "height": 24
51576         },
51577         "baseball-18": {
51578             "x": 24,
51579             "y": 216,
51580             "width": 18,
51581             "height": 18
51582         },
51583         "baseball-12": {
51584             "x": 42,
51585             "y": 216,
51586             "width": 12,
51587             "height": 12
51588         },
51589         "golf-24": {
51590             "x": 54,
51591             "y": 216,
51592             "width": 24,
51593             "height": 24
51594         },
51595         "golf-18": {
51596             "x": 78,
51597             "y": 216,
51598             "width": 18,
51599             "height": 18
51600         },
51601         "golf-12": {
51602             "x": 96,
51603             "y": 216,
51604             "width": 12,
51605             "height": 12
51606         },
51607         "swimming-24": {
51608             "x": 108,
51609             "y": 216,
51610             "width": 24,
51611             "height": 24
51612         },
51613         "swimming-18": {
51614             "x": 132,
51615             "y": 216,
51616             "width": 18,
51617             "height": 18
51618         },
51619         "swimming-12": {
51620             "x": 150,
51621             "y": 216,
51622             "width": 12,
51623             "height": 12
51624         },
51625         "cricket-24": {
51626             "x": 162,
51627             "y": 216,
51628             "width": 24,
51629             "height": 24
51630         },
51631         "cricket-18": {
51632             "x": 186,
51633             "y": 216,
51634             "width": 18,
51635             "height": 18
51636         },
51637         "cricket-12": {
51638             "x": 204,
51639             "y": 216,
51640             "width": 12,
51641             "height": 12
51642         },
51643         "skiing-24": {
51644             "x": 216,
51645             "y": 216,
51646             "width": 24,
51647             "height": 24
51648         },
51649         "skiing-18": {
51650             "x": 240,
51651             "y": 216,
51652             "width": 18,
51653             "height": 18
51654         },
51655         "skiing-12": {
51656             "x": 258,
51657             "y": 216,
51658             "width": 12,
51659             "height": 12
51660         },
51661         "school-24": {
51662             "x": 0,
51663             "y": 240,
51664             "width": 24,
51665             "height": 24
51666         },
51667         "school-18": {
51668             "x": 24,
51669             "y": 240,
51670             "width": 18,
51671             "height": 18
51672         },
51673         "school-12": {
51674             "x": 42,
51675             "y": 240,
51676             "width": 12,
51677             "height": 12
51678         },
51679         "college-24": {
51680             "x": 54,
51681             "y": 240,
51682             "width": 24,
51683             "height": 24
51684         },
51685         "college-18": {
51686             "x": 78,
51687             "y": 240,
51688             "width": 18,
51689             "height": 18
51690         },
51691         "college-12": {
51692             "x": 96,
51693             "y": 240,
51694             "width": 12,
51695             "height": 12
51696         },
51697         "library-24": {
51698             "x": 108,
51699             "y": 240,
51700             "width": 24,
51701             "height": 24
51702         },
51703         "library-18": {
51704             "x": 132,
51705             "y": 240,
51706             "width": 18,
51707             "height": 18
51708         },
51709         "library-12": {
51710             "x": 150,
51711             "y": 240,
51712             "width": 12,
51713             "height": 12
51714         },
51715         "post-24": {
51716             "x": 162,
51717             "y": 240,
51718             "width": 24,
51719             "height": 24
51720         },
51721         "post-18": {
51722             "x": 186,
51723             "y": 240,
51724             "width": 18,
51725             "height": 18
51726         },
51727         "post-12": {
51728             "x": 204,
51729             "y": 240,
51730             "width": 12,
51731             "height": 12
51732         },
51733         "fire-station-24": {
51734             "x": 216,
51735             "y": 240,
51736             "width": 24,
51737             "height": 24
51738         },
51739         "fire-station-18": {
51740             "x": 240,
51741             "y": 240,
51742             "width": 18,
51743             "height": 18
51744         },
51745         "fire-station-12": {
51746             "x": 258,
51747             "y": 240,
51748             "width": 12,
51749             "height": 12
51750         },
51751         "town-hall-24": {
51752             "x": 0,
51753             "y": 264,
51754             "width": 24,
51755             "height": 24
51756         },
51757         "town-hall-18": {
51758             "x": 24,
51759             "y": 264,
51760             "width": 18,
51761             "height": 18
51762         },
51763         "town-hall-12": {
51764             "x": 42,
51765             "y": 264,
51766             "width": 12,
51767             "height": 12
51768         },
51769         "police-24": {
51770             "x": 54,
51771             "y": 264,
51772             "width": 24,
51773             "height": 24
51774         },
51775         "police-18": {
51776             "x": 78,
51777             "y": 264,
51778             "width": 18,
51779             "height": 18
51780         },
51781         "police-12": {
51782             "x": 96,
51783             "y": 264,
51784             "width": 12,
51785             "height": 12
51786         },
51787         "prison-24": {
51788             "x": 108,
51789             "y": 264,
51790             "width": 24,
51791             "height": 24
51792         },
51793         "prison-18": {
51794             "x": 132,
51795             "y": 264,
51796             "width": 18,
51797             "height": 18
51798         },
51799         "prison-12": {
51800             "x": 150,
51801             "y": 264,
51802             "width": 12,
51803             "height": 12
51804         },
51805         "embassy-24": {
51806             "x": 162,
51807             "y": 264,
51808             "width": 24,
51809             "height": 24
51810         },
51811         "embassy-18": {
51812             "x": 186,
51813             "y": 264,
51814             "width": 18,
51815             "height": 18
51816         },
51817         "embassy-12": {
51818             "x": 204,
51819             "y": 264,
51820             "width": 12,
51821             "height": 12
51822         },
51823         "beer-24": {
51824             "x": 216,
51825             "y": 264,
51826             "width": 24,
51827             "height": 24
51828         },
51829         "beer-18": {
51830             "x": 240,
51831             "y": 264,
51832             "width": 18,
51833             "height": 18
51834         },
51835         "beer-12": {
51836             "x": 258,
51837             "y": 264,
51838             "width": 12,
51839             "height": 12
51840         },
51841         "restaurant-24": {
51842             "x": 0,
51843             "y": 288,
51844             "width": 24,
51845             "height": 24
51846         },
51847         "restaurant-18": {
51848             "x": 24,
51849             "y": 288,
51850             "width": 18,
51851             "height": 18
51852         },
51853         "restaurant-12": {
51854             "x": 42,
51855             "y": 288,
51856             "width": 12,
51857             "height": 12
51858         },
51859         "cafe-24": {
51860             "x": 54,
51861             "y": 288,
51862             "width": 24,
51863             "height": 24
51864         },
51865         "cafe-18": {
51866             "x": 78,
51867             "y": 288,
51868             "width": 18,
51869             "height": 18
51870         },
51871         "cafe-12": {
51872             "x": 96,
51873             "y": 288,
51874             "width": 12,
51875             "height": 12
51876         },
51877         "shop-24": {
51878             "x": 108,
51879             "y": 288,
51880             "width": 24,
51881             "height": 24
51882         },
51883         "shop-18": {
51884             "x": 132,
51885             "y": 288,
51886             "width": 18,
51887             "height": 18
51888         },
51889         "shop-12": {
51890             "x": 150,
51891             "y": 288,
51892             "width": 12,
51893             "height": 12
51894         },
51895         "fast-food-24": {
51896             "x": 162,
51897             "y": 288,
51898             "width": 24,
51899             "height": 24
51900         },
51901         "fast-food-18": {
51902             "x": 186,
51903             "y": 288,
51904             "width": 18,
51905             "height": 18
51906         },
51907         "fast-food-12": {
51908             "x": 204,
51909             "y": 288,
51910             "width": 12,
51911             "height": 12
51912         },
51913         "bar-24": {
51914             "x": 216,
51915             "y": 288,
51916             "width": 24,
51917             "height": 24
51918         },
51919         "bar-18": {
51920             "x": 240,
51921             "y": 288,
51922             "width": 18,
51923             "height": 18
51924         },
51925         "bar-12": {
51926             "x": 258,
51927             "y": 288,
51928             "width": 12,
51929             "height": 12
51930         },
51931         "bank-24": {
51932             "x": 0,
51933             "y": 312,
51934             "width": 24,
51935             "height": 24
51936         },
51937         "bank-18": {
51938             "x": 24,
51939             "y": 312,
51940             "width": 18,
51941             "height": 18
51942         },
51943         "bank-12": {
51944             "x": 42,
51945             "y": 312,
51946             "width": 12,
51947             "height": 12
51948         },
51949         "grocery-24": {
51950             "x": 54,
51951             "y": 312,
51952             "width": 24,
51953             "height": 24
51954         },
51955         "grocery-18": {
51956             "x": 78,
51957             "y": 312,
51958             "width": 18,
51959             "height": 18
51960         },
51961         "grocery-12": {
51962             "x": 96,
51963             "y": 312,
51964             "width": 12,
51965             "height": 12
51966         },
51967         "cinema-24": {
51968             "x": 108,
51969             "y": 312,
51970             "width": 24,
51971             "height": 24
51972         },
51973         "cinema-18": {
51974             "x": 132,
51975             "y": 312,
51976             "width": 18,
51977             "height": 18
51978         },
51979         "cinema-12": {
51980             "x": 150,
51981             "y": 312,
51982             "width": 12,
51983             "height": 12
51984         },
51985         "pharmacy-24": {
51986             "x": 162,
51987             "y": 312,
51988             "width": 24,
51989             "height": 24
51990         },
51991         "pharmacy-18": {
51992             "x": 186,
51993             "y": 312,
51994             "width": 18,
51995             "height": 18
51996         },
51997         "pharmacy-12": {
51998             "x": 204,
51999             "y": 312,
52000             "width": 12,
52001             "height": 12
52002         },
52003         "hospital-24": {
52004             "x": 216,
52005             "y": 312,
52006             "width": 24,
52007             "height": 24
52008         },
52009         "hospital-18": {
52010             "x": 240,
52011             "y": 312,
52012             "width": 18,
52013             "height": 18
52014         },
52015         "hospital-12": {
52016             "x": 258,
52017             "y": 312,
52018             "width": 12,
52019             "height": 12
52020         },
52021         "danger-24": {
52022             "x": 0,
52023             "y": 336,
52024             "width": 24,
52025             "height": 24
52026         },
52027         "danger-18": {
52028             "x": 24,
52029             "y": 336,
52030             "width": 18,
52031             "height": 18
52032         },
52033         "danger-12": {
52034             "x": 42,
52035             "y": 336,
52036             "width": 12,
52037             "height": 12
52038         },
52039         "industrial-24": {
52040             "x": 54,
52041             "y": 336,
52042             "width": 24,
52043             "height": 24
52044         },
52045         "industrial-18": {
52046             "x": 78,
52047             "y": 336,
52048             "width": 18,
52049             "height": 18
52050         },
52051         "industrial-12": {
52052             "x": 96,
52053             "y": 336,
52054             "width": 12,
52055             "height": 12
52056         },
52057         "warehouse-24": {
52058             "x": 108,
52059             "y": 336,
52060             "width": 24,
52061             "height": 24
52062         },
52063         "warehouse-18": {
52064             "x": 132,
52065             "y": 336,
52066             "width": 18,
52067             "height": 18
52068         },
52069         "warehouse-12": {
52070             "x": 150,
52071             "y": 336,
52072             "width": 12,
52073             "height": 12
52074         },
52075         "commercial-24": {
52076             "x": 162,
52077             "y": 336,
52078             "width": 24,
52079             "height": 24
52080         },
52081         "commercial-18": {
52082             "x": 186,
52083             "y": 336,
52084             "width": 18,
52085             "height": 18
52086         },
52087         "commercial-12": {
52088             "x": 204,
52089             "y": 336,
52090             "width": 12,
52091             "height": 12
52092         },
52093         "building-24": {
52094             "x": 216,
52095             "y": 336,
52096             "width": 24,
52097             "height": 24
52098         },
52099         "building-18": {
52100             "x": 240,
52101             "y": 336,
52102             "width": 18,
52103             "height": 18
52104         },
52105         "building-12": {
52106             "x": 258,
52107             "y": 336,
52108             "width": 12,
52109             "height": 12
52110         },
52111         "place-of-worship-24": {
52112             "x": 0,
52113             "y": 360,
52114             "width": 24,
52115             "height": 24
52116         },
52117         "place-of-worship-18": {
52118             "x": 24,
52119             "y": 360,
52120             "width": 18,
52121             "height": 18
52122         },
52123         "place-of-worship-12": {
52124             "x": 42,
52125             "y": 360,
52126             "width": 12,
52127             "height": 12
52128         },
52129         "alcohol-shop-24": {
52130             "x": 54,
52131             "y": 360,
52132             "width": 24,
52133             "height": 24
52134         },
52135         "alcohol-shop-18": {
52136             "x": 78,
52137             "y": 360,
52138             "width": 18,
52139             "height": 18
52140         },
52141         "alcohol-shop-12": {
52142             "x": 96,
52143             "y": 360,
52144             "width": 12,
52145             "height": 12
52146         },
52147         "logging-24": {
52148             "x": 108,
52149             "y": 360,
52150             "width": 24,
52151             "height": 24
52152         },
52153         "logging-18": {
52154             "x": 132,
52155             "y": 360,
52156             "width": 18,
52157             "height": 18
52158         },
52159         "logging-12": {
52160             "x": 150,
52161             "y": 360,
52162             "width": 12,
52163             "height": 12
52164         },
52165         "oil-well-24": {
52166             "x": 162,
52167             "y": 360,
52168             "width": 24,
52169             "height": 24
52170         },
52171         "oil-well-18": {
52172             "x": 186,
52173             "y": 360,
52174             "width": 18,
52175             "height": 18
52176         },
52177         "oil-well-12": {
52178             "x": 204,
52179             "y": 360,
52180             "width": 12,
52181             "height": 12
52182         },
52183         "slaughterhouse-24": {
52184             "x": 216,
52185             "y": 360,
52186             "width": 24,
52187             "height": 24
52188         },
52189         "slaughterhouse-18": {
52190             "x": 240,
52191             "y": 360,
52192             "width": 18,
52193             "height": 18
52194         },
52195         "slaughterhouse-12": {
52196             "x": 258,
52197             "y": 360,
52198             "width": 12,
52199             "height": 12
52200         },
52201         "dam-24": {
52202             "x": 0,
52203             "y": 384,
52204             "width": 24,
52205             "height": 24
52206         },
52207         "dam-18": {
52208             "x": 24,
52209             "y": 384,
52210             "width": 18,
52211             "height": 18
52212         },
52213         "dam-12": {
52214             "x": 42,
52215             "y": 384,
52216             "width": 12,
52217             "height": 12
52218         },
52219         "water-24": {
52220             "x": 54,
52221             "y": 384,
52222             "width": 24,
52223             "height": 24
52224         },
52225         "water-18": {
52226             "x": 78,
52227             "y": 384,
52228             "width": 18,
52229             "height": 18
52230         },
52231         "water-12": {
52232             "x": 96,
52233             "y": 384,
52234             "width": 12,
52235             "height": 12
52236         },
52237         "wetland-24": {
52238             "x": 108,
52239             "y": 384,
52240             "width": 24,
52241             "height": 24
52242         },
52243         "wetland-18": {
52244             "x": 132,
52245             "y": 384,
52246             "width": 18,
52247             "height": 18
52248         },
52249         "wetland-12": {
52250             "x": 150,
52251             "y": 384,
52252             "width": 12,
52253             "height": 12
52254         },
52255         "disability-24": {
52256             "x": 162,
52257             "y": 384,
52258             "width": 24,
52259             "height": 24
52260         },
52261         "disability-18": {
52262             "x": 186,
52263             "y": 384,
52264             "width": 18,
52265             "height": 18
52266         },
52267         "disability-12": {
52268             "x": 204,
52269             "y": 384,
52270             "width": 12,
52271             "height": 12
52272         },
52273         "telephone-24": {
52274             "x": 216,
52275             "y": 384,
52276             "width": 24,
52277             "height": 24
52278         },
52279         "telephone-18": {
52280             "x": 240,
52281             "y": 384,
52282             "width": 18,
52283             "height": 18
52284         },
52285         "telephone-12": {
52286             "x": 258,
52287             "y": 384,
52288             "width": 12,
52289             "height": 12
52290         },
52291         "emergency-telephone-24": {
52292             "x": 0,
52293             "y": 408,
52294             "width": 24,
52295             "height": 24
52296         },
52297         "emergency-telephone-18": {
52298             "x": 24,
52299             "y": 408,
52300             "width": 18,
52301             "height": 18
52302         },
52303         "emergency-telephone-12": {
52304             "x": 42,
52305             "y": 408,
52306             "width": 12,
52307             "height": 12
52308         },
52309         "toilets-24": {
52310             "x": 54,
52311             "y": 408,
52312             "width": 24,
52313             "height": 24
52314         },
52315         "toilets-18": {
52316             "x": 78,
52317             "y": 408,
52318             "width": 18,
52319             "height": 18
52320         },
52321         "toilets-12": {
52322             "x": 96,
52323             "y": 408,
52324             "width": 12,
52325             "height": 12
52326         },
52327         "waste-basket-24": {
52328             "x": 108,
52329             "y": 408,
52330             "width": 24,
52331             "height": 24
52332         },
52333         "waste-basket-18": {
52334             "x": 132,
52335             "y": 408,
52336             "width": 18,
52337             "height": 18
52338         },
52339         "waste-basket-12": {
52340             "x": 150,
52341             "y": 408,
52342             "width": 12,
52343             "height": 12
52344         },
52345         "music-24": {
52346             "x": 162,
52347             "y": 408,
52348             "width": 24,
52349             "height": 24
52350         },
52351         "music-18": {
52352             "x": 186,
52353             "y": 408,
52354             "width": 18,
52355             "height": 18
52356         },
52357         "music-12": {
52358             "x": 204,
52359             "y": 408,
52360             "width": 12,
52361             "height": 12
52362         },
52363         "land-use-24": {
52364             "x": 216,
52365             "y": 408,
52366             "width": 24,
52367             "height": 24
52368         },
52369         "land-use-18": {
52370             "x": 240,
52371             "y": 408,
52372             "width": 18,
52373             "height": 18
52374         },
52375         "land-use-12": {
52376             "x": 258,
52377             "y": 408,
52378             "width": 12,
52379             "height": 12
52380         },
52381         "city-24": {
52382             "x": 0,
52383             "y": 432,
52384             "width": 24,
52385             "height": 24
52386         },
52387         "city-18": {
52388             "x": 24,
52389             "y": 432,
52390             "width": 18,
52391             "height": 18
52392         },
52393         "city-12": {
52394             "x": 42,
52395             "y": 432,
52396             "width": 12,
52397             "height": 12
52398         },
52399         "town-24": {
52400             "x": 54,
52401             "y": 432,
52402             "width": 24,
52403             "height": 24
52404         },
52405         "town-18": {
52406             "x": 78,
52407             "y": 432,
52408             "width": 18,
52409             "height": 18
52410         },
52411         "town-12": {
52412             "x": 96,
52413             "y": 432,
52414             "width": 12,
52415             "height": 12
52416         },
52417         "village-24": {
52418             "x": 108,
52419             "y": 432,
52420             "width": 24,
52421             "height": 24
52422         },
52423         "village-18": {
52424             "x": 132,
52425             "y": 432,
52426             "width": 18,
52427             "height": 18
52428         },
52429         "village-12": {
52430             "x": 150,
52431             "y": 432,
52432             "width": 12,
52433             "height": 12
52434         },
52435         "farm-24": {
52436             "x": 162,
52437             "y": 432,
52438             "width": 24,
52439             "height": 24
52440         },
52441         "farm-18": {
52442             "x": 186,
52443             "y": 432,
52444             "width": 18,
52445             "height": 18
52446         },
52447         "farm-12": {
52448             "x": 204,
52449             "y": 432,
52450             "width": 12,
52451             "height": 12
52452         },
52453         "bakery-24": {
52454             "x": 216,
52455             "y": 432,
52456             "width": 24,
52457             "height": 24
52458         },
52459         "bakery-18": {
52460             "x": 240,
52461             "y": 432,
52462             "width": 18,
52463             "height": 18
52464         },
52465         "bakery-12": {
52466             "x": 258,
52467             "y": 432,
52468             "width": 12,
52469             "height": 12
52470         },
52471         "dog-park-24": {
52472             "x": 0,
52473             "y": 456,
52474             "width": 24,
52475             "height": 24
52476         },
52477         "dog-park-18": {
52478             "x": 24,
52479             "y": 456,
52480             "width": 18,
52481             "height": 18
52482         },
52483         "dog-park-12": {
52484             "x": 42,
52485             "y": 456,
52486             "width": 12,
52487             "height": 12
52488         },
52489         "lighthouse-24": {
52490             "x": 54,
52491             "y": 456,
52492             "width": 24,
52493             "height": 24
52494         },
52495         "lighthouse-18": {
52496             "x": 78,
52497             "y": 456,
52498             "width": 18,
52499             "height": 18
52500         },
52501         "lighthouse-12": {
52502             "x": 96,
52503             "y": 456,
52504             "width": 12,
52505             "height": 12
52506         },
52507         "clothing-store-24": {
52508             "x": 108,
52509             "y": 456,
52510             "width": 24,
52511             "height": 24
52512         },
52513         "clothing-store-18": {
52514             "x": 132,
52515             "y": 456,
52516             "width": 18,
52517             "height": 18
52518         },
52519         "clothing-store-12": {
52520             "x": 150,
52521             "y": 456,
52522             "width": 12,
52523             "height": 12
52524         },
52525         "polling-place-24": {
52526             "x": 162,
52527             "y": 456,
52528             "width": 24,
52529             "height": 24
52530         },
52531         "polling-place-18": {
52532             "x": 186,
52533             "y": 456,
52534             "width": 18,
52535             "height": 18
52536         },
52537         "polling-place-12": {
52538             "x": 204,
52539             "y": 456,
52540             "width": 12,
52541             "height": 12
52542         },
52543         "playground-24": {
52544             "x": 216,
52545             "y": 456,
52546             "width": 24,
52547             "height": 24
52548         },
52549         "playground-18": {
52550             "x": 240,
52551             "y": 456,
52552             "width": 18,
52553             "height": 18
52554         },
52555         "playground-12": {
52556             "x": 258,
52557             "y": 456,
52558             "width": 12,
52559             "height": 12
52560         },
52561         "entrance-24": {
52562             "x": 0,
52563             "y": 480,
52564             "width": 24,
52565             "height": 24
52566         },
52567         "entrance-18": {
52568             "x": 24,
52569             "y": 480,
52570             "width": 18,
52571             "height": 18
52572         },
52573         "entrance-12": {
52574             "x": 42,
52575             "y": 480,
52576             "width": 12,
52577             "height": 12
52578         },
52579         "heart-24": {
52580             "x": 54,
52581             "y": 480,
52582             "width": 24,
52583             "height": 24
52584         },
52585         "heart-18": {
52586             "x": 78,
52587             "y": 480,
52588             "width": 18,
52589             "height": 18
52590         },
52591         "heart-12": {
52592             "x": 96,
52593             "y": 480,
52594             "width": 12,
52595             "height": 12
52596         },
52597         "london-underground-24": {
52598             "x": 108,
52599             "y": 480,
52600             "width": 24,
52601             "height": 24
52602         },
52603         "london-underground-18": {
52604             "x": 132,
52605             "y": 480,
52606             "width": 18,
52607             "height": 18
52608         },
52609         "london-underground-12": {
52610             "x": 150,
52611             "y": 480,
52612             "width": 12,
52613             "height": 12
52614         },
52615         "minefield-24": {
52616             "x": 162,
52617             "y": 480,
52618             "width": 24,
52619             "height": 24
52620         },
52621         "minefield-18": {
52622             "x": 186,
52623             "y": 480,
52624             "width": 18,
52625             "height": 18
52626         },
52627         "minefield-12": {
52628             "x": 204,
52629             "y": 480,
52630             "width": 12,
52631             "height": 12
52632         },
52633         "rail-underground-24": {
52634             "x": 216,
52635             "y": 480,
52636             "width": 24,
52637             "height": 24
52638         },
52639         "rail-underground-18": {
52640             "x": 240,
52641             "y": 480,
52642             "width": 18,
52643             "height": 18
52644         },
52645         "rail-underground-12": {
52646             "x": 258,
52647             "y": 480,
52648             "width": 12,
52649             "height": 12
52650         },
52651         "rail-above-24": {
52652             "x": 0,
52653             "y": 504,
52654             "width": 24,
52655             "height": 24
52656         },
52657         "rail-above-18": {
52658             "x": 24,
52659             "y": 504,
52660             "width": 18,
52661             "height": 18
52662         },
52663         "rail-above-12": {
52664             "x": 42,
52665             "y": 504,
52666             "width": 12,
52667             "height": 12
52668         },
52669         "camera-24": {
52670             "x": 54,
52671             "y": 504,
52672             "width": 24,
52673             "height": 24
52674         },
52675         "camera-18": {
52676             "x": 78,
52677             "y": 504,
52678             "width": 18,
52679             "height": 18
52680         },
52681         "camera-12": {
52682             "x": 96,
52683             "y": 504,
52684             "width": 12,
52685             "height": 12
52686         },
52687         "laundry-24": {
52688             "x": 108,
52689             "y": 504,
52690             "width": 24,
52691             "height": 24
52692         },
52693         "laundry-18": {
52694             "x": 132,
52695             "y": 504,
52696             "width": 18,
52697             "height": 18
52698         },
52699         "laundry-12": {
52700             "x": 150,
52701             "y": 504,
52702             "width": 12,
52703             "height": 12
52704         },
52705         "car-24": {
52706             "x": 162,
52707             "y": 504,
52708             "width": 24,
52709             "height": 24
52710         },
52711         "car-18": {
52712             "x": 186,
52713             "y": 504,
52714             "width": 18,
52715             "height": 18
52716         },
52717         "car-12": {
52718             "x": 204,
52719             "y": 504,
52720             "width": 12,
52721             "height": 12
52722         },
52723         "suitcase-24": {
52724             "x": 216,
52725             "y": 504,
52726             "width": 24,
52727             "height": 24
52728         },
52729         "suitcase-18": {
52730             "x": 240,
52731             "y": 504,
52732             "width": 18,
52733             "height": 18
52734         },
52735         "suitcase-12": {
52736             "x": 258,
52737             "y": 504,
52738             "width": 12,
52739             "height": 12
52740         },
52741         "hairdresser-24": {
52742             "x": 0,
52743             "y": 528,
52744             "width": 24,
52745             "height": 24
52746         },
52747         "hairdresser-18": {
52748             "x": 24,
52749             "y": 528,
52750             "width": 18,
52751             "height": 18
52752         },
52753         "hairdresser-12": {
52754             "x": 42,
52755             "y": 528,
52756             "width": 12,
52757             "height": 12
52758         },
52759         "chemist-24": {
52760             "x": 54,
52761             "y": 528,
52762             "width": 24,
52763             "height": 24
52764         },
52765         "chemist-18": {
52766             "x": 78,
52767             "y": 528,
52768             "width": 18,
52769             "height": 18
52770         },
52771         "chemist-12": {
52772             "x": 96,
52773             "y": 528,
52774             "width": 12,
52775             "height": 12
52776         },
52777         "mobilephone-24": {
52778             "x": 108,
52779             "y": 528,
52780             "width": 24,
52781             "height": 24
52782         },
52783         "mobilephone-18": {
52784             "x": 132,
52785             "y": 528,
52786             "width": 18,
52787             "height": 18
52788         },
52789         "mobilephone-12": {
52790             "x": 150,
52791             "y": 528,
52792             "width": 12,
52793             "height": 12
52794         },
52795         "scooter-24": {
52796             "x": 162,
52797             "y": 528,
52798             "width": 24,
52799             "height": 24
52800         },
52801         "scooter-18": {
52802             "x": 186,
52803             "y": 528,
52804             "width": 18,
52805             "height": 18
52806         },
52807         "scooter-12": {
52808             "x": 204,
52809             "y": 528,
52810             "width": 12,
52811             "height": 12
52812         },
52813         "gift-24": {
52814             "x": 216,
52815             "y": 528,
52816             "width": 24,
52817             "height": 24
52818         },
52819         "gift-18": {
52820             "x": 240,
52821             "y": 528,
52822             "width": 18,
52823             "height": 18
52824         },
52825         "gift-12": {
52826             "x": 258,
52827             "y": 528,
52828             "width": 12,
52829             "height": 12
52830         },
52831         "ice-cream-24": {
52832             "x": 0,
52833             "y": 552,
52834             "width": 24,
52835             "height": 24
52836         },
52837         "ice-cream-18": {
52838             "x": 24,
52839             "y": 552,
52840             "width": 18,
52841             "height": 18
52842         },
52843         "ice-cream-12": {
52844             "x": 42,
52845             "y": 552,
52846             "width": 12,
52847             "height": 12
52848         }
52849     },
52850     "locales": [
52851         "af",
52852         "sq",
52853         "ar",
52854         "ar-AA",
52855         "hy",
52856         "ast",
52857         "bn",
52858         "bs",
52859         "bg-BG",
52860         "ca",
52861         "zh",
52862         "zh-CN",
52863         "zh-HK",
52864         "zh-TW",
52865         "yue",
52866         "hr",
52867         "cs",
52868         "da",
52869         "nl",
52870         "en-GB",
52871         "eo",
52872         "et",
52873         "fi",
52874         "fr",
52875         "gl",
52876         "de",
52877         "el",
52878         "hu",
52879         "is",
52880         "id",
52881         "it",
52882         "ja",
52883         "kn",
52884         "ko",
52885         "ko-KR",
52886         "lv",
52887         "lt",
52888         "no",
52889         "fa",
52890         "pl",
52891         "pt",
52892         "pt-BR",
52893         "ro",
52894         "ru",
52895         "sc",
52896         "sr",
52897         "si",
52898         "sk",
52899         "sl",
52900         "es",
52901         "sv",
52902         "tl",
52903         "ta",
52904         "te",
52905         "tr",
52906         "uk",
52907         "vi"
52908     ],
52909     "en": {
52910         "modes": {
52911             "add_area": {
52912                 "title": "Area",
52913                 "description": "Add parks, buildings, lakes or other areas to the map.",
52914                 "tail": "Click on the map to start drawing an area, like a park, lake, or building."
52915             },
52916             "add_line": {
52917                 "title": "Line",
52918                 "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.",
52919                 "tail": "Click on the map to start drawing a road, path, or route."
52920             },
52921             "add_point": {
52922                 "title": "Point",
52923                 "description": "Add restaurants, monuments, postal boxes or other points to the map.",
52924                 "tail": "Click on the map to add a point."
52925             },
52926             "browse": {
52927                 "title": "Browse",
52928                 "description": "Pan and zoom the map."
52929             },
52930             "draw_area": {
52931                 "tail": "Click to add nodes to your area. Click the first node to finish the area."
52932             },
52933             "draw_line": {
52934                 "tail": "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line."
52935             }
52936         },
52937         "operations": {
52938             "add": {
52939                 "annotation": {
52940                     "point": "Added a point.",
52941                     "vertex": "Added a node to a way.",
52942                     "relation": "Added a relation."
52943                 }
52944             },
52945             "start": {
52946                 "annotation": {
52947                     "line": "Started a line.",
52948                     "area": "Started an area."
52949                 }
52950             },
52951             "continue": {
52952                 "key": "A",
52953                 "title": "Continue",
52954                 "description": "Continue this line.",
52955                 "not_eligible": "No line can be continued here.",
52956                 "multiple": "Several lines can be continued here. To choose a line, press the Shift key and click on it to select it.",
52957                 "annotation": {
52958                     "line": "Continued a line.",
52959                     "area": "Continued an area."
52960                 }
52961             },
52962             "cancel_draw": {
52963                 "annotation": "Canceled drawing."
52964             },
52965             "change_role": {
52966                 "annotation": "Changed the role of a relation member."
52967             },
52968             "change_tags": {
52969                 "annotation": "Changed tags."
52970             },
52971             "circularize": {
52972                 "title": "Circularize",
52973                 "description": {
52974                     "line": "Make this line circular.",
52975                     "area": "Make this area circular."
52976                 },
52977                 "key": "O",
52978                 "annotation": {
52979                     "line": "Made a line circular.",
52980                     "area": "Made an area circular."
52981                 },
52982                 "not_closed": "This can't be made circular because it's not a loop.",
52983                 "too_large": "This can't be made circular because not enough of it is currently visible.",
52984                 "connected_to_hidden": "This can't be made circular because it is connected to a hidden feature."
52985             },
52986             "orthogonalize": {
52987                 "title": "Square",
52988                 "description": {
52989                     "line": "Square the corners of this line.",
52990                     "area": "Square the corners of this area."
52991                 },
52992                 "key": "S",
52993                 "annotation": {
52994                     "line": "Squared the corners of a line.",
52995                     "area": "Squared the corners of an area."
52996                 },
52997                 "not_squarish": "This can't be made square because it is not squarish.",
52998                 "too_large": "This can't be made square because not enough of it is currently visible.",
52999                 "connected_to_hidden": "This can't be made square because it is connected to a hidden feature."
53000             },
53001             "straighten": {
53002                 "title": "Straighten",
53003                 "description": "Straighten this line.",
53004                 "key": "S",
53005                 "annotation": "Straightened a line.",
53006                 "too_bendy": "This can't be straightened because it bends too much.",
53007                 "connected_to_hidden": "This line can't be straightened because it is connected to a hidden feature."
53008             },
53009             "delete": {
53010                 "title": "Delete",
53011                 "description": "Delete object permanently.",
53012                 "annotation": {
53013                     "point": "Deleted a point.",
53014                     "vertex": "Deleted a node from a way.",
53015                     "line": "Deleted a line.",
53016                     "area": "Deleted an area.",
53017                     "relation": "Deleted a relation.",
53018                     "multiple": "Deleted {n} objects."
53019                 },
53020                 "incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded.",
53021                 "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.",
53022                 "connected_to_hidden": "This can't be deleted because it is connected to a hidden feature."
53023             },
53024             "add_member": {
53025                 "annotation": "Added a member to a relation."
53026             },
53027             "delete_member": {
53028                 "annotation": "Removed a member from a relation."
53029             },
53030             "connect": {
53031                 "annotation": {
53032                     "point": "Connected a way to a point.",
53033                     "vertex": "Connected a way to another.",
53034                     "line": "Connected a way to a line.",
53035                     "area": "Connected a way to an area."
53036                 }
53037             },
53038             "disconnect": {
53039                 "title": "Disconnect",
53040                 "description": "Disconnect these lines/areas from each other.",
53041                 "key": "D",
53042                 "annotation": "Disconnected lines/areas.",
53043                 "not_connected": "There aren't enough lines/areas here to disconnect.",
53044                 "connected_to_hidden": "This can't be disconnected because it is connected to a hidden feature."
53045             },
53046             "merge": {
53047                 "title": "Merge",
53048                 "description": "Merge these lines.",
53049                 "key": "C",
53050                 "annotation": "Merged {n} lines.",
53051                 "not_eligible": "These features can't be merged.",
53052                 "not_adjacent": "These lines can't be merged because they aren't connected.",
53053                 "restriction": "These lines can't be merged because at least one is a member of a \"{relation}\" relation.",
53054                 "incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded.",
53055                 "conflicting_tags": "These lines can't be merged because some of their tags have conflicting values."
53056             },
53057             "move": {
53058                 "title": "Move",
53059                 "description": "Move this to a different location.",
53060                 "key": "M",
53061                 "annotation": {
53062                     "point": "Moved a point.",
53063                     "vertex": "Moved a node in a way.",
53064                     "line": "Moved a line.",
53065                     "area": "Moved an area.",
53066                     "multiple": "Moved multiple objects."
53067                 },
53068                 "incomplete_relation": "This feature can't be moved because it hasn't been fully downloaded.",
53069                 "too_large": "This can't be moved because not enough of it is currently visible.",
53070                 "connected_to_hidden": "This can't be moved because it is connected to a hidden feature."
53071             },
53072             "rotate": {
53073                 "title": "Rotate",
53074                 "description": "Rotate this object around its center point.",
53075                 "key": "R",
53076                 "annotation": {
53077                     "line": "Rotated a line.",
53078                     "area": "Rotated an area."
53079                 },
53080                 "too_large": "This can't be rotated because not enough of it is currently visible.",
53081                 "connected_to_hidden": "This can't be rotated because it is connected to a hidden feature."
53082             },
53083             "reverse": {
53084                 "title": "Reverse",
53085                 "description": "Make this line go in the opposite direction.",
53086                 "key": "V",
53087                 "annotation": "Reversed a line."
53088             },
53089             "split": {
53090                 "title": "Split",
53091                 "description": {
53092                     "line": "Split this line into two at this node.",
53093                     "area": "Split the boundary of this area into two.",
53094                     "multiple": "Split the lines/area boundaries at this node into two."
53095                 },
53096                 "key": "X",
53097                 "annotation": {
53098                     "line": "Split a line.",
53099                     "area": "Split an area boundary.",
53100                     "multiple": "Split {n} lines/area boundaries."
53101                 },
53102                 "not_eligible": "Lines can't be split at their beginning or end.",
53103                 "multiple_ways": "There are too many lines here to split.",
53104                 "connected_to_hidden": "This can't be split because it is connected to a hidden feature."
53105             },
53106             "restriction": {
53107                 "help": {
53108                     "select": "Click to select a road segment.",
53109                     "toggle": "Click to toggle turn restrictions.",
53110                     "toggle_on": "Click to add a \"{restriction}\" restriction.",
53111                     "toggle_off": "Click to remove the \"{restriction}\" restriction."
53112                 },
53113                 "annotation": {
53114                     "create": "Added a turn restriction",
53115                     "delete": "Deleted a turn restriction"
53116                 }
53117             }
53118         },
53119         "undo": {
53120             "tooltip": "Undo: {action}",
53121             "nothing": "Nothing to undo."
53122         },
53123         "redo": {
53124             "tooltip": "Redo: {action}",
53125             "nothing": "Nothing to redo."
53126         },
53127         "tooltip_keyhint": "Shortcut:",
53128         "browser_notice": "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
53129         "translate": {
53130             "translate": "Translate",
53131             "localized_translation_label": "Multilingual name",
53132             "localized_translation_language": "Choose language",
53133             "localized_translation_name": "Name"
53134         },
53135         "zoom_in_edit": "Zoom in to Edit",
53136         "logout": "logout",
53137         "loading_auth": "Connecting to OpenStreetMap...",
53138         "report_a_bug": "Report a bug",
53139         "help_translate": "Help translate",
53140         "feature_info": {
53141             "hidden_warning": "{count} hidden features",
53142             "hidden_details": "These features are currently hidden: {details}"
53143         },
53144         "status": {
53145             "error": "Unable to connect to API.",
53146             "offline": "The API is offline. Please try editing later.",
53147             "readonly": "The API is read-only. You will need to wait to save your changes."
53148         },
53149         "commit": {
53150             "title": "Save Changes",
53151             "description_placeholder": "Brief description of your contributions",
53152             "message_label": "Changeset comment",
53153             "upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.",
53154             "upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
53155             "save": "Save",
53156             "cancel": "Cancel",
53157             "changes": "{count} Changes",
53158             "warnings": "Warnings",
53159             "modified": "Modified",
53160             "deleted": "Deleted",
53161             "created": "Created"
53162         },
53163         "contributors": {
53164             "list": "Edits by {users}",
53165             "truncated_list": "Edits by {users} and {count} others"
53166         },
53167         "infobox": {
53168             "selected": "{n} selected",
53169             "geometry": "Geometry",
53170             "closed": "closed",
53171             "center": "Center",
53172             "perimeter": "Perimeter",
53173             "length": "Length",
53174             "area": "Area",
53175             "centroid": "Centroid",
53176             "location": "Location",
53177             "metric": "Metric",
53178             "imperial": "Imperial"
53179         },
53180         "geometry": {
53181             "point": "point",
53182             "vertex": "vertex",
53183             "line": "line",
53184             "area": "area",
53185             "relation": "relation"
53186         },
53187         "geocoder": {
53188             "search": "Search worldwide...",
53189             "no_results_visible": "No results in visible map area",
53190             "no_results_worldwide": "No results found"
53191         },
53192         "geolocate": {
53193             "title": "Show My Location"
53194         },
53195         "inspector": {
53196             "no_documentation_combination": "There is no documentation available for this tag combination",
53197             "no_documentation_key": "There is no documentation available for this key",
53198             "show_more": "Show More",
53199             "view_on_osm": "View on openstreetmap.org",
53200             "all_tags": "All tags",
53201             "all_members": "All members",
53202             "all_relations": "All relations",
53203             "new_relation": "New relation...",
53204             "role": "Role",
53205             "choose": "Select feature type",
53206             "results": "{n} results for {search}",
53207             "reference": "View on OpenStreetMap Wiki",
53208             "back_tooltip": "Change feature",
53209             "remove": "Remove",
53210             "search": "Search",
53211             "multiselect": "Selected items",
53212             "unknown": "Unknown",
53213             "incomplete": "<not downloaded>",
53214             "feature_list": "Search features",
53215             "edit": "Edit feature",
53216             "check": {
53217                 "yes": "Yes",
53218                 "no": "No"
53219             },
53220             "none": "None",
53221             "node": "Node",
53222             "way": "Way",
53223             "relation": "Relation",
53224             "location": "Location",
53225             "add_fields": "Add field:"
53226         },
53227         "background": {
53228             "title": "Background",
53229             "description": "Background settings",
53230             "percent_brightness": "{opacity}% brightness",
53231             "none": "None",
53232             "custom": "Custom",
53233             "custom_button": "Edit custom background",
53234             "custom_prompt": "Enter a tile URL template. Valid tokens are {z}, {x}, {y} for Z/X/Y scheme and {u} for quadtile scheme.",
53235             "fix_misalignment": "Fix alignment",
53236             "reset": "reset",
53237             "minimap": {
53238                 "description": "Minimap",
53239                 "tooltip": "Show a zoomed out map to help locate the area currently displayed."
53240             }
53241         },
53242         "map_data": {
53243             "title": "Map Data",
53244             "description": "Map Data",
53245             "data_layers": "Data Layers",
53246             "fill_area": "Fill Areas",
53247             "map_features": "Map Features",
53248             "autohidden": "These features have been automatically hidden because too many would be shown on the screen.  You can zoom in to edit them."
53249         },
53250         "feature": {
53251             "points": {
53252                 "description": "Points",
53253                 "tooltip": "Points of Interest"
53254             },
53255             "major_roads": {
53256                 "description": "Major Roads",
53257                 "tooltip": "Highways, Streets, etc."
53258             },
53259             "minor_roads": {
53260                 "description": "Minor Roads",
53261                 "tooltip": "Service Roads, Parking Aisles, Tracks, etc."
53262             },
53263             "paths": {
53264                 "description": "Paths",
53265                 "tooltip": "Sidewalks, Foot Paths, Cycle Paths, etc."
53266             },
53267             "buildings": {
53268                 "description": "Buildings",
53269                 "tooltip": "Buildings, Shelters, Garages, etc."
53270             },
53271             "landuse": {
53272                 "description": "Landuse Features",
53273                 "tooltip": "Forests, Farmland, Parks, Residential, Commercial, etc."
53274             },
53275             "boundaries": {
53276                 "description": "Boundaries",
53277                 "tooltip": "Administrative Boundaries"
53278             },
53279             "water": {
53280                 "description": "Water Features",
53281                 "tooltip": "Rivers, Lakes, Ponds, Basins, etc."
53282             },
53283             "rail": {
53284                 "description": "Rail Features",
53285                 "tooltip": "Railways"
53286             },
53287             "power": {
53288                 "description": "Power Features",
53289                 "tooltip": "Power Lines, Power Plants, Substations, etc."
53290             },
53291             "past_future": {
53292                 "description": "Past/Future",
53293                 "tooltip": "Proposed, Construction, Abandoned, Demolished, etc."
53294             },
53295             "others": {
53296                 "description": "Others",
53297                 "tooltip": "Everything Else"
53298             }
53299         },
53300         "area_fill": {
53301             "wireframe": {
53302                 "description": "No Fill (Wireframe)",
53303                 "tooltip": "Enabling wireframe mode makes it easy to see the background imagery."
53304             },
53305             "partial": {
53306                 "description": "Partial Fill",
53307                 "tooltip": "Areas are drawn with fill only around their inner edges. (Recommended for beginner mappers)"
53308             },
53309             "full": {
53310                 "description": "Full Fill",
53311                 "tooltip": "Areas are drawn fully filled."
53312             }
53313         },
53314         "restore": {
53315             "heading": "You have unsaved changes",
53316             "description": "Do you wish to restore unsaved changes from a previous editing session?",
53317             "restore": "Restore",
53318             "reset": "Reset"
53319         },
53320         "save": {
53321             "title": "Save",
53322             "help": "Save changes to OpenStreetMap, making them visible to other users.",
53323             "no_changes": "No changes to save.",
53324             "error": "Errors occurred while trying to save",
53325             "status_code": "Server returned status code {code}",
53326             "unknown_error_details": "Please ensure you are connected to the internet.",
53327             "uploading": "Uploading changes to OpenStreetMap.",
53328             "unsaved_changes": "You have unsaved changes",
53329             "conflict": {
53330                 "header": "Resolve conflicting edits",
53331                 "count": "Conflict {num} of {total}",
53332                 "previous": "< Previous",
53333                 "next": "Next >",
53334                 "keep_local": "Keep mine",
53335                 "keep_remote": "Use theirs",
53336                 "restore": "Restore",
53337                 "delete": "Leave Deleted",
53338                 "download_changes": "Or download your changes.",
53339                 "done": "All conflicts resolved!",
53340                 "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"
53341             }
53342         },
53343         "merge_remote_changes": {
53344             "conflict": {
53345                 "deleted": "This object has been deleted by {user}.",
53346                 "location": "This object was moved by both you and {user}.",
53347                 "nodelist": "Nodes were changed by both you and {user}.",
53348                 "memberlist": "Relation members were changed by both you and {user}.",
53349                 "tags": "You changed the <b>{tag}</b> tag to \"{local}\" and {user} changed it to \"{remote}\"."
53350             }
53351         },
53352         "success": {
53353             "edited_osm": "Edited OSM!",
53354             "just_edited": "You just edited OpenStreetMap!",
53355             "view_on_osm": "View on OSM",
53356             "facebook": "Share on Facebook",
53357             "twitter": "Share on Twitter",
53358             "google": "Share on Google+",
53359             "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"
53360         },
53361         "confirm": {
53362             "okay": "Okay",
53363             "cancel": "Cancel"
53364         },
53365         "splash": {
53366             "welcome": "Welcome to the iD OpenStreetMap editor",
53367             "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}.",
53368             "walkthrough": "Start the Walkthrough",
53369             "start": "Edit Now"
53370         },
53371         "source_switch": {
53372             "live": "live",
53373             "lose_changes": "You have unsaved changes. Switching the map server will discard them. Are you sure you want to switch servers?",
53374             "dev": "dev"
53375         },
53376         "tag_reference": {
53377             "description": "Description",
53378             "on_wiki": "{tag} on wiki.osm.org",
53379             "used_with": "used with {type}"
53380         },
53381         "validations": {
53382             "untagged_point": "Untagged point",
53383             "untagged_line": "Untagged line",
53384             "untagged_area": "Untagged area",
53385             "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.",
53386             "tag_suggests_area": "The tag {tag} suggests line should be area, but it is not an area",
53387             "untagged_point_tooltip": "Select a feature type that describes what this point is.",
53388             "untagged_line_tooltip": "Select a feature type that describes what this line is.",
53389             "untagged_area_tooltip": "Select a feature type that describes what this area is.",
53390             "deprecated_tags": "Deprecated tags: {tags}"
53391         },
53392         "zoom": {
53393             "in": "Zoom In",
53394             "out": "Zoom Out"
53395         },
53396         "cannot_zoom": "Cannot zoom out further in current mode.",
53397         "full_screen": "Toggle Full Screen",
53398         "gpx": {
53399             "local_layer": "Local GPX file",
53400             "drag_drop": "Drag and drop a .gpx file on the page, or click the button to the right to browse",
53401             "zoom": "Zoom to GPX track",
53402             "browse": "Browse for a .gpx file"
53403         },
53404         "mapillary": {
53405             "tooltip": "Street-level photos from Mapillary",
53406             "title": "Photo Overlay (Mapillary)",
53407             "view_on_mapillary": "View this image on Mapillary"
53408         },
53409         "help": {
53410             "title": "Help",
53411             "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",
53412             "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",
53413             "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",
53414             "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",
53415             "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",
53416             "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",
53417             "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",
53418             "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",
53419             "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"
53420         },
53421         "intro": {
53422             "navigation": {
53423                 "title": "Navigation",
53424                 "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!**",
53425                 "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.**",
53426                 "header": "The header shows us the feature type.",
53427                 "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.**"
53428             },
53429             "points": {
53430                 "title": "Points",
53431                 "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.**",
53432                 "place": "The point can be placed by clicking on the map. **Place the point on top of the building.**",
53433                 "search": "There are many different features that can be represented by points. The point you just added is a Cafe. **Search for '{name}'**",
53434                 "choose": "**Choose Cafe from the list.**",
53435                 "describe": "The point is now marked as a cafe. Using the feature editor, we can add more information about the feature. **Add a name**",
53436                 "close": "The feature editor can be closed by clicking on the close button. **Close the feature editor**",
53437                 "reselect": "Often points will already exist, but have mistakes or be incomplete. We can edit existing points. **Select the point you just created.**",
53438                 "fixname": "**Change the name and close the feature editor.**",
53439                 "reselect_delete": "All features on the map can be deleted. **Click on the point you created.**",
53440                 "delete": "The menu around the point contains operations that can be performed on it, including delete. **Delete the point.**"
53441             },
53442             "areas": {
53443                 "title": "Areas",
53444                 "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.**",
53445                 "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.**",
53446                 "place": "Draw the area by placing more nodes. Finish the area by clicking on the starting node. **Draw an area for the playground.**",
53447                 "search": "**Search for '{name}'.**",
53448                 "choose": "**Choose Playground from the list.**",
53449                 "describe": "**Add a name, and close the feature editor**"
53450             },
53451             "lines": {
53452                 "title": "Lines",
53453                 "add": "Lines are used to represent features such as roads, railroads and rivers. **Click the Line button to add a new line.**",
53454                 "start": "**Start the line by clicking on the end of the road.**",
53455                 "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.**",
53456                 "finish": "Lines can be finished by clicking on the last node again. **Finish drawing the road.**",
53457                 "road": "**Select Road from the list**",
53458                 "residential": "There are different types of roads, the most common of which is Residential. **Choose the Residential road type**",
53459                 "describe": "**Name the road and close the feature editor.**",
53460                 "restart": "The road needs to intersect Flower Street.",
53461                 "wrong_preset": "You didn't select the Residential road type. **Click here to choose again**"
53462             },
53463             "startediting": {
53464                 "title": "Start Editing",
53465                 "help": "More documentation and this walkthrough are available here.",
53466                 "save": "Don't forget to regularly save your changes!",
53467                 "start": "Start mapping!"
53468             }
53469         },
53470         "presets": {
53471             "categories": {
53472                 "category-building": {
53473                     "name": "Building"
53474                 },
53475                 "category-golf": {
53476                     "name": "Golf"
53477                 },
53478                 "category-landuse": {
53479                     "name": "Land Use"
53480                 },
53481                 "category-path": {
53482                     "name": "Path"
53483                 },
53484                 "category-rail": {
53485                     "name": "Rail"
53486                 },
53487                 "category-restriction": {
53488                     "name": "Restriction"
53489                 },
53490                 "category-road": {
53491                     "name": "Road"
53492                 },
53493                 "category-route": {
53494                     "name": "Route"
53495                 },
53496                 "category-water-area": {
53497                     "name": "Water"
53498                 },
53499                 "category-water-line": {
53500                     "name": "Water"
53501                 }
53502             },
53503             "fields": {
53504                 "access": {
53505                     "label": "Allowed Access",
53506                     "placeholder": "Not Specified",
53507                     "types": {
53508                         "access": "All",
53509                         "foot": "Foot",
53510                         "motor_vehicle": "Motor Vehicles",
53511                         "bicycle": "Bicycles",
53512                         "horse": "Horses"
53513                     },
53514                     "options": {
53515                         "yes": {
53516                             "title": "Allowed",
53517                             "description": "Access permitted by law; a right of way"
53518                         },
53519                         "no": {
53520                             "title": "Prohibited",
53521                             "description": "Access not permitted to the general public"
53522                         },
53523                         "permissive": {
53524                             "title": "Permissive",
53525                             "description": "Access permitted until such time as the owner revokes the permission"
53526                         },
53527                         "private": {
53528                             "title": "Private",
53529                             "description": "Access permitted only with permission of the owner on an individual basis"
53530                         },
53531                         "designated": {
53532                             "title": "Designated",
53533                             "description": "Access permitted according to signs or specific local laws"
53534                         },
53535                         "destination": {
53536                             "title": "Destination",
53537                             "description": "Access permitted only to reach a destination"
53538                         },
53539                         "dismount": {
53540                             "title": "Dismount",
53541                             "description": "Access permitted but rider must dismount"
53542                         }
53543                     }
53544                 },
53545                 "access_simple": {
53546                     "label": "Allowed Access",
53547                     "placeholder": "yes"
53548                 },
53549                 "access_toilets": {
53550                     "label": "Access"
53551                 },
53552                 "address": {
53553                     "label": "Address",
53554                     "placeholders": {
53555                         "housename": "Housename",
53556                         "housenumber": "123",
53557                         "conscriptionnumber": "123",
53558                         "street": "Street",
53559                         "city": "City",
53560                         "postcode": "Postcode",
53561                         "place": "Place",
53562                         "hamlet": "Hamlet",
53563                         "suburb": "Suburb",
53564                         "subdistrict": "Subdistrict",
53565                         "district": "District",
53566                         "province": "Province",
53567                         "state": "State",
53568                         "country": "Country"
53569                     }
53570                 },
53571                 "admin_level": {
53572                     "label": "Admin Level"
53573                 },
53574                 "aerialway": {
53575                     "label": "Type"
53576                 },
53577                 "aerialway/access": {
53578                     "label": "Access",
53579                     "options": {
53580                         "entry": "Entry",
53581                         "exit": "Exit",
53582                         "both": "Both"
53583                     }
53584                 },
53585                 "aerialway/bubble": {
53586                     "label": "Bubble"
53587                 },
53588                 "aerialway/capacity": {
53589                     "label": "Capacity (per hour)",
53590                     "placeholder": "500, 2500, 5000..."
53591                 },
53592                 "aerialway/duration": {
53593                     "label": "Duration (minutes)",
53594                     "placeholder": "1, 2, 3..."
53595                 },
53596                 "aerialway/heating": {
53597                     "label": "Heated"
53598                 },
53599                 "aerialway/occupancy": {
53600                     "label": "Occupancy",
53601                     "placeholder": "2, 4, 8..."
53602                 },
53603                 "aerialway/summer/access": {
53604                     "label": "Access (summer)",
53605                     "options": {
53606                         "entry": "Entry",
53607                         "exit": "Exit",
53608                         "both": "Both"
53609                     }
53610                 },
53611                 "aeroway": {
53612                     "label": "Type"
53613                 },
53614                 "amenity": {
53615                     "label": "Type"
53616                 },
53617                 "area/highway": {
53618                     "label": "Type"
53619                 },
53620                 "artist": {
53621                     "label": "Artist"
53622                 },
53623                 "artwork_type": {
53624                     "label": "Type"
53625                 },
53626                 "atm": {
53627                     "label": "ATM"
53628                 },
53629                 "backrest": {
53630                     "label": "Backrest"
53631                 },
53632                 "barrier": {
53633                     "label": "Type"
53634                 },
53635                 "bench": {
53636                     "label": "Bench"
53637                 },
53638                 "bicycle_parking": {
53639                     "label": "Type"
53640                 },
53641                 "boundary": {
53642                     "label": "Type"
53643                 },
53644                 "brand": {
53645                     "label": "Brand"
53646                 },
53647                 "building": {
53648                     "label": "Building"
53649                 },
53650                 "building_area": {
53651                     "label": "Building"
53652                 },
53653                 "capacity": {
53654                     "label": "Capacity",
53655                     "placeholder": "50, 100, 200..."
53656                 },
53657                 "cardinal_direction": {
53658                     "label": "Direction",
53659                     "options": {
53660                         "N": "North",
53661                         "E": "East",
53662                         "S": "South",
53663                         "W": "West",
53664                         "NE": "Northeast",
53665                         "SE": "Southeast",
53666                         "SW": "Southwest",
53667                         "NW": "Northwest",
53668                         "NNE": "North-northeast",
53669                         "ENE": "East-northeast",
53670                         "ESE": "East-southeast",
53671                         "SSE": "South-southeast",
53672                         "SSW": "South-southwest",
53673                         "WSW": "West-southwest",
53674                         "WNW": "West-northwest",
53675                         "NNW": "North-northwest"
53676                     }
53677                 },
53678                 "clock_direction": {
53679                     "label": "Direction",
53680                     "options": {
53681                         "clockwise": "Clockwise",
53682                         "anticlockwise": "Counterclockwise"
53683                     }
53684                 },
53685                 "collection_times": {
53686                     "label": "Collection Times"
53687                 },
53688                 "construction": {
53689                     "label": "Type"
53690                 },
53691                 "content": {
53692                     "label": "Contents"
53693                 },
53694                 "country": {
53695                     "label": "Country"
53696                 },
53697                 "covered": {
53698                     "label": "Covered"
53699                 },
53700                 "craft": {
53701                     "label": "Type"
53702                 },
53703                 "crop": {
53704                     "label": "Crop"
53705                 },
53706                 "crossing": {
53707                     "label": "Type"
53708                 },
53709                 "cuisine": {
53710                     "label": "Cuisine"
53711                 },
53712                 "cycleway": {
53713                     "label": "Bike Lanes",
53714                     "placeholder": "none",
53715                     "types": {
53716                         "cycleway:left": "Left side",
53717                         "cycleway:right": "Right side"
53718                     },
53719                     "options": {
53720                         "none": {
53721                             "title": "None",
53722                             "description": "No bike lane"
53723                         },
53724                         "lane": {
53725                             "title": "Standard bike lane",
53726                             "description": "A bike lane separated from auto traffic by a painted line"
53727                         },
53728                         "shared_lane": {
53729                             "title": "Shared bike lane",
53730                             "description": "A bike lane with no separation from auto traffic"
53731                         },
53732                         "track": {
53733                             "title": "Bike track",
53734                             "description": "A bike lane separated from traffic by a physical barrier"
53735                         },
53736                         "share_busway": {
53737                             "title": "Bike lane shared with bus",
53738                             "description": "A bike lane shared with a bus lane"
53739                         },
53740                         "opposite_lane": {
53741                             "title": "Opposite bike lane",
53742                             "description": "A bike lane that travels in the opposite direction of traffic"
53743                         },
53744                         "opposite": {
53745                             "title": "Contraflow bike lane",
53746                             "description": "A bike lane that travels in both directions on a one-way street"
53747                         }
53748                     }
53749                 },
53750                 "delivery": {
53751                     "label": "Delivery"
53752                 },
53753                 "denomination": {
53754                     "label": "Denomination"
53755                 },
53756                 "denotation": {
53757                     "label": "Denotation"
53758                 },
53759                 "description": {
53760                     "label": "Description"
53761                 },
53762                 "drive_through": {
53763                     "label": "Drive-Through"
53764                 },
53765                 "electrified": {
53766                     "label": "Electrification",
53767                     "placeholder": "Contact Line, Electrified Rail...",
53768                     "options": {
53769                         "contact_line": "Contact Line",
53770                         "rail": "Electrified Rail",
53771                         "yes": "Yes (unspecified)",
53772                         "no": "No"
53773                     }
53774                 },
53775                 "elevation": {
53776                     "label": "Elevation"
53777                 },
53778                 "emergency": {
53779                     "label": "Emergency"
53780                 },
53781                 "entrance": {
53782                     "label": "Type"
53783                 },
53784                 "except": {
53785                     "label": "Exceptions"
53786                 },
53787                 "fax": {
53788                     "label": "Fax",
53789                     "placeholder": "+31 42 123 4567"
53790                 },
53791                 "fee": {
53792                     "label": "Fee"
53793                 },
53794                 "fire_hydrant/type": {
53795                     "label": "Type",
53796                     "options": {
53797                         "pillar": "Pillar/Aboveground",
53798                         "underground": "Underground",
53799                         "wall": "Wall",
53800                         "pond": "Pond"
53801                     }
53802                 },
53803                 "fixme": {
53804                     "label": "Fix Me"
53805                 },
53806                 "fuel": {
53807                     "label": "Fuel"
53808                 },
53809                 "fuel/biodiesel": {
53810                     "label": "Sells Biodiesel"
53811                 },
53812                 "fuel/diesel": {
53813                     "label": "Sells Diesel"
53814                 },
53815                 "fuel/e10": {
53816                     "label": "Sells E10"
53817                 },
53818                 "fuel/e85": {
53819                     "label": "Sells E85"
53820                 },
53821                 "fuel/lpg": {
53822                     "label": "Sells Propane"
53823                 },
53824                 "fuel/octane_100": {
53825                     "label": "Sells Racing Gasoline"
53826                 },
53827                 "fuel/octane_91": {
53828                     "label": "Sells Regular Gasoline"
53829                 },
53830                 "fuel/octane_95": {
53831                     "label": "Sells Midgrade Gasoline"
53832                 },
53833                 "fuel/octane_98": {
53834                     "label": "Sells Premium Gasoline"
53835                 },
53836                 "gauge": {
53837                     "label": "Gauge"
53838                 },
53839                 "gender": {
53840                     "label": "Gender",
53841                     "placeholder": "Unknown",
53842                     "options": {
53843                         "male": "Male",
53844                         "female": "Female",
53845                         "unisex": "Unisex"
53846                     }
53847                 },
53848                 "generator/method": {
53849                     "label": "Method"
53850                 },
53851                 "generator/source": {
53852                     "label": "Source"
53853                 },
53854                 "generator/type": {
53855                     "label": "Type"
53856                 },
53857                 "golf_hole": {
53858                     "label": "Reference",
53859                     "placeholder": "Hole number (1-18)"
53860                 },
53861                 "handicap": {
53862                     "label": "Handicap",
53863                     "placeholder": "1-18"
53864                 },
53865                 "highway": {
53866                     "label": "Type"
53867                 },
53868                 "historic": {
53869                     "label": "Type"
53870                 },
53871                 "hoops": {
53872                     "label": "Hoops",
53873                     "placeholder": "1, 2, 4..."
53874                 },
53875                 "iata": {
53876                     "label": "IATA"
53877                 },
53878                 "icao": {
53879                     "label": "ICAO"
53880                 },
53881                 "incline": {
53882                     "label": "Incline"
53883                 },
53884                 "incline_steps": {
53885                     "label": "Incline",
53886                     "options": {
53887                         "up": "Up",
53888                         "down": "Down"
53889                     }
53890                 },
53891                 "information": {
53892                     "label": "Type"
53893                 },
53894                 "internet_access": {
53895                     "label": "Internet Access",
53896                     "options": {
53897                         "yes": "Yes",
53898                         "no": "No",
53899                         "wlan": "Wifi",
53900                         "wired": "Wired",
53901                         "terminal": "Terminal"
53902                     }
53903                 },
53904                 "lamp_type": {
53905                     "label": "Type"
53906                 },
53907                 "landuse": {
53908                     "label": "Type"
53909                 },
53910                 "lanes": {
53911                     "label": "Lanes",
53912                     "placeholder": "1, 2, 3..."
53913                 },
53914                 "layer": {
53915                     "label": "Layer"
53916                 },
53917                 "leaf_cycle": {
53918                     "label": "Leaf Cycle",
53919                     "options": {
53920                         "evergreen": "Evergreen",
53921                         "deciduous": "Deciduous",
53922                         "semi_evergreen": "Semi-Evergreen",
53923                         "semi_deciduous": "Semi-Deciduous",
53924                         "mixed": "Mixed"
53925                     }
53926                 },
53927                 "leaf_cycle_singular": {
53928                     "label": "Leaf Cycle",
53929                     "options": {
53930                         "evergreen": "Evergreen",
53931                         "deciduous": "Deciduous",
53932                         "semi_evergreen": "Semi-Evergreen",
53933                         "semi_deciduous": "Semi-Deciduous"
53934                     }
53935                 },
53936                 "leaf_type": {
53937                     "label": "Leaf Type",
53938                     "options": {
53939                         "broadleaved": "Broadleaved",
53940                         "needleleaved": "Needleleaved",
53941                         "mixed": "Mixed",
53942                         "leafless": "Leafless"
53943                     }
53944                 },
53945                 "leaf_type_singular": {
53946                     "label": "Leaf Type",
53947                     "options": {
53948                         "broadleaved": "Broadleaved",
53949                         "needleleaved": "Needleleaved",
53950                         "leafless": "Leafless"
53951                     }
53952                 },
53953                 "leisure": {
53954                     "label": "Type"
53955                 },
53956                 "length": {
53957                     "label": "Length (Meters)"
53958                 },
53959                 "level": {
53960                     "label": "Level"
53961                 },
53962                 "levels": {
53963                     "label": "Levels",
53964                     "placeholder": "2, 4, 6..."
53965                 },
53966                 "lit": {
53967                     "label": "Lit"
53968                 },
53969                 "location": {
53970                     "label": "Location"
53971                 },
53972                 "man_made": {
53973                     "label": "Type"
53974                 },
53975                 "maxspeed": {
53976                     "label": "Speed Limit",
53977                     "placeholder": "40, 50, 60..."
53978                 },
53979                 "mtb/scale": {
53980                     "label": "Mountain Biking Difficulty",
53981                     "placeholder": "0, 1, 2, 3...",
53982                     "options": {
53983                         "0": "0: Solid gravel/packed earth, no obstacles, wide curves",
53984                         "1": "1: Some loose surface, small obstacles, wide curves",
53985                         "2": "2: Much loose surface, large obstacles, easy hairpins",
53986                         "3": "3: Slippery surface, large obstacles, tight hairpins",
53987                         "4": "4: Loose surface or boulders, dangerous hairpins",
53988                         "5": "5: Maximum difficulty, boulder fields, landslides",
53989                         "6": "6: Not rideable except by the very best mountain bikers"
53990                     }
53991                 },
53992                 "mtb/scale/imba": {
53993                     "label": "IMBA Trail Difficulty",
53994                     "placeholder": "Easy, Medium, Difficult...",
53995                     "options": {
53996                         "0": "Easiest (white circle)",
53997                         "1": "Easy (green circle)",
53998                         "2": "Medium (blue square)",
53999                         "3": "Difficult (black diamond)",
54000                         "4": "Extremely Difficult (double black diamond)"
54001                     }
54002                 },
54003                 "mtb/scale/uphill": {
54004                     "label": "Mountain Biking Uphill Difficulty",
54005                     "placeholder": "0, 1, 2, 3...",
54006                     "options": {
54007                         "0": "0: Avg. incline <10%, gravel/packed earth, no obstacles",
54008                         "1": "1: Avg. incline <15%, gravel/packed earth, few small objects",
54009                         "2": "2: Avg. incline <20%, stable surface, fistsize rocks/roots",
54010                         "3": "3: Avg. incline <25%, variable surface, fistsize rocks/branches",
54011                         "4": "4: Avg. incline <30%, poor condition, big rocks/branches",
54012                         "5": "5: Very steep, bike generally needs to be pushed or carried"
54013                     }
54014                 },
54015                 "name": {
54016                     "label": "Name",
54017                     "placeholder": "Common name (if any)"
54018                 },
54019                 "natural": {
54020                     "label": "Natural"
54021                 },
54022                 "network": {
54023                     "label": "Network"
54024                 },
54025                 "note": {
54026                     "label": "Note"
54027                 },
54028                 "office": {
54029                     "label": "Type"
54030                 },
54031                 "oneway": {
54032                     "label": "One Way",
54033                     "options": {
54034                         "undefined": "Assumed to be No",
54035                         "yes": "Yes",
54036                         "no": "No"
54037                     }
54038                 },
54039                 "oneway_yes": {
54040                     "label": "One Way",
54041                     "options": {
54042                         "undefined": "Assumed to be Yes",
54043                         "yes": "Yes",
54044                         "no": "No"
54045                     }
54046                 },
54047                 "opening_hours": {
54048                     "label": "Hours"
54049                 },
54050                 "operator": {
54051                     "label": "Operator"
54052                 },
54053                 "par": {
54054                     "label": "Par",
54055                     "placeholder": "3, 4, 5..."
54056                 },
54057                 "park_ride": {
54058                     "label": "Park and Ride"
54059                 },
54060                 "parking": {
54061                     "label": "Type",
54062                     "options": {
54063                         "surface": "Surface",
54064                         "multi-storey": "Multilevel",
54065                         "underground": "Underground",
54066                         "sheds": "Sheds",
54067                         "carports": "Carports",
54068                         "garage_boxes": "Garage Boxes",
54069                         "lane": "Roadside Lane"
54070                     }
54071                 },
54072                 "phone": {
54073                     "label": "Phone",
54074                     "placeholder": "+31 42 123 4567"
54075                 },
54076                 "piste/difficulty": {
54077                     "label": "Difficulty",
54078                     "placeholder": "Easy, Intermediate, Advanced...",
54079                     "options": {
54080                         "novice": "Novice (instructional)",
54081                         "easy": "Easy (green circle)",
54082                         "intermediate": "Intermediate (blue square)",
54083                         "advanced": "Advanced (black diamond)",
54084                         "expert": "Expert (double black diamond)",
54085                         "freeride": "Freeride (off-piste)",
54086                         "extreme": "Extreme (climbing equipment required)"
54087                     }
54088                 },
54089                 "piste/grooming": {
54090                     "label": "Grooming",
54091                     "options": {
54092                         "classic": "Classic",
54093                         "mogul": "Mogul",
54094                         "backcountry": "Backcountry",
54095                         "classic+skating": "Classic and Skating",
54096                         "scooter": "Scooter/Snowmobile",
54097                         "skating": "Skating"
54098                     }
54099                 },
54100                 "piste/type": {
54101                     "label": "Type",
54102                     "options": {
54103                         "downhill": "Downhill",
54104                         "nordic": "Nordic",
54105                         "skitour": "Skitour",
54106                         "sled": "Sled",
54107                         "hike": "Hike",
54108                         "sleigh": "Sleigh",
54109                         "ice_skate": "Ice Skate",
54110                         "snow_park": "Snow Park",
54111                         "playground": "Playground"
54112                     }
54113                 },
54114                 "place": {
54115                     "label": "Type"
54116                 },
54117                 "population": {
54118                     "label": "Population"
54119                 },
54120                 "power": {
54121                     "label": "Type"
54122                 },
54123                 "power_supply": {
54124                     "label": "Power Supply"
54125                 },
54126                 "railway": {
54127                     "label": "Type"
54128                 },
54129                 "recycling/cans": {
54130                     "label": "Accepts Cans"
54131                 },
54132                 "recycling/clothes": {
54133                     "label": "Accepts Clothes"
54134                 },
54135                 "recycling/glass": {
54136                     "label": "Accepts Glass"
54137                 },
54138                 "recycling/glass_bottles": {
54139                     "label": "Accepts Glass Bottles"
54140                 },
54141                 "recycling/paper": {
54142                     "label": "Accepts Paper"
54143                 },
54144                 "recycling/plastic": {
54145                     "label": "Accepts Plastic"
54146                 },
54147                 "recycling/type": {
54148                     "label": "Recycling Type",
54149                     "options": {
54150                         "container": "Container",
54151                         "centre": "Recycling Center"
54152                     }
54153                 },
54154                 "ref": {
54155                     "label": "Reference"
54156                 },
54157                 "relation": {
54158                     "label": "Type"
54159                 },
54160                 "religion": {
54161                     "label": "Religion"
54162                 },
54163                 "restriction": {
54164                     "label": "Type"
54165                 },
54166                 "restrictions": {
54167                     "label": "Turn Restrictions"
54168                 },
54169                 "route": {
54170                     "label": "Type"
54171                 },
54172                 "route_master": {
54173                     "label": "Type"
54174                 },
54175                 "sac_scale": {
54176                     "label": "Hiking Difficulty",
54177                     "placeholder": "Mountain Hiking, Alpine Hiking...",
54178                     "options": {
54179                         "hiking": "T1: Hiking",
54180                         "mountain_hiking": "T2: Mountain Hiking",
54181                         "demanding_mountain_hiking": "T3: Demanding Mountain Hiking",
54182                         "alpine_hiking": "T4: Alpine Hiking",
54183                         "demanding_alpine_hiking": "T5: Demanding Alpine Hiking",
54184                         "difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
54185                     }
54186                 },
54187                 "sanitary_dump_station": {
54188                     "label": "Toilet Disposal"
54189                 },
54190                 "seasonal": {
54191                     "label": "Seasonal"
54192                 },
54193                 "service": {
54194                     "label": "Type"
54195                 },
54196                 "service/bicycle/chain_tool": {
54197                     "label": "Chain Tool",
54198                     "options": {
54199                         "undefined": "Assumed to be No",
54200                         "yes": "Yes",
54201                         "no": "No"
54202                     }
54203                 },
54204                 "service/bicycle/pump": {
54205                     "label": "Air Pump",
54206                     "options": {
54207                         "undefined": "Assumed to be No",
54208                         "yes": "Yes",
54209                         "no": "No"
54210                     }
54211                 },
54212                 "service_rail": {
54213                     "label": "Service Type",
54214                     "options": {
54215                         "spur": "Spur",
54216                         "yard": "Yard",
54217                         "siding": "Siding",
54218                         "crossover": "Crossover"
54219                     }
54220                 },
54221                 "shelter": {
54222                     "label": "Shelter"
54223                 },
54224                 "shelter_type": {
54225                     "label": "Type"
54226                 },
54227                 "shop": {
54228                     "label": "Type"
54229                 },
54230                 "sloped_curb": {
54231                     "label": "Sloped Curb"
54232                 },
54233                 "smoking": {
54234                     "label": "Smoking",
54235                     "placeholder": "No, Separated, Yes...",
54236                     "options": {
54237                         "no": "No smoking anywhere",
54238                         "separated": "In smoking areas, not physically isolated",
54239                         "isolated": "In smoking areas, physically isolated",
54240                         "outside": "Allowed outside",
54241                         "yes": "Allowed everywhere",
54242                         "dedicated": "Dedicated to smokers (e.g. smokers' club)"
54243                     }
54244                 },
54245                 "smoothness": {
54246                     "label": "Smoothness",
54247                     "placeholder": "Thin Rollers, Wheels, Off-Road...",
54248                     "options": {
54249                         "excellent": "Thin Rollers: rollerblade, skateboard",
54250                         "good": "Thin Wheels: racing bike",
54251                         "intermediate": "Wheels: city bike, wheelchair, scooter",
54252                         "bad": "Robust Wheels: trekking bike, car, rickshaw",
54253                         "very_bad": "High Clearance: light duty off-road vehicle",
54254                         "horrible": "Off-Road: heavy duty off-road vehicle",
54255                         "very_horrible": "Specialized off-road: tractor, ATV",
54256                         "impassable": "Impassable / No wheeled vehicle"
54257                     }
54258                 },
54259                 "social_facility_for": {
54260                     "label": "People served",
54261                     "placeholder": "Homeless, Disabled, Child, etc"
54262                 },
54263                 "source": {
54264                     "label": "Source"
54265                 },
54266                 "sport": {
54267                     "label": "Sport"
54268                 },
54269                 "sport_ice": {
54270                     "label": "Sport"
54271                 },
54272                 "sport_racing": {
54273                     "label": "Sport"
54274                 },
54275                 "structure": {
54276                     "label": "Structure",
54277                     "placeholder": "Unknown",
54278                     "options": {
54279                         "bridge": "Bridge",
54280                         "tunnel": "Tunnel",
54281                         "embankment": "Embankment",
54282                         "cutting": "Cutting",
54283                         "ford": "Ford"
54284                     }
54285                 },
54286                 "studio_type": {
54287                     "label": "Type"
54288                 },
54289                 "substation": {
54290                     "label": "Type"
54291                 },
54292                 "supervised": {
54293                     "label": "Supervised"
54294                 },
54295                 "surface": {
54296                     "label": "Surface"
54297                 },
54298                 "tactile_paving": {
54299                     "label": "Tactile Paving"
54300                 },
54301                 "takeaway": {
54302                     "label": "Takeaway",
54303                     "placeholder": "Yes, No, Takeaway Only...",
54304                     "options": {
54305                         "yes": "Yes",
54306                         "no": "No",
54307                         "only": "Takeaway Only"
54308                     }
54309                 },
54310                 "toilets/disposal": {
54311                     "label": "Disposal",
54312                     "options": {
54313                         "flush": "Flush",
54314                         "pitlatrine": "Pit/Latrine",
54315                         "chemical": "Chemical",
54316                         "bucket": "Bucket"
54317                     }
54318                 },
54319                 "tourism": {
54320                     "label": "Type"
54321                 },
54322                 "towertype": {
54323                     "label": "Tower type"
54324                 },
54325                 "tracktype": {
54326                     "label": "Track Type",
54327                     "placeholder": "Solid, Mostly Solid, Soft...",
54328                     "options": {
54329                         "grade1": "Solid: paved or heavily compacted hardcore surface",
54330                         "grade2": "Mostly Solid: gravel/rock with some soft material mixed in",
54331                         "grade3": "Even mixture of hard and soft materials",
54332                         "grade4": "Mostly Soft: soil/sand/grass with some hard material mixed in",
54333                         "grade5": "Soft: soil/sand/grass"
54334                     }
54335                 },
54336                 "traffic_signals": {
54337                     "label": "Type"
54338                 },
54339                 "trail_visibility": {
54340                     "label": "Trail Visibility",
54341                     "placeholder": "Excellent, Good, Bad...",
54342                     "options": {
54343                         "excellent": "Excellent: unambiguous path or markers everywhere",
54344                         "good": "Good: markers visible, sometimes require searching",
54345                         "intermediate": "Intermediate: few markers, path mostly visible",
54346                         "bad": "Bad: no markers, path sometimes invisible/pathless",
54347                         "horrible": "Horrible: often pathless, some orientation skills required",
54348                         "no": "No: pathless, excellent orientation skills required"
54349                     }
54350                 },
54351                 "trees": {
54352                     "label": "Trees"
54353                 },
54354                 "tunnel": {
54355                     "label": "Tunnel"
54356                 },
54357                 "vending": {
54358                     "label": "Type of Goods"
54359                 },
54360                 "water": {
54361                     "label": "Type"
54362                 },
54363                 "water_point": {
54364                     "label": "Water Point"
54365                 },
54366                 "waterway": {
54367                     "label": "Type"
54368                 },
54369                 "website": {
54370                     "label": "Website",
54371                     "placeholder": "http://example.com/"
54372                 },
54373                 "wetland": {
54374                     "label": "Type"
54375                 },
54376                 "wheelchair": {
54377                     "label": "Wheelchair Access"
54378                 },
54379                 "width": {
54380                     "label": "Width (Meters)"
54381                 },
54382                 "wikipedia": {
54383                     "label": "Wikipedia"
54384                 }
54385             },
54386             "presets": {
54387                 "address": {
54388                     "name": "Address",
54389                     "terms": ""
54390                 },
54391                 "aerialway": {
54392                     "name": "Aerialway",
54393                     "terms": "ski lift,funifor,funitel"
54394                 },
54395                 "aerialway/cable_car": {
54396                     "name": "Cable Car",
54397                     "terms": "tramway,ropeway"
54398                 },
54399                 "aerialway/chair_lift": {
54400                     "name": "Chair Lift",
54401                     "terms": ""
54402                 },
54403                 "aerialway/gondola": {
54404                     "name": "Gondola",
54405                     "terms": ""
54406                 },
54407                 "aerialway/magic_carpet": {
54408                     "name": "Magic Carpet Lift",
54409                     "terms": ""
54410                 },
54411                 "aerialway/platter": {
54412                     "name": "Platter Lift",
54413                     "terms": "button lift,poma lift"
54414                 },
54415                 "aerialway/pylon": {
54416                     "name": "Aerialway Pylon",
54417                     "terms": ""
54418                 },
54419                 "aerialway/rope_tow": {
54420                     "name": "Rope Tow Lift",
54421                     "terms": "handle tow,bugel lift"
54422                 },
54423                 "aerialway/station": {
54424                     "name": "Aerialway Station",
54425                     "terms": ""
54426                 },
54427                 "aerialway/t-bar": {
54428                     "name": "T-bar Lift",
54429                     "terms": ""
54430                 },
54431                 "aeroway": {
54432                     "name": "Aeroway",
54433                     "terms": ""
54434                 },
54435                 "aeroway/aerodrome": {
54436                     "name": "Airport",
54437                     "terms": "airplane,airport,aerodrome"
54438                 },
54439                 "aeroway/apron": {
54440                     "name": "Apron",
54441                     "terms": "ramp"
54442                 },
54443                 "aeroway/gate": {
54444                     "name": "Airport gate",
54445                     "terms": ""
54446                 },
54447                 "aeroway/hangar": {
54448                     "name": "Hangar",
54449                     "terms": ""
54450                 },
54451                 "aeroway/helipad": {
54452                     "name": "Helipad",
54453                     "terms": "helicopter,helipad,heliport"
54454                 },
54455                 "aeroway/runway": {
54456                     "name": "Runway",
54457                     "terms": "landing strip"
54458                 },
54459                 "aeroway/taxiway": {
54460                     "name": "Taxiway",
54461                     "terms": ""
54462                 },
54463                 "aeroway/terminal": {
54464                     "name": "Airport terminal",
54465                     "terms": "airport,aerodrome"
54466                 },
54467                 "amenity": {
54468                     "name": "Amenity",
54469                     "terms": ""
54470                 },
54471                 "amenity/arts_centre": {
54472                     "name": "Arts Center",
54473                     "terms": ""
54474                 },
54475                 "amenity/atm": {
54476                     "name": "ATM",
54477                     "terms": "money,cash,machine"
54478                 },
54479                 "amenity/bank": {
54480                     "name": "Bank",
54481                     "terms": "credit union,check,deposit,fund,investment,repository,reserve,safe,savings,stock,treasury,trust,vault"
54482                 },
54483                 "amenity/bar": {
54484                     "name": "Bar",
54485                     "terms": "dive,beer,bier,booze"
54486                 },
54487                 "amenity/bbq": {
54488                     "name": "Barbecue/Grill",
54489                     "terms": "bbq"
54490                 },
54491                 "amenity/bench": {
54492                     "name": "Bench",
54493                     "terms": ""
54494                 },
54495                 "amenity/bicycle_parking": {
54496                     "name": "Bicycle Parking",
54497                     "terms": "bike"
54498                 },
54499                 "amenity/bicycle_rental": {
54500                     "name": "Bicycle Rental",
54501                     "terms": "bike"
54502                 },
54503                 "amenity/bicycle_repair_station": {
54504                     "name": "Bicycle Repair Station",
54505                     "terms": "bike"
54506                 },
54507                 "amenity/biergarten": {
54508                     "name": "Beer Garden",
54509                     "terms": "beer,bier,booze"
54510                 },
54511                 "amenity/boat_rental": {
54512                     "name": "Boat Rental",
54513                     "terms": ""
54514                 },
54515                 "amenity/bureau_de_change": {
54516                     "name": "Currency Exchange",
54517                     "terms": "bureau de change,money changer"
54518                 },
54519                 "amenity/bus_station": {
54520                     "name": "Bus Station",
54521                     "terms": ""
54522                 },
54523                 "amenity/cafe": {
54524                     "name": "Cafe",
54525                     "terms": "coffee,tea"
54526                 },
54527                 "amenity/car_rental": {
54528                     "name": "Car Rental",
54529                     "terms": ""
54530                 },
54531                 "amenity/car_sharing": {
54532                     "name": "Car Sharing",
54533                     "terms": ""
54534                 },
54535                 "amenity/car_wash": {
54536                     "name": "Car Wash",
54537                     "terms": ""
54538                 },
54539                 "amenity/casino": {
54540                     "name": "Casino",
54541                     "terms": "gambling,roulette,craps,poker,blackjack"
54542                 },
54543                 "amenity/charging_station": {
54544                     "name": "Charging Station",
54545                     "terms": "EV,Electric Vehicle,Supercharger"
54546                 },
54547                 "amenity/childcare": {
54548                     "name": "Nursery/Childcare",
54549                     "terms": "daycare,orphanage,playgroup"
54550                 },
54551                 "amenity/cinema": {
54552                     "name": "Cinema",
54553                     "terms": "drive-in,film,flick,movie,theater,picture,show,screen"
54554                 },
54555                 "amenity/clinic": {
54556                     "name": "Clinic",
54557                     "terms": "medical,urgentcare"
54558                 },
54559                 "amenity/clock": {
54560                     "name": "Clock",
54561                     "terms": ""
54562                 },
54563                 "amenity/college": {
54564                     "name": "College Grounds",
54565                     "terms": "university"
54566                 },
54567                 "amenity/community_centre": {
54568                     "name": "Community Center",
54569                     "terms": "event,hall"
54570                 },
54571                 "amenity/compressed_air": {
54572                     "name": "Compressed Air",
54573                     "terms": ""
54574                 },
54575                 "amenity/courthouse": {
54576                     "name": "Courthouse",
54577                     "terms": ""
54578                 },
54579                 "amenity/dentist": {
54580                     "name": "Dentist",
54581                     "terms": "tooth,teeth"
54582                 },
54583                 "amenity/doctor": {
54584                     "name": "Doctor",
54585                     "terms": "medic*"
54586                 },
54587                 "amenity/dojo": {
54588                     "name": "Dojo / Martial Arts Academy",
54589                     "terms": "martial arts,dojang"
54590                 },
54591                 "amenity/drinking_water": {
54592                     "name": "Drinking Water",
54593                     "terms": "fountain,potable"
54594                 },
54595                 "amenity/embassy": {
54596                     "name": "Embassy",
54597                     "terms": ""
54598                 },
54599                 "amenity/fast_food": {
54600                     "name": "Fast Food",
54601                     "terms": "restaurant"
54602                 },
54603                 "amenity/fire_station": {
54604                     "name": "Fire Station",
54605                     "terms": ""
54606                 },
54607                 "amenity/fountain": {
54608                     "name": "Fountain",
54609                     "terms": ""
54610                 },
54611                 "amenity/fuel": {
54612                     "name": "Gas Station",
54613                     "terms": "petrol,fuel,propane,diesel,lng,cng,biodiesel"
54614                 },
54615                 "amenity/grave_yard": {
54616                     "name": "Graveyard",
54617                     "terms": ""
54618                 },
54619                 "amenity/grit_bin": {
54620                     "name": "Grit Bin",
54621                     "terms": "salt,sand"
54622                 },
54623                 "amenity/hospital": {
54624                     "name": "Hospital Grounds",
54625                     "terms": "clinic,doctor,emergency room,health service,hospice,infirmary,institution,nursing home,sanatorium,sanitarium,sick,surgery,ward"
54626                 },
54627                 "amenity/kindergarten": {
54628                     "name": "Preschool/Kindergarten Grounds",
54629                     "terms": "kindergarden,pre-school"
54630                 },
54631                 "amenity/library": {
54632                     "name": "Library",
54633                     "terms": "book"
54634                 },
54635                 "amenity/marketplace": {
54636                     "name": "Marketplace",
54637                     "terms": ""
54638                 },
54639                 "amenity/motorcycle_parking": {
54640                     "name": "Motorcycle Parking",
54641                     "terms": ""
54642                 },
54643                 "amenity/nightclub": {
54644                     "name": "Nightclub",
54645                     "terms": "disco*,night club,dancing,dance club"
54646                 },
54647                 "amenity/parking": {
54648                     "name": "Car Parking",
54649                     "terms": ""
54650                 },
54651                 "amenity/parking_entrance": {
54652                     "name": "Parking Garage Entrance/Exit",
54653                     "terms": ""
54654                 },
54655                 "amenity/pharmacy": {
54656                     "name": "Pharmacy",
54657                     "terms": "drug,medicine"
54658                 },
54659                 "amenity/place_of_worship": {
54660                     "name": "Place of Worship",
54661                     "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"
54662                 },
54663                 "amenity/place_of_worship/buddhist": {
54664                     "name": "Buddhist Temple",
54665                     "terms": "stupa,vihara,monastery,temple,pagoda,zendo,dojo"
54666                 },
54667                 "amenity/place_of_worship/christian": {
54668                     "name": "Church",
54669                     "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"
54670                 },
54671                 "amenity/place_of_worship/jewish": {
54672                     "name": "Synagogue",
54673                     "terms": "jewish"
54674                 },
54675                 "amenity/place_of_worship/muslim": {
54676                     "name": "Mosque",
54677                     "terms": "muslim"
54678                 },
54679                 "amenity/police": {
54680                     "name": "Police",
54681                     "terms": "badge,constable,constabulary,cop,detective,fed,law,enforcement,officer,patrol"
54682                 },
54683                 "amenity/post_box": {
54684                     "name": "Mailbox",
54685                     "terms": "letter,post"
54686                 },
54687                 "amenity/post_office": {
54688                     "name": "Post Office",
54689                     "terms": "letter,mail"
54690                 },
54691                 "amenity/pub": {
54692                     "name": "Pub",
54693                     "terms": "dive,beer,bier,booze"
54694                 },
54695                 "amenity/public_bookcase": {
54696                     "name": "Public Bookcase",
54697                     "terms": "library,bookcrossing"
54698                 },
54699                 "amenity/ranger_station": {
54700                     "name": "Ranger Station",
54701                     "terms": "visitor center,visitor centre,permit center,permit centre,backcountry office,warden office,warden center"
54702                 },
54703                 "amenity/recycling": {
54704                     "name": "Recycling",
54705                     "terms": "can,bottle,garbage,scrap,trash"
54706                 },
54707                 "amenity/register_office": {
54708                     "name": "Register Office",
54709                     "terms": ""
54710                 },
54711                 "amenity/restaurant": {
54712                     "name": "Restaurant",
54713                     "terms": "bar,breakfast,cafe,café,canteen,coffee,dine,dining,dinner,drive-in,eat,grill,lunch,table"
54714                 },
54715                 "amenity/sanitary_dump_station": {
54716                     "name": "RV Toilet Disposal",
54717                     "terms": "Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
54718                 },
54719                 "amenity/school": {
54720                     "name": "School Grounds",
54721                     "terms": "academy,elementary school,middle school,high school"
54722                 },
54723                 "amenity/shelter": {
54724                     "name": "Shelter",
54725                     "terms": "lean-to,gazebo,picnic"
54726                 },
54727                 "amenity/social_facility": {
54728                     "name": "Social Facility",
54729                     "terms": ""
54730                 },
54731                 "amenity/social_facility/food_bank": {
54732                     "name": "Food Bank",
54733                     "terms": ""
54734                 },
54735                 "amenity/social_facility/group_home": {
54736                     "name": "Elderly Group Home",
54737                     "terms": "old,senior,living"
54738                 },
54739                 "amenity/social_facility/homeless_shelter": {
54740                     "name": "Homeless Shelter",
54741                     "terms": "houseless,unhoused,displaced"
54742                 },
54743                 "amenity/studio": {
54744                     "name": "Studio",
54745                     "terms": "recording,radio,television"
54746                 },
54747                 "amenity/swimming_pool": {
54748                     "name": "Swimming Pool",
54749                     "terms": ""
54750                 },
54751                 "amenity/taxi": {
54752                     "name": "Taxi Stand",
54753                     "terms": "cab"
54754                 },
54755                 "amenity/telephone": {
54756                     "name": "Telephone",
54757                     "terms": "phone"
54758                 },
54759                 "amenity/theatre": {
54760                     "name": "Theater",
54761                     "terms": "theatre,performance,play,musical"
54762                 },
54763                 "amenity/toilets": {
54764                     "name": "Toilets",
54765                     "terms": "bathroom,restroom,outhouse,privy,head,lavatory,latrine,water closet,WC,W.C."
54766                 },
54767                 "amenity/townhall": {
54768                     "name": "Town Hall",
54769                     "terms": "village,city,government,courthouse,municipal"
54770                 },
54771                 "amenity/university": {
54772                     "name": "University Grounds",
54773                     "terms": "college"
54774                 },
54775                 "amenity/vending_machine": {
54776                     "name": "Vending Machine",
54777                     "terms": "snack,soda,ticket"
54778                 },
54779                 "amenity/veterinary": {
54780                     "name": "Veterinary",
54781                     "terms": "pet clinic,veterinarian,animal hospital,pet doctor"
54782                 },
54783                 "amenity/waste_basket": {
54784                     "name": "Waste Basket",
54785                     "terms": "rubbish,litter,trash,garbage"
54786                 },
54787                 "area": {
54788                     "name": "Area",
54789                     "terms": ""
54790                 },
54791                 "area/highway": {
54792                     "name": "Road Surface",
54793                     "terms": ""
54794                 },
54795                 "barrier": {
54796                     "name": "Barrier",
54797                     "terms": ""
54798                 },
54799                 "barrier/block": {
54800                     "name": "Block",
54801                     "terms": ""
54802                 },
54803                 "barrier/bollard": {
54804                     "name": "Bollard",
54805                     "terms": ""
54806                 },
54807                 "barrier/cattle_grid": {
54808                     "name": "Cattle Grid",
54809                     "terms": ""
54810                 },
54811                 "barrier/city_wall": {
54812                     "name": "City Wall",
54813                     "terms": ""
54814                 },
54815                 "barrier/cycle_barrier": {
54816                     "name": "Cycle Barrier",
54817                     "terms": ""
54818                 },
54819                 "barrier/ditch": {
54820                     "name": "Ditch",
54821                     "terms": ""
54822                 },
54823                 "barrier/entrance": {
54824                     "name": "Entrance",
54825                     "terms": ""
54826                 },
54827                 "barrier/fence": {
54828                     "name": "Fence",
54829                     "terms": ""
54830                 },
54831                 "barrier/gate": {
54832                     "name": "Gate",
54833                     "terms": ""
54834                 },
54835                 "barrier/hedge": {
54836                     "name": "Hedge",
54837                     "terms": ""
54838                 },
54839                 "barrier/kissing_gate": {
54840                     "name": "Kissing Gate",
54841                     "terms": ""
54842                 },
54843                 "barrier/lift_gate": {
54844                     "name": "Lift Gate",
54845                     "terms": ""
54846                 },
54847                 "barrier/retaining_wall": {
54848                     "name": "Retaining Wall",
54849                     "terms": ""
54850                 },
54851                 "barrier/stile": {
54852                     "name": "Stile",
54853                     "terms": ""
54854                 },
54855                 "barrier/toll_booth": {
54856                     "name": "Toll Booth",
54857                     "terms": ""
54858                 },
54859                 "barrier/wall": {
54860                     "name": "Wall",
54861                     "terms": ""
54862                 },
54863                 "boundary/administrative": {
54864                     "name": "Administrative Boundary",
54865                     "terms": ""
54866                 },
54867                 "building": {
54868                     "name": "Building",
54869                     "terms": ""
54870                 },
54871                 "building/apartments": {
54872                     "name": "Apartments",
54873                     "terms": ""
54874                 },
54875                 "building/barn": {
54876                     "name": "Barn",
54877                     "terms": ""
54878                 },
54879                 "building/bunker": {
54880                     "name": "Bunker",
54881                     "terms": ""
54882                 },
54883                 "building/cabin": {
54884                     "name": "Cabin",
54885                     "terms": ""
54886                 },
54887                 "building/cathedral": {
54888                     "name": "Cathedral",
54889                     "terms": ""
54890                 },
54891                 "building/chapel": {
54892                     "name": "Chapel",
54893                     "terms": ""
54894                 },
54895                 "building/church": {
54896                     "name": "Church",
54897                     "terms": ""
54898                 },
54899                 "building/college": {
54900                     "name": "College Building",
54901                     "terms": "university"
54902                 },
54903                 "building/commercial": {
54904                     "name": "Commercial Building",
54905                     "terms": ""
54906                 },
54907                 "building/construction": {
54908                     "name": "Building Under Construction",
54909                     "terms": ""
54910                 },
54911                 "building/detached": {
54912                     "name": "Detached House",
54913                     "terms": "home,single,family,residence,dwelling"
54914                 },
54915                 "building/dormitory": {
54916                     "name": "Dormitory",
54917                     "terms": ""
54918                 },
54919                 "building/entrance": {
54920                     "name": "Entrance/Exit",
54921                     "terms": ""
54922                 },
54923                 "building/garage": {
54924                     "name": "Garage",
54925                     "terms": ""
54926                 },
54927                 "building/garages": {
54928                     "name": "Garages",
54929                     "terms": ""
54930                 },
54931                 "building/greenhouse": {
54932                     "name": "Greenhouse",
54933                     "terms": ""
54934                 },
54935                 "building/hospital": {
54936                     "name": "Hospital Building",
54937                     "terms": ""
54938                 },
54939                 "building/hotel": {
54940                     "name": "Hotel Building",
54941                     "terms": ""
54942                 },
54943                 "building/house": {
54944                     "name": "House",
54945                     "terms": "home,family,residence,dwelling"
54946                 },
54947                 "building/hut": {
54948                     "name": "Hut",
54949                     "terms": ""
54950                 },
54951                 "building/industrial": {
54952                     "name": "Industrial Building",
54953                     "terms": ""
54954                 },
54955                 "building/kindergarten": {
54956                     "name": "Preschool/Kindergarten Building",
54957                     "terms": "kindergarden,pre-school"
54958                 },
54959                 "building/public": {
54960                     "name": "Public Building",
54961                     "terms": ""
54962                 },
54963                 "building/residential": {
54964                     "name": "Residential Building",
54965                     "terms": ""
54966                 },
54967                 "building/retail": {
54968                     "name": "Retail Building",
54969                     "terms": ""
54970                 },
54971                 "building/roof": {
54972                     "name": "Roof",
54973                     "terms": ""
54974                 },
54975                 "building/school": {
54976                     "name": "School Building",
54977                     "terms": "academy,elementary school,middle school,high school"
54978                 },
54979                 "building/semidetached_house": {
54980                     "name": "Semi-Detached House",
54981                     "terms": "home,double,duplex,twin,family,residence,dwelling"
54982                 },
54983                 "building/shed": {
54984                     "name": "Shed",
54985                     "terms": ""
54986                 },
54987                 "building/stable": {
54988                     "name": "Stable",
54989                     "terms": ""
54990                 },
54991                 "building/static_caravan": {
54992                     "name": "Static Mobile Home",
54993                     "terms": ""
54994                 },
54995                 "building/terrace": {
54996                     "name": "Row Houses",
54997                     "terms": "home,terrace,brownstone,family,residence,dwelling"
54998                 },
54999                 "building/train_station": {
55000                     "name": "Train Station",
55001                     "terms": ""
55002                 },
55003                 "building/university": {
55004                     "name": "University Building",
55005                     "terms": "college"
55006                 },
55007                 "building/warehouse": {
55008                     "name": "Warehouse",
55009                     "terms": ""
55010                 },
55011                 "craft": {
55012                     "name": "Craft",
55013                     "terms": ""
55014                 },
55015                 "craft/basket_maker": {
55016                     "name": "Basket Maker",
55017                     "terms": ""
55018                 },
55019                 "craft/beekeeper": {
55020                     "name": "Beekeeper",
55021                     "terms": ""
55022                 },
55023                 "craft/blacksmith": {
55024                     "name": "Blacksmith",
55025                     "terms": ""
55026                 },
55027                 "craft/boatbuilder": {
55028                     "name": "Boat Builder",
55029                     "terms": ""
55030                 },
55031                 "craft/bookbinder": {
55032                     "name": "Bookbinder",
55033                     "terms": "book repair"
55034                 },
55035                 "craft/brewery": {
55036                     "name": "Brewery",
55037                     "terms": "beer,bier"
55038                 },
55039                 "craft/carpenter": {
55040                     "name": "Carpenter",
55041                     "terms": "woodworker"
55042                 },
55043                 "craft/carpet_layer": {
55044                     "name": "Carpet Layer",
55045                     "terms": ""
55046                 },
55047                 "craft/caterer": {
55048                     "name": "Caterer",
55049                     "terms": ""
55050                 },
55051                 "craft/clockmaker": {
55052                     "name": "Clockmaker",
55053                     "terms": ""
55054                 },
55055                 "craft/confectionery": {
55056                     "name": "Confectionery",
55057                     "terms": "sweets,candy"
55058                 },
55059                 "craft/dressmaker": {
55060                     "name": "Dressmaker",
55061                     "terms": "seamstress"
55062                 },
55063                 "craft/electrician": {
55064                     "name": "Electrician",
55065                     "terms": "power,wire"
55066                 },
55067                 "craft/gardener": {
55068                     "name": "Gardener",
55069                     "terms": "landscaper,grounds keeper"
55070                 },
55071                 "craft/glaziery": {
55072                     "name": "Glaziery",
55073                     "terms": "glass,stained-glass,window"
55074                 },
55075                 "craft/handicraft": {
55076                     "name": "Handicraft",
55077                     "terms": ""
55078                 },
55079                 "craft/hvac": {
55080                     "name": "HVAC",
55081                     "terms": "heat*,vent*,air conditioning"
55082                 },
55083                 "craft/insulator": {
55084                     "name": "Insulator",
55085                     "terms": ""
55086                 },
55087                 "craft/jeweler": {
55088                     "name": "Jeweler",
55089                     "terms": ""
55090                 },
55091                 "craft/key_cutter": {
55092                     "name": "Key Cutter",
55093                     "terms": ""
55094                 },
55095                 "craft/locksmith": {
55096                     "name": "Locksmith",
55097                     "terms": ""
55098                 },
55099                 "craft/metal_construction": {
55100                     "name": "Metal Construction",
55101                     "terms": ""
55102                 },
55103                 "craft/optician": {
55104                     "name": "Optician",
55105                     "terms": ""
55106                 },
55107                 "craft/painter": {
55108                     "name": "Painter",
55109                     "terms": ""
55110                 },
55111                 "craft/photographer": {
55112                     "name": "Photographer",
55113                     "terms": ""
55114                 },
55115                 "craft/photographic_laboratory": {
55116                     "name": "Photographic Laboratory",
55117                     "terms": "film"
55118                 },
55119                 "craft/plasterer": {
55120                     "name": "Plasterer",
55121                     "terms": ""
55122                 },
55123                 "craft/plumber": {
55124                     "name": "Plumber",
55125                     "terms": "pipe"
55126                 },
55127                 "craft/pottery": {
55128                     "name": "Pottery",
55129                     "terms": "ceramic"
55130                 },
55131                 "craft/rigger": {
55132                     "name": "Rigger",
55133                     "terms": ""
55134                 },
55135                 "craft/roofer": {
55136                     "name": "Roofer",
55137                     "terms": ""
55138                 },
55139                 "craft/saddler": {
55140                     "name": "Saddler",
55141                     "terms": ""
55142                 },
55143                 "craft/sailmaker": {
55144                     "name": "Sailmaker",
55145                     "terms": ""
55146                 },
55147                 "craft/sawmill": {
55148                     "name": "Sawmill",
55149                     "terms": "lumber"
55150                 },
55151                 "craft/scaffolder": {
55152                     "name": "Scaffolder",
55153                     "terms": ""
55154                 },
55155                 "craft/sculpter": {
55156                     "name": "Sculpter",
55157                     "terms": ""
55158                 },
55159                 "craft/shoemaker": {
55160                     "name": "Shoemaker",
55161                     "terms": "cobbler"
55162                 },
55163                 "craft/stonemason": {
55164                     "name": "Stonemason",
55165                     "terms": "masonry"
55166                 },
55167                 "craft/sweep": {
55168                     "name": "Chimney Sweep",
55169                     "terms": ""
55170                 },
55171                 "craft/tailor": {
55172                     "name": "Tailor",
55173                     "terms": "clothes,suit"
55174                 },
55175                 "craft/tiler": {
55176                     "name": "Tiler",
55177                     "terms": ""
55178                 },
55179                 "craft/tinsmith": {
55180                     "name": "Tinsmith",
55181                     "terms": ""
55182                 },
55183                 "craft/upholsterer": {
55184                     "name": "Upholsterer",
55185                     "terms": ""
55186                 },
55187                 "craft/watchmaker": {
55188                     "name": "Watchmaker",
55189                     "terms": ""
55190                 },
55191                 "craft/window_construction": {
55192                     "name": "Window Construction",
55193                     "terms": "glass"
55194                 },
55195                 "craft/winery": {
55196                     "name": "Winery",
55197                     "terms": ""
55198                 },
55199                 "embankment": {
55200                     "name": "Embankment",
55201                     "terms": ""
55202                 },
55203                 "emergency/ambulance_station": {
55204                     "name": "Ambulance Station",
55205                     "terms": "EMS,EMT,rescue"
55206                 },
55207                 "emergency/fire_hydrant": {
55208                     "name": "Fire Hydrant",
55209                     "terms": ""
55210                 },
55211                 "emergency/phone": {
55212                     "name": "Emergency Phone",
55213                     "terms": ""
55214                 },
55215                 "entrance": {
55216                     "name": "Entrance/Exit",
55217                     "terms": ""
55218                 },
55219                 "footway/crossing": {
55220                     "name": "Street Crossing",
55221                     "terms": ""
55222                 },
55223                 "footway/crosswalk": {
55224                     "name": "Pedestrian Crosswalk",
55225                     "terms": "zebra crossing"
55226                 },
55227                 "footway/sidewalk": {
55228                     "name": "Sidewalk",
55229                     "terms": ""
55230                 },
55231                 "ford": {
55232                     "name": "Ford",
55233                     "terms": ""
55234                 },
55235                 "golf/bunker": {
55236                     "name": "Sand Trap",
55237                     "terms": "hazard,bunker"
55238                 },
55239                 "golf/fairway": {
55240                     "name": "Fairway",
55241                     "terms": ""
55242                 },
55243                 "golf/green": {
55244                     "name": "Putting Green",
55245                     "terms": ""
55246                 },
55247                 "golf/hole": {
55248                     "name": "Golf Hole",
55249                     "terms": ""
55250                 },
55251                 "golf/lateral_water_hazard": {
55252                     "name": "Lateral Water Hazard",
55253                     "terms": ""
55254                 },
55255                 "golf/rough": {
55256                     "name": "Rough",
55257                     "terms": ""
55258                 },
55259                 "golf/tee": {
55260                     "name": "Tee Box",
55261                     "terms": "teeing ground"
55262                 },
55263                 "golf/water_hazard": {
55264                     "name": "Water Hazard",
55265                     "terms": ""
55266                 },
55267                 "highway": {
55268                     "name": "Highway",
55269                     "terms": ""
55270                 },
55271                 "highway/bridleway": {
55272                     "name": "Bridle Path",
55273                     "terms": "bridleway,equestrian,horse"
55274                 },
55275                 "highway/bus_stop": {
55276                     "name": "Bus Stop",
55277                     "terms": ""
55278                 },
55279                 "highway/corridor": {
55280                     "name": "Indoor Corridor",
55281                     "terms": "gallery,hall,hallway,indoor,passage,passageway"
55282                 },
55283                 "highway/crossing": {
55284                     "name": "Street Crossing",
55285                     "terms": ""
55286                 },
55287                 "highway/crosswalk": {
55288                     "name": "Pedestrian Crosswalk",
55289                     "terms": "zebra crossing"
55290                 },
55291                 "highway/cycleway": {
55292                     "name": "Cycle Path",
55293                     "terms": "bike"
55294                 },
55295                 "highway/footway": {
55296                     "name": "Foot Path",
55297                     "terms": "hike,hiking,trackway,trail,walk"
55298                 },
55299                 "highway/living_street": {
55300                     "name": "Living Street",
55301                     "terms": ""
55302                 },
55303                 "highway/mini_roundabout": {
55304                     "name": "Mini-Roundabout",
55305                     "terms": ""
55306                 },
55307                 "highway/motorway": {
55308                     "name": "Motorway",
55309                     "terms": ""
55310                 },
55311                 "highway/motorway_junction": {
55312                     "name": "Motorway Junction / Exit",
55313                     "terms": ""
55314                 },
55315                 "highway/motorway_link": {
55316                     "name": "Motorway Link",
55317                     "terms": "ramp,on ramp,off ramp"
55318                 },
55319                 "highway/path": {
55320                     "name": "Path",
55321                     "terms": "hike,hiking,trackway,trail,walk"
55322                 },
55323                 "highway/pedestrian": {
55324                     "name": "Pedestrian Street",
55325                     "terms": ""
55326                 },
55327                 "highway/primary": {
55328                     "name": "Primary Road",
55329                     "terms": ""
55330                 },
55331                 "highway/primary_link": {
55332                     "name": "Primary Link",
55333                     "terms": "ramp,on ramp,off ramp"
55334                 },
55335                 "highway/raceway": {
55336                     "name": "Motor Raceway",
55337                     "terms": "auto*,race*,nascar"
55338                 },
55339                 "highway/residential": {
55340                     "name": "Residential Road",
55341                     "terms": ""
55342                 },
55343                 "highway/rest_area": {
55344                     "name": "Rest Area",
55345                     "terms": "rest stop"
55346                 },
55347                 "highway/road": {
55348                     "name": "Unknown Road",
55349                     "terms": ""
55350                 },
55351                 "highway/secondary": {
55352                     "name": "Secondary Road",
55353                     "terms": ""
55354                 },
55355                 "highway/secondary_link": {
55356                     "name": "Secondary Link",
55357                     "terms": "ramp,on ramp,off ramp"
55358                 },
55359                 "highway/service": {
55360                     "name": "Service Road",
55361                     "terms": ""
55362                 },
55363                 "highway/service/alley": {
55364                     "name": "Alley",
55365                     "terms": ""
55366                 },
55367                 "highway/service/drive-through": {
55368                     "name": "Drive-Through",
55369                     "terms": ""
55370                 },
55371                 "highway/service/driveway": {
55372                     "name": "Driveway",
55373                     "terms": ""
55374                 },
55375                 "highway/service/emergency_access": {
55376                     "name": "Emergency Access",
55377                     "terms": ""
55378                 },
55379                 "highway/service/parking_aisle": {
55380                     "name": "Parking Aisle",
55381                     "terms": ""
55382                 },
55383                 "highway/services": {
55384                     "name": "Service Area",
55385                     "terms": "services,travel plaza,service station"
55386                 },
55387                 "highway/steps": {
55388                     "name": "Steps",
55389                     "terms": "stairs,staircase"
55390                 },
55391                 "highway/stop": {
55392                     "name": "Stop Sign",
55393                     "terms": "stop sign"
55394                 },
55395                 "highway/street_lamp": {
55396                     "name": "Street Lamp",
55397                     "terms": "streetlight,street light,lamp,light,gaslight"
55398                 },
55399                 "highway/tertiary": {
55400                     "name": "Tertiary Road",
55401                     "terms": ""
55402                 },
55403                 "highway/tertiary_link": {
55404                     "name": "Tertiary Link",
55405                     "terms": "ramp,on ramp,off ramp"
55406                 },
55407                 "highway/track": {
55408                     "name": "Track",
55409                     "terms": "woods road,fire road"
55410                 },
55411                 "highway/traffic_signals": {
55412                     "name": "Traffic Signals",
55413                     "terms": "light,stoplight,traffic light"
55414                 },
55415                 "highway/trunk": {
55416                     "name": "Trunk Road",
55417                     "terms": ""
55418                 },
55419                 "highway/trunk_link": {
55420                     "name": "Trunk Link",
55421                     "terms": "ramp,on ramp,off ramp"
55422                 },
55423                 "highway/turning_circle": {
55424                     "name": "Turning Circle",
55425                     "terms": "cul-de-sac"
55426                 },
55427                 "highway/unclassified": {
55428                     "name": "Unclassified Road",
55429                     "terms": ""
55430                 },
55431                 "historic": {
55432                     "name": "Historic Site",
55433                     "terms": ""
55434                 },
55435                 "historic/archaeological_site": {
55436                     "name": "Archaeological Site",
55437                     "terms": ""
55438                 },
55439                 "historic/boundary_stone": {
55440                     "name": "Boundary Stone",
55441                     "terms": ""
55442                 },
55443                 "historic/castle": {
55444                     "name": "Castle",
55445                     "terms": ""
55446                 },
55447                 "historic/memorial": {
55448                     "name": "Memorial",
55449                     "terms": ""
55450                 },
55451                 "historic/monument": {
55452                     "name": "Monument",
55453                     "terms": ""
55454                 },
55455                 "historic/ruins": {
55456                     "name": "Ruins",
55457                     "terms": ""
55458                 },
55459                 "historic/wayside_cross": {
55460                     "name": "Wayside Cross",
55461                     "terms": ""
55462                 },
55463                 "historic/wayside_shrine": {
55464                     "name": "Wayside Shrine",
55465                     "terms": ""
55466                 },
55467                 "junction": {
55468                     "name": "Junction",
55469                     "terms": ""
55470                 },
55471                 "landuse": {
55472                     "name": "Land Use",
55473                     "terms": ""
55474                 },
55475                 "landuse/allotments": {
55476                     "name": "Community Garden",
55477                     "terms": "allotment,garden"
55478                 },
55479                 "landuse/basin": {
55480                     "name": "Basin",
55481                     "terms": ""
55482                 },
55483                 "landuse/cemetery": {
55484                     "name": "Cemetery",
55485                     "terms": ""
55486                 },
55487                 "landuse/churchyard": {
55488                     "name": "Churchyard",
55489                     "terms": ""
55490                 },
55491                 "landuse/commercial": {
55492                     "name": "Commercial Area",
55493                     "terms": ""
55494                 },
55495                 "landuse/construction": {
55496                     "name": "Construction",
55497                     "terms": ""
55498                 },
55499                 "landuse/farm": {
55500                     "name": "Farmland",
55501                     "terms": ""
55502                 },
55503                 "landuse/farmland": {
55504                     "name": "Farmland",
55505                     "terms": ""
55506                 },
55507                 "landuse/farmyard": {
55508                     "name": "Farmyard",
55509                     "terms": ""
55510                 },
55511                 "landuse/forest": {
55512                     "name": "Forest",
55513                     "terms": "tree"
55514                 },
55515                 "landuse/garages": {
55516                     "name": "Garages",
55517                     "terms": ""
55518                 },
55519                 "landuse/grass": {
55520                     "name": "Grass",
55521                     "terms": ""
55522                 },
55523                 "landuse/industrial": {
55524                     "name": "Industrial Area",
55525                     "terms": ""
55526                 },
55527                 "landuse/landfill": {
55528                     "name": "Landfill",
55529                     "terms": "dump"
55530                 },
55531                 "landuse/meadow": {
55532                     "name": "Meadow",
55533                     "terms": ""
55534                 },
55535                 "landuse/military": {
55536                     "name": "Military Area",
55537                     "terms": ""
55538                 },
55539                 "landuse/orchard": {
55540                     "name": "Orchard",
55541                     "terms": ""
55542                 },
55543                 "landuse/plant_nursery": {
55544                     "name": "Plant Nursery",
55545                     "terms": "vivero"
55546                 },
55547                 "landuse/quarry": {
55548                     "name": "Quarry",
55549                     "terms": ""
55550                 },
55551                 "landuse/residential": {
55552                     "name": "Residential Area",
55553                     "terms": ""
55554                 },
55555                 "landuse/retail": {
55556                     "name": "Retail Area",
55557                     "terms": ""
55558                 },
55559                 "landuse/vineyard": {
55560                     "name": "Vineyard",
55561                     "terms": ""
55562                 },
55563                 "leisure": {
55564                     "name": "Leisure",
55565                     "terms": ""
55566                 },
55567                 "leisure/adult_gaming_centre": {
55568                     "name": "Adult Gaming Center",
55569                     "terms": "gambling,slot machine"
55570                 },
55571                 "leisure/bowling_alley": {
55572                     "name": "Bowling Alley",
55573                     "terms": ""
55574                 },
55575                 "leisure/common": {
55576                     "name": "Common",
55577                     "terms": "open space"
55578                 },
55579                 "leisure/dog_park": {
55580                     "name": "Dog Park",
55581                     "terms": ""
55582                 },
55583                 "leisure/firepit": {
55584                     "name": "Firepit",
55585                     "terms": "fireplace,campfire"
55586                 },
55587                 "leisure/garden": {
55588                     "name": "Garden",
55589                     "terms": ""
55590                 },
55591                 "leisure/golf_course": {
55592                     "name": "Golf Course",
55593                     "terms": "links"
55594                 },
55595                 "leisure/ice_rink": {
55596                     "name": "Ice Rink",
55597                     "terms": "hockey,skating,curling"
55598                 },
55599                 "leisure/marina": {
55600                     "name": "Marina",
55601                     "terms": "boat"
55602                 },
55603                 "leisure/nature_reserve": {
55604                     "name": "Nature Reserve",
55605                     "terms": "protected,wildlife"
55606                 },
55607                 "leisure/park": {
55608                     "name": "Park",
55609                     "terms": "esplanade,estate,forest,garden,grass,green,grounds,lawn,lot,meadow,parkland,place,playground,plaza,pleasure garden,recreation area,square,tract,village green,woodland"
55610                 },
55611                 "leisure/picnic_table": {
55612                     "name": "Picnic Table",
55613                     "terms": "bench"
55614                 },
55615                 "leisure/pitch": {
55616                     "name": "Sport Pitch",
55617                     "terms": "field"
55618                 },
55619                 "leisure/pitch/american_football": {
55620                     "name": "American Football Field",
55621                     "terms": ""
55622                 },
55623                 "leisure/pitch/baseball": {
55624                     "name": "Baseball Diamond",
55625                     "terms": ""
55626                 },
55627                 "leisure/pitch/basketball": {
55628                     "name": "Basketball Court",
55629                     "terms": ""
55630                 },
55631                 "leisure/pitch/rugby_league": {
55632                     "name": "Rugby League Field",
55633                     "terms": ""
55634                 },
55635                 "leisure/pitch/rugby_union": {
55636                     "name": "Rugby Union Field",
55637                     "terms": ""
55638                 },
55639                 "leisure/pitch/skateboard": {
55640                     "name": "Skate Park",
55641                     "terms": ""
55642                 },
55643                 "leisure/pitch/soccer": {
55644                     "name": "Soccer Field",
55645                     "terms": ""
55646                 },
55647                 "leisure/pitch/tennis": {
55648                     "name": "Tennis Court",
55649                     "terms": ""
55650                 },
55651                 "leisure/pitch/volleyball": {
55652                     "name": "Volleyball Court",
55653                     "terms": ""
55654                 },
55655                 "leisure/playground": {
55656                     "name": "Playground",
55657                     "terms": "jungle gym,play area"
55658                 },
55659                 "leisure/running_track": {
55660                     "name": "Running Track",
55661                     "terms": ""
55662                 },
55663                 "leisure/slipway": {
55664                     "name": "Slipway",
55665                     "terms": "boat launch,boat ramp"
55666                 },
55667                 "leisure/sports_center": {
55668                     "name": "Sports Center / Gym",
55669                     "terms": "gym"
55670                 },
55671                 "leisure/stadium": {
55672                     "name": "Stadium",
55673                     "terms": ""
55674                 },
55675                 "leisure/swimming_pool": {
55676                     "name": "Swimming Pool",
55677                     "terms": ""
55678                 },
55679                 "leisure/track": {
55680                     "name": "Racetrack (non-Motorsport)",
55681                     "terms": ""
55682                 },
55683                 "line": {
55684                     "name": "Line",
55685                     "terms": ""
55686                 },
55687                 "man_made": {
55688                     "name": "Man Made",
55689                     "terms": ""
55690                 },
55691                 "man_made/adit": {
55692                     "name": "Adit",
55693                     "terms": "entrance,underground,mine,cave"
55694                 },
55695                 "man_made/breakwater": {
55696                     "name": "Breakwater",
55697                     "terms": ""
55698                 },
55699                 "man_made/cutline": {
55700                     "name": "Cut line",
55701                     "terms": ""
55702                 },
55703                 "man_made/embankment": {
55704                     "name": "Embankment",
55705                     "terms": ""
55706                 },
55707                 "man_made/flagpole": {
55708                     "name": "Flagpole",
55709                     "terms": ""
55710                 },
55711                 "man_made/lighthouse": {
55712                     "name": "Lighthouse",
55713                     "terms": ""
55714                 },
55715                 "man_made/mast": {
55716                     "name": "Radio Mast",
55717                     "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower"
55718                 },
55719                 "man_made/observation": {
55720                     "name": "Observation Tower",
55721                     "terms": "lookout tower,fire tower"
55722                 },
55723                 "man_made/petroleum_well": {
55724                     "name": "Oil Well",
55725                     "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack"
55726                 },
55727                 "man_made/pier": {
55728                     "name": "Pier",
55729                     "terms": ""
55730                 },
55731                 "man_made/pipeline": {
55732                     "name": "Pipeline",
55733                     "terms": ""
55734                 },
55735                 "man_made/silo": {
55736                     "name": "Silo",
55737                     "terms": "grain,corn,wheat"
55738                 },
55739                 "man_made/storage_tank": {
55740                     "name": "Storage Tank",
55741                     "terms": "water,oil,gas,petrol"
55742                 },
55743                 "man_made/survey_point": {
55744                     "name": "Survey Point",
55745                     "terms": ""
55746                 },
55747                 "man_made/tower": {
55748                     "name": "Tower",
55749                     "terms": ""
55750                 },
55751                 "man_made/wastewater_plant": {
55752                     "name": "Wastewater Plant",
55753                     "terms": "sewage*,water treatment plant,reclamation plant"
55754                 },
55755                 "man_made/water_tower": {
55756                     "name": "Water Tower",
55757                     "terms": ""
55758                 },
55759                 "man_made/water_well": {
55760                     "name": "Water Well",
55761                     "terms": ""
55762                 },
55763                 "man_made/water_works": {
55764                     "name": "Water Works",
55765                     "terms": ""
55766                 },
55767                 "military/airfield": {
55768                     "name": "Airfield",
55769                     "terms": ""
55770                 },
55771                 "military/barracks": {
55772                     "name": "Barracks",
55773                     "terms": ""
55774                 },
55775                 "military/bunker": {
55776                     "name": "Bunker",
55777                     "terms": ""
55778                 },
55779                 "military/checkpoint": {
55780                     "name": "Checkpoint",
55781                     "terms": ""
55782                 },
55783                 "military/danger_area": {
55784                     "name": "Danger Area",
55785                     "terms": ""
55786                 },
55787                 "military/naval_base": {
55788                     "name": "Naval Base",
55789                     "terms": ""
55790                 },
55791                 "military/obstacle_course": {
55792                     "name": "Obstacle Course",
55793                     "terms": ""
55794                 },
55795                 "military/range": {
55796                     "name": "Military Range",
55797                     "terms": ""
55798                 },
55799                 "military/training_area": {
55800                     "name": "Training area",
55801                     "terms": ""
55802                 },
55803                 "natural": {
55804                     "name": "Natural",
55805                     "terms": ""
55806                 },
55807                 "natural/bay": {
55808                     "name": "Bay",
55809                     "terms": ""
55810                 },
55811                 "natural/beach": {
55812                     "name": "Beach",
55813                     "terms": ""
55814                 },
55815                 "natural/cave_entrance": {
55816                     "name": "Cave Entrance",
55817                     "terms": "cavern,hollow,grotto,shelter,cavity"
55818                 },
55819                 "natural/cliff": {
55820                     "name": "Cliff",
55821                     "terms": ""
55822                 },
55823                 "natural/coastline": {
55824                     "name": "Coastline",
55825                     "terms": "shore"
55826                 },
55827                 "natural/fell": {
55828                     "name": "Fell",
55829                     "terms": ""
55830                 },
55831                 "natural/glacier": {
55832                     "name": "Glacier",
55833                     "terms": ""
55834                 },
55835                 "natural/grassland": {
55836                     "name": "Grassland",
55837                     "terms": ""
55838                 },
55839                 "natural/heath": {
55840                     "name": "Heath",
55841                     "terms": ""
55842                 },
55843                 "natural/peak": {
55844                     "name": "Peak",
55845                     "terms": "acme,aiguille,alp,climax,crest,crown,hill,mount,mountain,pinnacle,summit,tip,top"
55846                 },
55847                 "natural/saddle": {
55848                     "name": "Saddle",
55849                     "terms": "pass,mountain pass,top"
55850                 },
55851                 "natural/scree": {
55852                     "name": "Scree",
55853                     "terms": "loose rocks"
55854                 },
55855                 "natural/scrub": {
55856                     "name": "Scrub",
55857                     "terms": "bush,shrubs"
55858                 },
55859                 "natural/spring": {
55860                     "name": "Spring",
55861                     "terms": ""
55862                 },
55863                 "natural/tree": {
55864                     "name": "Tree",
55865                     "terms": ""
55866                 },
55867                 "natural/tree_row": {
55868                     "name": "Tree row",
55869                     "terms": ""
55870                 },
55871                 "natural/volcano": {
55872                     "name": "Volcano",
55873                     "terms": "mountain,crater"
55874                 },
55875                 "natural/water": {
55876                     "name": "Water",
55877                     "terms": ""
55878                 },
55879                 "natural/water/lake": {
55880                     "name": "Lake",
55881                     "terms": "lakelet,loch,mere"
55882                 },
55883                 "natural/water/pond": {
55884                     "name": "Pond",
55885                     "terms": "lakelet,millpond,tarn,pool,mere"
55886                 },
55887                 "natural/water/reservoir": {
55888                     "name": "Reservoir",
55889                     "terms": ""
55890                 },
55891                 "natural/wetland": {
55892                     "name": "Wetland",
55893                     "terms": ""
55894                 },
55895                 "natural/wood": {
55896                     "name": "Wood",
55897                     "terms": "tree"
55898                 },
55899                 "office": {
55900                     "name": "Office",
55901                     "terms": ""
55902                 },
55903                 "office/accountant": {
55904                     "name": "Accountant",
55905                     "terms": ""
55906                 },
55907                 "office/administrative": {
55908                     "name": "Administrative Office",
55909                     "terms": ""
55910                 },
55911                 "office/architect": {
55912                     "name": "Architect",
55913                     "terms": ""
55914                 },
55915                 "office/company": {
55916                     "name": "Company Office",
55917                     "terms": ""
55918                 },
55919                 "office/educational_institution": {
55920                     "name": "Educational Institution",
55921                     "terms": ""
55922                 },
55923                 "office/employment_agency": {
55924                     "name": "Employment Agency",
55925                     "terms": "job"
55926                 },
55927                 "office/estate_agent": {
55928                     "name": "Real Estate Office",
55929                     "terms": ""
55930                 },
55931                 "office/financial": {
55932                     "name": "Financial Office",
55933                     "terms": ""
55934                 },
55935                 "office/government": {
55936                     "name": "Government Office",
55937                     "terms": ""
55938                 },
55939                 "office/insurance": {
55940                     "name": "Insurance Office",
55941                     "terms": ""
55942                 },
55943                 "office/it": {
55944                     "name": "IT Office",
55945                     "terms": ""
55946                 },
55947                 "office/lawyer": {
55948                     "name": "Law Office",
55949                     "terms": ""
55950                 },
55951                 "office/newspaper": {
55952                     "name": "Newspaper",
55953                     "terms": ""
55954                 },
55955                 "office/ngo": {
55956                     "name": "NGO Office",
55957                     "terms": ""
55958                 },
55959                 "office/physician": {
55960                     "name": "Physician",
55961                     "terms": ""
55962                 },
55963                 "office/political_party": {
55964                     "name": "Political Party",
55965                     "terms": ""
55966                 },
55967                 "office/research": {
55968                     "name": "Research Office",
55969                     "terms": ""
55970                 },
55971                 "office/telecommunication": {
55972                     "name": "Telecom Office",
55973                     "terms": ""
55974                 },
55975                 "office/therapist": {
55976                     "name": "Therapist",
55977                     "terms": ""
55978                 },
55979                 "office/travel_agent": {
55980                     "name": "Travel Agency",
55981                     "terms": ""
55982                 },
55983                 "piste": {
55984                     "name": "Piste/Ski Trail",
55985                     "terms": "ski,sled,sleigh,snowboard,nordic,downhill,snowmobile"
55986                 },
55987                 "place": {
55988                     "name": "Place",
55989                     "terms": ""
55990                 },
55991                 "place/city": {
55992                     "name": "City",
55993                     "terms": ""
55994                 },
55995                 "place/farm": {
55996                     "name": "Farm",
55997                     "terms": ""
55998                 },
55999                 "place/hamlet": {
56000                     "name": "Hamlet",
56001                     "terms": ""
56002                 },
56003                 "place/island": {
56004                     "name": "Island",
56005                     "terms": "archipelago,atoll,bar,cay,isle,islet,key,reef"
56006                 },
56007                 "place/isolated_dwelling": {
56008                     "name": "Isolated Dwelling",
56009                     "terms": ""
56010                 },
56011                 "place/locality": {
56012                     "name": "Locality",
56013                     "terms": ""
56014                 },
56015                 "place/neighbourhood": {
56016                     "name": "Neighborhood",
56017                     "terms": "neighbourhood"
56018                 },
56019                 "place/suburb": {
56020                     "name": "Borough",
56021                     "terms": "Boro,Quarter"
56022                 },
56023                 "place/town": {
56024                     "name": "Town",
56025                     "terms": ""
56026                 },
56027                 "place/village": {
56028                     "name": "Village",
56029                     "terms": ""
56030                 },
56031                 "point": {
56032                     "name": "Point",
56033                     "terms": ""
56034                 },
56035                 "power": {
56036                     "name": "Power",
56037                     "terms": ""
56038                 },
56039                 "power/generator": {
56040                     "name": "Power Generator",
56041                     "terms": ""
56042                 },
56043                 "power/line": {
56044                     "name": "Power Line",
56045                     "terms": ""
56046                 },
56047                 "power/minor_line": {
56048                     "name": "Minor Power Line",
56049                     "terms": ""
56050                 },
56051                 "power/pole": {
56052                     "name": "Power Pole",
56053                     "terms": ""
56054                 },
56055                 "power/sub_station": {
56056                     "name": "Substation",
56057                     "terms": ""
56058                 },
56059                 "power/substation": {
56060                     "name": "Substation",
56061                     "terms": ""
56062                 },
56063                 "power/tower": {
56064                     "name": "High-Voltage Tower",
56065                     "terms": ""
56066                 },
56067                 "power/transformer": {
56068                     "name": "Transformer",
56069                     "terms": ""
56070                 },
56071                 "public_transport/platform": {
56072                     "name": "Platform",
56073                     "terms": ""
56074                 },
56075                 "public_transport/stop_position": {
56076                     "name": "Stop Position",
56077                     "terms": ""
56078                 },
56079                 "railway": {
56080                     "name": "Railway",
56081                     "terms": ""
56082                 },
56083                 "railway/abandoned": {
56084                     "name": "Abandoned Railway",
56085                     "terms": ""
56086                 },
56087                 "railway/disused": {
56088                     "name": "Disused Railway",
56089                     "terms": ""
56090                 },
56091                 "railway/funicular": {
56092                     "name": "Funicular",
56093                     "terms": "venicular,cliff railway,cable car,cable railway,funicular railway"
56094                 },
56095                 "railway/halt": {
56096                     "name": "Railway Halt",
56097                     "terms": "break,interrupt,rest,wait,interruption"
56098                 },
56099                 "railway/level_crossing": {
56100                     "name": "Railway Crossing",
56101                     "terms": "crossing,railroad crossing,level crossing,grade crossing,road through railroad,train crossing"
56102                 },
56103                 "railway/monorail": {
56104                     "name": "Monorail",
56105                     "terms": ""
56106                 },
56107                 "railway/narrow_gauge": {
56108                     "name": "Narrow Gauge Rail",
56109                     "terms": "narrow gauge railway,narrow gauge railroad"
56110                 },
56111                 "railway/platform": {
56112                     "name": "Railway Platform",
56113                     "terms": ""
56114                 },
56115                 "railway/rail": {
56116                     "name": "Rail",
56117                     "terms": ""
56118                 },
56119                 "railway/station": {
56120                     "name": "Railway Station",
56121                     "terms": "train station,station"
56122                 },
56123                 "railway/subway": {
56124                     "name": "Subway",
56125                     "terms": ""
56126                 },
56127                 "railway/subway_entrance": {
56128                     "name": "Subway Entrance",
56129                     "terms": ""
56130                 },
56131                 "railway/tram": {
56132                     "name": "Tram",
56133                     "terms": "streetcar"
56134                 },
56135                 "relation": {
56136                     "name": "Relation",
56137                     "terms": ""
56138                 },
56139                 "roundabout": {
56140                     "name": "Roundabout",
56141                     "terms": ""
56142                 },
56143                 "route/ferry": {
56144                     "name": "Ferry Route",
56145                     "terms": ""
56146                 },
56147                 "shop": {
56148                     "name": "Shop",
56149                     "terms": ""
56150                 },
56151                 "shop/alcohol": {
56152                     "name": "Liquor Store",
56153                     "terms": "alcohol,beer,booze,wine"
56154                 },
56155                 "shop/anime": {
56156                     "name": "Anime Shop",
56157                     "terms": ""
56158                 },
56159                 "shop/antiques": {
56160                     "name": "Antiques Shop",
56161                     "terms": ""
56162                 },
56163                 "shop/art": {
56164                     "name": "Art Gallery",
56165                     "terms": ""
56166                 },
56167                 "shop/baby_goods": {
56168                     "name": "Baby Goods Store",
56169                     "terms": ""
56170                 },
56171                 "shop/bag": {
56172                     "name": "Bag/Luggage Store",
56173                     "terms": "handbag,purse"
56174                 },
56175                 "shop/bakery": {
56176                     "name": "Bakery",
56177                     "terms": ""
56178                 },
56179                 "shop/bathroom_furnishing": {
56180                     "name": "Bathroom Furnishing Store",
56181                     "terms": ""
56182                 },
56183                 "shop/beauty": {
56184                     "name": "Beauty Shop",
56185                     "terms": "nail spa,spa,salon,tanning"
56186                 },
56187                 "shop/bed": {
56188                     "name": "Bedding/Mattress Store",
56189                     "terms": ""
56190                 },
56191                 "shop/beverages": {
56192                     "name": "Beverage Store",
56193                     "terms": ""
56194                 },
56195                 "shop/bicycle": {
56196                     "name": "Bicycle Shop",
56197                     "terms": ""
56198                 },
56199                 "shop/bookmaker": {
56200                     "name": "Bookmaker",
56201                     "terms": ""
56202                 },
56203                 "shop/books": {
56204                     "name": "Book Store",
56205                     "terms": ""
56206                 },
56207                 "shop/boutique": {
56208                     "name": "Boutique",
56209                     "terms": ""
56210                 },
56211                 "shop/butcher": {
56212                     "name": "Butcher",
56213                     "terms": "meat"
56214                 },
56215                 "shop/candles": {
56216                     "name": "Candle Shop",
56217                     "terms": ""
56218                 },
56219                 "shop/car": {
56220                     "name": "Car Dealership",
56221                     "terms": "auto"
56222                 },
56223                 "shop/car_parts": {
56224                     "name": "Car Parts Store",
56225                     "terms": "auto"
56226                 },
56227                 "shop/car_repair": {
56228                     "name": "Car Repair Shop",
56229                     "terms": "auto"
56230                 },
56231                 "shop/carpet": {
56232                     "name": "Carpet Store",
56233                     "terms": "rug"
56234                 },
56235                 "shop/cheese": {
56236                     "name": "Cheese Store",
56237                     "terms": ""
56238                 },
56239                 "shop/chemist": {
56240                     "name": "Chemist",
56241                     "terms": ""
56242                 },
56243                 "shop/chocolate": {
56244                     "name": "Chocolate Store",
56245                     "terms": ""
56246                 },
56247                 "shop/clothes": {
56248                     "name": "Clothing Store",
56249                     "terms": ""
56250                 },
56251                 "shop/computer": {
56252                     "name": "Computer Store",
56253                     "terms": ""
56254                 },
56255                 "shop/confectionery": {
56256                     "name": "Candy Store",
56257                     "terms": ""
56258                 },
56259                 "shop/convenience": {
56260                     "name": "Convenience Store",
56261                     "terms": ""
56262                 },
56263                 "shop/copyshop": {
56264                     "name": "Copy Store",
56265                     "terms": ""
56266                 },
56267                 "shop/cosmetics": {
56268                     "name": "Cosmetics Store",
56269                     "terms": ""
56270                 },
56271                 "shop/craft": {
56272                     "name": "Arts and Crafts Store",
56273                     "terms": ""
56274                 },
56275                 "shop/curtain": {
56276                     "name": "Curtain Store",
56277                     "terms": "drape*,window"
56278                 },
56279                 "shop/dairy": {
56280                     "name": "Dairy Store",
56281                     "terms": "milk,egg,cheese"
56282                 },
56283                 "shop/deli": {
56284                     "name": "Deli",
56285                     "terms": "lunch,meat,sandwich"
56286                 },
56287                 "shop/department_store": {
56288                     "name": "Department Store",
56289                     "terms": ""
56290                 },
56291                 "shop/doityourself": {
56292                     "name": "DIY Store",
56293                     "terms": ""
56294                 },
56295                 "shop/dry_cleaning": {
56296                     "name": "Dry Cleaner",
56297                     "terms": ""
56298                 },
56299                 "shop/electronics": {
56300                     "name": "Electronics Store",
56301                     "terms": "appliance,audio,computer,tv"
56302                 },
56303                 "shop/erotic": {
56304                     "name": "Erotic Store",
56305                     "terms": "sex,porn"
56306                 },
56307                 "shop/fabric": {
56308                     "name": "Fabric Store",
56309                     "terms": "sew"
56310                 },
56311                 "shop/farm": {
56312                     "name": "Produce Stand",
56313                     "terms": "farm shop,farm stand"
56314                 },
56315                 "shop/fashion": {
56316                     "name": "Fashion Store",
56317                     "terms": ""
56318                 },
56319                 "shop/fishmonger": {
56320                     "name": "Fishmonger",
56321                     "terms": ""
56322                 },
56323                 "shop/florist": {
56324                     "name": "Florist",
56325                     "terms": "flower"
56326                 },
56327                 "shop/frame": {
56328                     "name": "Framing Shop",
56329                     "terms": ""
56330                 },
56331                 "shop/funeral_directors": {
56332                     "name": "Funeral Home",
56333                     "terms": "undertaker,memorial home"
56334                 },
56335                 "shop/furnace": {
56336                     "name": "Furnace Store",
56337                     "terms": "oven,stove"
56338                 },
56339                 "shop/furniture": {
56340                     "name": "Furniture Store",
56341                     "terms": "chair,sofa,table"
56342                 },
56343                 "shop/garden_centre": {
56344                     "name": "Garden Center",
56345                     "terms": "landscape,mulch,shrub,tree"
56346                 },
56347                 "shop/gift": {
56348                     "name": "Gift Shop",
56349                     "terms": ""
56350                 },
56351                 "shop/greengrocer": {
56352                     "name": "Greengrocer",
56353                     "terms": "fruit,vegetable"
56354                 },
56355                 "shop/hairdresser": {
56356                     "name": "Hairdresser",
56357                     "terms": ""
56358                 },
56359                 "shop/hardware": {
56360                     "name": "Hardware Store",
56361                     "terms": ""
56362                 },
56363                 "shop/hearing_aids": {
56364                     "name": "Hearing Aids Store",
56365                     "terms": ""
56366                 },
56367                 "shop/herbalist": {
56368                     "name": "Herbalist",
56369                     "terms": ""
56370                 },
56371                 "shop/hifi": {
56372                     "name": "Hifi Store",
56373                     "terms": "stereo,video"
56374                 },
56375                 "shop/houseware": {
56376                     "name": "Houseware Store",
56377                     "terms": "home,household"
56378                 },
56379                 "shop/interior_decoration": {
56380                     "name": "Interior Decoration Store",
56381                     "terms": ""
56382                 },
56383                 "shop/jewelry": {
56384                     "name": "Jeweler",
56385                     "terms": "diamond,gem,ring"
56386                 },
56387                 "shop/kiosk": {
56388                     "name": "News Kiosk",
56389                     "terms": ""
56390                 },
56391                 "shop/kitchen": {
56392                     "name": "Kitchen Design Store",
56393                     "terms": ""
56394                 },
56395                 "shop/laundry": {
56396                     "name": "Laundry",
56397                     "terms": ""
56398                 },
56399                 "shop/leather": {
56400                     "name": "Leather Store",
56401                     "terms": ""
56402                 },
56403                 "shop/locksmith": {
56404                     "name": "Locksmith",
56405                     "terms": "key,lockpick"
56406                 },
56407                 "shop/lottery": {
56408                     "name": "Lottery Shop",
56409                     "terms": ""
56410                 },
56411                 "shop/mall": {
56412                     "name": "Mall",
56413                     "terms": ""
56414                 },
56415                 "shop/massage": {
56416                     "name": "Massage Shop",
56417                     "terms": ""
56418                 },
56419                 "shop/medical_supply": {
56420                     "name": "Medical Supply Store",
56421                     "terms": ""
56422                 },
56423                 "shop/mobile_phone": {
56424                     "name": "Mobile Phone Store",
56425                     "terms": ""
56426                 },
56427                 "shop/money_lender": {
56428                     "name": "Money Lender",
56429                     "terms": ""
56430                 },
56431                 "shop/motorcycle": {
56432                     "name": "Motorcycle Dealership",
56433                     "terms": ""
56434                 },
56435                 "shop/music": {
56436                     "name": "Music Store",
56437                     "terms": "CD,vinyl"
56438                 },
56439                 "shop/musical_instrument": {
56440                     "name": "Musical Instrument Store",
56441                     "terms": ""
56442                 },
56443                 "shop/newsagent": {
56444                     "name": "Newspaper/Magazine Shop",
56445                     "terms": ""
56446                 },
56447                 "shop/optician": {
56448                     "name": "Optician",
56449                     "terms": "eye,glasses"
56450                 },
56451                 "shop/organic": {
56452                     "name": "Organic Goods Store",
56453                     "terms": ""
56454                 },
56455                 "shop/outdoor": {
56456                     "name": "Outdoors Store",
56457                     "terms": "camping,climbing,hiking"
56458                 },
56459                 "shop/paint": {
56460                     "name": "Paint Store",
56461                     "terms": ""
56462                 },
56463                 "shop/pawnbroker": {
56464                     "name": "Pawn Shop",
56465                     "terms": ""
56466                 },
56467                 "shop/pet": {
56468                     "name": "Pet Store",
56469                     "terms": "cat,dog,fish"
56470                 },
56471                 "shop/photo": {
56472                     "name": "Photography Store",
56473                     "terms": "camera,film"
56474                 },
56475                 "shop/pyrotechnics": {
56476                     "name": "Fireworks Store",
56477                     "terms": ""
56478                 },
56479                 "shop/radiotechnics": {
56480                     "name": "Radio/Electronic Component Store",
56481                     "terms": ""
56482                 },
56483                 "shop/religion": {
56484                     "name": "Religious Store",
56485                     "terms": ""
56486                 },
56487                 "shop/scuba_diving": {
56488                     "name": "Scuba Diving Shop",
56489                     "terms": ""
56490                 },
56491                 "shop/seafood": {
56492                     "name": "Seafood Shop",
56493                     "terms": "fishmonger"
56494                 },
56495                 "shop/second_hand": {
56496                     "name": "Consignment/Thrift Store",
56497                     "terms": "secondhand,second hand,resale,thrift,used"
56498                 },
56499                 "shop/shoes": {
56500                     "name": "Shoe Store",
56501                     "terms": ""
56502                 },
56503                 "shop/sports": {
56504                     "name": "Sporting Goods Store",
56505                     "terms": ""
56506                 },
56507                 "shop/stationery": {
56508                     "name": "Stationery Store",
56509                     "terms": "card,paper"
56510                 },
56511                 "shop/supermarket": {
56512                     "name": "Supermarket",
56513                     "terms": "grocery,store,shop"
56514                 },
56515                 "shop/tailor": {
56516                     "name": "Tailor",
56517                     "terms": "clothes,suit"
56518                 },
56519                 "shop/tattoo": {
56520                     "name": "Tattoo Parlor",
56521                     "terms": ""
56522                 },
56523                 "shop/tea": {
56524                     "name": "Tea Store",
56525                     "terms": ""
56526                 },
56527                 "shop/ticket": {
56528                     "name": "Ticket Seller",
56529                     "terms": ""
56530                 },
56531                 "shop/tobacco": {
56532                     "name": "Tobacco Shop",
56533                     "terms": ""
56534                 },
56535                 "shop/toys": {
56536                     "name": "Toy Store",
56537                     "terms": ""
56538                 },
56539                 "shop/travel_agency": {
56540                     "name": "Travel Agency",
56541                     "terms": ""
56542                 },
56543                 "shop/tyres": {
56544                     "name": "Tire Store",
56545                     "terms": ""
56546                 },
56547                 "shop/vacant": {
56548                     "name": "Vacant Shop",
56549                     "terms": ""
56550                 },
56551                 "shop/vacuum_cleaner": {
56552                     "name": "Vacuum Cleaner Store",
56553                     "terms": ""
56554                 },
56555                 "shop/variety_store": {
56556                     "name": "Variety Store",
56557                     "terms": ""
56558                 },
56559                 "shop/video": {
56560                     "name": "Video Store",
56561                     "terms": "DVD"
56562                 },
56563                 "shop/video_games": {
56564                     "name": "Video Game Store",
56565                     "terms": ""
56566                 },
56567                 "shop/water_sports": {
56568                     "name": "Watersport/Swim Shop",
56569                     "terms": ""
56570                 },
56571                 "shop/weapons": {
56572                     "name": "Weapon Shop",
56573                     "terms": "ammo,gun,knife,knives"
56574                 },
56575                 "shop/window_blind": {
56576                     "name": "Window Blind Store",
56577                     "terms": ""
56578                 },
56579                 "shop/wine": {
56580                     "name": "Wine Shop",
56581                     "terms": ""
56582                 },
56583                 "tourism": {
56584                     "name": "Tourism",
56585                     "terms": ""
56586                 },
56587                 "tourism/alpine_hut": {
56588                     "name": "Alpine Hut",
56589                     "terms": ""
56590                 },
56591                 "tourism/artwork": {
56592                     "name": "Artwork",
56593                     "terms": "mural,sculpture,statue"
56594                 },
56595                 "tourism/attraction": {
56596                     "name": "Tourist Attraction",
56597                     "terms": ""
56598                 },
56599                 "tourism/camp_site": {
56600                     "name": "Camp Site",
56601                     "terms": "Tent"
56602                 },
56603                 "tourism/caravan_site": {
56604                     "name": "RV Park",
56605                     "terms": "Motor Home,Camper"
56606                 },
56607                 "tourism/chalet": {
56608                     "name": "Chalet",
56609                     "terms": ""
56610                 },
56611                 "tourism/guest_house": {
56612                     "name": "Guest House",
56613                     "terms": "B&B,Bed and Breakfast"
56614                 },
56615                 "tourism/hostel": {
56616                     "name": "Hostel",
56617                     "terms": ""
56618                 },
56619                 "tourism/hotel": {
56620                     "name": "Hotel",
56621                     "terms": ""
56622                 },
56623                 "tourism/information": {
56624                     "name": "Information",
56625                     "terms": ""
56626                 },
56627                 "tourism/motel": {
56628                     "name": "Motel",
56629                     "terms": ""
56630                 },
56631                 "tourism/museum": {
56632                     "name": "Museum",
56633                     "terms": "exhibition,foundation,gallery,hall,institution"
56634                 },
56635                 "tourism/picnic_site": {
56636                     "name": "Picnic Site",
56637                     "terms": "camp"
56638                 },
56639                 "tourism/theme_park": {
56640                     "name": "Theme Park",
56641                     "terms": ""
56642                 },
56643                 "tourism/viewpoint": {
56644                     "name": "Viewpoint",
56645                     "terms": ""
56646                 },
56647                 "tourism/zoo": {
56648                     "name": "Zoo",
56649                     "terms": ""
56650                 },
56651                 "traffic_calming/bump": {
56652                     "name": "Speed Bump",
56653                     "terms": "speed hump"
56654                 },
56655                 "traffic_calming/hump": {
56656                     "name": "Speed Hump",
56657                     "terms": "speed bump"
56658                 },
56659                 "traffic_calming/rumble_strip": {
56660                     "name": "Rumble Strip",
56661                     "terms": "sleeper lines,audible lines,growlers"
56662                 },
56663                 "traffic_calming/table": {
56664                     "name": "Raised Pedestrian Crossing",
56665                     "terms": "speed table,flat top hump"
56666                 },
56667                 "type/boundary": {
56668                     "name": "Boundary",
56669                     "terms": ""
56670                 },
56671                 "type/boundary/administrative": {
56672                     "name": "Administrative Boundary",
56673                     "terms": ""
56674                 },
56675                 "type/multipolygon": {
56676                     "name": "Multipolygon",
56677                     "terms": ""
56678                 },
56679                 "type/restriction": {
56680                     "name": "Restriction",
56681                     "terms": ""
56682                 },
56683                 "type/restriction/no_left_turn": {
56684                     "name": "No Left Turn",
56685                     "terms": ""
56686                 },
56687                 "type/restriction/no_right_turn": {
56688                     "name": "No Right Turn",
56689                     "terms": ""
56690                 },
56691                 "type/restriction/no_straight_on": {
56692                     "name": "No Straight On",
56693                     "terms": ""
56694                 },
56695                 "type/restriction/no_u_turn": {
56696                     "name": "No U-turn",
56697                     "terms": ""
56698                 },
56699                 "type/restriction/only_left_turn": {
56700                     "name": "Left Turn Only",
56701                     "terms": ""
56702                 },
56703                 "type/restriction/only_right_turn": {
56704                     "name": "Right Turn Only",
56705                     "terms": ""
56706                 },
56707                 "type/restriction/only_straight_on": {
56708                     "name": "No Turns",
56709                     "terms": ""
56710                 },
56711                 "type/route": {
56712                     "name": "Route",
56713                     "terms": ""
56714                 },
56715                 "type/route/bicycle": {
56716                     "name": "Cycle Route",
56717                     "terms": ""
56718                 },
56719                 "type/route/bus": {
56720                     "name": "Bus Route",
56721                     "terms": ""
56722                 },
56723                 "type/route/detour": {
56724                     "name": "Detour Route",
56725                     "terms": ""
56726                 },
56727                 "type/route/ferry": {
56728                     "name": "Ferry Route",
56729                     "terms": ""
56730                 },
56731                 "type/route/foot": {
56732                     "name": "Foot Route",
56733                     "terms": ""
56734                 },
56735                 "type/route/hiking": {
56736                     "name": "Hiking Route",
56737                     "terms": ""
56738                 },
56739                 "type/route/pipeline": {
56740                     "name": "Pipeline Route",
56741                     "terms": ""
56742                 },
56743                 "type/route/power": {
56744                     "name": "Power Route",
56745                     "terms": ""
56746                 },
56747                 "type/route/road": {
56748                     "name": "Road Route",
56749                     "terms": ""
56750                 },
56751                 "type/route/train": {
56752                     "name": "Train Route",
56753                     "terms": ""
56754                 },
56755                 "type/route/tram": {
56756                     "name": "Tram Route",
56757                     "terms": ""
56758                 },
56759                 "type/route_master": {
56760                     "name": "Route Master",
56761                     "terms": ""
56762                 },
56763                 "vertex": {
56764                     "name": "Other",
56765                     "terms": ""
56766                 },
56767                 "waterway": {
56768                     "name": "Waterway",
56769                     "terms": ""
56770                 },
56771                 "waterway/canal": {
56772                     "name": "Canal",
56773                     "terms": ""
56774                 },
56775                 "waterway/dam": {
56776                     "name": "Dam",
56777                     "terms": ""
56778                 },
56779                 "waterway/ditch": {
56780                     "name": "Ditch",
56781                     "terms": ""
56782                 },
56783                 "waterway/drain": {
56784                     "name": "Drain",
56785                     "terms": ""
56786                 },
56787                 "waterway/fuel": {
56788                     "name": "Marine Fuel Station",
56789                     "terms": "petrol,gas,diesel,boat"
56790                 },
56791                 "waterway/river": {
56792                     "name": "River",
56793                     "terms": "beck,branch,brook,course,creek,estuary,rill,rivulet,run,runnel,stream,tributary,watercourse"
56794                 },
56795                 "waterway/riverbank": {
56796                     "name": "Riverbank",
56797                     "terms": ""
56798                 },
56799                 "waterway/sanitary_dump_station": {
56800                     "name": "Marine Toilet Disposal",
56801                     "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet"
56802                 },
56803                 "waterway/stream": {
56804                     "name": "Stream",
56805                     "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"
56806                 },
56807                 "waterway/weir": {
56808                     "name": "Weir",
56809                     "terms": ""
56810                 }
56811             }
56812         }
56813     },
56814     "suggestions": {
56815         "amenity": {
56816             "fuel": {
56817                 "76": {
56818                     "count": 314
56819                 },
56820                 "Neste": {
56821                     "count": 189
56822                 },
56823                 "BP": {
56824                     "count": 2511
56825                 },
56826                 "Shell": {
56827                     "count": 8380
56828                 },
56829                 "Agip": {
56830                     "count": 2651
56831                 },
56832                 "Migrol": {
56833                     "count": 65
56834                 },
56835                 "Avia": {
56836                     "count": 897
56837                 },
56838                 "Texaco": {
56839                     "count": 680
56840                 },
56841                 "Total": {
56842                     "count": 2607
56843                 },
56844                 "Statoil": {
56845                     "count": 596
56846                 },
56847                 "Esso": {
56848                     "count": 3652
56849                 },
56850                 "Jet": {
56851                     "count": 441
56852                 },
56853                 "Avanti": {
56854                     "count": 90
56855                 },
56856                 "Sainsbury's": {
56857                     "count": 58
56858                 },
56859                 "OMV": {
56860                     "count": 701
56861                 },
56862                 "Aral": {
56863                     "count": 1339
56864                 },
56865                 "Tesco": {
56866                     "count": 197
56867                 },
56868                 "JET": {
56869                     "count": 180
56870                 },
56871                 "Morrisons": {
56872                     "count": 111
56873                 },
56874                 "United": {
56875                     "count": 91
56876                 },
56877                 "Canadian Tire": {
56878                     "count": 66
56879                 },
56880                 "Mobil": {
56881                     "count": 613
56882                 },
56883                 "Caltex": {
56884                     "count": 1001
56885                 },
56886                 "Sunoco": {
56887                     "count": 355
56888                 },
56889                 "Q8": {
56890                     "count": 1161
56891                 },
56892                 "ABC": {
56893                     "count": 79
56894                 },
56895                 "ARAL": {
56896                     "count": 375
56897                 },
56898                 "CEPSA": {
56899                     "count": 1018
56900                 },
56901                 "BFT": {
56902                     "count": 89
56903                 },
56904                 "Petron": {
56905                     "count": 878
56906                 },
56907                 "Intermarché": {
56908                     "count": 434
56909                 },
56910                 "Total Access": {
56911                     "count": 51
56912                 },
56913                 "Super U": {
56914                     "count": 124
56915                 },
56916                 "Auchan": {
56917                     "count": 53
56918                 },
56919                 "Elf": {
56920                     "count": 129
56921                 },
56922                 "Carrefour": {
56923                     "count": 205
56924                 },
56925                 "Station Service E. Leclerc": {
56926                     "count": 530
56927                 },
56928                 "Shell Express": {
56929                     "count": 131
56930                 },
56931                 "Hess": {
56932                     "count": 127
56933                 },
56934                 "Flying V": {
56935                     "count": 129
56936                 },
56937                 "bft": {
56938                     "count": 168
56939                 },
56940                 "Gulf": {
56941                     "count": 199
56942                 },
56943                 "PTT": {
56944                     "count": 191
56945                 },
56946                 "St1": {
56947                     "count": 100
56948                 },
56949                 "Teboil": {
56950                     "count": 115
56951                 },
56952                 "HEM": {
56953                     "count": 212
56954                 },
56955                 "GALP": {
56956                     "count": 626
56957                 },
56958                 "OK": {
56959                     "count": 163
56960                 },
56961                 "ÖMV": {
56962                     "count": 101
56963                 },
56964                 "Tinq": {
56965                     "count": 215
56966                 },
56967                 "OKQ8": {
56968                     "count": 186
56969                 },
56970                 "Repsol": {
56971                     "count": 424
56972                 },
56973                 "Westfalen": {
56974                     "count": 96
56975                 },
56976                 "Esso Express": {
56977                     "count": 98
56978                 },
56979                 "Raiffeisenbank": {
56980                     "count": 117
56981                 },
56982                 "Tamoil": {
56983                     "count": 866
56984                 },
56985                 "Engen": {
56986                     "count": 241
56987                 },
56988                 "Sasol": {
56989                     "count": 59
56990                 },
56991                 "Topaz": {
56992                     "count": 78
56993                 },
56994                 "LPG": {
56995                     "count": 174
56996                 },
56997                 "Coop": {
56998                     "count": 62
56999                 },
57000                 "Orlen": {
57001                     "count": 598
57002                 },
57003                 "Oilibya": {
57004                     "count": 68
57005                 },
57006                 "Tango": {
57007                     "count": 122
57008                 },
57009                 "Star": {
57010                     "count": 319
57011                 },
57012                 "Петрол": {
57013                     "count": 84
57014                 },
57015                 "Cepsa": {
57016                     "count": 96
57017                 },
57018                 "OIL!": {
57019                     "count": 63
57020                 },
57021                 "Ultramar": {
57022                     "count": 125
57023                 },
57024                 "Irving": {
57025                     "count": 87
57026                 },
57027                 "Lukoil": {
57028                     "count": 701
57029                 },
57030                 "Petro-Canada": {
57031                     "count": 489
57032                 },
57033                 "7-Eleven": {
57034                     "count": 488
57035                 },
57036                 "Agrola": {
57037                     "count": 69
57038                 },
57039                 "Husky": {
57040                     "count": 126
57041                 },
57042                 "Slovnaft": {
57043                     "count": 219
57044                 },
57045                 "Sheetz": {
57046                     "count": 134
57047                 },
57048                 "Mol": {
57049                     "count": 61
57050                 },
57051                 "Petronas": {
57052                     "count": 159
57053                 },
57054                 "Газпромнефть": {
57055                     "count": 748
57056                 },
57057                 "Лукойл": {
57058                     "count": 1477
57059                 },
57060                 "Elan": {
57061                     "count": 112
57062                 },
57063                 "Роснефть": {
57064                     "count": 638
57065                 },
57066                 "Turmöl": {
57067                     "count": 57
57068                 },
57069                 "Neste A24": {
57070                     "count": 55
57071                 },
57072                 "Marathon": {
57073                     "count": 189
57074                 },
57075                 "Valero": {
57076                     "count": 366
57077                 },
57078                 "Eni": {
57079                     "count": 236
57080                 },
57081                 "Chevron": {
57082                     "count": 954
57083                 },
57084                 "ТНК": {
57085                     "count": 520
57086                 },
57087                 "REPSOL": {
57088                     "count": 1603
57089                 },
57090                 "MOL": {
57091                     "count": 228
57092                 },
57093                 "Bliska": {
57094                     "count": 150
57095                 },
57096                 "Api": {
57097                     "count": 302
57098                 },
57099                 "Arco": {
57100                     "count": 179
57101                 },
57102                 "Pemex": {
57103                     "count": 423
57104                 },
57105                 "Exxon": {
57106                     "count": 506
57107                 },
57108                 "Coles Express": {
57109                     "count": 115
57110                 },
57111                 "Petrom": {
57112                     "count": 259
57113                 },
57114                 "PETRONOR": {
57115                     "count": 207
57116                 },
57117                 "Rompetrol": {
57118                     "count": 174
57119                 },
57120                 "Lotos": {
57121                     "count": 178
57122                 },
57123                 "ОМВ": {
57124                     "count": 60
57125                 },
57126                 "BR": {
57127                     "count": 129
57128                 },
57129                 "Copec": {
57130                     "count": 505
57131                 },
57132                 "Petrobras": {
57133                     "count": 270
57134                 },
57135                 "Liberty": {
57136                     "count": 55
57137                 },
57138                 "IP": {
57139                     "count": 871
57140                 },
57141                 "Erg": {
57142                     "count": 596
57143                 },
57144                 "Eneos": {
57145                     "count": 97
57146                 },
57147                 "Citgo": {
57148                     "count": 279
57149                 },
57150                 "Metano": {
57151                     "count": 208
57152                 },
57153                 "Сургутнефтегаз": {
57154                     "count": 61
57155                 },
57156                 "EKO": {
57157                     "count": 59
57158                 },
57159                 "Eko": {
57160                     "count": 58
57161                 },
57162                 "Indipend.": {
57163                     "count": 172
57164                 },
57165                 "IES": {
57166                     "count": 63
57167                 },
57168                 "TotalErg": {
57169                     "count": 89
57170                 },
57171                 "Cenex": {
57172                     "count": 115
57173                 },
57174                 "ПТК": {
57175                     "count": 82
57176                 },
57177                 "HP": {
57178                     "count": 79
57179                 },
57180                 "Phillips 66": {
57181                     "count": 216
57182                 },
57183                 "CARREFOUR": {
57184                     "count": 74
57185                 },
57186                 "ERG": {
57187                     "count": 76
57188                 },
57189                 "Speedway": {
57190                     "count": 148
57191                 },
57192                 "Benzina": {
57193                     "count": 96
57194                 },
57195                 "Татнефть": {
57196                     "count": 264
57197                 },
57198                 "Terpel": {
57199                     "count": 259
57200                 },
57201                 "WOG": {
57202                     "count": 189
57203                 },
57204                 "Seaoil": {
57205                     "count": 54
57206                 },
57207                 "АЗС": {
57208                     "count": 1077
57209                 },
57210                 "Kwik Trip": {
57211                     "count": 108
57212                 },
57213                 "Wawa": {
57214                     "count": 89
57215                 },
57216                 "Pertamina": {
57217                     "count": 186
57218                 },
57219                 "COSMO": {
57220                     "count": 64
57221                 },
57222                 "Z": {
57223                     "count": 76
57224                 },
57225                 "Indian Oil": {
57226                     "count": 183
57227                 },
57228                 "АГЗС": {
57229                     "count": 494
57230                 },
57231                 "INA": {
57232                     "count": 121
57233                 },
57234                 "JOMO": {
57235                     "count": 62
57236                 },
57237                 "Holiday": {
57238                     "count": 97
57239                 },
57240                 "YPF": {
57241                     "count": 70
57242                 },
57243                 "IDEMITSU": {
57244                     "count": 87
57245                 },
57246                 "ENEOS": {
57247                     "count": 736
57248                 },
57249                 "Bharat Petroleum": {
57250                     "count": 64
57251                 },
57252                 "CAMPSA": {
57253                     "count": 615
57254                 },
57255                 "Casey's General Store": {
57256                     "count": 190
57257                 },
57258                 "Башнефть": {
57259                     "count": 60
57260                 },
57261                 "Kangaroo": {
57262                     "count": 60
57263                 },
57264                 "コスモ石油 (COSMO)": {
57265                     "count": 136
57266                 },
57267                 "MEROIL": {
57268                     "count": 77
57269                 },
57270                 "1-2-3": {
57271                     "count": 71
57272                 },
57273                 "出光": {
57274                     "count": 228,
57275                     "tags": {
57276                         "name:en": "IDEMITSU"
57277                     }
57278                 },
57279                 "НК Альянс": {
57280                     "count": 88
57281                 },
57282                 "Sinclair": {
57283                     "count": 100
57284                 },
57285                 "Conoco": {
57286                     "count": 189
57287                 },
57288                 "SPBU": {
57289                     "count": 54
57290                 },
57291                 "Макпетрол": {
57292                     "count": 109
57293                 },
57294                 "Circle K": {
57295                     "count": 166
57296                 },
57297                 "Posto Ipiranga": {
57298                     "count": 70
57299                 },
57300                 "Posto Shell": {
57301                     "count": 54
57302                 },
57303                 "Phoenix": {
57304                     "count": 144
57305                 },
57306                 "Ipiranga": {
57307                     "count": 119
57308                 },
57309                 "OKKO": {
57310                     "count": 85
57311                 },
57312                 "ОККО": {
57313                     "count": 119
57314                 },
57315                 "บางจาก": {
57316                     "count": 60
57317                 },
57318                 "QuikTrip": {
57319                     "count": 105
57320                 },
57321                 "Stewart's": {
57322                     "count": 63
57323                 },
57324                 "Posto BR": {
57325                     "count": 68
57326                 },
57327                 "ป ต ท": {
57328                     "count": 152
57329                 },
57330                 "ปตท": {
57331                     "count": 88
57332                 },
57333                 "ANP": {
57334                     "count": 80
57335                 },
57336                 "Kum & Go": {
57337                     "count": 80
57338                 },
57339                 "Petrolimex": {
57340                     "count": 55
57341                 },
57342                 "Sokimex": {
57343                     "count": 66
57344                 },
57345                 "Tela": {
57346                     "count": 154
57347                 },
57348                 "Posto": {
57349                     "count": 71
57350                 },
57351                 "H-E-B": {
57352                     "count": 182
57353                 },
57354                 "Укрнафта": {
57355                     "count": 58
57356                 },
57357                 "Татнефтепродукт": {
57358                     "count": 54
57359                 },
57360                 "Afriquia": {
57361                     "count": 88
57362                 },
57363                 "Murphy USA": {
57364                     "count": 67
57365                 },
57366                 "昭和シェル (Showa-shell)": {
57367                     "count": 94
57368                 },
57369                 "エネオス": {
57370                     "count": 53
57371                 },
57372                 "CNG": {
57373                     "count": 94
57374                 }
57375             },
57376             "pub": {
57377                 "Kings Arms": {
57378                     "count": 67
57379                 },
57380                 "The Ship": {
57381                     "count": 89
57382                 },
57383                 "The White Horse": {
57384                     "count": 204
57385                 },
57386                 "The White Hart": {
57387                     "count": 226
57388                 },
57389                 "Royal Oak": {
57390                     "count": 150
57391                 },
57392                 "The Red Lion": {
57393                     "count": 233
57394                 },
57395                 "The Kings Arms": {
57396                     "count": 58
57397                 },
57398                 "The Star": {
57399                     "count": 73
57400                 },
57401                 "The Anchor": {
57402                     "count": 64
57403                 },
57404                 "The Cross Keys": {
57405                     "count": 55
57406                 },
57407                 "The Wheatsheaf": {
57408                     "count": 117
57409                 },
57410                 "The Crown Inn": {
57411                     "count": 67
57412                 },
57413                 "The Kings Head": {
57414                     "count": 53
57415                 },
57416                 "The Castle": {
57417                     "count": 62
57418                 },
57419                 "The Railway": {
57420                     "count": 102
57421                 },
57422                 "The White Lion": {
57423                     "count": 118
57424                 },
57425                 "The Bell": {
57426                     "count": 121
57427                 },
57428                 "The Bull": {
57429                     "count": 68
57430                 },
57431                 "The Plough": {
57432                     "count": 179
57433                 },
57434                 "The George": {
57435                     "count": 110
57436                 },
57437                 "The Royal Oak": {
57438                     "count": 209
57439                 },
57440                 "The Fox": {
57441                     "count": 74
57442                 },
57443                 "Prince of Wales": {
57444                     "count": 77
57445                 },
57446                 "The Rising Sun": {
57447                     "count": 71
57448                 },
57449                 "The Prince of Wales": {
57450                     "count": 51
57451                 },
57452                 "The Crown": {
57453                     "count": 244
57454                 },
57455                 "The Chequers": {
57456                     "count": 66
57457                 },
57458                 "The Swan": {
57459                     "count": 152
57460                 },
57461                 "Rose and Crown": {
57462                     "count": 79
57463                 },
57464                 "The Victoria": {
57465                     "count": 67
57466                 },
57467                 "New Inn": {
57468                     "count": 90
57469                 },
57470                 "Royal Hotel": {
57471                     "count": 57
57472                 },
57473                 "Red Lion": {
57474                     "count": 207
57475                 },
57476                 "Cross Keys": {
57477                     "count": 61
57478                 },
57479                 "The Greyhound": {
57480                     "count": 96
57481                 },
57482                 "The Black Horse": {
57483                     "count": 94
57484                 },
57485                 "The New Inn": {
57486                     "count": 105
57487                 },
57488                 "Kings Head": {
57489                     "count": 59
57490                 },
57491                 "The Albion": {
57492                     "count": 51
57493                 },
57494                 "The Angel": {
57495                     "count": 52
57496                 },
57497                 "The Queens Head": {
57498                     "count": 52
57499                 },
57500                 "The Ship Inn": {
57501                     "count": 83
57502                 },
57503                 "Rose & Crown": {
57504                     "count": 51
57505                 },
57506                 "Queens Head": {
57507                     "count": 52
57508                 },
57509                 "Irish Pub": {
57510                     "count": 76
57511                 }
57512             },
57513             "fast_food": {
57514                 "Quick": {
57515                     "count": 484
57516                 },
57517                 "McDonald's": {
57518                     "count": 12376,
57519                     "tags": {
57520                         "cuisine": "burger"
57521                     }
57522                 },
57523                 "Subway": {
57524                     "count": 5576,
57525                     "tags": {
57526                         "cuisine": "sandwich"
57527                     }
57528                 },
57529                 "Burger King": {
57530                     "count": 3734,
57531                     "tags": {
57532                         "cuisine": "burger"
57533                     }
57534                 },
57535                 "Ali Baba": {
57536                     "count": 61
57537                 },
57538                 "Hungry Jacks": {
57539                     "count": 173,
57540                     "tags": {
57541                         "cuisine": "burger"
57542                     }
57543                 },
57544                 "Red Rooster": {
57545                     "count": 148
57546                 },
57547                 "KFC": {
57548                     "count": 3198,
57549                     "tags": {
57550                         "cuisine": "chicken"
57551                     }
57552                 },
57553                 "Domino's Pizza": {
57554                     "count": 985,
57555                     "tags": {
57556                         "cuisine": "pizza"
57557                     }
57558                 },
57559                 "Chowking": {
57560                     "count": 142
57561                 },
57562                 "Jollibee": {
57563                     "count": 396
57564                 },
57565                 "Hesburger": {
57566                     "count": 102
57567                 },
57568                 "肯德基": {
57569                     "count": 86
57570                 },
57571                 "Wendy's": {
57572                     "count": 1621,
57573                     "tags": {
57574                         "cuisine": "burger"
57575                     }
57576                 },
57577                 "Tim Hortons": {
57578                     "count": 323
57579                 },
57580                 "Steers": {
57581                     "count": 151
57582                 },
57583                 "Hardee's": {
57584                     "count": 268,
57585                     "tags": {
57586                         "cuisine": "burger"
57587                     }
57588                 },
57589                 "Arby's": {
57590                     "count": 782
57591                 },
57592                 "A&W": {
57593                     "count": 283
57594                 },
57595                 "Dairy Queen": {
57596                     "count": 791
57597                 },
57598                 "Hallo Pizza": {
57599                     "count": 76
57600                 },
57601                 "Fish & Chips": {
57602                     "count": 93
57603                 },
57604                 "Harvey's": {
57605                     "count": 90
57606                 },
57607                 "麥當勞": {
57608                     "count": 65
57609                 },
57610                 "Pizza Pizza": {
57611                     "count": 215
57612                 },
57613                 "Kotipizza": {
57614                     "count": 74
57615                 },
57616                 "Jack in the Box": {
57617                     "count": 546,
57618                     "tags": {
57619                         "cuisine": "burger"
57620                     }
57621                 },
57622                 "Istanbul": {
57623                     "count": 56
57624                 },
57625                 "Kochlöffel": {
57626                     "count": 68
57627                 },
57628                 "Döner": {
57629                     "count": 228
57630                 },
57631                 "Telepizza": {
57632                     "count": 201
57633                 },
57634                 "Sibylla": {
57635                     "count": 61
57636                 },
57637                 "Carl's Jr.": {
57638                     "count": 298,
57639                     "tags": {
57640                         "cuisine": "burger"
57641                     }
57642                 },
57643                 "Quiznos": {
57644                     "count": 266,
57645                     "tags": {
57646                         "cuisine": "sandwich"
57647                     }
57648                 },
57649                 "Wimpy": {
57650                     "count": 141
57651                 },
57652                 "Sonic": {
57653                     "count": 566,
57654                     "tags": {
57655                         "cuisine": "burger"
57656                     }
57657                 },
57658                 "Taco Bell": {
57659                     "count": 1423,
57660                     "tags": {
57661                         "cuisine": "mexican"
57662                     }
57663                 },
57664                 "Pizza Nova": {
57665                     "count": 63
57666                 },
57667                 "Papa John's": {
57668                     "count": 304,
57669                     "tags": {
57670                         "cuisine": "pizza"
57671                     }
57672                 },
57673                 "Nordsee": {
57674                     "count": 159
57675                 },
57676                 "Mr. Sub": {
57677                     "count": 103
57678                 },
57679                 "Макдоналдс": {
57680                     "count": 324,
57681                     "tags": {
57682                         "name:en": "McDonald's"
57683                     }
57684                 },
57685                 "Asia Imbiss": {
57686                     "count": 111
57687                 },
57688                 "Chipotle": {
57689                     "count": 290,
57690                     "tags": {
57691                         "cuisine": "mexican"
57692                     }
57693                 },
57694                 "マクドナルド": {
57695                     "count": 692,
57696                     "tags": {
57697                         "name:en": "McDonald's",
57698                         "cuisine": "burger"
57699                     }
57700                 },
57701                 "In-N-Out Burger": {
57702                     "count": 65
57703                 },
57704                 "Jimmy John's": {
57705                     "count": 141
57706                 },
57707                 "Jamba Juice": {
57708                     "count": 68
57709                 },
57710                 "Робин Сдобин": {
57711                     "count": 82
57712                 },
57713                 "Baskin Robbins": {
57714                     "count": 74
57715                 },
57716                 "ケンタッキーフライドチキン": {
57717                     "count": 164,
57718                     "tags": {
57719                         "name:en": "KFC",
57720                         "cuisine": "chicken"
57721                     }
57722                 },
57723                 "吉野家": {
57724                     "count": 191
57725                 },
57726                 "Taco Time": {
57727                     "count": 88
57728                 },
57729                 "松屋": {
57730                     "count": 281,
57731                     "tags": {
57732                         "name:en": "Matsuya"
57733                     }
57734                 },
57735                 "Little Caesars": {
57736                     "count": 81
57737                 },
57738                 "El Pollo Loco": {
57739                     "count": 63
57740                 },
57741                 "Del Taco": {
57742                     "count": 141
57743                 },
57744                 "White Castle": {
57745                     "count": 80
57746                 },
57747                 "Boston Market": {
57748                     "count": 66
57749                 },
57750                 "Chick-fil-A": {
57751                     "count": 257,
57752                     "tags": {
57753                         "cuisine": "chicken"
57754                     }
57755                 },
57756                 "Panda Express": {
57757                     "count": 238,
57758                     "tags": {
57759                         "cuisine": "chinese"
57760                     }
57761                 },
57762                 "Whataburger": {
57763                     "count": 364
57764                 },
57765                 "Taco John's": {
57766                     "count": 78
57767                 },
57768                 "Теремок": {
57769                     "count": 68
57770                 },
57771                 "Culver's": {
57772                     "count": 425
57773                 },
57774                 "Five Guys": {
57775                     "count": 141
57776                 },
57777                 "Church's Chicken": {
57778                     "count": 95
57779                 },
57780                 "Popeye's": {
57781                     "count": 167,
57782                     "tags": {
57783                         "cuisine": "chicken"
57784                     }
57785                 },
57786                 "Long John Silver's": {
57787                     "count": 93
57788                 },
57789                 "Pollo Campero": {
57790                     "count": 62
57791                 },
57792                 "Zaxby's": {
57793                     "count": 51
57794                 },
57795                 "すき家": {
57796                     "count": 276,
57797                     "tags": {
57798                         "name:en": "SUKIYA"
57799                     }
57800                 },
57801                 "モスバーガー": {
57802                     "count": 257,
57803                     "tags": {
57804                         "name:en": "MOS BURGER"
57805                     }
57806                 },
57807                 "Русский Аппетит": {
57808                     "count": 69
57809                 },
57810                 "なか卯": {
57811                     "count": 63
57812                 }
57813             },
57814             "restaurant": {
57815                 "Pizza Hut": {
57816                     "count": 1180,
57817                     "tags": {
57818                         "cuisine": "pizza"
57819                     }
57820                 },
57821                 "Little Chef": {
57822                     "count": 64
57823                 },
57824                 "Adler": {
57825                     "count": 158
57826                 },
57827                 "Zur Krone": {
57828                     "count": 90
57829                 },
57830                 "Deutsches Haus": {
57831                     "count": 90
57832                 },
57833                 "Krone": {
57834                     "count": 171
57835                 },
57836                 "Akropolis": {
57837                     "count": 152
57838                 },
57839                 "Schützenhaus": {
57840                     "count": 124
57841                 },
57842                 "Kreuz": {
57843                     "count": 74
57844                 },
57845                 "Waldschänke": {
57846                     "count": 55
57847                 },
57848                 "La Piazza": {
57849                     "count": 69
57850                 },
57851                 "Lamm": {
57852                     "count": 66
57853                 },
57854                 "Zur Sonne": {
57855                     "count": 73
57856                 },
57857                 "Zur Linde": {
57858                     "count": 204
57859                 },
57860                 "Poseidon": {
57861                     "count": 110
57862                 },
57863                 "Shanghai": {
57864                     "count": 82
57865                 },
57866                 "Red Lobster": {
57867                     "count": 235
57868                 },
57869                 "Zum Löwen": {
57870                     "count": 84
57871                 },
57872                 "Swiss Chalet": {
57873                     "count": 107
57874                 },
57875                 "Olympia": {
57876                     "count": 74
57877                 },
57878                 "Wagamama": {
57879                     "count": 64
57880                 },
57881                 "Frankie & Benny's": {
57882                     "count": 66
57883                 },
57884                 "Hooters": {
57885                     "count": 103
57886                 },
57887                 "Sternen": {
57888                     "count": 78
57889                 },
57890                 "Hirschen": {
57891                     "count": 79
57892                 },
57893                 "Denny's": {
57894                     "count": 450
57895                 },
57896                 "Athen": {
57897                     "count": 68
57898                 },
57899                 "Sonne": {
57900                     "count": 126
57901                 },
57902                 "Hirsch": {
57903                     "count": 79
57904                 },
57905                 "Ratskeller": {
57906                     "count": 150
57907                 },
57908                 "La Cantina": {
57909                     "count": 56
57910                 },
57911                 "Gasthaus Krone": {
57912                     "count": 56
57913                 },
57914                 "El Greco": {
57915                     "count": 86
57916                 },
57917                 "Gasthof zur Post": {
57918                     "count": 79
57919                 },
57920                 "Nando's": {
57921                     "count": 246
57922                 },
57923                 "Löwen": {
57924                     "count": 112
57925                 },
57926                 "La Pataterie": {
57927                     "count": 51
57928                 },
57929                 "Bella Napoli": {
57930                     "count": 53
57931                 },
57932                 "Pizza Express": {
57933                     "count": 262
57934                 },
57935                 "Mandarin": {
57936                     "count": 65
57937                 },
57938                 "Hong Kong": {
57939                     "count": 83
57940                 },
57941                 "Zizzi": {
57942                     "count": 68
57943                 },
57944                 "Cracker Barrel": {
57945                     "count": 183
57946                 },
57947                 "Rhodos": {
57948                     "count": 81
57949                 },
57950                 "Lindenhof": {
57951                     "count": 79
57952                 },
57953                 "Milano": {
57954                     "count": 54
57955                 },
57956                 "Dolce Vita": {
57957                     "count": 77
57958                 },
57959                 "Kirchenwirt": {
57960                     "count": 81
57961                 },
57962                 "Kantine": {
57963                     "count": 52
57964                 },
57965                 "Ochsen": {
57966                     "count": 95
57967                 },
57968                 "Spur": {
57969                     "count": 62
57970                 },
57971                 "Mykonos": {
57972                     "count": 59
57973                 },
57974                 "Lotus": {
57975                     "count": 66
57976                 },
57977                 "Applebee's": {
57978                     "count": 531
57979                 },
57980                 "Flunch": {
57981                     "count": 72
57982                 },
57983                 "Zur Post": {
57984                     "count": 116
57985                 },
57986                 "China Town": {
57987                     "count": 76
57988                 },
57989                 "La Dolce Vita": {
57990                     "count": 73
57991                 },
57992                 "Waffle House": {
57993                     "count": 207
57994                 },
57995                 "Delphi": {
57996                     "count": 88
57997                 },
57998                 "Linde": {
57999                     "count": 103
58000                 },
58001                 "Outback Steakhouse": {
58002                     "count": 218
58003                 },
58004                 "Dionysos": {
58005                     "count": 69
58006                 },
58007                 "Kelsey's": {
58008                     "count": 57
58009                 },
58010                 "Boston Pizza": {
58011                     "count": 165
58012                 },
58013                 "Bella Italia": {
58014                     "count": 132
58015                 },
58016                 "Sizzler": {
58017                     "count": 53
58018                 },
58019                 "Grüner Baum": {
58020                     "count": 116
58021                 },
58022                 "Taj Mahal": {
58023                     "count": 104
58024                 },
58025                 "Rössli": {
58026                     "count": 68
58027                 },
58028                 "Wimpy": {
58029                     "count": 51
58030                 },
58031                 "Traube": {
58032                     "count": 65
58033                 },
58034                 "Adria": {
58035                     "count": 52
58036                 },
58037                 "Red Robin": {
58038                     "count": 185
58039                 },
58040                 "Roma": {
58041                     "count": 61
58042                 },
58043                 "San Marco": {
58044                     "count": 67
58045                 },
58046                 "Hellas": {
58047                     "count": 55
58048                 },
58049                 "La Perla": {
58050                     "count": 67
58051                 },
58052                 "Vips": {
58053                     "count": 53
58054                 },
58055                 "Panera Bread": {
58056                     "count": 218
58057                 },
58058                 "Da Vinci": {
58059                     "count": 54
58060                 },
58061                 "Hippopotamus": {
58062                     "count": 96
58063                 },
58064                 "Prezzo": {
58065                     "count": 75
58066                 },
58067                 "Courtepaille": {
58068                     "count": 106
58069                 },
58070                 "Hard Rock Cafe": {
58071                     "count": 70
58072                 },
58073                 "Panorama": {
58074                     "count": 61
58075                 },
58076                 "デニーズ": {
58077                     "count": 82
58078                 },
58079                 "Sportheim": {
58080                     "count": 65
58081                 },
58082                 "餃子の王将": {
58083                     "count": 57
58084                 },
58085                 "Bären": {
58086                     "count": 60
58087                 },
58088                 "Alte Post": {
58089                     "count": 60
58090                 },
58091                 "Pizzeria Roma": {
58092                     "count": 51
58093                 },
58094                 "China Garden": {
58095                     "count": 66
58096                 },
58097                 "Vapiano": {
58098                     "count": 82
58099                 },
58100                 "Mamma Mia": {
58101                     "count": 64
58102                 },
58103                 "Schwarzer Adler": {
58104                     "count": 57
58105                 },
58106                 "IHOP": {
58107                     "count": 317
58108                 },
58109                 "Chili's": {
58110                     "count": 328
58111                 },
58112                 "Asia": {
58113                     "count": 51
58114                 },
58115                 "Olive Garden": {
58116                     "count": 279
58117                 },
58118                 "TGI Friday's": {
58119                     "count": 159
58120                 },
58121                 "Friendly's": {
58122                     "count": 78
58123                 },
58124                 "Buffalo Grill": {
58125                     "count": 202
58126                 },
58127                 "Texas Roadhouse": {
58128                     "count": 110
58129                 },
58130                 "ガスト": {
58131                     "count": 230,
58132                     "tags": {
58133                         "name:en": "Gusto"
58134                     }
58135                 },
58136                 "Sakura": {
58137                     "count": 75
58138                 },
58139                 "Mensa": {
58140                     "count": 99
58141                 },
58142                 "The Keg": {
58143                     "count": 53
58144                 },
58145                 "サイゼリヤ": {
58146                     "count": 93
58147                 },
58148                 "La Strada": {
58149                     "count": 52
58150                 },
58151                 "Village Inn": {
58152                     "count": 92
58153                 },
58154                 "Buffalo Wild Wings": {
58155                     "count": 176
58156                 },
58157                 "Peking": {
58158                     "count": 59
58159                 },
58160                 "Boston Market": {
58161                     "count": 61
58162                 },
58163                 "Round Table Pizza": {
58164                     "count": 53
58165                 },
58166                 "Jimmy John's": {
58167                     "count": 69
58168                 },
58169                 "California Pizza Kitchen": {
58170                     "count": 61
58171                 },
58172                 "Якитория": {
58173                     "count": 77
58174                 },
58175                 "Golden Corral": {
58176                     "count": 101
58177                 },
58178                 "Perkins": {
58179                     "count": 105
58180                 },
58181                 "Ruby Tuesday": {
58182                     "count": 162
58183                 },
58184                 "Shari's": {
58185                     "count": 65
58186                 },
58187                 "Bob Evans": {
58188                     "count": 129
58189                 },
58190                 "바다횟집 (Bada Fish Restaurant)": {
58191                     "count": 55
58192                 },
58193                 "Mang Inasal": {
58194                     "count": 84
58195                 },
58196                 "Евразия": {
58197                     "count": 102
58198                 },
58199                 "ジョナサン": {
58200                     "count": 59
58201                 },
58202                 "Longhorn Steakhouse": {
58203                     "count": 66
58204                 }
58205             },
58206             "bank": {
58207                 "Chase": {
58208                     "count": 721
58209                 },
58210                 "Commonwealth Bank": {
58211                     "count": 232
58212                 },
58213                 "Citibank": {
58214                     "count": 277
58215                 },
58216                 "HSBC": {
58217                     "count": 1102
58218                 },
58219                 "Barclays": {
58220                     "count": 965
58221                 },
58222                 "Westpac": {
58223                     "count": 208
58224                 },
58225                 "NAB": {
58226                     "count": 131
58227                 },
58228                 "ANZ": {
58229                     "count": 218
58230                 },
58231                 "Lloyds Bank": {
58232                     "count": 547
58233                 },
58234                 "Landbank": {
58235                     "count": 81
58236                 },
58237                 "Sparkasse": {
58238                     "count": 4555
58239                 },
58240                 "UCPB": {
58241                     "count": 92
58242                 },
58243                 "PNB": {
58244                     "count": 244
58245                 },
58246                 "Metrobank": {
58247                     "count": 269
58248                 },
58249                 "BDO": {
58250                     "count": 290
58251                 },
58252                 "Volksbank": {
58253                     "count": 2591
58254                 },
58255                 "BPI": {
58256                     "count": 415
58257                 },
58258                 "Postbank": {
58259                     "count": 443
58260                 },
58261                 "NatWest": {
58262                     "count": 628
58263                 },
58264                 "Raiffeisenbank": {
58265                     "count": 2119
58266                 },
58267                 "Yorkshire Bank": {
58268                     "count": 63
58269                 },
58270                 "ABSA": {
58271                     "count": 95
58272                 },
58273                 "Standard Bank": {
58274                     "count": 109
58275                 },
58276                 "FNB": {
58277                     "count": 97
58278                 },
58279                 "Deutsche Bank": {
58280                     "count": 855
58281                 },
58282                 "SEB": {
58283                     "count": 133
58284                 },
58285                 "Commerzbank": {
58286                     "count": 806
58287                 },
58288                 "Targobank": {
58289                     "count": 166
58290                 },
58291                 "ABN AMRO": {
58292                     "count": 130
58293                 },
58294                 "Handelsbanken": {
58295                     "count": 184
58296                 },
58297                 "Swedbank": {
58298                     "count": 223
58299                 },
58300                 "Kreissparkasse": {
58301                     "count": 600
58302                 },
58303                 "UniCredit Bank": {
58304                     "count": 408
58305                 },
58306                 "Monte dei Paschi di Siena": {
58307                     "count": 132
58308                 },
58309                 "Caja Rural": {
58310                     "count": 99
58311                 },
58312                 "Dresdner Bank": {
58313                     "count": 66
58314                 },
58315                 "Sparda-Bank": {
58316                     "count": 320
58317                 },
58318                 "VÚB": {
58319                     "count": 107
58320                 },
58321                 "Slovenská sporiteľňa": {
58322                     "count": 134
58323                 },
58324                 "Bank of Montreal": {
58325                     "count": 118
58326                 },
58327                 "KBC": {
58328                     "count": 203
58329                 },
58330                 "Royal Bank of Scotland": {
58331                     "count": 111
58332                 },
58333                 "TSB": {
58334                     "count": 80
58335                 },
58336                 "US Bank": {
58337                     "count": 256
58338                 },
58339                 "HypoVereinsbank": {
58340                     "count": 561
58341                 },
58342                 "Bank Austria": {
58343                     "count": 176
58344                 },
58345                 "ING": {
58346                     "count": 496
58347                 },
58348                 "Erste Bank": {
58349                     "count": 180
58350                 },
58351                 "CIBC": {
58352                     "count": 326
58353                 },
58354                 "Scotiabank": {
58355                     "count": 413
58356                 },
58357                 "Caisse d'Épargne": {
58358                     "count": 882
58359                 },
58360                 "Santander": {
58361                     "count": 1323
58362                 },
58363                 "Bank of Scotland": {
58364                     "count": 89
58365                 },
58366                 "TD Canada Trust": {
58367                     "count": 450
58368                 },
58369                 "BMO": {
58370                     "count": 169
58371                 },
58372                 "Danske Bank": {
58373                     "count": 131
58374                 },
58375                 "OTP": {
58376                     "count": 192
58377                 },
58378                 "Crédit Agricole": {
58379                     "count": 1239
58380                 },
58381                 "LCL": {
58382                     "count": 553
58383                 },
58384                 "VR-Bank": {
58385                     "count": 430
58386                 },
58387                 "ČSOB": {
58388                     "count": 160
58389                 },
58390                 "Česká spořitelna": {
58391                     "count": 212
58392                 },
58393                 "BNP": {
58394                     "count": 112
58395                 },
58396                 "Royal Bank": {
58397                     "count": 65
58398                 },
58399                 "Nationwide": {
58400                     "count": 209
58401                 },
58402                 "Halifax": {
58403                     "count": 225
58404                 },
58405                 "BAWAG PSK": {
58406                     "count": 102
58407                 },
58408                 "National Bank": {
58409                     "count": 84
58410                 },
58411                 "Nedbank": {
58412                     "count": 80
58413                 },
58414                 "First National Bank": {
58415                     "count": 85
58416                 },
58417                 "Nordea": {
58418                     "count": 319
58419                 },
58420                 "Rabobank": {
58421                     "count": 609
58422                 },
58423                 "Sparkasse KölnBonn": {
58424                     "count": 69
58425                 },
58426                 "Tatra banka": {
58427                     "count": 67
58428                 },
58429                 "Berliner Sparkasse": {
58430                     "count": 62
58431                 },
58432                 "Berliner Volksbank": {
58433                     "count": 77
58434                 },
58435                 "Wells Fargo": {
58436                     "count": 874
58437                 },
58438                 "Credit Suisse": {
58439                     "count": 71
58440                 },
58441                 "Société Générale": {
58442                     "count": 634
58443                 },
58444                 "Osuuspankki": {
58445                     "count": 75
58446                 },
58447                 "Sparkasse Aachen": {
58448                     "count": 56
58449                 },
58450                 "Hamburger Sparkasse": {
58451                     "count": 156
58452                 },
58453                 "Cassa di Risparmio del Veneto": {
58454                     "count": 68
58455                 },
58456                 "BNP Paribas": {
58457                     "count": 617
58458                 },
58459                 "Banque Populaire": {
58460                     "count": 433
58461                 },
58462                 "BNP Paribas Fortis": {
58463                     "count": 209
58464                 },
58465                 "Banco Popular": {
58466                     "count": 291
58467                 },
58468                 "Bancaja": {
58469                     "count": 55
58470                 },
58471                 "Banesto": {
58472                     "count": 208
58473                 },
58474                 "La Caixa": {
58475                     "count": 583
58476                 },
58477                 "Santander Consumer Bank": {
58478                     "count": 88
58479                 },
58480                 "BRD": {
58481                     "count": 191
58482                 },
58483                 "BCR": {
58484                     "count": 143
58485                 },
58486                 "Banca Transilvania": {
58487                     "count": 141
58488                 },
58489                 "BW-Bank": {
58490                     "count": 97
58491                 },
58492                 "Komerční banka": {
58493                     "count": 132
58494                 },
58495                 "Banco Pastor": {
58496                     "count": 64
58497                 },
58498                 "Stadtsparkasse": {
58499                     "count": 86
58500                 },
58501                 "Ulster Bank": {
58502                     "count": 86
58503                 },
58504                 "Sberbank": {
58505                     "count": 58
58506                 },
58507                 "CIC": {
58508                     "count": 427
58509                 },
58510                 "Bancpost": {
58511                     "count": 56
58512                 },
58513                 "Caja Madrid": {
58514                     "count": 115
58515                 },
58516                 "Maybank": {
58517                     "count": 94
58518                 },
58519                 "中国银行": {
58520                     "count": 85
58521                 },
58522                 "Unicredit Banca": {
58523                     "count": 243
58524                 },
58525                 "Crédit Mutuel": {
58526                     "count": 690
58527                 },
58528                 "BBVA": {
58529                     "count": 647
58530                 },
58531                 "Intesa San Paolo": {
58532                     "count": 69
58533                 },
58534                 "TD Bank": {
58535                     "count": 206
58536                 },
58537                 "Belfius": {
58538                     "count": 231
58539                 },
58540                 "Bank of America": {
58541                     "count": 924
58542                 },
58543                 "RBC": {
58544                     "count": 230
58545                 },
58546                 "Alpha Bank": {
58547                     "count": 123
58548                 },
58549                 "Сбербанк": {
58550                     "count": 4794
58551                 },
58552                 "Россельхозбанк": {
58553                     "count": 201
58554                 },
58555                 "Crédit du Nord": {
58556                     "count": 96
58557                 },
58558                 "BancoEstado": {
58559                     "count": 80
58560                 },
58561                 "Millennium Bank": {
58562                     "count": 414
58563                 },
58564                 "State Bank of India": {
58565                     "count": 151
58566                 },
58567                 "Беларусбанк": {
58568                     "count": 242
58569                 },
58570                 "ING Bank Śląski": {
58571                     "count": 67
58572                 },
58573                 "Caixa Geral de Depósitos": {
58574                     "count": 129
58575                 },
58576                 "Kreissparkasse Köln": {
58577                     "count": 65
58578                 },
58579                 "Banco BCI": {
58580                     "count": 51
58581                 },
58582                 "Banco de Chile": {
58583                     "count": 98
58584                 },
58585                 "ВТБ24": {
58586                     "count": 326
58587                 },
58588                 "UBS": {
58589                     "count": 134
58590                 },
58591                 "PKO BP": {
58592                     "count": 265
58593                 },
58594                 "Chinabank": {
58595                     "count": 55
58596                 },
58597                 "PSBank": {
58598                     "count": 59
58599                 },
58600                 "Union Bank": {
58601                     "count": 124
58602                 },
58603                 "China Bank": {
58604                     "count": 66
58605                 },
58606                 "RCBC": {
58607                     "count": 122
58608                 },
58609                 "Unicaja": {
58610                     "count": 83
58611                 },
58612                 "BBK": {
58613                     "count": 79
58614                 },
58615                 "Ibercaja": {
58616                     "count": 69
58617                 },
58618                 "RBS": {
58619                     "count": 143
58620                 },
58621                 "Commercial Bank of Ceylon PLC": {
58622                     "count": 79
58623                 },
58624                 "Bank of Ireland": {
58625                     "count": 109
58626                 },
58627                 "BNL": {
58628                     "count": 87
58629                 },
58630                 "Banco Santander": {
58631                     "count": 138
58632                 },
58633                 "Banco Itaú": {
58634                     "count": 111
58635                 },
58636                 "AIB": {
58637                     "count": 72
58638                 },
58639                 "BZ WBK": {
58640                     "count": 77
58641                 },
58642                 "Banco do Brasil": {
58643                     "count": 557
58644                 },
58645                 "Caixa Econômica Federal": {
58646                     "count": 184
58647                 },
58648                 "Fifth Third Bank": {
58649                     "count": 84
58650                 },
58651                 "Banca Popolare di Vicenza": {
58652                     "count": 81
58653                 },
58654                 "Wachovia": {
58655                     "count": 58
58656                 },
58657                 "OLB": {
58658                     "count": 53
58659                 },
58660                 "みずほ銀行": {
58661                     "count": 78
58662                 },
58663                 "BES": {
58664                     "count": 72
58665                 },
58666                 "ICICI Bank": {
58667                     "count": 91
58668                 },
58669                 "HDFC Bank": {
58670                     "count": 91
58671                 },
58672                 "La Banque Postale": {
58673                     "count": 67
58674                 },
58675                 "Pekao SA": {
58676                     "count": 56
58677                 },
58678                 "Oberbank": {
58679                     "count": 90
58680                 },
58681                 "Bradesco": {
58682                     "count": 295
58683                 },
58684                 "Oldenburgische Landesbank": {
58685                     "count": 56
58686                 },
58687                 "Bendigo Bank": {
58688                     "count": 93
58689                 },
58690                 "Argenta": {
58691                     "count": 86
58692                 },
58693                 "AXA": {
58694                     "count": 68
58695                 },
58696                 "Axis Bank": {
58697                     "count": 61
58698                 },
58699                 "Banco Nación": {
58700                     "count": 67
58701                 },
58702                 "GE Money Bank": {
58703                     "count": 72
58704                 },
58705                 "Альфа-Банк": {
58706                     "count": 185
58707                 },
58708                 "Белагропромбанк": {
58709                     "count": 70
58710                 },
58711                 "Caja Círculo": {
58712                     "count": 65
58713                 },
58714                 "Banco Galicia": {
58715                     "count": 51
58716                 },
58717                 "Eurobank": {
58718                     "count": 97
58719                 },
58720                 "Banca Intesa": {
58721                     "count": 62
58722                 },
58723                 "Canara Bank": {
58724                     "count": 92
58725                 },
58726                 "Cajamar": {
58727                     "count": 77
58728                 },
58729                 "Banamex": {
58730                     "count": 149
58731                 },
58732                 "Crédit Mutuel de Bretagne": {
58733                     "count": 335
58734                 },
58735                 "Davivienda": {
58736                     "count": 83
58737                 },
58738                 "Bank Spółdzielczy": {
58739                     "count": 159
58740                 },
58741                 "Credit Agricole": {
58742                     "count": 157
58743                 },
58744                 "Bankinter": {
58745                     "count": 59
58746                 },
58747                 "Banque Nationale": {
58748                     "count": 63
58749                 },
58750                 "Bank of the West": {
58751                     "count": 96
58752                 },
58753                 "Key Bank": {
58754                     "count": 155
58755                 },
58756                 "Western Union": {
58757                     "count": 88
58758                 },
58759                 "Citizens Bank": {
58760                     "count": 115
58761                 },
58762                 "ПриватБанк": {
58763                     "count": 513
58764                 },
58765                 "Security Bank": {
58766                     "count": 78
58767                 },
58768                 "Millenium": {
58769                     "count": 60
58770                 },
58771                 "Bankia": {
58772                     "count": 149
58773                 },
58774                 "三菱東京UFJ銀行": {
58775                     "count": 159
58776                 },
58777                 "Caixa": {
58778                     "count": 117
58779                 },
58780                 "Banco de Costa Rica": {
58781                     "count": 63
58782                 },
58783                 "SunTrust Bank": {
58784                     "count": 73
58785                 },
58786                 "Itaú": {
58787                     "count": 338
58788                 },
58789                 "PBZ": {
58790                     "count": 52
58791                 },
58792                 "中国工商银行": {
58793                     "count": 51
58794                 },
58795                 "Bancolombia": {
58796                     "count": 89
58797                 },
58798                 "Райффайзен Банк Аваль": {
58799                     "count": 64
58800                 },
58801                 "Bancomer": {
58802                     "count": 115
58803                 },
58804                 "Banorte": {
58805                     "count": 80
58806                 },
58807                 "Alior Bank": {
58808                     "count": 81
58809                 },
58810                 "BOC": {
58811                     "count": 51
58812                 },
58813                 "Банк Москвы": {
58814                     "count": 118
58815                 },
58816                 "ВТБ": {
58817                     "count": 59
58818                 },
58819                 "Getin Bank": {
58820                     "count": 55
58821                 },
58822                 "Caja Duero": {
58823                     "count": 57
58824                 },
58825                 "Regions Bank": {
58826                     "count": 62
58827                 },
58828                 "Росбанк": {
58829                     "count": 177
58830                 },
58831                 "Banco Estado": {
58832                     "count": 72
58833                 },
58834                 "BCI": {
58835                     "count": 68
58836                 },
58837                 "SunTrust": {
58838                     "count": 68
58839                 },
58840                 "PNC Bank": {
58841                     "count": 254
58842                 },
58843                 "신한은행": {
58844                     "count": 217,
58845                     "tags": {
58846                         "name:en": "Sinhan Bank"
58847                     }
58848                 },
58849                 "우리은행": {
58850                     "count": 291,
58851                     "tags": {
58852                         "name:en": "Uri Bank"
58853                     }
58854                 },
58855                 "국민은행": {
58856                     "count": 165,
58857                     "tags": {
58858                         "name:en": "Gungmin Bank"
58859                     }
58860                 },
58861                 "중소기업은행": {
58862                     "count": 52,
58863                     "tags": {
58864                         "name:en": "Industrial Bank of Korea"
58865                     }
58866                 },
58867                 "광주은행": {
58868                     "count": 51,
58869                     "tags": {
58870                         "name:en": "Gwangju Bank"
58871                     }
58872                 },
58873                 "Газпромбанк": {
58874                     "count": 100
58875                 },
58876                 "M&T Bank": {
58877                     "count": 92
58878                 },
58879                 "Caja de Burgos": {
58880                     "count": 51
58881                 },
58882                 "Santander Totta": {
58883                     "count": 69
58884                 },
58885                 "УкрСиббанк": {
58886                     "count": 192
58887                 },
58888                 "Ощадбанк": {
58889                     "count": 364
58890                 },
58891                 "Уралсиб": {
58892                     "count": 85
58893                 },
58894                 "りそな銀行": {
58895                     "count": 225,
58896                     "tags": {
58897                         "name:en": "Mizuho Bank"
58898                     }
58899                 },
58900                 "Ecobank": {
58901                     "count": 66
58902                 },
58903                 "Cajero Automatico Bancared": {
58904                     "count": 145
58905                 },
58906                 "Промсвязьбанк": {
58907                     "count": 93
58908                 },
58909                 "三井住友銀行": {
58910                     "count": 129
58911                 },
58912                 "Banco Provincia": {
58913                     "count": 67
58914                 },
58915                 "BB&T": {
58916                     "count": 147
58917                 },
58918                 "Возрождение": {
58919                     "count": 59
58920                 },
58921                 "Capital One": {
58922                     "count": 59
58923                 },
58924                 "横浜銀行": {
58925                     "count": 51
58926                 },
58927                 "Bank Mandiri": {
58928                     "count": 62
58929                 },
58930                 "Banco de la Nación": {
58931                     "count": 92
58932                 },
58933                 "Banco G&T Continental": {
58934                     "count": 62
58935                 },
58936                 "Peoples Bank": {
58937                     "count": 60
58938                 },
58939                 "工商银行": {
58940                     "count": 51
58941                 },
58942                 "Совкомбанк": {
58943                     "count": 55
58944                 },
58945                 "Provincial": {
58946                     "count": 56
58947                 },
58948                 "Banco de Desarrollo Banrural": {
58949                     "count": 73
58950                 },
58951                 "Banco Bradesco": {
58952                     "count": 65
58953                 },
58954                 "Bicentenario": {
58955                     "count": 182
58956                 },
58957                 "ლიბერთი ბანკი": {
58958                     "count": 54,
58959                     "tags": {
58960                         "name:en": "Liberty Bank"
58961                     }
58962                 },
58963                 "Banesco": {
58964                     "count": 108
58965                 },
58966                 "Mercantil": {
58967                     "count": 75
58968                 },
58969                 "Bank BRI": {
58970                     "count": 53
58971                 },
58972                 "Del Tesoro": {
58973                     "count": 91
58974                 },
58975                 "하나은행": {
58976                     "count": 77
58977                 },
58978                 "CityCommerce Bank": {
58979                     "count": 71
58980                 },
58981                 "De Venezuela": {
58982                     "count": 117
58983                 }
58984             },
58985             "car_rental": {
58986                 "Europcar": {
58987                     "count": 291
58988                 },
58989                 "Budget": {
58990                     "count": 92
58991                 },
58992                 "Sixt": {
58993                     "count": 161
58994                 },
58995                 "Avis": {
58996                     "count": 282
58997                 },
58998                 "Hertz": {
58999                     "count": 293
59000                 },
59001                 "Enterprise": {
59002                     "count": 199
59003                 },
59004                 "stadtmobil CarSharing-Station": {
59005                     "count": 148
59006                 }
59007             },
59008             "pharmacy": {
59009                 "Rowlands Pharmacy": {
59010                     "count": 71
59011                 },
59012                 "Boots": {
59013                     "count": 840
59014                 },
59015                 "Marien-Apotheke": {
59016                     "count": 314
59017                 },
59018                 "Mercury Drug": {
59019                     "count": 426
59020                 },
59021                 "Löwen-Apotheke": {
59022                     "count": 356
59023                 },
59024                 "Superdrug": {
59025                     "count": 117
59026                 },
59027                 "Sonnen-Apotheke": {
59028                     "count": 311
59029                 },
59030                 "Rathaus-Apotheke": {
59031                     "count": 132
59032                 },
59033                 "Engel-Apotheke": {
59034                     "count": 123
59035                 },
59036                 "Hirsch-Apotheke": {
59037                     "count": 83
59038                 },
59039                 "Stern-Apotheke": {
59040                     "count": 67
59041                 },
59042                 "Lloyds Pharmacy": {
59043                     "count": 295
59044                 },
59045                 "Rosen-Apotheke": {
59046                     "count": 208
59047                 },
59048                 "Stadt-Apotheke": {
59049                     "count": 302
59050                 },
59051                 "Markt-Apotheke": {
59052                     "count": 164
59053                 },
59054                 "Аптека": {
59055                     "count": 1989
59056                 },
59057                 "Pharmasave": {
59058                     "count": 64
59059                 },
59060                 "Brunnen-Apotheke": {
59061                     "count": 53
59062                 },
59063                 "Shoppers Drug Mart": {
59064                     "count": 430
59065                 },
59066                 "Apotheke am Markt": {
59067                     "count": 60
59068                 },
59069                 "Alte Apotheke": {
59070                     "count": 88
59071                 },
59072                 "Neue Apotheke": {
59073                     "count": 109
59074                 },
59075                 "Gintarinė vaistinė": {
59076                     "count": 101
59077                 },
59078                 "Rats-Apotheke": {
59079                     "count": 84
59080                 },
59081                 "Adler Apotheke": {
59082                     "count": 313
59083                 },
59084                 "Pharmacie Centrale": {
59085                     "count": 64
59086                 },
59087                 "Walgreens": {
59088                     "count": 1619
59089                 },
59090                 "Rite Aid": {
59091                     "count": 745
59092                 },
59093                 "Apotheke": {
59094                     "count": 165
59095                 },
59096                 "Linden-Apotheke": {
59097                     "count": 211
59098                 },
59099                 "Bahnhof-Apotheke": {
59100                     "count": 66
59101                 },
59102                 "Burg-Apotheke": {
59103                     "count": 55
59104                 },
59105                 "Jean Coutu": {
59106                     "count": 62
59107                 },
59108                 "Pharmaprix": {
59109                     "count": 60
59110                 },
59111                 "Farmacias Ahumada": {
59112                     "count": 104
59113                 },
59114                 "Farmacia Comunale": {
59115                     "count": 113
59116                 },
59117                 "Farmacias Cruz Verde": {
59118                     "count": 86
59119                 },
59120                 "Cruz Verde": {
59121                     "count": 99
59122                 },
59123                 "Hubertus Apotheke": {
59124                     "count": 52
59125                 },
59126                 "CVS": {
59127                     "count": 1560
59128                 },
59129                 "Farmacias SalcoBrand": {
59130                     "count": 133
59131                 },
59132                 "Фармация": {
59133                     "count": 120
59134                 },
59135                 "Bären-Apotheke": {
59136                     "count": 74
59137                 },
59138                 "Clicks": {
59139                     "count": 113
59140                 },
59141                 "セイジョー": {
59142                     "count": 53
59143                 },
59144                 "マツモトキヨシ": {
59145                     "count": 115
59146                 },
59147                 "Dr. Max": {
59148                     "count": 51
59149                 },
59150                 "Вита": {
59151                     "count": 106
59152                 },
59153                 "Радуга": {
59154                     "count": 70
59155                 },
59156                 "サンドラッグ": {
59157                     "count": 61
59158                 },
59159                 "Apteka": {
59160                     "count": 366
59161                 },
59162                 "Первая помощь": {
59163                     "count": 74
59164                 },
59165                 "Ригла": {
59166                     "count": 113
59167                 },
59168                 "Имплозия": {
59169                     "count": 63
59170                 },
59171                 "Kinney Drugs": {
59172                     "count": 68
59173                 },
59174                 "Классика": {
59175                     "count": 67
59176                 },
59177                 "Ljekarna": {
59178                     "count": 53
59179                 },
59180                 "SalcoBrand": {
59181                     "count": 88
59182                 },
59183                 "Аптека 36,6": {
59184                     "count": 224
59185                 },
59186                 "Фармакор": {
59187                     "count": 75
59188                 },
59189                 "スギ薬局": {
59190                     "count": 84
59191                 },
59192                 "Аптечный пункт": {
59193                     "count": 148
59194                 },
59195                 "Невис": {
59196                     "count": 60
59197                 },
59198                 "トモズ (Tomod's)": {
59199                     "count": 83
59200                 },
59201                 "Eurovaistinė": {
59202                     "count": 65
59203                 },
59204                 "Farmacity": {
59205                     "count": 68
59206                 },
59207                 "аптека": {
59208                     "count": 96
59209                 },
59210                 "The Generics Pharmacy": {
59211                     "count": 95
59212                 },
59213                 "Farmatodo": {
59214                     "count": 123
59215                 },
59216                 "Duane Reade": {
59217                     "count": 61
59218                 },
59219                 "H-E-B": {
59220                     "count": 262
59221                 },
59222                 "Фармленд": {
59223                     "count": 82
59224                 },
59225                 "ドラッグてらしま (Drug Terashima)": {
59226                     "count": 96
59227                 },
59228                 "Арніка": {
59229                     "count": 125
59230                 },
59231                 "ავერსი (Aversi)": {
59232                     "count": 62
59233                 },
59234                 "Farmahorro": {
59235                     "count": 58
59236                 }
59237             },
59238             "cafe": {
59239                 "Starbucks": {
59240                     "count": 4238,
59241                     "tags": {
59242                         "cuisine": "coffee_shop"
59243                     }
59244                 },
59245                 "Cafeteria": {
59246                     "count": 115
59247                 },
59248                 "Costa": {
59249                     "count": 618
59250                 },
59251                 "Caffè Nero": {
59252                     "count": 169
59253                 },
59254                 "Кафе": {
59255                     "count": 226
59256                 },
59257                 "Café Central": {
59258                     "count": 61
59259                 },
59260                 "Second Cup": {
59261                     "count": 193
59262                 },
59263                 "Dunkin Donuts": {
59264                     "count": 428,
59265                     "tags": {
59266                         "cuisine": "donut"
59267                     }
59268                 },
59269                 "Espresso House": {
59270                     "count": 53
59271                 },
59272                 "Segafredo": {
59273                     "count": 69
59274                 },
59275                 "Coffee Time": {
59276                     "count": 94
59277                 },
59278                 "Cafe Coffee Day": {
59279                     "count": 120
59280                 },
59281                 "Eiscafe Venezia": {
59282                     "count": 180
59283                 },
59284                 "スターバックス": {
59285                     "count": 251,
59286                     "tags": {
59287                         "name:en": "Starbucks"
59288                     }
59289                 },
59290                 "Шоколадница": {
59291                     "count": 145
59292                 },
59293                 "Pret A Manger": {
59294                     "count": 119
59295                 },
59296                 "Столовая": {
59297                     "count": 391
59298                 },
59299                 "Jamba Juice": {
59300                     "count": 53
59301                 },
59302                 "ドトール": {
59303                     "count": 164,
59304                     "tags": {
59305                         "name:en": "DOUTOR"
59306                     }
59307                 },
59308                 "Tchibo": {
59309                     "count": 100
59310                 },
59311                 "Кофе Хауз": {
59312                     "count": 104
59313                 },
59314                 "Caribou Coffee": {
59315                     "count": 100
59316                 },
59317                 "Уют": {
59318                     "count": 51
59319                 },
59320                 "Шашлычная": {
59321                     "count": 58
59322                 },
59323                 "คาเฟ่ อเมซอน": {
59324                     "count": 62
59325                 },
59326                 "Traveler's Coffee": {
59327                     "count": 60
59328                 },
59329                 "カフェ・ド・クリエ": {
59330                     "count": 67,
59331                     "tags": {
59332                         "name:en": "Cafe de CRIE"
59333                     }
59334                 },
59335                 "Cafe Amazon": {
59336                     "count": 65
59337                 }
59338             }
59339         },
59340         "shop": {
59341             "supermarket": {
59342                 "Budgens": {
59343                     "count": 88
59344                 },
59345                 "Morrisons": {
59346                     "count": 411
59347                 },
59348                 "Interspar": {
59349                     "count": 142
59350                 },
59351                 "Merkur": {
59352                     "count": 107
59353                 },
59354                 "Sainsbury's": {
59355                     "count": 547
59356                 },
59357                 "Lidl": {
59358                     "count": 7130
59359                 },
59360                 "Edeka": {
59361                     "count": 2293
59362                 },
59363                 "Coles": {
59364                     "count": 400
59365                 },
59366                 "Iceland": {
59367                     "count": 315
59368                 },
59369                 "Coop": {
59370                     "count": 2100
59371                 },
59372                 "Tesco": {
59373                     "count": 1297
59374                 },
59375                 "Woolworths": {
59376                     "count": 541
59377                 },
59378                 "Zielpunkt": {
59379                     "count": 239
59380                 },
59381                 "Nahkauf": {
59382                     "count": 170
59383                 },
59384                 "Billa": {
59385                     "count": 1432
59386                 },
59387                 "Kaufland": {
59388                     "count": 1004
59389                 },
59390                 "Plus": {
59391                     "count": 120
59392                 },
59393                 "ALDI": {
59394                     "count": 5172
59395                 },
59396                 "Checkers": {
59397                     "count": 128
59398                 },
59399                 "Tesco Metro": {
59400                     "count": 137
59401                 },
59402                 "NP": {
59403                     "count": 153
59404                 },
59405                 "Penny": {
59406                     "count": 1759
59407                 },
59408                 "Norma": {
59409                     "count": 1068
59410                 },
59411                 "Asda": {
59412                     "count": 225
59413                 },
59414                 "Netto": {
59415                     "count": 4379
59416                 },
59417                 "Rewe": {
59418                     "count": 2645
59419                 },
59420                 "Aldi Süd": {
59421                     "count": 594
59422                 },
59423                 "Real": {
59424                     "count": 246
59425                 },
59426                 "Tesco Express": {
59427                     "count": 406
59428                 },
59429                 "King Soopers": {
59430                     "count": 72
59431                 },
59432                 "Kiwi": {
59433                     "count": 167
59434                 },
59435                 "Pick n Pay": {
59436                     "count": 241
59437                 },
59438                 "ICA": {
59439                     "count": 192
59440                 },
59441                 "Tengelmann": {
59442                     "count": 188
59443                 },
59444                 "Carrefour": {
59445                     "count": 1640
59446                 },
59447                 "Waitrose": {
59448                     "count": 258
59449                 },
59450                 "Spar": {
59451                     "count": 2386
59452                 },
59453                 "Hofer": {
59454                     "count": 442
59455                 },
59456                 "M-Preis": {
59457                     "count": 76
59458                 },
59459                 "tegut": {
59460                     "count": 210
59461                 },
59462                 "Sainsbury's Local": {
59463                     "count": 118
59464                 },
59465                 "E-Center": {
59466                     "count": 66
59467                 },
59468                 "Aldi Nord": {
59469                     "count": 210
59470                 },
59471                 "nahkauf": {
59472                     "count": 84
59473                 },
59474                 "Meijer": {
59475                     "count": 76
59476                 },
59477                 "Safeway": {
59478                     "count": 410
59479                 },
59480                 "Costco": {
59481                     "count": 152
59482                 },
59483                 "Albert": {
59484                     "count": 185
59485                 },
59486                 "Jumbo": {
59487                     "count": 194
59488                 },
59489                 "Shoprite": {
59490                     "count": 244
59491                 },
59492                 "MPreis": {
59493                     "count": 54
59494                 },
59495                 "Penny Market": {
59496                     "count": 429
59497                 },
59498                 "Tesco Extra": {
59499                     "count": 123
59500                 },
59501                 "Albert Heijn": {
59502                     "count": 476
59503                 },
59504                 "IGA": {
59505                     "count": 363
59506                 },
59507                 "Super U": {
59508                     "count": 488
59509                 },
59510                 "Metro": {
59511                     "count": 260
59512                 },
59513                 "Neukauf": {
59514                     "count": 77
59515                 },
59516                 "Migros": {
59517                     "count": 459
59518                 },
59519                 "Marktkauf": {
59520                     "count": 121
59521                 },
59522                 "Delikatesy Centrum": {
59523                     "count": 59
59524                 },
59525                 "C1000": {
59526                     "count": 307
59527                 },
59528                 "Hoogvliet": {
59529                     "count": 53
59530                 },
59531                 "Food Basics": {
59532                     "count": 75
59533                 },
59534                 "Casino": {
59535                     "count": 264
59536                 },
59537                 "Penny Markt": {
59538                     "count": 466
59539                 },
59540                 "Giant": {
59541                     "count": 191
59542                 },
59543                 "COOP Jednota": {
59544                     "count": 73
59545                 },
59546                 "Rema 1000": {
59547                     "count": 368
59548                 },
59549                 "Kaufpark": {
59550                     "count": 96
59551                 },
59552                 "ALDI SÜD": {
59553                     "count": 113
59554                 },
59555                 "Simply Market": {
59556                     "count": 330
59557                 },
59558                 "Konzum": {
59559                     "count": 230
59560                 },
59561                 "Carrefour Express": {
59562                     "count": 353
59563                 },
59564                 "Eurospar": {
59565                     "count": 270
59566                 },
59567                 "Mercator": {
59568                     "count": 125
59569                 },
59570                 "Famila": {
59571                     "count": 130
59572                 },
59573                 "Hemköp": {
59574                     "count": 82
59575                 },
59576                 "real,-": {
59577                     "count": 81
59578                 },
59579                 "Markant": {
59580                     "count": 88
59581                 },
59582                 "Volg": {
59583                     "count": 135
59584                 },
59585                 "Leader Price": {
59586                     "count": 267
59587                 },
59588                 "Treff 3000": {
59589                     "count": 94
59590                 },
59591                 "SuperBrugsen": {
59592                     "count": 67
59593                 },
59594                 "Kaiser's": {
59595                     "count": 256
59596                 },
59597                 "K+K": {
59598                     "count": 106
59599                 },
59600                 "Unimarkt": {
59601                     "count": 86
59602                 },
59603                 "Carrefour City": {
59604                     "count": 126
59605                 },
59606                 "Sobeys": {
59607                     "count": 122
59608                 },
59609                 "S-Market": {
59610                     "count": 109
59611                 },
59612                 "Combi": {
59613                     "count": 55
59614                 },
59615                 "Denner": {
59616                     "count": 276
59617                 },
59618                 "Konsum": {
59619                     "count": 133
59620                 },
59621                 "Franprix": {
59622                     "count": 312
59623                 },
59624                 "Monoprix": {
59625                     "count": 198
59626                 },
59627                 "Diska": {
59628                     "count": 69
59629                 },
59630                 "PENNY": {
59631                     "count": 79
59632                 },
59633                 "Dia": {
59634                     "count": 835
59635                 },
59636                 "Giant Eagle": {
59637                     "count": 85
59638                 },
59639                 "NORMA": {
59640                     "count": 115
59641                 },
59642                 "AD Delhaize": {
59643                     "count": 63
59644                 },
59645                 "Auchan": {
59646                     "count": 152
59647                 },
59648                 "Mercadona": {
59649                     "count": 769
59650                 },
59651                 "Consum": {
59652                     "count": 130
59653                 },
59654                 "Carrefour Market": {
59655                     "count": 80
59656                 },
59657                 "Whole Foods": {
59658                     "count": 210,
59659                     "tags": {
59660                         "shop": "supermarket"
59661                     }
59662                 },
59663                 "Pam": {
59664                     "count": 56
59665                 },
59666                 "sky": {
59667                     "count": 105
59668                 },
59669                 "Despar": {
59670                     "count": 146
59671                 },
59672                 "Eroski": {
59673                     "count": 208
59674                 },
59675                 "Costcutter": {
59676                     "count": 63
59677                 },
59678                 "Maxi": {
59679                     "count": 108
59680                 },
59681                 "Colruyt": {
59682                     "count": 180
59683                 },
59684                 "The Co-operative": {
59685                     "count": 64
59686                 },
59687                 "Intermarché": {
59688                     "count": 1210
59689                 },
59690                 "Delhaize": {
59691                     "count": 207
59692                 },
59693                 "CBA": {
59694                     "count": 176
59695                 },
59696                 "Shopi": {
59697                     "count": 53
59698                 },
59699                 "Walmart": {
59700                     "count": 644
59701                 },
59702                 "Kroger": {
59703                     "count": 317
59704                 },
59705                 "Albertsons": {
59706                     "count": 242
59707                 },
59708                 "Trader Joe's": {
59709                     "count": 235
59710                 },
59711                 "Feneberg": {
59712                     "count": 58
59713                 },
59714                 "denn's Biomarkt": {
59715                     "count": 52
59716                 },
59717                 "dm": {
59718                     "count": 114
59719                 },
59720                 "Kvickly": {
59721                     "count": 55
59722                 },
59723                 "Makro": {
59724                     "count": 140
59725                 },
59726                 "Dico": {
59727                     "count": 53
59728                 },
59729                 "Nah & Frisch": {
59730                     "count": 73
59731                 },
59732                 "Champion": {
59733                     "count": 59
59734                 },
59735                 "ICA Supermarket": {
59736                     "count": 51
59737                 },
59738                 "Fakta": {
59739                     "count": 235
59740                 },
59741                 "Магнит": {
59742                     "count": 1760
59743                 },
59744                 "Caprabo": {
59745                     "count": 103
59746                 },
59747                 "Famiglia Cooperativa": {
59748                     "count": 64
59749                 },
59750                 "Народная 7Я семьЯ": {
59751                     "count": 154
59752                 },
59753                 "Esselunga": {
59754                     "count": 85
59755                 },
59756                 "Maxima": {
59757                     "count": 102
59758                 },
59759                 "Petit Casino": {
59760                     "count": 111
59761                 },
59762                 "Wasgau": {
59763                     "count": 60
59764                 },
59765                 "Pingo Doce": {
59766                     "count": 253
59767                 },
59768                 "Match": {
59769                     "count": 140
59770                 },
59771                 "Profi": {
59772                     "count": 60
59773                 },
59774                 "Lider": {
59775                     "count": 65
59776                 },
59777                 "Unimarc": {
59778                     "count": 177
59779                 },
59780                 "The Co-operative Food": {
59781                     "count": 190
59782                 },
59783                 "Santa Isabel": {
59784                     "count": 128
59785                 },
59786                 "Седьмой континент": {
59787                     "count": 79
59788                 },
59789                 "HIT": {
59790                     "count": 59
59791                 },
59792                 "Rimi": {
59793                     "count": 106
59794                 },
59795                 "Conad": {
59796                     "count": 304
59797                 },
59798                 "Фуршет": {
59799                     "count": 76
59800                 },
59801                 "Willys": {
59802                     "count": 56
59803                 },
59804                 "Farmfoods": {
59805                     "count": 64
59806                 },
59807                 "U Express": {
59808                     "count": 51
59809                 },
59810                 "Фора": {
59811                     "count": 52
59812                 },
59813                 "Dunnes Stores": {
59814                     "count": 73
59815                 },
59816                 "Сільпо": {
59817                     "count": 125
59818                 },
59819                 "マルエツ": {
59820                     "count": 59
59821                 },
59822                 "Piggly Wiggly": {
59823                     "count": 57
59824                 },
59825                 "Crai": {
59826                     "count": 54
59827                 },
59828                 "El Árbol": {
59829                     "count": 73
59830                 },
59831                 "Centre Commercial E. Leclerc": {
59832                     "count": 549
59833                 },
59834                 "Foodland": {
59835                     "count": 100
59836                 },
59837                 "Super Brugsen": {
59838                     "count": 67
59839                 },
59840                 "Дикси": {
59841                     "count": 683
59842                 },
59843                 "Пятёрочка": {
59844                     "count": 1344
59845                 },
59846                 "Publix": {
59847                     "count": 339
59848                 },
59849                 "Føtex": {
59850                     "count": 66
59851                 },
59852                 "coop": {
59853                     "count": 73
59854                 },
59855                 "Fressnapf": {
59856                     "count": 69
59857                 },
59858                 "Coop Konsum": {
59859                     "count": 79
59860                 },
59861                 "Carrefour Contact": {
59862                     "count": 83
59863                 },
59864                 "No Frills": {
59865                     "count": 105
59866                 },
59867                 "Plodine": {
59868                     "count": 52
59869                 },
59870                 "ADEG": {
59871                     "count": 68
59872                 },
59873                 "Minipreço": {
59874                     "count": 111
59875                 },
59876                 "Biedronka": {
59877                     "count": 1335
59878                 },
59879                 "Eurospin": {
59880                     "count": 155
59881                 },
59882                 "Семья": {
59883                     "count": 62
59884                 },
59885                 "Gadis": {
59886                     "count": 53
59887                 },
59888                 "Евроопт": {
59889                     "count": 68
59890                 },
59891                 "Centra": {
59892                     "count": 51
59893                 },
59894                 "Квартал": {
59895                     "count": 82
59896                 },
59897                 "New World": {
59898                     "count": 69
59899                 },
59900                 "Countdown": {
59901                     "count": 95
59902                 },
59903                 "Reliance Fresh": {
59904                     "count": 61
59905                 },
59906                 "Stokrotka": {
59907                     "count": 98
59908                 },
59909                 "Coop Jednota": {
59910                     "count": 74
59911                 },
59912                 "Fred Meyer": {
59913                     "count": 64
59914                 },
59915                 "Irma": {
59916                     "count": 58
59917                 },
59918                 "Continente": {
59919                     "count": 75
59920                 },
59921                 "Price Chopper": {
59922                     "count": 99
59923                 },
59924                 "Game": {
59925                     "count": 52
59926                 },
59927                 "Soriana": {
59928                     "count": 93
59929                 },
59930                 "Alimerka": {
59931                     "count": 64
59932                 },
59933                 "Piotr i Paweł": {
59934                     "count": 53
59935                 },
59936                 "Перекресток": {
59937                     "count": 312
59938                 },
59939                 "Maxima X": {
59940                     "count": 117
59941                 },
59942                 "Карусель": {
59943                     "count": 55
59944                 },
59945                 "ALDI Nord": {
59946                     "count": 51
59947                 },
59948                 "Condis": {
59949                     "count": 67
59950                 },
59951                 "Sam's Club": {
59952                     "count": 138
59953                 },
59954                 "Копейка": {
59955                     "count": 87
59956                 },
59957                 "Géant Casino": {
59958                     "count": 54
59959                 },
59960                 "ASDA": {
59961                     "count": 180
59962                 },
59963                 "Intermarche": {
59964                     "count": 115
59965                 },
59966                 "Stop & Shop": {
59967                     "count": 66
59968                 },
59969                 "Food Lion": {
59970                     "count": 216
59971                 },
59972                 "Harris Teeter": {
59973                     "count": 92
59974                 },
59975                 "Foodworks": {
59976                     "count": 62
59977                 },
59978                 "Polo Market": {
59979                     "count": 86
59980                 },
59981                 "Лента": {
59982                     "count": 51
59983                 },
59984                 "西友 (SEIYU)": {
59985                     "count": 58
59986                 },
59987                 "H-E-B": {
59988                     "count": 293
59989                 },
59990                 "Атак": {
59991                     "count": 53
59992                 },
59993                 "Полушка": {
59994                     "count": 139
59995                 },
59996                 "Extra": {
59997                     "count": 82
59998                 },
59999                 "Lewiatan": {
60000                     "count": 94
60001                 },
60002                 "Sigma": {
60003                     "count": 51
60004                 },
60005                 "АТБ": {
60006                     "count": 322
60007                 },
60008                 "Społem": {
60009                     "count": 55
60010                 },
60011                 "Bodega Aurrera": {
60012                     "count": 82
60013                 },
60014                 "Tesco Lotus": {
60015                     "count": 77
60016                 },
60017                 "Мария-Ра": {
60018                     "count": 108
60019                 },
60020                 "Магнолия": {
60021                     "count": 72
60022                 },
60023                 "Магазин": {
60024                     "count": 120
60025                 },
60026                 "Монетка": {
60027                     "count": 174
60028                 },
60029                 "Hy-Vee": {
60030                     "count": 75
60031                 },
60032                 "Walmart Supercenter": {
60033                     "count": 133
60034                 },
60035                 "Hannaford": {
60036                     "count": 57
60037                 },
60038                 "Wegmans": {
60039                     "count": 83
60040                 },
60041                 "業務スーパー": {
60042                     "count": 61
60043                 },
60044                 "Norfa XL": {
60045                     "count": 55
60046                 },
60047                 "ヨークマート (YorkMart)": {
60048                     "count": 64
60049                 },
60050                 "Leclerc Drive": {
60051                     "count": 76
60052                 }
60053             },
60054             "electronics": {
60055                 "Media Markt": {
60056                     "count": 285
60057                 },
60058                 "Maplin": {
60059                     "count": 65
60060                 },
60061                 "Best Buy": {
60062                     "count": 345
60063                 },
60064                 "Future Shop": {
60065                     "count": 73
60066                 },
60067                 "Saturn": {
60068                     "count": 134
60069                 },
60070                 "Currys": {
60071                     "count": 80
60072                 },
60073                 "Radio Shack": {
60074                     "count": 269
60075                 },
60076                 "Euronics": {
60077                     "count": 115
60078                 },
60079                 "Expert": {
60080                     "count": 123
60081                 },
60082                 "Эльдорадо": {
60083                     "count": 184
60084                 },
60085                 "Darty": {
60086                     "count": 74
60087                 },
60088                 "М.Видео": {
60089                     "count": 89
60090                 },
60091                 "ヤマダ電機": {
60092                     "count": 51
60093                 }
60094             },
60095             "convenience": {
60096                 "Shell": {
60097                     "count": 255
60098                 },
60099                 "Spar": {
60100                     "count": 1119
60101                 },
60102                 "McColl's": {
60103                     "count": 100
60104                 },
60105                 "Tesco Express": {
60106                     "count": 426
60107                 },
60108                 "Sainsbury's Local": {
60109                     "count": 104
60110                 },
60111                 "Aral": {
60112                     "count": 56
60113                 },
60114                 "One Stop": {
60115                     "count": 146
60116                 },
60117                 "The Co-operative Food": {
60118                     "count": 115
60119                 },
60120                 "Londis": {
60121                     "count": 352
60122                 },
60123                 "7-Eleven": {
60124                     "count": 4440
60125                 },
60126                 "CBA": {
60127                     "count": 135
60128                 },
60129                 "Coop": {
60130                     "count": 678
60131                 },
60132                 "Sale": {
60133                     "count": 80
60134                 },
60135                 "Statoil": {
60136                     "count": 69
60137                 },
60138                 "Sheetz": {
60139                     "count": 54
60140                 },
60141                 "Konzum": {
60142                     "count": 173
60143                 },
60144                 "Siwa": {
60145                     "count": 216
60146                 },
60147                 "Mercator": {
60148                     "count": 57
60149                 },
60150                 "Esso": {
60151                     "count": 67
60152                 },
60153                 "COOP Jednota": {
60154                     "count": 181
60155                 },
60156                 "Mac's": {
60157                     "count": 152
60158                 },
60159                 "Alepa": {
60160                     "count": 62
60161                 },
60162                 "Hasty Market": {
60163                     "count": 54
60164                 },
60165                 "K-Market": {
60166                     "count": 54
60167                 },
60168                 "Costcutter": {
60169                     "count": 292
60170                 },
60171                 "Valintatalo": {
60172                     "count": 62
60173                 },
60174                 "Casino": {
60175                     "count": 90
60176                 },
60177                 "Franprix": {
60178                     "count": 61
60179                 },
60180                 "Circle K": {
60181                     "count": 289
60182                 },
60183                 "セブンイレブン": {
60184                     "count": 3011,
60185                     "tags": {
60186                         "name:en": "7-Eleven"
60187                     }
60188                 },
60189                 "ローソン": {
60190                     "count": 1596,
60191                     "tags": {
60192                         "name:en": "LAWSON"
60193                     }
60194                 },
60195                 "BP": {
60196                     "count": 163
60197                 },
60198                 "Tesco": {
60199                     "count": 55
60200                 },
60201                 "Petit Casino": {
60202                     "count": 233
60203                 },
60204                 "Volg": {
60205                     "count": 116
60206                 },
60207                 "Mace": {
60208                     "count": 115
60209                 },
60210                 "Mini Market": {
60211                     "count": 272
60212                 },
60213                 "Nisa Local": {
60214                     "count": 77
60215                 },
60216                 "Dorfladen": {
60217                     "count": 75
60218                 },
60219                 "Продукты": {
60220                     "count": 4285
60221                 },
60222                 "Mini Stop": {
60223                     "count": 228
60224                 },
60225                 "LAWSON": {
60226                     "count": 419
60227                 },
60228                 "デイリーヤマザキ": {
60229                     "count": 141
60230                 },
60231                 "Biedronka": {
60232                     "count": 83
60233                 },
60234                 "Надежда": {
60235                     "count": 56
60236                 },
60237                 "Mobil": {
60238                     "count": 66
60239                 },
60240                 "Nisa": {
60241                     "count": 51
60242                 },
60243                 "Premier": {
60244                     "count": 129
60245                 },
60246                 "ABC": {
60247                     "count": 152
60248                 },
60249                 "ミニストップ": {
60250                     "count": 316,
60251                     "tags": {
60252                         "name:en": "MINISTOP"
60253                     }
60254                 },
60255                 "サンクス": {
60256                     "count": 560,
60257                     "tags": {
60258                         "name:en": "sunkus"
60259                     }
60260                 },
60261                 "スリーエフ": {
60262                     "count": 88
60263                 },
60264                 "8 à Huit": {
60265                     "count": 61
60266                 },
60267                 "Tchibo": {
60268                     "count": 56
60269                 },
60270                 "Żabka": {
60271                     "count": 546
60272                 },
60273                 "Almacen": {
60274                     "count": 229
60275                 },
60276                 "Vival": {
60277                     "count": 194
60278                 },
60279                 "FamilyMart": {
60280                     "count": 529
60281                 },
60282                 "ファミリーマート": {
60283                     "count": 1608,
60284                     "tags": {
60285                         "name:en": "FamilyMart"
60286                     }
60287                 },
60288                 "Carrefour City": {
60289                     "count": 57
60290                 },
60291                 "Sunkus": {
60292                     "count": 62
60293                 },
60294                 "Casey's General Store": {
60295                     "count": 95
60296                 },
60297                 "セブンイレブン(Seven-Eleven)": {
60298                     "count": 65
60299                 },
60300                 "Jednota": {
60301                     "count": 58
60302                 },
60303                 "Магазин": {
60304                     "count": 915
60305                 },
60306                 "Гастроном": {
60307                     "count": 152
60308                 },
60309                 "Centra": {
60310                     "count": 111
60311                 },
60312                 "Магнит": {
60313                     "count": 701
60314                 },
60315                 "サークルK": {
60316                     "count": 538,
60317                     "tags": {
60318                         "name:en": "Circle K"
60319                     }
60320                 },
60321                 "Wawa": {
60322                     "count": 135
60323                 },
60324                 "Proxi": {
60325                     "count": 123
60326                 },
60327                 "Универсам": {
60328                     "count": 78
60329                 },
60330                 "Перекресток": {
60331                     "count": 51
60332                 },
60333                 "Groszek": {
60334                     "count": 65
60335                 },
60336                 "Select": {
60337                     "count": 62
60338                 },
60339                 "Večerka": {
60340                     "count": 51
60341                 },
60342                 "Potraviny": {
60343                     "count": 249
60344                 },
60345                 "Смак": {
60346                     "count": 78
60347                 },
60348                 "Эконом": {
60349                     "count": 55
60350                 },
60351                 "Березка": {
60352                     "count": 77
60353                 },
60354                 "Społem": {
60355                     "count": 93
60356                 },
60357                 "Carrefour Express": {
60358                     "count": 84
60359                 },
60360                 "Cumberland Farms": {
60361                     "count": 63
60362                 },
60363                 "Chevron": {
60364                     "count": 59
60365                 },
60366                 "Coop Jednota": {
60367                     "count": 66
60368                 },
60369                 "Tesco Lotus Express": {
60370                     "count": 67
60371                 },
60372                 "Kiosk": {
60373                     "count": 55
60374                 },
60375                 "Sklep spożywczy": {
60376                     "count": 130
60377                 },
60378                 "24 часа": {
60379                     "count": 58
60380                 },
60381                 "Минимаркет": {
60382                     "count": 102
60383                 },
60384                 "Oxxo": {
60385                     "count": 669
60386                 },
60387                 "Пятёрочка": {
60388                     "count": 398
60389                 },
60390                 "abc": {
60391                     "count": 74
60392                 },
60393                 "7/11": {
60394                     "count": 51
60395                 },
60396                 "Stewart's": {
60397                     "count": 255
60398                 },
60399                 "Продукти": {
60400                     "count": 171
60401                 },
60402                 "ローソンストア100 (LAWSON STORE 100)": {
60403                     "count": 85
60404                 },
60405                 "Дикси": {
60406                     "count": 119
60407                 },
60408                 "Радуга": {
60409                     "count": 86
60410                 },
60411                 "ローソンストア100": {
60412                     "count": 76
60413                 },
60414                 "เซเว่นอีเลฟเว่น": {
60415                     "count": 185
60416                 },
60417                 "Delikatesy Centrum": {
60418                     "count": 53
60419                 },
60420                 "Citgo": {
60421                     "count": 62
60422                 },
60423                 "Фортуна": {
60424                     "count": 51
60425                 },
60426                 "Kum & Go": {
60427                     "count": 59
60428                 },
60429                 "Мария-Ра": {
60430                     "count": 76
60431                 },
60432                 "Picard": {
60433                     "count": 57
60434                 },
60435                 "Four Square": {
60436                     "count": 52
60437                 },
60438                 "Визит": {
60439                     "count": 57
60440                 },
60441                 "Авоська": {
60442                     "count": 55
60443                 },
60444                 "Dollar General": {
60445                     "count": 127
60446                 },
60447                 "Studenac": {
60448                     "count": 76
60449                 },
60450                 "Central Convenience Store": {
60451                     "count": 55
60452                 },
60453                 "Монетка": {
60454                     "count": 62
60455                 },
60456                 "продукты": {
60457                     "count": 114
60458                 },
60459                 "Теремок": {
60460                     "count": 56
60461                 },
60462                 "Kwik Trip": {
60463                     "count": 69
60464                 },
60465                 "Кулинария": {
60466                     "count": 55
60467                 },
60468                 "全家": {
60469                     "count": 90
60470                 },
60471                 "Мечта": {
60472                     "count": 54
60473                 },
60474                 "Epicerie": {
60475                     "count": 102
60476                 },
60477                 "Кировский": {
60478                     "count": 67
60479                 },
60480                 "Food Mart": {
60481                     "count": 117
60482                 },
60483                 "Delikatesy": {
60484                     "count": 81
60485                 },
60486                 "ポプラ": {
60487                     "count": 54
60488                 },
60489                 "Lewiatan": {
60490                     "count": 135
60491                 },
60492                 "Продуктовый магазин": {
60493                     "count": 149
60494                 },
60495                 "Продуктовый": {
60496                     "count": 84
60497                 },
60498                 "セイコーマート (Seicomart)": {
60499                     "count": 72
60500                 },
60501                 "Виктория": {
60502                     "count": 70
60503                 },
60504                 "Весна": {
60505                     "count": 57
60506                 },
60507                 "Mini Market Non-Stop": {
60508                     "count": 60
60509                 },
60510                 "QuikTrip": {
60511                     "count": 75
60512                 },
60513                 "Копеечка": {
60514                     "count": 51
60515                 },
60516                 "Royal Farms": {
60517                     "count": 51
60518                 },
60519                 "Alfamart": {
60520                     "count": 103
60521                 },
60522                 "Indomaret": {
60523                     "count": 141
60524                 },
60525                 "магазин": {
60526                     "count": 171
60527                 },
60528                 "全家便利商店": {
60529                     "count": 156
60530                 },
60531                 "Boutique": {
60532                     "count": 59
60533                 },
60534                 "მარკეტი (Market)": {
60535                     "count": 144
60536                 },
60537                 "Stores": {
60538                     "count": 61
60539                 }
60540             },
60541             "chemist": {
60542                 "dm": {
60543                     "count": 939
60544                 },
60545                 "Müller": {
60546                     "count": 212
60547                 },
60548                 "Schlecker": {
60549                     "count": 187
60550                 },
60551                 "Etos": {
60552                     "count": 467
60553                 },
60554                 "Bipa": {
60555                     "count": 289
60556                 },
60557                 "Rossmann": {
60558                     "count": 1669
60559                 },
60560                 "DM Drogeriemarkt": {
60561                     "count": 55
60562                 },
60563                 "Ihr Platz": {
60564                     "count": 73
60565                 },
60566                 "Douglas": {
60567                     "count": 62
60568                 },
60569                 "Kruidvat": {
60570                     "count": 123
60571                 }
60572             },
60573             "car_repair": {
60574                 "Peugeot": {
60575                     "count": 83
60576                 },
60577                 "Kwik Fit": {
60578                     "count": 128
60579                 },
60580                 "ATU": {
60581                     "count": 261
60582                 },
60583                 "Midas": {
60584                     "count": 202
60585                 },
60586                 "Feu Vert": {
60587                     "count": 113
60588                 },
60589                 "Norauto": {
60590                     "count": 152
60591                 },
60592                 "Speedy": {
60593                     "count": 115
60594                 },
60595                 "Автозапчасти": {
60596                     "count": 212
60597                 },
60598                 "Renault": {
60599                     "count": 171
60600                 },
60601                 "Pit Stop": {
60602                     "count": 58
60603                 },
60604                 "Jiffy Lube": {
60605                     "count": 198
60606                 },
60607                 "Шиномонтаж": {
60608                     "count": 1157
60609                 },
60610                 "СТО": {
60611                     "count": 395
60612                 },
60613                 "O'Reilly Auto Parts": {
60614                     "count": 81
60615                 },
60616                 "Carglass": {
60617                     "count": 112
60618                 },
60619                 "шиномонтаж": {
60620                     "count": 62
60621                 },
60622                 "Citroen": {
60623                     "count": 51
60624                 },
60625                 "Euromaster": {
60626                     "count": 87
60627                 },
60628                 "Firestone": {
60629                     "count": 88
60630                 },
60631                 "Автосервис": {
60632                     "count": 361
60633                 },
60634                 "Advance Auto Parts": {
60635                     "count": 52
60636                 },
60637                 "Roady": {
60638                     "count": 56
60639                 }
60640             },
60641             "furniture": {
60642                 "IKEA": {
60643                     "count": 169
60644                 },
60645                 "Jysk": {
60646                     "count": 109
60647                 },
60648                 "Roller": {
60649                     "count": 78
60650                 },
60651                 "Dänisches Bettenlager": {
60652                     "count": 309
60653                 },
60654                 "Conforama": {
60655                     "count": 99
60656                 },
60657                 "Matratzen Concord": {
60658                     "count": 52
60659                 },
60660                 "Мебель": {
60661                     "count": 210
60662                 },
60663                 "But": {
60664                     "count": 63
60665                 }
60666             },
60667             "doityourself": {
60668                 "Hornbach": {
60669                     "count": 123
60670                 },
60671                 "B&Q": {
60672                     "count": 225
60673                 },
60674                 "Hubo": {
60675                     "count": 77
60676                 },
60677                 "Mr Bricolage": {
60678                     "count": 88
60679                 },
60680                 "Gamma": {
60681                     "count": 111
60682                 },
60683                 "OBI": {
60684                     "count": 422
60685                 },
60686                 "Lowes": {
60687                     "count": 1152
60688                 },
60689                 "Wickes": {
60690                     "count": 123
60691                 },
60692                 "Hagebau": {
60693                     "count": 59
60694                 },
60695                 "Max Bahr": {
60696                     "count": 79
60697                 },
60698                 "Castorama": {
60699                     "count": 153
60700                 },
60701                 "Rona": {
60702                     "count": 61
60703                 },
60704                 "Home Depot": {
60705                     "count": 865
60706                 },
60707                 "Toom Baumarkt": {
60708                     "count": 71
60709                 },
60710                 "Homebase": {
60711                     "count": 225
60712                 },
60713                 "Baumax": {
60714                     "count": 95
60715                 },
60716                 "Lagerhaus": {
60717                     "count": 79
60718                 },
60719                 "Bauhaus": {
60720                     "count": 186
60721                 },
60722                 "Canadian Tire": {
60723                     "count": 97
60724                 },
60725                 "Leroy Merlin": {
60726                     "count": 209
60727                 },
60728                 "Hellweg": {
60729                     "count": 58
60730                 },
60731                 "Brico": {
60732                     "count": 98
60733                 },
60734                 "Bricomarché": {
60735                     "count": 235
60736                 },
60737                 "Toom": {
60738                     "count": 67
60739                 },
60740                 "Hagebaumarkt": {
60741                     "count": 107
60742                 },
60743                 "Praktiker": {
60744                     "count": 122
60745                 },
60746                 "Menards": {
60747                     "count": 70
60748                 },
60749                 "Weldom": {
60750                     "count": 73
60751                 },
60752                 "Bunnings Warehouse": {
60753                     "count": 91
60754                 },
60755                 "Ace Hardware": {
60756                     "count": 147
60757                 },
60758                 "Home Hardware": {
60759                     "count": 72
60760                 },
60761                 "Хозтовары": {
60762                     "count": 86
60763                 },
60764                 "Стройматериалы": {
60765                     "count": 197
60766                 },
60767                 "Bricorama": {
60768                     "count": 60
60769                 },
60770                 "Point P": {
60771                     "count": 59
60772                 }
60773             },
60774             "stationery": {
60775                 "Staples": {
60776                     "count": 299
60777                 },
60778                 "McPaper": {
60779                     "count": 83
60780                 },
60781                 "Office Depot": {
60782                     "count": 98
60783                 },
60784                 "Канцтовары": {
60785                     "count": 63
60786                 }
60787             },
60788             "car": {
60789                 "Skoda": {
60790                     "count": 97
60791                 },
60792                 "BMW": {
60793                     "count": 149
60794                 },
60795                 "Citroen": {
60796                     "count": 277
60797                 },
60798                 "Renault": {
60799                     "count": 382
60800                 },
60801                 "Mercedes-Benz": {
60802                     "count": 235
60803                 },
60804                 "Volvo": {
60805                     "count": 96
60806                 },
60807                 "Ford": {
60808                     "count": 239
60809                 },
60810                 "Volkswagen": {
60811                     "count": 217
60812                 },
60813                 "Mazda": {
60814                     "count": 105
60815                 },
60816                 "Mitsubishi": {
60817                     "count": 73
60818                 },
60819                 "Fiat": {
60820                     "count": 93
60821                 },
60822                 "Автозапчасти": {
60823                     "count": 277
60824                 },
60825                 "Opel": {
60826                     "count": 165
60827                 },
60828                 "Audi": {
60829                     "count": 121
60830                 },
60831                 "Toyota": {
60832                     "count": 271
60833                 },
60834                 "Nissan": {
60835                     "count": 189
60836                 },
60837                 "Suzuki": {
60838                     "count": 75
60839                 },
60840                 "Honda": {
60841                     "count": 157
60842                 },
60843                 "Peugeot": {
60844                     "count": 308
60845                 },
60846                 "Шиномонтаж": {
60847                     "count": 259
60848                 },
60849                 "Hyundai": {
60850                     "count": 166
60851                 },
60852                 "Subaru": {
60853                     "count": 58
60854                 },
60855                 "Chevrolet": {
60856                     "count": 86
60857                 },
60858                 "Автомагазин": {
60859                     "count": 72
60860                 }
60861             },
60862             "clothes": {
60863                 "Matalan": {
60864                     "count": 90
60865                 },
60866                 "KiK": {
60867                     "count": 1219
60868                 },
60869                 "H&M": {
60870                     "count": 658
60871                 },
60872                 "Urban Outfitters": {
60873                     "count": 63
60874                 },
60875                 "Vögele": {
60876                     "count": 132
60877                 },
60878                 "Zeeman": {
60879                     "count": 121
60880                 },
60881                 "Takko": {
60882                     "count": 515
60883                 },
60884                 "Adler": {
60885                     "count": 55
60886                 },
60887                 "C&A": {
60888                     "count": 506
60889                 },
60890                 "Zara": {
60891                     "count": 217
60892                 },
60893                 "Vero Moda": {
60894                     "count": 95
60895                 },
60896                 "NKD": {
60897                     "count": 486
60898                 },
60899                 "Ernsting's family": {
60900                     "count": 312
60901                 },
60902                 "Winners": {
60903                     "count": 65
60904                 },
60905                 "River Island": {
60906                     "count": 59
60907                 },
60908                 "Next": {
60909                     "count": 176
60910                 },
60911                 "Gap": {
60912                     "count": 81
60913                 },
60914                 "Adidas": {
60915                     "count": 92
60916                 },
60917                 "Woolworths": {
60918                     "count": 117
60919                 },
60920                 "Mr Price": {
60921                     "count": 88
60922                 },
60923                 "Jet": {
60924                     "count": 61
60925                 },
60926                 "Pep": {
60927                     "count": 134
60928                 },
60929                 "Edgars": {
60930                     "count": 110
60931                 },
60932                 "Ackermans": {
60933                     "count": 91
60934                 },
60935                 "Truworths": {
60936                     "count": 65
60937                 },
60938                 "Ross": {
60939                     "count": 93
60940                 },
60941                 "Burton": {
60942                     "count": 51
60943                 },
60944                 "Dorothy Perkins": {
60945                     "count": 53
60946                 },
60947                 "Deichmann": {
60948                     "count": 61
60949                 },
60950                 "Lindex": {
60951                     "count": 73
60952                 },
60953                 "s.Oliver": {
60954                     "count": 56
60955                 },
60956                 "Cecil": {
60957                     "count": 51
60958                 },
60959                 "Dress Barn": {
60960                     "count": 52
60961                 },
60962                 "Old Navy": {
60963                     "count": 174
60964                 },
60965                 "Jack & Jones": {
60966                     "count": 52
60967                 },
60968                 "Pimkie": {
60969                     "count": 73
60970                 },
60971                 "Esprit": {
60972                     "count": 231
60973                 },
60974                 "Primark": {
60975                     "count": 92
60976                 },
60977                 "Bonita": {
60978                     "count": 155
60979                 },
60980                 "Mexx": {
60981                     "count": 67
60982                 },
60983                 "Gerry Weber": {
60984                     "count": 71
60985                 },
60986                 "Tally Weijl": {
60987                     "count": 70
60988                 },
60989                 "Mango": {
60990                     "count": 133
60991                 },
60992                 "TK Maxx": {
60993                     "count": 84
60994                 },
60995                 "Benetton": {
60996                     "count": 101
60997                 },
60998                 "Ulla Popken": {
60999                     "count": 61
61000                 },
61001                 "AWG": {
61002                     "count": 66
61003                 },
61004                 "Tommy Hilfiger": {
61005                     "count": 75
61006                 },
61007                 "New Yorker": {
61008                     "count": 180
61009                 },
61010                 "Orsay": {
61011                     "count": 73
61012                 },
61013                 "Jeans Fritz": {
61014                     "count": 51
61015                 },
61016                 "Charles Vögele": {
61017                     "count": 69
61018                 },
61019                 "New Look": {
61020                     "count": 126
61021                 },
61022                 "Lacoste": {
61023                     "count": 78
61024                 },
61025                 "Etam": {
61026                     "count": 53
61027                 },
61028                 "Kiabi": {
61029                     "count": 148
61030                 },
61031                 "Jack Wolfskin": {
61032                     "count": 60
61033                 },
61034                 "American Apparel": {
61035                     "count": 57
61036                 },
61037                 "Men's Wearhouse": {
61038                     "count": 54
61039                 },
61040                 "Intimissimi": {
61041                     "count": 52
61042                 },
61043                 "United Colors of Benetton": {
61044                     "count": 96
61045                 },
61046                 "Jules": {
61047                     "count": 63
61048                 },
61049                 "Second Hand": {
61050                     "count": 53
61051                 },
61052                 "AOKI": {
61053                     "count": 57
61054                 },
61055                 "Calzedonia": {
61056                     "count": 68
61057                 },
61058                 "洋服の青山": {
61059                     "count": 100
61060                 },
61061                 "Levi's": {
61062                     "count": 63
61063                 },
61064                 "Celio": {
61065                     "count": 74
61066                 },
61067                 "TJ Maxx": {
61068                     "count": 57
61069                 },
61070                 "Promod": {
61071                     "count": 82
61072                 },
61073                 "Street One": {
61074                     "count": 72
61075                 },
61076                 "ユニクロ": {
61077                     "count": 59
61078                 },
61079                 "Banana Republic": {
61080                     "count": 57
61081                 },
61082                 "Одежда": {
61083                     "count": 75
61084                 },
61085                 "Marshalls": {
61086                     "count": 56
61087                 },
61088                 "La Halle": {
61089                     "count": 62
61090                 },
61091                 "Peacocks": {
61092                     "count": 89
61093                 },
61094                 "しまむら": {
61095                     "count": 60
61096                 }
61097             },
61098             "books": {
61099                 "Bruna": {
61100                     "count": 58
61101                 },
61102                 "Waterstones": {
61103                     "count": 90
61104                 },
61105                 "Libro": {
61106                     "count": 57
61107                 },
61108                 "Barnes & Noble": {
61109                     "count": 267
61110                 },
61111                 "Weltbild": {
61112                     "count": 74
61113                 },
61114                 "Thalia": {
61115                     "count": 121
61116                 },
61117                 "Книги": {
61118                     "count": 112
61119                 }
61120             },
61121             "department_store": {
61122                 "Debenhams": {
61123                     "count": 67
61124                 },
61125                 "Canadian Tire": {
61126                     "count": 75
61127                 },
61128                 "Karstadt": {
61129                     "count": 64
61130                 },
61131                 "Walmart": {
61132                     "count": 517
61133                 },
61134                 "Kmart": {
61135                     "count": 143
61136                 },
61137                 "Target": {
61138                     "count": 574
61139                 },
61140                 "Galeria Kaufhof": {
61141                     "count": 61
61142                 },
61143                 "Marks & Spencer": {
61144                     "count": 66
61145                 },
61146                 "Big W": {
61147                     "count": 57
61148                 },
61149                 "Woolworth": {
61150                     "count": 78
61151                 },
61152                 "Универмаг": {
61153                     "count": 72
61154                 },
61155                 "Sears": {
61156                     "count": 235
61157                 },
61158                 "Walmart Supercenter": {
61159                     "count": 101
61160                 },
61161                 "Kohl's": {
61162                     "count": 153
61163                 },
61164                 "Macy's": {
61165                     "count": 147
61166                 },
61167                 "Sam's Club": {
61168                     "count": 54
61169                 },
61170                 "JCPenney": {
61171                     "count": 66
61172                 }
61173             },
61174             "alcohol": {
61175                 "Alko": {
61176                     "count": 145
61177                 },
61178                 "The Beer Store": {
61179                     "count": 150
61180                 },
61181                 "Systembolaget": {
61182                     "count": 210
61183                 },
61184                 "LCBO": {
61185                     "count": 239
61186                 },
61187                 "Ароматный мир": {
61188                     "count": 62
61189                 },
61190                 "Bargain Booze": {
61191                     "count": 62
61192                 },
61193                 "Nicolas": {
61194                     "count": 119
61195                 },
61196                 "BWS": {
61197                     "count": 70
61198                 },
61199                 "Botilleria": {
61200                     "count": 77
61201                 },
61202                 "SAQ": {
61203                     "count": 72
61204                 },
61205                 "Gall & Gall": {
61206                     "count": 512
61207                 },
61208                 "Живое пиво": {
61209                     "count": 70
61210                 }
61211             },
61212             "bakery": {
61213                 "Kamps": {
61214                     "count": 252
61215                 },
61216                 "Banette": {
61217                     "count": 52
61218                 },
61219                 "Bäckerei Schmidt": {
61220                     "count": 57
61221                 },
61222                 "Anker": {
61223                     "count": 73
61224                 },
61225                 "Hofpfisterei": {
61226                     "count": 111
61227                 },
61228                 "Greggs": {
61229                     "count": 276
61230                 },
61231                 "Oebel": {
61232                     "count": 57
61233                 },
61234                 "Boulangerie": {
61235                     "count": 266
61236                 },
61237                 "Stadtbäckerei": {
61238                     "count": 57
61239                 },
61240                 "Steinecke": {
61241                     "count": 145
61242                 },
61243                 "Ihle": {
61244                     "count": 76
61245                 },
61246                 "Goldilocks": {
61247                     "count": 59
61248                 },
61249                 "Dat Backhus": {
61250                     "count": 67
61251                 },
61252                 "K&U": {
61253                     "count": 61
61254                 },
61255                 "Der Beck": {
61256                     "count": 96
61257                 },
61258                 "Thürmann": {
61259                     "count": 54
61260                 },
61261                 "Backwerk": {
61262                     "count": 95
61263                 },
61264                 "Schäfer's": {
61265                     "count": 51
61266                 },
61267                 "Panaderia": {
61268                     "count": 168
61269                 },
61270                 "Goeken backen": {
61271                     "count": 51
61272                 },
61273                 "Stadtbäckerei Junge": {
61274                     "count": 51
61275                 },
61276                 "Boulangerie Patisserie": {
61277                     "count": 119
61278                 },
61279                 "Paul": {
61280                     "count": 81
61281                 },
61282                 "Хлеб": {
61283                     "count": 89
61284                 },
61285                 "Пекарня": {
61286                     "count": 52
61287                 },
61288                 "Кулиничи": {
61289                     "count": 51
61290                 }
61291             },
61292             "sports": {
61293                 "Sports Direct": {
61294                     "count": 57
61295                 },
61296                 "Decathlon": {
61297                     "count": 309
61298                 },
61299                 "Intersport": {
61300                     "count": 283
61301                 },
61302                 "Sports Authority": {
61303                     "count": 75
61304                 },
61305                 "Спортмастер": {
61306                     "count": 87
61307                 },
61308                 "Sport 2000": {
61309                     "count": 90
61310                 },
61311                 "Dick's Sporting Goods": {
61312                     "count": 77
61313                 }
61314             },
61315             "variety_store": {
61316                 "Tedi": {
61317                     "count": 157
61318                 },
61319                 "Dollarama": {
61320                     "count": 103
61321                 },
61322                 "Family Dollar": {
61323                     "count": 61
61324                 },
61325                 "Dollar Tree": {
61326                     "count": 110
61327                 },
61328                 "Dollar General": {
61329                     "count": 80
61330                 }
61331             },
61332             "pet": {
61333                 "Fressnapf": {
61334                     "count": 318
61335                 },
61336                 "PetSmart": {
61337                     "count": 177
61338                 },
61339                 "Das Futterhaus": {
61340                     "count": 69
61341                 },
61342                 "Pets at Home": {
61343                     "count": 62
61344                 },
61345                 "Petco": {
61346                     "count": 101
61347                 },
61348                 "Зоомагазин": {
61349                     "count": 100
61350                 }
61351             },
61352             "shoes": {
61353                 "Deichmann": {
61354                     "count": 622
61355                 },
61356                 "Reno": {
61357                     "count": 183
61358                 },
61359                 "Ecco": {
61360                     "count": 55
61361                 },
61362                 "Clarks": {
61363                     "count": 109
61364                 },
61365                 "La Halle aux Chaussures": {
61366                     "count": 69
61367                 },
61368                 "Brantano": {
61369                     "count": 71
61370                 },
61371                 "Geox": {
61372                     "count": 51
61373                 },
61374                 "Salamander": {
61375                     "count": 51
61376                 },
61377                 "Обувь": {
61378                     "count": 100
61379                 },
61380                 "Payless Shoe Source": {
61381                     "count": 67
61382                 },
61383                 "Famous Footwear": {
61384                     "count": 59
61385                 },
61386                 "Quick Schuh": {
61387                     "count": 72
61388                 },
61389                 "Shoe Zone": {
61390                     "count": 55
61391                 },
61392                 "Foot Locker": {
61393                     "count": 82
61394                 },
61395                 "Bata": {
61396                     "count": 101
61397                 },
61398                 "ЦентрОбувь": {
61399                     "count": 51
61400                 }
61401             },
61402             "toys": {
61403                 "La Grande Récré": {
61404                     "count": 56
61405                 },
61406                 "Toys R Us": {
61407                     "count": 151,
61408                     "tags": {
61409                         "shop": "toys"
61410                     }
61411                 },
61412                 "Intertoys": {
61413                     "count": 57
61414                 },
61415                 "Детский мир": {
61416                     "count": 86
61417                 },
61418                 "Игрушки": {
61419                     "count": 58
61420                 }
61421             },
61422             "travel_agency": {
61423                 "Flight Centre": {
61424                     "count": 92
61425                 },
61426                 "Thomas Cook": {
61427                     "count": 119
61428                 }
61429             },
61430             "jewelry": {
61431                 "Bijou Brigitte": {
61432                     "count": 57
61433                 },
61434                 "Christ": {
61435                     "count": 57
61436                 },
61437                 "Swarovski": {
61438                     "count": 74
61439                 }
61440             },
61441             "optician": {
61442                 "Fielmann": {
61443                     "count": 232
61444                 },
61445                 "Apollo Optik": {
61446                     "count": 150
61447                 },
61448                 "Vision Express": {
61449                     "count": 58
61450                 },
61451                 "Оптика": {
61452                     "count": 182
61453                 },
61454                 "Optic 2000": {
61455                     "count": 98
61456                 },
61457                 "Alain Afflelou": {
61458                     "count": 73
61459                 },
61460                 "Specsavers": {
61461                     "count": 124
61462                 },
61463                 "Krys": {
61464                     "count": 77
61465                 },
61466                 "Atol": {
61467                     "count": 55
61468                 }
61469             },
61470             "video": {
61471                 "Blockbuster": {
61472                     "count": 184
61473                 },
61474                 "World of Video": {
61475                     "count": 64
61476                 }
61477             },
61478             "mobile_phone": {
61479                 "Билайн": {
61480                     "count": 128
61481                 },
61482                 "ソフトバンクショップ (SoftBank shop)": {
61483                     "count": 255
61484                 },
61485                 "Vodafone": {
61486                     "count": 355
61487                 },
61488                 "O2": {
61489                     "count": 208
61490                 },
61491                 "Carphone Warehouse": {
61492                     "count": 127
61493                 },
61494                 "Orange": {
61495                     "count": 246
61496                 },
61497                 "Verizon Wireless": {
61498                     "count": 125
61499                 },
61500                 "Sprint": {
61501                     "count": 109
61502                 },
61503                 "T-Mobile": {
61504                     "count": 175
61505                 },
61506                 "МТС": {
61507                     "count": 352
61508                 },
61509                 "Евросеть": {
61510                     "count": 506
61511                 },
61512                 "Bell": {
61513                     "count": 190
61514                 },
61515                 "The Phone House": {
61516                     "count": 83
61517                 },
61518                 "SFR": {
61519                     "count": 71
61520                 },
61521                 "Связной": {
61522                     "count": 439
61523                 },
61524                 "Мегафон": {
61525                     "count": 251
61526                 },
61527                 "AT&T": {
61528                     "count": 124
61529                 },
61530                 "ドコモショップ (docomo shop)": {
61531                     "count": 114
61532                 },
61533                 "au": {
61534                     "count": 65
61535                 },
61536                 "Movistar": {
61537                     "count": 77
61538                 },
61539                 "Bitė": {
61540                     "count": 72
61541                 }
61542             },
61543             "hifi": {},
61544             "computer": {
61545                 "PC World": {
61546                     "count": 55
61547                 },
61548                 "DNS": {
61549                     "count": 128
61550                 }
61551             },
61552             "hairdresser": {
61553                 "Klier": {
61554                     "count": 119
61555                 },
61556                 "Supercuts": {
61557                     "count": 106
61558                 },
61559                 "Hairkiller": {
61560                     "count": 51
61561                 },
61562                 "Great Clips": {
61563                     "count": 182
61564                 },
61565                 "Парикмахерская": {
61566                     "count": 510
61567                 },
61568                 "Стиль": {
61569                     "count": 51
61570                 },
61571                 "Franck Provost": {
61572                     "count": 70
61573                 },
61574                 "Салон красоты": {
61575                     "count": 70
61576                 }
61577             },
61578             "hardware": {
61579                 "1000 мелочей": {
61580                     "count": 61
61581                 },
61582                 "Хозтовары": {
61583                     "count": 151
61584                 },
61585                 "Стройматериалы": {
61586                     "count": 54
61587                 }
61588             },
61589             "motorcycle": {
61590                 "Yamaha": {
61591                     "count": 67
61592                 },
61593                 "Honda": {
61594                     "count": 69
61595                 }
61596             }
61597         }
61598     },
61599     "addressFormats": [
61600         {
61601             "format": [
61602                 [
61603                     "housenumber",
61604                     "street"
61605                 ],
61606                 [
61607                     "city",
61608                     "postcode"
61609                 ]
61610             ]
61611         },
61612         {
61613             "countryCodes": [
61614                 "gb"
61615             ],
61616             "format": [
61617                 [
61618                     "housename"
61619                 ],
61620                 [
61621                     "housenumber",
61622                     "street"
61623                 ],
61624                 [
61625                     "city",
61626                     "postcode"
61627                 ]
61628             ]
61629         },
61630         {
61631             "countryCodes": [
61632                 "ie"
61633             ],
61634             "format": [
61635                 [
61636                     "housename"
61637                 ],
61638                 [
61639                     "housenumber",
61640                     "street"
61641                 ],
61642                 [
61643                     "city"
61644                 ],
61645                 [
61646                     "postcode"
61647                 ]
61648             ]
61649         },
61650         {
61651             "countryCodes": [
61652                 "ad",
61653                 "at",
61654                 "ba",
61655                 "be",
61656                 "ch",
61657                 "cz",
61658                 "de",
61659                 "dk",
61660                 "es",
61661                 "fi",
61662                 "gr",
61663                 "hr",
61664                 "is",
61665                 "it",
61666                 "li",
61667                 "nl",
61668                 "no",
61669                 "pl",
61670                 "pt",
61671                 "se",
61672                 "si",
61673                 "sk",
61674                 "sm",
61675                 "va"
61676             ],
61677             "format": [
61678                 [
61679                     "street",
61680                     "housenumber"
61681                 ],
61682                 [
61683                     "postcode",
61684                     "city"
61685                 ]
61686             ]
61687         },
61688         {
61689             "countryCodes": [
61690                 "fr",
61691                 "lu",
61692                 "mo"
61693             ],
61694             "format": [
61695                 [
61696                     "housenumber",
61697                     "street"
61698                 ],
61699                 [
61700                     "postcode",
61701                     "city"
61702                 ]
61703             ]
61704         },
61705         {
61706             "countryCodes": [
61707                 "br"
61708             ],
61709             "format": [
61710                 [
61711                     "street"
61712                 ],
61713                 [
61714                     "housenumber",
61715                     "suburb"
61716                 ],
61717                 [
61718                     "city",
61719                     "postcode"
61720                 ]
61721             ]
61722         },
61723         {
61724             "countryCodes": [
61725                 "vn"
61726             ],
61727             "format": [
61728                 [
61729                     "housenumber",
61730                     "street"
61731                 ],
61732                 [
61733                     "subdistrict"
61734                 ],
61735                 [
61736                     "district"
61737                 ],
61738                 [
61739                     "city"
61740                 ],
61741                 [
61742                     "province",
61743                     "postcode"
61744                 ]
61745             ]
61746         },
61747         {
61748             "countryCodes": [
61749                 "us"
61750             ],
61751             "format": [
61752                 [
61753                     "housenumber",
61754                     "street"
61755                 ],
61756                 [
61757                     "city",
61758                     "state",
61759                     "postcode"
61760                 ]
61761             ]
61762         },
61763         {
61764             "countryCodes": [
61765                 "ca"
61766             ],
61767             "format": [
61768                 [
61769                     "housenumber",
61770                     "street"
61771                 ],
61772                 [
61773                     "city",
61774                     "province",
61775                     "postcode"
61776                 ]
61777             ]
61778         }
61779     ]
61780 };