(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){continue}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==="/";path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.isAbsolute=function(path){return path.charAt(0)==="/"};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=="string"){throw new TypeError("Arguments to path.join must be strings")}return p}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){for(var i=1;i= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,key;function error(type){throw new RangeError(errors[type])}function map(array,fn){var length=array.length;var result=[];while(length--){result[length]=fn(array[length])}return result}function mapDomain(string,fn){var parts=string.split("@");var result="";if(parts.length>1){result=parts[0]+"@";string=parts[1]}string=string.replace(regexSeparators,".");var labels=string.split(".");var encoded=map(labels,fn).join(".");return result+encoded}function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter=55296&&value<=56319&&counter65535){value-=65536;output+=stringFromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=stringFromCharCode(value);return output}).join("")}function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)}function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,baseMinusT;basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(j=0;j=128){error("not-basic")}output.push(input.charCodeAt(j))}for(index=basic>0?basic+1:0;index=inputLength){error("invalid-input")}digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error("overflow")}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digitfloor(maxInt/baseMinusT)){error("overflow")}w*=baseMinusT}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],inputLength,handledCPCountPlusOne,baseMinusT,qMinusT;input=ucs2decode(input);inputLength=input.length;n=initialN;delta=0;bias=initialBias;for(j=0;j=n&¤tValuefloor((maxInt-delta)/handledCPCountPlusOne)){error("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;jmaxInt){error("overflow")}if(currentValue==n){for(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q0&&len>maxKeys){len=maxKeys}for(var i=0;i=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1)}else{kstr=x;vstr=""}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v}else if(isArray(obj[k])){obj[k].push(v)}else{obj[k]=[obj[k],v]}}return obj};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"}},{}],5:[function(require,module,exports){"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};module.exports=function(obj,sep,eq,name){sep=sep||"&";eq=eq||"=";if(obj===null){obj=undefined}if(typeof obj==="object"){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep)}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]))}}).join(sep)}if(!name)return"";return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj))};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i",'"',"`"," ","\r","\n","\t"],unwise=["{","}","|","\\","^","`"].concat(delims),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnameMaxLen=255,hostnamePartPattern=/^[+a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:true,"javascript:":true},hostlessProtocol={javascript:true,"javascript:":true},slashedProtocol={http:true,https:true,ftp:true,gopher:true,file:true,"http:":true,"https:":true,"ftp:":true,"gopher:":true,"file:":true},querystring=require("querystring");function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&util.isObject(url)&&url instanceof Url)return url;var u=new Url;u.parse(url,parseQueryString,slashesDenoteHost);return u}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!util.isString(url)){throw new TypeError("Parameter 'url' must be a string, not "+typeof url)}var queryIndex=url.indexOf("?"),splitter=queryIndex!==-1&&queryIndex127){newpart+="x"}else{newpart+=part[j]}}if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i);var notHost=hostparts.slice(i+1);var bit=part.match(hostnamePartStart);if(bit){validParts.push(bit[1]);notHost.unshift(bit[2])}if(notHost.length){rest="/"+notHost.join(".")+rest}this.hostname=validParts.join(".");break}}}}if(this.hostname.length>hostnameMaxLen){this.hostname=""}else{this.hostname=this.hostname.toLowerCase()}if(!ipv6Hostname){this.hostname=punycode.toASCII(this.hostname)}var p=this.port?":"+this.port:"";var h=this.hostname||"";this.host=h+p;this.href+=this.host;if(ipv6Hostname){this.hostname=this.hostname.substr(1,this.hostname.length-2);if(rest[0]!=="/"){rest="/"+rest}}}if(!unsafeProtocol[lowerProto]){for(var i=0,l=autoEscape.length;i0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}result.search=relative.search;result.query=relative.query;if(!util.isNull(result.pathname)||!util.isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.href=result.format();return result}if(!srcPath.length){result.pathname=null;if(result.search){result.path="/"+result.search}else{result.path=null}result.href=result.format();return result}var last=srcPath.slice(-1)[0];var hasTrailingSlash=(result.host||relative.host||srcPath.length>1)&&(last==="."||last==="..")||last==="";var up=0;for(var i=srcPath.length;i>=0;i--){last=srcPath[i];if(last==="."){srcPath.splice(i,1)}else if(last===".."){srcPath.splice(i,1);up++}else if(up){srcPath.splice(i,1);up--}}if(!mustEndAbs&&!removeAllDots){for(;up--;up){srcPath.unshift("..")}}if(mustEndAbs&&srcPath[0]!==""&&(!srcPath[0]||srcPath[0].charAt(0)!=="/")){srcPath.unshift("")}if(hasTrailingSlash&&srcPath.join("/").substr(-1)!=="/"){srcPath.push("")}var isAbsolute=srcPath[0]===""||srcPath[0]&&srcPath[0].charAt(0)==="/";if(psychotic){result.hostname=result.host=isAbsolute?"":srcPath.length?srcPath.shift():"";var authInHost=result.host&&result.host.indexOf("@")>0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift("")}if(!srcPath.length){result.pathname=null;result.path=null}else{result.pathname=srcPath.join("/")}if(!util.isNull(result.pathname)||!util.isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==":"){this.port=port.substr(1)}host=host.substr(0,host.length-port.length)}if(host)this.hostname=host}},{"./util":8,punycode:3,querystring:6}],8:[function(require,module,exports){"use strict";module.exports={isString:function(arg){return typeof arg==="string"},isObject:function(arg){return typeof arg==="object"&&arg!==null},isNull:function(arg){return arg===null},isNullOrUndefined:function(arg){return arg==null}}},{}],9:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],10:[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],11:[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i=len)return x;switch(x){case"%s":return String(args[i++]);case"%d":return Number(args[i++]);case"%j":try{return JSON.stringify(args[i++])}catch(_){return"[Circular]"}default:return x}});for(var x=args[i];i=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":10,_process:2,inherits:9}],12:[function(require,module,exports){module.exports={type:"Topology",objects:{0:{name:"mapbox-gl-extrude",type:"GeometryCollection",properties:{"pop-colorbar":[[0,"#440154"],[2e4,"#472c7a"],[4e4,"#3c508b"],[6e4,"#2d708e"],[8e4,"#228d8d"],[1e5,"#24aa83"],[12e4,"#52c569"],[14e4,"#9bd93c"],[16e4,"#ece51b"]],"density-colorbar":[[0,"#440154"],[2e3,"#453882"],[4e3,"#31668e"],[6e3,"#228d8d"],[8e3,"#2fb47c"],[1e4,"#81d34d"],[12e3,"#efe51c"]]},geometries:[{type:"Polygon",properties:{name:"Ahuntsic-Cartierville",pop:126891,density:4961.868225779869,centroid:[-73.67415923134685,45.55963677315867],"pop-color":"#67cc5c","pop-z":7688.919051572128,"density-color":"#29798e","density-z":4029.396391825679},arcs:[[0,1,2,3,4,5]]},{type:"Polygon",properties:{name:"Anjou",pop:41928,density:3020.9381263873756,centroid:[-73.55647396467437,45.60958367032752],"pop-color":"#3a538b","pop-z":2540.6135816907126,"density-color":"#3c508b","density-z":2453.2205678397936},arcs:[[6,7,8,9,10]]},{type:"Polygon",properties:{name:"Côte-des-Neiges-Notre-Dame-de-Grâce",pop:165031,density:7680.930451318207,centroid:[-73.64007655497313,45.476771421416295],"pop-color":"#fde725","pop-z":1e4,"density-color":"#27ad81","density-z":6237.471863038273},arcs:[[11,12,13,14,15,16,17,18,19,20,21,22,23]]},{type:"Polygon",properties:{name:"Lachine",pop:41616,density:1799.2148205203657,centroid:[-73.6955454776235,45.45306637317464],"pop-color":"#3b528b","pop-z":2521.7080427313654,"density-color":"#46337f","density-z":1461.092752979063},arcs:[[24,25,26,27,28,29,30]]},{type:"Polygon",properties:{name:"LaSalle",pop:74276,density:2947.5365660003063,centroid:[-73.61886810236031,45.43205464417021],"pop-color":"#25848e","pop-z":4500.730165847628,"density-color":"#3c4f8a","density-z":2393.6131842657273},arcs:[[31,32,33,-26]]},{type:"Polygon",properties:{name:"Le Plateau-Mont-Royal",pop:100390,density:12314.172504462129,centroid:[-73.58361190449193,45.52664159364899],"pop-color":"#24aa83","pop-z":6083.099538874515,"density-color":"#fde725","density-z":1e4},arcs:[[34,35,36]]},{type:"Polygon",properties:{name:"Le Sud-Ouest",pop:71546,density:3942.7900999632357,centroid:[-73.58038491349677,45.46962235796394],"pop-color":"#27808e","pop-z":4335.306699953342,"density-color":"#32648e","density-z":3201.8311409349976},arcs:[[-34,37,38,39,40,-20,41,-27]]},{type:"Polygon",properties:{name:"L'Île-Bizard-Sainte-Geneviève",pop:18097,density:495.3315372656391,centroid:[-73.88789291671509,45.489647191742904],"pop-color":"#482878","pop-z":1096.5818543182795,"density-color":"#471063","density-z":402.2450855598719},arcs:[[42,43]]},{type:"Polygon",properties:{name:"Mercier-Hochelaga-Maisonneuve",pop:131483,density:4796.779850341198,centroid:[-73.53674770196567,45.586021701022915],"pop-color":"#77d153","pop-z":7967.169804460979,"density-color":"#2b758e","density-z":3895.3326734728216},arcs:[[44,-9,45,46,47,48]]},{type:"Polygon",properties:{name:"Montréal-Nord",pop:83868,density:6746.590233316801,centroid:[-73.63624252189464,45.595252376001994],"pop-color":"#20928c","pop-z":5081.954299495246,"density-color":"#1e9c89","density-z":5478.719930934965},arcs:[[-5,49,50,-7,51,52]]},{type:"Polygon",properties:{name:"Outremont",pop:23566,density:6179.33780397759,centroid:[-73.60778314528575,45.514137583566054],"pop-color":"#46327e","pop-z":1427.9741381922183,"density-color":"#21918c","density-z":5018.069871717699},arcs:[[53,-23,54,-36,55,56]]},{type:"Polygon",properties:{name:"Pierrefonds-Roxboro",pop:68410,density:2025.850885626828,centroid:[-73.85546306595447,45.48018296248366],"pop-color":"#287c8e","pop-z":4145.281795541444,"density-color":"#443983","density-z":1645.1376532956206},arcs:[[57,58,59,60,61,-1,62,-43]]},{type:"Polygon",properties:{name:"Rivière-des-Prairies-Pointe-aux-Trembles",pop:106437,density:2126.6193839015446,centroid:[-73.51819795680828,45.655445996580596],"pop-color":"#2eb37c","pop-z":6449.515545564167,"density-color":"#443b84","density-z":1726.9689726459076},arcs:[[-52,-11,63,64]]},{type:"Polygon",properties:{name:"Rosemont-La Petite-Patrie",pop:134038,density:8436.533947804195,centroid:[-73.5824434131883,45.55486910744227],"pop-color":"#81d34d","pop-z":8121.98920202871,"density-color":"#3dbc74","density-z":6851.076631212659},arcs:[[65,-56,-35,-47,66]]},{type:"Polygon",properties:{name:"Saint-Laurent",pop:93842,density:2178.233263512947,centroid:[-73.72562447452381,45.498049709026134],"pop-color":"#1fa188","pop-z":5686.325599432835,"density-color":"#433d84","density-z":1768.8831813291947},arcs:[[67,68,-30,69,70,-2,-62]]},{type:"Polygon",properties:{name:"Saint-Léonard",pop:75707,density:5586.6107679599045,centroid:[-73.58617470468465,45.585977718886404],"pop-color":"#24868e","pop-z":4587.441147420787,"density-color":"#25858e","density-z":4536.732586729279},arcs:[[71,-67,-46,-8,-51]]},{type:"Polygon",properties:{name:"Verdun",pop:66158,density:2962.520872964788,centroid:[-73.56316142205539,45.46236208307733],"pop-color":"#2a788e","pop-z":4008.8225848476955,"density-color":"#3c4f8a","density-z":2405.7815268474574},arcs:[[72,-38,-33]]},{type:"Polygon",properties:{name:"Ville-Marie",pop:84013,density:3907.190869457255,centroid:[-73.57491334988144,45.50596260845277],"pop-color":"#20928c","pop-z":5090.740527537251,"density-color":"#32648e","density-z":3172.921987280474},arcs:[[-48,-37,-55,-22,73,-40,74]]},{type:"Polygon",properties:{name:"Villeray-Saint-Michel-Parc-Extension",pop:142222,density:8630.670660703216,centroid:[-73.62193788393165,45.55450956747774],"pop-color":"#a2da37","pop-z":8617.89603165466,"density-color":"#44bf70","density-z":7008.729703580026},arcs:[[-4,75,-57,-66,-72,-50]]},{type:"Polygon",properties:{name:"Baie-d'Urfé",pop:3850,density:479.6584640206323,centroid:[-73.91405140299823,45.412354483351244],"pop-color":"#46085c","pop-z":233.28950318425024,"density-color":"#470e61","density-z":389.5174148704061},arcs:[[76,77,78]]},{type:"Polygon",properties:{name:"Beaconsfield",pop:19505,density:782.5770450710299,centroid:[-73.869979000846,45.428304831750324],"pop-color":"#472a7a","pop-z":1181.8991583399481,"density-color":"#48186a","density-z":635.5092433433571},arcs:[[79,80,81,82,-77]]},{type:"MultiPolygon",properties:{name:"Côte-Saint-Luc",pop:32321,density:4745.513787351189,centroid:[-73.65871115809352,45.464768202202315],"pop-color":"#414287","pop-z":1958.4805279008185,"density-color":"#2b748e","density-z":3853.700917078771},arcs:[[[-70,-29,83,-18,84,-12]],[[85,-14]],[[-16,86]]]},{type:"Polygon",properties:{name:"Dollard-des-Ormeaux",pop:49637,density:3294.5250950053123,centroid:[-73.82648604559515,45.491166372667095],"pop-color":"#355f8d","pop-z":3007.7379401445787,"density-color":"#39568c","density-z":2675.393002503024},arcs:[[87,88,89,-68,-61]]},{type:"Polygon",properties:{name:"Dorval",pop:18208,density:646.609514942322,centroid:[-73.74256516976043,45.46082836949516],"pop-color":"#482878","pop-z":1103.3078633711243,"density-color":"#481467","density-z":525.0937606307028},arcs:[[90,91,-31,-69,-90],[92]]},{type:"Polygon",properties:{name:"Hampstead",pop:7153,density:4045.3142221597,centroid:[-73.64171257010618,45.4786896881529],"pop-color":"#471164","pop-z":433.43371851349144,"density-color":"#31678e","density-z":3285.0881540711334},arcs:[[-85,-17,-87,-15,-86,-13]]},{type:"Polygon",properties:{name:"Kirkland",pop:21253,density:2193.670660524318,centroid:[-73.87902237538324,45.45192779285516],"pop-color":"#472d7b","pop-z":1287.818652253213,"density-color":"#433d84","density-z":1781.4194658467109},arcs:[[-82,93,-88,-60,94]]},{type:"Polygon",properties:{name:"L'Île-Dorval",pop:5,density:27.6966687529606,centroid:[-73.74151473086185,45.43245852577515],"pop-color":"#440154","pop-z":.30297338075876656,"density-color":"#440154","density-z":22.491701121552843},arcs:[[-93]]},{type:"Polygon",properties:{name:"Montréal-Est",pop:3728,density:266.7637088083333,centroid:[-73.52664821591028,45.62797830459412],"pop-color":"#46085c","pop-z":225.89695269373635,"density-color":"#46085c","density-z":216.6314534831062},arcs:[[-64,-10,-45,95]]},{type:"Polygon",properties:{name:"Montréal-Ouest",pop:5085,density:3582.001695577735,centroid:[-73.65400506453325,45.45488117181161],"pop-color":"#460b5e","pop-z":308.12392823166556,"density-color":"#365d8d","density-z":2908.8448243515923},arcs:[[-28,-42,-19,-84]]},{type:"Polygon",properties:{name:"Mont-Royal",pop:19503,density:2619.180731521667,centroid:[-73.65776375653466,45.50438989954612],"pop-color":"#472a7a","pop-z":1181.7779689876447,"density-color":"#3f4788","density-z":2126.9644635663403},arcs:[[-71,-24,-54,-76,-3]]},{type:"Polygon",properties:{name:"Pointe-Claire",pop:30790,density:893.7539289105686,centroid:[-73.80229717088228,45.44457424544323],"pop-color":"#423f85","pop-z":1865.7100787124843,"density-color":"#481b6d","density-z":725.7929256608272},arcs:[[-81,96,-91,-89,-94]]},{type:"Polygon",properties:{name:"Sainte-Anne-de-Bellevue",pop:5073,density:454.9157491719321,centroid:[-73.92945251277767,45.42849890159742],"pop-color":"#460b5e","pop-z":307.39679211784454,"density-color":"#470e61","density-z":369.42453827659966},arcs:[[-78,-83,-95,-59,97,98]]},{type:"Polygon",properties:{name:"Senneville",pop:920,density:49.43388949103907,centroid:[-73.96587734935103,45.43364022100779],"pop-color":"#440256","pop-z":55.74710205961305,"density-color":"#440256","density-z":40.14389880694488},arcs:[[-98,-58,99]]},{type:"Polygon",properties:{name:"Westmount",pop:19931,density:4962.048690211099,centroid:[-73.59740453929449,45.48480473610579],"pop-color":"#472a7a","pop-z":1207.712490380595,"density-color":"#29798e","density-z":4029.542942015036},arcs:[[-21,-41,-74]]}]}},arcs:[[[-73.7636321275885,45.5119344933272],[-73.7612309506519,45.5104047165094],[-73.7611349153639,45.5103427559007],[-73.7551670016324,45.5064847747152],[-73.7550640438883,45.5065227142585]],[[-73.7550640438883,45.5065227142585],[-73.75205500101,45.5076217923965],[-73.7487010809923,45.508834818651],[-73.7479160370762,45.5091238826921],[-73.7401980887296,45.5119328561758],[-73.7350991302198,45.513785840003],[-73.7285011626726,45.5160866844387],[-73.7358992375735,45.5207279662727],[-73.7335791358777,45.5223699339036],[-73.7317670926602,45.5236728955001],[-73.7280651988295,45.5213507656331],[-73.7253480834467,45.5236707616028],[-73.7228480546355,45.5257777581423],[-73.7217051601094,45.5267448129993],[-73.7184940800218,45.5247427935226],[-73.7180881815427,45.5250657364208],[-73.7172921525596,45.5256957496755],[-73.7146471352446,45.5239867664037],[-73.7145582286775,45.5239307786904],[-73.7131142237409,45.5251598050071],[-73.7124052797546,45.5248747718855],[-73.7120052608426,45.5246927414453],[-73.7111132891695,45.5242227462703],[-73.7107852407182,45.5240277992522],[-73.7092593528495,45.5230447388544],[-73.7027882507738,45.5253738858166],[-73.70159921875,45.5258008543614],[-73.6990391606697,45.5267128447679],[-73.6982051687726,45.5270128932336],[-73.6951281514722,45.5280598695451],[-73.6938882218894,45.5283639275633],[-73.6926142206739,45.5285909080044],[-73.6916091271405,45.5287129390014],[-73.6903351442363,45.5287970057747],[-73.6890601568571,45.5288030355207],[-73.6880801391526,45.5287550998146],[-73.687082125088,45.5286601056346],[-73.6863731374072,45.5292350736983],[-73.6857030725034,45.529704135964],[-73.6851710908417,45.530131124246],[-73.6833001001956,45.5305671172463],[-73.6831171190403,45.5306081755598],[-73.6806030984421,45.5311841407141],[-73.6796871204911,45.5313901286163],[-73.6779741174318,45.5317860751287],[-73.6771030794354,45.5319820830237],[-73.6764130851363,45.5321250676708],[-73.6754170953927,45.5322511479678],[-73.6747560797402,45.5323071455381],[-73.6735201535736,45.5323251415563],[-73.6726120976454,45.532299071996],[-73.6716881123919,45.5322091243518],[-73.6709941458118,45.5321231426362],[-73.6703721242683,45.5320111324031],[-73.6698852271887,45.5318830782507],[-73.6688721548177,45.5315921045001],[-73.6653972113726,45.5305941172536],[-73.6553050268881,45.527667013906],[-73.6545840901521,45.5274640727694],[-73.6545450912508,45.5274130989125],[-73.6538981115597,45.5272240899945],[-73.6510260686543,45.5263880213419],[-73.6507508626002,45.526307356847]],[[-73.6507508626002,45.526307356847],[-73.6503609034947,45.5269752375581],[-73.6499925353766,45.5276040725009],[-73.6489075944103,45.5294635493114],[-73.6481900695937,45.5307189032401]],[[-73.6481900695937,45.5307189032401],[-73.6485460602073,45.5308259961571],[-73.6481519889812,45.5314029916612],[-73.6476840192056,45.532154034167],[-73.6465820665633,45.5338750084239],[-73.6456860340674,45.5352839811114],[-73.6445750706039,45.5369929835244],[-73.6428100414146,45.53972799897],[-73.6424291071358,45.5403229636646],[-73.6417201180962,45.5414229201372],[-73.6409111187669,45.5426690061778],[-73.6407200599337,45.5429700086082],[-73.6405361155058,45.5432449919816],[-73.6403841374698,45.5434630584198],[-73.640235098695,45.5436740119722],[-73.6401051683779,45.5438390440122],[-73.6398581134794,45.5441380427215],[-73.639092093523,45.5450270548791],[-73.6373581444485,45.5470351489519],[-73.6366981968622,45.5477931804644],[-73.6364111235183,45.5481141852534],[-73.6361041936503,45.5483942668237],[-73.6356551216059,45.5487372489939],[-73.6353301588158,45.5489452652027],[-73.6349071237386,45.5491803091316],[-73.6345621764619,45.5493383112249],[-73.6340401201237,45.5495593444689],[-73.6335852049138,45.5497193673362],[-73.6331651592782,45.54984037658],[-73.6329301367233,45.549894383538],[-73.6324192023658,45.5500004670166],[-73.6316141237934,45.5501324468769],[-73.6310751313493,45.5502124531807],[-73.6305082054078,45.5503194875295],[-73.6299691180916,45.5504505131903],[-73.6295421944851,45.5505715068935],[-73.6289972199514,45.5507594904274],[-73.6285032020809,45.5509615270265],[-73.6279842581879,45.5512124555464],[-73.62637030564,45.5520764364301],[-73.6240034059426,45.5533584277211],[-73.6227974728936,45.5540083924846],[-73.6219445490679,45.5545664425535],[-73.6240414507808,45.5555243904139],[-73.626243402559,45.5564753282985],[-73.6281222687352,45.5572943664098],[-73.6307432345542,45.5584283070036],[-73.6330432538957,45.5594313029232],[-73.6379311791654,45.561562227186],[-73.6426181420955,45.5636010776724],[-73.6446641310423,45.5644710444822],[-73.645366195089,45.5647650509692],[-73.6451721352376,45.5650700964055],[-73.6448991598805,45.5654650534882],[-73.644618196297,45.5658370714957],[-73.6443951091125,45.5661170447119],[-73.6439391845691,45.5666680922101],[-73.6423560704545,45.5685690157697],[-73.6379621579698,45.5738229101809],[-73.6367480877894,45.5752699289438],[-73.6362380591395,45.5758819553338],[-73.6363220615251,45.5759169506436],[-73.636516910282,45.5759962946569]],[[-73.636516910282,45.5759962946569],[-73.6369531219932,45.576173921453],[-73.6379681218961,45.576585921362],[-73.6396461754081,45.5772668814451],[-73.6400152208376,45.5774248071775],[-73.640241263009,45.5775388144658],[-73.6404991812588,45.5777198264996],[-73.6405212334128,45.5777048597193],[-73.6415202997503,45.5781088387766],[-73.6418182337917,45.5782297763134],[-73.6442372863102,45.5792088398087],[-73.6444592716443,45.5793017932738],[-73.6447562775423,45.5794257897121],[-73.6468943654411,45.580309862381],[-73.647192330628,45.5804338502934],[-73.6473953136524,45.5805318622046],[-73.6476903155312,45.5806538725617],[-73.6508074043189,45.5819558671893],[-73.6525574147144,45.5826878787088],[-73.6524713297819,45.5828649174387],[-73.6540893290933,45.5835387277216],[-73.6543033315624,45.5836305207479]],[[-73.6543033315624,45.5836305207479],[-73.6543294778833,45.5835797276423],[-73.654355032574,45.5835526982885],[-73.6544445361578,45.5834805905811],[-73.6545081610564,45.5833185379655],[-73.654635935742,45.5831833883307],[-73.6547633871501,45.5829312623281],[-73.6548142482233,45.5827872207102],[-73.6549159944654,45.5825081358577],[-73.6549285356425,45.5824091382417],[-73.6551072664008,45.5821658497436],[-73.6552218994538,45.581913833277],[-73.6552858467665,45.5818687543196],[-73.6554138906232,45.5818325853212],[-73.6555033167615,45.5817334821655],[-73.6555156822236,45.5815714978804],[-73.6555798285077,45.5815984041262],[-73.655643875025,45.5815893177566],[-73.6557718431188,45.5815261542721],[-73.6561939377884,45.5812465385548],[-73.6563220047785,45.581219367358],[-73.6565268065812,45.5811381921447],[-73.6566676873656,45.5811110029979],[-73.6569493227547,45.5810116340076],[-73.6571028661118,45.5809304384309],[-73.6576014055045,45.5804978394645],[-73.6580107208923,45.5802363277017],[-73.658151370736,45.5801281558293],[-73.658342844509,45.5798669467839],[-73.6583426922874,45.5798129588697],[-73.6583169376869,45.5797680047009],[-73.6582270122708,45.5796871473214],[-73.6582525132364,45.5796421217984],[-73.6583166840227,45.5796780248262],[-73.6583165318247,45.5796240369004],[-73.6583806770848,45.5796509410315],[-73.6584578392487,45.5797498106304],[-73.6584579915644,45.5798037985329],[-73.6584837462113,45.5798487523552],[-73.6585477901048,45.5798396641078],[-73.6586882087601,45.5796505078259],[-73.658841669336,45.579542315186],[-73.6589696545865,45.5794881464437],[-73.6590719099358,45.5793979310242],[-73.6590974101111,45.5793529049475],[-73.6590972320575,45.5792900100148],[-73.6590200949378,45.5792001388685],[-73.6590584088084,45.5791550945461],[-73.6591864441259,45.5791189210451],[-73.6594038435544,45.578965645045],[-73.6595318782071,45.5789294712036],[-73.6596854633412,45.5788662665799],[-73.6597366156972,45.5788302014837],[-73.6599026044623,45.5786230087251],[-73.6600427855742,45.5783528654602],[-73.6601578510567,45.5782627206111],[-73.6601830165969,45.5781007183184],[-73.6600287425999,45.5779209745506],[-73.6600542413868,45.5778759476454],[-73.6602078999277,45.5778397368758],[-73.6605149594859,45.5776773337476],[-73.6606428618674,45.5775961684212],[-73.6607322978613,45.5775059687764],[-73.6607704036089,45.5773890295979],[-73.6607824448711,45.577119068376],[-73.6606788072824,45.5767232979587],[-73.6606783183901,45.5765522431595],[-73.6607036619515,45.5764533184574],[-73.6606263977426,45.5763184563198],[-73.6606006944992,45.5762914984605],[-73.6606004117501,45.5761925193326],[-73.6606644512138,45.5761834301106],[-73.6607284134808,45.5761473465509],[-73.6608434475246,45.576048203288],[-73.6608815775316,45.5759401713509],[-73.6610731534435,45.5757239431321],[-73.6611368054195,45.5755798822329],[-73.6611751151138,45.5755348369316],[-73.6612512697442,45.5752827805718],[-73.6612124958302,45.5751658601408],[-73.6611739284537,45.5751209244628],[-73.6611719892425,45.5751023811728],[-73.6610386131075,45.5749741606116],[-73.661434532672,45.5750575756082],[-73.6613899892135,45.5751581105419],[-73.6615333262246,45.575188320402],[-73.6615778694467,45.57508778543],[-73.6621519552865,45.5752087756145],[-73.6621074130111,45.57530931074],[-73.6622507495194,45.5753395187446],[-73.6618276301212,45.5754986497863],[-73.6617773465007,45.5755429745622],[-73.661764714868,45.5756059795308],[-73.6617908586156,45.5757859046292],[-73.6617147834139,45.5760649554676],[-73.6617280365095,45.5762179046403],[-73.661702695148,45.5763169203145],[-73.6616138053892,45.5765958986137],[-73.6614991079157,45.5768121086886],[-73.6614355588382,45.5769921621582],[-73.6614357655659,45.5770641468883],[-73.6614615212659,45.5771091006826],[-73.661512929377,45.5771630158829],[-73.6616412430966,45.5772258190412],[-73.661654211631,45.5772797892159],[-73.6616031912997,45.5773608454307],[-73.6613991859893,45.5777120644303],[-73.6613742566696,45.5779550495476],[-73.6612977116615,45.578072134729],[-73.6609912446644,45.5784414052345],[-73.6608121640271,45.5785497293566],[-73.6606206544713,45.5787929521046],[-73.6606081493297,45.5789009475489],[-73.6606856228835,45.5791077941562],[-73.6606092030358,45.5792698678086],[-73.6603410119052,45.5795851795168],[-73.6601751241821,45.5798283614038],[-73.6600346070201,45.5799815271873],[-73.6599454472161,45.5801706118342],[-73.6598049796737,45.5803416825264],[-73.6596771214795,45.5804409330057],[-73.6595235580605,45.5805131349887],[-73.6593828593316,45.5806033145717],[-73.6590628657801,45.5807297399524],[-73.6587557359072,45.5808741424403],[-73.6584614949341,45.5810455201409],[-73.6579363930819,45.5811452332945],[-73.6575907884234,45.5812805947667],[-73.6575396580234,45.5813257471511],[-73.6574632773488,45.5815058148445],[-73.6572461907953,45.5817760594062],[-73.6571694307564,45.5818211566956],[-73.6571568934999,45.5819201530954],[-73.6569646025524,45.581893426433],[-73.6569134457266,45.5819294899697],[-73.6568879678834,45.5819835140042],[-73.6568497007454,45.5820465539403],[-73.6569137978591,45.5820554628789],[-73.6569523668334,45.5821003996964],[-73.6569015116263,45.5822444400809],[-73.6568890241247,45.5823614327799],[-73.6568124390015,45.582469516707],[-73.6568766120148,45.5825054196925],[-73.6569533983365,45.5824693202448],[-73.6570039767783,45.5822263011663],[-73.6570806115857,45.5821362134687],[-73.6571445577047,45.5820911339195],[-73.6572214441158,45.5820910267434],[-73.6572728277616,45.5821359454835],[-73.6573368998197,45.5821358560833],[-73.6577204474804,45.5818203882948],[-73.6588204421078,45.5810990012789],[-73.6590251621571,45.5809907355414],[-73.6592556626265,45.5809364210072],[-73.6594990278316,45.5809000837947],[-73.6594735783868,45.580963105918],[-73.6592815712606,45.5810353623172],[-73.659307326954,45.5810803158104],[-73.6595633790621,45.580998970414],[-73.6597040017154,45.5808817966589],[-73.6598959567618,45.5807915437512],[-73.6604209476117,45.5806558258484],[-73.6605360683747,45.5805836776446],[-73.660638041,45.5803945743921],[-73.6607146418764,45.5802953962879],[-73.660893651562,45.5801602615778],[-73.6610213017416,45.5799891174123],[-73.6611492345515,45.5799169504791],[-73.6611872897747,45.5797819263934],[-73.661442122197,45.5792776749359],[-73.6614548069665,45.5792326669106],[-73.6614290247432,45.5791787160501],[-73.6614288180828,45.5791067315754],[-73.6614924729997,45.5789626703497],[-73.6616586108524,45.5788094640052],[-73.6616968705801,45.578746422253],[-73.6618246959741,45.5786382613133],[-73.6618886603159,45.5786021769692],[-73.6619144171028,45.578647130571],[-73.6619784591882,45.5786380404269],[-73.6620039567163,45.5785930131827],[-73.6620678949435,45.5785479306689],[-73.6621571746505,45.5784038323785],[-73.6621698324278,45.5783498254639],[-73.6621696506974,45.578286838901],[-73.662105401442,45.5782239444711],[-73.6621051419332,45.578133963657],[-73.6623606058554,45.5778546544995],[-73.6626419811783,45.577674285748],[-73.6628593399635,45.5775119134153],[-73.6631535776804,45.5773496104757],[-73.6633453325892,45.5771963631501],[-73.6634221075573,45.5771602587606],[-73.6634862264871,45.5771781615669],[-73.6635502142529,45.5771510738557],[-73.6637417301876,45.5769168427462],[-73.6639591072286,45.5767635565803],[-73.6642143414677,45.5764122551066],[-73.6644437603828,45.5759980035025],[-73.6646479198335,45.5757097623995],[-73.6647501310105,45.5756106322229],[-73.6648649952961,45.5754574942903],[-73.6649161401828,45.5754214262582],[-73.6649797259544,45.5752593655346],[-73.6650437363209,45.5752412747697],[-73.6650948542025,45.5751962084918],[-73.6651329997775,45.5750971723247],[-73.6653246323167,45.5749079284548],[-73.6654777484103,45.5746916570976],[-73.6655417056162,45.5746556610023],[-73.6657842961783,45.574367363114],[-73.6658733739107,45.5741602752326],[-73.6659116786837,45.5741152280428],[-73.6659756613061,45.574088138921],[-73.6659912253823,45.574055794734],[-73.6659861657844,45.5740227792867],[-73.6660042176511,45.5739837908266],[-73.6660322338696,45.5739517970865],[-73.6660571730633,45.5739147779806],[-73.6660752214047,45.573869840889],[-73.6660822134602,45.573837797353],[-73.6660971623969,45.5738197790124],[-73.6661081545522,45.5737838522676],[-73.6660782138114,45.5737028240038],[-73.6660451524281,45.5736358283603],[-73.6660292472256,45.5736158753145],[-73.6660182008944,45.5735977974584],[-73.6660021807574,45.5735788352665],[-73.6659471828092,45.5735298772678],[-73.6658991847146,45.5734488666959],[-73.6658811501606,45.5734258583296],[-73.66586321027,45.5733988807652],[-73.6658442506075,45.5733828031844],[-73.6658192352556,45.5733578255671],[-73.6657992082639,45.5733408488496],[-73.6657511997509,45.5732918713806],[-73.6656981987171,45.5732408407128],[-73.6656382113062,45.5731798234767],[-73.6656152186171,45.5731598808381],[-73.6656081780597,45.5731358582663],[-73.6655852250337,45.5730958507311],[-73.6655262600397,45.5730238542408],[-73.6654982456967,45.5729858328406],[-73.6654631741905,45.5729538433771],[-73.665436180127,45.5729028641037],[-73.6653882396772,45.5728768404554],[-73.665296263709,45.5728299072391],[-73.6652031900312,45.5728079092635],[-73.6651251605569,45.5727929075393],[-73.6650252218704,45.5727699207431],[-73.6649212545737,45.5727769205301],[-73.6648122068798,45.57277987136],[-73.6647871661746,45.5727818877865],[-73.6647662509827,45.5727838972386],[-73.6645842076434,45.5727989226841],[-73.6645342319254,45.5728049348598],[-73.6644482255442,45.5728109099466],[-73.6643761917813,45.5728228931873],[-73.6643092655831,45.5728508855059],[-73.6642531809486,45.5728569065264],[-73.6641792614805,45.5728769097218],[-73.6641292184075,45.5728958781905],[-73.6640562523618,45.5729129015434],[-73.6639972550726,45.5729398931872],[-73.6639662524111,45.5729628927467],[-73.6639421904269,45.5729758852461],[-73.663926187915,45.5729978640441],[-73.6639052011025,45.5730109420159],[-73.6636492758314,45.5733859434528],[-73.6634952337208,45.573543923354],[-73.663464253833,45.5735749220917],[-73.6633962288318,45.573622900356],[-73.6633622805756,45.5736509340307],[-73.663330245455,45.5736839129639],[-73.6633111861738,45.5737078856439],[-73.6632832143338,45.5737908890135],[-73.6632592331837,45.5738318734938],[-73.6632332114655,45.573858905783],[-73.6632202850486,45.5738818707157],[-73.6631652509425,45.5739279403205],[-73.6631392712134,45.5739699093923],[-73.663117236149,45.573987946738],[-73.6630732888396,45.5740319215798],[-73.6630662714626,45.5740509178191],[-73.6630632703309,45.5740759369368],[-73.6630482545991,45.5741079111098],[-73.6630333002537,45.5741239495407],[-73.6630072117697,45.5741328956898],[-73.6629962406435,45.5741749418469],[-73.6629752170148,45.5742108749387],[-73.6629432816046,45.5742439445303],[-73.6629322554219,45.574267904564],[-73.6628821967431,45.5743169271977],[-73.6628642753426,45.5743309003682],[-73.6628452302844,45.5743599110157],[-73.6628321984524,45.574385934531],[-73.6628132454456,45.5744069268244],[-73.6628072686307,45.5744269122321],[-73.6627882217045,45.5744508740359],[-73.6627512962549,45.5745129337691],[-73.6627422757593,45.5745349022898],[-73.6627162431112,45.5745578952578],[-73.6626892783888,45.5745908666838],[-73.662629214703,45.5746888634225],[-73.6626012788376,45.5747139188075],[-73.6625822606708,45.574747877449],[-73.6625772446929,45.5747678614535],[-73.6625663064345,45.5747868633779],[-73.662548278667,45.5748048858176],[-73.6625363100899,45.5748309167644],[-73.6625362710999,45.5748528722171],[-73.6625342137824,45.5748729401007],[-73.6625212633563,45.5748908660745],[-73.6624973143315,45.5749038581245],[-73.6624065645402,45.5749878563175],[-73.6611121082933,45.5747150415948],[-73.6611227862217,45.5746917463844],[-73.6612013356308,45.5746996356301],[-73.661259018778,45.5745685152694],[-73.6612757290619,45.5745345864538],[-73.6613229450101,45.5744386313596],[-73.6613704069773,45.5743427335048],[-73.6613864536663,45.5743097747365],[-73.6615001526896,45.574054716048],[-73.6616121985163,45.5737838275218],[-73.6617184471029,45.5735201044135],[-73.6618093643696,45.5732584970759],[-73.6618245797053,45.5732022091517],[-73.66188688627,45.5729309129978],[-73.6619055197703,45.5728114938249],[-73.661928924274,45.5726582132888],[-73.6619371254052,45.5724524179574],[-73.6619394445405,45.5722133415261],[-73.6617552777395,45.5721265612729],[-73.6617581287901,45.5720230120771],[-73.6617590805989,45.571998494404],[-73.6619234194953,45.5714454170276],[-73.6619173099023,45.571398019961],[-73.661929704932,45.5713386848382],[-73.6619752143024,45.5712306083132],[-73.6620970585141,45.5709923749881],[-73.6621650910892,45.5708702203365],[-73.6621993291393,45.5708265072845],[-73.6622475139623,45.5707754589285],[-73.6623041715318,45.5707254080816],[-73.6623578079765,45.5706887093288],[-73.6625509517889,45.5705455166661],[-73.6625707854337,45.5705227811846],[-73.6625057944051,45.570457993553],[-73.6624664775958,45.5701521138133],[-73.6624657776208,45.5699091656896],[-73.6625670249546,45.5694771104034],[-73.6625540579269,45.5694231404827],[-73.6625535650794,45.5692521770058],[-73.6626423099404,45.5689281164321],[-73.6629481406329,45.5683607924064],[-73.6635874921175,45.5679459514179],[-73.6635345759627,45.5673701497009],[-73.6634311235079,45.5670373700117],[-73.663198758472,45.5664258298288],[-73.6633762252316,45.5657776943646],[-73.6634393094005,45.565444665783],[-73.6635030198004,45.5653275958897],[-73.6638857706871,45.5647961445675],[-73.6641922300925,45.5644626756093],[-73.664345576434,45.5643365696472],[-73.6644478945524,45.564282432489],[-73.6649978546537,45.5639936945392],[-73.6651897563375,45.5639124330378],[-73.665624767087,45.5637408372953],[-73.6657657234452,45.5637586291879],[-73.6659194086602,45.5637494079035],[-73.6663035267588,45.5636948605341],[-73.6666494595535,45.5637213508768],[-73.6667902901452,45.5636941469705],[-73.6669949834628,45.5636038601403],[-73.667135651987,45.5635225759789],[-73.6672378900749,45.5634415309414],[-73.6673658841117,45.5634053469223],[-73.6674170165013,45.5633692779192],[-73.6684651150222,45.5625937760875],[-73.6691044143484,45.5621879846467],[-73.6694497231347,45.5619985007424],[-73.670076066914,45.5615476435556],[-73.6704977123656,45.5611870775768],[-73.6706384037799,45.5611148787093],[-73.6707662307915,45.5610247030325],[-73.6711495423986,45.5607000915528],[-73.6714181080845,45.5605557993166],[-73.6716991819063,45.5603124172854],[-73.6719164790526,45.5601591144088],[-73.6727716128164,45.5591410087009],[-73.6730396446643,45.5588255701786],[-73.6732563003912,45.5584654025223],[-73.6733326594825,45.5583033186804],[-73.6733833722406,45.5581322752691],[-73.6736507337916,45.5576009707092],[-73.673739733851,45.5573848776095],[-73.6737902793684,45.5571598460067],[-73.673866469668,45.5569437729363],[-73.6738783950816,45.5566558143169],[-73.6739036535872,45.5565387995814],[-73.6739018315208,45.5559449258125],[-73.6739905801044,45.555647850667],[-73.6740671549077,45.5555577513116],[-73.6742071913427,45.5552785935712],[-73.6744749507242,45.5548822635847],[-73.6745517178784,45.5548551508168],[-73.674641071714,45.5547560337817],[-73.6747427070269,45.5544859339675],[-73.6748574825544,45.5543237911437],[-73.674921440673,45.5542966981471],[-73.67517690646,45.554071345397],[-73.6753938321674,45.5538100551587],[-73.6756493190999,45.5535936963462],[-73.6756875749547,45.5535396468149],[-73.6758536291035,45.5533954145139],[-73.6760706056195,45.5531521218965],[-73.6763261155523,45.5529447621981],[-73.6763643704274,45.5528907129171],[-73.6764921105631,45.5527825341216],[-73.6767472244485,45.5524492008077],[-73.6769639412063,45.5521249265674],[-73.6771169842454,45.5519177288688],[-73.6773852367613,45.5516923546954],[-73.6778831727933,45.551196677166],[-73.6780490460727,45.5509984588091],[-73.6783045972807,45.550809098247],[-73.678649371771,45.5504845360632],[-73.6787643245588,45.5503854680076],[-73.6789943704825,45.5502321402914],[-73.6790965432893,45.5501419995894],[-73.6791984308024,45.549961877629],[-73.6792492018763,45.5498178250343],[-73.6793248724436,45.5494487768439],[-73.6793373650912,45.5493497763356],[-73.679311351524,45.5492238420839],[-73.6792341679778,45.5491159852517],[-73.6791443204704,45.5490531392645],[-73.6791055574929,45.5489452209345],[-73.6792332258311,45.5488190444071],[-73.6792458612596,45.5487650349259],[-73.6792201050686,45.5487200843511],[-73.6792583824523,45.5486750326254],[-73.6793225016769,45.5487019260678],[-73.6793864780963,45.5486838284565],[-73.6794375620318,45.5486387564843],[-73.6794762108167,45.548710681291],[-73.6795661152132,45.5487915231583],[-73.6796430414365,45.5488183960453],[-73.6798351997763,45.5488360879678],[-73.6798993194295,45.5488629809238],[-73.6800020887148,45.5489617981498],[-73.6800278742619,45.5490157464494],[-73.6800024040278,45.5490607779516],[-73.679951320159,45.5491058501487],[-73.6798745939516,45.5491419648571],[-73.6798235385565,45.5491960352321],[-73.6797982112664,45.5492860576483],[-73.679862560537,45.5493849358173],[-73.6799266807878,45.5494118285301],[-73.6801444261523,45.5494204802966],[-73.6808355937985,45.5492934035945],[-73.6813732211408,45.5492115604117],[-73.6821026592555,45.5490394261937],[-73.6824483262647,45.5490028779807],[-73.6828451035591,45.5489302542612],[-73.6833316145823,45.5488844785823],[-73.6837411426635,45.5487938351492],[-73.6838947958166,45.5487845879509],[-73.6840999105323,45.5488472407834],[-73.6842154067086,45.5489190368052],[-73.6843562825065,45.5489188076171],[-73.6844204049031,45.5489456971007],[-73.6846901128726,45.5491792039735],[-73.6848182997739,45.5492149863805],[-73.685177100286,45.54927738501],[-73.685625550302,45.549339635067],[-73.6857408130611,45.5493394457988],[-73.6860480622464,45.5493029493122],[-73.6862144345399,45.5492666841535],[-73.6863551335743,45.5492124654675],[-73.6865982878654,45.5491580778347],[-73.687135525941,45.5489592396004],[-73.6874040248139,45.548823829238],[-73.6877617885132,45.5485712125379],[-73.6881574667539,45.5481657531286],[-73.6882596544819,45.5480846048728],[-73.6885402441639,45.5477332290716],[-73.688655267468,45.547660966075],[-73.6887448861838,45.5476518202223],[-73.6890267887613,45.5476964337199],[-73.6891420512939,45.5476962428846],[-73.6902428177188,45.5475054609866],[-73.6903067621302,45.5474783610707],[-73.6906651148949,45.5474057809385],[-73.6909083556321,45.5473783811269],[-73.6913562952418,45.5472876533083],[-73.6916252095451,45.5472782044887],[-73.6919070174029,45.5472957262358],[-73.6920222168903,45.5472775366967],[-73.6922908839613,45.5471961038018],[-73.6924445029918,45.547177849079],[-73.6926494092242,45.5471775031056],[-73.6927904039141,45.5472132559702],[-73.6928416305082,45.547213169353],[-73.6929698492284,45.5472579413625],[-73.693162314916,45.5473655888404],[-73.6932520227284,45.5473834323806],[-73.6933929268687,45.5473921912395],[-73.6937386464413,45.5473736087585],[-73.6941740738744,45.5473728680427],[-73.6946737192816,45.5474260025706],[-73.6949042091205,45.5474166110271],[-73.6953649723374,45.5473348427302],[-73.6956848917404,45.5472623122254],[-73.6958895810159,45.5471989748337],[-73.6969646775918,45.5470081351492],[-73.6974125313272,45.5468993724932],[-73.6976558546593,45.5468989429106],[-73.6981297573778,45.5469161003947],[-73.6984624756206,45.5468435281328],[-73.6993709180268,45.5466079686018],[-73.6996266374422,45.5464905400688],[-73.699793026274,45.5464632492283],[-73.6998955090375,45.5464720639287],[-73.7000748289652,45.5464807422688],[-73.7004979392576,45.5466239579248],[-73.7005875195259,45.5466058029378],[-73.7008176192381,45.5464884205223],[-73.7010985608875,45.5462629709178],[-73.7011239188609,45.5461909419047],[-73.7010853099551,45.546137023005],[-73.7011107632085,45.5460919877153],[-73.7012384421098,45.5459837838954],[-73.7013664068422,45.5459565610966],[-73.7016481710682,45.5459650546762],[-73.7018914534461,45.5459556205674],[-73.7019938376102,45.5459374408113],[-73.7024025726422,45.5456397689237],[-73.7024663462046,45.5455676692218],[-73.7025807988589,45.5453425103448],[-73.702644636237,45.5452884068862],[-73.7026827976514,45.5452163533599],[-73.7026825092738,45.5451353708329],[-73.7026309332524,45.5450364841708],[-73.7023741747468,45.5448568912939],[-73.70238682052,45.5448118779546],[-73.7024889795306,45.5447308025803],[-73.7026424255541,45.5446675406481],[-73.7027577102602,45.5446763319954],[-73.7029116690104,45.5447570385983],[-73.7030270500229,45.5447928236959],[-73.7031423345516,45.5448015236487],[-73.7032575873361,45.5448013163285],[-73.7035007706809,45.5447649771236],[-73.7036158307614,45.5447107814738],[-73.7038074688302,45.5445844633773],[-73.703947690371,45.5444042497888],[-73.7041905178382,45.5442688410869],[-73.7050474776001,45.5439883410749],[-73.7055602383875,45.5441403680319],[-73.7056498112382,45.5441222081477],[-73.7057774453334,45.5440050018065],[-73.7059564940224,45.5439416885778],[-73.706212180779,45.5438242476812],[-73.7063913259186,45.5437879276628],[-73.7066601726648,45.5437694383077],[-73.7068137393424,45.5437421626638],[-73.7069160524644,45.5437059834036],[-73.7070437821798,45.5436157707874],[-73.7071967666424,45.5434265365573],[-73.7072858537967,45.5432734111067],[-73.7073493626219,45.5431293305851],[-73.7073745203124,45.5430033160921],[-73.7074891204301,45.542823151149],[-73.7075402118959,45.5427870664953],[-73.7077564764836,45.5423907705821],[-73.7078621465295,45.5422881256456],[-73.7092750137778,45.5431751745658],[-73.7094372419499,45.5430164606322],[-73.7101659200742,45.5421230463083],[-73.7110770390534,45.5412292433471],[-73.7119889495453,45.5405282734402],[-73.7133215990529,45.5398747635981],[-73.7149285977154,45.5392447616179],[-73.7161335556466,45.5386879437872],[-73.7175594553325,45.5384683396538],[-73.7189127175032,45.5383932967949],[-73.7201194107164,45.5382704658417],[-73.7212883007102,45.5379306266166],[-73.7223470501005,45.5373497961683],[-73.7240261837607,45.5364303500434],[-73.7253758275411,45.5355113765444],[-73.7262146081557,45.5348105829154],[-73.7267609967009,45.5342790889428],[-73.727453347337,45.5336748553387],[-73.7280001000863,45.5332398238557],[-73.7288029463028,45.5327318461666],[-73.7297881722647,45.5321995685421],[-73.7308476657031,45.5319079544848],[-73.7324187180861,45.5315190053471],[-73.7343558760716,45.5311293749352],[-73.736474165276,45.5304500170105],[-73.7381163924077,45.5296026987684],[-73.739867492669,45.5284659059943],[-73.7412528387001,45.5274503279836],[-73.7420902008855,45.5265323514519],[-73.742635969755,45.5258560802617],[-73.7431432228311,45.5247700575681],[-73.7440151585896,45.5234180493301],[-73.7447416514354,45.5222832197082],[-73.7457244618698,45.5212685117138],[-73.7466348032164,45.5203984888218],[-73.7476194422721,45.5197454463796],[-73.7486781792835,45.5193332209043],[-73.749737651722,45.51913795319],[-73.7510537870328,45.5190626969689],[-73.752552896743,45.5190593746093],[-73.7535763574845,45.5189365889026],[-73.7546354754293,45.5186447933568],[-73.7558763467335,45.5181355930463],[-73.7570067268353,45.5174337618414],[-73.7581359592629,45.5164666168799],[-73.7591911322229,45.5153793515604],[-73.7596990340387,45.5144860880169],[-73.7603179440538,45.5138576924691],[-73.7612287211694,45.5131806552284],[-73.7624688447384,45.5125025784904],[-73.7635438153943,45.5119776857271],[-73.7636321275885,45.5119344933272]],[[-73.6023542291246,45.6125870623215],[-73.6016681818309,45.6118970741756],[-73.603090149747,45.6111490613011]],[[-73.603090149747,45.6111490613011],[-73.5971109854928,45.6085990579459],[-73.5932108987142,45.6068920600992],[-73.5920299245655,45.606371071781],[-73.5890028587264,45.6050240592893],[-73.579676851883,45.6009451154212],[-73.5771248107799,45.5998581274069],[-73.5774439028704,45.5993811429971],[-73.5773669201381,45.5993721052758],[-73.5771238805524,45.5993190792538],[-73.5767259132218,45.5993190687667],[-73.5765468870764,45.5993010966721],[-73.5762258324264,45.5992561285013],[-73.5757649072384,45.5991390754965],[-73.5745978939037,45.5986720404084],[-73.5741228854154,45.5984480798058],[-73.572673945049,45.5977470415623],[-73.5721739126246,45.5975400056792],[-73.5696559300578,45.5965919209051]],[[-73.5696559300578,45.5965919209051],[-73.5694209423822,45.5971479428998],[-73.561107953019,45.5943588288432],[-73.557485986473,45.593147890106],[-73.5489330905734,45.5902997945146],[-73.5484101067903,45.5911447672298],[-73.5481611541266,45.5915277861275],[-73.5479000625558,45.5919348414023],[-73.5477960807129,45.5921098310029],[-73.546797083931,45.5936698187938],[-73.5465311055452,45.5940678758863],[-73.5482361139546,45.5946678645121],[-73.547443122012,45.5955688451197],[-73.5459240840008,45.5949968469123],[-73.5438621293285,45.5980748791722],[-73.5442041364978,45.5981878673963],[-73.5445070371629,45.5993999515917],[-73.544829102572,45.5995548806833],[-73.5444860590426,45.6006619226717],[-73.5448260723536,45.600769958873],[-73.5448310594977,45.6007909248167],[-73.5448020638762,45.6008879473862],[-73.5448681255266,45.6009898822284],[-73.5450270955151,45.6010569529449],[-73.5447581061715,45.6019399717369],[-73.5441460773264,45.6017568980689],[-73.5407421611408,45.6006989712084],[-73.5397301749513,45.6018179148004],[-73.5417141936703,45.6026929166701],[-73.5429361807431,45.6032339434797],[-73.5421761889329,45.6042449191015],[-73.5394321791643,45.6030899458904],[-73.539298220776,45.6032518850926],[-73.538017277917,45.6027209178473],[-73.5379551928527,45.6026949308168],[-73.5365962257247,45.6021619255523],[-73.5366411991278,45.6023739276342],[-73.5367172256457,45.6026948988022],[-73.5366652036477,45.6026949165281],[-73.536504237033,45.6026449367339],[-73.5365182278187,45.6026949664801],[-73.5371542411212,45.6046369331851],[-73.5377811865707,45.6048279550448],[-73.5375402376863,45.6052348889394],[-73.5416362303461,45.6069420038722],[-73.5411261239319,45.6075659224844],[-73.5410281881262,45.607698965598],[-73.5409011841558,45.6078519970953],[-73.5416431524015,45.6081789440758],[-73.5415901226621,45.6084099713148],[-73.5415000862361,45.6086619751416],[-73.541440074122,45.6089010100225],[-73.5411510247833,45.6094869481654],[-73.5423181007381,45.6097889805166],[-73.5429821388452,45.609960977518],[-73.5432821183924,45.6100499557238],[-73.5441480884167,45.6102739755042],[-73.5453511080041,45.6107679212586],[-73.5451891103286,45.6109309577423],[-73.5451640849133,45.6109819917121],[-73.5450711451133,45.6111450011394],[-73.5444920662496,45.6121869528406],[-73.5462770604094,45.6127229551579],[-73.5461011188875,45.6128989619104],[-73.5457800813166,45.6133499486065],[-73.545725074746,45.6133359320723],[-73.545696128352,45.6133759889731],[-73.5457520862658,45.6133899160565],[-73.5453891059744,45.6139159636029],[-73.5453080049855,45.6140729394957],[-73.5452780414725,45.6141649219947],[-73.5440589854485,45.615052978741],[-73.543722020509,45.6149089422742],[-73.5378599851114,45.6138809187356],[-73.5371866179934,45.6158357657932]],[[-73.5371866179934,45.6158357657932],[-73.5362608510948,45.618457898742],[-73.5354974024558,45.6198971580049],[-73.5439404275928,45.6236714406244],[-73.5468463503493,45.6249358948305],[-73.547925886992,45.6254056214377],[-73.5480813343789,45.6254729245783],[-73.5484420629026,45.6256289064905],[-73.5484635181517,45.6256381988457],[-73.5504879749674,45.626513541267],[-73.5511162168742,45.6267805107081],[-73.5514021879531,45.6269032963511],[-73.5514203557319,45.6269111971174],[-73.5539520985669,45.6280141362732],[-73.5567600431776,45.6292372501746],[-73.5596465511604,45.6304568456919],[-73.5628435983779,45.6318353662969],[-73.5638550490322,45.6322714461165],[-73.5676490033825,45.6339070679301],[-73.5679944455889,45.6340559827157],[-73.5681679783651,45.634130175512],[-73.5683415333325,45.6342040823769]],[[-73.5683415333325,45.6342040823769],[-73.5740075697115,45.6304916964315],[-73.5757545880206,45.6292977245367],[-73.5769886033606,45.6284546845067],[-73.5800676147804,45.6263507429805],[-73.5821846271246,45.6249027435416],[-73.5843755587145,45.6234048406462],[-73.5867853928719,45.6217578881289],[-73.592965103947,45.6175330228188],[-73.5936570645005,45.6170600176327],[-73.5954720783567,45.6158180091798],[-73.5969310920751,45.6149040030198],[-73.5984981016877,45.6140830261531],[-73.6001601056135,45.6133610267473],[-73.6014191703201,45.6129020492353],[-73.6023542291246,45.6125870623215]],[[-73.677212053007,45.4836885142825],[-73.6763007020112,45.4830772167304],[-73.6746354931586,45.4819601694168],[-73.6697561850446,45.483713219065],[-73.6695851275087,45.4838020274496],[-73.6637420865267,45.4811460234594],[-73.663314120662,45.4809570221891],[-73.6618620747884,45.4803200536814],[-73.6611070952024,45.4811520359743],[-73.6560111303193,45.4789340349537]],[[-73.6560111303193,45.4789340349537],[-73.656005034498,45.4813720519306],[-73.6559759550704,45.4843940695432],[-73.6559770017075,45.4844290758318]],[[-73.6559770017075,45.4844290758318],[-73.6559829314965,45.484629033032],[-73.655951994557,45.4851210701981],[-73.6558599516719,45.4856090503391],[-73.6557068942633,45.4860891046513],[-73.6554969316511,45.4865590657944],[-73.6558779070936,45.4867300759224],[-73.6552588989697,45.4874160366868],[-73.6505029114016,45.4926830622275],[-73.6493058772782,45.4921991168153],[-73.6490358664487,45.4920530484331],[-73.648618909739,45.491887100538],[-73.6490501160621,45.4913276516227],[-73.6498410196164,45.4904443814769],[-73.6499700915361,45.4903071698683],[-73.6504793906873,45.4897544866372],[-73.6505921505841,45.4896098600407],[-73.6511634728205,45.4889836808889]],[[-73.6511634728205,45.4889836808889],[-73.6450193618018,45.4862240039104],[-73.6388304224155,45.4834377720507]],[[-73.6388304224155,45.4834377720507],[-73.6351663002996,45.4817904516314],[-73.6304021320274,45.4796457818922],[-73.6307209472348,45.479299896201],[-73.6308195600955,45.4793442297966]],[[-73.6308195600955,45.4793442297966],[-73.6311680671365,45.4789660630719],[-73.631123365295,45.4789459688871],[-73.6310694086523,45.478921829751],[-73.6310243583042,45.4789014596787],[-73.6307110725493,45.4787606129314],[-73.630612559046,45.4787163313813],[-73.6299147524973,45.4784026162296],[-73.6299235841852,45.4783643535823],[-73.6325591302881,45.4778818820268],[-73.6328320735545,45.4777837042509],[-73.6337097601863,45.4774773485724],[-73.6346357751155,45.4771919236648],[-73.6349650324774,45.4771040872459],[-73.6352998489062,45.4770321489985],[-73.6356688118753,45.4769712146439],[-73.6360149201794,45.4769307555651],[-73.6364233425344,45.4769031127716],[-73.6366802032854,45.4768917403196],[-73.6370802609816,45.4768846317385],[-73.637249048566,45.4768772399135],[-73.6375995741912,45.4768647611767],[-73.6379550287161,45.4768514262522],[-73.6382493445085,45.4768440073391],[-73.6385657157453,45.4768447605521],[-73.6386742073373,45.4768440323319],[-73.6388720999429,45.4768412632483],[-73.6390370433647,45.4768554229575],[-73.6393228579022,45.4768618431679],[-73.6395036585933,45.4768336620874],[-73.639606821942,45.476802982489],[-73.6397348301544,45.4767456199233],[-73.6416262290117,45.4755317405062],[-73.6420866740247,45.4752354171579],[-73.6422813259739,45.4751032927699],[-73.6427161743875,45.4748289615705],[-73.6429170752816,45.4747152141854],[-73.6431196022945,45.4746019556529],[-73.6433582782828,45.4744900310967],[-73.6438880456447,45.4742193923574],[-73.644459591704,45.4739660002599]],[[-73.644459591704,45.4739660002599],[-73.6443899792965,45.4739362103555],[-73.6459220609619,45.473275484503],[-73.6458872022476,45.4730902705594],[-73.6472068487391,45.4720324730302],[-73.6476683494405,45.4716726066632],[-73.6478743443295,45.4715019392638],[-73.6483151142304,45.4711523326002],[-73.6489355601019,45.4706511058895],[-73.6491102826088,45.4705121833868],[-73.6493344852905,45.4703339340724],[-73.6494533669225,45.4703810370493],[-73.6503483149657,45.4687316497107],[-73.6508859419124,45.4683702466853],[-73.6522138370854,45.4676253633483],[-73.6532318559768,45.4662912827542],[-73.6533076844359,45.4663136585768],[-73.6541607606292,45.4651468397016],[-73.6557592262419,45.4629537218473],[-73.6558615012944,45.462897261899],[-73.6562474176332,45.4626842479601],[-73.6574713214642,45.4619989640225],[-73.6574030263448,45.461971359809],[-73.6582727825394,45.4614534598448],[-73.6580641306118,45.4613859195995],[-73.6577135637777,45.4612491119569],[-73.6577185513339,45.4612377354883],[-73.657722119995,45.4612260901391],[-73.6577242380548,45.461214270437],[-73.657724890416,45.4612023654877],[-73.6577240722136,45.4611904652824],[-73.6577217900943,45.4611786606963],[-73.6577180596484,45.4611670398921],[-73.6577129105324,45.4611556910133],[-73.6577063813468,45.4611446994913],[-73.6576985209145,45.4611341480436],[-73.6576893882808,45.4611241166741],[-73.6576790527086,45.4611146808731],[-73.6576675923996,45.4611059116193],[-73.6576356424261,45.461077307669],[-73.6576071211402,45.4610469748436],[-73.6575822106585,45.4610151054596],[-73.6575825705688,45.4609844454569],[-73.6575860882398,45.4609733166927],[-73.6575923761508,45.4609628094722],[-73.6576012306372,45.4609532615199],[-73.6576123686716,45.4609449818747],[-73.6576481927535,45.4609227356359],[-73.6576643083854,45.460911012563],[-73.6576776023842,45.4608976601917],[-73.6577453780016,45.4608166402612],[-73.6577509179761,45.4608075711243],[-73.6577530929141,45.4607978173851],[-73.6577289375047,45.4606703681947],[-73.6577213142392,45.4606443633865],[-73.6577132121896,45.4606269176646],[-73.657702863748,45.4606100698616],[-73.6576948404067,45.4605997849917],[-73.6576854555464,45.460590088712],[-73.657674793812,45.4605810699891],[-73.6576629551737,45.4605728105698],[-73.6576500459801,45.4605653867925],[-73.6575753148321,45.4605264571438],[-73.6575613145809,45.4605198510303],[-73.6575465062103,45.4605141854749],[-73.657531013901,45.460509511596],[-73.6575149733079,45.4605058678985],[-73.6574985213469,45.4605032865863],[-73.6574817987425,45.4605017899601],[-73.6574649525857,45.4605013904135],[-73.6574486994598,45.4605008784608],[-73.657434532989,45.4604993458862],[-73.657306258939,45.4604727786153],[-73.6572914916669,45.4604680937999],[-73.6572790062168,45.4604608304639],[-73.6572696863693,45.4604515074936],[-73.6572649777164,45.4604431076707],[-73.6572601302494,45.4604307631208],[-73.6572562260516,45.4604182552913],[-73.6572532716113,45.4604056183672],[-73.6572515208133,45.4603935628744],[-73.6572511932075,45.4603741068858],[-73.6572527469341,45.4603607483371],[-73.6572557447127,45.4603475119656],[-73.6572929917208,45.4602154450173],[-73.6572916937117,45.4602052740718],[-73.6572838855989,45.4601978791728],[-73.6572527027888,45.460185736694],[-73.6572379694274,45.4601789731814],[-73.657225049913,45.4601705721357],[-73.6572143093448,45.4601607697108],[-73.6572080469414,45.4601528021631],[-73.657203772999,45.4601411451961],[-73.6572042890294,45.4601312488882],[-73.6572101941995,45.4601187580601],[-73.6572195435655,45.4601073764678],[-73.6572316678094,45.4600973740912],[-73.6572461650441,45.4600890826293],[-73.6574841439841,45.4599837947141],[-73.6575306816811,45.4599529653287],[-73.6575447212217,45.4599419569346],[-73.6575559420686,45.4599294488119],[-73.6575640267961,45.4599157950411],[-73.657568747581,45.4599013819725],[-73.6575849373326,45.4598454530398],[-73.6575868482019,45.459833624627],[-73.6575858024544,45.4598217427299],[-73.657581834347,45.459810170838],[-73.6575704316061,45.4597926136036],[-73.6575636997289,45.459778595271],[-73.6575605070237,45.4597639700282],[-73.6575609506114,45.4597491759649],[-73.6575650163821,45.4597346585239],[-73.6575725840578,45.459720851597],[-73.6575834233412,45.4597081721315],[-73.6575970596134,45.4596970077188],[-73.6576126782223,45.4596873261951],[-73.6576245864727,45.4596824567934],[-73.6576378616591,45.4596798746967],[-73.6576824021721,45.4596754296756],[-73.6577090986401,45.459673605488],[-73.657735921255,45.4596734620286],[-73.657762653913,45.4596750004978],[-73.6579280114346,45.4596897619203],[-73.6580601869742,45.4596995391896],[-73.6580779372984,45.4597013879429],[-73.6580954028095,45.4597042818098],[-73.6581124594147,45.4597082011666],[-73.6581289830012,45.4597131191912],[-73.6581448162564,45.4597190262045],[-73.6581598223476,45.4597259196983],[-73.6581738770818,45.4597337440553],[-73.6581868639132,45.4597424346496],[-73.6582899851164,45.4598179857857],[-73.6583004795263,45.4598234017092],[-73.6583129634682,45.4598259857452],[-73.6583273409404,45.4598252440124],[-73.6583404533366,45.4598217658644],[-73.658351885364,45.4598160638761],[-73.6583674602986,45.459803479523],[-73.6583785031491,45.459792557175],[-73.6583882426557,45.4597810382393],[-73.6584430829453,45.4597097042901],[-73.658094608074,45.4595798263112],[-73.6579627849665,45.4595293234168]],[[-73.6579627849665,45.4595293234168],[-73.6578502058197,45.459486192125],[-73.6563251757375,45.4589184310583],[-73.6557389621477,45.4586932029738],[-73.6553968465389,45.4585608834671],[-73.6551850223747,45.4584662584514],[-73.6547345768363,45.4582928969312],[-73.6546755213921,45.4582701742541],[-73.6540849436571,45.4580428757063],[-73.6538452715816,45.4579506215614],[-73.6536055994733,45.4578583768252],[-73.6535581369836,45.4578401008552],[-73.6531943005995,45.4577000584782],[-73.6530433553181,45.4576419642358],[-73.6530250578874,45.4576349150534],[-73.6528541134017,45.4575691140739],[-73.652683165724,45.4575033218483],[-73.6526176884984,45.4574781092622],[-73.652512222479,45.4574375203691],[-73.6524467390977,45.4574123076957],[-73.6520205567722,45.457248267675],[-73.6516575040517,45.4571085092398],[-73.6515948542594,45.4570843388496],[-73.6504579450717,45.4566456032708],[-73.6502870875882,45.4565796751565],[-73.6494260561671,45.456247379988],[-73.6492597005476,45.4561814070035],[-73.6490875811032,45.4561148265991],[-73.6487385135682,45.4559798165239],[-73.6480615128746,45.4557179461044],[-73.6477137571117,45.4555834409359],[-73.6475910932925,45.4555359857632],[-73.6473703562126,45.4554506063078],[-73.6471132839511,45.4553511593632],[-73.6468597094032,45.4552530786776],[-73.646196857792,45.4549966611743],[-73.6460265886541,45.4549300109935],[-73.6456013913042,45.4547635484647],[-73.6455889811214,45.4547586959584],[-73.645432377482,45.4546973898617],[-73.6454187207597,45.4546920376893],[-73.6452484567323,45.4546253872142],[-73.64448227551,45.4543254269936],[-73.6442742188637,45.4542439799227],[-73.6441465266745,45.454193979955],[-73.643886360165,45.4540921317481],[-73.6427005069417,45.4536278564905],[-73.6424746504564,45.4535424219278],[-73.6423454460786,45.4534935561279],[-73.6420050507427,45.4533647904165],[-73.6416638181394,45.4532323947349],[-73.6413216232797,45.4530996364205],[-73.6404661101738,45.4527677290159],[-73.640295490447,45.4527015414155],[-73.6399952004148,45.4525850288273],[-73.6397616557232,45.4524944271723],[-73.6397199232003,45.4524782310103],[-73.6394535370844,45.4523687230626],[-73.6373473111061,45.4515614631467],[-73.636919576931,45.4513975003891],[-73.6365773919343,45.4512663431074],[-73.6360640994777,45.4510695800067],[-73.6352965061135,45.4507753419737]],[[-73.6352965061135,45.4507753419737],[-73.6346630707316,45.4510930860629],[-73.6314600498022,45.4527581020496],[-73.6285339989808,45.4553450484515],[-73.6285429680941,45.45539507216],[-73.6262048084532,45.4574909545631],[-73.6243247780992,45.4586589553701],[-73.619961785943,45.4617499471863],[-73.6197927717393,45.4616749892348],[-73.6182277975818,45.4622300022047],[-73.6151789351161,45.4635180563947],[-73.6121179363526,45.4648862143063],[-73.6120629292635,45.4648581926149],[-73.6118169731738,45.4649172031161],[-73.6116069916948,45.4647641594792],[-73.6082661751977,45.4662881946],[-73.6072010785006,45.4666632255106],[-73.606607064306,45.4670542702454],[-73.6058459889466,45.4672872657244],[-73.6056279954032,45.4676032515635],[-73.6047150126955,45.468183208778],[-73.6031689877337,45.4691032752683],[-73.6025899905104,45.4690512531097],[-73.6018038812672,45.4696342972775],[-73.6012719054193,45.4700542213259],[-73.6007278911396,45.470533274452],[-73.5993759384363,45.4717291850022],[-73.599088955606,45.4718812537732],[-73.5988839321356,45.4720902129839],[-73.5979918840429,45.4725662405096],[-73.5979378921711,45.472578256456],[-73.5964599040188,45.4734171867195],[-73.5951357763157,45.4764447402168]],[[-73.5951357763157,45.4764447402168],[-73.5955776296593,45.4761381089479],[-73.5957648973491,45.4760082647023],[-73.5984752904683,45.4741008893753],[-73.6012281015711,45.4753315826438],[-73.6024033191885,45.4758568718724],[-73.6028915088277,45.4760750635219],[-73.6032424634259,45.4762319300865],[-73.6033806712245,45.4762936919933],[-73.6036867143848,45.4764304747095],[-73.6037273559683,45.4764486451217],[-73.604335008424,45.4767202088926],[-73.6049972947601,45.4770162010376],[-73.6054046717619,45.476571466707],[-73.6054876849203,45.4766108263643],[-73.6058032133516,45.4767534735697],[-73.606057235055,45.4768704468339],[-73.6067548041457,45.4771879875381],[-73.6090621060599,45.4782038220565],[-73.6143800341701,45.4805888811276],[-73.6123993681801,45.4826886760394],[-73.6145353064049,45.4836637124811],[-73.6171482378122,45.4848337615346],[-73.6159641735315,45.4861257231186],[-73.6153512054172,45.4867947276862],[-73.6156752364023,45.4869428042983],[-73.6168142106247,45.4874618310378],[-73.6184231387654,45.4881788448198],[-73.6183200561041,45.4886448514511],[-73.6184160689556,45.4889458759476],[-73.6176980194366,45.4897409121479],[-73.6170630314216,45.4904569524562],[-73.6147350703793,45.4930287788849],[-73.6121731823429,45.4919378279921],[-73.6115921374067,45.4916908804069],[-73.60936012739,45.4939779182218],[-73.6083680561917,45.4935919766229],[-73.6074091855818,45.4945479056299],[-73.6068401918011,45.4952759075412]],[[-73.6068401918011,45.4952759075412],[-73.6066841925338,45.4954849190755],[-73.6062482077926,45.4954249461949],[-73.6048812298194,45.4956179059164],[-73.604661223617,45.4956959537503],[-73.6045181720371,45.495783920228],[-73.6026300952302,45.4976740022197],[-73.6005159818638,45.4995999548103],[-73.5986160180852,45.5011579600525],[-73.5973769575743,45.5018779848695],[-73.5969599440387,45.502071017459],[-73.596435919391,45.502275027553],[-73.5959149515715,45.502417028699],[-73.5954028983565,45.5025820553441],[-73.5949539110756,45.5027779853022],[-73.5945779306573,45.5029550444051],[-73.5943389035207,45.5031669969315],[-73.5942299182858,45.5033199854165],[-73.5956109141946,45.5040629949286]],[[-73.5956109141946,45.5040629949286],[-73.5987838942435,45.5056170015326],[-73.5988969771019,45.5055140396732],[-73.5991199024211,45.5056320080072],[-73.5993799928364,45.5053890662042],[-73.6000319044616,45.5056960036382],[-73.6024758700409,45.5068569698039],[-73.6035339056393,45.5056989463303],[-73.6059059043036,45.5067739808066],[-73.606133883651,45.506876000718],[-73.6063528884867,45.5074899994525],[-73.611243886916,45.5096689249774],[-73.6122108318229,45.5100839424483],[-73.6130488831493,45.5104459633429],[-73.6139258105029,45.5094719273215],[-73.6146357847723,45.5086858816877],[-73.6156428056742,45.50758584957],[-73.6158888397486,45.5073138173095],[-73.616486866179,45.506659747411],[-73.6174598829913,45.5055757562669],[-73.6175969109787,45.505430723084],[-73.6177618618361,45.5052617221482],[-73.6182348932225,45.5047207201667],[-73.618948838393,45.5051247454567],[-73.6185918430223,45.5055257789995],[-73.6183618439377,45.5057827742422],[-73.6182368673897,45.5059367055579],[-73.6179928487264,45.5062047819349],[-73.6164537542892,45.507876735584],[-73.6162207774673,45.5081327369473],[-73.6160398238206,45.5083287473535],[-73.6178927943616,45.509173781791],[-73.6169198104361,45.5102758011751],[-73.618879835197,45.5111338573937],[-73.6176638457886,45.5124989304851],[-73.6181778143121,45.512730938516],[-73.6211108895945,45.5140419351202],[-73.6225748083554,45.5147068651661],[-73.6238049108022,45.5152729444053],[-73.6240228217757,45.5153728701655],[-73.6247258132996,45.5156978780009],[-73.6247608646889,45.5156979294181],[-73.6252809111825,45.5159299069007],[-73.6260049185647,45.5162468899168],[-73.6267218934442,45.5165789048672]],[[-73.6267218934442,45.5165789048672],[-73.626991841415,45.5162449113037],[-73.6270658603441,45.5161559153743],[-73.627846889063,45.5152129052336],[-73.6289039549215,45.514081942656],[-73.6297179053138,45.5143059350389],[-73.6310359777456,45.5146679491502],[-73.6346519858976,45.5156590388536],[-73.6357189414844,45.5143920455427],[-73.6365909644118,45.5146560421423],[-73.6385809897399,45.5112151243708],[-73.6388099339852,45.5109481068909],[-73.640415959159,45.509072122684],[-73.64112893633,45.5082370936606],[-73.6416659198838,45.5076090792305],[-73.6418849746928,45.5071990587021],[-73.6418759337231,45.5071300435727],[-73.6417448937834,45.5070700917457],[-73.6415509759418,45.5069820481583],[-73.6423109356377,45.5062129921995],[-73.6422519174173,45.5054969786649],[-73.6447178300038,45.5028229380199],[-73.6447978171437,45.5027340127476],[-73.6447418469439,45.5027219351565],[-73.6451438453446,45.5023009761438],[-73.6456047989611,45.5018249550685],[-73.6457918392698,45.5016270016637],[-73.6460468063084,45.5017389856868],[-73.6462207569761,45.5018259649154],[-73.6464178332431,45.5019169642694],[-73.6516117839576,45.5043109125054],[-73.656644809694,45.5037580229215],[-73.6599988175418,45.5047070579263],[-73.6600818328942,45.5033210679571],[-73.6605367461894,45.5024300591785],[-73.6612118180476,45.5023471284348],[-73.6623618020394,45.5022061064441],[-73.6623478035756,45.5021470921449],[-73.6622757782317,45.5018041463698],[-73.661940760251,45.5002281502092],[-73.6617467411198,45.4992181640805],[-73.6633698755656,45.499240144866],[-73.6637508006019,45.4992440960343],[-73.663368872267,45.499001124521],[-73.6562268806695,45.4943261292561],[-73.6614959473737,45.4901010854515],[-73.6633390261303,45.4886231232913],[-73.663482945118,45.4885080869647],[-73.6640779782916,45.4880300909431],[-73.6644029509904,45.4877630649045],[-73.6648610298386,45.4874020707684],[-73.6653490051192,45.4870180795779],[-73.6654299736619,45.4870661094615],[-73.6656340079766,45.4869060736437],[-73.6659050195752,45.4867371205642],[-73.6660959803106,45.4866180498351],[-73.6663019935009,45.4866310699576],[-73.667205048339,45.4868160427585],[-73.6678730771256,45.486953116178],[-73.6685969961669,45.4873970771248],[-73.6751680077292,45.4912830681118],[-73.6760480155997,45.48806509021],[-73.676278992894,45.4873851033249],[-73.677212053007,45.4836885142825]],[[-73.7229892547875,45.4217852596423],[-73.7218423965817,45.4218739542458],[-73.7160913996896,45.4222552760546],[-73.715843370092,45.4222690570878],[-73.7119530754273,45.4224850915625],[-73.7073140787744,45.4227074300966],[-73.7017859058056,45.4229296207284],[-73.6972024343418,45.4230684718134],[-73.6920634895951,45.4231796631821],[-73.6869799160306,45.4231519203659],[-73.6820075996991,45.4230407739052],[-73.6769240815463,45.4228462961792],[-73.6718128722204,45.422568699642],[-73.6698682836578,45.4224298042186],[-73.666201702501,45.4218186969709],[-73.6661041107315,45.4217973659872]],[[-73.6661041107315,45.4217973659872],[-73.6660087565942,45.4284426792555],[-73.665920484294,45.4286811899612],[-73.6659179762004,45.4288559886472],[-73.6659104510504,45.4290776591224],[-73.6658466511195,45.4307522371534],[-73.6658428819034,45.4309120283135],[-73.6658525421916,45.431610956886],[-73.6658659638824,45.4325670238065],[-73.6651185372331,45.4323671786218],[-73.6621185057316,45.4334422056143],[-73.6593234875261,45.4348592122126],[-73.6578425495822,45.4354731310572],[-73.6550205578309,45.4365561649154],[-73.6537695351084,45.4370890723824],[-73.6532715214688,45.4373330831347],[-73.6520335244969,45.438018152928],[-73.6506175107695,45.4388571551967],[-73.650247466789,45.4390640884276],[-73.6489454464232,45.4397681049981],[-73.6480514887261,45.4402551418216],[-73.6470944763818,45.440706073953],[-73.6453324580801,45.4414100935809],[-73.6431103548585,45.442277109922],[-73.6392792415949,45.4438391008779],[-73.6360471514086,45.4450481305807],[-73.6339661360801,45.4458702048296],[-73.6333021336862,45.4461311567716],[-73.6320371360635,45.446673095535],[-73.6309770657776,45.4472050799724],[-73.6304161205367,45.4475391426071],[-73.6299940633282,45.4477910625946],[-73.6296750884614,45.4480251393115],[-73.6290820298705,45.4483901068409]],[[-73.6290820298705,45.4483901068409],[-73.6319658361357,45.4495066838684]],[[-73.6319658361357,45.4495066838684],[-73.6358261221632,45.448144745519],[-73.636488467185,45.4478907461773],[-73.637124606526,45.4476054845466],[-73.6377315728045,45.4472902950325],[-73.63880730847,45.4466906380227],[-73.6391982514068,45.446833105429],[-73.6432913768084,45.4483600596828],[-73.6433544235023,45.4478560202068],[-73.6448363476508,45.4475930796549],[-73.6497253664219,45.4494951040274],[-73.6507360817519,45.4498714140907],[-73.6521152823043,45.4503861949197],[-73.6555573656122,45.4516707672655],[-73.656454580221,45.4520671592785],[-73.6572867181179,45.4523786747896],[-73.6575270937308,45.4524640681493],[-73.6578120880585,45.4525780905157],[-73.6581704528327,45.4527160099931],[-73.6585288143152,45.4528539373743],[-73.6590672433006,45.4530610159585],[-73.659479664664,45.4532196191551],[-73.6602730142867,45.453524730414],[-73.6625245526358,45.454392737859],[-73.6638303144561,45.4548961277185],[-73.6641657561132,45.4550285458302],[-73.6668748321283,45.4560578037871],[-73.6681676863569,45.4565489710695]],[[-73.6681676863569,45.4565489710695],[-73.6685070596757,45.4561569138883],[-73.6694198359783,45.4556326047056],[-73.6700564345867,45.4550187869932],[-73.6705550842324,45.4543070158287],[-73.671209084131,45.453527338931],[-73.6712673648164,45.45355413232],[-73.6717893687502,45.45269024703],[-73.6729892968906,45.4528110271453],[-73.6739202101433,45.4527881084785],[-73.674663826223,45.4527764437313],[-73.6775055702608,45.4527315649346],[-73.6818974372195,45.4540509202144],[-73.6850851086177,45.4548576605134],[-73.6853820034028,45.4549327734436],[-73.6872338237784,45.455401387165],[-73.686497967568,45.4567552392786],[-73.685658326364,45.4574261827925],[-73.684356724393,45.4586759296974],[-73.6839224358627,45.4591023408889],[-73.6830227641153,45.4600283753317],[-73.6831935038104,45.4600945109035],[-73.6827998737737,45.4610113695879],[-73.6818317178435,45.4613634012624],[-73.6812881204844,45.4621520780591],[-73.6828058933345,45.4631779363512]],[[-73.6828058933345,45.4631779363512],[-73.6933021787683,45.4703501169406],[-73.694778181844,45.4645171299617],[-73.699150224248,45.4675331020665],[-73.7019702829579,45.4694080858287],[-73.7047652794541,45.4713021323759],[-73.705662193786,45.4718041189557],[-73.7076623055355,45.4731151233522],[-73.7080082442405,45.4733481184171],[-73.7080983263073,45.4734021310518],[-73.7079835655602,45.4734912049656],[-73.7081490474139,45.4735992659858]],[[-73.7081490474139,45.4735992659858],[-73.7084594901248,45.4733621931792],[-73.7089626310757,45.4729873331911],[-73.7092720159762,45.4727553139056],[-73.7106621692212,45.47171138289],[-73.7108300296704,45.4715852787083],[-73.7108598484607,45.4715628924158],[-73.7108747463075,45.4715516925387],[-73.710977278655,45.4714749603801],[-73.7110804978662,45.4713986866834],[-73.7111843949948,45.4713228732629],[-73.7113193268578,45.4712258363875],[-73.711455380105,45.4711295792461],[-73.711592547083,45.4710341072476],[-73.7116565764528,45.4709897355638],[-73.7117203658767,45.4709451942108],[-73.7117839166371,45.4709004840868],[-73.7119664430947,45.4707701463261],[-73.7121469238263,45.4706384048993],[-73.7123253292091,45.4705052748402],[-73.7124367717165,45.4704206072231],[-73.712547377913,45.4703353983827],[-73.7126571506721,45.4702496537258],[-73.7126951476502,45.4702193943203],[-73.7127332484072,45.4701891994957],[-73.7127714465515,45.4701590701633],[-73.7128843789163,45.4700682514227],[-73.7129977647794,45.4699757174844],[-73.7131174861218,45.4698780541957],[-73.7132382810946,45.4697810483416],[-73.7133601407568,45.4696847035344],[-73.713466926665,45.4696015028136],[-73.7135745069761,45.4695188107027],[-73.7136828791651,45.4694366362028],[-73.7149533143217,45.4684796904918],[-73.7161506255786,45.4675777641065],[-73.7162410371261,45.4675105058041],[-73.716332639511,45.4674440496331],[-73.7164254020742,45.467378404647],[-73.7165335920798,45.4673038866396],[-73.7166432949778,45.4672304733654],[-73.716754500033,45.4671581814908],[-73.7169732016477,45.4670145682473],[-73.7171868583244,45.4668672444738],[-73.7173953437827,45.4667162968225],[-73.7175894986718,45.4665683652658],[-73.7177780009767,45.4664168582293],[-73.7179607153525,45.4662618808197],[-73.7179780459706,45.4662468159439],[-73.7179954304088,45.4662317824562],[-73.7180128699494,45.4662167812539],[-73.718109507646,45.4661350569622],[-73.7182077689817,45.4660542976854],[-73.7183076348299,45.4659745187527],[-73.718378995887,45.4659188712225],[-73.7184511362238,45.4658637251527],[-73.7185240533031,45.4658090859457],[-73.7194932753521,45.46508982951],[-73.7198974031362,45.4647895706129],[-73.7201159217937,45.4646266286476],[-73.7206786491924,45.4642101417814],[-73.7208432423001,45.4640886415677],[-73.7210087461027,45.4639677615968],[-73.7211751700596,45.4638475105362],[-73.7212695991072,45.4637796524336],[-73.7213348506284,45.4637330515684],[-73.7214005072839,45.4636867342536],[-73.721466569081,45.4636407022885],[-73.7215428723176,45.4635882278415],[-73.7216197038235,45.4635361374818],[-73.721697058484,45.4634844312183],[-73.7217595712138,45.4634431772606],[-73.7218224173551,45.4634021754969],[-73.7218855956293,45.4633614259293],[-73.7223010795019,45.4630846385489],[-73.7227013567096,45.4627969685407],[-73.7230858547634,45.4624988320316],[-73.7231491652117,45.462448156736],[-73.7232129306208,45.4623977639691],[-73.7232771510116,45.4623476591291],[-73.7234053886621,45.4622495077353],[-73.723535369486,45.4621524982966],[-73.7236670730874,45.4620566470447],[-73.7238131841235,45.4619516363097],[-73.7247695422227,45.4612823176945],[-73.724756458574,45.4612736959771],[-73.7248476468381,45.4612098832774],[-73.7245812783374,45.4610186554968],[-73.7245992593826,45.4610061936931],[-73.7230976335344,45.456201337099],[-73.7216388239629,45.4516615479975],[-73.7213714627477,45.450817666977],[-73.7208020044987,45.449020068392],[-73.7207614735746,45.4488515499721],[-73.7222981583512,45.4488817094849],[-73.722062877666,45.4481386854726],[-73.7219346543055,45.4477325011432],[-73.7217206047108,45.4470552388779],[-73.7215979135035,45.4466670762674],[-73.7212090913889,45.4454422057274],[-73.7209255891083,45.4445396846997],[-73.7208894813267,45.4445315736937],[-73.720824995668,45.4443271241959],[-73.7208114077106,45.4442837752467],[-73.720659187083,45.4437984698679],[-73.7205214587555,45.4433255259345],[-73.7204906951602,45.4432179556544],[-73.7204228992193,45.4430570899375],[-73.7203769856471,45.442895724533],[-73.7202854356712,45.4425740737867],[-73.7201927491416,45.4423003006934],[-73.7201377196297,45.4421377928651],[-73.7199298460957,45.4414486204171],[-73.7198875492755,45.4413084841296],[-73.7198810776817,45.4412876872295],[-73.7198409973679,45.4411752813939],[-73.7198244620531,45.4411279740664],[-73.7198124194465,45.4410673616047],[-73.7197808959833,45.4409662315809],[-73.7197297714147,45.4408056635637],[-73.7197096808933,45.4407462796274],[-73.7196764626541,45.4406454335358],[-73.7196389160814,45.4405325744337],[-73.7196246385987,45.44048498099],[-73.7196045366409,45.4404255619185],[-73.7195729782845,45.4403244929522],[-73.7195245604155,45.4401635063526],[-73.7194738983219,45.4400028668537],[-73.7193215595051,45.4395331984755],[-73.71931280618,45.4395000065598],[-73.7192967938154,45.4394263435043],[-73.7200875151398,45.4393582868117],[-73.7200345857808,45.438971265358],[-73.7208062806789,45.4393289298785],[-73.720756284826,45.4390784485551],[-73.7207850977224,45.4390599824444],[-73.720853080231,45.4385274186133],[-73.7229892547875,45.4217852596423]],[[-73.6661041107315,45.4217973659872],[-73.6653125340744,45.4216243446996],[-73.6636183429176,45.4210965490589],[-73.6553955841186,45.4178743263042],[-73.6535344843182,45.4169021305945],[-73.65103454441,45.4150688260579],[-73.6482564406312,45.4132910128954],[-73.6461730458609,45.4121521258833],[-73.6435896752735,45.4109299486928],[-73.6413120060766,45.4102077190387],[-73.6387282252219,45.4097633547747],[-73.6362561472612,45.4096521474674],[-73.6341727832382,45.4097079112598],[-73.6317002996178,45.409957847374],[-73.6292282386475,45.4102634323668],[-73.6264223549418,45.4104023693928],[-73.6228666364334,45.4103190281139],[-73.6212833586224,45.4103746170764],[-73.6185333760578,45.4105967058638],[-73.6162830238401,45.4108467549914],[-73.614616545082,45.4110967274878],[-73.6113661242248,45.4117356507488],[-73.6065604561412,45.412957840184],[-73.6032548906407,45.4140412453756],[-73.6012547201525,45.4147635320498],[-73.5989489184578,45.415569024131],[-73.5974167883797,45.4159908847123],[-73.5966711764692,45.416180055676],[-73.5963932572156,45.4162357267863],[-73.5937821963311,45.4167634601501],[-73.5915044924121,45.417069033539],[-73.5888099330437,45.4172356703152],[-73.5864209660268,45.4172635251077],[-73.581614808127,45.4170968623117],[-73.5765033929602,45.4170969644544],[-73.5733367983951,45.4171803429746],[-73.5708365861484,45.4173471766698],[-73.5683366489682,45.4175692991983],[-73.5649198910695,45.4180416118538],[-73.5616975260911,45.4185971345183],[-73.5596419337656,45.4190694450497],[-73.5553083054878,45.4202917011105],[-73.5539471412987,45.4207639312942],[-73.5513637449104,45.4216805258347],[-73.5484471066088,45.4229305318166],[-73.5458637040658,45.4242915691537],[-73.543530608637,45.4256527376327],[-73.5408637034558,45.4272915897005],[-73.5398579830246,45.4280063599261]],[[-73.5398579830246,45.4280063599261],[-73.5838854919383,45.435017900671],[-73.5993974145556,45.4374840663238]],[[-73.5993974145556,45.4374840663238],[-73.6118004932302,45.4394490122078],[-73.6105933753783,45.4426361001336],[-73.6104503054727,45.442978044772],[-73.6102642968112,45.4433101327707],[-73.6100392463418,45.4436291198556],[-73.6097752545,45.4439331161355],[-73.6094742140327,45.4442201407923],[-73.6068868974794,45.4464912966843],[-73.6055458037641,45.4476942768695],[-73.605369743629,45.4478323159627],[-73.6052117363113,45.4479813163162],[-73.6050717768839,45.4481392983613],[-73.6049527122252,45.4483053595985],[-73.6048547493783,45.4484773393864],[-73.604807707933,45.4485863660028],[-73.6047827336364,45.4487093199002],[-73.6047897154512,45.4488343137374],[-73.606595939391,45.4539012704808],[-73.6068229739847,45.4545462246216],[-73.6121020323687,45.4569513555897],[-73.6136069929782,45.4576943099484],[-73.6201139906435,45.4548252285575],[-73.6208281021317,45.4544862824262],[-73.6214980188519,45.4541052584758],[-73.6220710371931,45.4537422208652],[-73.6223240156066,45.4535892227968],[-73.6227950163629,45.4532612144131],[-73.6255510191322,45.4513161827494],[-73.6263110224133,45.450751161075],[-73.626998045521,45.4501421230244],[-73.6275990664249,45.4495021293978],[-73.6288140769018,45.448289073351],[-73.6290820298705,45.4483901068409]],[[-73.5592306898526,45.5398986242761],[-73.5610486514678,45.5401086797545],[-73.5636517542747,45.5403666121292],[-73.567114710442,45.5406936761429],[-73.5690667608012,45.5409057335781],[-73.5736737785322,45.541359700419],[-73.574017810734,45.5413807175834],[-73.5764927524736,45.5415727416349],[-73.5771967470294,45.5415957505788],[-73.5775446626919,45.5415967719146],[-73.5780336664692,45.5415817660779],[-73.5786067115566,45.541542762552],[-73.5791097089261,45.5414886864044],[-73.5796567245868,45.5414127128987],[-73.5800766819584,45.5413416866382],[-73.5805056962644,45.541252743576],[-73.5810606578124,45.541123754405],[-73.5815087330357,45.5409987094571],[-73.5820707049476,45.5408297561176],[-73.5824746997021,45.5406847614449],[-73.5829796956741,45.5404907394322],[-73.5838506739363,45.5400848110122],[-73.584191658983,45.5398988345166],[-73.5851887116832,45.5392598345628],[-73.5854126875088,45.5390908541137],[-73.586655715332,45.5380419332307],[-73.5892078258429,45.5358500177486],[-73.5912088689105,45.5342081035264],[-73.595157927651,45.5308490791859],[-73.5955219132733,45.5305850983631],[-73.596188912561,45.5301611241946],[-73.5971359375373,45.5296621253385],[-73.5980219183509,45.5292900599946],[-73.5986048965885,45.5290841059584],[-73.5992859680526,45.5288770739501],[-73.5997769047219,45.5287601058379],[-73.6001399299509,45.5286860843851],[-73.6012159982325,45.528517120145],[-73.6023780039335,45.5283981055031],[-73.6045859873054,45.5283520992322],[-73.6057849847563,45.5283731308991],[-73.6061840218251,45.5283641205522],[-73.6064669723294,45.5283371295353],[-73.6068910354485,45.5282731075219],[-73.6073930645886,45.528173103127],[-73.6078560572055,45.5280371369576],[-73.6083059882386,45.5278650929998],[-73.6088439552983,45.5276261015922],[-73.612422919886,45.5256420616179]],[[-73.612422919886,45.5256420616179],[-73.6122399832393,45.5255640375319],[-73.6027967704682,45.5213480469144],[-73.5967786568455,45.5186900628813],[-73.5913807820754,45.5162801450928],[-73.5913087273834,45.5162461850563],[-73.590205784111,45.5157531802494]],[[-73.590205784111,45.5157531802494],[-73.5898038527872,45.5162821189518],[-73.589329823556,45.5167521648295],[-73.588249832576,45.5162831534474],[-73.5866209258684,45.515553109784],[-73.5824311133809,45.513601099907],[-73.5801882083286,45.5124581897934],[-73.5796102246222,45.5121501911631],[-73.5792041753087,45.5118141708293],[-73.5785722302299,45.5113411501201],[-73.5781491746134,45.5108461168909],[-73.5785002617101,45.5102881009511],[-73.5789882552803,45.5098771269704],[-73.5795421952856,45.5093031215612],[-73.5801323095696,45.5081951568356],[-73.576104013202,45.5062182398167],[-73.5734439212372,45.5049542690125],[-73.5730339444319,45.5054312040147],[-73.5726709474589,45.5059971985846],[-73.5719459912642,45.5072121531739],[-73.5713009679028,45.5083051174564],[-73.5708169830677,45.5092361054354],[-73.5701779876395,45.5107450266126],[-73.5694320010726,45.5124890647088],[-73.5677339236421,45.5162970637949],[-73.5655648192219,45.5211118884872],[-73.5655598331713,45.5213689022388],[-73.5655387286906,45.5217498405612],[-73.565478699997,45.5227208631344],[-73.5653777326036,45.5231618696269],[-73.5651077287913,45.5241737787422],[-73.5645856320741,45.5258177593445],[-73.5629925868819,45.5309197749242],[-73.5613836655163,45.5358337447872],[-73.5601746655118,45.5381566979218],[-73.5592306898526,45.5398986242761]],[[-73.5993974145556,45.4374840663238],[-73.5946690226256,45.4431892099677],[-73.5935769817139,45.4442902298626],[-73.5929059641192,45.4449502663461],[-73.5922129470816,45.4456432490745],[-73.5921319500057,45.4456312525607],[-73.5906198477406,45.4476272761096],[-73.5905178773699,45.4477602785393],[-73.5895417718362,45.4479752148593],[-73.587301741834,45.4501962121303],[-73.5868967271875,45.4505632520352],[-73.5866837608396,45.4507352140088],[-73.5865197545808,45.4508572813951],[-73.5857497490993,45.4514312202668],[-73.5841867166578,45.4525122305749],[-73.5840017397609,45.4526502393435],[-73.5832896473991,45.4532642591481],[-73.5830146850852,45.4535293175506],[-73.5827086813954,45.4538442560052],[-73.5822606462578,45.4543193042607],[-73.5818966524899,45.4547883427912],[-73.5815276979444,45.4553322602676],[-73.5812487081355,45.455810326934],[-73.5810206354008,45.4562493063437],[-73.5808784282122,45.4565857692612],[-73.5807548322293,45.4569258535532],[-73.5806500336367,45.4572690507015],[-73.5804073577404,45.4582436671681],[-73.5803031459625,45.459291086851],[-73.5803286899427,45.4598693652176],[-73.5803549192526,45.4601430200811],[-73.5803981247474,45.4605935929864],[-73.5804250300605,45.4607602043085],[-73.5805942586815,45.4615124461992],[-73.5808535120379,45.4624249615467],[-73.5808936435286,45.4625916089755],[-73.581005858107,45.4633230879727],[-73.5810229813716,45.4634664649613],[-73.5810426837532,45.4638295141462],[-73.5810551898188,45.4643104034322],[-73.5809627027485,45.4654551829017],[-73.5809219838412,45.4656973746465],[-73.5808825144729,45.465910030266],[-73.5808377741481,45.466122250551],[-73.5807877778024,45.4663338069256],[-73.5807269956159,45.4665640269796],[-73.5788604229342,45.4664828006397],[-73.5787637204685,45.4675772317591],[-73.5776955036394,45.4675304911315],[-73.5774574197066,45.4677948139799],[-73.5759694474283,45.4677296880892],[-73.576075805274,45.466526623435],[-73.5725997197174,45.4663751553698],[-73.5725691465504,45.4663747629114],[-73.5725386423344,45.4663762447884],[-73.5725084359613,45.466379590955],[-73.5724787601389,45.4663847751656],[-73.5724498373292,45.466391759484],[-73.5724218899721,45.4664004888765],[-73.5723951289856,45.4664108984192],[-73.5723697575954,45.4664229078956],[-73.5723459700629,45.4664364271969],[-73.5723239465655,45.4664513527258],[-73.5723038532012,45.4664675709958],[-73.5722858432689,45.4664849595301],[-73.5722700559878,45.466503385963],[-73.5722566075485,45.4665227098443],[-73.5722456026234,45.466542783533],[-73.5722371241418,45.4665634567021],[-73.572231237118,45.4665845700376],[-73.5722279861057,45.4666059642383],[-73.5720285048274,45.4688330168627],[-73.5718680460055,45.4702724704379],[-73.5717201122084,45.4722705198354],[-73.5714071140445,45.4725084804974],[-73.5717041782116,45.4728335332474],[-73.5718401909882,45.4731015393027],[-73.5723451195517,45.4741024930212],[-73.5721141665246,45.4741605057235],[-73.5708291763847,45.4744185178838],[-73.5705162415641,45.4744735182477],[-73.5701972690875,45.4745095317977],[-73.5698752111594,45.4745254786672],[-73.5695522848982,45.4745225264089],[-73.5692312326667,45.4744995026593],[-73.5689142689329,45.4744564979005],[-73.5686032959109,45.4743944990795],[-73.5683022174383,45.4743135048235],[-73.568011243588,45.4742135159988],[-73.5651172554904,45.4731064786263],[-73.5629772463762,45.4722905406474],[-73.5630852185887,45.4721515314005],[-73.560973239234,45.4713394996355],[-73.5597412593085,45.4708835237607],[-73.5564354357745,45.4697112970061],[-73.5538776434711,45.4688030684979],[-73.5534326505313,45.4688550299764],[-73.552937581469,45.4689420222104],[-73.5524565670116,45.4690600555171],[-73.5519905541684,45.4692060675229],[-73.551779559952,45.469302103135],[-73.5508785692256,45.4697570861037],[-73.5500375270849,45.47026611411],[-73.5492625465885,45.4708241540041],[-73.546021384575,45.4731172362101],[-73.5428472771015,45.4748973260876],[-73.5420602841526,45.4753453262075],[-73.5409312653489,45.4758652769126],[-73.5391672540822,45.4764693187956],[-73.5389092385276,45.4765342931181],[-73.5384451731991,45.4765933057065],[-73.5381631683897,45.4765993395953],[-73.5377741772011,45.4765933480507],[-73.5373842212494,45.476558286818],[-73.5368382323131,45.476503288976],[-73.536116261254,45.4764253024043],[-73.5355512757608,45.47635329577],[-73.5353982879291,45.4763252625777],[-73.5349052453019,45.4762373013014],[-73.5341842906374,45.4760802871129],[-73.5297155768494,45.4750671791465],[-73.5212763404032,45.4731533628261]],[[-73.5212763404032,45.4731533628261],[-73.5220629297227,45.4742465203548],[-73.5223013378201,45.4745722324391],[-73.5225012927172,45.474910511052],[-73.5226614618739,45.4752591128462],[-73.5291826363344,45.4917076069951]],[[-73.5291826363344,45.4917076069951],[-73.5297260339216,45.4915230858779],[-73.535405999619,45.4895902243632],[-73.5399129414637,45.4880523958515],[-73.5402509178576,45.4881843864784],[-73.5406039709933,45.4882943234579],[-73.5409689337849,45.48838337659],[-73.5412569433888,45.488435380304],[-73.549312964988,45.4899903270932],[-73.5494859543922,45.4900273293934],[-73.5496679205605,45.4900723370077],[-73.549899922069,45.490135321112],[-73.5500889690348,45.4901913937655],[-73.550266940273,45.4902503503108],[-73.5504810169866,45.4903263893101],[-73.5506889767427,45.4904073806001],[-73.5508519747321,45.4904773226282],[-73.550967994181,45.4905273063084],[-73.5511379650906,45.4906083136674],[-73.5513450009874,45.4907143213276],[-73.5515159351977,45.4908083761554],[-73.551767014088,45.4909553101024],[-73.5519889723132,45.4911063059805],[-73.5527500259294,45.4916593180264],[-73.5534449179275,45.4924583100288],[-73.5538219640431,45.4930273371825],[-73.5542788965547,45.4941702986313],[-73.5546417779009,45.4949183178422],[-73.5550977601888,45.495439324723],[-73.5556377667423,45.4958513028074],[-73.5560687950318,45.4960652607914],[-73.5586558674546,45.4970641649168],[-73.5595458467295,45.4974361708526],[-73.5613819337669,45.4983160886715],[-73.5623428375509,45.4964722056253],[-73.5630928909463,45.4952512696567],[-73.5638388424598,45.4941563082779],[-73.5645008829016,45.4932643109994],[-73.5671788752145,45.49009234129],[-73.5687328044439,45.4908522918004],[-73.5698455173482,45.4913623696873],[-73.5730731113373,45.4929081570495],[-73.5761830149272,45.490553327871],[-73.5769825997116,45.4899640411638],[-73.5782545966912,45.4889815378342],[-73.5784434727384,45.4888372844831],[-73.5788497763445,45.488527099886],[-73.5803207524328,45.4875027714921],[-73.5807756211484,45.487201671627],[-73.5815240781672,45.4867156699989]],[[-73.5815240781672,45.4867156699989],[-73.5806059889231,45.4855663223266],[-73.5807761235675,45.4854517969429],[-73.5830128375541,45.4839453686739],[-73.5843512143286,45.48304435949],[-73.5851248265437,45.4822492293223],[-73.5857669236011,45.4825564986615],[-73.585842159093,45.4825040232766],[-73.5859519485223,45.4824275360745],[-73.5860194907969,45.4824354645839],[-73.5860874647701,45.4824412961226],[-73.5861557373741,45.4824450182002],[-73.5862241755523,45.4824466255248],[-73.5862926475283,45.4824461137039],[-73.5863610228148,45.4824434846428],[-73.5866410201649,45.4823565071678],[-73.5866845273386,45.4823261561975],[-73.5867397768813,45.4822871676185],[-73.5893576021328,45.480460452931],[-73.5900068258423,45.4800093599206],[-73.5901758526521,45.4798926443477],[-73.5905176800022,45.4796559312425],[-73.5905654521352,45.4796236163474],[-73.5908679006227,45.4794136816625],[-73.5917058640612,45.4788284356538],[-73.5921757368073,45.4785019228773],[-73.5922621728772,45.478441781781],[-73.5925892676331,45.4782166858588],[-73.5929575787764,45.4779613438934],[-73.5934780420252,45.4775990280753],[-73.593757708561,45.477402563076],[-73.5939081070373,45.4772985787684],[-73.5946866828007,45.4767563915303],[-73.5951357763157,45.4764447402168]],[[-73.6352965061135,45.4507753419737],[-73.6352364539272,45.4507523232681],[-73.6349223305298,45.4506320608805],[-73.6339251893613,45.4502524832022],[-73.6336011527952,45.450129294258],[-73.6331904600711,45.4499732183878],[-73.6322407594411,45.4496121579703],[-73.6319658361357,45.4495066838684]],[[-73.9743520622515,45.4664301916245],[-73.95671430917,45.468627318003],[-73.9560172373531,45.4690344356752],[-73.9506348007981,45.4708771485253],[-73.9465827638345,45.4719644450953],[-73.9426009352941,45.4725825954631],[-73.9398666832536,45.4734502615387],[-73.9373872489873,45.4744597383053],[-73.9360702550261,45.474821901921],[-73.9343959997382,45.4749354189754],[-73.934040953626,45.4749724817992],[-73.9332287910759,45.4749755651759],[-73.9324684878393,45.475121298356],[-73.9314258243231,45.4755719500602],[-73.9309021177321,45.4756810652706],[-73.9303771371097,45.4756235242626],[-73.9297836600174,45.4754591013148],[-73.9291067633181,45.4754497434048],[-73.9285490309085,45.4755351676628],[-73.9278213718023,45.4755259927662],[-73.9273474246924,45.4755039588437],[-73.9269749101058,45.4754696404792],[-73.9264161840744,45.4754241116059],[-73.9259599687121,45.4755091440333],[-73.925520671925,45.4755941124903],[-73.9250117190186,45.4754174447272],[-73.9247393831571,45.4752041823883],[-73.9240390476062,45.4746264556634],[-73.9236842595966,45.4742468374408],[-73.923164908845,45.4735821254513],[-73.9223030843491,45.4728682051429],[-73.9213857141394,45.4723716155643],[-73.9209366014564,45.4720447151632],[-73.9205681804527,45.4716460902931],[-73.9201777667243,45.4710189822783],[-73.9200926339607,45.4704907443954],[-73.9199478694291,45.470134147652],[-73.919620707468,45.4698210781567],[-73.9191318763005,45.4696085969111],[-73.9185611025765,45.4692964183679],[-73.9181528503051,45.4689979251307],[-73.9176545831493,45.4682397742292],[-73.9173758096115,45.4671455900582],[-73.9172323648489,45.466050913826],[-73.9165486245793,45.4651010609619],[-73.9151213198805,45.4642491464179],[-73.9139030042618,45.4642059529419],[-73.912552144622,45.464544164925],[-73.9113019412171,45.4650826247676],[-73.9101663707734,45.4652581321055],[-73.9081642279234,45.4653795877347],[-73.9065404575149,45.4654234852412],[-73.9050793609848,45.4655048770156],[-73.9036449270758,45.4655290068466],[-73.9027249170487,45.4655703427904],[-73.901211991235,45.4659756501453],[-73.8990323041609,45.4668342007614],[-73.8982316745657,45.4672536554622],[-73.8971785250016,45.4678525586814],[-73.8964203697018,45.4683016254958],[-73.8955369887196,45.4689892357903],[-73.8946942236627,45.4694386161498],[-73.8935543453588,45.469740209624],[-73.8918633752148,45.4698651229109],[-73.8901735550518,45.4701685312386],[-73.8885266133199,45.4705610445023],[-73.8875578415411,45.4711595611894],[-73.8867167651049,45.4718766621746],[-73.8860454810229,45.4726824848489],[-73.8856215908137,45.4731712120336],[-73.8840026208922,45.4739576184355],[-73.8832464262515,45.4742268314703],[-73.8826253263591,45.4744574876851],[-73.8822084254766,45.4748588911696],[-73.8820008428167,45.4752540554252],[-73.8786141673239,45.470927299705],[-73.8785531231598,45.4708309880105],[-73.8783554320162,45.4705686042949],[-73.8782881659159,45.4704793079776],[-73.8779622133952,45.4706059088091],[-73.8773564207684,45.4708412132182],[-73.8771065407592,45.4709326559877],[-73.8766323186583,45.4711097876902],[-73.8761677558472,45.4712824566678],[-73.8761803524045,45.471298531609],[-73.875285328937,45.4716723203709],[-73.8746682570708,45.4719504606254],[-73.874416491579,45.4720641186786],[-73.8735952365252,45.4724344272792],[-73.8733091513239,45.4725604713723],[-73.8729079991446,45.4727003793883],[-73.8724356676912,45.4728729794098],[-73.8723076147145,45.4729138285038],[-73.8718758441038,45.4730631650868],[-73.8716550279942,45.4731402829673],[-73.8712083347581,45.4732963089821],[-73.8716965717947,45.4739461795846],[-73.8717468946609,45.4740126432326],[-73.8719051723279,45.4742217644525],[-73.8721700544029,45.4745767546451],[-73.8723598658275,45.4748359231642],[-73.8725551370548,45.4750969453027],[-73.8729561696023,45.4756140771888],[-73.8723643397986,45.4760842011761],[-73.8719054566885,45.4764486932414],[-73.8716486988864,45.4766656504909],[-73.8714828139564,45.4767976521836],[-73.8712107988238,45.4770237004653],[-73.8710049271635,45.4771878708841],[-73.8707132104035,45.4774311265061],[-73.8705769592418,45.4775569584759],[-73.8703118649695,45.477772797338],[-73.8686142466137,45.4793345668725],[-73.8669403046266,45.4806131607994],[-73.8661065308375,45.4812721531105],[-73.8659384717449,45.4814120009068],[-73.8657983185182,45.4815286565814],[-73.8656581893556,45.4816452592791],[-73.8655178592372,45.4817617833574],[-73.8653662227767,45.4818878867213],[-73.8652803143056,45.4819476181379],[-73.8650764670449,45.4821173249938],[-73.8649513720721,45.4822256799637],[-73.8647317648935,45.482415841271],[-73.8646937242214,45.4824406557844],[-73.8644316980534,45.4826201168639],[-73.8641740706723,45.4827961976759],[-73.8639821115822,45.4829274102742],[-73.8635527040273,45.4832224756894],[-73.8634324259363,45.4833153211704],[-73.8628874457049,45.4837134783185],[-73.8624496756102,45.4840270990791],[-73.8622078236199,45.4842768617815],[-73.8614372563299,45.4850691285369],[-73.8613447748505,45.485165144017],[-73.8611041261792,45.4853505755896],[-73.8608229353918,45.4855886052365],[-73.8606835083506,45.4857048656014],[-73.8600494437725,45.4862296729572],[-73.8598669990185,45.4863830020029],[-73.8590837360551,45.4870429343983],[-73.858918785746,45.4871819886442],[-73.8587630543297,45.4873131312563],[-73.8590460868292,45.487751646141],[-73.8591562870538,45.4879222352364],[-73.8593482509139,45.4882196087172],[-73.8595077550413,45.4884692445766],[-73.8595864124281,45.4885790171775],[-73.8601841587048,45.4898658637951],[-73.8601991405396,45.4898569850834],[-73.8603304321935,45.489795479937],[-73.86039788544,45.4897699677734],[-73.8604360708338,45.4897589419368],[-73.8605384694276,45.4897433108657],[-73.8606286301586,45.4897364531669],[-73.8607420080414,45.4897419476775],[-73.8608624485546,45.4897421472322],[-73.8609726433735,45.4897695940888],[-73.861112578248,45.4898564649193],[-73.8611898073387,45.4899335424224],[-73.8613080952547,45.4900894285919],[-73.8613238897379,45.490124968219],[-73.8613149975742,45.4901606738079],[-73.8613087547089,45.490212109522],[-73.8612905262729,45.4902805079698],[-73.8612780371993,45.4902968835297],[-73.8610948270918,45.4906291533658],[-73.8610764263658,45.4906628283099],[-73.8610240317564,45.4907457155317],[-73.8608769863486,45.4909426083099],[-73.8608396368399,45.4909868178371],[-73.8608221685074,45.4910061089659],[-73.8607825416601,45.4910341389988],[-73.8607602378312,45.4910475137936],[-73.860736468478,45.491054837792],[-73.8610746859869,45.4917829025563],[-73.8603882416009,45.4921607093145],[-73.8599259963179,45.4926681073554],[-73.8598434435623,45.4929957386452],[-73.8593398142821,45.4936520648419],[-73.8590041178979,45.4940995331873],[-73.8584570254785,45.4945774224243],[-73.8577483633989,45.4954916624483],[-73.8573115606385,45.4960168517676],[-73.8571460491802,45.49661257502],[-73.8572852253618,45.4972073259795],[-73.8578306598911,45.4978007898105],[-73.8590204133915,45.498558892755],[-73.8597691750986,45.4991755396956],[-73.860721709422,45.4998867608158],[-73.8610643933102,45.5005285133283],[-73.8611693193131,45.5010519823784],[-73.8610039972451,45.5016715454496],[-73.8606016710194,45.5022918582364],[-73.8599954313599,45.5027937667838],[-73.8591863419762,45.503343927562],[-73.8587492286446,45.503821482704],[-73.8584141269462,45.504370154095],[-73.8582478435228,45.5048468797838],[-73.8582172887448,45.5053708015624],[-73.858457449672,45.5058700701254],[-73.8586977724589,45.5063931389636],[-73.8589727118894,45.5070351487652],[-73.8587386982793,45.5075120936888],[-73.8581323807179,45.5080140025028],[-73.8572209221538,45.5084453372653],[-73.856139703457,45.5088057417856],[-73.8550936456387,45.5093803439491],[-73.8544202952856,45.5100014600924],[-73.8537819485081,45.5108129610324],[-73.8531785538655,45.511485284942]],[[-73.8531785538655,45.511485284942],[-73.85400038625,45.511677119221],[-73.8545151980086,45.5121820556846],[-73.8548830341307,45.5125425169275],[-73.855360801973,45.5129025829725],[-73.8556916895428,45.5131909436579],[-73.8560952823242,45.5134066350342],[-73.8563540909021,45.5138157181006],[-73.8565027325203,45.5142491746933],[-73.8564321770204,45.5146111472075],[-73.8565812870145,45.515068721059],[-73.8570218712737,45.5153566550349],[-73.8582315047528,45.5158351200314],[-73.8593684366468,45.5163619558924],[-73.8606518347258,45.5169364660086],[-73.8617527741415,45.5175357467775],[-73.8622676798035,45.5179922593793],[-73.8627468767974,45.518593512325],[-73.8628872587683,45.5191115105267],[-73.8629437428368,45.5193403598367],[-73.8630917572263,45.5196171586085],[-73.8632943597017,45.5198456405545],[-73.8635693976863,45.51997733465],[-73.864027041911,45.520036195455],[-73.8647949003897,45.5200336938041],[-73.8659093766699,45.519885570913],[-73.8668046835418,45.5198345850431],[-73.8677921974268,45.5198434132147],[-73.8685061614612,45.5199855967346],[-73.8692384530587,45.5201038677017],[-73.8698055054922,45.5201260293506],[-73.8704085565229,45.5200517774728],[-73.8716519789732,45.5200597681994],[-73.8734077352447,45.5201262907924],[-73.875969051049,45.5203830894379],[-73.8770483599444,45.5204760133899],[-73.8783291398831,45.5206043500269],[-73.8794282341744,45.5208901306861],[-73.880399808509,45.521284662997],[-73.8812986906978,45.5217156921171],[-73.8821597841372,45.5219900746379],[-73.8831483839087,45.5221796983007],[-73.8843191015159,45.5222360408203],[-73.8856356527678,45.5222314905747],[-73.8871706729815,45.5221056878757],[-73.8890898743208,45.5219786646646],[-73.8900773250977,45.5220113847146],[-73.8910115116986,45.5222493670515],[-73.8923867349532,45.5227872122125],[-73.8934610480697,45.5234585506858],[-73.894894231405,45.5244663005615],[-73.8961396189199,45.5255449748978],[-73.8986513024253,45.5246421496237],[-73.8998793049117,45.5244588551968],[-73.9002785454365,45.5243991393564],[-73.9039847760143,45.5234869497912],[-73.9076889138296,45.5222748851383],[-73.910482868125,45.5209660920039],[-73.9128182940882,45.5191593401486],[-73.915451652791,45.5167019861741],[-73.9194451623347,45.5137401248084],[-73.9239744213497,45.5115753609365],[-73.927978474265,45.5101617615199],[-73.9301305798079,45.5092544665326],[-73.9333746291851,45.5075438654567],[-73.9345453003648,45.506560927918],[-73.9354067620372,45.5058377044078],[-73.9384149901414,45.5030786228965],[-73.9414212483532,45.5001197712489],[-73.9449557352434,45.496909046634],[-73.9462398637514,45.4958465263529],[-73.9482122148483,45.4939298659003],[-73.9499068136555,45.4923466156721],[-73.9518511481361,45.4903743906665],[-73.9536292032225,45.4885133079125],[-73.955323643988,45.486596643114],[-73.9573234541887,45.484291035894],[-73.9589625482419,45.4823467269832],[-73.9601846822434,45.4808188535826],[-73.9613237718695,45.4793744576303],[-73.9629351235048,45.4772078325346],[-73.9645183408775,45.4749577826074],[-73.9657127391591,45.4734300534264],[-73.9674350404496,45.4715689779916],[-73.9690741303427,45.4701523334085],[-73.969685063287,45.469624532635],[-73.9709076125609,45.4686801482828],[-73.9721574964496,45.467819153995],[-73.9728519820087,45.4673745930486],[-73.9743520622515,45.4664301916245]],[[-73.5068798058957,45.610651036789],[-73.5086303771476,45.610953112881],[-73.5087345183782,45.6109668270635],[-73.5092900554807,45.6110617384212],[-73.5094036574523,45.6110820462041],[-73.5124379079687,45.6116003938359],[-73.5126285940759,45.6116330766753],[-73.5142914695695,45.6119190608703],[-73.514596923268,45.6119699172061],[-73.5148609939166,45.61201331728],[-73.5160269147223,45.6122145031511],[-73.516409410366,45.6122797737331],[-73.5166389114957,45.6123176340853],[-73.5170758636828,45.6123920788106],[-73.5185296882212,45.6126450538762],[-73.5187604738227,45.6126795702175],[-73.5191348232161,45.6127448321381],[-73.5202583250658,45.6129354340606],[-73.520640565516,45.6129997534001],[-73.5208695087715,45.6130391595391],[-73.5212475592273,45.6131054996557],[-73.5213048722111,45.613115269219],[-73.5223660930817,45.6132964050122],[-73.522749625408,45.6133627347316],[-73.5229786731622,45.6134017878888],[-73.5233563212539,45.6134661000987],[-73.5234136287827,45.6134758686111],[-73.5244913875732,45.6136596175706],[-73.5248696531218,45.6137241795033],[-73.5371866179934,45.6158357657932]],[[-73.5696559300578,45.5965919209051],[-73.5696790182423,45.5965389013409],[-73.5687970092404,45.5950969391696],[-73.5687399670033,45.5949618953058],[-73.569048031191,45.593732962558],[-73.5686770125709,45.5922959202541],[-73.5675350209055,45.5903129012513],[-73.5674280357327,45.5901318994406],[-73.5663610942248,45.5883388881755],[-73.566273078279,45.5882838637729],[-73.5660100898924,45.5881198701259],[-73.5642220454459,45.5872438167513],[-73.564182015506,45.5871818352729],[-73.5641540216978,45.5868298928402],[-73.5642160193216,45.5854018691201],[-73.5639439655983,45.5849698788417],[-73.56607210689,45.5843148913896],[-73.5659310590596,45.58419285321],[-73.5658330374226,45.5840738497687],[-73.5657290046399,45.5839669091911],[-73.5656250912515,45.5838718471143],[-73.5654740549054,45.583702838334],[-73.5654100380692,45.5836468996915],[-73.5653470692742,45.5835818712251],[-73.5652670389034,45.5834808555136],[-73.5651930357418,45.5833798363424],[-73.5648899876129,45.5831078773449],[-73.5648789752391,45.5830908753324],[-73.5648270341154,45.5830558982825],[-73.5649229712754,45.5830208383073],[-73.5649580325615,45.5829939116374],[-73.5649810496807,45.5829708618026],[-73.5650950398192,45.5829178835642],[-73.5652420742952,45.5828298813444],[-73.56527603118,45.5828528990957],[-73.5656050371516,45.5828168979626],[-73.5658649931894,45.5828478863438],[-73.5660320021384,45.5828478811332],[-73.5661090319651,45.5828258800389],[-73.5661410676309,45.5827438811565],[-73.5661380216396,45.5826718910865],[-73.5661490636318,45.5825359103421],[-73.5662019957241,45.5825149127709],[-73.5662560373371,45.5825398992078],[-73.5663380215362,45.5825069157087],[-73.5664000753461,45.5825129097472],[-73.5667620761579,45.5823209355747],[-73.5668130365899,45.5822459459754],[-73.5669320749019,45.5821779376479],[-73.567007032004,45.5821059038337],[-73.5671060085292,45.5819688848992],[-73.5673140328019,45.5820669459751],[-73.5673930552453,45.5820359453041],[-73.5674350489518,45.5818889683923],[-73.5674770226079,45.5818989334556],[-73.5675249787967,45.5818749696127],[-73.567590010884,45.5818989595161],[-73.5676350436838,45.581903973842],[-73.5676670616194,45.5818979260718],[-73.5677170380177,45.5818829590879],[-73.5677989652409,45.581893982037],[-73.5678590011704,45.581893947917],[-73.5678979939214,45.5818869063202],[-73.5679460586996,45.5818649217923],[-73.5679729874823,45.5818459177566],[-73.5679990472001,45.5818069375152],[-73.5680070372691,45.5817729174248],[-73.5680089985648,45.5817339500133],[-73.568016982522,45.581694980065],[-73.5680380008611,45.5816829097105],[-73.5680790114554,45.5816829762781],[-73.5681330269129,45.5816869945663],[-73.5681920115983,45.5816929904714],[-73.5682639666427,45.5816739614724],[-73.5683590456452,45.5816359313393],[-73.5684130189386,45.5816059339414],[-73.5684380260617,45.5815710032911],[-73.568428984974,45.5815249336349],[-73.568417958282,45.581497942925],[-73.5683800426737,45.5814359622965],[-73.5683710315155,45.5814140093738]],[[-73.5683710315155,45.5814140093738],[-73.5679950315912,45.5812929185661],[-73.5674310284743,45.5811059711717],[-73.5654570183517,45.5804419774594],[-73.5643440622851,45.5800779600558],[-73.5633130626668,45.5797349436726],[-73.5616750892878,45.5791799432768],[-73.5610910464976,45.5789799240131],[-73.5600971178164,45.5786538478077],[-73.5597671429901,45.5785389123454],[-73.5595051584065,45.5784538199802],[-73.5587991282506,45.5782188370585],[-73.5587232020281,45.578177836966],[-73.5586101913093,45.5781478345452],[-73.5585221126135,45.5781088206674],[-73.5583861280013,45.5780398625075],[-73.5582501306892,45.5779588445862],[-73.5581661590682,45.5779028197415],[-73.5580561598153,45.5778198095347],[-73.5579692095191,45.5777447976467],[-73.5578911363554,45.577669781459],[-73.5578241641741,45.5775968295483],[-73.557749181425,45.5775468299683],[-73.5560033177972,45.5759037631672],[-73.5557953147606,45.5757777810555],[-73.555692304089,45.575701785466],[-73.5555322470932,45.5756477738522],[-73.5502333080258,45.5738776505782],[-73.5489663383439,45.5734586502918],[-73.5490823326606,45.5732886047084],[-73.5495523116732,45.5725896125575],[-73.5497733150404,45.5722626647568],[-73.5500213341892,45.5718966483283],[-73.5503033298567,45.5714766237048],[-73.5506952927773,45.5708966345487],[-73.5510652866047,45.5703616452775],[-73.5514872787674,45.5697346569926],[-73.5519741683424,45.56902259142],[-73.5523992018088,45.5683936120345],[-73.5529541136174,45.5675706315176],[-73.5540880308311,45.5658405045476],[-73.5542740502884,45.565560540081],[-73.5545220013334,45.5649715132015],[-73.5546300308035,45.5642595275132],[-73.5546080324041,45.5637045484082],[-73.5545700537327,45.5629074956345],[-73.5545190414505,45.5619564748176],[-73.5544620267923,45.5609095276791],[-73.5543930374425,45.5594955077617],[-73.5543529884885,45.558506508479],[-73.554311949589,45.5575944566461],[-73.5542790207148,45.5568755250885],[-73.554282008987,45.5567984897525],[-73.5542990048598,45.5564604715215],[-73.5543739841003,45.555784505714],[-73.5543879055011,45.5556514901043],[-73.5543919866928,45.5556115319251],[-73.5543959712924,45.5555814728726],[-73.5553147602383,45.5473365656903],[-73.5564747355465,45.5450975459617],[-73.5592306898526,45.5398986242761]],[[-73.5592306898526,45.5398986242761],[-73.5565055700764,45.5396016958386],[-73.5511175594313,45.5390786840818],[-73.5504055258056,45.5390016959263],[-73.549468579795,45.538845700864],[-73.5487985876517,45.5386286616474],[-73.5485186008542,45.5385017128719],[-73.5482535962147,45.5383556785445],[-73.5479166138711,45.5381437104338],[-73.5475116268951,45.5378156778294],[-73.5473605788805,45.5376657235687],[-73.5459196604184,45.5358957329662],[-73.5439877601844,45.5336787739891],[-73.5432779391542,45.531769760449],[-73.5406310898653,45.531273870499],[-73.5354348936565,45.5329980783199],[-73.5301291075517,45.5347580265772]],[[-73.5301291075517,45.5347580265772],[-73.5300242324726,45.5350059499538],[-73.5298063873729,45.5353885870305],[-73.5295396316056,45.5357556105375],[-73.5292262030454,45.5361039405393],[-73.5131377768675,45.5522857580001],[-73.5220022850777,45.5551823508915],[-73.520218264046,45.5569930644035],[-73.518617787179,45.5586220445415],[-73.5185409499283,45.5586760449985],[-73.5190918097491,45.5589279175458],[-73.5208075460842,45.557208933077],[-73.5213584013609,45.5574337814971],[-73.5216530816695,45.5576406851031],[-73.5217043642028,45.5577576561795],[-73.5215763314602,45.5578836668044],[-73.5214739377229,45.5580635738335],[-73.5212562666811,45.5582436873848],[-73.5210770411265,45.5584956826248],[-73.5208594206953,45.5588556583079],[-73.5209106902995,45.5589545369759],[-73.5210516024405,45.558999496951],[-73.5212565425674,45.5589994516997],[-73.5214743242185,45.5590894754776],[-73.5204628408856,45.5603134291196],[-73.5206293907199,45.5603943849472],[-73.5235739899325,45.556803370111],[-73.5237789513577,45.5568663110721],[-73.5240861863271,45.5564883004145],[-73.5250469778357,45.5568570032677],[-73.524944574326,45.5570010031857],[-73.5252776684343,45.5571538059935],[-73.525098455771,45.5573968965355],[-73.525265006781,45.5574778421503],[-73.5180572645242,45.566131072255],[-73.5180308755124,45.5661627483097],[-73.5159174118156,45.567278870623],[-73.5158149357082,45.567323876878],[-73.5154947075942,45.5675038879933],[-73.5156100380211,45.5676118499857],[-73.5157509382749,45.5675308454401],[-73.5157893742933,45.567539838032],[-73.5159431415412,45.5676567923062],[-73.5159303559284,45.5677467764532],[-73.5155461390875,45.5681787472231],[-73.5155461565294,45.568241734771],[-73.515597416853,45.5682956267318],[-73.5175065441087,45.5690602711238],[-73.5141119495175,45.5708964037502],[-73.5140863371857,45.5709413984572],[-73.513830106343,45.5709774243332],[-73.5139966832719,45.5710583876511],[-73.5091801386665,45.5757649696305],[-73.5059132124885,45.5805253508103],[-73.5058363382259,45.5806693275817],[-73.5059772995758,45.5807053139741],[-73.5046448023524,45.5839987350243],[-73.5054137205158,45.5842236623004],[-73.5055931362198,45.5842866424361],[-73.5056828534094,45.5844576038401],[-73.5056316027217,45.5846105745744],[-73.5054394049754,45.5850963925811],[-73.505221560824,45.5853664353814],[-73.5050293280879,45.5853214514316],[-73.5049780662357,45.5853124550423],[-73.5039273109486,45.5877419952311],[-73.5041195481696,45.5877689823208],[-73.5055553692485,45.592061150945],[-73.5057348026777,45.5920341499851],[-73.5056835080574,45.5918541796703],[-73.5058116746008,45.5918361787746],[-73.5060936677457,45.5919711487544],[-73.5068754791463,45.5918361424062],[-73.5068242262656,45.5919261299037],[-73.5068883154222,45.5919531230515],[-73.5069780565199,45.5920880976742],[-73.507055009639,45.5923940449871],[-73.5071062974109,45.5925109338426],[-73.5072216645674,45.5925920055898],[-73.5072729389349,45.5926279974231],[-73.5072985822959,45.5926819874622],[-73.5073371215372,45.5931949020391],[-73.5075037978347,45.5935007537997],[-73.5074910244103,45.5937528031609],[-73.5075166730301,45.5938337885586],[-73.5076833388666,45.59406774124],[-73.50773463044,45.5941937176692],[-73.5077731239954,45.5944275869395],[-73.5078885626706,45.5948865943702],[-73.5079142557622,45.59521053917],[-73.5080040092961,45.595381505277],[-73.5080937534236,45.5954984801779],[-73.5081450483629,45.595633454411],[-73.508234799651,45.5957864230331],[-73.5083501760918,45.5958943959248],[-73.5083886466927,45.5960113711493],[-73.5086578745238,45.5963802819494],[-73.5086707563635,45.5967852047255],[-73.5087349027446,45.5971451320847],[-73.5088502985347,45.5973610825976],[-73.508888780103,45.597532047405],[-73.5090041922051,45.5978379807458],[-73.5090555240311,45.5981979088003],[-73.5091452886004,45.5984228592311],[-73.5091453684775,45.5988997691585],[-73.5091710534443,45.5991877127071],[-73.509235177263,45.5993766718452],[-73.5091967659805,45.5996376256117],[-73.5092865581135,45.6000064586779],[-73.5092866105978,45.600312493564],[-73.509466134142,45.6006724138379],[-73.5094789701142,45.6007713949041],[-73.5094661686449,45.6008703781196],[-73.5093892733354,45.6009693667008],[-73.5093508605169,45.601221324466],[-73.5093766537218,45.6021211599296],[-73.5093510281614,45.6021931491052],[-73.5093127366749,45.603155978501],[-73.5093255636142,45.6032009692747],[-73.5092999823786,45.603533911317],[-73.5092359075336,45.6036598940518],[-73.5091847083369,45.6041188155386],[-73.5091462648767,45.6042088023759],[-73.5091334764874,45.6044067667921],[-73.509043780799,45.6046676359761],[-73.5090438045415,45.6048206975782],[-73.5089412757928,45.6050006726251],[-73.5089156861517,45.6053246145099],[-73.508851635672,45.6056395610833],[-73.508800374417,45.6057565433793],[-73.5087491345463,45.6060174987949],[-73.5086850542471,45.6061434802848],[-73.5086594319314,45.6062604604358],[-73.5085912270413,45.6067482416984],[-73.5084648598794,45.6072556542281],[-73.5083032588906,45.6074932292526],[-73.5077102933674,45.6085941356315],[-73.5073710618661,45.609536499862],[-73.5070290264566,45.6094695300544],[-73.5069943689301,45.6095567153933],[-73.5073394973632,45.6096242914501],[-73.5072859223208,45.6099062883994],[-73.5071574900932,45.6102072659247],[-73.506768999939,45.6101336416075],[-73.5067353808791,45.6102210245001],[-73.5071298188626,45.6102957777629],[-73.5072622690701,45.6104685944393],[-73.5072965293002,45.6105991059704],[-73.5069718924542,45.610641093131],[-73.5069289977924,45.6106438416012],[-73.5068798058957,45.610651036789]],[[-73.636516910282,45.5759962946569],[-73.6364935797796,45.5760250412512],[-73.6348878259482,45.5777926775955],[-73.6349011048111,45.5777985195824],[-73.6342403997738,45.5785054040897],[-73.6337973030558,45.5789930715882],[-73.6335862762084,45.5792248286153],[-73.6336111734446,45.5792480417915],[-73.6335881029708,45.579248986148],[-73.6329124369175,45.5800142833561],[-73.6320029987452,45.57962046154],[-73.6307166001419,45.5810100660897],[-73.6307631042712,45.5810603464681],[-73.630448491294,45.5814152777948],[-73.6302559162786,45.5816031879217],[-73.6299413598911,45.5819580390127],[-73.6295130955044,45.5823747222998],[-73.6289994187228,45.5829998733939],[-73.6287832389293,45.5832170955527],[-73.6287732200027,45.5832270961725]],[[-73.6287732200027,45.5832270961725],[-73.6289382437025,45.5833270688518],[-73.6291302828709,45.5834521159923],[-73.6294382199233,45.5836411052226],[-73.629631235235,45.5838210463008],[-73.6165923271731,45.5995101769918],[-73.6125641946899,45.6043731295581],[-73.6107861672179,45.6064261410659],[-73.6106711731195,45.6065621393643],[-73.6106202211953,45.6066251826185],[-73.610556193117,45.606706145847],[-73.6105052231085,45.6067601898363],[-73.610390225799,45.6068951976952],[-73.610172248038,45.6071472019486],[-73.6100571591763,45.6072911174128],[-73.6099291519966,45.6074261366621],[-73.6097251816257,45.6076511282733],[-73.6094181571951,45.6080111125765],[-73.6092901490468,45.6081471200978],[-73.6085651456889,45.6088661095418],[-73.6082791557313,45.6091191619639],[-73.6080611652495,45.609318155862],[-73.6079201434309,45.60945309465],[-73.6076391732962,45.6096781540872],[-73.6070371821641,45.6101461261893],[-73.6067812206729,45.6103451526878],[-73.6067041244091,45.6103991286635],[-73.6066401414597,45.6104530924899],[-73.6065631513917,45.6105070682691],[-73.6063071854368,45.6107051038626],[-73.6062301948542,45.6107590794096],[-73.6048050869619,45.6094290536432],[-73.6035501129891,45.6100961129665],[-73.6041151793753,45.6106171069397],[-73.603090149747,45.6111490613011]],[[-73.6023542291246,45.6125870623215],[-73.6033931874281,45.6135620751453],[-73.6071493281462,45.6170479773583],[-73.6124332452316,45.6220729596935],[-73.6165611786021,45.6259739006853],[-73.6168871005514,45.6262819563973],[-73.6196860934357,45.628897636355],[-73.6197931468813,45.6289986596066],[-73.6206950784494,45.6298425850252],[-73.6247478305618,45.6335889967278]],[[-73.6247478305618,45.6335889967278],[-73.6250174850891,45.6333672721549],[-73.6256770565451,45.6328251297702],[-73.6283464185029,45.6305074874774],[-73.6304300528556,45.6286004096256],[-73.6319643932627,45.6267180450078],[-73.6342472122633,45.6237618499509],[-73.6358168253903,45.6213972158175],[-73.6373131771335,45.6191770492527],[-73.638316161718,45.6174279281297],[-73.6388971926747,45.6155225059313],[-73.6393328125144,45.6138343012475],[-73.6399862965814,45.6115429609078],[-73.6404327797199,45.6105839146715],[-73.6412896516128,45.6090638114347],[-73.6422012156478,45.6074473367263],[-73.642947670593,45.6056984662264],[-73.6435669032955,45.604335344842],[-73.6441587740705,45.6032314741947],[-73.6447235993766,45.6021096622265],[-73.6452334164588,45.6009879349292],[-73.6458353284925,45.6001552961092],[-73.6466751965996,45.5992741864642],[-73.6475705473743,45.5985134804408],[-73.6487762335243,45.5976077303723],[-73.6498450364985,45.5967323056988],[-73.6506666255186,45.5958269890217],[-73.6513048244188,45.594982381441],[-73.6518152859152,45.5941378677362],[-73.6527908286647,45.5927321891383],[-73.6533924274054,45.5918754104117],[-73.6542865676179,45.5907650723399],[-73.6547970849135,45.5900893646405],[-73.6554900361152,45.5892203709073],[-73.6564936952883,45.5880737703688],[-73.6574871860561,45.5866317454514],[-73.6582525694688,45.5854251893152],[-73.6584690664573,45.5851222896762],[-73.6582965087008,45.5850627486689],[-73.6581283633035,45.5849972816298],[-73.6579650442339,45.5849260457282],[-73.6578069525863,45.5848492159108],[-73.6576544766129,45.5847669808647],[-73.6575079907701,45.5846795425543],[-73.6573678547986,45.5845871157249],[-73.6573027317021,45.5845385012063],[-73.6572429201648,45.5844866308975],[-73.6571887492559,45.5844317901906],[-73.6571405170076,45.584374280822],[-73.6570810332781,45.5843041080608],[-73.6570134172654,45.5842376653438],[-73.6569381406298,45.5841754161168],[-73.6568557284619,45.5841177945767],[-73.6567667556203,45.5840652026428],[-73.6566718427214,45.5840180071537],[-73.6565716518104,45.5839765373094],[-73.6564668817439,45.5839410823743],[-73.6563582633152,45.5839118896598],[-73.6562465541575,45.5838891628001],[-73.65613253346,45.5838730603308],[-73.6560169965329,45.5838636945827],[-73.6559007492612,45.5838611308989],[-73.6557846024841,45.583865387178],[-73.6556693663399,45.5838764337487],[-73.6555499551913,45.5838914355241],[-73.6554292403925,45.5838998434357],[-73.6553079593448,45.5839016061055],[-73.6551868529095,45.5838967127489],[-73.6550666608807,45.5838851932408],[-73.6549499357784,45.5838667400425],[-73.6548361704678,45.5838407233679],[-73.654781311415,45.5838240612276],[-73.6544438652282,45.5836907990845],[-73.6543033315624,45.5836305207479]],[[-73.6207755934418,45.5236508796029],[-73.6207872028152,45.5236377690769],[-73.6208360983675,45.5235925888858],[-73.6229064657189,45.5212544720817],[-73.6244768311808,45.5195510388648],[-73.6267218934442,45.5165789048672]],[[-73.5956109141946,45.5040629949286],[-73.5934899969367,45.5061120484855],[-73.5914649102154,45.5080701175066],[-73.5941909351712,45.5097861073881],[-73.5935088384283,45.5105251548103],[-73.5943628438174,45.5109121348475],[-73.5949668679484,45.5109061398078],[-73.5956738651781,45.5111200884042],[-73.5966758518709,45.5115460750828],[-73.5969007789133,45.5117780652608],[-73.5968818247043,45.5124961373726],[-73.5968167337995,45.5125841163881],[-73.596793808861,45.5126371410099],[-73.5967787648421,45.5127301162159],[-73.5968207695811,45.5129110558321],[-73.5969408082518,45.51304108236],[-73.5970327502278,45.5130991385768],[-73.5971757853588,45.5131550812638],[-73.5973337620513,45.5131831132336],[-73.5975097723248,45.5131990707199],[-73.5977157399835,45.5132010527777],[-73.5979057416331,45.513189099848],[-73.5980747296379,45.513173114616],[-73.5984197121962,45.5131030704137],[-73.5986818075475,45.513086104328],[-73.5987887625844,45.5130941096285],[-73.5988957337211,45.5131121048595],[-73.5984157123796,45.5136001046227],[-73.5978607488775,45.5141631292314],[-73.5977037635577,45.5142861043779],[-73.597550728497,45.5143730795687],[-73.597366749244,45.5144530605157],[-73.5972027743173,45.5145020668286],[-73.5970616795637,45.5145341354493],[-73.5968587128929,45.5145621165344],[-73.5956037122206,45.5145810897428],[-73.5921677973593,45.5144841395591],[-73.5920288439416,45.5144691334948],[-73.5918448417188,45.514472163475],[-73.5916048410107,45.5145121346391],[-73.591418828585,45.5145781592694],[-73.5912887748834,45.5146491787759],[-73.5911988215994,45.5147101759116],[-73.590205784111,45.5157531802494]],[[-73.612422919886,45.5256420616179],[-73.617229085672,45.5277519834938]],[[-73.617229085672,45.5277519834938],[-73.6172792346566,45.5277741602959],[-73.617304713874,45.5277413346227],[-73.6174920524961,45.5274983627902],[-73.6175332583267,45.5275122538334],[-73.6180741889569,45.5267591051693],[-73.6182716512573,45.526500673565],[-73.6184463200447,45.5262879434732],[-73.6189685079001,45.5256985601733],[-73.6193880023274,45.5252167500984],[-73.6195329660365,45.5250641831466],[-73.6196866624052,45.5248892907296],[-73.6197870389348,45.5247700866834],[-73.6199257423881,45.5245849397865],[-73.6199544860087,45.5245576900523],[-73.620122362851,45.5243779610402],[-73.6202017130167,45.5242989075929],[-73.6207755934418,45.5236508796029]],[[-73.9743520622515,45.4664301916245],[-73.9370250052565,45.4509631539921],[-73.9368088329398,45.4507691403742],[-73.9367209294972,45.4506939641295],[-73.935577475256,45.4497120564666],[-73.935265471644,45.4494391532336],[-73.9348519327091,45.4490801346278],[-73.9316844266233,45.4463559451027],[-73.9280423713208,45.44325446863],[-73.9249009474547,45.4405960005763]],[[-73.9249009474547,45.4405960005763],[-73.9246226722795,45.4406883824903],[-73.9248136474176,45.4410019712965],[-73.9227938387521,45.4416363951344],[-73.9230278664112,45.4420391627568],[-73.920118215567,45.4431649092817],[-73.9158533673569,45.4448147484012],[-73.9145948843157,45.4452524794193],[-73.9131936397384,45.4458335472394],[-73.9126895451077,45.4460269117548],[-73.9121807198336,45.446181538086],[-73.9119084223529,45.4463334033161],[-73.9112085094017,45.4465912826664],[-73.910512808094,45.4468693722997],[-73.9103789574147,45.4469149598766],[-73.9102387687654,45.4469542782772],[-73.9079635045702,45.4477193268125],[-73.9068531941132,45.4479596463178],[-73.9055649628789,45.4484285289827],[-73.905372133905,45.4481723332165],[-73.9052232760902,45.4479891122269],[-73.9047508038394,45.4473439125942],[-73.9045378023242,45.4470454570052],[-73.9043512629398,45.4467807139511]],[[-73.9043512629398,45.4467807139511],[-73.904168685388,45.4468354734593],[-73.9039564496157,45.4469049515444],[-73.903749837109,45.4469819582541],[-73.9035419372829,45.4470572639322],[-73.9031277772708,45.4472103727189],[-73.9029208073712,45.4472868960446],[-73.9025963697972,45.4474068304251],[-73.9023363054219,45.4475029774376],[-73.9022133770424,45.4473266815099],[-73.9020347909453,45.4470694719594],[-73.901920925192,45.4469139186878],[-73.9018008670037,45.4467618748705],[-73.9016015275189,45.4465103875945],[-73.901467717691,45.4463481810104],[-73.9008193256363,45.4465115503116],[-73.900582025702,45.4465713475706],[-73.9001310864701,45.4467110506003],[-73.9003752639038,45.447149067434],[-73.8980760842277,45.4475422834479],[-73.8966912484148,45.4472193409484],[-73.8962187200985,45.4471091321078],[-73.8950199020093,45.446829542746],[-73.8940005728012,45.4465397434942],[-73.8937534010021,45.4465092771232],[-73.8935951387799,45.4465298204767],[-73.8936429579194,45.4466801299431],[-73.8935759865334,45.4467221545995],[-73.8931722409049,45.4469755491329],[-73.8927491254122,45.4472410649754],[-73.8927049747539,45.4472687838722],[-73.8925423382447,45.4473850148595],[-73.8924263998012,45.4474591591255],[-73.8923674363412,45.4474968496766],[-73.8923458355248,45.4475106763701],[-73.8922686502095,45.4475600294935],[-73.8921006430097,45.4476724295699],[-73.8917572451477,45.4479022007278],[-73.8915564287688,45.4480365574262],[-73.8914024430583,45.4481081412139],[-73.8913752904227,45.4481207735546],[-73.8912294176328,45.4481885769908],[-73.8905664744492,45.4484564222643],[-73.8904314866288,45.4485170076812],[-73.8903246017065,45.4485649926971],[-73.8902364102469,45.4486045659081],[-73.8900037964519,45.4487089828079],[-73.8895823449746,45.4488830524397],[-73.8894533340506,45.4489415863783],[-73.8892588318783,45.4490298178246],[-73.8890005343755,45.4491470181243],[-73.8888872633074,45.4492072031694],[-73.8887244346901,45.4492937351426],[-73.8883635804724,45.4495229564598],[-73.8882424828961,45.4496181691703],[-73.8879537131236,45.4499166458108],[-73.8877768037715,45.4500986681012],[-73.8875085197636,45.450344543213],[-73.887450454627,45.4503977741915],[-73.887077593585,45.4506909555456],[-73.8869325752712,45.4508049665504],[-73.8868395134938,45.4508781485831],[-73.8863814427615,45.4512109146913],[-73.8862461033328,45.451312958174],[-73.8861987300792,45.4513487697907],[-73.8860085389387,45.4514924755504],[-73.8856971413707,45.4517275613877],[-73.8855279400482,45.451855315703],[-73.8850218442951,45.4522373797725],[-73.8846693487481,45.4524816079577],[-73.8845020392777,45.4524956246081],[-73.884473040176,45.4524980599751],[-73.8843004185482,45.4525057051841],[-73.8840958714092,45.4525112959327],[-73.8840774989885,45.4525121927286],[-73.8838861851085,45.4525214739656],[-73.8835818167977,45.4525362301751],[-73.8833432736474,45.4525478043298],[-73.8830996852759,45.4525596127807],[-73.8824147302002,45.4525933701266],[-73.881775658009,45.4526288331557],[-73.8813990842464,45.452649718689],[-73.8811903326633,45.4527508917034],[-73.8810658083358,45.4528112554478],[-73.8809354597668,45.4528744243716],[-73.880878536358,45.4529020224158],[-73.88067110318,45.4530025574091],[-73.8805428075746,45.4530631445261],[-73.8803421771683,45.4531579178746],[-73.8802991631591,45.4531782192727],[-73.8796196986069,45.4534991399322],[-73.8794507774827,45.4535789552689],[-73.8787394849317,45.4539177464419],[-73.8785755651127,45.4539951196008],[-73.8784162995428,45.4540703147629],[-73.8780765066487,45.4542307141163],[-73.8778123622287,45.454355395476],[-73.8777412442002,45.4543894278409],[-73.8775826791759,45.4544653309633],[-73.8770794251392,45.4547061985406],[-73.876920832723,45.4547821018263],[-73.8767504175468,45.4548636760299],[-73.8766946064299,45.4548903811862],[-73.8765012389813,45.4549829359495],[-73.8764226519032,45.4550205420784],[-73.8763078696092,45.4550754913246],[-73.8761144995204,45.4551680365089],[-73.8760843287904,45.4551824685731],[-73.875925759198,45.4552583705403],[-73.8757565849174,45.45533933283],[-73.8755874344371,45.4554202957159],[-73.8753943386789,45.4555131205568],[-73.87520126784,45.4556059450223],[-73.8751358230849,45.4556373999309],[-73.8750304255196,45.455688080727],[-73.874698293567,45.4558467146275],[-73.8742007650557,45.4560843810499],[-73.8741458985836,45.4561105718924],[-73.8739523231953,45.456203045581],[-73.8735373645446,45.4564012550984],[-73.8733714943019,45.4564804724812],[-73.8732055756878,45.4565597788999],[-73.8729599180843,45.4566771222822],[-73.8725249630033,45.4568848666797],[-73.8723330108653,45.4569742039002],[-73.8722981808381,45.4569904077507],[-73.8721613247791,45.4570541073098],[-73.8719858778114,45.4571357450689],[-73.8718897520167,45.4571804884968],[-73.8718104560089,45.4572173825124],[-73.871491952078,45.457365612087],[-73.8711022903846,45.4575469385281],[-73.8704317099446,45.4578705922631],[-73.8703150285071,45.4579268941563],[-73.8701220947079,45.4580200261977],[-73.8699217405866,45.4581167056972],[-73.8693983491694,45.4583693178877],[-73.8693354638722,45.4583996540478],[-73.8690609190084,45.4585321595912],[-73.8689421684487,45.45858945968],[-73.868741835418,45.4586861452659],[-73.8687129327929,45.4587000870588],[-73.8685442154278,45.4587815206176],[-73.8683754987377,45.4588629359531],[-73.8683485373414,45.4588759580676],[-73.8681562184987,45.4589687583817],[-73.8678581607302,45.4591116195418],[-73.8671751999367,45.4594389359896],[-73.8662355801358,45.4598955296574],[-73.8661417463073,45.4599411124581],[-73.8657890016297,45.4601125850449],[-73.8662849665864,45.4606689816391],[-73.8663836747019,45.4607770258032],[-73.8664860230251,45.4608833790799],[-73.8665919447145,45.4609879858827],[-73.8667426656945,45.4611282640706],[-73.8668998043079,45.4612650112111],[-73.8670631995727,45.4613980774172],[-73.865633534472,45.4622405891777],[-73.8651749668354,45.4625093739473],[-73.8651506575126,45.4625236440689],[-73.8649836262315,45.4626215531804],[-73.8648299810673,45.4627115977933],[-73.8648116680336,45.4627223419767],[-73.8644668023384,45.4629244850552],[-73.8644406772375,45.4629398064283],[-73.8642460243327,45.463053909756],[-73.8640513451949,45.4631680128052],[-73.8639499994395,45.4632274233094],[-73.8639085455358,45.4632517126716],[-73.8638579860075,45.4632814615989],[-73.8636635820156,45.4633958006123],[-73.8636006558813,45.463432820853],[-73.8634692028825,45.463510130187],[-73.8634289429883,45.4635338180626],[-73.8632748231487,45.4636244684009],[-73.8632513591827,45.4636382782712],[-73.8630504100087,45.4637564676039],[-73.8628527687411,45.4638727230728],[-73.8622969080107,45.4641981498758],[-73.8621243944127,45.4642991563402],[-73.8615960012552,45.464608499392],[-73.8612455694586,45.4648136720801],[-73.8611294136631,45.4648816680442],[-73.860543521581,45.4652230435456],[-73.8603656903407,45.4653272910817],[-73.8602287622348,45.46540643957],[-73.8599277131014,45.46558185673],[-73.8604132312592,45.4659959205057],[-73.8601345890789,45.4662150472581],[-73.8599786660362,45.4663376866456],[-73.8598227168744,45.4664603160142],[-73.8585751136104,45.4674414093879],[-73.85826319916,45.4676866739417],[-73.8581072662725,45.467809310742],[-73.8576393896309,45.4681772119998],[-73.8574574572422,45.4683202902766],[-73.8568076409928,45.4688312580057],[-73.856677678216,45.4689334597411],[-73.8561577933281,45.469342230202],[-73.8559888555854,45.4694750801678],[-73.8554858683281,45.4698705697449],[-73.855329928088,45.469993202743],[-73.8550000504123,45.4702525671293],[-73.8545620756257,45.4705969521696]],[[-73.8545620756257,45.4705969521696],[-73.8551740485777,45.4712106519579],[-73.8553156879478,45.4713636780693],[-73.8554574939563,45.4715110893292],[-73.8555886135129,45.4716473647095],[-73.8565828687574,45.4726808037327],[-73.8567249094511,45.472828432526],[-73.8568669768398,45.4729760691889],[-73.8569487621818,45.472936752937],[-73.8571253616921,45.4732124937187],[-73.8572401595566,45.4733925460735],[-73.8573549316089,45.4735725975222],[-73.8574132350686,45.4736633321313],[-73.8565984125487,45.4740560128228],[-73.8564719534543,45.4741219624182],[-73.8562661607868,45.4742202784526],[-73.8562457763813,45.4742282417794],[-73.8561816846173,45.4742532495095],[-73.8560220824411,45.4743323694681],[-73.8560148868047,45.4743242454926],[-73.8559265069059,45.474368230113],[-73.8559147693128,45.4743568169047],[-73.8555278949027,45.4745514618726],[-73.8553907591296,45.4746204758523],[-73.855334481345,45.4746488062388],[-73.855174708526,45.4747291825257],[-73.8549475999251,45.4748434499665],[-73.8549366205064,45.474849318688],[-73.8545696330716,45.4750460255311],[-73.854380386975,45.4751474411876],[-73.8543293725461,45.4751747881995],[-73.8538207308853,45.4754618462049],[-73.8537148095222,45.4755216307037],[-73.853708474035,45.4754912191857],[-73.8535984095559,45.4755474925815],[-73.8534089340121,45.475644399369],[-73.8532197062109,45.4757411556879],[-73.8524628874635,45.4761281774069],[-73.8522736560096,45.4762249321015],[-73.8518446143093,45.4764443345762],[-73.8515174763739,45.4766125869062],[-73.8513286183066,45.4767097077567],[-73.8509509511379,45.4769039483297],[-73.8507620908751,45.4770010682093],[-73.8495834723215,45.4776072205622],[-73.8493731245849,45.4777162344311],[-73.8472370095707,45.478805059141],[-73.8470783104895,45.4788846935743],[-73.8458396668472,45.4795108833905],[-73.8459028512413,45.4796096412638],[-73.8459854708458,45.4797369100259],[-73.846149815186,45.4799917316849],[-73.8463142605885,45.4802466840903],[-73.8463966337336,45.4803740755741],[-73.8467094436461,45.4808592906358],[-73.8467864954783,45.4809863209046],[-73.846753148563,45.4810005757515],[-73.8467206052643,45.4810157208119],[-73.846688914061,45.4810317352417],[-73.8469462011984,45.481237156092],[-73.8471350216389,45.481525654373],[-73.8472787041594,45.4817418442136],[-73.8474387464365,45.4819897771373],[-73.8474555642912,45.4819821686331],[-73.8476630319484,45.4822144019495],[-73.8476016921202,45.4822421741288],[-73.8476831656161,45.4823683729518],[-73.847635106239,45.4823901375013],[-73.8478445040931,45.482619007934],[-73.8477963931606,45.4826407385212],[-73.848005466891,45.4828692226119],[-73.8480818102682,45.4829976855209],[-73.8480336732628,45.483019381204],[-73.848250094637,45.4832478071103],[-73.8484293923656,45.4835255091897],[-73.8485407880081,45.4836903226914],[-73.84867811612,45.4839034579943],[-73.848711918762,45.4839559129041],[-73.84874574712,45.484008376743],[-73.8488566399558,45.4841804934557],[-73.8489031572891,45.4842526818986],[-73.8489353703652,45.4843026464522],[-73.8491460609211,45.484629647044],[-73.8492883386782,45.4848504220211],[-73.8493670470604,45.4849725753652],[-73.849399261138,45.4850225400391],[-73.8494330654141,45.4850749951448],[-73.8496242876013,45.4853717653265],[-73.8496565022343,45.4854217300668],[-73.8497563025716,45.4855766052681],[-73.8498206838657,45.4856765349745],[-73.8498672285054,45.4857487228036],[-73.8499656172822,45.48590142395],[-73.8501728624655,45.4862230246718],[-73.8505064533375,45.4867409409047],[-73.8502970130018,45.486880805353],[-73.8494162279479,45.4874603194894],[-73.849362400297,45.4873903940912],[-73.84927089071,45.4874140316503],[-73.8492019397023,45.4874761230353],[-73.8489309721565,45.4876126625915],[-73.8486358187179,45.4877659515239],[-73.8477263297288,45.4882248479331],[-73.8470169803224,45.4885737608547],[-73.8466629727936,45.48875172777],[-73.8463326549311,45.4889138395781],[-73.8459920126431,45.4890795748028],[-73.8445723928093,45.4898024672834],[-73.8445361040365,45.4899001855211],[-73.842507852236,45.4909345047221],[-73.8386155474721,45.4928251698669],[-73.8382506526429,45.4930027394347],[-73.8378300356209,45.4932105344761],[-73.8374590031219,45.4933946881],[-73.8370621335456,45.4935880436971],[-73.8361044247492,45.4940568445104],[-73.8352505038832,45.494504155306],[-73.8351955514624,45.4945291407177],[-73.8358181001936,45.4953392034002],[-73.8367559678348,45.4965833072958],[-73.8371611125951,45.4971207527337],[-73.8373401077215,45.497357719606],[-73.8376391854467,45.4976952096628],[-73.8375179707777,45.4977648634718],[-73.8373359128384,45.4978694944566],[-73.8369626269736,45.4980839878202],[-73.8367760089519,45.4981912362267],[-73.836587844417,45.4982993554382],[-73.8364027433517,45.4984057286237],[-73.8362102936273,45.4985163065157],[-73.8359384667007,45.4986725137757],[-73.8358202718161,45.4987340046575],[-73.8355232786708,45.4982703718803],[-73.8348800442083,45.4985808847491],[-73.8345266998882,45.498751466153],[-73.8345426189112,45.4987725062518],[-73.8339981759807,45.4990597732706],[-73.8336429251366,45.4992472254768],[-73.8330585404405,45.4995014209617],[-73.8325097135951,45.4997250218623],[-73.8320437797262,45.4999570673271],[-73.8320076758617,45.4999757489299],[-73.8317045876888,45.5001313250272],[-73.8316802359097,45.5001424511763],[-73.8308772681142,45.5005091007114],[-73.8307123112171,45.5005844297306],[-73.829828636247,45.5010462847442],[-73.8298077511969,45.5010562621598],[-73.8294967633407,45.501204735717],[-73.8293300497245,45.5012835527297],[-73.8288633239665,45.5015038426323],[-73.8282282294014,45.5017950413496],[-73.827873186755,45.5019679875928],[-73.8265941723744,45.5025722830506],[-73.8264289368421,45.5026145526547],[-73.826117409136,45.5026942615957],[-73.8261039257178,45.5026991825851],[-73.8260927011804,45.5027063818024],[-73.826084490263,45.5027153711838],[-73.8260798486812,45.5027255444554],[-73.8260790898321,45.50273621415],[-73.8260822633298,45.502746662059],[-73.8261097258809,45.5028011567826],[-73.8259429512614,45.5028799416456],[-73.8258315912379,45.5029382391684],[-73.8256192849944,45.5030529621996],[-73.8254980419155,45.5031137872476],[-73.8250920211369,45.5033175062976],[-73.8249421256597,45.5033898276252],[-73.8244725215212,45.5036163583689],[-73.8240027634609,45.5038429770687],[-73.8232869068012,45.5042124771236],[-73.8225442399487,45.5045930324351],[-73.8221201529831,45.5047811142187],[-73.8207196915716,45.5054252540259],[-73.8204653694217,45.5055546464484],[-73.8192454454394,45.5061749426288],[-73.8161794309546,45.5030318438567],[-73.8157579908282,45.5026149227487],[-73.8155341465693,45.5027122362337],[-73.815299758158,45.5028170740369],[-73.8151194697312,45.5029023413209],[-73.8149546288703,45.5027386989205],[-73.814841305052,45.5026233633913],[-73.8146182833586,45.502399457961],[-73.8151773416112,45.5021240900557],[-73.8149884171371,45.5019325123834],[-73.814428088893,45.5022085074915],[-73.8142043295643,45.5019838658187],[-73.8138380574916,45.5016001848296],[-73.8143623681357,45.5012860438865],[-73.8136148847174,45.5004972046419],[-73.8126648897607,45.4994946311042],[-73.811623933276,45.4984445929791],[-73.8114714335514,45.4982958216157],[-73.810891186918,45.497694420074],[-73.8101116544296,45.4968864688074],[-73.8100294044147,45.4967957214153],[-73.8090626787974,45.4972569754416],[-73.8088787430349,45.4970487490689],[-73.8081946127178,45.4973641000805],[-73.8073676847549,45.4977711694293],[-73.8061568315089,45.4983500175897],[-73.8046939540848,45.4990493295938],[-73.8034189903645,45.4996587909385],[-73.8020608433051,45.5003079972753],[-73.8007057535783,45.4990097367834],[-73.7999842980656,45.4993524943142],[-73.7998810885264,45.4994032283288],[-73.7967647788525,45.5008900606923],[-73.7964610436808,45.5010349594386],[-73.7951977053791,45.5016376647665],[-73.7946369960872,45.5019051641146],[-73.7946100459799,45.5019180152266],[-73.7940209857789,45.5021967092351],[-73.7939073367973,45.5022509103834],[-73.7937254016739,45.5023378528425],[-73.7935435032921,45.5024248173716],[-73.792998142105,45.5026855236446],[-73.7905572876745,45.5038523298587],[-73.7903578395544,45.5039474750832],[-73.791057012606,45.5043762252094],[-73.7921362482369,45.5050548214148],[-73.7922494344333,45.5051391509258],[-73.7922621223049,45.5051665268109],[-73.7906708893094,45.5048079433508],[-73.7876576542747,45.5041285572287],[-73.7836990020041,45.5032359040602],[-73.7839402966027,45.5027064858974],[-73.7840421663533,45.5027102856187],[-73.7841441155455,45.5027077312034],[-73.784245343172,45.5026988426522],[-73.7843450548688,45.5026836885436],[-73.7844424680495,45.5026623887209],[-73.7845368182818,45.5026351097762],[-73.7846273656963,45.5026020668338],[-73.7851870066595,45.5023381005009],[-73.7853844797165,45.5022443032439],[-73.7859695642376,45.5019570558828],[-73.7860549821521,45.5019637666604],[-73.7861394514308,45.501974938497],[-73.7862224995918,45.5019905086902],[-73.7862825939733,45.5018520710241],[-73.7862872878766,45.501784416841],[-73.786312833443,45.5014152174774],[-73.7857343923608,45.5010520326985],[-73.7855402092959,45.500930121829],[-73.7846459554101,45.500368628723],[-73.7829246471948,45.4992856131845],[-73.7821909452286,45.499629392585],[-73.7812000707969,45.5001100119048],[-73.7806167830397,45.4997392887405],[-73.7781824610744,45.5009014394536],[-73.7780684213676,45.5008657222602],[-73.7774483082737,45.5005060460221],[-73.7769824608172,45.5001100565844],[-73.7767711540037,45.5002092733634],[-73.7758594271069,45.4996678818],[-73.7754257385199,45.4994041841574],[-73.7747637202066,45.4989585212825],[-73.7741781429071,45.4985289304407],[-73.7736210636385,45.4981998311138]],[[-73.7736210636385,45.4981998311138],[-73.7723773637723,45.4988906451708],[-73.77167789666,45.4991086256518],[-73.773881986544,45.5005086098294],[-73.7709096919502,45.5014640710316],[-73.772507128661,45.5025735461205],[-73.7716011503707,45.5030255031449],[-73.7709631247623,45.5034055403589],[-73.7692001227496,45.50401260737],[-73.7671980240963,45.5027486066011],[-73.7656520642809,45.5032736546227],[-73.765384011615,45.503463627722],[-73.764601024787,45.5029436666673],[-73.7638610413059,45.5034936278541],[-73.7609990649749,45.5016736143112],[-73.7607180089032,45.5017916084322],[-73.7594310510848,45.5027756493404],[-73.7582369794975,45.5020396953987],[-73.7566520648264,45.5024576921117],[-73.7547110516145,45.5033797027775],[-73.753074995036,45.5037526908032],[-73.7529080577708,45.503644710884],[-73.7525129885843,45.5039067523836],[-73.7516830062177,45.5044217475167],[-73.7521580479418,45.5047177672573],[-73.7550640438883,45.5065227142585]],[[-73.7636321275885,45.5119344933272],[-73.763709071798,45.5118969410627],[-73.7648045381908,45.5116050726707],[-73.7661200332907,45.5114332698999],[-73.7684960581316,45.5113312316946],[-73.7714941128735,45.5113241331936],[-73.7750239217572,45.5115567347829],[-73.7810579932721,45.5118312423955],[-73.784495953615,45.5119915541335],[-73.7866170831848,45.5121309565947],[-73.7884826304739,45.5122468388892],[-73.7913345924323,45.5122154582665],[-73.7935647137019,45.5122579703375],[-73.7949551182574,45.5123748825979],[-73.7958525328998,45.5127341556051],[-73.7970629270905,45.5134062331569],[-73.7976881985914,45.5141038625252],[-73.7984593413398,45.5147528673501],[-73.7996325564615,45.5153284533696],[-73.8008047295396,45.5156870832431],[-73.8018296017865,45.5159013038255],[-73.8029632434072,45.5159224583336],[-73.8038772743205,45.5159200601686],[-73.8050853891417,45.516158010163],[-73.8066601092178,45.5166119066096],[-73.807905385473,45.5169942099468],[-73.8094437138512,45.5174481814501],[-73.8106522568337,45.5177341310207],[-73.8115662660583,45.5177557556917],[-73.8128821101108,45.5176076233673],[-73.8150003430593,45.5171195195743],[-73.8173011422787,45.5166067523588],[-73.8188703002447,45.5161202049052],[-73.8201490348534,45.5158995713678],[-73.8214658925888,45.5160164877218],[-73.8230049023154,45.5165426138764],[-73.825020250855,45.5173325772385],[-73.8267796003028,45.5180268350328],[-73.8285010927439,45.5185041110793],[-73.8302575099927,45.518716109785],[-73.8316465088788,45.5185673631748],[-73.8331076718149,45.5183220910036],[-73.8354113533901,45.5183153674483],[-73.8382275825386,45.518427512304],[-73.8406414341973,45.5184686177983],[-73.8424341230685,45.5186562394509],[-73.8434947485093,45.5186530699845],[-73.844371714133,45.5185539664028],[-73.8455758388601,45.5181404182088],[-73.8463768809046,45.517559319668],[-73.8473222508808,45.5166884336136],[-73.8485559247356,45.5151896499007],[-73.8498263150046,45.5136668515477],[-73.8502057947968,45.51296654604],[-73.8504959035236,45.5125798776715],[-73.8509332681299,45.5123615017717],[-73.8514434052715,45.5120465134941],[-73.8518800285223,45.511707709039],[-73.8525363461796,45.5114404177281],[-73.8531785538655,45.511485284942]],[[-73.5683415333325,45.6342040823769],[-73.5641592553722,45.6369445712466],[-73.5613403943445,45.6387911516022],[-73.5577564022958,45.641138904148],[-73.5555562547823,45.6425801525952],[-73.5555015872647,45.6426159510483],[-73.5545181792519,45.6432381288006],[-73.5535047780925,45.6438361835464],[-73.5524625891726,45.6444094021152],[-73.552331581832,45.6444781790564],[-73.5520576940186,45.6446209312806],[-73.5517820240957,45.644761970232],[-73.5515045845963,45.6449012871039],[-73.5512254069106,45.6450389433797],[-73.5491079327415,45.6460728032794],[-73.5489466016577,45.6461518977511],[-73.5464974293631,45.6473488086518],[-73.5445965150946,45.648275495648],[-73.5444188673774,45.648195152643],[-73.5431259555089,45.6476277015901],[-73.538670276736,45.6455483940076],[-73.5330753960349,45.64302416486],[-73.5329896524938,45.6429851039381],[-73.5276840978637,45.6405859783661],[-73.5228365773241,45.6383951937501],[-73.5213860118815,45.6377188477733],[-73.5214140906865,45.6376915662931],[-73.520349068553,45.6375183678873],[-73.5178793188125,45.6371181950843],[-73.5164472096387,45.6368837066639],[-73.5160672748144,45.6368191161823],[-73.5114465320949,45.6360632643837],[-73.5077932670275,45.6354654964012],[-73.506402758493,45.6352370622823],[-73.5057546388829,45.6351318978629],[-73.5055259482152,45.6350952861675],[-73.5031221108851,45.6347018295307],[-73.5028939640711,45.6346636387212],[-73.5001090439047,45.6342072485995],[-73.4972600621255,45.6337402615654],[-73.4969384687007,45.6336872078692],[-73.4967770771922,45.6336610870643],[-73.4955290795863,45.6334564793217],[-73.494091086348,45.6332206861706],[-73.493808418679,45.6331747685671],[-73.4927160760812,45.6329952371464],[-73.4919013588155,45.6328613271054]],[[-73.4919013588155,45.6328613271054],[-73.4918812370611,45.6328952020038],[-73.4918555832367,45.6329221946305],[-73.4917401424303,45.633030164056],[-73.4916118750702,45.6331201365553],[-73.4914964174402,45.6333090910176],[-73.4914066217382,45.6333900702857],[-73.4910858935684,45.6338039775849],[-73.4910858854702,45.6338489700047],[-73.4912141163943,45.6340289485608],[-73.4913295392486,45.6341099426813],[-73.4914577950803,45.6341549435667],[-73.4916245152145,45.6342899313108],[-73.4917014494891,45.6344249135005],[-73.4916372963933,45.6345598858563],[-73.4914320276935,45.6348208284296],[-73.4910086759479,45.6352347314391],[-73.4908803941843,45.6353157095399],[-73.4905596989458,45.6354596643357],[-73.4904570605109,45.6355856365499],[-73.4904185327678,45.6358285937692],[-73.4902003988782,45.6362155154915],[-73.4900849033188,45.6364764650295],[-73.4900207497525,45.6365664460644],[-73.4900207130269,45.6367464166355],[-73.489302214795,45.6375832296336],[-73.489019994979,45.6376911874935],[-73.4888275629931,45.6378171472173],[-73.48867360329,45.6379970979272],[-73.4885581189551,45.6382129526794],[-73.4884169836411,45.6384019925632],[-73.4882501973525,45.6385639448314],[-73.4881475529324,45.6386989077059],[-73.488006427043,45.6388248690584],[-73.4878139936004,45.6389328295252],[-73.4876857176952,45.6389328183701],[-73.4875574536043,45.6388698206424],[-73.4871726497943,45.6387887904023],[-73.4871213301331,45.6388427720364],[-73.4874163333622,45.638968783429],[-73.487441981149,45.639004778978],[-73.4873778136046,45.6391666449189],[-73.487275175488,45.6392657012044],[-73.4872495067141,45.639337682379],[-73.4872110121696,45.6394006638244],[-73.4872366600426,45.6394366594091],[-73.4873392761682,45.6394546687942],[-73.4872750866348,45.6397246023845],[-73.4873007278086,45.6397965901765],[-73.4874033208112,45.6399405722548],[-73.4874674537013,45.6399675745681],[-73.4876341807678,45.640147552371],[-73.4876726156509,45.6404084997698],[-73.4880316505106,45.6412093615036],[-73.4880957499489,45.6414343194087],[-73.4880956670915,45.6418662222172],[-73.4881597580781,45.6421091705558],[-73.4882494076076,45.6428380059871],[-73.4881595578031,45.6430899372076],[-73.4881594659303,45.64353983011],[-73.4881337352812,45.6438997417727],[-73.488172101696,45.6444846064306],[-73.488133569557,45.6447094579002],[-73.4879666911077,45.6452134105693],[-73.48795382671,45.6453843682832],[-73.4878511143491,45.6457712642709],[-73.487620080514,45.6463291297414],[-73.4875430805834,45.646455097285],[-73.4874147309126,45.6467430304111],[-73.4873557353384,45.6469910811442],[-73.4774840695232,45.6455090018614],[-73.4775338926307,45.645780530575],[-73.4775913616248,45.6460513150859],[-73.4776564544916,45.6463212494727],[-73.4777291459975,45.6465902281455],[-73.4778094078146,45.6468581458862],[-73.4778972086522,45.6471248978909],[-73.4779598614874,45.6473451389564],[-73.478030947008,45.6475641169247],[-73.47811041376,45.6477816729947],[-73.47819820421,45.6479976493951],[-73.4782942547861,45.6482118894984],[-73.4784421151363,45.6485260620811],[-73.4785987783574,45.6488381291166],[-73.4787641836941,45.6491479692944],[-73.4795263267403,45.6501940301145],[-73.4802832291507,45.6512419760506],[-73.4808950547599,45.6520361463445],[-73.4815134292674,45.6528278209751],[-73.4821383322137,45.6536169734107],[-73.4823444415206,45.65392315993],[-73.4825415482125,45.6542322470558],[-73.4827295655739,45.6545441020957],[-73.4829084189309,45.6548585968219],[-73.4830780328379,45.6551755988281],[-73.4832383357366,45.6554949746508],[-73.483465709337,45.6559938058409],[-73.4836841063016,45.6564946062312],[-73.4838934914932,45.6569972955944],[-73.4840938314743,45.6575017942055],[-73.4842850942398,45.6580080220502],[-73.4844672493217,45.6585158999169],[-73.4846402679414,45.6590253483557],[-73.4848041223506,45.6595362847607],[-73.4857800697887,45.6625349775576],[-73.4864305806449,45.6656408072217],[-73.4865928953846,45.6680504120221],[-73.4865918224468,45.6724413139624],[-73.4864276659703,45.6780100699072],[-73.4861822003174,45.6826149889633],[-73.4856115887435,45.6850780222624],[-73.4843893422829,45.6871125262524],[-73.4824341838113,45.6890933694136],[-73.4802338489346,45.6919310176378],[-73.4793169035205,45.6934435783822],[-73.4786645833674,45.6949427741112],[-73.478501213823,45.6962009805345],[-73.4783381144789,45.6970041109332],[-73.4779302470348,45.698048187695],[-73.4774409705543,45.698958431611],[-73.4765856268657,45.6996007878412],[-73.4756077960105,45.7000557541765],[-73.4744755679495,45.7003936944734],[-73.4746764573755,45.700847753815],[-73.4747788564722,45.7016216153414],[-73.4746371776916,45.7025843839755],[-73.4742257111031,45.7037630474859],[-73.4738656203371,45.7049237312269],[-73.4739679571271,45.7058685653224],[-73.4745583357751,45.7068045093933],[-73.475354286986,45.707578526278],[-73.4763563057882,45.7069038695165],[-73.4783730277194,45.7058154800403],[-73.4809419236628,45.7046641554055],[-73.4835491944986,45.7037197414115],[-73.484731661447,45.7033429658996],[-73.4864247822048,45.7028397426964],[-73.4889214563133,45.7023392738827],[-73.4892000691615,45.7022987371784],[-73.490073328968,45.7023438061893],[-73.490779601737,45.7026587964964],[-73.4911776526101,45.703072737435],[-73.4914344436635,45.7034776683589],[-73.4918453440535,45.7039186001096],[-73.4922819339874,45.7043955230479],[-73.4929368496239,45.7049714359138],[-73.493450541246,45.7051694195919],[-73.4944137453618,45.7052414470053],[-73.4968282052604,45.7049535855702],[-73.4973419180384,45.7048636162266],[-73.5003940027799,45.704377634764],[-73.5034570491471,45.7036584484786],[-73.5076755537386,45.7025492132834],[-73.5128731820437,45.7012716342959],[-73.5141548611542,45.7009609327045],[-73.5166625509756,45.7006435747441],[-73.5191018990953,45.6999561128335],[-73.5214854430281,45.6988706511884],[-73.5230990366567,45.6978819492463],[-73.5251524483771,45.696193539209],[-73.5266555168297,45.6942643161371],[-73.5276451295114,45.692552264638],[-73.5283409589168,45.690767932028],[-73.5289633381636,45.6889594995001],[-73.5295494260739,45.6874645109914],[-73.5301722308908,45.6863551282072],[-73.5310153998223,45.685294097636],[-73.5325179977589,45.6840159116562],[-73.5342042101544,45.6826652034363],[-73.5360365895836,45.6810010739528],[-73.5373376566756,45.6798312321012],[-73.5386570870232,45.678794106562],[-73.540416361505,45.6777084863938],[-73.5424320204139,45.6767915657491],[-73.5443750300555,45.6760673965569],[-73.5462995489627,45.6754519117357],[-73.548682445587,45.6748240552465],[-73.5503686613352,45.6744376277574],[-73.5520913034379,45.6737376385047],[-73.5541799741553,45.6726998977627],[-73.5557186535605,45.6715417870829],[-73.5569645725984,45.670697318226],[-73.5587599157857,45.6694667718216],[-73.5615073558153,45.6676329283421],[-73.5634488647674,45.6662817478244],[-73.5659036943788,45.6650506587921],[-73.5689450024792,45.6639397459297],[-73.572022606628,45.6626600598604],[-73.5742935306092,45.6612360376329],[-73.5779202008853,45.6594976161928],[-73.5809423724181,45.6581093072354],[-73.5847885694251,45.6567321781521],[-73.5876819520782,45.6551628118425],[-73.5907213403125,45.6534003923494],[-73.5936874051676,45.6518308041539],[-73.596946483502,45.6501162071882],[-73.5992896861799,45.6489328922128],[-73.6009740380511,45.6481598474334],[-73.6024395678122,45.6478209960015],[-73.6044174040556,45.6473369447925],[-73.6066516140832,45.6465151275122],[-73.6087748178806,45.6454040676822],[-73.6111173421032,45.6440516884662],[-73.6136056267554,45.6422650113939],[-73.6163131555521,45.6402130143682],[-73.6187460321119,45.6384383204335],[-73.6211964826797,45.6363863859864],[-73.6237388509925,45.6344184938147],[-73.6246894869795,45.633636970995],[-73.6247478305618,45.6335889967278]],[[-73.5871469592181,45.5664211682795],[-73.5866999702821,45.5662721212202],[-73.5862989939037,45.5661530950624],[-73.5891550570883,45.5628230814332],[-73.5921229909224,45.5594722116239],[-73.5939520556921,45.5573482902792],[-73.5982421335072,45.5524342190909],[-73.6018671588286,45.5481891600156],[-73.6020551907509,45.5479571727348],[-73.6029461830768,45.5469571926479],[-73.6035321569149,45.5463431875769],[-73.6070412980164,45.5479552660605],[-73.6083872159827,45.5464472671532],[-73.609671180587,45.545059279265],[-73.6109041992203,45.5436852737792],[-73.6122731877954,45.5422023169457],[-73.6126131057482,45.5416912774584],[-73.6129441598284,45.5410743164463],[-73.613876182332,45.5391432964092],[-73.6140951536433,45.5387372945831],[-73.6143151946359,45.5384432441195],[-73.6147771774708,45.5379302628252],[-73.6155521809978,45.5371052232258],[-73.6161011160119,45.5364721908017],[-73.6173001103657,45.5352071897075],[-73.6182000621935,45.5347892329657],[-73.6182960428408,45.5346822222671],[-73.621517025833,45.5311341840985],[-73.6215339756421,45.5311101382376],[-73.6198210635892,45.5307931990368],[-73.6193740704142,45.5307011535761],[-73.619233974912,45.5306681818716],[-73.6190969764984,45.530652215655],[-73.6185880556405,45.530487157836],[-73.618313981096,45.5303672107377],[-73.6179969952191,45.5301781919153],[-73.6176970220522,45.5299441587906],[-73.6174269728793,45.5296771570657],[-73.617291013797,45.529500189853],[-73.6171810439151,45.5293291348173],[-73.6170240661923,45.5289982097249],[-73.6169719669221,45.5287771478679],[-73.6169431376096,45.5285235784085],[-73.6170710849053,45.5285716454233],[-73.6170649061574,45.5284018785304],[-73.6170763692715,45.5282322483616],[-73.6171054106738,45.528063657542],[-73.6171131208756,45.5280309400481],[-73.6171214931105,45.5279983028638],[-73.6171305273923,45.5279657531878],[-73.6171584837417,45.5279297350253],[-73.6171797192781,45.5278700414408],[-73.6172032587729,45.5278107756274],[-73.617229085672,45.5277519834938]],[[-73.5683710315155,45.5814140093738],[-73.568379990641,45.5813939366326],[-73.5683940242542,45.5813739509546],[-73.56842898578,45.5813549430335],[-73.5684560366043,45.5813499776108],[-73.5685009515497,45.581345002798],[-73.5685479769601,45.5813379562832],[-73.5685970240754,45.5813419771689],[-73.5686419501363,45.5813469911053],[-73.5686849882508,45.581362984724],[-73.5687159897245,45.5813889740979],[-73.5687420119448,45.5814069562146],[-73.56877500407,45.581418996438],[-73.5688019596872,45.5814219502383],[-73.5688330302029,45.5814189628898],[-73.5688669644534,45.5814229924138],[-73.5688940251535,45.5814259461326],[-73.5689219354543,45.5814309698225],[-73.5694930285734,45.5816179969463],[-73.5697539949198,45.5812029901149],[-73.5705429129416,45.5814620556945],[-73.5709318955983,45.5809040633042],[-73.5739949728304,45.5819250824477],[-73.5752619977039,45.5805341005942],[-73.5752810045617,45.5805201400644],[-73.5756299219385,45.5802151125052],[-73.5766259418577,45.5794001231425],[-73.5767479663598,45.5792851219848],[-73.5767909977081,45.5792950818714],[-73.5775519504544,45.5786370805478],[-73.5781390275726,45.5780600953243],[-73.5772409653124,45.5776770669274],[-73.5788470292919,45.5758390394136],[-73.5805600446019,45.5738780823806],[-73.5817760088786,45.5724870213175],[-73.5846990321934,45.569141088173],[-73.5852079658946,45.5685900578446],[-73.5860149800515,45.5676910787254],[-73.5860930415902,45.5676030995832],[-73.5862149864323,45.5674671215467],[-73.5866910147229,45.5669800925162],[-73.5868949907286,45.5667301234516],[-73.5871469592181,45.5664211682795]],[[-73.7736210636385,45.4981998311138],[-73.7697080321747,45.4957106333699],[-73.7683378180592,45.4943590537364]],[[-73.7683378180592,45.4943590537364],[-73.7658603930102,45.4918321071104],[-73.7658764238336,45.4918242968397],[-73.7650465797699,45.4909825420001],[-73.7648106070741,45.4907411652743],[-73.7645352177049,45.4904517155942],[-73.7644724253371,45.4904499282524],[-73.7644153911808,45.490391377407],[-73.7657053556333,45.4897917199007],[-73.7670450451728,45.4891689057094],[-73.7670312463871,45.4891679014445],[-73.7670190850476,45.4891636053229],[-73.7670106979257,45.489156068126],[-73.7669725516879,45.4890590647818],[-73.7669517771045,45.4889452890846],[-73.7669529991946,45.488935834298],[-73.7669598026123,45.4889276343033],[-73.7669709088905,45.4889222380221],[-73.7671167918761,45.4888805455863],[-73.7671362939039,45.4888703973338],[-73.7671529361421,45.4888579836891],[-73.767166195896,45.4888436955104],[-73.767175654383,45.4888279837017],[-73.7671810132828,45.4888113420767],[-73.7671821036461,45.4887942974392],[-73.7671788908967,45.4887773852758],[-73.7671714773432,45.4887611398515],[-73.7671600956755,45.4887460717294],[-73.76714510508,45.488732657881],[-73.7671269770603,45.4887213192242],[-73.7671062851731,45.4887124143483],[-73.7668203074275,45.4886240266984],[-73.7667712908892,45.4885647646927],[-73.7667311120426,45.4884660005851],[-73.7667426707042,45.4884583347646],[-73.7667577827321,45.4884548871668],[-73.7667735369096,45.4884563223947],[-73.7667869024494,45.4884623623004],[-73.7668249763473,45.4884693035352],[-73.7669051789423,45.4884305205101],[-73.7669123943299,45.4884226092969],[-73.7669175194966,45.4884139300205],[-73.7669203957884,45.4884047512054],[-73.7669209350032,45.4883953601078],[-73.7669191180485,45.4883860492204],[-73.7669150038536,45.488377107254],[-73.7669087178303,45.4883688137647],[-73.7669004582056,45.4883614256418],[-73.7668904806578,45.4883551744444],[-73.7668790956977,45.4883502538095],[-73.7668666584215,45.4883468167774],[-73.7668535569762,45.4883449713183],[-73.7668401971779,45.4883447740708],[-73.7667806741257,45.4883629112617],[-73.7667008976315,45.4883298283736],[-73.7666849523142,45.488322556323],[-73.7666699353217,45.4883143651591],[-73.766655951564,45.4883053121729],[-73.7666431051956,45.4882954628533],[-73.7666325159457,45.4882848613901],[-73.7666247602178,45.4882731096075],[-73.7666200802748,45.4882605785736],[-73.7666186263752,45.4882476629678],[-73.7666204362446,45.4882347685294],[-73.7666286191064,45.4882108055619],[-73.7666400226696,45.4881875027476],[-73.7666545468714,45.488165075381],[-73.7667005521343,45.4881021894308],[-73.7667508317072,45.4880181687292],[-73.7668153684777,45.487953848975],[-73.766824785744,45.4879476135043],[-73.7668306696839,45.4879395128476],[-73.7668323351805,45.487930491644],[-73.7668295876118,45.4879216031633],[-73.7668227478438,45.487913883269],[-73.7668126120127,45.4879082317345],[-73.7668003653273,45.487905309863],[-73.7667582950759,45.4879075950723],[-73.7667003865919,45.4879019573891],[-73.7663424560206,45.4877931878686],[-73.7664962613941,45.4876642505196],[-73.7665072143219,45.4876583372776],[-73.7665204577551,45.487656065735],[-73.766534232777,45.4876514821593],[-73.7665428396719,45.487642637317],[-73.766509274996,45.4873979660269],[-73.7664698152454,45.4873199373894],[-73.7663589446998,45.4871446215753],[-73.7662962212884,45.4869974978531],[-73.7662263140447,45.4869802706944],[-73.7661763842512,45.4870454675183],[-73.7660800468964,45.4870349715916],[-73.7660841062598,45.4869444945719],[-73.7661633619433,45.4869093965952],[-73.7661721244279,45.4867565521322],[-73.766118562858,45.486641912017],[-73.7661660723229,45.4866094184576],[-73.7666442277992,45.486282995971],[-73.7668037025301,45.486127205987],[-73.7667076478983,45.485977172308],[-73.7669354793252,45.4857546219433],[-73.7680019672945,45.4854167861579],[-73.7680966340046,45.4847560663897],[-73.7704455222326,45.4836397682537],[-73.7716803064201,45.4830228780516],[-73.7733511879209,45.4821984253568],[-73.7738170982863,45.4819691937176],[-73.7742011021256,45.4818112399011],[-73.7735086539151,45.4813588600354],[-73.7722232586994,45.4805540881633],[-73.7661605332211,45.4767576930959],[-73.7683881105807,45.4749608139787],[-73.7623598191957,45.4685635074001],[-73.7627572407088,45.4682475254707],[-73.7507533142707,45.4606033360855],[-73.7454324389542,45.4647871895058],[-73.7425707704457,45.4670321646182],[-73.7399776963654,45.4690686167967],[-73.7340200524818,45.4736926743763],[-73.7322349077958,45.4751050575837],[-73.730576654832,45.4764163786757],[-73.7300101625827,45.4768657832845],[-73.72646835201,45.4795658754723],[-73.7253416698502,45.4805364926804],[-73.7230870266523,45.4823305257274],[-73.7230488602337,45.4823071291551],[-73.7224677932762,45.4827515610007],[-73.7223560083239,45.4826796952282],[-73.7198554572557,45.4810890753356],[-73.7164800257025,45.4789417367142],[-73.7138278770338,45.477254315674],[-73.7125201554323,45.4764221991712],[-73.7081490474139,45.4735992659858]],[[-73.6828058933345,45.4631779363512],[-73.6816241550401,45.4674908085533],[-73.6816475976913,45.4675067033372],[-73.6799993457044,45.4735210003517],[-73.6799742717642,45.473511144977],[-73.6792265581809,45.4762389436552],[-73.6779373824716,45.4809415842212],[-73.6779608229266,45.4809574706775],[-73.6775902043258,45.4823092647883],[-73.677212053007,45.4836885142825]],[[-73.677212053007,45.4836885142825],[-73.6858354528323,45.4894558180251],[-73.6856204014368,45.4895529619297],[-73.6850818912618,45.4897275129731],[-73.684912003898,45.4897702572988],[-73.6847429209581,45.4898145504798],[-73.6845746692709,45.4898603843772],[-73.6843619768543,45.4899208834271],[-73.6841507300218,45.4899838380868],[-73.6839409862738,45.4900492329741],[-73.6838542303476,45.4900771337296],[-73.6837677469267,45.4901054524017],[-73.6836815411156,45.4901341853832],[-73.6828431230772,45.4904398800472],[-73.6827415839348,45.4904895864347],[-73.6821907687488,45.4907133733821],[-73.6819754493365,45.4908114792501],[-73.6817664230272,45.4909161030314],[-73.6815640895891,45.4910270443612],[-73.6814440405431,45.4910977752705],[-73.6813267132279,45.491170731534],[-73.6812121906299,45.4912458599377],[-73.6811894015316,45.4912612214232],[-73.6808958013615,45.4914690867173],[-73.6803502582482,45.4918819989632],[-73.6784902199698,45.49337064152],[-73.6785436544519,45.4934043452251],[-73.6761369454254,45.4953202307912],[-73.6753191643077,45.4959517769191],[-73.6737747513023,45.4971626088033],[-73.6734406441111,45.4974241247033],[-73.6679092584033,45.5017435896795],[-73.6646439095566,45.5044267443639],[-73.6644258828565,45.5047737807765],[-73.6625813949955,45.507605449769],[-73.6625348771184,45.5076730956619],[-73.6624382131421,45.5077601192494],[-73.6619078225391,45.5085851912799],[-73.6611946234212,45.5097125850061],[-73.6599960663403,45.5116071357526],[-73.659886650752,45.5117712317348],[-73.6598391443901,45.5118568267446],[-73.6594458185922,45.5124909874599],[-73.6591406478188,45.5129958218259],[-73.6583394917723,45.5143011494585],[-73.6579906459183,45.5148476428553],[-73.6577811959759,45.5151837372792],[-73.65776340451,45.5152124136682],[-73.6554280901699,45.5186540071582],[-73.6550268159509,45.5192421418754],[-73.6550078932431,45.5192704145354],[-73.654857061677,45.5194916080788],[-73.654836837046,45.5195212853424],[-73.6547465681642,45.5196138389305],[-73.6545430832767,45.519970146331],[-73.6545280631887,45.5199924557879],[-73.6545454171995,45.5199982298248],[-73.6527681931102,45.5228458531792],[-73.6518666699911,45.5243741686892],[-73.6512569615905,45.5254405314593],[-73.6507508626002,45.526307356847]],[[-73.6287732200027,45.5832270961725],[-73.6267602959658,45.585463132119],[-73.6253702471344,45.5848621067026],[-73.6247972554571,45.5847390935067],[-73.6242662181385,45.5846531034182],[-73.6240002253516,45.5845401854348],[-73.6238352120131,45.5844411050581],[-73.6236101546491,45.5842921448879],[-73.6234401933328,45.5841541030941],[-73.6232731424587,45.5839931104495],[-73.6227892081481,45.5837381459857],[-73.6226031316309,45.5836701322487],[-73.6218901593317,45.5833671709145],[-73.6214461540819,45.5831391527564],[-73.6212912289134,45.5830541845698],[-73.6208352087117,45.5828401259149],[-73.620666141108,45.5827651611629],[-73.6191101755403,45.5820791612676],[-73.6177791792168,45.5814990973173],[-73.6169501873703,45.581137096182],[-73.6160232246742,45.5807230801032],[-73.614793180599,45.5801731087554],[-73.6146301457412,45.5800950678111],[-73.6139892331344,45.5797910777527],[-73.6123472303964,45.5790270313751],[-73.6121291984584,45.5789270835605],[-73.6119312363409,45.5788220768269],[-73.6113231918672,45.578558092159],[-73.6106031463129,45.5782540774588],[-73.6087091776336,45.5774490240219],[-73.6085001551687,45.5773560809248],[-73.6059231159328,45.5762430601432],[-73.6046220372274,45.5756500461433],[-73.6043680371638,45.5755750454117],[-73.6028070467406,45.5747600576644],[-73.6027830345646,45.5747481107715],[-73.6023740545657,45.5742870967314],[-73.601871059576,45.5744940716806],[-73.601680135853,45.5742830343945],[-73.6012380461875,45.5741541087756],[-73.6008770701862,45.5739950533595],[-73.6008121003322,45.5740680928251],[-73.6007030540494,45.5740190529916],[-73.6006621261998,45.574062104675],[-73.6005380705091,45.5740110982128],[-73.6006761451671,45.5738620429728],[-73.6016441631664,45.5727831075069],[-73.5990631712836,45.5716501158398],[-73.595902144977,45.5702481033906],[-73.5929250587812,45.5689430972398],[-73.592716089241,45.5688490476889],[-73.5903830160172,45.5678120726458],[-73.5871750155983,45.5663871293229],[-73.5871469592181,45.5664211682795]],[[-73.5398579830246,45.4280063599261],[-73.5389133468799,45.4286730728954],[-73.5388080696712,45.4287359487911],[-73.5363081980863,45.4306804136883],[-73.5348080518481,45.4319581253943],[-73.533474599906,45.4331525287498],[-73.5312523718321,45.4354302703126],[-73.5296968601727,45.4371525254611],[-73.5283634539929,45.4388747155487],[-73.5273910468359,45.4401525048214],[-73.5260299224558,45.4422914345848],[-73.5241690531113,45.4457636480508],[-73.5232244207417,45.4478747424807],[-73.5226134672084,45.4495136610059],[-73.5222519966196,45.450624799821],[-73.5205974508747,45.4556368431671],[-73.5193946103953,45.4607122682813],[-73.5186483009215,45.4658309428023],[-73.5188677703395,45.4675905297772],[-73.5193241444254,45.4693274485809],[-73.520013299103,45.4710259419713],[-73.5209289816194,45.4726706072644],[-73.5212763404032,45.4731533628261]],[[-73.6068401918011,45.4952759075412],[-73.6049051714614,45.4947679078679],[-73.6045971796269,45.4947459607638],[-73.6038191902154,45.4947559450814],[-73.6031461345849,45.4949019071046],[-73.6029471863289,45.494953926876],[-73.6027421396136,45.4950179198557],[-73.6028491413678,45.4944909109949],[-73.6016011328737,45.4943469817449],[-73.6009131088345,45.4942669711947],[-73.6012071727302,45.4937010071047],[-73.5998470900093,45.4931250098521],[-73.5982470528305,45.492436958941],[-73.5968680321132,45.4918670386769],[-73.5964670504372,45.4917039493407],[-73.5957200428208,45.4926119835128],[-73.5926138807723,45.4916460377021],[-73.5893259193684,45.4905840906473],[-73.5884928893171,45.490311086507],[-73.5865809660419,45.4896910947713],[-73.5848800668364,45.4891417472369],[-73.5846479680748,45.4890639705484],[-73.5843032794056,45.4889484761183],[-73.5838478601415,45.4887983185711],[-73.5835960329987,45.488718551389],[-73.5834746352327,45.4886800661886],[-73.5825681222597,45.4883974020874],[-73.5825012412241,45.4883749567427],[-73.5824125681957,45.4883441588675],[-73.5831344205449,45.4881256166176],[-73.581750109105,45.4869986277515],[-73.5815240781672,45.4867156699989]],[[-73.5291826363344,45.4917076069951],[-73.5292195566601,45.4918006975219],[-73.5192220227645,45.4951852416999],[-73.5204442459801,45.4991229496501],[-73.519872972145,45.4992106428096],[-73.5302322111121,45.5325677446719],[-73.530330966113,45.5329739872072],[-73.5303764136004,45.5333848757669],[-73.5303681712313,45.5337969581879],[-73.5303063071203,45.5342067825796],[-73.5301913395574,45.5346109101815],[-73.5301291075517,45.5347580265772]],[[-73.6481900695937,45.5307189032401],[-73.6414813307105,45.5287655336015],[-73.6375113588793,45.5276173761569],[-73.6294606564508,45.5252884967829],[-73.6227672281163,45.5233516491541],[-73.6221455594791,45.5240232718452],[-73.6216672610185,45.523898074322],[-73.6207755934418,45.5236508796029]],[[-73.894533712414,45.4101474077226],[-73.8955919400618,45.4140464163116],[-73.898123280518,45.4233694641677],[-73.8980722658469,45.423414459257],[-73.9011974142341,45.4351554991761]],[[-73.9011974142341,45.4351554991761],[-73.901643370581,45.4350094918952],[-73.9027523158182,45.4346105160048],[-73.9039373571024,45.4341375548743],[-73.9047143115305,45.4337845499245],[-73.9164022728533,45.4275425825383],[-73.9289650417636,45.4209534713447],[-73.9299080311375,45.420563495653],[-73.931145039097,45.4201985026762],[-73.9322937988237,45.4133464055275],[-73.9327108548068,45.4111314372023],[-73.9334539290696,45.4063585615923],[-73.9335809858324,45.4054995520658],[-73.9336489548392,45.4050445617308],[-73.9341520583382,45.3988273405852]],[[-73.9341520583382,45.3988273405852],[-73.9290723636895,45.3984024074542],[-73.9266834523599,45.3982912197981],[-73.9251556036339,45.3982634414506],[-73.9233498210449,45.3982356799622],[-73.9188774375908,45.3983467266573],[-73.9164049794864,45.3989022708323],[-73.9150991387766,45.3994022452498],[-73.9134881510063,45.4002355577508],[-73.9088062366409,45.4039510021393],[-73.9047259372644,45.406578573618],[-73.9013207288626,45.4080687240445],[-73.8996261923671,45.4087910197932],[-73.89754291832,45.4094576771695],[-73.8961260354836,45.4098466040063],[-73.8946417707439,45.4101380137663],[-73.894533712414,45.4101474077226]],[[-73.894533712414,45.4101474077226],[-73.8920156483821,45.4103662834257],[-73.8888202994409,45.4101798383062],[-73.8862157702347,45.4098931329249],[-73.8837922321142,45.4094853534952],[-73.879125591627,45.4084575554682],[-73.8761258314667,45.4077074801404],[-73.8684031269009,45.4054297080296],[-73.8665697547527,45.4048463248388],[-73.8562085513937,45.401262939663],[-73.8483191871825,45.3981238758384],[-73.8450137144451,45.3967072200948],[-73.8429303951586,45.3957349844274],[-73.836874498228,45.3928183163229],[-73.8318189675997,45.3903460283604],[-73.8221797251068,45.3854017852652],[-73.8162626313534,45.3920127117698],[-73.814627887428,45.3937185474742]],[[-73.814627887428,45.3937185474742],[-73.8317043795134,45.4284044510674],[-73.8323374579228,45.4296894453775],[-73.8319803799037,45.4297534798124],[-73.8336534432088,45.4338874104954],[-73.8351184289778,45.4375104322429],[-73.8350174338206,45.4375644554773],[-73.8353674613987,45.4384544593679],[-73.8382845286656,45.4454013430943]],[[-73.8382845286656,45.4454013430943],[-73.8407905875309,45.4454203344782],[-73.8520654089719,45.445422330054],[-73.8557354606898,45.4435753517885],[-73.8650633536458,45.4389845378702],[-73.8684124225624,45.4429234495806],[-73.8715085008199,45.4413654565952],[-73.8727944618262,45.4425404574813],[-73.8737764817214,45.442231450955],[-73.8751285765171,45.4417944197413],[-73.8768775654376,45.4414294988871],[-73.875925536275,45.4386514696744],[-73.8759765078837,45.4385794875157],[-73.8760784775995,45.4384714288612],[-73.8764105048243,45.4384434266943],[-73.8766904830542,45.4382625162534],[-73.8770474497189,45.4381804334686],[-73.8770984641122,45.4380994512023],[-73.8772655026348,45.4382154409575],[-73.8777894638559,45.4382584358066],[-73.8780965475755,45.4382215117864],[-73.8782244789789,45.43827544455],[-73.8784795396568,45.4382475112367],[-73.878504465969,45.4381754332981],[-73.878671568688,45.4383005111686],[-73.8789405601691,45.4382904394751],[-73.87915850175,45.4383714306881],[-73.8792225531933,45.438442492542],[-73.8792995179785,45.4384425068574],[-73.8798195762904,45.439880501008],[-73.8818195631452,45.4388394414706],[-73.8810765048914,45.4367184307067],[-73.883182473319,45.4361535137564],[-73.8837665947446,45.4374464681327],[-73.8844185461477,45.4374624588019],[-73.8851085319672,45.4375054960665],[-73.8859895453037,45.4372864526072],[-73.8858064506051,45.4367204678158],[-73.8934124377737,45.43511047319],[-73.893999438643,45.436728539765],[-73.9000854253065,45.4352764778063],[-73.9002034037434,45.4355905066023],[-73.9012363511951,45.4353535304524]],[[-73.9012363511951,45.4353535304524],[-73.901223335743,45.4352724907099],[-73.9011974142341,45.4351554991761]],[[-73.6681676863569,45.4565489710695],[-73.6680680808386,45.4566668357569],[-73.667821093707,45.4569591311552],[-73.6674614381208,45.4573573235817],[-73.6673166416852,45.4575649749428],[-73.6668183469701,45.4573768881919],[-73.6667035147107,45.4573336460819],[-73.6666465401275,45.4573121827753],[-73.66648713714,45.4572519928376],[-73.666457668633,45.4572408581526],[-73.6662714986102,45.4571705586894],[-73.6660799224142,45.4570982007872],[-73.666055859627,45.4570891232396],[-73.6658910464348,45.457026876145],[-73.66562339244,45.4569240212521],[-73.6655147970019,45.4568822980772],[-73.6653253700783,45.4568116850907],[-73.6651361234081,45.456740842971],[-73.6649466977697,45.4566702374604],[-73.6647578294111,45.4565989019569],[-73.6644314707291,45.4564745745694],[-73.6643808398523,45.4564552796061],[-73.6640034808831,45.4563121406757],[-73.6638155520505,45.4562396063821],[-73.6636278060233,45.4561668348604],[-73.6634231487788,45.4560872422535],[-73.6632179292415,45.4560083789667],[-73.663048038407,45.4559412057676],[-73.6628773990698,45.455875007924],[-73.6627069462393,45.455808563004],[-73.6622812784854,45.455641838373],[-73.6620950301277,45.455567137191],[-73.661907845703,45.4554936311356],[-73.6618496945346,45.4554713849371],[-73.6617195456459,45.4554215769121],[-73.6616578916059,45.4553980875013],[-73.6615281428251,45.455348621537],[-73.6614698151183,45.4553258129973],[-73.6613378449036,45.4552742497308],[-73.6612858390331,45.4552538743328],[-73.6610950447964,45.455179266175],[-73.6609973311614,45.4551410987002],[-73.6609077170876,45.4551060133797],[-73.6607140342605,45.4550351781239],[-73.6606698450336,45.4550195192168],[-73.6605160009284,45.4549602795767],[-73.6603623277588,45.4549008199321],[-73.6603339409817,45.4548898835517],[-73.6602085516116,45.4548414916078],[-73.6600564802693,45.4547794980503],[-73.659752773543,45.4546557121978],[-73.6595567328478,45.454575799806],[-73.6591786538478,45.4549137435419],[-73.6588762011384,45.4551709726048],[-73.6587408880377,45.4552924635485],[-73.6586168709649,45.4554010744465],[-73.6584965526305,45.4555111126096],[-73.6583040814854,45.4556701176647],[-73.658182250478,45.4557788212014],[-73.657991682055,45.455940073598],[-73.6584523897866,45.4561162043443],[-73.6585700824865,45.4561612084208],[-73.6594163879024,45.4564847723717],[-73.6594433118632,45.456495060446],[-73.6597857583037,45.4566259899362],[-73.6599571689681,45.4566938795714],[-73.6611534065809,45.4571550963642],[-73.6613243024276,45.4572209906719],[-73.660394508691,45.4578441421417],[-73.6601927344255,45.4579725039144],[-73.6598907727043,45.4581554624567],[-73.6596956388718,45.4583125927885],[-73.6596455219268,45.4584276917699],[-73.6579627849665,45.4595293234168]],[[-73.644459591704,45.4739660002599],[-73.644904047153,45.4741559891925],[-73.6451568282817,45.4742593625664],[-73.6465826401703,45.4748734593596],[-73.6469170419987,45.4750208641439],[-73.6471082019545,45.475105138287],[-73.6476830427246,45.4753465763872],[-73.6480299303794,45.4754995421823],[-73.6481960662322,45.4755714034625],[-73.6483624116002,45.4756430347339],[-73.648529583517,45.4757131718114],[-73.6487318834291,45.4757927267061],[-73.6488589897295,45.4758417103541],[-73.649166604113,45.4759769989396],[-73.6492438040032,45.4760109413555],[-73.6494478182787,45.4761006689235],[-73.6500145494914,45.4763498896156],[-73.6508418442488,45.47671370427],[-73.6560111303193,45.4789340349537]],[[-73.6559770017075,45.4844290758318],[-73.654869920986,45.4839250878494],[-73.6540149065935,45.4848890822481],[-73.6546548862652,45.4851670184868],[-73.6530013511913,45.4869373996762],[-73.6524678303751,45.4875272287558],[-73.6515873965003,45.4885158463909],[-73.6514679310546,45.4886499982479],[-73.6511634728205,45.4889836808889]],[[-73.6388304224155,45.4834377720507],[-73.6388908315856,45.4833672747837],[-73.6391408567337,45.4830902593747],[-73.6389765748154,45.4830163002923],[-73.6373399112323,45.4822793769316],[-73.6368486091765,45.4820581695019],[-73.6366011541088,45.4819467411847],[-73.6365186057496,45.4819095800853],[-73.635681037565,45.4815324339111],[-73.6354810402582,45.4814437067458],[-73.6325169727642,45.480108844491],[-73.6322667212073,45.4799948542289],[-73.6308195600955,45.4793442297966]],[[-73.8545620756257,45.4705969521696],[-73.8485405515301,45.4646454489146],[-73.8465856654758,45.4627974434075]],[[-73.8465856654758,45.4627974434075],[-73.8430547075239,45.4645804336433],[-73.8391406086946,45.4666084337239],[-73.8318726511936,45.4702824661819],[-73.8237747181917,45.474319519709],[-73.815585665563,45.4783375064213],[-73.8151996799862,45.4777985204134],[-73.814464718764,45.4768645216693],[-73.8134746989534,45.4758954911959],[-73.8127416679552,45.4751864602791],[-73.7959126575489,45.4830875177618],[-73.7947036136552,45.4818125740811]],[[-73.7947036136552,45.4818125740811],[-73.7895995616625,45.4842105356839],[-73.7816993480297,45.4880365147327],[-73.7761863531615,45.4907224843467],[-73.7683378180592,45.4943590537364]],[[-73.7947036136552,45.4818125740811],[-73.7901516591099,45.4772175310921],[-73.7888146845411,45.4757625578537],[-73.7866286112462,45.473599478758],[-73.7817055642213,45.4685095159712],[-73.7802914536057,45.4671904663737],[-73.7820905461202,45.4663224241178],[-73.7846167740294,45.4650833801048],[-73.7832928414208,45.4637273680891],[-73.7827619351712,45.4622893902009],[-73.7827348584573,45.462064385722],[-73.7816838795016,45.4590613975494],[-73.7805318352697,45.4561933384991],[-73.7800517717586,45.4548994225686],[-73.7822878728655,45.4544523789418],[-73.7813787292925,45.4517553214738],[-73.7801116974963,45.4488973414744],[-73.7788934770678,45.4456153801962],[-73.7650422148075,45.4190569997397]],[[-73.7650422148075,45.4190569997397],[-73.7649550066688,45.4190683089815],[-73.7639827680923,45.4191794469822],[-73.7579826349814,45.419707194551],[-73.7543990840613,45.4199572490399],[-73.7506211515753,45.4202072537875],[-73.7429542433247,45.4204850715701],[-73.737065214066,45.4207905893069],[-73.7316760864812,45.4210961656922],[-73.7268703010329,45.4214850338142],[-73.7229892547875,45.4217852596423]],[[-73.7398954804591,45.4305913646116],[-73.7401512429028,45.4306059309229],[-73.7405720907186,45.4306365015926],[-73.7406718693844,45.4306445422109],[-73.7409834733793,45.4307040068181],[-73.7412978270278,45.4307583418942],[-73.7413934203626,45.4307741680825],[-73.7420056139639,45.4309136163554],[-73.7421002433691,45.4309312441848],[-73.742489920613,45.4310555127162],[-73.7429016331507,45.4311577019375],[-73.7430021684683,45.431170105398],[-73.7432082229556,45.4311810357001],[-73.7433760297073,45.4312109928847],[-73.7434178940691,45.4312294894348],[-73.7434701333888,45.4312166437936],[-73.743830179249,45.4312052830226],[-73.7441220165417,45.4312373186871],[-73.7444289597385,45.4312353232301],[-73.7447242834552,45.4312595122203],[-73.7450954998991,45.4313350311372],[-73.7454394432457,45.4314990020615],[-73.7457267703443,45.4316360991434],[-73.7460528483958,45.4318525332406],[-73.7459800683763,45.4318831920282],[-73.7462741538869,45.4322388444203],[-73.7463329449021,45.4322400351204],[-73.7463253740897,45.4322728031173],[-73.7462705177126,45.4325281993733],[-73.746261019998,45.4325743369103],[-73.7462100358573,45.4326581490788],[-73.7460159116674,45.4328297768267],[-73.7460015194894,45.4328410479618],[-73.7455708859881,45.4330010255254],[-73.7452443819534,45.4332590202607],[-73.7448868316751,45.4335029356434],[-73.7447303421751,45.43366014804],[-73.7443903963196,45.4337204428754],[-73.7442914089869,45.433735533054],[-73.744031287189,45.4337505042977],[-73.7439146406245,45.4337456230547],[-73.7437605569699,45.4337160671952],[-73.7436827145848,45.4336908377983],[-73.7433209717134,45.4335891412174],[-73.7431104208166,45.4335590907988],[-73.7430271318791,45.4335293994252],[-73.7427732801405,45.433512938766],[-73.7426827086952,45.4335496095801],[-73.7425970314728,45.4335422176826],[-73.7425698865267,45.4335398856594],[-73.7424736080015,45.4334700270664],[-73.7423264925085,45.4334350326966],[-73.7418875347041,45.4334283673639],[-73.7417913313822,45.4334405582342],[-73.7414535672954,45.4335504186302],[-73.7411044510016,45.4335728831614],[-73.741006324513,45.4335702522691],[-73.7406635936483,45.4336418779363],[-73.7403173139595,45.4336861878895],[-73.7402218069319,45.4337037722684],[-73.7397596061461,45.4337672548374],[-73.7392063826271,45.4336947713977],[-73.7391134733952,45.4336742280291],[-73.7388138857438,45.4335907514768],[-73.7385096253241,45.4335177420128],[-73.7383633356536,45.4334795847356],[-73.7382104811986,45.4334834209773],[-73.7380159742369,45.4334655327204],[-73.7378209810254,45.4334805365862],[-73.7376262309725,45.4334790992913],[-73.737431494409,45.4334776515572],[-73.737344529347,45.4334934310609],[-73.7372549383278,45.4334927657517],[-73.7371334318738,45.4334590189826],[-73.737049075295,45.4334057047551],[-73.7370785062568,45.4331184916922],[-73.7370752374789,45.4330499022261],[-73.7371133720922,45.4329103815155],[-73.7371806232361,45.4327764241857],[-73.7372756845242,45.4325863969819],[-73.7374036114761,45.4324061788458],[-73.737562405588,45.4322385757943],[-73.7376869230555,45.4322257321235],[-73.7381879042782,45.4318700264547],[-73.7384241253297,45.4316876554764],[-73.7385888553805,45.4314872175814],[-73.7386433162858,45.4314293863177],[-73.7388040273257,45.4312263731722],[-73.7389342265836,45.4310037659087],[-73.7389759091119,45.4309377358737],[-73.7392672670845,45.4308186058562],[-73.739422754609,45.4307662479698],[-73.7395758813648,45.4307105555335],[-73.7396709119537,45.4306787906737],[-73.7398954804591,45.4305913646116]],[[-73.8382845286656,45.4454013430943],[-73.8321485464365,45.445365382156],[-73.8358176281517,45.4497273589085],[-73.833426683562,45.4497343729257],[-73.8465856654758,45.4627974434075]],[[-73.9043512629398,45.4467807139511],[-73.9045904714733,45.4467245163263],[-73.9042324293959,45.4450065421623],[-73.9055344245809,45.4446965786555],[-73.9052974513905,45.4438065712027],[-73.9052584441269,45.4436895382515],[-73.9052064561339,45.4434825563738],[-73.9049434685757,45.4425655531735],[-73.904668466813,45.4415595872457],[-73.9043923960805,45.4405075432215],[-73.9039184586457,45.4403285114862],[-73.9034324081527,45.4403575860916],[-73.9032533938317,45.4404035739772],[-73.9029584025162,45.4402425350227],[-73.90286841385,45.4401164999863],[-73.9028164224828,45.4399815124209],[-73.9027243995309,45.4396585773302],[-73.9024623735858,45.4387955568022],[-73.902334422867,45.4387865578741],[-73.9013153643734,45.4355685201631],[-73.9012363511951,45.4353535304524]],[[-73.5068798058957,45.610651036789],[-73.4994557045912,45.6093697207333],[-73.498521942156,45.6124428904008],[-73.4966509970971,45.6163518638141],[-73.4948609220985,45.6188688924636],[-73.4932748824442,45.6202338842668],[-73.4912409832005,45.6220538449922],[-73.4894509708908,45.6239278544186],[-73.4878229668361,45.6260159314186],[-73.4855440699464,45.6292828787832],[-73.4841146731455,45.6315813105886],[-73.4919013588155,45.6328613271054]],[[-73.814627887428,45.3937185474742],[-73.8137070179475,45.3946793863182],[-73.8067621758083,45.400568310613],[-73.8040675996805,45.4025682836182],[-73.8005396514094,45.4050127942899],[-73.7962897607119,45.4077350134431],[-73.7923726457151,45.4099572566301],[-73.7896780995164,45.4114849513535],[-73.7864834818402,45.4131239043295],[-73.7843723685306,45.4140961948123],[-73.7824280650846,45.4149295200613],[-73.7784835285234,45.4163182962981],[-73.7764552694773,45.4169572445935],[-73.7747887798413,45.4174017124042],[-73.7679551350979,45.41867940091],[-73.767489442627,45.4187396149766],[-73.7650422148075,45.4190569997397]],[[-73.9249009474547,45.4405960005763],[-73.9266815795142,45.4400036233685],[-73.9274705612376,45.4412065934529],[-73.9315125567127,45.4398865688618],[-73.9307115450426,45.4387465779608],[-73.9326625912322,45.4381366021704],[-73.936882425358,45.436788622528],[-73.9369614413538,45.4370125874595],[-73.9375514497427,45.4372895831911],[-73.9393234540109,45.4366795458382],[-73.9402934834728,45.4382596230252],[-73.9424614872026,45.4375945604624],[-73.9440144386572,45.4367606000988],[-73.9454054221028,45.4364225777703],[-73.9465175127668,45.4380375937367],[-73.9475766105435,45.4377906481738],[-73.9468514789976,45.4366236525601],[-73.9480504685373,45.4363666166781],[-73.9460174163641,45.4330096028825],[-73.9461063882372,45.4329826172925],[-73.9496055043071,45.4357576413848],[-73.9510165184109,45.4364006698356],[-73.9583243006306,45.4281736616008],[-73.955466258112,45.4271776006756],[-73.954548165052,45.4226726336293],[-73.9506890807064,45.4178195788671],[-73.9500071736135,45.4172196643627],[-73.9498261416114,45.4169315871039],[-73.9498731509922,45.4164816150971],[-73.949883064656,45.4160586074488],[-73.9498801292097,45.4156896473656],[-73.9498011500293,45.4153396142814],[-73.9497331378886,45.4148446493591],[-73.9496010870471,45.414287660703],[-73.9495850548658,45.4139546585582],[-73.9516110694747,45.4116426293959],[-73.9547631617695,45.4079585643742],[-73.9566672401535,45.4096695601492],[-73.9572242598419,45.4090375266615],[-73.9571082199739,45.408930533838],[-73.9607149248518,45.4061814278033]],[[-73.9607149248518,45.4061814278033],[-73.9607034465839,45.4060934487693],[-73.9605518662761,45.4054193428807],[-73.9604105012802,45.4048353706789],[-73.9598135824515,45.4043744663755],[-73.9590022027168,45.4040926242353],[-73.9575596449907,45.4035521601972],[-73.9560641594059,45.4031185925169],[-73.9546602023519,45.4029103366293],[-73.9528578822955,45.4023711690996],[-73.9513782440042,45.4016761997739],[-73.9502604021366,45.4012887311017],[-73.9490363317059,45.4010678851693],[-73.9471030981347,45.4010101958701],[-73.9446200970071,45.4007229506331],[-73.9410273156795,45.3998995769627],[-73.9383502977694,45.3993746220184],[-73.9354133576609,45.3989487717892],[-73.9347755289345,45.3988794780883],[-73.9341520583382,45.3988273405852]],[[-73.9743520622515,45.4664301916245],[-73.9763799901425,45.4652913618176],[-73.9779078815584,45.4644302333433],[-73.9799079893468,45.4635136442412],[-73.9812133534743,45.4629303121686],[-73.9822411866313,45.4624581084839],[-73.9849637945049,45.461374777071],[-73.9875472104771,45.4604025751909],[-73.9901028930184,45.4595136843583],[-73.9923529009719,45.4587637420019],[-73.9950752971843,45.4579582600396],[-73.9966030869942,45.45748604394],[-73.9961865592759,45.4567916002939],[-73.9961585479549,45.4567360177139],[-73.9958809693957,45.4561805394641],[-73.9949085850121,45.4544582239237],[-73.9947973418303,45.4542915865293],[-73.9936863666513,45.452124911057],[-73.9922974154305,45.4493192958966],[-73.9920472203643,45.4487915630315],[-73.9919359285336,45.4485692150625],[-73.9914361822719,45.4475137469142],[-73.9909915897973,45.4465415561926],[-73.9905469533201,45.4455137475741],[-73.9904637435578,45.4454026914728],[-73.9898247467035,45.4439304226787],[-73.9894636855033,45.4430137573686],[-73.9881859338067,45.439624918569],[-73.9877968376642,45.4386526670685],[-73.9870188013358,45.4365136805856],[-73.9868244393694,45.4359304465737],[-73.9864633099593,45.434735962205],[-73.9853800815662,45.431124874057],[-73.984518863379,45.4276526792409],[-73.9843521168663,45.4268193190158],[-73.9842408917292,45.4263748567779],[-73.9841576820118,45.4260137905962],[-73.9839074847703,45.424985944328],[-73.9834909733235,45.4226249028676],[-73.9832964986087,45.4211805034721],[-73.9831852769496,45.4203748897691],[-73.9831298416736,45.4199304584202],[-73.9830462954192,45.4192915773467],[-73.9829630909781,45.41879146722],[-73.9828796518913,45.4183748716638],[-73.9826574662759,45.4177915633483],[-73.9822964377941,45.4171526840531],[-73.9820739416241,45.4167914820987],[-73.9818240988699,45.4164859229969],[-73.980727854491,45.4152072937435],[-73.9792407639163,45.4142366371608],[-73.9768715872373,45.4131944122396],[-73.9734778156882,45.4120813393781],[-73.9693454274974,45.4109899302534],[-73.9667804076812,45.4103241257593],[-73.9645994979233,45.4096661551039],[-73.9630864955796,45.4089395421552],[-73.961714864527,45.4081372756978],[-73.961170289792,45.407575817595],[-73.9607940799188,45.4067881418942],[-73.9607149248518,45.4061814278033]]], bbox:[-73.9966030869942,45.3854017852652,-73.4738656203371,45.707578526278]}},{}],13:[function(require,module,exports){var mapboxgl=require("mapbox-gl");var d3_selection=require("d3-selection");var d3_format=require("d3-format");var topojson=require("topojson-client");var topology=require("./data.json");var data=topojson.feature(topology,topology.objects["0"]);data.properties=topology.objects["0"].properties;var specs=[{key:"pop",name:"Population",units:"habitants",cbUnits:"millier d'habitants",format:","},{key:"density",name:"Densité de population",units:"habitants par km²",cbUnits:"millers d'habitants par km²",format:",.2f"}].reverse();mapboxgl.accessToken="pk.eyJ1IjoiZXRwaW5hcmQiLCJhIjoiY2tjYjNnY3RmMDFkdDJxcnZkZ2VsN3N5YSJ9.iUvyVW1z-8qNZZyT9kmzfw";d3_format.formatDefaultLocale({decimal:",",thousands:" ",grouping:[3]});d3_selection.select("body").append("fieldset").style("border","none").append("select").attr("id","layer-select").selectAll("option").data(specs).enter().append("option").attr("value",function(d){return d.key}).text(function(d){return d.name});d3_selection.select("body").append("div").attr("id","map").style("width","1000px").style("height","800px");d3_selection.select("body").append("svg").attr("width",1e3).attr("height",300);var map=new mapboxgl.Map({container:"map",style:"mapbox://styles/mapbox/light-v9",center:[-73.67563994222256,45.491548049146814],zoom:10,pitch:10});map.addControl(new mapboxgl.NavigationControl);var popup=new mapboxgl.Popup({closeButton:false,closeOnClick:false});map.on("load",function(){map.addSource("source",{type:"geojson",data:data});specs.forEach(function(spec){addChoroplethLayer(spec);addExtrudedLayers(spec);addColorbar(spec)});map.on("mousemove",mousemoveHandler);map.on("click",clickHandler);setVisibility();d3_selection.select("#layer-select").on("click",function(){clearVisibility();setVisibility()})});function addChoroplethLayer(spec){var key=spec.key;map.addLayer({id:"choropleth-"+key,type:"fill",source:"source",layout:{visibility:"none"},paint:{"fill-color":{property:key+"-color",type:"identity"},"fill-outline-color":"#088","fill-opacity":.7}})}function addExtrudedLayers(spec){var key=spec.key;data.features.forEach(function(f){var name=f.properties.name;map.addLayer({id:"extrude-"+name+"-"+key,type:"fill",source:"source",layout:{visibility:"none"},paint:{"fill-color":{property:key+"-color",type:"identity"},"fill-extrude-height":{property:key+"-z",type:"identity"},"fill-extrude-base":0,"fill-opacity":.65},filter:["==","name",name]})})}function addColorbar(spec){var key=spec.key;var colorbarData=data.properties[key+"-colorbar"];var formatter=function(v){return v/1e3};var n=colorbarData.length;var w=50;var h=30;var colorbar=d3_selection.select("svg").append("g").attr("id","colorbar-"+key).classed("colorbar",true).style("cursor","pointer").style("visibility","hidden");var items=colorbar.selectAll(".item").data(colorbarData).enter().append("g").classed("item",true).attr("transform",function(_,i){return"translate("+(i*w+5)+",0)"});items.append("rect").attr("x",0).attr("y",0).attr("width",w).attr("height",h).attr("fill",function(d){return d[1]});items.append("line").attr("x1",0).attr("y1",h).attr("x2",0).attr("y2",h+5).attr("stroke-width","1.5").attr("stroke","black");items.append("text").text(function(d){return formatter(d[0])}).attr("x",-5).attr("y",2*h);colorbar.append("text").text(""+spec.name).attr("x",""+(w*n+10)).attr("y",h/2+5);colorbar.append("text").text("[en "+spec.cbUnits+"]").attr("x",""+(w*n+10)).attr("y",h+15);items.on("click",function(d,i){var min=d[0];var max=colorbarData[i+1]?colorbarData[i+1][0]:Infinity;var featuresWithin=[];data.features.forEach(function(f){var val=f.properties[key];if(val>=min&&val"+prop.name+"
\n Population: "+formatter(prop[spec.key])+" "+spec.units+"\n ").trim();popup.setLngLat(new mapboxgl.LngLat(lnglat[0],lnglat[1])).setHTML(html).addTo(map);popup._container.onclick=function(){extrudeVisiblity(feature,spec.key).toggle()}}function clickHandler(evt){var features=findFeatures(evt);if(!features.length)return;var feature=features[0];var spec=getVisibleSpec();extrudeVisiblity(feature,spec.key).toggle()}function getVisibleSpec(){var key=d3_selection.select("#layer-select").node().value;return specs.filter(function(s){return s.key===key})[0]}function findFeatures(evt){return map.queryRenderedFeatures(evt.point,{layers:specs.map(function(s){return"choropleth-"+s.key})})}function setVisibility(){var spec=getVisibleSpec();var key=spec.key;map.setLayoutProperty("choropleth-"+key,"visibility","visible");d3_selection.select("#colorbar-"+key).style("visibility",null)}function clearVisibility(){specs.forEach(function(s){var key=s.key;map.setLayoutProperty("choropleth-"+key,"visibility","none");d3_selection.select("#colorbar-"+key).style("visibility","hidden");data.features.forEach(function(f){extrudeVisiblity(f,key).set("none")})})}function extrudeVisiblity(feature,key){var name=feature.properties.name;var layerId="extrude-"+name+"-"+key;var get=function(){return map.getLayoutProperty(layerId,"visibility")};var set=function(val){return map.setLayoutProperty(layerId,"visibility",val)};var toggle=function(){return set(get()==="visible"?"none":"visible")};return{get:get,set:set,toggle:toggle}}},{"./data.json":12,"d3-format":14,"d3-selection":15,"mapbox-gl":33,"topojson-client":216}],14:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):factory(global.d3=global.d3||{})})(this,function(exports){"use strict";function formatDecimal(x,p){if((i=(x=p?x.toExponential(p-1):x.toExponential()).indexOf("e"))<0)return null;var i,coefficient=x.slice(0,i);return[coefficient.length>1?coefficient[0]+coefficient.slice(2):coefficient,+x.slice(i+1)]}function exponent(x){return x=formatDecimal(Math.abs(x)),x?x[1]:NaN}function formatGroup(grouping,thousands){return function(value,width){var i=value.length,t=[],j=0,g=grouping[0],length=0;while(i>0&&g>0){if(length+g+1>width)g=Math.max(1,width-length);t.push(value.substring(i-=g,i+g));if((length+=g+1)>width)break;g=grouping[j=(j+1)%grouping.length]}return t.reverse().join(thousands)}}function formatDefault(x,p){x=x.toPrecision(p);out:for(var n=x.length,i=1,i0=-1,i1;i0)i0=0;break}}return i0>0?x.slice(0,i0)+x.slice(i1+1):x}var prefixExponent;function formatPrefixAuto(x,p){var d=formatDecimal(x,p);if(!d)return x+"";var coefficient=d[0],exponent=d[1],i=exponent-(prefixExponent=Math.max(-8,Math.min(8,Math.floor(exponent/3)))*3)+1,n=coefficient.length;return i===n?coefficient:i>n?coefficient+new Array(i-n+1).join("0"):i>0?coefficient.slice(0,i)+"."+coefficient.slice(i):"0."+new Array(1-i).join("0")+formatDecimal(x,Math.max(0,p+i-1))[0]}function formatRounded(x,p){var d=formatDecimal(x,p);if(!d)return x+"";var coefficient=d[0],exponent=d[1];return exponent<0?"0."+new Array(-exponent).join("0")+coefficient:coefficient.length>exponent+1?coefficient.slice(0,exponent+1)+"."+coefficient.slice(exponent+1):coefficient+new Array(exponent-coefficient.length+2).join("0")}var formatTypes={"":formatDefault,"%":function(x,p){return(x*100).toFixed(p)},b:function(x){return Math.round(x).toString(2)},c:function(x){return x+""},d:function(x){return Math.round(x).toString(10)},e:function(x,p){return x.toExponential(p)},f:function(x,p){return x.toFixed(p)},g:function(x,p){return x.toPrecision(p)},o:function(x){return Math.round(x).toString(8)},p:function(x,p){return formatRounded(x*100,p)},r:formatRounded,s:formatPrefixAuto,X:function(x){return Math.round(x).toString(16).toUpperCase()},x:function(x){return Math.round(x).toString(16)}};var re=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;function formatSpecifier(specifier){return new FormatSpecifier(specifier)}function FormatSpecifier(specifier){if(!(match=re.exec(specifier)))throw new Error("invalid format: "+specifier);var match,fill=match[1]||" ",align=match[2]||">",sign=match[3]||"-",symbol=match[4]||"",zero=!!match[5],width=match[6]&&+match[6],comma=!!match[7],precision=match[8]&&+match[8].slice(1),type=match[9]||"";if(type==="n")comma=true,type="g";else if(!formatTypes[type])type="";if(zero||fill==="0"&&align==="=")zero=true,fill="0",align="=";this.fill=fill;this.align=align;this.sign=sign;this.symbol=symbol;this.zero=zero;this.width=width;this.comma=comma;this.precision=precision;this.type=type}FormatSpecifier.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width==null?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision==null?"":"."+Math.max(0,this.precision|0))+this.type};var prefixes=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function identity(x){return x}function formatLocale(locale){var group=locale.grouping&&locale.thousands?formatGroup(locale.grouping,locale.thousands):identity,currency=locale.currency,decimal=locale.decimal;function newFormat(specifier){specifier=formatSpecifier(specifier);var fill=specifier.fill,align=specifier.align,sign=specifier.sign,symbol=specifier.symbol,zero=specifier.zero,width=specifier.width,comma=specifier.comma,precision=specifier.precision,type=specifier.type;var prefix=symbol==="$"?currency[0]:symbol==="#"&&/[boxX]/.test(type)?"0"+type.toLowerCase():"",suffix=symbol==="$"?currency[1]:/[%p]/.test(type)?"%":"";var formatType=formatTypes[type],maybeSuffix=!type||/[defgprs%]/.test(type);precision=precision==null?type?6:12:/[gprs]/.test(type)?Math.max(1,Math.min(21,precision)):Math.max(0,Math.min(20,precision));function format(value){var valuePrefix=prefix,valueSuffix=suffix,i,n,c;if(type==="c"){valueSuffix=formatType(value)+valueSuffix;value=""}else{value=+value;var valueNegative=(value<0||1/value<0)&&(value*=-1,true);value=formatType(value,precision);if(valueNegative){i=-1,n=value.length;valueNegative=false;while(++ic||c>57){valueSuffix=(c===46?decimal+value.slice(i+1):value.slice(i))+valueSuffix;value=value.slice(0,i);break}}}}if(comma&&!zero)value=group(value,Infinity);var length=valuePrefix.length+value.length+valueSuffix.length,padding=length>1)+valuePrefix+value+valueSuffix+padding.slice(length)}return padding+valuePrefix+value+valueSuffix}format.toString=function(){return specifier+""};return format}function formatPrefix(specifier,value){var f=newFormat((specifier=formatSpecifier(specifier),specifier.type="f",specifier)),e=Math.max(-8,Math.min(8,Math.floor(exponent(value)/3)))*3,k=Math.pow(10,-e),prefix=prefixes[8+e/3];return function(value){return f(k*value)+prefix}}return{format:newFormat,formatPrefix:formatPrefix}}var locale;defaultLocale({decimal:".",thousands:",",grouping:[3],currency:["$",""]});function defaultLocale(definition){locale=formatLocale(definition);exports.format=locale.format;exports.formatPrefix=locale.formatPrefix;return locale}function precisionFixed(step){return Math.max(0,-exponent(Math.abs(step)))}function precisionPrefix(step,value){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(exponent(value)/3)))*3-exponent(Math.abs(step)))}function precisionRound(step,max){step=Math.abs(step),max=Math.abs(max)-step;return Math.max(0,exponent(max)-exponent(step))+1}exports.formatDefaultLocale=defaultLocale;exports.formatLocale=formatLocale;exports.formatSpecifier=formatSpecifier;exports.precisionFixed=precisionFixed;exports.precisionPrefix=precisionPrefix;exports.precisionRound=precisionRound;Object.defineProperty(exports,"__esModule",{value:true})})},{}],15:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):factory(global.d3=global.d3||{})})(this,function(exports){"use strict";var xhtml="http://www.w3.org/1999/xhtml";var namespaces={svg:"http://www.w3.org/2000/svg",xhtml:xhtml,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function namespace(name){var prefix=name+="",i=prefix.indexOf(":");if(i>=0&&(prefix=name.slice(0,i))!=="xmlns")name=name.slice(i+1);return namespaces.hasOwnProperty(prefix)?{space:namespaces[prefix],local:name}:name}function creatorInherit(name){return function(){var document=this.ownerDocument,uri=this.namespaceURI;return uri===xhtml&&document.documentElement.namespaceURI===xhtml?document.createElement(name):document.createElementNS(uri,name)}}function creatorFixed(fullname){return function(){return this.ownerDocument.createElementNS(fullname.space,fullname.local)}}function creator(name){var fullname=namespace(name);return(fullname.local?creatorFixed:creatorInherit)(fullname)}var nextId=0;function local(){return new Local}function Local(){this._="@"+(++nextId).toString(36)}Local.prototype=local.prototype={constructor:Local,get:function(node){var id=this._;while(!(id in node))if(!(node=node.parentNode))return;return node[id]},set:function(node,value){return node[this._]=value},remove:function(node){return this._ in node&&delete node[this._]},toString:function(){return this._}};var matcher=function(selector){return function(){return this.matches(selector)}};if(typeof document!=="undefined"){var element=document.documentElement;if(!element.matches){var vendorMatches=element.webkitMatchesSelector||element.msMatchesSelector||element.mozMatchesSelector||element.oMatchesSelector;matcher=function(selector){return function(){return vendorMatches.call(this,selector)}}}}var matcher$1=matcher;var filterEvents={};exports.event=null;if(typeof document!=="undefined"){var element$1=document.documentElement;if(!("onmouseenter"in element$1)){filterEvents={mouseenter:"mouseover",mouseleave:"mouseout"}}}function filterContextListener(listener,index,group){listener=contextListener(listener,index,group);return function(event){var related=event.relatedTarget;if(!related||related!==this&&!(related.compareDocumentPosition(this)&8)){listener.call(this,event)}}}function contextListener(listener,index,group){return function(event1){var event0=exports.event;exports.event=event1;try{listener.call(this,this.__data__,index,group)}finally{exports.event=event0}}}function parseTypenames(typenames){return typenames.trim().split(/^|\s+/).map(function(t){var name="",i=t.indexOf(".");if(i>=0)name=t.slice(i+1),t=t.slice(0,i);return{type:t,name:name}})}function onRemove(typename){return function(){var on=this.__on;if(!on)return;for(var j=0,i=-1,m=on.length,o;j=i1)i1=i0+1;while(!(next=updateGroup[i1])&&++i1=0;){if(node=group[i]){if(next&&next!==node.nextSibling)next.parentNode.insertBefore(node,next);next=node}}}return this}function selection_sort(compare){if(!compare)compare=ascending;function compareNode(a,b){return a&&b?compare(a.__data__,b.__data__):!a-!b}for(var groups=this._groups,m=groups.length,sortgroups=new Array(m),j=0;jb?1:a>=b?0:NaN}function selection_call(){var callback=arguments[0];arguments[0]=this;callback.apply(null,arguments);return this}function selection_nodes(){var nodes=new Array(this.size()),i=-1;this.each(function(){nodes[++i]=this});return nodes}function selection_node(){for(var groups=this._groups,j=0,m=groups.length;j1?this.each((value==null?styleRemove:typeof value==="function"?styleFunction:styleConstant)(name,value,priority==null?"":priority)):defaultView(node=this.node()).getComputedStyle(node,null).getPropertyValue(name)}function propertyRemove(name){return function(){delete this[name]}}function propertyConstant(name,value){return function(){this[name]=value}}function propertyFunction(name,value){return function(){var v=value.apply(this,arguments);if(v==null)delete this[name];else this[name]=v}}function selection_property(name,value){return arguments.length>1?this.each((value==null?propertyRemove:typeof value==="function"?propertyFunction:propertyConstant)(name,value)):this.node()[name]}function classArray(string){return string.trim().split(/^|\s+/)}function classList(node){return node.classList||new ClassList(node)}function ClassList(node){this._node=node;this._names=classArray(node.getAttribute("class")||"")}ClassList.prototype={add:function(name){var i=this._names.indexOf(name);if(i<0){this._names.push(name);this._node.setAttribute("class",this._names.join(" "))}},remove:function(name){var i=this._names.indexOf(name);if(i>=0){this._names.splice(i,1);this._node.setAttribute("class",this._names.join(" "))}},contains:function(name){return this._names.indexOf(name)>=0}};function classedAdd(node,names){var list=classList(node),i=-1,n=names.length;while(++i1?attribute.name+c:attribute.name;vertex[memberName]=value[c]*multiplier}}}}}};Bucket.VertexArrayType=function(members){return new StructArrayType({members:members,alignment:4})};Bucket.ElementArrayType=function(components){return new StructArrayType({members:[{type:"Uint16",name:"vertices",components:components||3}]})};function createPaintAttributes(bucket){var attributes={};for(var interfaceName in bucket.programInterfaces){var layerPaintAttributes=attributes[interfaceName]={};for(var c=0;c=EXTENT||y<0||y>=EXTENT)continue;var group=this.prepareArrayGroup("circle",4);var layoutVertexArray=group.layoutVertexArray;var index=this.addCircleVertex(layoutVertexArray,x,y,-1,-1);this.addCircleVertex(layoutVertexArray,x,y,1,-1);this.addCircleVertex(layoutVertexArray,x,y,1,1);this.addCircleVertex(layoutVertexArray,x,y,-1,1);group.elementArray.emplaceBack(index,index+1,index+2);group.elementArray.emplaceBack(index,index+3,index+2)}}this.populatePaintArrays("circle",globalProperties,feature.properties,startGroup,startIndex)}},{"../../util/util":137,"../bucket":17,"../load_geometry":26}],19:[function(require,module,exports){"use strict";var Bucket=require("../bucket");var util=require("../../util/util");var loadGeometry=require("../load_geometry");var earcut=require("earcut");var classifyRings=require("../../util/classify_rings");var Point=require("point-geometry");var EARCUT_MAX_RINGS=500;module.exports=FillBucket;function FillBucket(){Bucket.apply(this,arguments)}FillBucket.prototype=util.inherit(Bucket,{});FillBucket.prototype.programInterfaces={fill:{layoutVertexArrayType:new Bucket.VertexArrayType([{name:"a_pos",components:2,type:"Int16"}]),elementArrayType:new Bucket.ElementArrayType(1),elementArrayType2:new Bucket.ElementArrayType(2),paintAttributes:[{name:"a_color",components:4,type:"Uint8",getValue:function(layer,globalProperties,featureProperties){return layer.getPaintValue("fill-color",globalProperties,featureProperties)},multiplier:255,paintProperty:"fill-color"},{name:"a_outline_color",components:4,type:"Uint8",getValue:function(layer,globalProperties,featureProperties){return layer.getPaintValue("fill-outline-color",globalProperties,featureProperties)},multiplier:255,paintProperty:"fill-outline-color"},{name:"a_opacity",components:1,type:"Uint8",getValue:function(layer,globalProperties,featureProperties){return[layer.getPaintValue("fill-opacity",globalProperties,featureProperties)]},multiplier:255,paintProperty:"fill-opacity"}]}};FillBucket.prototype.addVertex=function(vertexArray,x,y){return vertexArray.emplaceBack(x,y)};FillBucket.prototype.addFeature=function(feature){var lines=loadGeometry(feature);var polygons=convertCoords(classifyRings(lines,EARCUT_MAX_RINGS));this.factor=Math.pow(2,13);var startGroup=this.prepareArrayGroup("fill",0);var startIndex=startGroup.layoutVertexArray.length;for(var i=0;i0)holeIndices.push(flattened.length/2);for(var v=0;v=1){group.elementArray2.emplaceBack(index-1,index)}flattened.push(v1[0]);flattened.push(v1[1])}}var triangleIndices=earcut(flattened,holeIndices);for(var i=0;i0)holeIndices.push(flattened.length/2);var edgeDistance=0;for(var v=0;v=1){var v2=ring[v-1];if(!isBoundaryEdge(v1,v2)){var perp=Point.convert(v1)._sub(Point.convert(v2))._perp()._unit();var bottomRight=this.addVertex(group.layoutVertexArray,v1[0],v1[1],perp.x,perp.y,0,0,edgeDistance);this.addVertex(group.layoutVertexArray,v1[0],v1[1],perp.x,perp.y,0,1,edgeDistance);edgeDistance+=Point.convert(v2).dist(Point.convert(v1));this.addVertex(group.layoutVertexArray,v2[0],v2[1],perp.x,perp.y,0,0,edgeDistance);this.addVertex(group.layoutVertexArray,v2[0],v2[1],perp.x,perp.y,0,1,edgeDistance);group.elementArray.emplaceBack(bottomRight,bottomRight+1,bottomRight+2);group.elementArray.emplaceBack(bottomRight+1,bottomRight+2,bottomRight+3)}}flattened.push(v1[0]);flattened.push(v1[1])}}var triangleIndices=earcut(flattened,holeIndices);for(var j=0;jBucket.EXTENT}},{"../../util/classify_rings":123,"../../util/util":137,"../bucket":17,"../load_geometry":26,earcut:141,"point-geometry":196}],21:[function(require,module,exports){"use strict";var Bucket=require("../bucket");var util=require("../../util/util");var loadGeometry=require("../load_geometry");var EXTENT=Bucket.EXTENT;var EXTRUDE_SCALE=63;var COS_HALF_SHARP_CORNER=Math.cos(75/2*(Math.PI/180));var SHARP_CORNER_OFFSET=15;var LINE_DISTANCE_BUFFER_BITS=15;var LINE_DISTANCE_SCALE=1/2;var MAX_LINE_DISTANCE=Math.pow(2,LINE_DISTANCE_BUFFER_BITS-1)/LINE_DISTANCE_SCALE;module.exports=LineBucket;function LineBucket(){Bucket.apply(this,arguments)}LineBucket.prototype=util.inherit(Bucket,{});LineBucket.prototype.addLineVertex=function(layoutVertexBuffer,point,extrude,tx,ty,dir,linesofar){return layoutVertexBuffer.emplaceBack(point.x<<1|tx,point.y<<1|ty,Math.round(EXTRUDE_SCALE*extrude.x)+128,Math.round(EXTRUDE_SCALE*extrude.y)+128,(dir===0?0:dir<0?-1:1)+1|(linesofar*LINE_DISTANCE_SCALE&63)<<2,linesofar*LINE_DISTANCE_SCALE>>6)};LineBucket.prototype.programInterfaces={line:{layoutVertexArrayType:new Bucket.VertexArrayType([{name:"a_pos",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}]),paintAttributes:[{name:"a_color",components:4,type:"Uint8",getValue:function(layer,globalProperties,featureProperties){return layer.getPaintValue("line-color",globalProperties,featureProperties)},multiplier:255,paintProperty:"line-color"}],elementArrayType:new Bucket.ElementArrayType}};LineBucket.prototype.addFeature=function(feature){var lines=loadGeometry(feature,LINE_DISTANCE_BUFFER_BITS);for(var i=0;i2&&vertices[len-1].equals(vertices[len-2])){len--}if(vertices.length<2)return;if(join==="bevel")miterLimit=1.05;var sharpCornerOffset=SHARP_CORNER_OFFSET*(EXTENT/(512*this.overscaling));var firstVertex=vertices[0],lastVertex=vertices[len-1],closed=firstVertex.equals(lastVertex);var group=this.prepareArrayGroup("line",len*10);var startIndex=group.layoutVertexArray.length;if(len===2&&closed)return;this.distance=0;var beginCap=cap,endCap=closed?"butt":cap,startOfLine=true,currentVertex,prevVertex,nextVertex,prevNormal,nextNormal,offsetA,offsetB;this.e1=this.e2=this.e3=-1;if(closed){currentVertex=vertices[len-2];nextNormal=firstVertex.sub(currentVertex)._unit()._perp()}for(var i=0;i0){var prevSegmentLength=currentVertex.dist(prevVertex);if(prevSegmentLength>2*sharpCornerOffset){var newPrevVertex=currentVertex.sub(currentVertex.sub(prevVertex)._mult(sharpCornerOffset/prevSegmentLength)._round());this.distance+=newPrevVertex.dist(prevVertex);this.addCurrentVertex(newPrevVertex,this.distance,prevNormal.mult(1),0,0,false);prevVertex=newPrevVertex}}var middleVertex=prevVertex&&nextVertex;var currentJoin=middleVertex?join:nextVertex?beginCap:endCap;if(middleVertex&¤tJoin==="round"){if(miterLengthmiterLimit){currentJoin="bevel"}if(currentJoin==="bevel"){if(miterLength>2)currentJoin="flipbevel";if(miterLength100){joinNormal=nextNormal.clone()}else{var direction=prevNormal.x*nextNormal.y-prevNormal.y*nextNormal.x>0?-1:1;var bevelLength=miterLength*prevNormal.add(nextNormal).mag()/prevNormal.sub(nextNormal).mag();joinNormal._perp()._mult(bevelLength*direction)}this.addCurrentVertex(currentVertex,this.distance,joinNormal,0,0,false);this.addCurrentVertex(currentVertex,this.distance,joinNormal.mult(-1),0,0,false)}else if(currentJoin==="bevel"||currentJoin==="fakeround"){var lineTurnsLeft=prevNormal.x*nextNormal.y-prevNormal.y*nextNormal.x>0;var offset=-Math.sqrt(miterLength*miterLength-1);if(lineTurnsLeft){offsetB=0;offsetA=offset}else{offsetA=0;offsetB=offset}if(!startOfLine){this.addCurrentVertex(currentVertex,this.distance,prevNormal,offsetA,offsetB,false)}if(currentJoin==="fakeround"){var n=Math.floor((.5-(cosHalfAngle-.5))*8);var approxFractionalJoinNormal;for(var m=0;m=0;k--){approxFractionalJoinNormal=prevNormal.mult((k+1)/(n+1))._add(nextNormal)._unit();this.addPieSliceVertex(currentVertex,this.distance,approxFractionalJoinNormal,lineTurnsLeft)}}if(nextVertex){this.addCurrentVertex(currentVertex,this.distance,nextNormal,-offsetA,-offsetB,false)}}else if(currentJoin==="butt"){if(!startOfLine){this.addCurrentVertex(currentVertex,this.distance,prevNormal,0,0,false)}if(nextVertex){this.addCurrentVertex(currentVertex,this.distance,nextNormal,0,0,false)}}else if(currentJoin==="square"){if(!startOfLine){this.addCurrentVertex(currentVertex,this.distance,prevNormal,1,1,false);this.e1=this.e2=-1}if(nextVertex){this.addCurrentVertex(currentVertex,this.distance,nextNormal,-1,-1,false)}}else if(currentJoin==="round"){if(!startOfLine){this.addCurrentVertex(currentVertex,this.distance,prevNormal,0,0,false);this.addCurrentVertex(currentVertex,this.distance,prevNormal,1,1,true);this.e1=this.e2=-1}if(nextVertex){this.addCurrentVertex(currentVertex,this.distance,nextNormal,-1,-1,true);this.addCurrentVertex(currentVertex,this.distance,nextNormal,0,0,false)}}if(isSharpCorner&&i2*sharpCornerOffset){var newCurrentVertex=currentVertex.add(nextVertex.sub(currentVertex)._mult(sharpCornerOffset/nextSegmentLength)._round());this.distance+=newCurrentVertex.dist(currentVertex);this.addCurrentVertex(newCurrentVertex,this.distance,nextNormal.mult(1),0,0,false);currentVertex=newCurrentVertex}}startOfLine=false}this.populatePaintArrays("line",{zoom:this.zoom},featureProperties,group,startIndex)};LineBucket.prototype.addCurrentVertex=function(currentVertex,distance,normal,endLeft,endRight,round){var tx=round?1:0;var extrude;var arrayGroup=this.arrayGroups.line[this.arrayGroups.line.length-1];var layoutVertexArray=arrayGroup.layoutVertexArray;var elementArray=arrayGroup.elementArray;extrude=normal.clone();if(endLeft)extrude._sub(normal.perp()._mult(endLeft));this.e3=this.addLineVertex(layoutVertexArray,currentVertex,extrude,tx,0,endLeft,distance);if(this.e1>=0&&this.e2>=0){elementArray.emplaceBack(this.e1,this.e2,this.e3)}this.e1=this.e2;this.e2=this.e3;extrude=normal.mult(-1);if(endRight)extrude._sub(normal.perp()._mult(endRight));this.e3=this.addLineVertex(layoutVertexArray,currentVertex,extrude,tx,1,-endRight,distance);if(this.e1>=0&&this.e2>=0){elementArray.emplaceBack(this.e1,this.e2,this.e3)}this.e1=this.e2;this.e2=this.e3;if(distance>MAX_LINE_DISTANCE/2){this.distance=0;this.addCurrentVertex(currentVertex,this.distance,normal,endLeft,endRight,round)}};LineBucket.prototype.addPieSliceVertex=function(currentVertex,distance,extrude,lineTurnsLeft){var ty=lineTurnsLeft?1:0;extrude=extrude.mult(lineTurnsLeft?-1:1);var arrayGroup=this.arrayGroups.line[this.arrayGroups.line.length-1];var layoutVertexArray=arrayGroup.layoutVertexArray;var elementArray=arrayGroup.elementArray;this.e3=this.addLineVertex(layoutVertexArray,currentVertex,extrude,0,ty,0,distance);if(this.e1>=0&&this.e2>=0){elementArray.emplaceBack(this.e1,this.e2,this.e3)}if(lineTurnsLeft){this.e2=this.e3}else{this.e1=this.e3}}},{"../../util/util":137, "../bucket":17,"../load_geometry":26}],22:[function(require,module,exports){"use strict";var Point=require("point-geometry");var Bucket=require("../bucket");var Anchor=require("../../symbol/anchor");var getAnchors=require("../../symbol/get_anchors");var resolveTokens=require("../../util/token");var Quads=require("../../symbol/quads");var Shaping=require("../../symbol/shaping");var resolveText=require("../../symbol/resolve_text");var mergeLines=require("../../symbol/mergelines");var clipLine=require("../../symbol/clip_line");var util=require("../../util/util");var loadGeometry=require("../load_geometry");var CollisionFeature=require("../../symbol/collision_feature");var findPoleOfInaccessibility=require("../../util/find_pole_of_inaccessibility");var classifyRings=require("../../util/classify_rings");var shapeText=Shaping.shapeText;var shapeIcon=Shaping.shapeIcon;var getGlyphQuads=Quads.getGlyphQuads;var getIconQuads=Quads.getIconQuads;var EXTENT=Bucket.EXTENT;module.exports=SymbolBucket;function SymbolBucket(options){Bucket.apply(this,arguments);this.showCollisionBoxes=options.showCollisionBoxes;this.overscaling=options.overscaling;this.collisionBoxArray=options.collisionBoxArray;this.symbolQuadsArray=options.symbolQuadsArray;this.symbolInstancesArray=options.symbolInstancesArray;this.sdfIcons=options.sdfIcons;this.iconsNeedLinear=options.iconsNeedLinear;this.adjustedTextSize=options.adjustedTextSize;this.adjustedIconSize=options.adjustedIconSize;this.fontstack=options.fontstack}SymbolBucket.MAX_QUADS=65535;SymbolBucket.prototype=util.inherit(Bucket,{});SymbolBucket.prototype.serialize=function(){var serialized=Bucket.prototype.serialize.apply(this);serialized.sdfIcons=this.sdfIcons;serialized.iconsNeedLinear=this.iconsNeedLinear;serialized.adjustedTextSize=this.adjustedTextSize;serialized.adjustedIconSize=this.adjustedIconSize;serialized.fontstack=this.fontstack;return serialized};var layoutVertexArrayType=new Bucket.VertexArrayType([{name:"a_pos",components:2,type:"Int16"},{name:"a_offset",components:2,type:"Int16"},{name:"a_texture_pos",components:2,type:"Uint16"},{name:"a_data",components:4,type:"Uint8"}]);var elementArrayType=new Bucket.ElementArrayType;function addVertex(array,x,y,ox,oy,tx,ty,minzoom,maxzoom,labelminzoom,labelangle){return array.emplaceBack(x,y,Math.round(ox*64),Math.round(oy*64),tx/4,ty/4,(labelminzoom||0)*10,labelangle,(minzoom||0)*10,Math.min(maxzoom||25,25)*10)}SymbolBucket.prototype.addCollisionBoxVertex=function(layoutVertexArray,point,extrude,maxZoom,placementZoom){return layoutVertexArray.emplaceBack(point.x,point.y,Math.round(extrude.x),Math.round(extrude.y),maxZoom*10,placementZoom*10)};SymbolBucket.prototype.programInterfaces={glyph:{layoutVertexArrayType:layoutVertexArrayType,elementArrayType:elementArrayType},icon:{layoutVertexArrayType:layoutVertexArrayType,elementArrayType:elementArrayType},collisionBox:{layoutVertexArrayType:new Bucket.VertexArrayType([{name:"a_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"},{name:"a_data",components:2,type:"Uint8"}])}};SymbolBucket.prototype.populateArrays=function(collisionTile,stacks,icons){var zoomHistory={lastIntegerZoom:Infinity,lastIntegerZoomTime:0,lastZoom:0};this.adjustedTextMaxSize=this.layer.getLayoutValue("text-size",{zoom:18,zoomHistory:zoomHistory});this.adjustedTextSize=this.layer.getLayoutValue("text-size",{zoom:this.zoom+1,zoomHistory:zoomHistory});this.adjustedIconMaxSize=this.layer.getLayoutValue("icon-size",{zoom:18,zoomHistory:zoomHistory});this.adjustedIconSize=this.layer.getLayoutValue("icon-size",{zoom:this.zoom+1,zoomHistory:zoomHistory});var tileSize=512*this.overscaling;this.tilePixelRatio=EXTENT/tileSize;this.compareText={};this.iconsNeedLinear=false;this.symbolInstancesStartIndex=this.symbolInstancesArray.length;var layout=this.layer.layout;var features=this.features;var textFeatures=this.textFeatures;var horizontalAlign=.5,verticalAlign=.5;switch(layout["text-anchor"]){case"right":case"top-right":case"bottom-right":horizontalAlign=1;break;case"left":case"top-left":case"bottom-left":horizontalAlign=0;break}switch(layout["text-anchor"]){case"bottom":case"bottom-right":case"bottom-left":verticalAlign=1;break;case"top":case"top-right":case"top-left":verticalAlign=0;break}var justify=layout["text-justify"]==="right"?1:layout["text-justify"]==="left"?0:.5;var oneEm=24;var lineHeight=layout["text-line-height"]*oneEm;var maxWidth=layout["symbol-placement"]!=="line"?layout["text-max-width"]*oneEm:0;var spacing=layout["text-letter-spacing"]*oneEm;var textOffset=[layout["text-offset"][0]*oneEm,layout["text-offset"][1]*oneEm];var fontstack=this.fontstack=layout["text-font"].join(",");var geometries=[];for(var g=0;gEXTENT||anchor.y<0||anchor.y>EXTENT);if(avoidEdges&&!inside)continue;var addToBuffers=inside||mayOverlap;this.addSymbolInstance(anchor,line,shapedText,shapedIcon,this.layer,addToBuffers,this.symbolInstancesArray.length,this.collisionBoxArray,feature.index,this.sourceLayerIndex,this.index,textBoxScale,textPadding,textAlongLine,iconBoxScale,iconPadding,iconAlongLine,{zoom:this.zoom},feature.properties)}}};SymbolBucket.prototype.findPolygonAnchors=function(polygonRings){var outerRing=polygonRings[0];if(outerRing.length===0){return[]}else if(outerRing.length<3||!util.isClosedPolygon(outerRing)){return[new Anchor(outerRing[0].x,outerRing[0].y,0)]}var anchors=null;var poi=findPoleOfInaccessibility(polygonRings,16);anchors=[new Anchor(poi.x,poi.y,0)];return anchors};SymbolBucket.prototype.anchorIsTooClose=function(text,repeatDistance,anchor){var compareText=this.compareText;if(!(text in compareText)){compareText[text]=[]}else{var otherAnchors=compareText[text];for(var k=otherAnchors.length-1;k>=0;k--){if(anchor.dist(otherAnchors[k])Math.PI*3/2))continue;var tl=symbol.tl,tr=symbol.tr,bl=symbol.bl,br=symbol.br,tex=symbol.tex,anchorPoint=symbol.anchorPoint,minZoom=Math.max(zoom+Math.log(symbol.minScale)/Math.LN2,placementZoom),maxZoom=Math.min(zoom+Math.log(symbol.maxScale)/Math.LN2,25);if(maxZoom<=minZoom)continue;if(minZoom===placementZoom)minZoom=0;var glyphAngle=Math.round(symbol.glyphAngle/(Math.PI*2)*256);var index=addVertex(layoutVertexArray,anchorPoint.x,anchorPoint.y,tl.x,tl.y,tex.x,tex.y,minZoom,maxZoom,placementZoom,glyphAngle);addVertex(layoutVertexArray,anchorPoint.x,anchorPoint.y,tr.x,tr.y,tex.x+tex.w,tex.y,minZoom,maxZoom,placementZoom,glyphAngle);addVertex(layoutVertexArray,anchorPoint.x,anchorPoint.y,bl.x,bl.y,tex.x,tex.y+tex.h,minZoom,maxZoom,placementZoom,glyphAngle);addVertex(layoutVertexArray,anchorPoint.x,anchorPoint.y,br.x,br.y,tex.x+tex.w,tex.y+tex.h,minZoom,maxZoom,placementZoom,glyphAngle);elementArray.emplaceBack(index,index+1,index+2);elementArray.emplaceBack(index+1,index+2,index+3)}};SymbolBucket.prototype.updateIcons=function(icons){this.recalculateStyleLayers();var iconValue=this.layer.layout["icon-image"];if(!iconValue)return;for(var i=0;iSymbolBucket.MAX_QUADS)util.warnOnce("Too many symbols being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907");if(glyphQuadEndIndex>SymbolBucket.MAX_QUADS)util.warnOnce("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907");return this.symbolInstancesArray.emplaceBack(textBoxStartIndex,textBoxEndIndex,iconBoxStartIndex,iconBoxEndIndex,glyphQuadStartIndex,glyphQuadEndIndex,iconQuadStartIndex,iconQuadEndIndex,anchor.x,anchor.y,index)};SymbolBucket.prototype.addSymbolQuad=function(symbolQuad){return this.symbolQuadsArray.emplaceBack(symbolQuad.anchorPoint.x,symbolQuad.anchorPoint.y,symbolQuad.tl.x,symbolQuad.tl.y,symbolQuad.tr.x,symbolQuad.tr.y,symbolQuad.bl.x,symbolQuad.bl.y,symbolQuad.br.x,symbolQuad.br.y,symbolQuad.tex.h,symbolQuad.tex.w,symbolQuad.tex.x,symbolQuad.tex.y,symbolQuad.anchorAngle,symbolQuad.glyphAngle,symbolQuad.maxScale,symbolQuad.minScale)}},{"../../symbol/anchor":84,"../../symbol/clip_line":86,"../../symbol/collision_feature":88,"../../symbol/get_anchors":90,"../../symbol/mergelines":93,"../../symbol/quads":94,"../../symbol/resolve_text":95,"../../symbol/shaping":96,"../../util/classify_rings":123,"../../util/find_pole_of_inaccessibility":129,"../../util/token":136,"../../util/util":137,"../bucket":17,"../load_geometry":26,"point-geometry":196}],23:[function(require,module,exports){"use strict";module.exports=Buffer;function Buffer(array,arrayType,type){this.arrayBuffer=array.arrayBuffer;this.length=array.length;this.attributes=arrayType.members;this.itemSize=arrayType.bytesPerElement;this.type=type;this.arrayType=arrayType}Buffer.prototype.bind=function(gl){var type=gl[this.type];if(!this.buffer){this.gl=gl;this.buffer=gl.createBuffer();gl.bindBuffer(type,this.buffer);gl.bufferData(type,this.arrayBuffer,gl.STATIC_DRAW);this.arrayBuffer=null}else{gl.bindBuffer(type,this.buffer)}};var AttributeType={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT"};Buffer.prototype.setVertexAttribPointers=function(gl,program){for(var j=0;j0){return paint["line-gap-width"]+2*paint["line-width"]}else{return paint["line-width"]}}FeatureIndex.prototype.filterMatching=function(result,matching,array,queryGeometry,filter,filterLayerIDs,styleLayers,bearing,pixelsToTileUnits){var previousIndex;for(var k=0;kbounds.max||point.ybounds.max){util.warnOnce("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}}return geometry}},{"../util/util":137,"./bucket":17}],27:[function(require,module,exports){"use strict";module.exports=Coordinate;function Coordinate(column,row,zoom){this.column=column;this.row=row;this.zoom=zoom}Coordinate.prototype={clone:function(){return new Coordinate(this.column,this.row,this.zoom)},zoomTo:function(zoom){return this.clone()._zoomTo(zoom)},sub:function(c){return this.clone()._sub(c)},_zoomTo:function(zoom){var scale=Math.pow(2,zoom-this.zoom);this.column*=scale;this.row*=scale;this.zoom=zoom;return this},_sub:function(c){c=c.zoomTo(this.zoom);this.column-=c.column;this.row-=c.row;return this}}},{}],28:[function(require,module,exports){"use strict";module.exports=LngLat;var wrap=require("../util/util").wrap;function LngLat(lng,lat){if(isNaN(lng)||isNaN(lat)){throw new Error("Invalid LngLat object: ("+lng+", "+lat+")")}this.lng=+lng;this.lat=+lat;if(this.lat>90||this.lat<-90){throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}}LngLat.prototype.wrap=function(){return new LngLat(wrap(this.lng,-180,180),this.lat)};LngLat.prototype.toArray=function(){return[this.lng,this.lat]};LngLat.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"};LngLat.convert=function(input){if(input instanceof LngLat){return input}else if(input&&input.hasOwnProperty("lng")&&input.hasOwnProperty("lat")){return new LngLat(input.lng,input.lat); }else if(Array.isArray(input)&&input.length===2){return new LngLat(input[0],input[1])}else{throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, or an array of [, ]")}}},{"../util/util":137}],29:[function(require,module,exports){"use strict";module.exports=LngLatBounds;var LngLat=require("./lng_lat");function LngLatBounds(sw,ne){if(!sw){return}else if(ne){this.setSouthWest(sw).setNorthEast(ne)}else if(sw.length===4){this.setSouthWest([sw[0],sw[1]]).setNorthEast([sw[2],sw[3]])}else{this.setSouthWest(sw[0]).setNorthEast(sw[1])}}LngLatBounds.prototype={setNorthEast:function(ne){this._ne=LngLat.convert(ne);return this},setSouthWest:function(sw){this._sw=LngLat.convert(sw);return this},extend:function(obj){var sw=this._sw,ne=this._ne,sw2,ne2;if(obj instanceof LngLat){sw2=obj;ne2=obj}else if(obj instanceof LngLatBounds){sw2=obj._sw;ne2=obj._ne;if(!sw2||!ne2)return this}else{if(Array.isArray(obj)){if(obj.every(Array.isArray)){return this.extend(LngLatBounds.convert(obj))}else{return this.extend(LngLat.convert(obj))}}return this}if(!sw&&!ne){this._sw=new LngLat(sw2.lng,sw2.lat);this._ne=new LngLat(ne2.lng,ne2.lat)}else{sw.lng=Math.min(sw2.lng,sw.lng);sw.lat=Math.min(sw2.lat,sw.lat);ne.lng=Math.max(ne2.lng,ne.lng);ne.lat=Math.max(ne2.lat,ne.lat)}return this},getCenter:function(){return new LngLat((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},getSouthWest:function(){return this._sw},getNorthEast:function(){return this._ne},getNorthWest:function(){return new LngLat(this.getWest(),this.getNorth())},getSouthEast:function(){return new LngLat(this.getEast(),this.getSouth())},getWest:function(){return this._sw.lng},getSouth:function(){return this._sw.lat},getEast:function(){return this._ne.lng},getNorth:function(){return this._ne.lat},toArray:function(){return[this._sw.toArray(),this._ne.toArray()]},toString:function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"}};LngLatBounds.convert=function(input){if(!input||input instanceof LngLatBounds)return input;return new LngLatBounds(input)}},{"./lng_lat":28}],30:[function(require,module,exports){"use strict";var LngLat=require("./lng_lat"),Point=require("point-geometry"),Coordinate=require("./coordinate"),util=require("../util/util"),interp=require("../util/interpolate"),TileCoord=require("../source/tile_coord"),EXTENT=require("../data/bucket").EXTENT,glmatrix=require("gl-matrix");var vec4=glmatrix.vec4,mat4=glmatrix.mat4,mat2=glmatrix.mat2;module.exports=Transform;function Transform(minZoom,maxZoom){this.tileSize=512;this._minZoom=minZoom||0;this._maxZoom=maxZoom||22;this.latRange=[-85.05113,85.05113];this.width=0;this.height=0;this._center=new LngLat(0,0);this.zoom=0;this.angle=0;this._altitude=1.5;this._pitch=0;this._unmodified=true}Transform.prototype={get minZoom(){return this._minZoom},set minZoom(zoom){if(this._minZoom===zoom)return;this._minZoom=zoom;this.zoom=Math.max(this.zoom,zoom)},get maxZoom(){return this._maxZoom},set maxZoom(zoom){if(this._maxZoom===zoom)return;this._maxZoom=zoom;this.zoom=Math.min(this.zoom,zoom)},get worldSize(){return this.tileSize*this.scale},get centerPoint(){return this.size._div(2)},get size(){return new Point(this.width,this.height)},get bearing(){return-this.angle/Math.PI*180},set bearing(bearing){var b=-util.wrap(bearing,-180,180)*Math.PI/180;if(this.angle===b)return;this._unmodified=false;this.angle=b;this._calcMatrices();this.rotationMatrix=mat2.create();mat2.rotate(this.rotationMatrix,this.rotationMatrix,this.angle)},get pitch(){return this._pitch/Math.PI*180},set pitch(pitch){var p=util.clamp(pitch,0,60)/180*Math.PI;if(this._pitch===p)return;this._unmodified=false;this._pitch=p;this._calcMatrices()},get altitude(){return this._altitude},set altitude(altitude){var a=Math.max(.75,altitude);if(this._altitude===a)return;this._unmodified=false;this._altitude=a;this._calcMatrices()},get zoom(){return this._zoom},set zoom(zoom){var z=Math.min(Math.max(zoom,this.minZoom),this.maxZoom);if(this._zoom===z)return;this._unmodified=false;this._zoom=z;this.scale=this.zoomScale(z);this.tileZoom=Math.floor(z);this.zoomFraction=z-this.tileZoom;this._calcMatrices();this._constrain()},get center(){return this._center},set center(center){if(center.lat===this._center.lat&¢er.lng===this._center.lng)return;this._unmodified=false;this._center=center;this._calcMatrices();this._constrain()},coveringZoomLevel:function(options){return(options.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/options.tileSize))},coveringTiles:function(options){var z=this.coveringZoomLevel(options);var actualZ=z;if(zoptions.maxzoom)z=options.maxzoom;var tr=this,tileCenter=tr.locationCoordinate(tr.center)._zoomTo(z),centerPoint=new Point(tileCenter.column-.5,tileCenter.row-.5);return TileCoord.cover(z,[tr.pointCoordinate(new Point(0,0))._zoomTo(z),tr.pointCoordinate(new Point(tr.width,0))._zoomTo(z),tr.pointCoordinate(new Point(tr.width,tr.height))._zoomTo(z),tr.pointCoordinate(new Point(0,tr.height))._zoomTo(z)],options.reparseOverscaled?actualZ:z).sort(function(a,b){return centerPoint.dist(a)-centerPoint.dist(b)})},resize:function(width,height){this.width=width;this.height=height;this.pixelsToGLUnits=[2/width,-2/height];this._calcMatrices();this._constrain()},get unmodified(){return this._unmodified},zoomScale:function(zoom){return Math.pow(2,zoom)},scaleZoom:function(scale){return Math.log(scale)/Math.LN2},project:function(lnglat,worldSize){return new Point(this.lngX(lnglat.lng,worldSize),this.latY(lnglat.lat,worldSize))},unproject:function(point,worldSize){return new LngLat(this.xLng(point.x,worldSize),this.yLat(point.y,worldSize))},get x(){return this.lngX(this.center.lng)},get y(){return this.latY(this.center.lat)},get point(){return new Point(this.x,this.y)},lngX:function(lng,worldSize){return(180+lng)*(worldSize||this.worldSize)/360},latY:function(lat,worldSize){var y=180/Math.PI*Math.log(Math.tan(Math.PI/4+lat*Math.PI/360));return(180-y)*(worldSize||this.worldSize)/360},xLng:function(x,worldSize){return x*360/(worldSize||this.worldSize)-180},yLat:function(y,worldSize){var y2=180-y*360/(worldSize||this.worldSize);return 360/Math.PI*Math.atan(Math.exp(y2*Math.PI/180))-90},panBy:function(offset){var point=this.centerPoint._add(offset);this.center=this.pointLocation(point)},setLocationAtPoint:function(lnglat,point){var c=this.locationCoordinate(lnglat);var coordAtPoint=this.pointCoordinate(point);var coordCenter=this.pointCoordinate(this.centerPoint);var translate=coordAtPoint._sub(c);this._unmodified=false;this.center=this.coordinateLocation(coordCenter._sub(translate))},locationPoint:function(lnglat){return this.coordinatePoint(this.locationCoordinate(lnglat))},pointLocation:function(p){return this.coordinateLocation(this.pointCoordinate(p))},locationCoordinate:function(lnglat){var k=this.zoomScale(this.tileZoom)/this.worldSize,ll=LngLat.convert(lnglat);return new Coordinate(this.lngX(ll.lng)*k,this.latY(ll.lat)*k,this.tileZoom)},coordinateLocation:function(coord){var worldSize=this.zoomScale(coord.zoom);return new LngLat(this.xLng(coord.column,worldSize),this.yLat(coord.row,worldSize))},pointCoordinate:function(p){var targetZ=0;var coord0=[p.x,p.y,0,1];var coord1=[p.x,p.y,1,1];vec4.transformMat4(coord0,coord0,this.pixelMatrixInverse);vec4.transformMat4(coord1,coord1,this.pixelMatrixInverse);var w0=coord0[3];var w1=coord1[3];var x0=coord0[0]/w0;var x1=coord1[0]/w1;var y0=coord0[1]/w0;var y1=coord1[1]/w1;var z0=coord0[2]/w0;var z1=coord1[2]/w1;var t=z0===z1?0:(targetZ-z0)/(z1-z0);var scale=this.worldSize/this.zoomScale(this.tileZoom);return new Coordinate(interp(x0,x1,t)/scale,interp(y0,y1,t)/scale,this.tileZoom)},coordinatePoint:function(coord){var scale=this.worldSize/this.zoomScale(coord.zoom);var p=[coord.column*scale,coord.row*scale,0,1];vec4.transformMat4(p,p,this.pixelMatrix);return new Point(p[0]/p[3],p[1]/p[3])},calculatePosMatrix:function(coord,maxZoom){if(maxZoom===undefined)maxZoom=Infinity;if(coord instanceof TileCoord)coord=coord.toCoordinate(maxZoom);var z=Math.min(coord.zoom,maxZoom);var scale=this.worldSize/Math.pow(2,z);var posMatrix=new Float64Array(16);mat4.identity(posMatrix);mat4.translate(posMatrix,posMatrix,[coord.column*scale,coord.row*scale,0]);mat4.scale(posMatrix,posMatrix,[scale/EXTENT,scale/EXTENT,1]);mat4.multiply(posMatrix,this.projMatrix,posMatrix);return new Float32Array(posMatrix)},_constrain:function(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=true;var minY,maxY,minX,maxX,sy,sx,x2,y2,size=this.size,unmodified=this._unmodified;if(this.latRange){minY=this.latY(this.latRange[1]);maxY=this.latY(this.latRange[0]);sy=maxY-minYmaxY)y2=maxY-h2}if(this.lngRange){var x=this.x,w2=size.x/2;if(x-w2maxX)x2=maxX-w2}if(x2!==undefined||y2!==undefined){this.center=this.unproject(new Point(x2!==undefined?x2:this.x,y2!==undefined?y2:this.y))}this._unmodified=unmodified;this._constraining=false},_calcMatrices:function(){if(!this.height)return;var halfFov=Math.atan(.5/this.altitude);var topHalfSurfaceDistance=Math.sin(halfFov)*this.altitude/Math.sin(Math.PI/2-this._pitch-halfFov);var farZ=Math.cos(Math.PI/2-this._pitch)*topHalfSurfaceDistance+this.altitude;var m=new Float64Array(16);mat4.perspective(m,2*Math.atan(this.height/2/this.altitude),this.width/this.height,.1,farZ);mat4.translate(m,m,[0,0,-this.altitude]);mat4.scale(m,m,[1,-1,1/this.height]);mat4.rotateX(m,m,this._pitch);mat4.rotateZ(m,m,this.angle);mat4.translate(m,m,[-this.x,-this.y,0]);this.projMatrix=m;m=mat4.create();mat4.scale(m,m,[this.width/2,-this.height/2,1]);mat4.translate(m,m,[1,-1,0]);this.pixelMatrix=mat4.multiply(new Float64Array(16),m,this.projMatrix);m=mat4.invert(new Float64Array(16),this.pixelMatrix);if(!m)throw new Error("failed to invert matrix");this.pixelMatrixInverse=m;m=mat2.create();mat2.scale(m,m,[1,Math.cos(this._pitch)]);mat2.rotate(m,m,this.angle);this.lineAntialiasingMatrix=m;var topedgelength=Math.sqrt(this.height*this.height/4*(1+this.altitude*this.altitude));this.lineStretch=(topedgelength+this.height/2*Math.tan(this._pitch))/topedgelength-1}}},{"../data/bucket":17,"../source/tile_coord":61,"../util/interpolate":131,"../util/util":137,"./coordinate":27,"./lng_lat":28,"gl-matrix":154,"point-geometry":196}],31:[function(require,module,exports){"use strict";var WorkerPool=require("./util/worker_pool");var globalWorkerPool;module.exports=function getGlobalWorkerPool(){if(!globalWorkerPool){globalWorkerPool=new WorkerPool}return globalWorkerPool}},{"./util/worker_pool":139}],32:[function(require,module,exports){"use strict";var simplexFont={" ":[16,[]],"!":[10,[5,21,5,7,-1,-1,5,2,4,1,5,0,6,1,5,2]],'"':[16,[4,21,4,14,-1,-1,12,21,12,14]],"#":[21,[11,25,4,-7,-1,-1,17,25,10,-7,-1,-1,4,12,18,12,-1,-1,3,6,17,6]],$:[20,[8,25,8,-4,-1,-1,12,25,12,-4,-1,-1,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],"%":[24,[21,21,3,0,-1,-1,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,-1,-1,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7]],"&":[26,[23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2]],"'":[10,[5,19,4,20,5,21,6,20,6,18,5,16,4,15]],"(":[14,[11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7]],")":[14,[3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7]],"*":[16,[8,21,8,9,-1,-1,3,18,13,12,-1,-1,13,18,3,12]],"+":[26,[13,18,13,0,-1,-1,4,9,22,9]],",":[10,[6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],"-":[26,[4,9,22,9]],".":[10,[5,2,4,1,5,0,6,1,5,2]],"/":[22,[20,25,2,-7]],0:[20,[9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21]],1:[20,[6,17,8,18,11,21,11,0]],2:[20,[4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0]],3:[20,[5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],4:[20,[13,21,3,7,18,7,-1,-1,13,21,13,0]],5:[20,[15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4]],6:[20,[16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7]],7:[20,[17,21,7,0,-1,-1,3,21,17,21]],8:[20,[8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21]],9:[20,[16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3]],":":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,5,2,4,1,5,0,6,1,5,2]],";":[10,[5,14,4,13,5,12,6,13,5,14,-1,-1,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4]],"<":[24,[20,18,4,9,20,0]],"=":[26,[4,12,22,12,-1,-1,4,6,22,6]],">":[24,[4,18,20,9,4,0]],"?":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],"@":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],"[":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],"\\":[14,[0,21,14,-3]],"]":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],"^":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],"`":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],"{":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],"|":[8,[4,25,4,-7]],"}":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],"~":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};module.exports=function textVertices(text,left,baseline,scale){scale=scale||1;var strokes=[],i,len,j,len2,glyph,x,y,prev;for(i=0,len=text.length;i>16,pixelY>>16);gl.uniform2f(program.u_pixel_coord_lower,pixelX&65535,pixelY&65535)}gl.uniformMatrix4fv(program.u_matrix,false,painter.transform.calculatePosMatrix(coord));gl.drawArrays(gl.TRIANGLE_STRIP,0,painter.tileExtentBuffer.length)}gl.stencilMask(0);gl.stencilFunc(gl.EQUAL,128,128)}},{"../source/pixels_to_tile_units":55,"./create_uniform_pragmas":34}],36:[function(require,module,exports){"use strict";var browser=require("../util/browser");module.exports=drawCircles;function drawCircles(painter,sourceCache,layer,coords){if(painter.isOpaquePass)return;var gl=painter.gl;painter.setDepthSublayer(0);painter.depthMask(false);gl.disable(gl.STENCIL_TEST);for(var i=0;i0?1/(1-contrast):1+contrast}function saturationFactor(saturation){return saturation>0?1-1/(1.001-saturation):-saturation}function getOpacities(tile,parentTile,layer,transform){var opacities=[1,0];var fadeDuration=layer.paint["raster-fade-duration"];if(tile.sourceCache&&fadeDuration>0){var now=Date.now();var sinceTile=(now-tile.timeAdded)/fadeDuration;var sinceParent=parentTile?(now-parentTile.timeAdded)/fadeDuration:-1;var source=tile.sourceCache.getSource();var idealZ=transform.coveringZoomLevel({tileSize:source.tileSize,roundZoom:source.roundZoom});var fadeIn=!parentTile||Math.abs(parentTile.coord.z-idealZ)>Math.abs(tile.coord.z-idealZ);opacities[0]=util.clamp(fadeIn?sinceTile:1-sinceParent,0,1);opacities[1]=parentTile?1-opacities[0]:0}var opacity=layer.paint["raster-opacity"];opacities[0]*=opacity;opacities[1]*=opacity;return opacities}},{"../util/struct_array":135,"../util/util":137}],43:[function(require,module,exports){"use strict";var browser=require("../util/browser");var drawCollisionDebug=require("./draw_collision_debug");var pixelsToTileUnits=require("../source/pixels_to_tile_units");module.exports=drawSymbols;function drawSymbols(painter,sourceCache,layer,coords){if(painter.isOpaquePass)return;var drawAcrossEdges=!(layer.layout["text-allow-overlap"]||layer.layout["icon-allow-overlap"]||layer.layout["text-ignore-placement"]||layer.layout["icon-ignore-placement"]);var gl=painter.gl;if(drawAcrossEdges){gl.disable(gl.STENCIL_TEST)}else{gl.enable(gl.STENCIL_TEST)}drawLayerSymbols(painter,sourceCache,layer,coords,false,layer.paint["icon-translate"],layer.paint["icon-translate-anchor"],layer.layout["icon-rotation-alignment"],layer.layout["icon-rotation-alignment"],layer.layout["icon-size"],layer.paint["icon-halo-width"],layer.paint["icon-halo-color"],layer.paint["icon-halo-blur"],layer.paint["icon-opacity"],layer.paint["icon-color"]);drawLayerSymbols(painter,sourceCache,layer,coords,true,layer.paint["text-translate"],layer.paint["text-translate-anchor"],layer.layout["text-rotation-alignment"],layer.layout["text-pitch-alignment"],layer.layout["text-size"],layer.paint["text-halo-width"],layer.paint["text-halo-color"],layer.paint["text-halo-blur"],layer.paint["text-opacity"],layer.paint["text-color"]);if(sourceCache.map.showCollisionBoxes){drawCollisionDebug(painter,sourceCache,layer,coords)}}function drawLayerSymbols(painter,sourceCache,layer,coords,isText,translate,translateAnchor,rotationAlignment,pitchAlignment,size,haloWidth,haloColor,haloBlur,opacity,color){var gl=painter.gl;painter.setDepthSublayer(0);painter.depthMask(false);if(pitchAlignment==="map"){gl.enable(gl.DEPTH_TEST)}else{gl.disable(gl.DEPTH_TEST)}for(var j=0;jthis.previousZoom;z--){this.changeTimes[z]=now;this.changeOpacities[z]=this.opacities[z]}}for(z=0;z<256;z++){var timeSince=now-this.changeTimes[z];var opacityChange=timeSince/this.fadeDuration*255;if(z<=zoom){this.opacities[z]=this.changeOpacities[z]+opacityChange}else{this.opacities[z]=this.changeOpacities[z]-opacityChange}}this.changed=true;this.previousZoom=zoom};FrameHistory.prototype.bind=function(gl){if(!this.texture){this.texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,this.texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texImage2D(gl.TEXTURE_2D,0,gl.ALPHA,256,1,0,gl.ALPHA,gl.UNSIGNED_BYTE,this.array)}else{gl.bindTexture(gl.TEXTURE_2D,this.texture);if(this.changed){gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,256,1,gl.ALPHA,gl.UNSIGNED_BYTE,this.array);this.changed=false}}}},{}],45:[function(require,module,exports){"use strict";var util=require("../util/util");module.exports=LineAtlas;function LineAtlas(width,height){this.width=width;this.height=height;this.nextRow=0;this.bytes=4;this.data=new Uint8Array(this.width*this.height*this.bytes);this.positions={}}LineAtlas.prototype.setSprite=function(sprite){this.sprite=sprite};LineAtlas.prototype.getDash=function(dasharray,round){var key=dasharray.join(",")+round;if(!this.positions[key]){this.positions[key]=this.addDash(dasharray,round)}return this.positions[key]};LineAtlas.prototype.addDash=function(dasharray,round){var n=round?7:0;var height=2*n+1;var offset=128;if(this.nextRow+height>this.height){util.warnOnce("LineAtlas out of space");return null}var length=0;for(var i=0;i0?textures.pop():null}};Painter.prototype.getViewportTexture=function(width,height){if(!this.reusableTextures.viewport)return;var texture=this.reusableTextures.viewport.texture;if(texture.width===width&&texture.height===height){return texture}else{this.gl.deleteTexture(texture);this.reusableTextures.viewport.texture=null;return}};Painter.prototype.lineWidth=function(width){this.gl.lineWidth(util.clamp(width,this.lineWidthRange[0],this.lineWidthRange[1]))};Painter.prototype.showOverdrawInspector=function(enabled){if(!enabled&&!this._showOverdrawInspector)return;this._showOverdrawInspector=enabled;var gl=this.gl;if(enabled){gl.blendFunc(gl.CONSTANT_COLOR,gl.ONE);var numOverdrawSteps=8;var a=1/numOverdrawSteps;gl.blendColor(a,a,a,0);gl.clearColor(0,0,0,1);gl.clear(gl.COLOR_BUFFER_BIT)}else{gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA); }}},{"../data/bucket":17,"../data/buffer":23,"../source/pixels_to_tile_units":55,"../source/source_cache":59,"../util/browser":120,"../util/struct_array":135,"../util/util":137,"./create_uniform_pragmas":34,"./draw_background":35,"./draw_circle":36,"./draw_debug":38,"./draw_extrusion":39,"./draw_fill":40,"./draw_line":41,"./draw_raster":42,"./draw_symbol":43,"./frame_history":44,"./painter/use_program":47,"./vertex_array_object":49,"gl-matrix":154}],47:[function(require,module,exports){"use strict";var util=require("../../util/util");var shaders=require("mapbox-gl-shaders");var utilSource=shaders.util;module.exports._createProgram=function(name,defines,vertexPragmas,fragmentPragmas){var gl=this.gl;var program=gl.createProgram();var definition=shaders[name];var definesSource="#define MAPBOX_GL_JS;\n";for(var j=0;j>16,pixelY>>16);gl.uniform2f(program.u_pixel_coord_lower,pixelX&65535,pixelY&65535);if(includeHeightFactor){gl.uniform1f(program.u_height_factor,-Math.pow(2,painter.transform.tileZoom)/tileSizeAtNearestZoom>>3)}gl.activeTexture(gl.TEXTURE0);painter.spriteAtlas.bind(gl,true)}},{"../source/pixels_to_tile_units":55}],49:[function(require,module,exports){"use strict";module.exports=VertexArrayObject;function VertexArrayObject(){this.boundProgram=null;this.boundVertexBuffer=null;this.boundVertexBuffer2=null;this.boundElementBuffer=null;this.vao=null}VertexArrayObject.prototype.bind=function(gl,program,layoutVertexBuffer,elementBuffer,vertexBuffer2){if(gl.extVertexArrayObject===undefined){gl.extVertexArrayObject=gl.getExtension("OES_vertex_array_object")}var isFreshBindRequired=!this.vao||this.boundProgram!==program||this.boundVertexBuffer!==layoutVertexBuffer||this.boundVertexBuffer2!==vertexBuffer2||this.boundElementBuffer!==elementBuffer;if(!gl.extVertexArrayObject||isFreshBindRequired){this.freshBind(gl,program,layoutVertexBuffer,elementBuffer,vertexBuffer2);this.gl=gl}else{gl.extVertexArrayObject.bindVertexArrayOES(this.vao)}};VertexArrayObject.prototype.freshBind=function(gl,program,layoutVertexBuffer,elementBuffer,vertexBuffer2){var numPrevAttributes;var numNextAttributes=program.numAttributes;if(gl.extVertexArrayObject){if(this.vao)this.destroy();this.vao=gl.extVertexArrayObject.createVertexArrayOES();gl.extVertexArrayObject.bindVertexArrayOES(this.vao);numPrevAttributes=0;this.boundProgram=program;this.boundVertexBuffer=layoutVertexBuffer;this.boundVertexBuffer2=vertexBuffer2;this.boundElementBuffer=elementBuffer}else{numPrevAttributes=gl.currentNumAttributes||0;for(var i=numNextAttributes;ithis.maxzoom?Math.pow(2,tile.coord.z-this.maxzoom):1;var params={type:this.type,uid:tile.uid,coord:tile.coord,zoom:tile.coord.z,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,overscaling:overscaling,angle:this.map.transform.angle,pitch:this.map.transform.pitch,showCollisionBoxes:this.map.showCollisionBoxes};tile.workerID=this.dispatcher.send("load tile",params,function(err,data){tile.unloadVectorData();if(tile.aborted)return;if(err){return callback(err)}tile.loadVectorData(data,this.map.painter);if(tile.redoWhenDone){tile.redoWhenDone=false;tile.redoPlacement(this)}return callback(null)}.bind(this),this.workerID)},abortTile:function(tile){tile.aborted=true},unloadTile:function(tile){tile.unloadVectorData();this.dispatcher.send("remove tile",{uid:tile.uid,source:this.id},function(){},tile.workerID)},serialize:function(){return{type:this.type,data:this._data}}});function resolveURL(url){var a=window.document.createElement("a");a.href=url;return a.href}},{"../data/bucket":17,"../util/evented":128,"../util/util":137,"../util/window":122}],51:[function(require,module,exports){"use strict";var util=require("../util/util");var ajax=require("../util/ajax");var rewind=require("geojson-rewind");var GeoJSONWrapper=require("./geojson_wrapper");var vtpbf=require("vt-pbf");var supercluster=require("supercluster");var geojsonvt=require("geojson-vt");var VectorTileWorkerSource=require("./vector_tile_worker_source");module.exports=GeoJSONWorkerSource;function GeoJSONWorkerSource(actor,styleLayers,loadGeoJSON){if(loadGeoJSON){this.loadGeoJSON=loadGeoJSON}VectorTileWorkerSource.call(this,actor,styleLayers)}GeoJSONWorkerSource.prototype=util.inherit(VectorTileWorkerSource,{_geoJSONIndexes:{},loadVectorData:function(params,callback){var source=params.source,coord=params.coord;if(!this._geoJSONIndexes[source]){return callback(null,null)}var geoJSONTile=this._geoJSONIndexes[source].getTile(Math.min(coord.z,params.maxZoom),coord.x,coord.y);if(!geoJSONTile){return callback(null,null)}var geojsonWrapper=new GeoJSONWrapper(geoJSONTile.features);geojsonWrapper.name="_geojsonTileLayer";var pbf=vtpbf({layers:{_geojsonTileLayer:geojsonWrapper}});if(pbf.byteOffset!==0||pbf.byteLength!==pbf.buffer.byteLength){pbf=new Uint8Array(pbf)}geojsonWrapper.rawData=pbf.buffer;callback(null,geojsonWrapper)},loadData:function(params,callback){var handleData=function(err,data){if(err)return callback(err);if(typeof data!="object"){return callback(new Error("Input data is not a valid GeoJSON object."))}rewind(data,true);this._indexData(data,params,function(err,indexed){if(err){return callback(err)}this._geoJSONIndexes[params.source]=indexed;callback(null)}.bind(this))}.bind(this);this.loadGeoJSON(params,handleData)},loadGeoJSON:function(params,callback){if(params.url){ajax.getJSON(params.url,callback)}else if(typeof params.data==="string"){try{return callback(null,JSON.parse(params.data))}catch(e){return callback(new Error("Input data is not a valid GeoJSON object."))}}else{return callback(new Error("Input data is not a valid GeoJSON object."))}},_indexData:function(data,params,callback){try{if(params.cluster){callback(null,supercluster(params.superclusterOptions).load(data.features))}else{callback(null,geojsonvt(data,params.geojsonVtOptions))}}catch(err){return callback(err)}}})},{"../util/ajax":119,"../util/util":137,"./geojson_wrapper":52,"./vector_tile_worker_source":63,"geojson-rewind":143,"geojson-vt":149,supercluster:199,"vt-pbf":210}],52:[function(require,module,exports){"use strict";var Point=require("point-geometry");var VectorTileFeature=require("vector-tile").VectorTileFeature;var EXTENT=require("../data/bucket").EXTENT;module.exports=GeoJSONWrapper;function GeoJSONWrapper(features){this.features=features;this.length=features.length;this.extent=EXTENT}GeoJSONWrapper.prototype.feature=function(i){return new FeatureWrapper(this.features[i])};function FeatureWrapper(feature){this.type=feature.type;if(feature.type===1){this.rawGeometry=[];for(var i=0;imaxCoveringZoom)continue;var z2=Math.pow(2,Math.min(tile.coord.z,this._source.maxzoom)-Math.min(coord.z,this._source.maxzoom));if(Math.floor(tile.coord.x/z2)!==coord.x||Math.floor(tile.coord.y/z2)!==coord.y)continue;retain[id]=true;found=true;while(tile&&tile.coord.z-1>coord.z){var parentId=tile.coord.parent(this._source.maxzoom).id;tile=this._tiles[parentId];if(tile&&tile.hasData()){delete retain[id];retain[parentId]=true}}}return found},findLoadedParent:function(coord,minCoveringZoom,retain){for(var z=coord.z-1;z>=minCoveringZoom;z--){coord=coord.parent(this._source.maxzoom);var tile=this._tiles[coord.id];if(tile&&tile.hasData()){retain[coord.id]=true;return tile}if(this._cache.has(coord.id)){this.addTile(coord);retain[coord.id]=true;return this._tiles[coord.id]}}},updateCacheSize:function(transform){var widthInTiles=Math.ceil(transform.width/transform.tileSize)+1;var heightInTiles=Math.ceil(transform.height/transform.tileSize)+1;var approxTilesInView=widthInTiles*heightInTiles;var commonZoomRange=5;this._cache.setMaxSize(Math.floor(approxTilesInView*commonZoomRange))},update:function(transform,fadeDuration){if(!this._sourceLoaded){return}var i;var coord;var tile;this.updateCacheSize(transform);var zoom=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(transform));var minCoveringZoom=Math.max(zoom-SourceCache.maxOverzooming,this._source.minzoom);var maxCoveringZoom=Math.max(zoom+SourceCache.maxUnderzooming,this._source.minzoom);var retain={};var now=(new Date).getTime();this._coveredTiles={};var visibleCoords;if(!this.used){visibleCoords=[]}else if(this._source.coord){visibleCoords=[this._source.coord]}else{visibleCoords=transform.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled})}for(i=0;inow-(fadeDuration||0)){if(this.findLoadedChildren(coord,maxCoveringZoom,retain)){retain[id]=true}this.findLoadedParent(coord,minCoveringZoom,parentsForFading)}}var fadedParent;for(fadedParent in parentsForFading){if(!retain[fadedParent]){this._coveredTiles[fadedParent]=true}}for(fadedParent in parentsForFading){retain[fadedParent]=true}var remove=util.keysDifference(this._tiles,retain);for(i=0;ithis._source.maxzoom?Math.pow(2,zoom-this._source.maxzoom):1;tile=new Tile(wrapped,this._source.tileSize*overscaling,this._source.maxzoom);this.loadTile(tile,this._tileLoaded.bind(this,tile))}tile.uses++;this._tiles[coord.id]=tile;this._source.fire("dataloading",{tile:tile,dataType:"tile"});return tile},removeTile:function(id){var tile=this._tiles[id];if(!tile)return;tile.uses--;delete this._tiles[id];this._source.fire("data",{tile:tile,dataType:"tile"});if(tile.uses>0)return;if(tile.hasData()){this._cache.add(tile.coord.wrapped().id,tile)}else{tile.aborted=true;this.abortTile(tile);this.unloadTile(tile)}},clearTiles:function(){for(var id in this._tiles)this.removeTile(id);this._cache.reset()},tilesIn:function(queryGeometry){var tileResults={};var ids=this.getIds();var minX=Infinity;var minY=Infinity;var maxX=-Infinity;var maxY=-Infinity;var z=queryGeometry[0].zoom;for(var k=0;k=0&&tileSpaceBounds[1].y>=0){var tileSpaceQueryGeometry=[];for(var j=0;j0;i--){mask=1<sourceMaxZoom){return new TileCoord(this.z-1,this.x,this.y,this.w)}return new TileCoord(this.z-1,Math.floor(this.x/2),Math.floor(this.y/2),this.w)};TileCoord.prototype.wrapped=function(){return new TileCoord(this.z,this.x,this.y,0)};TileCoord.prototype.children=function(sourceMaxZoom){if(this.z>=sourceMaxZoom){return[new TileCoord(this.z+1,this.x,this.y,this.w)]}var z=this.z+1;var x=this.x*2;var y=this.y*2;return[new TileCoord(z,x,y,this.w),new TileCoord(z,x+1,y,this.w),new TileCoord(z,x,y+1,this.w),new TileCoord(z,x+1,y+1,this.w)]};function edge(a,b){if(a.row>b.row){var t=a;a=b;b=t}return{x0:a.column,y0:a.row,x1:b.column,y1:b.row,dx:b.column-a.column,dy:b.row-a.row}}function scanSpans(e0,e1,ymin,ymax,scanLine){var y0=Math.max(ymin,Math.floor(e1.y0));var y1=Math.min(ymax,Math.ceil(e1.y1));if(e0.x0===e1.x0&&e0.y0===e1.y0?e0.x0+e1.dy/e0.dy*e0.dx0;var d1=e1.dx<0;for(var y=y0;ybc.dy){t=ab;ab=bc;bc=t}if(ab.dy>ca.dy){t=ab;ab=ca;ca=t}if(bc.dy>ca.dy){t=bc;bc=ca;ca=t}if(ab.dy)scanSpans(ca,ab,ymin,ymax,scanLine);if(bc.dy)scanSpans(ca,bc,ymin,ymax,scanLine)}TileCoord.cover=function(z,bounds,actualZ){var tiles=1<=0&&y<=tiles){for(x=x0;xthis.maxzoom?Math.pow(2,tile.coord.z-this.maxzoom):1;var params={url:normalizeURL(tile.coord.url(this.tiles,this.maxzoom,this.scheme),this.url),uid:tile.uid,coord:tile.coord,zoom:tile.coord.z,tileSize:this.tileSize*overscaling,source:this.id,overscaling:overscaling,angle:this.map.transform.angle,pitch:this.map.transform.pitch,showCollisionBoxes:this.map.showCollisionBoxes};if(!tile.workerID){tile.workerID=this.dispatcher.send("load tile",params,done.bind(this))}else if(tile.state==="loading"){tile.reloadCallback=callback}else{this.dispatcher.send("reload tile",params,done.bind(this),tile.workerID)}function done(err,data){if(tile.aborted)return;if(err){return callback(err)}tile.loadVectorData(data,this.map.painter);if(tile.redoWhenDone){tile.redoWhenDone=false;tile.redoPlacement(this)}callback(null);if(tile.reloadCallback){this.loadTile(tile,tile.reloadCallback);tile.reloadCallback=null}}},abortTile:function(tile){this.dispatcher.send("abort tile",{uid:tile.uid,source:this.id},null,tile.workerID)},unloadTile:function(tile){tile.unloadVectorData();this.dispatcher.send("remove tile",{uid:tile.uid,source:this.id},null,tile.workerID)}})},{"../util/evented":128,"../util/mapbox":134,"../util/util":137,"./load_tilejson":54}],63:[function(require,module,exports){"use strict";var ajax=require("../util/ajax");var vt=require("vector-tile");var Protobuf=require("pbf");var WorkerTile=require("./worker_tile");var util=require("../util/util");module.exports=VectorTileWorkerSource;function VectorTileWorkerSource(actor,styleLayers,loadVectorData){this.actor=actor;this.styleLayers=styleLayers;if(loadVectorData){this.loadVectorData=loadVectorData}this.loading={};this.loaded={}}VectorTileWorkerSource.prototype={loadTile:function(params,callback){var source=params.source,uid=params.uid;if(!this.loading[source])this.loading[source]={};var workerTile=this.loading[source][uid]=new WorkerTile(params);workerTile.abort=this.loadVectorData(params,done.bind(this));function done(err,vectorTile){delete this.loading[source][uid];if(err)return callback(err);if(!vectorTile)return callback(null,null);workerTile.vectorTile=vectorTile;workerTile.parse(vectorTile,this.styleLayers.getLayerFamilies(),this.actor,function(err,result,transferrables){if(err)return callback(err);callback(null,util.extend({rawTileData:vectorTile.rawData},result),transferrables)});this.loaded[source]=this.loaded[source]||{};this.loaded[source][uid]=workerTile}},reloadTile:function(params,callback){var loaded=this.loaded[params.source],uid=params.uid;if(loaded&&loaded[uid]){var workerTile=loaded[uid];workerTile.parse(workerTile.vectorTile,this.styleLayers.getLayerFamilies(),this.actor,callback)}},abortTile:function(params){var loading=this.loading[params.source],uid=params.uid;if(loading&&loading[uid]&&loading[uid].abort){loading[uid].abort();delete loading[uid]}},removeTile:function(params){var loaded=this.loaded[params.source],uid=params.uid;if(loaded&&loaded[uid]){delete loaded[uid]}},loadVectorData:function(params,callback){var xhr=ajax.getArrayBuffer(params.url,done.bind(this));return function abort(){xhr.abort()};function done(err,arrayBuffer){if(err){return callback(err)}var vectorTile=new vt.VectorTile(new Protobuf(arrayBuffer));vectorTile.rawData=arrayBuffer;callback(err,vectorTile)}},redoPlacement:function(params,callback){var loaded=this.loaded[params.source],loading=this.loading[params.source],uid=params.uid;if(loaded&&loaded[uid]){var workerTile=loaded[uid];var result=workerTile.redoPlacement(params.angle,params.pitch,params.showCollisionBoxes);if(result.result){callback(null,result.result,result.transferables)}}else if(loading&&loading[uid]){loading[uid].angle=params.angle}}}},{"../util/ajax":119,"../util/util":137,"./worker_tile":66,pbf:194,"vector-tile":206}],64:[function(require,module,exports){"use strict";var util=require("../util/util");var ajax=require("../util/ajax");var ImageSource=require("./image_source");module.exports=VideoSource;function VideoSource(id,options,dispatcher,eventedParent){this.id=id;this.urls=options.urls;this.coordinates=options.coordinates;this.setEventedParent(eventedParent);this.fire("dataloading",{dataType:"source"});ajax.getVideo(options.urls,function(err,video){if(err)return this.fire("error",{error:err});this.video=video;this.video.loop=true;var loopID;this.video.addEventListener("playing",function(){loopID=this.map.style.animationLoop.set(Infinity);this.map._rerender()}.bind(this));this.video.addEventListener("pause",function(){this.map.style.animationLoop.cancel(loopID)}.bind(this));if(this.map){this.video.play();this.setCoordinates(options.coordinates)}this.fire("data",{dataType:"source"});this.fire("source.load")}.bind(this))}VideoSource.prototype=util.inherit(ImageSource,{roundZoom:true,getVideo:function(){return this.video},onAdd:function(map){if(this.map)return;this.map=map;if(this.video){this.video.play();this.setCoordinates(this.coordinates)}},prepare:function(){if(!this.tile||this.video.readyState<2)return;this._prepareImage(this.map.painter.gl,this.video)},serialize:function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}})},{"../util/ajax":119,"../util/util":137,"./image_source":53}],65:[function(require,module,exports){"use strict";var Actor=require("../util/actor");var StyleLayer=require("../style/style_layer");var util=require("../util/util");var VectorTileWorkerSource=require("./vector_tile_worker_source");var GeoJSONWorkerSource=require("./geojson_worker_source");var featureFilter=require("feature-filter");module.exports=function createWorker(self){return new Worker(self)};function Worker(self){this.self=self;this.actor=new Actor(self,this);this.layers={};this.layerFamilies={};this.workerSourceTypes={vector:VectorTileWorkerSource,geojson:GeoJSONWorkerSource};this.workerSources={};this.self.registerWorkerSource=function(name,WorkerSource){if(this.workerSourceTypes[name]){throw new Error('Worker source with name "'+name+'" already registered.')}this.workerSourceTypes[name]=WorkerSource}.bind(this)}util.extend(Worker.prototype,{"set layers":function(mapId,layerDefinitions){var layers=this.layers[mapId]={};var childLayerIndicies=[];for(var i=0;i=layer.maxzoom)continue;if(layer.layout&&layer.layout.visibility==="none")continue;if(data.layers&&!data.layers[layer.sourceLayer])continue;bucket=Bucket.create({layer:layer,index:bucketIndex++,childLayers:layerFamilies[layerId],zoom:this.zoom,overscaling:this.overscaling,showCollisionBoxes:this.showCollisionBoxes,collisionBoxArray:this.collisionBoxArray,symbolQuadsArray:this.symbolQuadsArray,symbolInstancesArray:this.symbolInstancesArray,sourceLayerIndex:sourceLayerCoder.encode(layer.sourceLayer||"_geojsonTileLayer")});bucketsById[layer.id]=bucket;if(data.layers){sourceLayerId=layer.sourceLayer;bucketsBySourceLayer[sourceLayerId]=bucketsBySourceLayer[sourceLayerId]||{};bucketsBySourceLayer[sourceLayerId][layer.id]=bucket}}if(data.layers){for(sourceLayerId in bucketsBySourceLayer){if(layer.version===1){util.warnOnce('Vector tile source "'+this.source+'" layer "'+sourceLayerId+'" does not use vector tile spec v2 '+"and therefore may have some rendering errors.")}layer=data.layers[sourceLayerId];if(layer){sortLayerIntoBuckets(layer,bucketsBySourceLayer[sourceLayerId])}}}else{sortLayerIntoBuckets(data,bucketsById)}function sortLayerIntoBuckets(layer,buckets){for(var i=0;i0){for(i=symbolBuckets.length-1;i>=0;i--){symbolBuckets[i].updateIcons(icons);symbolBuckets[i].updateFont(stacks)}for(var fontName in stacks){stacks[fontName]=Object.keys(stacks[fontName]).map(Number)}icons=Object.keys(icons);actor.send("get glyphs",{uid:this.uid,stacks:stacks},function(err,newStacks){stacks=newStacks;gotDependency(err)});if(icons.length){actor.send("get icons",{icons:icons},function(err,newIcons){icons=newIcons;gotDependency(err)})}else{gotDependency()}}for(i=otherBuckets.length-1;i>=0;i--){parseBucket(this,otherBuckets[i])}if(symbolBuckets.length===0)return done();function gotDependency(err){if(err)return callback(err);deps++;if(deps===2){for(var i=symbolBuckets.length-1;i>=0;i--){parseBucket(tile,symbolBuckets[i])}done()}}function parseBucket(tile,bucket){bucket.populateArrays(collisionTile,stacks,icons);if(bucket.type!=="symbol"){for(var i=0;i=0;i--){buckets[i].placeFeatures(collisionTile,showCollisionBoxes)}var collisionTile_=collisionTile.serialize();var nonEmptyBuckets=buckets.filter(isBucketNonEmpty);return{result:{buckets:nonEmptyBuckets.map(serializeBucket),collisionTile:collisionTile_.data},transferables:getTransferables(nonEmptyBuckets).concat(collisionTile_.transferables)}};function isBucketNonEmpty(bucket){return!bucket.isEmpty()}function serializeBucket(bucket){return bucket.serialize()}function getTransferables(buckets){var transferables=[];for(var i in buckets){buckets[i].getTransferables(transferables)}return transferables}function getLayerId(layer){return layer.id}},{"../data/bucket":17,"../data/feature_index":25,"../symbol/collision_box":87,"../symbol/collision_tile":89,"../symbol/symbol_instances":98,"../symbol/symbol_quads":99,"../util/dictionary_coder":125,"../util/util":137}],67:[function(require,module,exports){"use strict";module.exports=AnimationLoop;function AnimationLoop(){this.n=0;this.times=[]}AnimationLoop.prototype.stopped=function(){this.times=this.times.filter(function(t){return t.time>=(new Date).getTime()});return!this.times.length};AnimationLoop.prototype.set=function(t){this.times.push({id:this.n,time:t+(new Date).getTime()});return this.n++};AnimationLoop.prototype.cancel=function(n){this.times=this.times.filter(function(t){return t.id!==n})}},{}],68:[function(require,module,exports){"use strict";var Evented=require("../util/evented");var ajax=require("../util/ajax");var browser=require("../util/browser");var normalizeURL=require("../util/mapbox").normalizeSpriteURL;module.exports=ImageSprite;function ImageSprite(base){this.base=base;this.retina=browser.devicePixelRatio>1;var format=this.retina?"@2x":"";ajax.getJSON(normalizeURL(base,format,".json"),function(err,data){if(err){this.fire("error",{error:err});return}this.data=data;if(this.img)this.fire("data",{dataType:"style"})}.bind(this));ajax.getImage(normalizeURL(base,format,".png"),function(err,img){if(err){this.fire("error",{error:err});return}var data=img.getData();var newdata=img.data=new Uint8Array(data.length);for(var i=0;i1!==this.retina){var newSprite=new ImageSprite(this.base);newSprite.on("data",function(){this.img=newSprite.img;this.data=newSprite.data;this.retina=newSprite.retina}.bind(this))}};function SpritePosition(){}SpritePosition.prototype={x:0,y:0,width:0,height:0,pixelRatio:1,sdf:false};ImageSprite.prototype.getSpritePosition=function(name){if(!this.loaded())return new SpritePosition;var pos=this.data&&this.data[name];if(pos&&this.img)return pos;return new SpritePosition}},{"../util/ajax":119,"../util/browser":120,"../util/evented":128,"../util/mapbox":134}],69:[function(require,module,exports){"use strict";var styleSpec=require("./style_spec");var util=require("../util/util");var Evented=require("../util/evented");var validateStyle=require("./validate_style");var StyleDeclaration=require("./style_declaration");var StyleTransition=require("./style_transition");module.exports=Light;var TRANSITION_SUFFIX="-transition";function Light(lightOptions){this.set(lightOptions)}Light.prototype=util.inherit(Evented,{properties:["anchor","color","position","intensity"],_specifications:styleSpec.$root.light,set:function(lightOpts){if(this._validate(validateStyle.light,lightOpts))return;this._declarations={};this._transitions={};this._transitionOptions={};this.calculated={};lightOpts=util.extend({anchor:this._specifications.anchor.default,color:this._specifications.color.default,position:this._specifications.position.default,intensity:this._specifications.intensity.default},lightOpts);for(var p in this.properties){var prop=this.properties[p];this._declarations[prop]=new StyleDeclaration(this._specifications[prop],lightOpts[prop])}return this},getLight:function(){return{anchor:this.getLightProperty("anchor"),color:this.getLightProperty("color"),position:this.getLightProperty("position"),intensity:this.getLightProperty("intensity")}},getLightProperty:function(property){if(util.endsWith(property,TRANSITION_SUFFIX)){return this._transitionOptions[property]}else{return this._declarations[property]&&this._declarations[property].value}},getLightValue:function(property,globalProperties){if(property==="position"){var calculated=this._transitions[property].calculate(globalProperties),cartesian=util.sphericalToCartesian(calculated);return{x:cartesian[0],y:cartesian[1],z:cartesian[2]}}return this._transitions[property].calculate(globalProperties)},setLight:function(options){if(this._validate(validateStyle.light,options))return;for(var key in options){var value=options[key];if(util.endsWith(key,TRANSITION_SUFFIX)){this._transitionOptions[key]=value}else if(value===null||value===undefined){delete this._declarations[key]}else{this._declarations[key]=new StyleDeclaration(this._specifications[key],value)}}},recalculate:function(zoom,zoomHistory){for(var property in this._declarations){this.calculated[property]=this.getLightValue(property,{zoom:zoom,zoomHistory:zoomHistory})}},_applyLightDeclaration:function(property,declaration,options,globalOptions,animationLoop){var oldTransition=options.transition?this._transitions[property]:undefined;var spec=this._specifications[property];if(declaration===null||declaration===undefined){declaration=new StyleDeclaration(spec,spec.default)}if(oldTransition&&oldTransition.declaration.json===declaration.json)return;var transitionOptions=util.extend({duration:300,delay:0},globalOptions,this.getLightProperty(property+TRANSITION_SUFFIX));var newTransition=this._transitions[property]=new StyleTransition(spec,declaration,oldTransition,transitionOptions);if(!newTransition.instant()){newTransition.loopID=animationLoop.set(newTransition.endTime-Date.now())}if(oldTransition){animationLoop.cancel(oldTransition.loopID)}},updateLightTransitions:function(options,globalOptions,animationLoop){var property;for(property in this._declarations){this._applyLightDeclaration(property,this._declarations[property],options,globalOptions,animationLoop)}},_validate:function(validate,value){return validateStyle.emitErrors(this,validate.call(validateStyle,util.extend({value:value,style:{glyphs:true,sprite:true},styleSpec:styleSpec})))}})},{"../util/evented":128,"../util/util":137,"./style_declaration":72,"./style_spec":81,"./style_transition":82,"./validate_style":83}],70:[function(require,module,exports){"use strict";var parseColorString=require("csscolorparser").parseCSSColor;var util=require("../util/util");var StyleFunction=require("./style_function");var cache={};module.exports=function parseColor(input){if(StyleFunction.isFunctionDefinition(input)){if(!input.stops)return input;else return util.extend({},input,{stops:input.stops.map(function(stop){return[stop[0],parseColor(stop[1])]})})}else if(typeof input==="string"){if(!cache[input]){var rgba=parseColorString(input);if(!rgba){throw new Error("Invalid color "+input)}cache[input]=[rgba[0]/255*rgba[3],rgba[1]/255*rgba[3],rgba[2]/255*rgba[3],rgba[3]]}return cache[input]}else if(Array.isArray(input)){return input}else{throw new Error("Invalid color "+input)}}},{"../util/util":137,"./style_function":73,csscolorparser:140}],71:[function(require,module,exports){"use strict";var Evented=require("../util/evented");var StyleLayer=require("./style_layer");var ImageSprite=require("./image_sprite");var Light=require("./light");var GlyphSource=require("../symbol/glyph_source");var SpriteAtlas=require("../symbol/sprite_atlas");var LineAtlas=require("../render/line_atlas");var util=require("../util/util");var ajax=require("../util/ajax");var mapbox=require("../util/mapbox");var browser=require("../util/browser");var Dispatcher=require("../util/dispatcher");var AnimationLoop=require("./animation_loop");var validateStyle=require("./validate_style");var Source=require("../source/source");var QueryFeatures=require("../source/query_features");var SourceCache=require("../source/source_cache");var styleSpec=require("./style_spec");var StyleFunction=require("./style_function");var getWorkerPool=require("../global_worker_pool");module.exports=Style;function Style(stylesheet,map,options){this.map=map;this.animationLoop=map&&map.animationLoop||new AnimationLoop; this.dispatcher=new Dispatcher(getWorkerPool(),this);this.spriteAtlas=new SpriteAtlas(1024,1024);this.lineAtlas=new LineAtlas(256,512);this._layers={};this._order=[];this._groups=[];this.sourceCaches={};this.zoomHistory={};util.bindAll(["_redoPlacement"],this);this._resetUpdates();options=util.extend({validate:typeof stylesheet==="string"?!mapbox.isMapboxURL(stylesheet):true},options);this.setEventedParent(map);this.fire("dataloading",{dataType:"style"});var stylesheetLoaded=function(err,stylesheet){if(err){this.fire("error",{error:err});return}if(options.validate&&validateStyle.emitErrors(this,validateStyle(stylesheet)))return;this._loaded=true;this.stylesheet=stylesheet;this.updateClasses();for(var id in stylesheet.sources){this.addSource(id,stylesheet.sources[id],options)}if(stylesheet.sprite){this.sprite=new ImageSprite(stylesheet.sprite);this.sprite.setEventedParent(this)}this.glyphSource=new GlyphSource(stylesheet.glyphs);this._resolve();this.fire("data",{dataType:"style"});this.fire("style.load")}.bind(this);if(typeof stylesheet==="string"){ajax.getJSON(mapbox.normalizeStyleURL(stylesheet),stylesheetLoaded)}else{browser.frame(stylesheetLoaded.bind(this,null,stylesheet))}this.on("source.load",function(event){var source=event.source;if(source&&source.vectorLayerIds){for(var layerId in this._layers){var layer=this._layers[layerId];if(layer.source===source.id){this._validateLayer(layer)}}}})}Style.prototype=util.inherit(Evented,{_loaded:false,_validateLayer:function(layer){var sourceCache=this.sourceCaches[layer.source];if(!layer.sourceLayer)return;if(!sourceCache)return;var source=sourceCache.getSource();if(!source.vectorLayerIds)return;if(source.vectorLayerIds.indexOf(layer.sourceLayer)===-1){this.fire("error",{error:new Error('Source layer "'+layer.sourceLayer+'" '+'does not exist on source "'+source.id+'" '+'as specified by style layer "'+layer.id+'"')})}},loaded:function(){if(!this._loaded)return false;if(Object.keys(this._updates.sources).length)return false;for(var id in this.sourceCaches)if(!this.sourceCaches[id].loaded())return false;if(this.sprite&&!this.sprite.loaded())return false;return true},_resolve:function(){var layer,layerJSON;this._layers={};this._order=this.stylesheet.layers.map(function(layer){return layer.id});for(var i=0;iMath.floor(z)){zh.lastIntegerZoom=Math.floor(z+1);zh.lastIntegerZoomTime=Date.now()}zh.lastZoom=z},_checkLoaded:function(){if(!this._loaded){throw new Error("Style is not done loading")}},update:function(classes,options){if(!this._updates.changed)return this;if(this._updates.allLayers){this._groupLayers();this._updateWorkerLayers()}else{var updatedIds=Object.keys(this._updates.layers);if(updatedIds.length){this._updateWorkerLayers(updatedIds)}}var updatedSourceIds=Object.keys(this._updates.sources);var i;for(i=0;i=0;if(shouldValidate&&this._validate(validateStyle.source,"sources."+id,source,null,options))return this;source=new SourceCache(id,source,this.dispatcher);this.sourceCaches[id]=source;source.style=this;source.setEventedParent(this,{source:source.getSource()});if(source.onAdd)source.onAdd(this.map);this._updates.changed=true;return this},removeSource:function(id){this._checkLoaded();if(this.sourceCaches[id]===undefined){throw new Error("There is no source with this ID")}var sourceCache=this.sourceCaches[id];delete this.sourceCaches[id];delete this._updates.sources[id];sourceCache.setEventedParent(null);sourceCache.clearTiles();if(sourceCache.onRemove)sourceCache.onRemove(this.map);this._updates.changed=true;return this},getSource:function(id){return this.sourceCaches[id]&&this.sourceCaches[id].getSource()},addLayer:function(layer,before,options){this._checkLoaded();if(!(layer instanceof StyleLayer)){if(this._validate(validateStyle.layer,"layers."+layer.id,layer,{arrayIndex:-1},options))return this;var refLayer=layer.ref&&this.getLayer(layer.ref);layer=StyleLayer.create(layer,refLayer)}this._validateLayer(layer);layer.setEventedParent(this,{layer:{id:layer.id}});this._layers[layer.id]=layer;this._order.splice(before?this._order.indexOf(before):Infinity,0,layer.id);this._updates.allLayers=true;if(layer.source){this._updates.sources[layer.source]=true}return this.updateClasses(layer.id)},removeLayer:function(id){this._checkLoaded();var layer=this._layers[id];if(layer===undefined){throw new Error("There is no layer with this ID")}for(var i in this._layers){if(this._layers[i].ref===id){this.removeLayer(i)}}layer.setEventedParent(null);delete this._layers[id];delete this._updates.layers[id];delete this._updates.paintProps[id];this._order.splice(this._order.indexOf(id),1);this._updates.allLayers=true;this._updates.changed=true;return this},getLayer:function(id){return this._layers[id]},getReferentLayer:function(id){var layer=this.getLayer(id);if(layer.ref){layer=this.getLayer(layer.ref)}return layer},setLayerZoomRange:function(layerId,minzoom,maxzoom){this._checkLoaded();var layer=this.getReferentLayer(layerId);if(layer.minzoom===minzoom&&layer.maxzoom===maxzoom)return this;if(minzoom!=null){layer.minzoom=minzoom}if(maxzoom!=null){layer.maxzoom=maxzoom}return this._updateLayer(layer)},setFilter:function(layerId,filter){this._checkLoaded();var layer=this.getReferentLayer(layerId);if(filter!==null&&this._validate(validateStyle.filter,"layers."+layer.id+".filter",filter))return this;if(util.deepEqual(layer.filter,filter))return this;layer.filter=util.clone(filter);return this._updateLayer(layer)},getFilter:function(layer){return util.clone(this.getReferentLayer(layer).filter)},setLayoutProperty:function(layerId,name,value){this._checkLoaded();var layer=this.getReferentLayer(layerId);if(util.deepEqual(layer.getLayoutProperty(name),value))return this;layer.setLayoutProperty(name,value);return this._updateLayer(layer)},getLayoutProperty:function(layer,name){return this.getReferentLayer(layer).getLayoutProperty(name)},setPaintProperty:function(layerId,name,value,klass){this._checkLoaded();var layer=this.getLayer(layerId);if(util.deepEqual(layer.getPaintProperty(name,klass),value))return this;var wasFeatureConstant=layer.isPaintValueFeatureConstant(name);layer.setPaintProperty(name,value,klass);var isFeatureConstant=!(value&&StyleFunction.isFunctionDefinition(value)&&value.property!=="$zoom"&&value.property!==undefined);if(!isFeatureConstant||!wasFeatureConstant){this._updates.layers[layerId]=true;if(layer.source){this._updates.sources[layer.source]=true}}return this.updateClasses(layerId,name)},getPaintProperty:function(layer,name,klass){return this.getLayer(layer).getPaintProperty(name,klass)},updateClasses:function(layerId,paintName){this._updates.changed=true;if(!layerId){this._updates.allPaintProps=true}else{var props=this._updates.paintProps;if(!props[layerId])props[layerId]={};props[layerId][paintName||"all"]=true}return this},serialize:function(){return util.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:util.mapObject(this.sourceCaches,function(source){return source.serialize()}),layers:this._order.map(function(id){return this._layers[id].serialize()},this)},function(value){return value!==undefined})},_updateLayer:function(layer){this._updates.layers[layer.id]=true;if(layer.source){this._updates.sources[layer.source]=true}this._updates.changed=true;return this},_flattenRenderedFeatures:function(sourceResults){var features=[];for(var l=this._order.length-1;l>=0;l--){var layerID=this._order[l];for(var s=0;szh.lastIntegerZoom){mix=fraction+(1-fraction)*t;fromScale*=2;from=calculate({zoom:z-1},featureProperties);to=calculate({zoom:z},featureProperties)}else{mix=1-(1-t)*fraction;to=calculate({zoom:z},featureProperties);from=calculate({zoom:z+1},featureProperties);fromScale/=2}if(from===undefined||to===undefined){return undefined}else{return{from:from,fromScale:fromScale,to:to,toScale:toScale,t:mix}}}}},{"../util/util":137,"./parse_color":70,"./style_function":73}],73:[function(require,module,exports){"use strict";var MapboxGLFunction=require("mapbox-gl-function");exports.interpolated=function(parameters,specDefault){var inner=MapboxGLFunction.interpolated(parameters,specDefault);var outer=function(globalProperties,featureProperties){return inner(globalProperties&&globalProperties.zoom,featureProperties||{})};outer.isFeatureConstant=inner.isFeatureConstant;outer.isZoomConstant=inner.isZoomConstant;return outer};exports["piecewise-constant"]=function(parameters,specDefault){var inner=MapboxGLFunction["piecewise-constant"](parameters,specDefault);var outer=function(globalProperties,featureProperties){return inner(globalProperties&&globalProperties.zoom,featureProperties||{})};outer.isFeatureConstant=inner.isFeatureConstant;outer.isZoomConstant=inner.isZoomConstant;return outer};exports.isFunctionDefinition=MapboxGLFunction.isFunctionDefinition},{"mapbox-gl-function":166}],74:[function(require,module,exports){"use strict";var util=require("../util/util");var StyleTransition=require("./style_transition");var StyleDeclaration=require("./style_declaration");var styleSpec=require("./style_spec");var validateStyle=require("./validate_style");var parseColor=require("./parse_color");var Evented=require("../util/evented");module.exports=StyleLayer;var TRANSITION_SUFFIX="-transition";function StyleLayer(layer,refLayer){this.set(layer,refLayer)}StyleLayer.prototype=util.inherit(Evented,{set:function(layer,refLayer){this.id=layer.id;this.ref=layer.ref;this.metadata=layer.metadata;this.type=(refLayer||layer).type;this.source=(refLayer||layer).source;this.sourceLayer=(refLayer||layer)["source-layer"];this.minzoom=(refLayer||layer).minzoom;this.maxzoom=(refLayer||layer).maxzoom;this.filter=(refLayer||layer).filter;this.paint={};this.layout={};this._paintSpecifications=styleSpec["paint_"+this.type];this._layoutSpecifications=styleSpec["layout_"+this.type];this._paintTransitions={};this._paintTransitionOptions={};this._paintDeclarations={};this._layoutDeclarations={};this._layoutFunctions={};var paintName,layoutName;var options={validate:false};for(var key in layer){var match=key.match(/^paint(?:\.(.*))?$/);if(match){var klass=match[1]||"";for(paintName in layer[key]){this.setPaintProperty(paintName,layer[key][paintName],klass,options)}}}if(this.ref){this._layoutDeclarations=refLayer._layoutDeclarations}else{for(layoutName in layer.layout){this.setLayoutProperty(layoutName,layer.layout[layoutName],options)}}for(paintName in this._paintSpecifications){this.paint[paintName]=this.getPaintValue(paintName)}for(layoutName in this._layoutSpecifications){this._updateLayoutValue(layoutName)}},setLayoutProperty:function(name,value,options){if(value==null){delete this._layoutDeclarations[name]}else{var key="layers."+this.id+".layout."+name;if(this._validate(validateStyle.layoutProperty,key,name,value,options))return;this._layoutDeclarations[name]=new StyleDeclaration(this._layoutSpecifications[name],value)}this._updateLayoutValue(name)},getLayoutProperty:function(name){return this._layoutDeclarations[name]&&this._layoutDeclarations[name].value},getLayoutValue:function(name,globalProperties,featureProperties){var specification=this._layoutSpecifications[name];var declaration=this._layoutDeclarations[name];if(declaration){return declaration.calculate(globalProperties,featureProperties)}else{return specification.default}},setPaintProperty:function(name,value,klass,options){var validateStyleKey="layers."+this.id+(klass?'["paint.'+klass+'"].':".paint.")+name;if(util.endsWith(name,TRANSITION_SUFFIX)){if(!this._paintTransitionOptions[klass||""]){this._paintTransitionOptions[klass||""]={}}if(value===null||value===undefined){delete this._paintTransitionOptions[klass||""][name]}else{if(this._validate(validateStyle.paintProperty,validateStyleKey,name,value,options))return;this._paintTransitionOptions[klass||""][name]=value}}else{if(!this._paintDeclarations[klass||""]){this._paintDeclarations[klass||""]={}}if(value===null||value===undefined){delete this._paintDeclarations[klass||""][name]}else{if(this._validate(validateStyle.paintProperty,validateStyleKey,name,value,options))return;this._paintDeclarations[klass||""][name]=new StyleDeclaration(this._paintSpecifications[name],value)}}},getPaintProperty:function(name,klass){klass=klass||"";if(util.endsWith(name,TRANSITION_SUFFIX)){return this._paintTransitionOptions[klass]&&this._paintTransitionOptions[klass][name]}else{return this._paintDeclarations[klass]&&this._paintDeclarations[klass][name]&&this._paintDeclarations[klass][name].value}},getPaintValue:function(name,globalProperties,featureProperties){var specification=this._paintSpecifications[name];var transition=this._paintTransitions[name];if(transition){return transition.calculate(globalProperties,featureProperties)}else if(specification.type==="color"&&specification.default){return parseColor(specification.default)}else{return specification.default}},getPaintValueStopZoomLevels:function(name){var transition=this._paintTransitions[name];if(transition){return transition.declaration.stopZoomLevels}else{return[]}},getPaintInterpolationT:function(name,zoom){var transition=this._paintTransitions[name];return transition.declaration.calculateInterpolationT({zoom:zoom})},isPaintValueFeatureConstant:function(name){var transition=this._paintTransitions[name];if(transition){return transition.declaration.isFeatureConstant}else{return true}},isLayoutValueFeatureConstant:function(name){var declaration=this._layoutDeclarations[name];if(declaration){return declaration.isFeatureConstant}else{return true}},isPaintValueZoomConstant:function(name){var transition=this._paintTransitions[name];if(transition){return transition.declaration.isZoomConstant}else{return true}},isHidden:function(zoom){if(this.minzoom&&zoom=this.maxzoom)return true;if(this.layout["visibility"]==="none")return true;return false},updatePaintTransitions:function(classes,options,globalOptions,animationLoop){var declarations=util.extend({},this._paintDeclarations[""]);for(var i=0;i-labelLength/2){index--;if(index<0)return false;anchorDistance-=line[index].dist(p);p=line[index]}anchorDistance+=line[index].dist(line[index+1]);index++;var recentCorners=[];var recentAngleDelta=0;while(anchorDistancewindowSize){recentAngleDelta-=recentCorners.shift().angleDelta}if(recentAngleDelta>maxAngle)return false;index++;anchorDistance+=current.dist(next)}return true}},{}],86:[function(require,module,exports){"use strict";var Point=require("point-geometry");module.exports=clipLine;function clipLine(lines,x1,y1,x2,y2){var clippedLines=[];for(var l=0;l=x2&&p1.x>=x2){continue}else if(p0.x>=x2){p0=new Point(x2,p0.y+(p1.y-p0.y)*((x2-p0.x)/(p1.x-p0.x)))._round()}else if(p1.x>=x2){p1=new Point(x2,p0.y+(p1.y-p0.y)*((x2-p0.x)/(p1.x-p0.x)))._round()}if(p0.y>=y2&&p1.y>=y2){continue}else if(p0.y>=y2){p0=new Point(p0.x+(p1.x-p0.x)*((y2-p0.y)/(p1.y-p0.y)),y2)._round()}else if(p1.y>=y2){p1=new Point(p0.x+(p1.x-p0.x)*((y2-p0.y)/(p1.y-p0.y)),y2)._round()}if(!clippedLine||!p0.equals(clippedLine[clippedLine.length-1])){clippedLine=[p0];clippedLines.push(clippedLine)}clippedLine.push(p1)}}return clippedLines}},{"point-geometry":196}],87:[function(require,module,exports){"use strict";var StructArrayType=require("../util/struct_array");var util=require("../util/util");var Point=require("point-geometry");var CollisionBoxArray=module.exports=new StructArrayType({members:[{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Float32",name:"maxScale"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"},{type:"Int16",name:"bbox0"},{type:"Int16",name:"bbox1"},{type:"Int16",name:"bbox2"},{type:"Int16",name:"bbox3"},{type:"Float32",name:"placementScale"}]});util.extendAll(CollisionBoxArray.prototype.StructType.prototype,{get anchorPoint(){return new Point(this.anchorPointX,this.anchorPointY)}})},{"../util/struct_array":135,"../util/util":137,"point-geometry":196}],88:[function(require,module,exports){"use strict";module.exports=CollisionFeature;function CollisionFeature(collisionBoxArray,line,anchor,featureIndex,sourceLayerIndex,bucketIndex,shaped,boxScale,padding,alignLine,straight){var y1=shaped.top*boxScale-padding;var y2=shaped.bottom*boxScale+padding;var x1=shaped.left*boxScale-padding;var x2=shaped.right*boxScale+padding;this.boxStartIndex=collisionBoxArray.length;if(alignLine){var height=y2-y1;var length=x2-x1;if(height>0){height=Math.max(10*boxScale,height);if(straight){var vector=line[anchor.segment+1].sub(line[anchor.segment])._unit()._mult(length);var straightLine=[anchor.sub(vector),anchor.add(vector)];this._addLineCollisionBoxes(collisionBoxArray,straightLine,anchor,0,length,height,featureIndex,sourceLayerIndex,bucketIndex)}else{this._addLineCollisionBoxes(collisionBoxArray,line,anchor,anchor.segment,length,height,featureIndex,sourceLayerIndex,bucketIndex)}}}else{collisionBoxArray.emplaceBack(anchor.x,anchor.y,x1,y1,x2,y2,Infinity,featureIndex,sourceLayerIndex,bucketIndex,0,0,0,0,0)}this.boxEndIndex=collisionBoxArray.length}CollisionFeature.prototype._addLineCollisionBoxes=function(collisionBoxArray,line,anchor,segment,labelLength,boxSize,featureIndex,sourceLayerIndex,bucketIndex){var step=boxSize/2;var nBoxes=Math.floor(labelLength/step);var firstBoxOffset=-boxSize/2;var bboxes=this.boxes;var p=anchor;var index=segment+1;var anchorDistance=firstBoxOffset;do{index--;if(index<0)return bboxes;anchorDistance-=line[index].dist(p);p=line[index]}while(anchorDistance>-labelLength/2);var segmentLength=line[index].dist(line[index+1]);for(var i=0;i=line.length)return bboxes;segmentLength=line[index].dist(line[index+1])}var segmentBoxDistance=boxDistanceToAnchor-anchorDistance;var p0=line[index];var p1=line[index+1];var boxAnchorPoint=p1.sub(p0)._unit()._mult(segmentBoxDistance)._add(p0)._round();var distanceToInnerEdge=Math.max(Math.abs(boxDistanceToAnchor-firstBoxOffset)-step/2,0);var maxScale=labelLength/2/distanceToInnerEdge;collisionBoxArray.emplaceBack(boxAnchorPoint.x,boxAnchorPoint.y,-boxSize/2,-boxSize/2,boxSize/2,boxSize/2,maxScale,featureIndex,sourceLayerIndex,bucketIndex,0,0,0,0,0)}return bboxes}},{}],89:[function(require,module,exports){"use strict";var Point=require("point-geometry");var EXTENT=require("../data/bucket").EXTENT;var Grid=require("grid-index");module.exports=CollisionTile;function CollisionTile(angle,pitch,collisionBoxArray){if(typeof angle==="object"){var serialized=angle;collisionBoxArray=pitch;angle=serialized.angle;pitch=serialized.pitch;this.grid=new Grid(serialized.grid);this.ignoredGrid=new Grid(serialized.ignoredGrid)}else{this.grid=new Grid(EXTENT,12,6);this.ignoredGrid=new Grid(EXTENT,12,0)}this.angle=angle;this.pitch=pitch;var sin=Math.sin(angle),cos=Math.cos(angle);this.rotationMatrix=[cos,-sin,sin,cos];this.reverseRotationMatrix=[cos,sin,-sin,cos];this.yStretch=1/Math.cos(pitch/180*Math.PI);this.yStretch=Math.pow(this.yStretch,1.3);this.collisionBoxArray=collisionBoxArray;if(collisionBoxArray.length===0){collisionBoxArray.emplaceBack();var maxInt16=32767;collisionBoxArray.emplaceBack(0,0,0,-maxInt16,0,maxInt16,maxInt16,0,0,0,0,0,0,0,0,0);collisionBoxArray.emplaceBack(EXTENT,0,0,-maxInt16,0,maxInt16,maxInt16,0,0,0,0,0,0,0,0,0);collisionBoxArray.emplaceBack(0,0,-maxInt16,0,maxInt16,0,maxInt16,0,0,0,0,0,0,0,0,0);collisionBoxArray.emplaceBack(0,EXTENT,-maxInt16,0,maxInt16,0,maxInt16,0,0,0,0,0,0,0,0,0)}this.tempCollisionBox=collisionBoxArray.get(0);this.edges=[collisionBoxArray.get(1),collisionBoxArray.get(2),collisionBoxArray.get(3),collisionBoxArray.get(4)]}CollisionTile.prototype.serialize=function(){var data={angle:this.angle,pitch:this.pitch,grid:this.grid.toArrayBuffer(),ignoredGrid:this.ignoredGrid.toArrayBuffer()};return{data:data,transferables:[data.grid,data.ignoredGrid]}};CollisionTile.prototype.minScale=.25;CollisionTile.prototype.maxScale=2;CollisionTile.prototype.placeCollisionFeature=function(collisionFeature,allowOverlap,avoidEdges){var collisionBoxArray=this.collisionBoxArray;var minPlacementScale=this.minScale;var rotationMatrix=this.rotationMatrix;var yStretch=this.yStretch;for(var b=collisionFeature.boxStartIndex;b=this.maxScale){return minPlacementScale}}}if(avoidEdges){var rotatedCollisionBox;if(this.angle){var reverseRotationMatrix=this.reverseRotationMatrix;var tl=new Point(box.x1,box.y1).matMult(reverseRotationMatrix);var tr=new Point(box.x2,box.y1).matMult(reverseRotationMatrix);var bl=new Point(box.x1,box.y2).matMult(reverseRotationMatrix);var br=new Point(box.x2,box.y2).matMult(reverseRotationMatrix);rotatedCollisionBox=this.tempCollisionBox;rotatedCollisionBox.anchorPointX=box.anchorPoint.x;rotatedCollisionBox.anchorPointY=box.anchorPoint.y;rotatedCollisionBox.x1=Math.min(tl.x,tr.x,bl.x,br.x);rotatedCollisionBox.y1=Math.min(tl.y,tr.x,bl.x,br.x);rotatedCollisionBox.x2=Math.max(tl.x,tr.x,bl.x,br.x);rotatedCollisionBox.y2=Math.max(tl.y,tr.x,bl.x,br.x);rotatedCollisionBox.maxScale=box.maxScale}else{rotatedCollisionBox=box}for(var k=0;k=this.maxScale){return minPlacementScale}}}}return minPlacementScale};CollisionTile.prototype.queryRenderedSymbols=function(minX,minY,maxX,maxY,scale){var sourceLayerFeatures={};var result=[];var collisionBoxArray=this.collisionBoxArray;var rotationMatrix=this.rotationMatrix;var anchorPoint=new Point(minX,minY)._matMult(rotationMatrix);var queryBox=this.tempCollisionBox;queryBox.anchorX=anchorPoint.x;queryBox.anchorY=anchorPoint.y;queryBox.x1=0;queryBox.y1=0;queryBox.x2=maxX-minX;queryBox.y2=maxY-minY;queryBox.maxScale=scale;scale=queryBox.maxScale;var searchBox=[anchorPoint.x+queryBox.x1/scale,anchorPoint.y+queryBox.y1/scale*this.yStretch,anchorPoint.x+queryBox.x2/scale,anchorPoint.y+queryBox.y2/scale*this.yStretch];var blockingBoxKeys=this.grid.query(searchBox[0],searchBox[1],searchBox[2],searchBox[3]);var blockingBoxKeys2=this.ignoredGrid.query(searchBox[0],searchBox[1],searchBox[2],searchBox[3]);for(var k=0;k=scale){sourceLayerFeatures[sourceLayer][featureIndex]=true;result.push(blockingBoxKeys[i])}}}return result};CollisionTile.prototype.getPlacementScale=function(minPlacementScale,anchorPoint,box,blockingAnchorPoint,blocking){var anchorDiffX=anchorPoint.x-blockingAnchorPoint.x;var anchorDiffY=anchorPoint.y-blockingAnchorPoint.y;var s1=(blocking.x1-box.x2)/anchorDiffX;var s2=(blocking.x2-box.x1)/anchorDiffX;var s3=(blocking.y1-box.y2)*this.yStretch/anchorDiffY;var s4=(blocking.y2-box.y1)*this.yStretch/anchorDiffY;if(isNaN(s1)||isNaN(s2))s1=s2=1;if(isNaN(s3)||isNaN(s4))s3=s4=1;var collisionFreeScale=Math.min(Math.max(s1,s2),Math.max(s3,s4));var blockingMaxScale=blocking.maxScale;var boxMaxScale=box.maxScale;if(collisionFreeScale>blockingMaxScale){collisionFreeScale=blockingMaxScale}if(collisionFreeScale>boxMaxScale){collisionFreeScale=boxMaxScale}if(collisionFreeScale>minPlacementScale&&collisionFreeScale>=blocking.placementScale){minPlacementScale=collisionFreeScale}return minPlacementScale};CollisionTile.prototype.insertCollisionFeature=function(collisionFeature,minPlacementScale,ignorePlacement){var grid=ignorePlacement?this.ignoredGrid:this.grid;var collisionBoxArray=this.collisionBoxArray;for(var k=collisionFeature.boxStartIndex;k=0&&x=0&&y=0&&markedDistance+halfLabelLength<=lineLength){var anchor=new Anchor(x,y,angle,i)._round();if(!angleWindowSize||checkMaxAngle(line,anchor,labelLength,angleWindowSize,maxAngle)){anchors.push(anchor)}}}distance+=segmentDist}if(!placeAtMiddle&&!anchors.length&&!isLineContinued){anchors=resample(line,distance/2,spacing,angleWindowSize,maxAngle,labelLength,isLineContinued,true,tileExtent)}return anchors}},{"../symbol/anchor":84,"../util/interpolate":131,"./check_max_angle":85}],91:[function(require,module,exports){"use strict";var ShelfPack=require("shelf-pack");var util=require("../util/util");var SIZE_GROWTH_RATE=4;var DEFAULT_SIZE=128;var MAX_SIZE=2048;module.exports=GlyphAtlas;function GlyphAtlas(){this.width=DEFAULT_SIZE;this.height=DEFAULT_SIZE;this.bin=new ShelfPack(this.width,this.height);this.index={};this.ids={};this.data=new Uint8Array(this.width*this.height)}GlyphAtlas.prototype.getGlyphs=function(){var glyphs={},split,name,id;for(var key in this.ids){split=key.split("#");name=split[0];id=split[1];if(!glyphs[name])glyphs[name]=[];glyphs[name].push(id)}return glyphs};GlyphAtlas.prototype.getRects=function(){var rects={},split,name,id;for(var key in this.ids){split=key.split("#");name=split[0];id=split[1];if(!rects[name])rects[name]={};rects[name][id]=this.index[key]}return rects};GlyphAtlas.prototype.addGlyph=function(id,name,glyph,buffer){if(!glyph)return null;var key=name+"#"+glyph.id;if(this.index[key]){if(this.ids[key].indexOf(id)<0){this.ids[key].push(id)}return this.index[key]}if(!glyph.bitmap){return null}var bufferedWidth=glyph.width+buffer*2;var bufferedHeight=glyph.height+buffer*2;var padding=1;var packWidth=bufferedWidth+2*padding;var packHeight=bufferedHeight+2*padding;packWidth+=4-packWidth%4;packHeight+=4-packHeight%4;var rect=this.bin.packOne(packWidth,packHeight);if(!rect){this.resize();rect=this.bin.packOne(packWidth,packHeight)}if(!rect){util.warnOnce("glyph bitmap overflow");return null}this.index[key]=rect;this.ids[key]=[id];var target=this.data;var source=glyph.bitmap;for(var y=0;y=MAX_SIZE||prevHeight>=MAX_SIZE)return;if(this.texture){if(this.gl){this.gl.deleteTexture(this.texture)}this.texture=null}this.width*=SIZE_GROWTH_RATE;this.height*=SIZE_GROWTH_RATE;this.bin.resize(this.width,this.height);var buf=new ArrayBuffer(this.width*this.height);for(var i=0;i65535)return callback("glyphs > 65535 not supported");if(this.loading[fontstack]===undefined){this.loading[fontstack]={}}var loading=this.loading[fontstack];if(loading[range]){loading[range].push(callback)}else{loading[range]=[callback];var rangeName=range*256+"-"+(range*256+255);var url=glyphUrl(fontstack,rangeName,this.url);ajax.getArrayBuffer(url,function(err,data){var glyphs=!err&&new Glyphs(new Protobuf(data));for(var i=0;imaxWidth||positionedGlyphs[lastSafeBreak].codePoint===newLine)){var lineLength=positionedGlyphs[lastSafeBreak+1].x; maxLineLength=Math.max(lineLength,maxLineLength);for(var k=lastSafeBreak+1;k<=i;k++){positionedGlyphs[k].y+=lineHeight;positionedGlyphs[k].x-=lineLength}if(justify){var lineEnd=lastSafeBreak;if(invisible[positionedGlyphs[lastSafeBreak].codePoint]){lineEnd--}justifyLine(positionedGlyphs,glyphs,lineStartIndex,lineEnd,justify)}lineStartIndex=lastSafeBreak+1;lastSafeBreak=null;lengthBeforeCurrentLine+=lineLength;line++}if(breakable[positionedGlyph.codePoint]){lastSafeBreak=i}}}var lastPositionedGlyph=positionedGlyphs[positionedGlyphs.length-1];var lastLineLength=lastPositionedGlyph.x+glyphs[lastPositionedGlyph.codePoint].advance;maxLineLength=Math.max(maxLineLength,lastLineLength);var height=(line+1)*lineHeight;justifyLine(positionedGlyphs,glyphs,lineStartIndex,positionedGlyphs.length-1,justify);align(positionedGlyphs,justify,horizontalAlign,verticalAlign,maxLineLength,lineHeight,line,translate);shaping.top+=-verticalAlign*height;shaping.bottom=shaping.top+height;shaping.left+=-horizontalAlign*maxLineLength;shaping.right=shaping.left+maxLineLength}function justifyLine(positionedGlyphs,glyphs,start,end,justify){var lastAdvance=glyphs[positionedGlyphs[end].codePoint].advance;var lineIndent=(positionedGlyphs[end].x+lastAdvance)*justify;for(var j=start;j<=end;j++){positionedGlyphs[j].x-=lineIndent}}function align(positionedGlyphs,justify,horizontalAlign,verticalAlign,maxLineLength,lineHeight,line,translate){var shiftX=(justify-horizontalAlign)*maxLineLength+translate[0];var shiftY=(-verticalAlign*(line+1)+.5)*lineHeight+translate[1];for(var j=0;j1?2:1;if(this.canvas){this.canvas.width=this.width*this.pixelRatio;this.canvas.height=this.height*this.pixelRatio}}this.sprite=sprite};SpriteAtlas.prototype.addIcons=function(icons,callback){for(var i=0;i1)return;if(!tapped){tapped=setTimeout(onTouchTimeout,300)}else{clearTimeout(tapped);tapped=null;fireMouseEvent("dblclick",e)}}function onTouchMove(e){fireTouchEvent("touchmove",e)}function onTouchEnd(e){fireTouchEvent("touchend",e)}function onTouchCancel(e){fireTouchEvent("touchcancel",e)}function onTouchTimeout(){tapped=null}function onClick(e){var pos=DOM.mousePos(el,e);if(pos.equals(startPos)){fireMouseEvent("click",e)}}function onDblClick(e){fireMouseEvent("dblclick",e);e.preventDefault()}function onContextMenu(e){contextMenuEvent=e;e.preventDefault()}function fireMouseEvent(type,e){var pos=DOM.mousePos(el,e);return map.fire(type,{lngLat:map.unproject(pos),point:pos,originalEvent:e})}function fireTouchEvent(type,e){var touches=DOM.touchPos(el,e);var singular=touches.reduce(function(prev,curr,i,arr){return prev.add(curr.div(arr.length))},new Point(0,0));return map.fire(type,{lngLat:map.unproject(singular),point:singular,lngLats:touches.map(function(t){return map.unproject(t)},this),points:touches,originalEvent:e})}}},{"../util/dom":127,"./handler/box_zoom":107,"./handler/dblclick_zoom":108,"./handler/drag_pan":109,"./handler/drag_rotate":110,"./handler/keyboard":111,"./handler/scroll_zoom":112,"./handler/touch_zoom_rotate":113,"point-geometry":196}],101:[function(require,module,exports){"use strict";var util=require("../util/util");var interpolate=require("../util/interpolate");var browser=require("../util/browser");var LngLat=require("../geo/lng_lat");var LngLatBounds=require("../geo/lng_lat_bounds");var Point=require("point-geometry");var Camera=module.exports=function(){};util.extend(Camera.prototype,{getCenter:function(){return this.transform.center},setCenter:function(center,eventData){this.jumpTo({center:center},eventData);return this},panBy:function(offset,options,eventData){this.panTo(this.transform.center,util.extend({offset:Point.convert(offset).mult(-1)},options),eventData);return this},panTo:function(lnglat,options,eventData){return this.easeTo(util.extend({center:lnglat},options),eventData)},getZoom:function(){return this.transform.zoom},setZoom:function(zoom,eventData){this.jumpTo({zoom:zoom},eventData);return this},zoomTo:function(zoom,options,eventData){return this.easeTo(util.extend({zoom:zoom},options),eventData)},zoomIn:function(options,eventData){this.zoomTo(this.getZoom()+1,options,eventData);return this},zoomOut:function(options,eventData){this.zoomTo(this.getZoom()-1,options,eventData);return this},getBearing:function(){return this.transform.bearing},setBearing:function(bearing,eventData){this.jumpTo({bearing:bearing},eventData);return this},rotateTo:function(bearing,options,eventData){return this.easeTo(util.extend({bearing:bearing},options),eventData)},resetNorth:function(options,eventData){this.rotateTo(0,util.extend({duration:1e3},options),eventData);return this},snapToNorth:function(options,eventData){if(Math.abs(this.getBearing())180){if(tr.center.lng>0&¢er.lng<0){center.lng+=360}else if(tr.center.lng<0&¢er.lng>0){center.lng-=360}}var scale=tr.zoomScale(zoom-startZoom),from=tr.point,to="center"in options?tr.project(center).sub(offset.div(scale)):from;var startWorldSize=tr.worldSize,rho=options.curve,w0=Math.max(tr.width,tr.height),w1=w0/scale,u1=to.sub(from).mag();if("minZoom"in options){var minZoom=util.clamp(Math.min(options.minZoom,startZoom,zoom),tr.minZoom,tr.maxZoom);var wMax=w0/tr.zoomScale(minZoom-startZoom);rho=Math.sqrt(wMax/u1*2)}var rho2=rho*rho;function r(i){var b=(w1*w1-w0*w0+(i?-1:1)*rho2*rho2*u1*u1)/(2*(i?w1:w0)*rho2*u1);return Math.log(Math.sqrt(b*b+1)-b)}function sinh(n){return(Math.exp(n)-Math.exp(-n))/2}function cosh(n){return(Math.exp(n)+Math.exp(-n))/2}function tanh(n){return sinh(n)/cosh(n)}var r0=r(0),w=function(s){return cosh(r0)/cosh(r0+rho*s)},u=function(s){return w0*((cosh(r0)*tanh(r0+rho*s)-sinh(r0))/rho2)/u1},S=(r(1)-r0)/rho;if(Math.abs(u1)<1e-6){if(Math.abs(w0-w1)<1e-6)return this.easeTo(options);var k=w1=0){return false}}return true});this._container.innerHTML=attributions.join(" | ");this._editLink=null},_updateEditLink:function(){if(!this._editLink)this._editLink=this._container.querySelector(".mapbox-improve-map");if(this._editLink){var center=this._map.getCenter();this._editLink.href="https://www.mapbox.com/map-feedback/#/"+center.lng+"/"+center.lat+"/"+Math.round(this._map.getZoom()+1)}}})},{"../../util/dom":127,"../../util/util":137,"./control":103}],103:[function(require,module,exports){"use strict";var util=require("../../util/util");var Evented=require("../../util/evented");module.exports=Control;function Control(){}Control.prototype={addTo:function(map){this._map=map;var container=this._container=this.onAdd(map);if(this.options&&this.options.position){var pos=this.options.position;var corner=map._controlCorners[pos];container.className+=" mapboxgl-ctrl";if(pos.indexOf("bottom")!==-1){corner.insertBefore(container,corner.firstChild)}else{corner.appendChild(container)}}return this},remove:function(){this._container.parentNode.removeChild(this._container);if(this.onRemove)this.onRemove(this._map);this._map=null;return this}};util.extend(Control.prototype,Evented)},{"../../util/evented":128,"../../util/util":137}],104:[function(require,module,exports){"use strict";var Control=require("./control");var browser=require("../../util/browser");var DOM=require("../../util/dom");var util=require("../../util/util");var window=require("../../util/window");module.exports=GeolocateControl;var geoOptions={enableHighAccuracy:false,timeout:6e3};function GeolocateControl(options){util.setOptions(this,options)}GeolocateControl.prototype=util.inherit(Control,{options:{position:"top-right"},onAdd:function(map){var className="mapboxgl-ctrl";var container=this._container=DOM.create("div",className+"-group",map.getContainer());if(!browser.supportsGeolocation)return container;this._container.addEventListener("contextmenu",this._onContextMenu.bind(this));this._geolocateButton=DOM.create("button",className+"-icon "+className+"-geolocate",this._container);this._geolocateButton.type="button";this._geolocateButton.addEventListener("click",this._onClickGeolocate.bind(this));return container},_onContextMenu:function(e){e.preventDefault()},_onClickGeolocate:function(){window.navigator.geolocation.getCurrentPosition(this._success.bind(this),this._error.bind(this),geoOptions);this._timeoutId=setTimeout(this._finish.bind(this),1e4)},_success:function(position){this._map.jumpTo({center:[position.coords.longitude,position.coords.latitude],zoom:17,bearing:0,pitch:0});this.fire("geolocate",position);this._finish()},_error:function(error){this.fire("error",error);this._finish()},_finish:function(){if(this._timeoutId){clearTimeout(this._timeoutId)}this._timeoutId=undefined}})},{"../../util/browser":120,"../../util/dom":127,"../../util/util":137,"../../util/window":122,"./control":103}],105:[function(require,module,exports){"use strict";var Control=require("./control");var DOM=require("../../util/dom");var util=require("../../util/util");var window=require("../../util/window");module.exports=NavigationControl;function NavigationControl(options){util.setOptions(this,options)}NavigationControl.prototype=util.inherit(Control,{options:{position:"top-right"},onAdd:function(map){var className="mapboxgl-ctrl";var container=this._container=DOM.create("div",className+"-group",map.getContainer());this._container.addEventListener("contextmenu",this._onContextMenu.bind(this));this._zoomInButton=this._createButton(className+"-icon "+className+"-zoom-in",map.zoomIn.bind(map));this._zoomOutButton=this._createButton(className+"-icon "+className+"-zoom-out",map.zoomOut.bind(map));this._compass=this._createButton(className+"-icon "+className+"-compass",map.resetNorth.bind(map));this._compassArrow=DOM.create("span","arrow",this._compass);this._compass.addEventListener("mousedown",this._onCompassDown.bind(this));this._onCompassMove=this._onCompassMove.bind(this);this._onCompassUp=this._onCompassUp.bind(this);map.on("rotate",this._rotateCompassArrow.bind(this));this._rotateCompassArrow();this._el=map.getCanvasContainer();return container},_onContextMenu:function(e){e.preventDefault()},_onCompassDown:function(e){if(e.button!==0)return;DOM.disableDrag();window.document.addEventListener("mousemove",this._onCompassMove);window.document.addEventListener("mouseup",this._onCompassUp);this._el.dispatchEvent(copyMouseEvent(e));e.stopPropagation()},_onCompassMove:function(e){if(e.button!==0)return;this._el.dispatchEvent(copyMouseEvent(e));e.stopPropagation()},_onCompassUp:function(e){if(e.button!==0)return;window.document.removeEventListener("mousemove",this._onCompassMove);window.document.removeEventListener("mouseup",this._onCompassUp);DOM.enableDrag();this._el.dispatchEvent(copyMouseEvent(e));e.stopPropagation()},_createButton:function(className,fn){var a=DOM.create("button",className,this._container);a.type="button";a.addEventListener("click",function(){fn()});return a},_rotateCompassArrow:function(){var rotate="rotate("+this._map.transform.angle*(180/Math.PI)+"deg)";this._compassArrow.style.transform=rotate}});function copyMouseEvent(e){return new window.MouseEvent(e.type,{button:2,buttons:2,bubbles:true,cancelable:true,detail:e.detail,view:e.view,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,movementX:e.movementX,movementY:e.movementY,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey})}},{"../../util/dom":127,"../../util/util":137,"../../util/window":122,"./control":103}],106:[function(require,module,exports){"use strict";var util=require("../../util/util");var Control=require("./control");var DOM=require("../../util/dom");module.exports=ScaleControl;function ScaleControl(options){util.setOptions(this,options)}ScaleControl.prototype=util.inherit(Control,{options:{position:"bottom-left"},onAdd:function(map){var className="mapboxgl-ctrl-scale",container=this._container=DOM.create("div",className,map.getContainer()),options=this.options;updateScale(map,container,options);map.on("move",function(){updateScale(map,container,options)});return container}});function updateScale(map,scale,options){var maxWidth=options&&options.maxWidth||100;var y=map._container.clientHeight/2;var maxMeters=getDistance(map.unproject([0,y]),map.unproject([maxWidth,y]));if(options&&options.unit==="imperial"){var maxFeet=3.2808*maxMeters;if(maxFeet>5280){var maxMiles=maxFeet/5280;setScale(scale,maxWidth,maxMiles,"mi")}else{setScale(scale,maxWidth,maxFeet,"ft")}}else{setScale(scale,maxWidth,maxMeters,"m")}}function setScale(scale,maxWidth,maxDistance,unit){var distance=getRoundNum(maxDistance);var ratio=distance/maxDistance;if(unit==="m"&&distance>=1e3){distance=distance/1e3;unit="km"}scale.style.width=maxWidth*ratio+"px";scale.innerHTML=distance+unit}function getDistance(latlng1,latlng2){var R=6371e3;var rad=Math.PI/180,lat1=latlng1.lat*rad,lat2=latlng2.lat*rad,a=Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos((latlng2.lng-latlng1.lng)*rad);var maxMeters=R*Math.acos(Math.min(a,1));return maxMeters}function getRoundNum(num){var pow10=Math.pow(10,(Math.floor(num)+"").length-1),d=num/pow10;d=d>=10?10:d>=5?5:d>=3?3:d>=2?2:1;return pow10*d}},{"../../util/dom":127,"../../util/util":137,"./control":103}],107:[function(require,module,exports){"use strict";var DOM=require("../../util/dom");var LngLatBounds=require("../../geo/lng_lat_bounds");var util=require("../../util/util");var window=require("../../util/window");module.exports=BoxZoomHandler;function BoxZoomHandler(map){this._map=map;this._el=map.getCanvasContainer();this._container=map.getContainer();util.bindHandlers(this)}BoxZoomHandler.prototype={_enabled:false,_active:false,isEnabled:function(){return this._enabled},isActive:function(){return this._active},enable:function(){if(this.isEnabled())return;this._el.addEventListener("mousedown",this._onMouseDown,false);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._el.removeEventListener("mousedown",this._onMouseDown);this._enabled=false},_onMouseDown:function(e){if(!(e.shiftKey&&e.button===0))return;window.document.addEventListener("mousemove",this._onMouseMove,false);window.document.addEventListener("keydown",this._onKeyDown,false);window.document.addEventListener("mouseup",this._onMouseUp,false);DOM.disableDrag();this._startPos=DOM.mousePos(this._el,e);this._active=true},_onMouseMove:function(e){var p0=this._startPos,p1=DOM.mousePos(this._el,e);if(!this._box){this._box=DOM.create("div","mapboxgl-boxzoom",this._container);this._container.classList.add("mapboxgl-crosshair");this._fireEvent("boxzoomstart",e)}var minX=Math.min(p0.x,p1.x),maxX=Math.max(p0.x,p1.x),minY=Math.min(p0.y,p1.y),maxY=Math.max(p0.y,p1.y);DOM.setTransform(this._box,"translate("+minX+"px,"+minY+"px)");this._box.style.width=maxX-minX+"px";this._box.style.height=maxY-minY+"px"},_onMouseUp:function(e){if(e.button!==0)return;var p0=this._startPos,p1=DOM.mousePos(this._el,e),bounds=(new LngLatBounds).extend(this._map.unproject(p0)).extend(this._map.unproject(p1));this._finish();if(p0.x===p1.x&&p0.y===p1.y){this._fireEvent("boxzoomcancel",e)}else{this._map.fitBounds(bounds,{linear:true}).fire("boxzoomend",{originalEvent:e,boxZoomBounds:bounds})}},_onKeyDown:function(e){if(e.keyCode===27){this._finish();this._fireEvent("boxzoomcancel",e)}},_finish:function(){this._active=false;window.document.removeEventListener("mousemove",this._onMouseMove,false);window.document.removeEventListener("keydown",this._onKeyDown,false);window.document.removeEventListener("mouseup",this._onMouseUp,false);this._container.classList.remove("mapboxgl-crosshair");if(this._box){this._box.parentNode.removeChild(this._box);this._box=null}DOM.enableDrag()},_fireEvent:function(type,e){return this._map.fire(type,{originalEvent:e })}}},{"../../geo/lng_lat_bounds":29,"../../util/dom":127,"../../util/util":137,"../../util/window":122}],108:[function(require,module,exports){"use strict";module.exports=DoubleClickZoomHandler;function DoubleClickZoomHandler(map){this._map=map;this._onDblClick=this._onDblClick.bind(this)}DoubleClickZoomHandler.prototype={_enabled:false,isEnabled:function(){return this._enabled},enable:function(){if(this.isEnabled())return;this._map.on("dblclick",this._onDblClick);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._map.off("dblclick",this._onDblClick);this._enabled=false},_onDblClick:function(e){this._map.zoomTo(this._map.getZoom()+(e.originalEvent.shiftKey?-1:1),{around:e.lngLat},e)}}},{}],109:[function(require,module,exports){"use strict";var DOM=require("../../util/dom");var util=require("../../util/util");var window=require("../../util/window");module.exports=DragPanHandler;var inertiaLinearity=.3,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=1400,inertiaDeceleration=2500;function DragPanHandler(map){this._map=map;this._el=map.getCanvasContainer();util.bindHandlers(this)}DragPanHandler.prototype={_enabled:false,_active:false,isEnabled:function(){return this._enabled},isActive:function(){return this._active},enable:function(){if(this.isEnabled())return;this._el.addEventListener("mousedown",this._onDown);this._el.addEventListener("touchstart",this._onDown);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._el.removeEventListener("mousedown",this._onDown);this._el.removeEventListener("touchstart",this._onDown);this._enabled=false},_onDown:function(e){if(this._ignoreEvent(e))return;if(this.isActive())return;if(e.touches){window.document.addEventListener("touchmove",this._onMove);window.document.addEventListener("touchend",this._onTouchEnd)}else{window.document.addEventListener("mousemove",this._onMove);window.document.addEventListener("mouseup",this._onMouseUp)}this._active=false;this._startPos=this._pos=DOM.mousePos(this._el,e);this._inertia=[[Date.now(),this._pos]]},_onMove:function(e){if(this._ignoreEvent(e))return;if(!this.isActive()){this._active=true;this._fireEvent("dragstart",e);this._fireEvent("movestart",e)}var pos=DOM.mousePos(this._el,e),map=this._map;map.stop();this._drainInertiaBuffer();this._inertia.push([Date.now(),pos]);map.transform.setLocationAtPoint(map.transform.pointLocation(this._pos),pos);this._fireEvent("drag",e);this._fireEvent("move",e);this._pos=pos;e.preventDefault()},_onUp:function(e){if(!this.isActive())return;this._active=false;this._fireEvent("dragend",e);this._drainInertiaBuffer();var finish=function(){this._fireEvent("moveend",e)}.bind(this);var inertia=this._inertia;if(inertia.length<2){finish();return}var last=inertia[inertia.length-1],first=inertia[0],flingOffset=last[1].sub(first[1]),flingDuration=(last[0]-first[0])/1e3;if(flingDuration===0||last[1].equals(first[1])){finish();return}var velocity=flingOffset.mult(inertiaLinearity/flingDuration),speed=velocity.mag();if(speed>inertiaMaxSpeed){speed=inertiaMaxSpeed;velocity._unit()._mult(speed)}var duration=speed/(inertiaDeceleration*inertiaLinearity),offset=velocity.mult(-duration/2);this._map.panBy(offset,{duration:duration*1e3,easing:inertiaEasing,noMoveStart:true},{originalEvent:e})},_onMouseUp:function(e){if(this._ignoreEvent(e))return;this._onUp(e);window.document.removeEventListener("mousemove",this._onMove);window.document.removeEventListener("mouseup",this._onMouseUp)},_onTouchEnd:function(e){if(this._ignoreEvent(e))return;this._onUp(e);window.document.removeEventListener("touchmove",this._onMove);window.document.removeEventListener("touchend",this._onTouchEnd)},_fireEvent:function(type,e){return this._map.fire(type,{originalEvent:e})},_ignoreEvent:function(e){var map=this._map;if(map.boxZoom&&map.boxZoom.isActive())return true;if(map.dragRotate&&map.dragRotate.isActive())return true;if(e.touches){return e.touches.length>1}else{if(e.ctrlKey)return true;var buttons=1,button=0;return e.type==="mousemove"?e.buttons&buttons===0:e.button!==button}},_drainInertiaBuffer:function(){var inertia=this._inertia,now=Date.now(),cutoff=160;while(inertia.length>0&&now-inertia[0][0]>cutoff)inertia.shift()}}},{"../../util/dom":127,"../../util/util":137,"../../util/window":122}],110:[function(require,module,exports){"use strict";var DOM=require("../../util/dom");var util=require("../../util/util");var window=require("../../util/window");module.exports=DragRotateHandler;var inertiaLinearity=.25,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaMaxSpeed=180,inertiaDeceleration=720;function DragRotateHandler(map,options){this._map=map;this._el=map.getCanvasContainer();this._bearingSnap=options.bearingSnap;this._pitchWithRotate=options.pitchWithRotate!==false;util.bindHandlers(this)}DragRotateHandler.prototype={_enabled:false,_active:false,isEnabled:function(){return this._enabled},isActive:function(){return this._active},enable:function(){if(this.isEnabled())return;this._el.addEventListener("mousedown",this._onDown);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._el.removeEventListener("mousedown",this._onDown);this._enabled=false},_onDown:function(e){if(this._ignoreEvent(e))return;if(this.isActive())return;window.document.addEventListener("mousemove",this._onMove);window.document.addEventListener("mouseup",this._onUp);this._active=false;this._inertia=[[Date.now(),this._map.getBearing()]];this._startPos=this._pos=DOM.mousePos(this._el,e);this._center=this._map.transform.centerPoint;e.preventDefault()},_onMove:function(e){if(this._ignoreEvent(e))return;if(!this.isActive()){this._active=true;this._fireEvent("rotatestart",e);this._fireEvent("movestart",e)}var map=this._map;map.stop();var p1=this._pos,p2=DOM.mousePos(this._el,e),bearingDiff=(p1.x-p2.x)*.8,pitchDiff=(p1.y-p2.y)*-.5,bearing=map.getBearing()-bearingDiff,pitch=map.getPitch()-pitchDiff,inertia=this._inertia,last=inertia[inertia.length-1];this._drainInertiaBuffer();inertia.push([Date.now(),map._normalizeBearing(bearing,last[1])]);map.transform.bearing=bearing;if(this._pitchWithRotate)map.transform.pitch=pitch;this._fireEvent("rotate",e);this._fireEvent("move",e);this._pos=p2},_onUp:function(e){if(this._ignoreEvent(e))return;window.document.removeEventListener("mousemove",this._onMove);window.document.removeEventListener("mouseup",this._onUp);if(!this.isActive())return;this._active=false;this._fireEvent("rotateend",e);this._drainInertiaBuffer();var map=this._map,mapBearing=map.getBearing(),inertia=this._inertia;var finish=function(){if(Math.abs(mapBearing)inertiaMaxSpeed){speed=inertiaMaxSpeed}var duration=speed/(inertiaDeceleration*inertiaLinearity),offset=sign*speed*(duration/2);bearing+=offset;if(Math.abs(map._normalizeBearing(bearing,0))1}else{var buttons=e.ctrlKey?1:2,button=e.ctrlKey?0:2;return e.type==="mousemove"?e.buttons&buttons===0:e.button!==button}},_drainInertiaBuffer:function(){var inertia=this._inertia,now=Date.now(),cutoff=160;while(inertia.length>0&&now-inertia[0][0]>cutoff)inertia.shift()}}},{"../../util/dom":127,"../../util/util":137,"../../util/window":122}],111:[function(require,module,exports){"use strict";module.exports=KeyboardHandler;var panStep=100,bearingStep=15,pitchStep=10;function KeyboardHandler(map){this._map=map;this._el=map.getCanvasContainer();this._onKeyDown=this._onKeyDown.bind(this)}function easeOut(t){return t*(2-t)}KeyboardHandler.prototype={_enabled:false,isEnabled:function(){return this._enabled},enable:function(){if(this.isEnabled())return;this._el.addEventListener("keydown",this._onKeyDown,false);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._el.removeEventListener("keydown",this._onKeyDown);this._enabled=false},_onKeyDown:function(e){if(e.altKey||e.ctrlKey||e.metaKey)return;var zoomDir=0;var bearingDir=0;var pitchDir=0;var xDir=0;var yDir=0;switch(e.keyCode){case 61:case 107:case 171:case 187:zoomDir=1;break;case 189:case 109:case 173:zoomDir=-1;break;case 37:if(e.shiftKey){bearingDir=-1}else{e.preventDefault();xDir=-1}break;case 39:if(e.shiftKey){bearingDir=1}else{e.preventDefault();xDir=1}break;case 38:if(e.shiftKey){pitchDir=1}else{e.preventDefault();yDir=-1}break;case 40:if(e.shiftKey){pitchDir=-1}else{yDir=1;e.preventDefault()}break}var map=this._map;var zoom=map.getZoom();var easeOptions={duration:300,delayEndEvents:500,easing:easeOut,zoom:zoomDir?Math.round(zoom)+zoomDir*(e.shiftKey?2:1):zoom,bearing:map.getBearing()+bearingDir*bearingStep,pitch:map.getPitch()+pitchDir*pitchStep,offset:[-xDir*panStep,-yDir*panStep],center:map.getCenter()};map.easeTo(easeOptions,{originalEvent:e})}}},{}],112:[function(require,module,exports){"use strict";var DOM=require("../../util/dom");var util=require("../../util/util");var browser=require("../../util/browser");var window=require("../../util/window");module.exports=ScrollZoomHandler;var ua=window.navigator.userAgent.toLowerCase(),firefox=ua.indexOf("firefox")!==-1,safari=ua.indexOf("safari")!==-1&&ua.indexOf("chrom")===-1;function ScrollZoomHandler(map){this._map=map;this._el=map.getCanvasContainer();util.bindHandlers(this)}ScrollZoomHandler.prototype={_enabled:false,isEnabled:function(){return this._enabled},enable:function(){if(this.isEnabled())return;this._el.addEventListener("wheel",this._onWheel,false);this._el.addEventListener("mousewheel",this._onWheel,false);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._el.removeEventListener("wheel",this._onWheel);this._el.removeEventListener("mousewheel",this._onWheel);this._enabled=false},_onWheel:function(e){var value;if(e.type==="wheel"){value=e.deltaY;if(firefox&&e.deltaMode===window.WheelEvent.DOM_DELTA_PIXEL)value/=browser.devicePixelRatio;if(e.deltaMode===window.WheelEvent.DOM_DELTA_LINE)value*=40}else if(e.type==="mousewheel"){value=-e.wheelDeltaY;if(safari)value=value/3}var now=browser.now(),timeDelta=now-(this._time||0);this._pos=DOM.mousePos(this._el,e);this._time=now;if(value!==0&&value%4.000244140625===0){this._type="wheel"}else if(value!==0&&Math.abs(value)<4){this._type="trackpad"}else if(timeDelta>400){this._type=null;this._lastValue=value;this._timeout=setTimeout(this._onTimeout,40)}else if(!this._type){this._type=Math.abs(timeDelta*value)<200?"trackpad":"wheel";if(this._timeout){clearTimeout(this._timeout);this._timeout=null;value+=this._lastValue}}if(e.shiftKey&&value)value=value/4;if(this._type)this._zoom(-value,e);e.preventDefault()},_onTimeout:function(){this._type="wheel";this._zoom(-this._lastValue)},_zoom:function(delta,e){if(delta===0)return;var map=this._map;var scale=2/(1+Math.exp(-Math.abs(delta/100)));if(delta<0&&scale!==0)scale=1/scale;var fromScale=map.ease?map.ease.to:map.transform.scale,targetZoom=map.transform.scaleZoom(fromScale*scale);map.zoomTo(targetZoom,{duration:this._type==="wheel"?200:0,around:map.unproject(this._pos),delayEndEvents:200,smoothEasing:true},{originalEvent:e})}}},{"../../util/browser":120,"../../util/dom":127,"../../util/util":137,"../../util/window":122}],113:[function(require,module,exports){"use strict";var DOM=require("../../util/dom");var util=require("../../util/util");var window=require("../../util/window");module.exports=TouchZoomRotateHandler;var inertiaLinearity=.15,inertiaEasing=util.bezier(0,0,inertiaLinearity,1),inertiaDeceleration=12,inertiaMaxSpeed=2.5,significantScaleThreshold=.15,significantRotateThreshold=4;function TouchZoomRotateHandler(map){this._map=map;this._el=map.getCanvasContainer();util.bindHandlers(this)}TouchZoomRotateHandler.prototype={_enabled:false,isEnabled:function(){return this._enabled},enable:function(){if(this.isEnabled())return;this._el.addEventListener("touchstart",this._onStart,false);this._enabled=true},disable:function(){if(!this.isEnabled())return;this._el.removeEventListener("touchstart",this._onStart);this._enabled=false},disableRotation:function(){this._rotationDisabled=true},enableRotation:function(){this._rotationDisabled=false},_onStart:function(e){if(e.touches.length!==2)return;var p0=DOM.mousePos(this._el,e.touches[0]),p1=DOM.mousePos(this._el,e.touches[1]);this._startVec=p0.sub(p1);this._startScale=this._map.transform.scale;this._startBearing=this._map.transform.bearing;this._gestureIntent=undefined;this._inertia=[];window.document.addEventListener("touchmove",this._onMove,false);window.document.addEventListener("touchend",this._onEnd,false)},_onMove:function(e){if(e.touches.length!==2)return;var p0=DOM.mousePos(this._el,e.touches[0]),p1=DOM.mousePos(this._el,e.touches[1]),p=p0.add(p1).div(2),vec=p0.sub(p1),scale=vec.mag()/this._startVec.mag(),bearing=this._rotationDisabled?0:vec.angleWith(this._startVec)*180/Math.PI,map=this._map;if(!this._gestureIntent){var scalingSignificantly=Math.abs(1-scale)>significantScaleThreshold,rotatingSignificantly=Math.abs(bearing)>significantRotateThreshold;if(rotatingSignificantly){this._gestureIntent="rotate"}else if(scalingSignificantly){this._gestureIntent="zoom"}if(this._gestureIntent){this._startVec=vec;this._startScale=map.transform.scale;this._startBearing=map.transform.bearing}}else{var param={duration:0,around:map.unproject(p)};if(this._gestureIntent==="rotate"){param.bearing=this._startBearing+bearing}if(this._gestureIntent==="zoom"||this._gestureIntent==="rotate"){param.zoom=map.transform.scaleZoom(this._startScale*scale)}map.stop();this._drainInertiaBuffer();this._inertia.push([Date.now(),scale,p]);map.easeTo(param,{originalEvent:e})}e.preventDefault()},_onEnd:function(e){window.document.removeEventListener("touchmove",this._onMove);window.document.removeEventListener("touchend",this._onEnd);this._drainInertiaBuffer();var inertia=this._inertia,map=this._map;if(inertia.length<2){map.snapToNorth({},{originalEvent:e});return}var last=inertia[inertia.length-1],first=inertia[0],lastScale=map.transform.scaleZoom(this._startScale*last[1]),firstScale=map.transform.scaleZoom(this._startScale*first[1]),scaleOffset=lastScale-firstScale,scaleDuration=(last[0]-first[0])/1e3,p=last[2];if(scaleDuration===0||lastScale===firstScale){map.snapToNorth({},{originalEvent:e});return}var speed=scaleOffset*inertiaLinearity/scaleDuration;if(Math.abs(speed)>inertiaMaxSpeed){if(speed>0){speed=inertiaMaxSpeed}else{speed=-inertiaMaxSpeed}}var duration=Math.abs(speed/(inertiaDeceleration*inertiaLinearity))*1e3,targetScale=lastScale+speed*duration/2e3;if(targetScale<0){targetScale=0}map.easeTo({zoom:targetScale,duration:duration,easing:inertiaEasing,around:map.unproject(p)},{originalEvent:e})},_drainInertiaBuffer:function(){var inertia=this._inertia,now=Date.now(),cutoff=160;while(inertia.length>2&&now-inertia[0][0]>cutoff)inertia.shift()}}},{"../../util/dom":127,"../../util/util":137,"../../util/window":122}],114:[function(require,module,exports){"use strict";module.exports=Hash;var util=require("../util/util");var window=require("../util/window");function Hash(){util.bindAll(["_onHashChange","_updateHash"],this)}Hash.prototype={addTo:function(map){this._map=map;window.addEventListener("hashchange",this._onHashChange,false);this._map.on("moveend",this._updateHash);return this},remove:function(){window.removeEventListener("hashchange",this._onHashChange,false);this._map.off("moveend",this._updateHash);delete this._map;return this},_onHashChange:function(){var loc=window.location.hash.replace("#","").split("/");if(loc.length>=3){this._map.jumpTo({center:[+loc[2],+loc[1]],zoom:+loc[0],bearing:+(loc[3]||0),pitch:+(loc[4]||0)});return true}return false},_updateHash:function(){var center=this._map.getCenter(),zoom=this._map.getZoom(),bearing=this._map.getBearing(),pitch=this._map.getPitch(),precision=Math.max(0,Math.ceil(Math.log(zoom)/Math.LN2)),hash="#"+Math.round(zoom*100)/100+"/"+center.lat.toFixed(precision)+"/"+center.lng.toFixed(precision);if(bearing||pitch)hash+="/"+Math.round(bearing*10)/10;if(pitch)hash+="/"+Math.round(pitch);window.history.replaceState("","",hash)}}},{"../util/util":137,"../util/window":122}],115:[function(require,module,exports){"use strict";var util=require("../util/util");var browser=require("../util/browser");var window=require("../util/window");var Evented=require("../util/evented");var DOM=require("../util/dom");var Style=require("../style/style");var AnimationLoop=require("../style/animation_loop");var Painter=require("../render/painter");var Transform=require("../geo/transform");var Hash=require("./hash");var bindHandlers=require("./bind_handlers");var Camera=require("./camera");var LngLat=require("../geo/lng_lat");var LngLatBounds=require("../geo/lng_lat_bounds");var Point=require("point-geometry");var AttributionControl=require("./control/attribution_control");var isSupported=require("mapbox-gl-supported");var defaultMinZoom=0;var defaultMaxZoom=20;var defaultOptions={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:defaultMinZoom,maxZoom:defaultMaxZoom,interactive:true,scrollZoom:true,boxZoom:true,dragRotate:true,dragPan:true,keyboard:true,doubleClickZoom:true,touchZoomRotate:true,bearingSnap:7,hash:false,attributionControl:true,failIfMajorPerformanceCaveat:false,preserveDrawingBuffer:false,trackResize:true};var Map=module.exports=function(options){options=util.extend({},defaultOptions,options);this._interactive=options.interactive;this._failIfMajorPerformanceCaveat=options.failIfMajorPerformanceCaveat;this._preserveDrawingBuffer=options.preserveDrawingBuffer;this._trackResize=options.trackResize;this._bearingSnap=options.bearingSnap;if(typeof options.container==="string"){this._container=window.document.getElementById(options.container)}else{this._container=options.container}this.animationLoop=new AnimationLoop;this.transform=new Transform(options.minZoom,options.maxZoom);if(options.maxBounds){this.setMaxBounds(options.maxBounds)}util.bindAll(["_onWindowOnline","_onWindowResize","_contextLost","_contextRestored","_update","_render"],this);this._setupContainer();this._setupPainter();this.on("move",this._update.bind(this,false));this.on("zoom",this._update.bind(this,true));this.on("moveend",function(){this.animationLoop.set(300);this._rerender()}.bind(this));if(typeof window!=="undefined"){window.addEventListener("online",this._onWindowOnline,false);window.addEventListener("resize",this._onWindowResize,false)}bindHandlers(this,options);this._hash=options.hash&&(new Hash).addTo(this);if(!this._hash||!this._hash._onHashChange()){this.jumpTo({center:options.center,zoom:options.zoom,bearing:options.bearing,pitch:options.pitch})}this._classes=[];this.resize();if(options.classes)this.setClasses(options.classes);if(options.style)this.setStyle(options.style);if(options.attributionControl)this.addControl(new AttributionControl(options.attributionControl));this.on("style.load",function(){if(this.transform.unmodified){this.jumpTo(this.style.stylesheet)}this.style.update(this._classes,{transition:false})});this.on("data",function(event){if(event.dataType==="style"){this._update(true)}else{this._update()}})};util.extend(Map.prototype,Evented);util.extend(Map.prototype,Camera.prototype);util.extend(Map.prototype,{addControl:function(control){control.addTo(this);return this},addClass:function(klass,options){if(this._classes.indexOf(klass)>=0||klass==="")return this;this._classes.push(klass);this._classOptions=options;if(this.style)this.style.updateClasses();return this._update(true)},removeClass:function(klass,options){var i=this._classes.indexOf(klass);if(i<0||klass==="")return this;this._classes.splice(i,1);this._classOptions=options;if(this.style)this.style.updateClasses();return this._update(true)},setClasses:function(klasses,options){var uniqueClasses={};for(var i=0;i=0},getClasses:function(){return this._classes},resize:function(){var dimensions=this._containerDimensions();var width=dimensions[0];var height=dimensions[1];this._resizeCanvas(width,height);this.transform.resize(width,height);this.painter.resize(width,height);return this.fire("movestart").fire("move").fire("resize").fire("moveend")},getBounds:function(){var bounds=new LngLatBounds(this.transform.pointLocation(new Point(0,this.transform.height)),this.transform.pointLocation(new Point(this.transform.width,0)));if(this.transform.angle||this.transform.pitch){bounds.extend(this.transform.pointLocation(new Point(this.transform.size.x,0)));bounds.extend(this.transform.pointLocation(new Point(0,this.transform.size.y)))}return bounds},setMaxBounds:function(lnglatbounds){if(lnglatbounds){var b=LngLatBounds.convert(lnglatbounds);this.transform.lngRange=[b.getWest(),b.getEast()];this.transform.latRange=[b.getSouth(),b.getNorth()];this.transform._constrain();this._update()}else if(lnglatbounds===null||lnglatbounds===undefined){this.transform.lngRange=[];this.transform.latRange=[];this._update()}return this},setMinZoom:function(minZoom){minZoom=minZoom===null||minZoom===undefined?defaultMinZoom:minZoom;if(minZoom>=defaultMinZoom&&minZoom<=this.transform.maxZoom){this.transform.minZoom=minZoom;this._update();if(this.getZoom()=this.transform.minZoom&&maxZoom<=defaultMaxZoom){this.transform.maxZoom=maxZoom;this._update();if(this.getZoom()>maxZoom)this.setZoom(maxZoom);return this}else throw new Error("maxZoom must be between the current minZoom and "+defaultMaxZoom+", inclusive")},project:function(lnglat){return this.transform.locationPoint(LngLat.convert(lnglat))},unproject:function(point){return this.transform.pointLocation(Point.convert(point))},queryRenderedFeatures:function(){var params={};var geometry;if(arguments.length===2){geometry=arguments[0];params=arguments[1]}else if(arguments.length===1&&isPointLike(arguments[0])){geometry=arguments[0]}else if(arguments.length===1){params=arguments[0]}return this.style.queryRenderedFeatures(this._makeQueryGeometry(geometry),params,this.transform.zoom,this.transform.angle);function isPointLike(input){return input instanceof Point||Array.isArray(input)}},_makeQueryGeometry:function(pointOrBox){if(pointOrBox===undefined){pointOrBox=[Point.convert([0,0]),Point.convert([this.transform.width,this.transform.height])]}var queryGeometry;var isPoint=pointOrBox instanceof Point||typeof pointOrBox[0]==="number";if(isPoint){var point=Point.convert(pointOrBox);queryGeometry=[point]}else{var box=[Point.convert(pointOrBox[0]),Point.convert(pointOrBox[1])];queryGeometry=[box[0],new Point(box[1].x,box[0].y),box[1],new Point(box[0].x,box[1].y),box[0]]}queryGeometry=queryGeometry.map(function(p){return this.transform.pointCoordinate(p)}.bind(this));return queryGeometry},querySourceFeatures:function(sourceID,params){return this.style.querySourceFeatures(sourceID,params)},setStyle:function(style){if(this.style){this.style.setEventedParent(null);this.style._remove();this.off("rotate",this.style._redoPlacement);this.off("pitch",this.style._redoPlacement)}if(!style){this.style=null;return this}else if(style instanceof Style){this.style=style}else{this.style=new Style(style,this)}this.style.setEventedParent(this,{style:this.style});this.on("rotate",this.style._redoPlacement);this.on("pitch",this.style._redoPlacement);return this},getStyle:function(){if(this.style){return this.style.serialize()}},addSource:function(id,source){this.style.addSource(id,source);this._update(true);return this},addSourceType:function(name,SourceType,callback){return this.style.addSourceType(name,SourceType,callback)},removeSource:function(id){this.style.removeSource(id);this._update(true);return this},getSource:function(id){return this.style.getSource(id)},addLayer:function(layer,before){this.style.addLayer(layer,before);this._update(true);return this},removeLayer:function(id){this.style.removeLayer(id);this._update(true);return this},getLayer:function(id){return this.style.getLayer(id)},setFilter:function(layer,filter){this.style.setFilter(layer,filter);this._update(true);return this},setLayerZoomRange:function(layerId,minzoom,maxzoom){this.style.setLayerZoomRange(layerId,minzoom,maxzoom);this._update(true);return this},getFilter:function(layer){return this.style.getFilter(layer)},setPaintProperty:function(layer,name,value,klass){this.style.setPaintProperty(layer,name,value,klass);this._update(true);return this},getPaintProperty:function(layer,name,klass){return this.style.getPaintProperty(layer,name,klass)},setLayoutProperty:function(layer,name,value){this.style.setLayoutProperty(layer,name,value);this._update(true);return this},getLayoutProperty:function(layer,name){return this.style.getLayoutProperty(layer,name)},setLight:function(lightOptions){this.style.setLight(lightOptions);this._update(true);return this},getLight:function(){return this.style.getLight()},getContainer:function(){return this._container},getCanvasContainer:function(){return this._canvasContainer},getCanvas:function(){return this._canvas},_containerDimensions:function(){var width=0;var height=0;if(this._container){width=this._container.offsetWidth||400;height=this._container.offsetHeight||300}return[width,height]},_setupContainer:function(){var container=this._container;container.classList.add("mapboxgl-map");var canvasContainer=this._canvasContainer=DOM.create("div","mapboxgl-canvas-container",container);if(this._interactive){canvasContainer.classList.add("mapboxgl-interactive")}this._canvas=DOM.create("canvas","mapboxgl-canvas",canvasContainer);this._canvas.style.position="absolute";this._canvas.addEventListener("webglcontextlost",this._contextLost,false);this._canvas.addEventListener("webglcontextrestored",this._contextRestored,false);this._canvas.setAttribute("tabindex",0);var dimensions=this._containerDimensions();this._resizeCanvas(dimensions[0],dimensions[1]);var controlContainer=this._controlContainer=DOM.create("div","mapboxgl-control-container",container);var corners=this._controlCorners={};["top-left","top-right","bottom-left","bottom-right"].forEach(function(pos){corners[pos]=DOM.create("div","mapboxgl-ctrl-"+pos,controlContainer)})},_resizeCanvas:function(width,height){var pixelRatio=window.devicePixelRatio||1;this._canvas.width=pixelRatio*width;this._canvas.height=pixelRatio*height;this._canvas.style.width=width+"px";this._canvas.style.height=height+"px"},_setupPainter:function(){var attributes=util.extend({failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer},isSupported.webGLContextAttributes);var gl=this._canvas.getContext("webgl",attributes)||this._canvas.getContext("experimental-webgl",attributes);if(!gl){this.fire("error",{error:new Error("Failed to initialize WebGL")});return}this.painter=new Painter(gl,this.transform)},_contextLost:function(event){event.preventDefault();if(this._frameId){browser.cancelFrame(this._frameId)}this.fire("webglcontextlost",{originalEvent:event})},_contextRestored:function(event){this._setupPainter();this.resize();this._update();this.fire("webglcontextrestored",{originalEvent:event})},loaded:function(){if(this._styleDirty||this._sourcesDirty)return false;if(!this.style||!this.style.loaded())return false;return true},_update:function(updateStyle){if(!this.style)return this;this._styleDirty=this._styleDirty||updateStyle;this._sourcesDirty=true;this._rerender();return this},_render:function(){if(this.style&&this._styleDirty){this._styleDirty=false;this.style.update(this._classes,this._classOptions);this._classOptions=null;this.style._recalculate(this.transform.zoom)}if(this.style&&this._sourcesDirty){this._sourcesDirty=false;this.style._updateSources(this.transform)}this.painter.render(this.style,{debug:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,vertices:this.vertices,rotating:this.rotating,zooming:this.zooming});this.fire("render");if(this.loaded()&&!this._loaded){this._loaded=true;this.fire("load")}this._frameId=null;if(!this.animationLoop.stopped()){this._styleDirty=true}if(this._sourcesDirty||this._repaint||this._styleDirty){this._rerender()}return this},remove:function(){if(this._hash)this._hash.remove();browser.cancelFrame(this._frameId);this.setStyle(null);if(typeof window!=="undefined"){window.removeEventListener("resize",this._onWindowResize,false)}var extension=this.painter.gl.getExtension("WEBGL_lose_context");if(extension)extension.loseContext();removeNode(this._canvasContainer);removeNode(this._controlContainer);this._container.classList.remove("mapboxgl-map");this.fire("remove")},_rerender:function(){if(this.style&&!this._frameId){this._frameId=browser.frame(this._render)}},_onWindowOnline:function(){this._update()},_onWindowResize:function(){if(this._trackResize){this.stop().resize()._update()}}});util.extendAll(Map.prototype,{_showTileBoundaries:false,get showTileBoundaries(){return this._showTileBoundaries},set showTileBoundaries(value){if(this._showTileBoundaries===value)return;this._showTileBoundaries=value;this._update()},_showCollisionBoxes:false,get showCollisionBoxes(){return this._showCollisionBoxes},set showCollisionBoxes(value){if(this._showCollisionBoxes===value)return;this._showCollisionBoxes=value;this.style._redoPlacement()},_showOverdrawInspector:false,get showOverdrawInspector(){return this._showOverdrawInspector},set showOverdrawInspector(value){if(this._showOverdrawInspector===value)return;this._showOverdrawInspector=value;this._update()},_repaint:false,get repaint(){return this._repaint},set repaint(value){this._repaint=value;this._update()},_vertices:false,get vertices(){return this._vertices},set vertices(value){this._vertices=value;this._update()}});function removeNode(node){if(node.parentNode){node.parentNode.removeChild(node)}}},{"../geo/lng_lat":28,"../geo/lng_lat_bounds":29,"../geo/transform":30,"../render/painter":46,"../style/animation_loop":67,"../style/style":71,"../util/browser":120,"../util/dom":127,"../util/evented":128,"../util/util":137,"../util/window":122,"./bind_handlers":100,"./camera":101,"./control/attribution_control":102,"./hash":114,"mapbox-gl-supported":192,"point-geometry":196}],116:[function(require,module,exports){"use strict";module.exports=Marker;var DOM=require("../util/dom");var util=require("../util/util");var LngLat=require("../geo/lng_lat");var Point=require("point-geometry");var Popup=require("./popup");function Marker(element,options){this._offset=Point.convert(options&&options.offset||[0,0]);this._update=this._update.bind(this);this._onMapClick=this._onMapClick.bind(this);if(!element)element=DOM.create("div");element.classList.add("mapboxgl-marker");this._element=element;this._popup=null}Marker.prototype={addTo:function(map){this.remove();this._map=map;map.getCanvasContainer().appendChild(this._element);map.on("move",this._update);map.on("moveend",this._update);this._update();this._map.on("click",this._onMapClick); return this},remove:function(){if(this._map){this._map.off("click",this._onMapClick);this._map.off("move",this._update);this._map.off("moveend",this._update);this._map=null}DOM.remove(this._element);if(this._popup)this._popup.remove();return this},getLngLat:function(){return this._lngLat},setLngLat:function(lnglat){this._lngLat=LngLat.convert(lnglat);if(this._popup)this._popup.setLngLat(this._lngLat);this._update();return this},getElement:function(){return this._element},setPopup:function(popup){var that=this;if(this._popup){this._popup.remove();this._popup=null}if(popup){this._popup=popup;this._popup.setLngLat(this._lngLat)}return this},_onMapClick:function(event){var targetElement=event.originalEvent.target;var element=this._element;if(this._popup&&(targetElement===element||element.contains(targetElement))){this.togglePopup()}},getPopup:function(){return this._popup},togglePopup:function(){var popup=this._popup;if(!popup)return;else if(popup.isOpen())popup.remove();else popup.addTo(this._map)},_update:function(e){if(!this._map)return;var pos=this._map.project(this._lngLat)._add(this._offset);if(!e||e.type==="moveend")pos=pos.round();DOM.setTransform(this._element,"translate("+pos.x+"px,"+pos.y+"px)")}}},{"../geo/lng_lat":28,"../util/dom":127,"../util/util":137,"./popup":117,"point-geometry":196}],117:[function(require,module,exports){"use strict";module.exports=Popup;var util=require("../util/util");var Evented=require("../util/evented");var DOM=require("../util/dom");var LngLat=require("../geo/lng_lat");var Point=require("point-geometry");var window=require("../util/window");function Popup(options){util.setOptions(this,options);util.bindAll(["_update","_onClickClose"],this)}Popup.prototype=util.inherit(Evented,{options:{closeButton:true,closeOnClick:true},addTo:function(map){this._map=map;this._map.on("move",this._update);if(this.options.closeOnClick){this._map.on("click",this._onClickClose)}this._update();return this},isOpen:function(){return!!this._map},remove:function(){if(this._content&&this._content.parentNode){this._content.parentNode.removeChild(this._content)}if(this._container){this._container.parentNode.removeChild(this._container);delete this._container}if(this._map){this._map.off("move",this._update);this._map.off("click",this._onClickClose);delete this._map}this.fire("close");return this},getLngLat:function(){return this._lngLat},setLngLat:function(lnglat){this._lngLat=LngLat.convert(lnglat);this._update();return this},setText:function(text){return this.setDOMContent(window.document.createTextNode(text))},setHTML:function(html){var frag=window.document.createDocumentFragment();var temp=window.document.createElement("body"),child;temp.innerHTML=html;while(true){child=temp.firstChild;if(!child)break;frag.appendChild(child)}return this.setDOMContent(frag)},setDOMContent:function(htmlNode){this._createContent();this._content.appendChild(htmlNode);this._update();return this},_createContent:function(){if(this._content&&this._content.parentNode){this._content.parentNode.removeChild(this._content)}this._content=DOM.create("div","mapboxgl-popup-content",this._container);if(this.options.closeButton){this._closeButton=DOM.create("button","mapboxgl-popup-close-button",this._content);this._closeButton.type="button";this._closeButton.innerHTML="×";this._closeButton.addEventListener("click",this._onClickClose)}},_update:function(){if(!this._map||!this._lngLat||!this._content){return}if(!this._container){this._container=DOM.create("div","mapboxgl-popup",this._map.getContainer());this._tip=DOM.create("div","mapboxgl-popup-tip",this._container);this._container.appendChild(this._content)}var anchor=this.options.anchor;var offset=normalizeOffset(this.options.offset);var pos=this._map.project(this._lngLat).round();if(!anchor){var width=this._container.offsetWidth,height=this._container.offsetHeight;if(pos.y+offset.bottom.ythis._map.transform.height-height){anchor=["bottom"]}else{anchor=[]}if(pos.xthis._map.transform.width-width/2){anchor.push("right")}if(anchor.length===0){anchor="bottom"}else{anchor=anchor.join("-")}}var offsetedPos=pos.add(offset[anchor]);var anchorTranslate={top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};var classList=this._container.classList;for(var key in anchorTranslate){classList.remove("mapboxgl-popup-anchor-"+key)}classList.add("mapboxgl-popup-anchor-"+anchor);DOM.setTransform(this._container,anchorTranslate[anchor]+" translate("+offsetedPos.x+"px,"+offsetedPos.y+"px)")},_onClickClose:function(){this.remove()}});function normalizeOffset(offset){if(!offset){return normalizeOffset(new Point(0,0))}else if(typeof offset==="number"){var cornerOffset=Math.round(Math.sqrt(.5*Math.pow(offset,2)));return{top:new Point(0,offset),"top-left":new Point(cornerOffset,cornerOffset),"top-right":new Point(-cornerOffset,cornerOffset),bottom:new Point(0,-offset),"bottom-left":new Point(cornerOffset,-cornerOffset),"bottom-right":new Point(-cornerOffset,-cornerOffset),left:new Point(offset,0),right:new Point(-offset,0)}}else if(isPointLike(offset)){var convertedOffset=Point.convert(offset);return{top:convertedOffset,"top-left":convertedOffset,"top-right":convertedOffset,bottom:convertedOffset,"bottom-left":convertedOffset,"bottom-right":convertedOffset,left:convertedOffset,right:convertedOffset}}else{return{top:Point.convert(offset["top"]),"top-left":Point.convert(offset["top-left"]),"top-right":Point.convert(offset["top-right"]),bottom:Point.convert(offset["bottom"]),"bottom-left":Point.convert(offset["bottom-left"]),"bottom-right":Point.convert(offset["bottom-right"]),left:Point.convert(offset["left"]),right:Point.convert(offset["right"])}}}function isPointLike(input){return input instanceof Point||Array.isArray(input)}},{"../geo/lng_lat":28,"../util/dom":127,"../util/evented":128,"../util/util":137,"../util/window":122,"point-geometry":196}],118:[function(require,module,exports){"use strict";module.exports=Actor;function Actor(target,parent,mapId){this.target=target;this.parent=parent;this.mapId=mapId;this.callbacks={};this.callbackID=0;this.receive=this.receive.bind(this);this.target.addEventListener("message",this.receive,false)}Actor.prototype.send=function(type,data,callback,buffers,targetMapId){var id=callback?this.mapId+":"+this.callbackID++:null;if(callback)this.callbacks[id]=callback;this.target.postMessage({targetMapId:targetMapId,sourceMapId:this.mapId,type:type,id:String(id),data:data},buffers)};Actor.prototype.receive=function(message){var data=message.data,id=data.id,callback;if(data.targetMapId&&this.mapId!==data.targetMapId)return;if(data.type===""){callback=this.callbacks[data.id];delete this.callbacks[data.id];if(callback)callback(data.error||null,data.data)}else if(typeof data.id!=="undefined"&&this.parent[data.type]){this.parent[data.type](data.sourceMapId,data.data,done.bind(this))}else if(typeof data.id!=="undefined"&&this.parent.getWorkerSource){var keys=data.type.split(".");var workerSource=this.parent.getWorkerSource(data.sourceMapId,keys[0]);workerSource[keys[1]](data.data,done.bind(this))}else{this.parent[data.type](data.data)}function done(err,data,buffers){this.target.postMessage({sourceMapId:this.mapId,type:"",id:String(id),error:err?String(err):null,data:data},buffers)}};Actor.prototype.remove=function(){this.target.removeEventListener("message",this.receive,false)}},{}],119:[function(require,module,exports){"use strict";var window=require("./window");exports.getJSON=function(url,callback){var xhr=new window.XMLHttpRequest;xhr.open("GET",url,true);xhr.setRequestHeader("Accept","application/json");xhr.onerror=function(e){callback(e)};xhr.onload=function(){if(xhr.status>=200&&xhr.status<300&&xhr.response){var data;try{data=JSON.parse(xhr.response)}catch(err){return callback(err)}callback(null,data)}else{callback(new Error(xhr.statusText))}};xhr.send();return xhr};exports.getArrayBuffer=function(url,callback){var xhr=new window.XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onerror=function(e){callback(e)};xhr.onload=function(){if(xhr.status>=200&&xhr.status<300&&xhr.response){callback(null,xhr.response)}else{callback(new Error(xhr.statusText))}};xhr.send();return xhr};function sameOrigin(url){var a=window.document.createElement("a");a.href=url;return a.protocol===window.document.location.protocol&&a.host===window.document.location.host}exports.getImage=function(url,callback){return exports.getArrayBuffer(url,function(err,imgData){if(err)return callback(err);var img=new window.Image;img.onload=function(){callback(null,img);(window.URL||window.webkitURL).revokeObjectURL(img.src)};var blob=new window.Blob([new Uint8Array(imgData)],{type:"image/png"});img.src=(window.URL||window.webkitURL).createObjectURL(blob);img.getData=function(){var canvas=window.document.createElement("canvas");var context=canvas.getContext("2d");canvas.width=img.width;canvas.height=img.height;context.drawImage(img,0,0);return context.getImageData(0,0,img.width,img.height).data};return img})};exports.getVideo=function(urls,callback){var video=window.document.createElement("video");video.onloadstart=function(){callback(null,video)};for(var i=0;i=start+dur){fn.call(ctx,1)}else{fn.call(ctx,(now-start)/dur);exports.frame(tick)}}exports.frame(tick);return function(){abort=true}};exports.supported=require("mapbox-gl-supported");exports.hardwareConcurrency=window.navigator.hardwareConcurrency||4;Object.defineProperty(exports,"devicePixelRatio",{get:function(){return window.devicePixelRatio}});exports.supportsWebp=false;var webpImgTest=window.document.createElement("img");webpImgTest.onload=function(){exports.supportsWebp=true};webpImgTest.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=";exports.supportsGeolocation=!!window.navigator.geolocation},{"./window":122,"mapbox-gl-supported":192}],121:[function(require,module,exports){"use strict";var WebWorkify=require("webworkify");var window=require("../window");var workerURL=window.URL.createObjectURL(new WebWorkify(require("../../source/worker"),{bare:true}));module.exports=function(){return new window.Worker(workerURL)}},{"../../source/worker":65,"../window":122,webworkify:213}],122:[function(require,module,exports){"use strict";module.exports=self},{}],123:[function(require,module,exports){"use strict";var quickselect=require("quickselect");var calculateSignedArea=require("./util").calculateSignedArea;module.exports=function classifyRings(rings,maxRings){var len=rings.length;if(len<=1)return[rings];var polygons=[],polygon,ccw;for(var i=0;i1){for(var j=0;jmaxX)maxX=p.x;if(!i||p.y>maxY)maxY=p.y}var width=maxX-minX;var height=maxY-minY;var cellSize=Math.min(width,height);var h=cellSize/2;var cellQueue=new Queue(null,compareMax);for(var x=minX;xbestCell.d){bestCell=cell;if(debug)console.log("found best %d after %d probes",Math.round(1e4*cell.d)/1e4,numProbes)}if(cell.max-bestCell.d<=precision)continue;h=cell.h/2;cellQueue.push(new Cell(cell.p.x-h,cell.p.y-h,h,polygonRings));cellQueue.push(new Cell(cell.p.x+h,cell.p.y-h,h,polygonRings));cellQueue.push(new Cell(cell.p.x-h,cell.p.y+h,h,polygonRings));cellQueue.push(new Cell(cell.p.x+h,cell.p.y+h,h,polygonRings));numProbes+=4}if(debug){console.log("num probes: "+numProbes);console.log("best distance: "+bestCell.d)}return bestCell.p};function compareMax(a,b){return b.max-a.max}function Cell(x,y,h,polygon){this.p=new Point(x,y);this.h=h;this.d=pointToPolygonDist(this.p,polygon);this.max=this.d+this.h*Math.SQRT2}function pointToPolygonDist(p,polygon){var inside=false;var minDistSq=Infinity;for(var k=0;kp.y!==b.y>p.y&&p.x<(b.x-a.x)*(p.y-a.y)/(b.y-a.y)+a.x)inside=!inside;minDistSq=Math.min(minDistSq,distToSegmentSquared(p,a,b))}}return(inside?1:-1)*Math.sqrt(minDistSq)}function getCentroidCell(polygon){var area=0;var x=0;var y=0;var points=polygon[0];for(var i=0,len=points.length,j=len-1;i=3){for(var k=0;k1){if(lineIntersectsLine(lineA,lineB))return true;for(var j=0;j1)return p.distSqr(w);return p.distSqr(w.sub(v)._mult(t)._add(v))}function multiPolygonContainsPoint(rings,p){var c=false,ring,p1,p2;for(var k=0;kp.y!==p2.y>p.y&&p.x<(p2.x-p1.x)*(p.y-p1.y)/(p2.y-p1.y)+p1.x){c=!c}}}return c}function polygonContainsPoint(ring,p){var c=false;for(var i=0,j=ring.length-1;ip.y!==p2.y>p.y&&p.x<(p2.x-p1.x)*(p.y-p1.y)/(p2.y-p1.y)+p1.x){c=!c}}return c}},{"./util":137}],133:[function(require,module,exports){"use strict";module.exports=LRUCache;function LRUCache(max,onRemove){this.max=max;this.onRemove=onRemove;this.reset()}LRUCache.prototype.reset=function(){for(var key in this.data){this.onRemove(this.data[key])}this.data={};this.order=[];return this};LRUCache.prototype.add=function(key,data){if(this.has(key)){this.order.splice(this.order.indexOf(key),1);this.data[key]=data;this.order.push(key)}else{this.data[key]=data;this.order.push(key);if(this.order.length>this.max){var removedData=this.get(this.order[0]);if(removedData)this.onRemove(removedData)}}return this};LRUCache.prototype.has=function(key){return key in this.data};LRUCache.prototype.keys=function(){return this.order};LRUCache.prototype.get=function(key){if(!this.has(key)){return null}var data=this.data[key];delete this.data[key];this.order.splice(this.order.indexOf(key),1);return data};LRUCache.prototype.setMaxSize=function(max){this.max=max;while(this.order.length>this.max){var removedData=this.get(this.order[0]);if(removedData)this.onRemove(removedData)}return this}},{}],134:[function(require,module,exports){"use strict";var config=require("./config");var browser=require("./browser");var URL=require("url");var util=require("./util");function makeAPIURL(path,query,accessToken){accessToken=accessToken||config.ACCESS_TOKEN;if(!accessToken&&config.REQUIRE_ACCESS_TOKEN){throw new Error("An API access token is required to use Mapbox GL. "+"See https://www.mapbox.com/developers/api/#access-tokens")}var url=config.API_URL+path+(query?"?"+query:"");if(config.REQUIRE_ACCESS_TOKEN){if(accessToken[0]==="s"){throw new Error("Use a public access token (pk.*) with Mapbox GL JS, not a secret access token (sk.*). "+"See https://www.mapbox.com/developers/api/#access-tokens")}url+=(query?"&":"?")+"access_token="+accessToken}return url}module.exports.isMapboxURL=function(url){return URL.parse(url).protocol==="mapbox:"};module.exports.normalizeStyleURL=function(url,accessToken){var urlObject=URL.parse(url);if(urlObject.protocol!=="mapbox:"){return url}else{return makeAPIURL("/styles/v1"+urlObject.pathname,urlObject.query,accessToken)}};module.exports.normalizeSourceURL=function(url,accessToken){var urlObject=URL.parse(url);if(urlObject.protocol!=="mapbox:"){return url}else{var sources=url.match(/mapbox:\/\/([^?]+)/)[1];return makeAPIURL("/v4/"+sources+".json",urlObject.query,accessToken)+"&secure"}};module.exports.normalizeGlyphsURL=function(url,accessToken){var urlObject=URL.parse(url);if(urlObject.protocol!=="mapbox:"){return url}else{var user=urlObject.pathname.split("/")[1];return makeAPIURL("/fonts/v1/"+user+"/{fontstack}/{range}.pbf",urlObject.query,accessToken)}};module.exports.normalizeSpriteURL=function(url,format,extension,accessToken){var urlObject=URL.parse(url);if(urlObject.protocol!=="mapbox:"){urlObject.pathname+=format+extension;return URL.format(urlObject)}else{return makeAPIURL("/styles/v1"+urlObject.pathname+"/sprite"+format+extension,urlObject.query,accessToken)}};module.exports.normalizeTileURL=function(tileURL,sourceURL,tileSize){var tileURLObject=URL.parse(tileURL,true);if(!sourceURL)return tileURL;var sourceURLObject=URL.parse(sourceURL);if(sourceURLObject.protocol!=="mapbox:")return tileURL;var extension=browser.supportsWebp?".webp":"$1";var resolution=browser.devicePixelRatio>=2||tileSize===512?"@2x":"";return URL.format({protocol:tileURLObject.protocol,hostname:tileURLObject.hostname,pathname:tileURLObject.pathname.replace(/(\.(?:png|jpg)\d*)/,resolution+extension),query:replaceTempAccessToken(tileURLObject.query)})};function replaceTempAccessToken(query){if(query.access_token&&query.access_token.slice(0,3)==="tk."){return util.extend({},query,{access_token:config.ACCESS_TOKEN})}else{return query}}},{"./browser":120,"./config":124,"./util":137,url:7}],135:[function(require,module,exports){"use strict";module.exports=StructArrayType;var viewTypes={Int8:Int8Array,Uint8:Uint8Array,Uint8Clamped:Uint8ClampedArray,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array,Float64:Float64Array};var structArrayTypeCache={};function StructArrayType(options){var key=JSON.stringify(options);if(structArrayTypeCache[key]){return structArrayTypeCache[key]}if(options.alignment===undefined)options.alignment=1;function StructType(){Struct.apply(this,arguments)}StructType.prototype=Object.create(Struct.prototype);var offset=0;var maxSize=0;var usedTypes=["Uint8"];StructType.prototype.members=options.members.map(function(member){member={name:member.name,type:member.type,components:member.components||1};if(usedTypes.indexOf(member.type)<0)usedTypes.push(member.type);var typeSize=sizeOf(member.type);maxSize=Math.max(maxSize,typeSize);member.offset=offset=align(offset,Math.max(options.alignment,typeSize));for(var c=0;cthis.capacity){this.capacity=Math.max(n,Math.floor(this.capacity*this.RESIZE_MULTIPLIER),this.DEFAULT_CAPACITY);this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var oldUint8Array=this.uint8;this._refreshViews();if(oldUint8Array)this.uint8.set(oldUint8Array)}};StructArray.prototype._refreshViews=function(){for(var t=0;t=1)return 1;var t2=t*t,t3=t2*t;return 4*(t<.5?t3:3*(t-t2)+t3-.75)};exports.bezier=function(p1x,p1y,p2x,p2y){var bezier=new UnitBezier(p1x,p1y,p2x,p2y);return function(t){return bezier.solve(t)}};exports.ease=exports.bezier(.25,.1,.25,1);exports.clamp=function(n,min,max){return Math.min(max,Math.max(min,n))};exports.wrap=function(n,min,max){var d=max-min;var w=((n-min)%d+d)%d+min;return w===min?max:w};exports.coalesce=function(){for(var i=0;i=0)return true}return false};var warnOnceHistory={};exports.warnOnce=function(message){if(!warnOnceHistory[message]){if(typeof console!=="undefined")console.warn(message);warnOnceHistory[message]=true}};exports.isCounterClockwise=function(a,b,c){return(c.y-a.y)*(b.x-a.x)>(b.y-a.y)*(c.x-a.x)};exports.calculateSignedArea=function(ring){var sum=0;for(var i=0,len=ring.length,j=len-1,p1,p2;i0||Math.abs(p1.y-p2.y)>0){return false}return Math.abs(exports.calculateSignedArea(points))>.01};exports.sphericalToCartesian=function(spherical){var r=spherical[0],azimuthal=spherical[1],polar=spherical[2];azimuthal+=90;azimuthal*=Math.PI/180;polar*=Math.PI/180;return[r*Math.cos(azimuthal)*Math.sin(polar),r*Math.sin(azimuthal)*Math.sin(polar),r*Math.cos(polar)]}},{"../geo/coordinate":27,unitbezier:205}],138:[function(require,module,exports){"use strict";module.exports=Feature;function Feature(vectorTileFeature,z,x,y){this._vectorTileFeature=vectorTileFeature;vectorTileFeature._z=z;vectorTileFeature._x=x;vectorTileFeature._y=y;this.properties=vectorTileFeature.properties;if(vectorTileFeature.id!=null){this.id=vectorTileFeature.id}}Feature.prototype={type:"Feature",get geometry(){if(this._geometry===undefined){this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry}return this._geometry},set geometry(g){this._geometry=g},toJSON:function(){var json={};for(var i in this){if(i==="_geometry"||i==="_vectorTileFeature"||i==="toJSON")continue;json[i]=this[i]}return json}}},{}],139:[function(require,module,exports){"use strict";var WebWorker=require("./web_worker");module.exports=WorkerPool;function WorkerPool(){this.active={}}WorkerPool.prototype={acquire:function(mapId){if(!this.workers){var workerCount=require("../mapbox-gl").workerCount;this.workers=[];while(this.workers.length255?255:i}function clamp_css_float(f){return f<0?0:f>1?1:f}function parse_css_int(str){if(str[str.length-1]==="%")return clamp_css_byte(parseFloat(str)/100*255);return clamp_css_byte(parseInt(str))}function parse_css_float(str){if(str[str.length-1]==="%")return clamp_css_float(parseFloat(str)/100);return clamp_css_float(parseFloat(str))}function css_hue_to_rgb(m1,m2,h){if(h<0)h+=1;else if(h>1)h-=1;if(h*6<1)return m1+(m2-m1)*h*6;if(h*2<1)return m2;if(h*3<2)return m1+(m2-m1)*(2/3-h)*6;return m1}function parseCSSColor(css_str){var str=css_str.replace(/ /g,"").toLowerCase();if(str in kCSSColorTable)return kCSSColorTable[str].slice();if(str[0]==="#"){if(str.length===4){var iv=parseInt(str.substr(1),16);if(!(iv>=0&&iv<=4095))return null;return[(iv&3840)>>4|(iv&3840)>>8,iv&240|(iv&240)>>4,iv&15|(iv&15)<<4,1]}else if(str.length===7){var iv=parseInt(str.substr(1),16);if(!(iv>=0&&iv<=16777215))return null;return[(iv&16711680)>>16,(iv&65280)>>8,iv&255,1]}return null}var op=str.indexOf("("),ep=str.indexOf(")");if(op!==-1&&ep+1===str.length){var fname=str.substr(0,op);var params=str.substr(op+1,ep-(op+1)).split(",");var alpha=1;switch(fname){case"rgba":if(params.length!==4)return null;alpha=parse_css_float(params.pop());case"rgb":if(params.length!==3)return null;return[parse_css_int(params[0]),parse_css_int(params[1]),parse_css_int(params[2]),alpha];case"hsla":if(params.length!==4)return null;alpha=parse_css_float(params.pop());case"hsl":if(params.length!==3)return null;var h=(parseFloat(params[0])%360+360)%360/360;var s=parse_css_float(params[1]);var l=parse_css_float(params[2]);var m2=l<=.5?l*(s+1):l+s-l*s;var m1=l*2-m2;return[clamp_css_byte(css_hue_to_rgb(m1,m2,h+1/3)*255),clamp_css_byte(css_hue_to_rgb(m1,m2,h)*255),clamp_css_byte(css_hue_to_rgb(m1,m2,h-1/3)*255),alpha];default:return null}}return null}try{exports.parseCSSColor=parseCSSColor}catch(e){}},{}],141:[function(require,module,exports){"use strict";module.exports=earcut;function earcut(data,holeIndices,dim){dim=dim||2;var hasHoles=holeIndices&&holeIndices.length,outerLen=hasHoles?holeIndices[0]*dim:data.length,outerNode=linkedList(data,0,outerLen,dim,true),triangles=[];if(!outerNode)return triangles;var minX,minY,maxX,maxY,x,y,size;if(hasHoles)outerNode=eliminateHoles(data,holeIndices,outerNode,dim);if(data.length>80*dim){minX=maxX=data[0];minY=maxY=data[1];for(var i=dim;imaxX)maxX=x;if(y>maxY)maxY=y}size=Math.max(maxX-minX,maxY-minY)}earcutLinked(outerNode,triangles,dim,minX,minY,size);return triangles}function linkedList(data,start,end,dim,clockwise){var i,last;if(clockwise===signedArea(data,start,end,dim)>0){for(i=start;i=start;i-=dim)last=insertNode(i,data[i],data[i+1],last)}if(last&&equals(last,last.next)){removeNode(last);last=last.next}return last}function filterPoints(start,end){if(!start)return start;if(!end)end=start;var p=start,again;do{again=false;if(!p.steiner&&(equals(p,p.next)||area(p.prev,p,p.next)===0)){removeNode(p);p=end=p.prev;if(p===p.next)return null;again=true}else{p=p.next}}while(again||p!==end);return end}function earcutLinked(ear,triangles,dim,minX,minY,size,pass){if(!ear)return;if(!pass&&size)indexCurve(ear,minX,minY,size);var stop=ear,prev,next;while(ear.prev!==ear.next){prev=ear.prev;next=ear.next;if(size?isEarHashed(ear,minX,minY,size):isEar(ear)){triangles.push(prev.i/dim);triangles.push(ear.i/dim);triangles.push(next.i/dim);removeNode(ear);ear=next.next;stop=next.next;continue}ear=next;if(ear===stop){if(!pass){earcutLinked(filterPoints(ear),triangles,dim,minX,minY,size,1)}else if(pass===1){ear=cureLocalIntersections(ear,triangles,dim);earcutLinked(ear,triangles,dim,minX,minY,size,2)}else if(pass===2){splitEarcut(ear,triangles,dim,minX,minY,size)}break}}}function isEar(ear){var a=ear.prev,b=ear,c=ear.next;if(area(a,b,c)>=0)return false;var p=ear.next.next;while(p!==ear.prev){if(pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return false;p=p.next}return true}function isEarHashed(ear,minX,minY,size){var a=ear.prev,b=ear,c=ear.next;if(area(a,b,c)>=0)return false;var minTX=a.xb.x?a.x>c.x?a.x:c.x:b.x>c.x?b.x:c.x,maxTY=a.y>b.y?a.y>c.y?a.y:c.y:b.y>c.y?b.y:c.y;var minZ=zOrder(minTX,minTY,minX,minY,size),maxZ=zOrder(maxTX,maxTY,minX,minY,size);var p=ear.nextZ;while(p&&p.z<=maxZ){if(p!==ear.prev&&p!==ear.next&&pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return false;p=p.nextZ}p=ear.prevZ;while(p&&p.z>=minZ){if(p!==ear.prev&&p!==ear.next&&pointInTriangle(a.x,a.y,b.x,b.y,c.x,c.y,p.x,p.y)&&area(p.prev,p,p.next)>=0)return false;p=p.prevZ}return true}function cureLocalIntersections(start,triangles,dim){var p=start;do{var a=p.prev,b=p.next.next;if(!equals(a,b)&&intersects(a,p,p.next,b)&&locallyInside(a,b)&&locallyInside(b,a)){triangles.push(a.i/dim);triangles.push(p.i/dim);triangles.push(b.i/dim);removeNode(p);removeNode(p.next);p=start=b}p=p.next}while(p!==start);return p}function splitEarcut(start,triangles,dim,minX,minY,size){var a=start;do{var b=a.next.next;while(b!==a.prev){if(a.i!==b.i&&isValidDiagonal(a,b)){var c=splitPolygon(a,b);a=filterPoints(a,a.next);c=filterPoints(c,c.next);earcutLinked(a,triangles,dim,minX,minY,size);earcutLinked(c,triangles,dim,minX,minY,size);return}b=b.next}a=a.next}while(a!==start)}function eliminateHoles(data,holeIndices,outerNode,dim){var queue=[],i,len,start,end,list;for(i=0,len=holeIndices.length;i=p.next.y){var x=p.x+(hy-p.y)*(p.next.x-p.x)/(p.next.y-p.y);if(x<=hx&&x>qx){qx=x;if(x===hx){if(hy===p.y)return p;if(hy===p.next.y)return p.next}m=p.x=p.x&&p.x>=mx&&pointInTriangle(hym.x)&&locallyInside(p,hole)){m=p;tanMin=tan}}p=p.next}return m}function indexCurve(start,minX,minY,size){var p=start;do{if(p.z===null)p.z=zOrder(p.x,p.y,minX,minY,size);p.prevZ=p.prev;p.nextZ=p.next;p=p.next}while(p!==start);p.prevZ.nextZ=null;p.prevZ=null;sortLinked(p)}function sortLinked(list){var i,p,q,e,tail,numMerges,pSize,qSize,inSize=1;do{p=list;list=null;tail=null;numMerges=0;while(p){numMerges++;q=p;pSize=0;for(i=0;i0||qSize>0&&q){if(pSize===0){e=q;q=q.nextZ;qSize--}else if(qSize===0||!q){e=p;p=p.nextZ;pSize--}else if(p.z<=q.z){e=p;p=p.nextZ;pSize--}else{e=q;q=q.nextZ;qSize--}if(tail)tail.nextZ=e;else list=e;e.prevZ=tail;tail=e}p=q}tail.nextZ=null;inSize*=2}while(numMerges>1);return list}function zOrder(x,y,minX,minY,size){x=32767*(x-minX)/size;y=32767*(y-minY)/size;x=(x|x<<8)&16711935;x=(x|x<<4)&252645135;x=(x|x<<2)&858993459;x=(x|x<<1)&1431655765;y=(y|y<<8)&16711935;y=(y|y<<4)&252645135;y=(y|y<<2)&858993459;y=(y|y<<1)&1431655765;return x|y<<1}function getLeftmost(start){var p=start,leftmost=start;do{if(p.x=0&&(ax-px)*(by-py)-(bx-px)*(ay-py)>=0&&(bx-px)*(cy-py)-(cx-px)*(by-py)>=0}function isValidDiagonal(a,b){return a.next.i!==b.i&&a.prev.i!==b.i&&!intersectsPolygon(a,b)&&locallyInside(a,b)&&locallyInside(b,a)&&middleInside(a,b)}function area(p,q,r){return(q.y-p.y)*(r.x-q.x)-(q.x-p.x)*(r.y-q.y)}function equals(p1,p2){return p1.x===p2.x&&p1.y===p2.y}function intersects(p1,q1,p2,q2){if(equals(p1,q1)&&equals(p2,q2)||equals(p1,q2)&&equals(p2,q1))return true;return area(p1,q1,p2)>0!==area(p1,q1,q2)>0&&area(p2,q2,p1)>0!==area(p2,q2,q1)>0}function intersectsPolygon(a,b){var p=a;do{if(p.i!==a.i&&p.next.i!==a.i&&p.i!==b.i&&p.next.i!==b.i&&intersects(p,p.next,a,b))return true;p=p.next}while(p!==a);return false}function locallyInside(a,b){return area(a.prev,a,a.next)<0?area(a,b,a.next)>=0&&area(a,a.prev,b)>=0:area(a,b,a.prev)<0||area(a,a.next,b)<0}function middleInside(a,b){var p=a,inside=false,px=(a.x+b.x)/2,py=(a.y+b.y)/2;do{if(p.y>py!==p.next.y>py&&px<(p.next.x-p.x)*(py-p.y)/(p.next.y-p.y)+p.x)inside=!inside;p=p.next}while(p!==a);return inside}function splitPolygon(a,b){var a2=new Node(a.i,a.x,a.y),b2=new Node(b.i,b.x,b.y),an=a.next,bp=b.prev;a.next=b;b.prev=a;a2.next=an;an.prev=a2;b2.next=a2;a2.prev=b2;bp.next=b2;b2.prev=bp;return b2}function insertNode(i,x,y,last){var p=new Node(i,x,y);if(!last){p.prev=p;p.next=p}else{p.next=last.next;p.prev=last;last.next.prev=p;last.next=p}return p}function removeNode(p){p.next.prev=p.prev;p.prev.next=p.next;if(p.prevZ)p.prevZ.nextZ=p.nextZ;if(p.nextZ)p.nextZ.prevZ=p.prevZ}function Node(i,x,y){this.i=i;this.x=x;this.y=y;this.prev=null;this.next=null;this.z=null;this.prevZ=null;this.nextZ=null;this.steiner=false}earcut.deviation=function(data,holeIndices,dim,triangles){var hasHoles=holeIndices&&holeIndices.length;var outerLen=hasHoles?holeIndices[0]*dim:data.length;var polygonArea=Math.abs(signedArea(data,0,outerLen,dim));if(hasHoles){for(var i=0,len=holeIndices.length;i0){holeIndex+=data[i-1].length;result.holes.push(holeIndex)}}return result}},{}],142:[function(require,module,exports){"use strict";module.exports=createFilter;var types=["Unknown","Point","LineString","Polygon"];function createFilter(filter){return new Function("f","var p = (f && f.properties || {}); return "+compile(filter))}function compile(filter){if(!filter)return"true";var op=filter[0];if(filter.length<=1)return op==="any"?"false":"true";var str=op==="=="?compileComparisonOp(filter[1],filter[2],"===",false):op==="!="?compileComparisonOp(filter[1],filter[2],"!==",false):op==="<"||op===">"||op==="<="||op===">="?compileComparisonOp(filter[1],filter[2],op,true):op==="any"?compileLogicalOp(filter.slice(1),"||"):op==="all"?compileLogicalOp(filter.slice(1),"&&"):op==="none"?compileNegation(compileLogicalOp(filter.slice(1),"||")):op==="in"?compileInOp(filter[1],filter.slice(2)):op==="!in"?compileNegation(compileInOp(filter[1],filter.slice(2))):op==="has"?compileHasOp(filter[1]):op==="!has"?compileNegation(compileHasOp([filter[1]])):"true";return"("+str+")"}function compilePropertyReference(property){return property==="$type"?"f.type":property==="$id"?"f.id":"p["+JSON.stringify(property)+"]"}function compileComparisonOp(property,value,op,checkType){var left=compilePropertyReference(property);var right=property==="$type"?types.indexOf(value):JSON.stringify(value);return(checkType?"typeof "+left+"=== typeof "+right+"&&":"")+left+op+right}function compileLogicalOp(expressions,op){return expressions.map(compile).join(op)}function compileInOp(property,values){if(property==="$type")values=values.map(function(value){return types.indexOf(value)});var left=JSON.stringify(values.sort(compare));var right=compilePropertyReference(property);if(values.length<=200)return left+".indexOf("+right+") !== -1";return"function(v, a, i, j) {"+"while (i <= j) { var m = (i + j) >> 1;"+" if (a[m] === v) return true; if (a[m] > v) j = m - 1; else i = m + 1;"+"}"+"return false; }("+right+", "+left+",0,"+(values.length-1)+")"}function compileHasOp(property){return JSON.stringify(property)+" in p"}function compileNegation(expression){return"!("+expression+")"}function compare(a,b){return ab?1:0}},{}],143:[function(require,module,exports){var geojsonArea=require("geojson-area");module.exports=rewind;function rewind(gj,outer){switch(gj&&gj.type||null){case"FeatureCollection":gj.features=gj.features.map(curryOuter(rewind,outer));return gj;case"Feature":gj.geometry=rewind(gj.geometry,outer);return gj;case"Polygon":case"MultiPolygon":return correct(gj,outer);default:return gj}}function curryOuter(a,b){return function(_){return a(_,b)}}function correct(_,outer){if(_.type==="Polygon"){_.coordinates=correctRings(_.coordinates,outer)}else if(_.type==="MultiPolygon"){_.coordinates=_.coordinates.map(curryOuter(correctRings,outer))}return _}function correctRings(_,outer){outer=!!outer;_[0]=wind(_[0],!outer);for(var i=1;i<_.length;i++){_[i]=wind(_[i],outer)}return _}function wind(_,dir){return cw(_)===dir?_:_.reverse()}function cw(_){return geojsonArea.ring(_)>=0}},{"geojson-area":144}],144:[function(require,module,exports){var wgs84=require("wgs84");module.exports.geometry=geometry;module.exports.ring=ringArea;function geometry(_){if(_.type==="Polygon")return polygonArea(_.coordinates);else if(_.type==="MultiPolygon"){var area=0;for(var i=0;i<_.coordinates.length;i++){area+=polygonArea(_.coordinates[i])}return area}else{return null}}function polygonArea(coords){var area=0;if(coords&&coords.length>0){area+=Math.abs(ringArea(coords[0]));for(var i=1;i2){var p1,p2;for(var i=0;i=k1&&maxAll<=k2)return features;else if(minAll>k2||maxAll=k1&&max<=k2){clipped.push(feature);continue}else if(min>k2||max=k1&&ak<=k2)slice.push(a)}return slice}function clipGeometry(geometry,k1,k2,axis,intersect,closed){var slices=[];for(var i=0;ik2){slice.push(intersect(a,b,k1),intersect(a,b,k2));if(!closed)slice=newSlice(slices,slice,area,dist,outer)}else if(bk>=k1)slice.push(intersect(a,b,k1))}else if(ak>k2){if(bkk2){slice.push(intersect(a,b,k2));if(!closed)slice=newSlice(slices,slice,area,dist,outer)}}}a=points[len-1];ak=a[axis];if(ak>=k1&&ak<=k2)slice.push(a);last=slice[slice.length-1];if(closed&&last&&(slice[0][0]!==last[0]||slice[0][1]!==last[1]))slice.push(slice[0]);newSlice(slices,slice,area,dist,outer)}return slices}function newSlice(slices,slice,area,dist,outer){if(slice.length){slice.area=area;slice.dist=dist;if(outer!==undefined)slice.outer=outer;slices.push(slice)}return[]}},{"./feature":148}],147:[function(require,module,exports){"use strict";module.exports=convert;var simplify=require("./simplify");var createFeature=require("./feature");function convert(data,tolerance){var features=[];if(data.type==="FeatureCollection"){for(var i=0;i1?1:y;return[x,y,0]}function calcSize(points){var area=0,dist=0;for(var i=0,a,b;i1)console.time("creation");tile=this.tiles[id]=createTile(features,z2,x,y,tileTolerance,z===options.maxZoom);this.tileCoords.push({z:z,x:x,y:y});if(debug){if(debug>1){console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",z,x,y,tile.numFeatures,tile.numPoints,tile.numSimplified);console.timeEnd("creation")}var key="z"+z;this.stats[key]=(this.stats[key]||0)+1;this.total++}}tile.source=features;if(!cz){if(z===options.indexMaxZoom||tile.numPoints<=options.indexMaxPoints)continue}else{if(z===options.maxZoom||z===cz)continue;var m=1<1)console.time("clipping");var k1=.5*options.buffer/options.extent,k2=.5-k1,k3=.5+k1,k4=1+k1,tl,bl,tr,br,left,right;tl=bl=tr=br=null;left=clip(features,z2,x-k1,x+k3,0,intersectX,tile.min[0],tile.max[0]);right=clip(features,z2,x+k2,x+k4,0,intersectX,tile.min[0],tile.max[0]);if(left){tl=clip(left,z2,y-k1,y+k3,1,intersectY,tile.min[1],tile.max[1]);bl=clip(left,z2,y+k2,y+k4,1,intersectY,tile.min[1],tile.max[1])}if(right){tr=clip(right,z2,y-k1,y+k3,1,intersectY,tile.min[1],tile.max[1]);br=clip(right,z2,y+k2,y+k4,1,intersectY,tile.min[1],tile.max[1])}if(debug>1)console.timeEnd("clipping");if(features.length){stack.push(tl||[],z+1,x*2,y*2);stack.push(bl||[],z+1,x*2,y*2+1);stack.push(tr||[],z+1,x*2+1,y*2);stack.push(br||[],z+1,x*2+1,y*2+1)}}return solid};GeoJSONVT.prototype.getTile=function(z,x,y){var options=this.options,extent=options.extent,debug=options.debug;var z2=1<1)console.log("drilling down to z%d-%d-%d",z,x,y);var z0=z,x0=x,y0=y,parent;while(!parent&&z0>0){z0--;x0=Math.floor(x0/2);y0=Math.floor(y0/2);parent=this.tiles[toID(z0,x0,y0)]}if(!parent||!parent.source)return null;if(debug>1)console.log("found parent tile z%d-%d-%d",z0,x0,y0);if(isClippedSquare(parent,extent,options.buffer))return transform.tile(parent,extent);if(debug>1)console.time("drilling down");var solid=this.splitTile(parent.source,z0,x0,y0,z,x,y);if(debug>1)console.timeEnd("drilling down");if(solid!==null){var m=1<1)return false;var len=feature.geometry[0].length;if(len!==5)return false;for(var i=0;imaxSqDist){index=i;maxSqDist=sqDist}}if(maxSqDist>sqTolerance){points[index][2]=maxSqDist;stack.push(first);stack.push(index);first=index}else{last=stack.pop();first=stack.pop()}}}function getSqSegDist(p,a,b){var x=a[0],y=a[1],bx=b[0],by=b[1],px=p[0],py=p[1],dx=bx-x,dy=by-y;if(dx!==0||dy!==0){var t=((px-x)*dx+(py-y)*dy)/(dx*dx+dy*dy);if(t>1){x=bx;y=by}else if(t>0){x+=dx*t;y+=dy*t}}dx=px-x;dy=py-y;return dx*dx+dy*dy}},{}],151:[function(require,module,exports){"use strict";module.exports=createTile;function createTile(features,z2,tx,ty,tolerance,noSimplify){var tile={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:tx,y:ty,z2:z2,transformed:false,min:[2,1],max:[-1,0]};for(var i=0;itile.max[0])tile.max[0]=max[0];if(max[1]>tile.max[1])tile.max[1]=max[1]}return tile}function addFeature(tile,feature,tolerance,noSimplify){var geom=feature.geometry,type=feature.type,simplified=[],sqTolerance=tolerance*tolerance,i,j,ring,p;if(type===1){for(i=0;isqTolerance){simplifiedRing.push(p);tile.numSimplified++}tile.numPoints++}if(type===3)rewind(simplifiedRing,ring.outer);simplified.push(simplifiedRing)}}if(simplified.length){var tileFeature={geometry:simplified,type:type,tags:feature.tags||null};if(feature.id!==null){tileFeature.id=feature.id}tile.features.push(tileFeature)}}function rewind(ring,clockwise){var area=signedArea(ring);if(area<0===clockwise)ring.reverse()}function signedArea(ring){var sum=0;for(var i=0,len=ring.length,j=len-1,p1,p2;i0){S=Math.sqrt(trace+1)*2;out[3]=.25*S;out[0]=(mat[6]-mat[9])/S;out[1]=(mat[8]-mat[2])/S;out[2]=(mat[1]-mat[4])/S}else if(mat[0]>mat[5]&mat[0]>mat[10]){S=Math.sqrt(1+mat[0]-mat[5]-mat[10])*2;out[3]=(mat[6]-mat[9])/S;out[0]=.25*S;out[1]=(mat[1]+mat[4])/S;out[2]=(mat[8]+mat[2])/S}else if(mat[5]>mat[10]){S=Math.sqrt(1+mat[5]-mat[0]-mat[10])*2;out[3]=(mat[8]-mat[2])/S;out[0]=(mat[1]+mat[4])/S;out[1]=.25*S;out[2]=(mat[6]+mat[9])/S}else{S=Math.sqrt(1+mat[10]-mat[0]-mat[5])*2;out[3]=(mat[1]-mat[4])/S;out[0]=(mat[8]+mat[2])/S;out[1]=(mat[6]+mat[9])/S;out[2]=.25*S}return out};mat4.fromRotationTranslationScale=function(out,q,v,s){var x=q[0],y=q[1],z=q[2],w=q[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2,sx=s[0],sy=s[1],sz=s[2];out[0]=(1-(yy+zz))*sx;out[1]=(xy+wz)*sx;out[2]=(xz-wy)*sx;out[3]=0;out[4]=(xy-wz)*sy;out[5]=(1-(xx+zz))*sy;out[6]=(yz+wx)*sy;out[7]=0;out[8]=(xz+wy)*sz;out[9]=(yz-wx)*sz;out[10]=(1-(xx+yy))*sz;out[11]=0;out[12]=v[0];out[13]=v[1];out[14]=v[2];out[15]=1;return out};mat4.fromRotationTranslationScaleOrigin=function(out,q,v,s,o){var x=q[0],y=q[1],z=q[2],w=q[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2,sx=s[0],sy=s[1],sz=s[2],ox=o[0],oy=o[1],oz=o[2];out[0]=(1-(yy+zz))*sx;out[1]=(xy+wz)*sx;out[2]=(xz-wy)*sx;out[3]=0;out[4]=(xy-wz)*sy;out[5]=(1-(xx+zz))*sy;out[6]=(yz+wx)*sy;out[7]=0;out[8]=(xz+wy)*sz;out[9]=(yz-wx)*sz;out[10]=(1-(xx+yy))*sz;out[11]=0;out[12]=v[0]+ox-(out[0]*ox+out[4]*oy+out[8]*oz);out[13]=v[1]+oy-(out[1]*ox+out[5]*oy+out[9]*oz);out[14]=v[2]+oz-(out[2]*ox+out[6]*oy+out[10]*oz);out[15]=1;return out};mat4.fromQuat=function(out,q){var x=q[0],y=q[1],z=q[2],w=q[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,yx=y*x2,yy=y*y2,zx=z*x2,zy=z*y2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;out[0]=1-yy-zz;out[1]=yx+wz;out[2]=zx-wy;out[3]=0;out[4]=yx-wz;out[5]=1-xx-zz;out[6]=zy+wx;out[7]=0;out[8]=zx+wy;out[9]=zy-wx;out[10]=1-xx-yy;out[11]=0;out[12]=0;out[13]=0;out[14]=0;out[15]=1;return out};mat4.frustum=function(out,left,right,bottom,top,near,far){var rl=1/(right-left),tb=1/(top-bottom),nf=1/(near-far);out[0]=near*2*rl;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=near*2*tb;out[6]=0;out[7]=0;out[8]=(right+left)*rl;out[9]=(top+bottom)*tb;out[10]=(far+near)*nf;out[11]=-1;out[12]=0;out[13]=0;out[14]=far*near*2*nf;out[15]=0;return out};mat4.perspective=function(out,fovy,aspect,near,far){var f=1/Math.tan(fovy/2),nf=1/(near-far);out[0]=f/aspect;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=f;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=(far+near)*nf;out[11]=-1;out[12]=0;out[13]=0;out[14]=2*far*near*nf;out[15]=0;return out};mat4.perspectiveFromFieldOfView=function(out,fov,near,far){var upTan=Math.tan(fov.upDegrees*Math.PI/180),downTan=Math.tan(fov.downDegrees*Math.PI/180),leftTan=Math.tan(fov.leftDegrees*Math.PI/180),rightTan=Math.tan(fov.rightDegrees*Math.PI/180),xScale=2/(leftTan+rightTan),yScale=2/(upTan+downTan);out[0]=xScale;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=yScale;out[6]=0;out[7]=0;out[8]=-((leftTan-rightTan)*xScale*.5);out[9]=(upTan-downTan)*yScale*.5;out[10]=far/(near-far);out[11]=-1;out[12]=0;out[13]=0;out[14]=far*near/(near-far);out[15]=0;return out};mat4.ortho=function(out,left,right,bottom,top,near,far){var lr=1/(left-right),bt=1/(bottom-top),nf=1/(near-far);out[0]=-2*lr;out[1]=0;out[2]=0;out[3]=0;out[4]=0;out[5]=-2*bt;out[6]=0;out[7]=0;out[8]=0;out[9]=0;out[10]=2*nf;out[11]=0;out[12]=(left+right)*lr;out[13]=(top+bottom)*bt;out[14]=(far+near)*nf;out[15]=1;return out};mat4.lookAt=function(out,eye,center,up){var x0,x1,x2,y0,y1,y2,z0,z1,z2,len,eyex=eye[0],eyey=eye[1],eyez=eye[2],upx=up[0],upy=up[1],upz=up[2],centerx=center[0],centery=center[1],centerz=center[2];if(Math.abs(eyex-centerx).999999){out[0]=0;out[1]=0;out[2]=0;out[3]=1;return out}else{vec3.cross(tmpvec3,a,b);out[0]=tmpvec3[0];out[1]=tmpvec3[1];out[2]=tmpvec3[2];out[3]=1+dot;return quat.normalize(out,out)}}}();quat.setAxes=function(){var matr=mat3.create();return function(out,view,right,up){matr[0]=right[0];matr[3]=right[1];matr[6]=right[2];matr[1]=up[0];matr[4]=up[1];matr[7]=up[2];matr[2]=-view[0];matr[5]=-view[1];matr[8]=-view[2];return quat.normalize(out,quat.fromMat3(out,matr))}}();quat.clone=vec4.clone;quat.fromValues=vec4.fromValues;quat.copy=vec4.copy;quat.set=vec4.set;quat.identity=function(out){out[0]=0;out[1]=0;out[2]=0;out[3]=1;return out};quat.setAxisAngle=function(out,axis,rad){rad=rad*.5;var s=Math.sin(rad);out[0]=s*axis[0];out[1]=s*axis[1];out[2]=s*axis[2];out[3]=Math.cos(rad);return out};quat.getAxisAngle=function(out_axis,q){var rad=Math.acos(q[3])*2;var s=Math.sin(rad/2);if(s!=0){out_axis[0]=q[0]/s;out_axis[1]=q[1]/s;out_axis[2]=q[2]/s}else{out_axis[0]=1;out_axis[1]=0;out_axis[2]=0}return rad};quat.add=vec4.add;quat.multiply=function(out,a,b){var ax=a[0],ay=a[1],az=a[2],aw=a[3],bx=b[0],by=b[1],bz=b[2],bw=b[3];out[0]=ax*bw+aw*bx+ay*bz-az*by;out[1]=ay*bw+aw*by+az*bx-ax*bz;out[2]=az*bw+aw*bz+ax*by-ay*bx;out[3]=aw*bw-ax*bx-ay*by-az*bz;return out};quat.mul=quat.multiply;quat.scale=vec4.scale;quat.rotateX=function(out,a,rad){rad*=.5;var ax=a[0],ay=a[1],az=a[2],aw=a[3],bx=Math.sin(rad),bw=Math.cos(rad);out[0]=ax*bw+aw*bx;out[1]=ay*bw+az*bx;out[2]=az*bw-ay*bx;out[3]=aw*bw-ax*bx;return out};quat.rotateY=function(out,a,rad){rad*=.5;var ax=a[0],ay=a[1],az=a[2],aw=a[3],by=Math.sin(rad),bw=Math.cos(rad);out[0]=ax*bw-az*by;out[1]=ay*bw+aw*by;out[2]=az*bw+ax*by;out[3]=aw*bw-ay*by;return out};quat.rotateZ=function(out,a,rad){rad*=.5;var ax=a[0],ay=a[1],az=a[2],aw=a[3],bz=Math.sin(rad),bw=Math.cos(rad);out[0]=ax*bw+ay*bz;out[1]=ay*bw-ax*bz;out[2]=az*bw+aw*bz;out[3]=aw*bw-az*bz;return out};quat.calculateW=function(out,a){var x=a[0],y=a[1],z=a[2];out[0]=x;out[1]=y;out[2]=z;out[3]=Math.sqrt(Math.abs(1-x*x-y*y-z*z));return out};quat.dot=vec4.dot;quat.lerp=vec4.lerp;quat.slerp=function(out,a,b,t){var ax=a[0],ay=a[1],az=a[2],aw=a[3],bx=b[0],by=b[1],bz=b[2],bw=b[3];var omega,cosom,sinom,scale0,scale1;cosom=ax*bx+ay*by+az*bz+aw*bw;if(cosom<0){cosom=-cosom;bx=-bx;by=-by;bz=-bz;bw=-bw}if(1-cosom>1e-6){omega=Math.acos(cosom);sinom=Math.sin(omega);scale0=Math.sin((1-t)*omega)/sinom;scale1=Math.sin(t*omega)/sinom}else{scale0=1-t;scale1=t}out[0]=scale0*ax+scale1*bx;out[1]=scale0*ay+scale1*by;out[2]=scale0*az+scale1*bz;out[3]=scale0*aw+scale1*bw;return out};quat.sqlerp=function(){var temp1=quat.create();var temp2=quat.create();return function(out,a,b,c,d,t){quat.slerp(temp1,a,d,t);quat.slerp(temp2,b,c,t);quat.slerp(out,temp1,temp2,2*t*(1-t));return out}}();quat.invert=function(out,a){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],dot=a0*a0+a1*a1+a2*a2+a3*a3,invDot=dot?1/dot:0;out[0]=-a0*invDot;out[1]=-a1*invDot;out[2]=-a2*invDot;out[3]=a3*invDot;return out};quat.conjugate=function(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];out[3]=a[3];return out};quat.length=vec4.length;quat.len=quat.length;quat.squaredLength=vec4.squaredLength;quat.sqrLen=quat.squaredLength;quat.normalize=vec4.normalize;quat.fromMat3=function(out,m){var fTrace=m[0]+m[4]+m[8];var fRoot;if(fTrace>0){fRoot=Math.sqrt(fTrace+1);out[3]=.5*fRoot;fRoot=.5/fRoot;out[0]=(m[5]-m[7])*fRoot;out[1]=(m[6]-m[2])*fRoot;out[2]=(m[1]-m[3])*fRoot}else{var i=0;if(m[4]>m[0])i=1;if(m[8]>m[i*3+i])i=2;var j=(i+1)%3;var k=(i+2)%3;fRoot=Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k]+1);out[i]=.5*fRoot;fRoot=.5/fRoot;out[3]=(m[j*3+k]-m[k*3+j])*fRoot;out[j]=(m[j*3+i]+m[i*3+j])*fRoot;out[k]=(m[k*3+i]+m[i*3+k])*fRoot}return out};quat.str=function(a){return"quat("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"};quat.exactEquals=vec4.exactEquals;quat.equals=vec4.equals;module.exports=quat},{"./common.js":155,"./mat3.js":158,"./vec3.js":162,"./vec4.js":163}],161:[function(require,module,exports){var glMatrix=require("./common.js");var vec2={};vec2.create=function(){var out=new glMatrix.ARRAY_TYPE(2);out[0]=0;out[1]=0;return out};vec2.clone=function(a){var out=new glMatrix.ARRAY_TYPE(2);out[0]=a[0];out[1]=a[1];return out};vec2.fromValues=function(x,y){var out=new glMatrix.ARRAY_TYPE(2);out[0]=x;out[1]=y;return out};vec2.copy=function(out,a){out[0]=a[0];out[1]=a[1];return out};vec2.set=function(out,x,y){out[0]=x;out[1]=y;return out};vec2.add=function(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];return out};vec2.subtract=function(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];return out};vec2.sub=vec2.subtract;vec2.multiply=function(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];return out};vec2.mul=vec2.multiply;vec2.divide=function(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];return out};vec2.div=vec2.divide;vec2.ceil=function(out,a){out[0]=Math.ceil(a[0]);out[1]=Math.ceil(a[1]);return out};vec2.floor=function(out,a){out[0]=Math.floor(a[0]);out[1]=Math.floor(a[1]);return out};vec2.min=function(out,a,b){out[0]=Math.min(a[0],b[0]);out[1]=Math.min(a[1],b[1]);return out};vec2.max=function(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);return out};vec2.round=function(out,a){out[0]=Math.round(a[0]);out[1]=Math.round(a[1]);return out};vec2.scale=function(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;return out};vec2.scaleAndAdd=function(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;return out};vec2.distance=function(a,b){var x=b[0]-a[0],y=b[1]-a[1];return Math.sqrt(x*x+y*y)};vec2.dist=vec2.distance;vec2.squaredDistance=function(a,b){var x=b[0]-a[0],y=b[1]-a[1];return x*x+y*y};vec2.sqrDist=vec2.squaredDistance;vec2.length=function(a){var x=a[0],y=a[1];return Math.sqrt(x*x+y*y)};vec2.len=vec2.length;vec2.squaredLength=function(a){var x=a[0],y=a[1];return x*x+y*y};vec2.sqrLen=vec2.squaredLength;vec2.negate=function(out,a){out[0]=-a[0];out[1]=-a[1];return out};vec2.inverse=function(out,a){out[0]=1/a[0];out[1]=1/a[1];return out};vec2.normalize=function(out,a){var x=a[0],y=a[1]; var len=x*x+y*y;if(len>0){len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len}return out};vec2.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]};vec2.cross=function(out,a,b){var z=a[0]*b[1]-a[1]*b[0];out[0]=out[1]=0;out[2]=z;return out};vec2.lerp=function(out,a,b,t){var ax=a[0],ay=a[1];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);return out};vec2.random=function(out,scale){scale=scale||1;var r=glMatrix.RANDOM()*2*Math.PI;out[0]=Math.cos(r)*scale;out[1]=Math.sin(r)*scale;return out};vec2.transformMat2=function(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[2]*y;out[1]=m[1]*x+m[3]*y;return out};vec2.transformMat2d=function(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[2]*y+m[4];out[1]=m[1]*x+m[3]*y+m[5];return out};vec2.transformMat3=function(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[3]*y+m[6];out[1]=m[1]*x+m[4]*y+m[7];return out};vec2.transformMat4=function(out,a,m){var x=a[0],y=a[1];out[0]=m[0]*x+m[4]*y+m[12];out[1]=m[1]*x+m[5]*y+m[13];return out};vec2.forEach=function(){var vec=vec2.create();return function(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=2}if(!offset){offset=0}if(count){l=Math.min(count*stride+offset,a.length)}else{l=a.length}for(i=offset;i0){len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len;out[2]=a[2]*len}return out};vec3.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]};vec3.cross=function(out,a,b){var ax=a[0],ay=a[1],az=a[2],bx=b[0],by=b[1],bz=b[2];out[0]=ay*bz-az*by;out[1]=az*bx-ax*bz;out[2]=ax*by-ay*bx;return out};vec3.lerp=function(out,a,b,t){var ax=a[0],ay=a[1],az=a[2];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);return out};vec3.hermite=function(out,a,b,c,d,t){var factorTimes2=t*t,factor1=factorTimes2*(2*t-3)+1,factor2=factorTimes2*(t-2)+t,factor3=factorTimes2*(t-1),factor4=factorTimes2*(3-2*t);out[0]=a[0]*factor1+b[0]*factor2+c[0]*factor3+d[0]*factor4;out[1]=a[1]*factor1+b[1]*factor2+c[1]*factor3+d[1]*factor4;out[2]=a[2]*factor1+b[2]*factor2+c[2]*factor3+d[2]*factor4;return out};vec3.bezier=function(out,a,b,c,d,t){var inverseFactor=1-t,inverseFactorTimesTwo=inverseFactor*inverseFactor,factorTimes2=t*t,factor1=inverseFactorTimesTwo*inverseFactor,factor2=3*t*inverseFactorTimesTwo,factor3=3*factorTimes2*inverseFactor,factor4=factorTimes2*t;out[0]=a[0]*factor1+b[0]*factor2+c[0]*factor3+d[0]*factor4;out[1]=a[1]*factor1+b[1]*factor2+c[1]*factor3+d[1]*factor4;out[2]=a[2]*factor1+b[2]*factor2+c[2]*factor3+d[2]*factor4;return out};vec3.random=function(out,scale){scale=scale||1;var r=glMatrix.RANDOM()*2*Math.PI;var z=glMatrix.RANDOM()*2-1;var zScale=Math.sqrt(1-z*z)*scale;out[0]=Math.cos(r)*zScale;out[1]=Math.sin(r)*zScale;out[2]=z*scale;return out};vec3.transformMat4=function(out,a,m){var x=a[0],y=a[1],z=a[2],w=m[3]*x+m[7]*y+m[11]*z+m[15];w=w||1;out[0]=(m[0]*x+m[4]*y+m[8]*z+m[12])/w;out[1]=(m[1]*x+m[5]*y+m[9]*z+m[13])/w;out[2]=(m[2]*x+m[6]*y+m[10]*z+m[14])/w;return out};vec3.transformMat3=function(out,a,m){var x=a[0],y=a[1],z=a[2];out[0]=x*m[0]+y*m[3]+z*m[6];out[1]=x*m[1]+y*m[4]+z*m[7];out[2]=x*m[2]+y*m[5]+z*m[8];return out};vec3.transformQuat=function(out,a,q){var x=a[0],y=a[1],z=a[2],qx=q[0],qy=q[1],qz=q[2],qw=q[3],ix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;out[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;return out};vec3.rotateX=function(out,a,b,c){var p=[],r=[];p[0]=a[0]-b[0];p[1]=a[1]-b[1];p[2]=a[2]-b[2];r[0]=p[0];r[1]=p[1]*Math.cos(c)-p[2]*Math.sin(c);r[2]=p[1]*Math.sin(c)+p[2]*Math.cos(c);out[0]=r[0]+b[0];out[1]=r[1]+b[1];out[2]=r[2]+b[2];return out};vec3.rotateY=function(out,a,b,c){var p=[],r=[];p[0]=a[0]-b[0];p[1]=a[1]-b[1];p[2]=a[2]-b[2];r[0]=p[2]*Math.sin(c)+p[0]*Math.cos(c);r[1]=p[1];r[2]=p[2]*Math.cos(c)-p[0]*Math.sin(c);out[0]=r[0]+b[0];out[1]=r[1]+b[1];out[2]=r[2]+b[2];return out};vec3.rotateZ=function(out,a,b,c){var p=[],r=[];p[0]=a[0]-b[0];p[1]=a[1]-b[1];p[2]=a[2]-b[2];r[0]=p[0]*Math.cos(c)-p[1]*Math.sin(c);r[1]=p[0]*Math.sin(c)+p[1]*Math.cos(c);r[2]=p[2];out[0]=r[0]+b[0];out[1]=r[1]+b[1];out[2]=r[2]+b[2];return out};vec3.forEach=function(){var vec=vec3.create();return function(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=3}if(!offset){offset=0}if(count){l=Math.min(count*stride+offset,a.length)}else{l=a.length}for(i=offset;i1){return 0}else{return Math.acos(cosine)}};vec3.str=function(a){return"vec3("+a[0]+", "+a[1]+", "+a[2]+")"};vec3.exactEquals=function(a,b){return a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]};vec3.equals=function(a,b){var a0=a[0],a1=a[1],a2=a[2];var b0=b[0],b1=b[1],b2=b[2];return Math.abs(a0-b0)<=glMatrix.EPSILON*Math.max(1,Math.abs(a0),Math.abs(b0))&&Math.abs(a1-b1)<=glMatrix.EPSILON*Math.max(1,Math.abs(a1),Math.abs(b1))&&Math.abs(a2-b2)<=glMatrix.EPSILON*Math.max(1,Math.abs(a2),Math.abs(b2))};module.exports=vec3},{"./common.js":155}],163:[function(require,module,exports){var glMatrix=require("./common.js");var vec4={};vec4.create=function(){var out=new glMatrix.ARRAY_TYPE(4);out[0]=0;out[1]=0;out[2]=0;out[3]=0;return out};vec4.clone=function(a){var out=new glMatrix.ARRAY_TYPE(4);out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];return out};vec4.fromValues=function(x,y,z,w){var out=new glMatrix.ARRAY_TYPE(4);out[0]=x;out[1]=y;out[2]=z;out[3]=w;return out};vec4.copy=function(out,a){out[0]=a[0];out[1]=a[1];out[2]=a[2];out[3]=a[3];return out};vec4.set=function(out,x,y,z,w){out[0]=x;out[1]=y;out[2]=z;out[3]=w;return out};vec4.add=function(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];out[2]=a[2]+b[2];out[3]=a[3]+b[3];return out};vec4.subtract=function(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];out[2]=a[2]-b[2];out[3]=a[3]-b[3];return out};vec4.sub=vec4.subtract;vec4.multiply=function(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];out[2]=a[2]*b[2];out[3]=a[3]*b[3];return out};vec4.mul=vec4.multiply;vec4.divide=function(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];out[2]=a[2]/b[2];out[3]=a[3]/b[3];return out};vec4.div=vec4.divide;vec4.ceil=function(out,a){out[0]=Math.ceil(a[0]);out[1]=Math.ceil(a[1]);out[2]=Math.ceil(a[2]);out[3]=Math.ceil(a[3]);return out};vec4.floor=function(out,a){out[0]=Math.floor(a[0]);out[1]=Math.floor(a[1]);out[2]=Math.floor(a[2]);out[3]=Math.floor(a[3]);return out};vec4.min=function(out,a,b){out[0]=Math.min(a[0],b[0]);out[1]=Math.min(a[1],b[1]);out[2]=Math.min(a[2],b[2]);out[3]=Math.min(a[3],b[3]);return out};vec4.max=function(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);out[2]=Math.max(a[2],b[2]);out[3]=Math.max(a[3],b[3]);return out};vec4.round=function(out,a){out[0]=Math.round(a[0]);out[1]=Math.round(a[1]);out[2]=Math.round(a[2]);out[3]=Math.round(a[3]);return out};vec4.scale=function(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;out[2]=a[2]*b;out[3]=a[3]*b;return out};vec4.scaleAndAdd=function(out,a,b,scale){out[0]=a[0]+b[0]*scale;out[1]=a[1]+b[1]*scale;out[2]=a[2]+b[2]*scale;out[3]=a[3]+b[3]*scale;return out};vec4.distance=function(a,b){var x=b[0]-a[0],y=b[1]-a[1],z=b[2]-a[2],w=b[3]-a[3];return Math.sqrt(x*x+y*y+z*z+w*w)};vec4.dist=vec4.distance;vec4.squaredDistance=function(a,b){var x=b[0]-a[0],y=b[1]-a[1],z=b[2]-a[2],w=b[3]-a[3];return x*x+y*y+z*z+w*w};vec4.sqrDist=vec4.squaredDistance;vec4.length=function(a){var x=a[0],y=a[1],z=a[2],w=a[3];return Math.sqrt(x*x+y*y+z*z+w*w)};vec4.len=vec4.length;vec4.squaredLength=function(a){var x=a[0],y=a[1],z=a[2],w=a[3];return x*x+y*y+z*z+w*w};vec4.sqrLen=vec4.squaredLength;vec4.negate=function(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];out[3]=-a[3];return out};vec4.inverse=function(out,a){out[0]=1/a[0];out[1]=1/a[1];out[2]=1/a[2];out[3]=1/a[3];return out};vec4.normalize=function(out,a){var x=a[0],y=a[1],z=a[2],w=a[3];var len=x*x+y*y+z*z+w*w;if(len>0){len=1/Math.sqrt(len);out[0]=x*len;out[1]=y*len;out[2]=z*len;out[3]=w*len}return out};vec4.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]};vec4.lerp=function(out,a,b,t){var ax=a[0],ay=a[1],az=a[2],aw=a[3];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);out[3]=aw+t*(b[3]-aw);return out};vec4.random=function(out,scale){scale=scale||1;out[0]=glMatrix.RANDOM();out[1]=glMatrix.RANDOM();out[2]=glMatrix.RANDOM();out[3]=glMatrix.RANDOM();vec4.normalize(out,out);vec4.scale(out,out,scale);return out};vec4.transformMat4=function(out,a,m){var x=a[0],y=a[1],z=a[2],w=a[3];out[0]=m[0]*x+m[4]*y+m[8]*z+m[12]*w;out[1]=m[1]*x+m[5]*y+m[9]*z+m[13]*w;out[2]=m[2]*x+m[6]*y+m[10]*z+m[14]*w;out[3]=m[3]*x+m[7]*y+m[11]*z+m[15]*w;return out};vec4.transformQuat=function(out,a,q){var x=a[0],y=a[1],z=a[2],qx=q[0],qy=q[1],qz=q[2],qw=q[3],ix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;out[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;out[3]=a[3];return out};vec4.forEach=function(){var vec=vec4.create();return function(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=4}if(!offset){offset=0}if(count){l=Math.min(count*stride+offset,a.length)}else{l=a.length}for(i=offset;i=bboxes[offset+0]&&y2>=bboxes[offset+1]){seenUids[uid]=true;result.push(keys[uid])}else{seenUids[uid]=false}}}}};GridIndex.prototype._forEachCell=function(x1,y1,x2,y2,fn,arg1,arg2){var cx1=this._convertToCellCoord(x1);var cy1=this._convertToCellCoord(y1);var cx2=this._convertToCellCoord(x2);var cy2=this._convertToCellCoord(y2);for(var x=cx1;x<=cx2;x++){for(var y=cy1;y<=cy2;y++){var cellIndex=this.d*y+x;if(fn.call(this,x1,y1,x2,y2,cellIndex,arg1,arg2))return}}};GridIndex.prototype._convertToCellCoord=function(x){return Math.max(0,Math.min(this.d-1,Math.floor(x*this.scale)+this.padding))};GridIndex.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;var cells=this.cells;var metadataLength=NUM_PARAMS+this.cells.length+1+1;var totalCellLength=0;for(var i=0;it3?Math.pow(t,1/3):t/t2+t0}function lab2xyz(t){return t>t1?t*t*t:t2*(t-t0)}function xyz2rgb(x){return 255*(x<=.0031308?12.92*x:1.055*Math.pow(x,1/2.4)-.055)}function rgb2xyz(x){return(x/=255)<=.04045?x/12.92:Math.pow((x+.055)/1.055,2.4)}function rgbToLab(rgbColor){var b=rgb2xyz(rgbColor[0]),a=rgb2xyz(rgbColor[1]),l=rgb2xyz(rgbColor[2]),x=xyz2lab((.4124564*b+.3575761*a+.1804375*l)/Xn),y=xyz2lab((.2126729*b+.7151522*a+.072175*l)/Yn),z=xyz2lab((.0193339*b+.119192*a+.9503041*l)/Zn);return[116*y-16,500*(x-y),200*(y-z),rgbColor[3]]}function labToRgb(labColor){var y=(labColor[0]+16)/116,x=isNaN(labColor[1])?y:y+labColor[1]/500,z=isNaN(labColor[2])?y:y-labColor[2]/200;y=Yn*lab2xyz(y);x=Xn*lab2xyz(x);z=Zn*lab2xyz(z);return[xyz2rgb(3.2404542*x-1.5371385*y-.4985314*z),xyz2rgb(-.969266*x+1.8760108*y+.041556*z),xyz2rgb(.0556434*x-.2040259*y+1.0572252*z),labColor[3]]}function rgbToHcl(rgbColor){var labColor=rgbToLab(rgbColor);var l=labColor[0],a=labColor[1],b=labColor[2];var h=Math.atan2(b,a)*rad2deg;return[h<0?h+360:h,Math.sqrt(a*a+b*b),l,rgbColor[3]]}function hclToRgb(hclColor){var h=hclColor[0]*deg2rad,c=hclColor[1],l=hclColor[2];return labToRgb([l,Math.cos(h)*c,Math.sin(h)*c,hclColor[3]])}module.exports={lab:{forward:rgbToLab,reverse:labToRgb},hcl:{forward:rgbToHcl,reverse:hclToRgb}}},{}],166:[function(require,module,exports){"use strict";var colorSpaces=require("./color_spaces");function identityFunction(x){return x}function createFunction(parameters,defaultType){var fun;if(!isFunctionDefinition(parameters)){fun=function(){return parameters};fun.isFeatureConstant=true;fun.isZoomConstant=true}else{var zoomAndFeatureDependent=parameters.stops&&typeof parameters.stops[0][0]==="object";var featureDependent=zoomAndFeatureDependent||parameters.property!==undefined;var zoomDependent=zoomAndFeatureDependent||!featureDependent;var type=parameters.type||defaultType||"exponential";var innerFun;if(type==="exponential"){innerFun=evaluateExponentialFunction}else if(type==="interval"){innerFun=evaluateIntervalFunction}else if(type==="categorical"){innerFun=evaluateCategoricalFunction}else if(type==="identity"){innerFun=evaluateIdentityFunction}else{throw new Error('Unknown function type "'+type+'"')}var outputFunction;if(parameters.colorSpace&¶meters.colorSpace!=="rgb"){if(colorSpaces[parameters.colorSpace]){var colorspace=colorSpaces[parameters.colorSpace];parameters=JSON.parse(JSON.stringify(parameters));for(var s=0;s=parameters.stops.length)break;else if(input<=parameters.stops[i][0])break;else i++}if(i===0){return parameters.stops[i][1]}else if(i===parameters.stops.length){return parameters.stops[i-1][1]}else{return interpolate(input,base,parameters.stops[i-1][0],parameters.stops[i][0],parameters.stops[i-1][1],parameters.stops[i][1])}}function evaluateIdentityFunction(parameters,input){return input}function interpolate(input,base,inputLower,inputUpper,outputLower,outputUpper){if(typeof outputLower==="function"){return function(){var evaluatedLower=outputLower.apply(undefined,arguments);var evaluatedUpper=outputUpper.apply(undefined,arguments);return interpolate(input,base,inputLower,inputUpper,evaluatedLower,evaluatedUpper)}}else if(outputLower.length){return interpolateArray(input,base,inputLower,inputUpper,outputLower,outputUpper)}else{return interpolateNumber(input,base,inputLower,inputUpper,outputLower,outputUpper)}}function interpolateNumber(input,base,inputLower,inputUpper,outputLower,outputUpper){var difference=inputUpper-inputLower;var progress=input-inputLower;var ratio;if(base===1){ratio=progress/difference}else{ratio=(Math.pow(base,progress)-1)/(Math.pow(base,difference)-1)}return outputLower*(1-ratio)+outputUpper*ratio}function interpolateArray(input,base,inputLower,inputUpper,outputLower,outputUpper){var output=[];for(var i=0;i u_zoom) {\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;\n }\n\n if (u_zoom >= v_max_zoom) {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) * alpha * 0.25;\n }\n\n if (v_placement_zoom >= u_maxzoom) {\n gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0) * alpha * 0.2;\n }\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\nattribute vec2 a_extrude;\nattribute vec2 a_data;\n\nuniform mat4 u_matrix;\nuniform float u_scale;\n\nvarying float v_max_zoom;\nvarying float v_placement_zoom;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos + a_extrude / u_scale, 0.0, 1.0);\n\n v_max_zoom = a_data.x;\n v_placement_zoom = a_data.y;\n}\n"},debug:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform lowp vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, step(32767.0, a_pos.x), 1);\n}\n"},fill:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n#pragma mapbox: define lowp vec4 color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 color\n #pragma mapbox: initialize lowp float opacity\n\n gl_FragColor = color * opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\n#pragma mapbox: define lowp vec4 color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 color\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n"},fillOutline:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n#pragma mapbox: define lowp vec4 outline_color\n#pragma mapbox: define lowp float opacity\n\nvarying vec2 v_pos;\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 outline_color\n #pragma mapbox: initialize lowp float opacity\n\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = smoothstep(1.0, 0.0, dist);\n gl_FragColor = outline_color * (alpha * opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos;\n\n#pragma mapbox: define lowp vec4 outline_color\n#pragma mapbox: define lowp float opacity\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 outline_color\n #pragma mapbox: initialize lowp float opacity\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\n}\n"},fillOutlinePattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_opacity;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec2 v_pos;\n\nvoid main() {\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a, u_pattern_br_a, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b, u_pattern_br_b, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n // find distance to outline for alpha interpolation\n\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = smoothstep(1.0, 0.0, dist);\n \n\n gl_FragColor = mix(color1, color2, u_mix) * alpha * u_opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\n\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n vec2 scaled_size_a = u_scale_a * u_pattern_size_a;\n vec2 scaled_size_b = u_scale_b * u_pattern_size_b;\n\n // the correct offset needs to be calculated.\n //\n // The offset depends on how many pixels are between the world origin and\n // the edge of the tile:\n // vec2 offset = mod(pixel_coord, size)\n //\n // At high zoom levels there are a ton of pixels between the world origin\n // and the edge of the tile. The glsl spec only guarantees 16 bits of\n // precision for highp floats. We need more than that.\n //\n // The pixel_coord is passed in as two 16 bit values:\n // pixel_coord_upper = floor(pixel_coord / 2^16)\n // pixel_coord_lower = mod(pixel_coord, 2^16)\n //\n // The offset is calculated in a series of steps that should preserve this precision:\n vec2 offset_a = mod(mod(mod(u_pixel_coord_upper, scaled_size_a) * 256.0, scaled_size_a) * 256.0 + u_pixel_coord_lower, scaled_size_a);\n vec2 offset_b = mod(mod(mod(u_pixel_coord_upper, scaled_size_b) * 256.0, scaled_size_b) * 256.0 + u_pixel_coord_lower, scaled_size_b);\n\n v_pos_a = (u_tile_units_to_pixels * a_pos + offset_a) / scaled_size_a;\n v_pos_b = (u_tile_units_to_pixels * a_pos + offset_b) / scaled_size_b;\n\n v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;\n}\n"},fillPattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_opacity;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\n\nvoid main() {\n\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a, u_pattern_br_a, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b, u_pattern_br_b, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n gl_FragColor = mix(color1, color2, u_mix) * u_opacity;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n", vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n vec2 scaled_size_a = u_scale_a * u_pattern_size_a;\n vec2 scaled_size_b = u_scale_b * u_pattern_size_b;\n\n // the correct offset needs to be calculated.\n //\n // The offset depends on how many pixels are between the world origin and\n // the edge of the tile:\n // vec2 offset = mod(pixel_coord, size)\n //\n // At high zoom levels there are a ton of pixels between the world origin\n // and the edge of the tile. The glsl spec only guarantees 16 bits of\n // precision for highp floats. We need more than that.\n //\n // The pixel_coord is passed in as two 16 bit values:\n // pixel_coord_upper = floor(pixel_coord / 2^16)\n // pixel_coord_lower = mod(pixel_coord, 2^16)\n //\n // The offset is calculated in a series of steps that should preserve this precision:\n vec2 offset_a = mod(mod(mod(u_pixel_coord_upper, scaled_size_a) * 256.0, scaled_size_a) * 256.0 + u_pixel_coord_lower, scaled_size_a);\n vec2 offset_b = mod(mod(mod(u_pixel_coord_upper, scaled_size_b) * 256.0, scaled_size_b) * 256.0 + u_pixel_coord_lower, scaled_size_b);\n\n v_pos_a = (u_tile_units_to_pixels * a_pos + offset_a) / scaled_size_a;\n v_pos_b = (u_tile_units_to_pixels * a_pos + offset_b) / scaled_size_b;\n}\n"},fillExtrude:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nvarying vec4 v_color;\n#ifdef MAPBOX_GL_JS\n#pragma mapbox: define lowp float minH\n#pragma mapbox: define lowp float maxH\n#endif\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n#ifdef MAPBOX_GL_JS\n #pragma mapbox: initialize lowp float minH\n #pragma mapbox: initialize lowp float maxH\n#endif\n #pragma mapbox: initialize lowp vec4 color\n\n gl_FragColor = v_color;\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform vec3 u_lightcolor;\nuniform lowp vec3 u_lightpos;\nuniform lowp float u_lightintensity;\nuniform lowp vec4 u_outline_color;\n\nattribute vec2 a_pos;\nattribute vec3 a_normal;\nattribute float a_edgedistance;\n\nvarying vec4 v_color;\n\n#ifndef MAPBOX_GL_JS\nattribute float minH;\nattribute float maxH;\n#else\n#pragma mapbox: define lowp float minH\n#pragma mapbox: define lowp float maxH\n#endif\n\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n#ifdef MAPBOX_GL_JS\n #pragma mapbox: initialize lowp float minH\n #pragma mapbox: initialize lowp float maxH\n#endif\n #pragma mapbox: initialize lowp vec4 color\n\n float ed = a_edgedistance; // use each attrib in order to not trip a VAO assert\n float t = mod(a_normal.x, 2.0);\n\n gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? maxH : minH, 1);\n\n#ifdef OUTLINE\n color = u_outline_color;\n#endif\n\n // Relative luminance (how dark/bright is the surface color?)\n float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;\n\n v_color = vec4(0.0, 0.0, 0.0, 1.0);\n\n // Add slight ambient lighting so no extrusions are totally black\n vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);\n color += ambientlight;\n\n // Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray\n float directional = clamp(dot(a_normal / 16384.0, u_lightpos), 0.0, 1.0);\n\n // Adjust directional so that\n // the range of values for highlight/shading is narrower\n // with lower light intensity\n // and with lighter/brighter surface colors\n directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);\n\n // Add gradient along z axis of side surfaces\n if (a_normal.y != 0.0) {\n directional *= clamp((t + minH) * pow(maxH / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\n }\n\n // Assign final color based on surface + ambient light color, diffuse light directional, and light color\n // with lower bounds adjusted to hue of light\n // so that shading is tinted with the complementary (opposite) color to the light color\n v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);\n v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);\n v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);\n}\n"},fillExtrudePattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_mix;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec4 v_lighting;\n\n#ifdef MAPBOX_GL_JS\n#pragma mapbox: define lowp float minH\n#pragma mapbox: define lowp float maxH\n#endif\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n#ifdef MAPBOX_GL_JS\n #pragma mapbox: initialize lowp float minH\n #pragma mapbox: initialize lowp float maxH\n#endif\n #pragma mapbox: initialize lowp vec4 color\n\n vec2 imagecoord = mod(v_pos_a, 1.0);\n vec2 pos = mix(u_pattern_tl_a, u_pattern_br_a, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord_b = mod(v_pos_b, 1.0);\n vec2 pos2 = mix(u_pattern_tl_b, u_pattern_br_b, imagecoord_b);\n vec4 color2 = texture2D(u_image, pos2);\n\n vec4 mixedColor = mix(color1, color2, u_mix);\n\n gl_FragColor = mixedColor * v_lighting;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pixel_coord_upper;\nuniform vec2 u_pixel_coord_lower;\nuniform float u_scale_a;\nuniform float u_scale_b;\nuniform float u_tile_units_to_pixels;\nuniform float u_height_factor;\n\nuniform vec3 u_lightcolor;\nuniform lowp vec3 u_lightpos;\nuniform lowp float u_lightintensity;\n\nattribute vec2 a_pos;\nattribute vec3 a_normal;\nattribute float a_edgedistance;\n\nvarying vec2 v_pos_a;\nvarying vec2 v_pos_b;\nvarying vec4 v_lighting;\nvarying float v_directional;\n\n#ifndef MAPBOX_GL_JS\nattribute float minH;\nattribute float maxH;\n#else\n#pragma mapbox: define lowp float minH\n#pragma mapbox: define lowp float maxH\n#endif\n\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n#ifdef MAPBOX_GL_JS\n #pragma mapbox: initialize lowp float minH\n #pragma mapbox: initialize lowp float maxH\n#endif\n #pragma mapbox: initialize lowp vec4 color\n\n float t = mod(a_normal.x, 2.0);\n float z = t > 0.0 ? maxH : minH;\n\n gl_Position = u_matrix * vec4(a_pos, z, 1);\n\n vec2 scaled_size_a = u_scale_a * u_pattern_size_a;\n vec2 scaled_size_b = u_scale_b * u_pattern_size_b;\n\n // the following offset calculation is duplicated from the regular pattern shader:\n vec2 offset_a = mod(mod(mod(u_pixel_coord_upper, scaled_size_a) * 256.0, scaled_size_a) * 256.0 + u_pixel_coord_lower, scaled_size_a);\n vec2 offset_b = mod(mod(mod(u_pixel_coord_upper, scaled_size_b) * 256.0, scaled_size_b) * 256.0 + u_pixel_coord_lower, scaled_size_b);\n\n if (a_normal.x == 1.0 && a_normal.y == 0.0 && a_normal.z == 16384.0) {\n // extrusion top\n v_pos_a = (u_tile_units_to_pixels * a_pos + offset_a) / scaled_size_a;\n v_pos_b = (u_tile_units_to_pixels * a_pos + offset_b) / scaled_size_b;\n } else {\n // extrusion side\n float hf = z * u_height_factor;\n\n v_pos_a = (u_tile_units_to_pixels * vec2(a_edgedistance, hf) + offset_a) / scaled_size_a;\n v_pos_b = (u_tile_units_to_pixels * vec2(a_edgedistance, hf) + offset_b) / scaled_size_b;\n }\n\n v_lighting = vec4(0.0, 0.0, 0.0, 1.0);\n float directional = clamp(dot(a_normal / 16383.0, u_lightpos), 0.0, 1.0);\n directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);\n\n if (a_normal.y != 0.0) {\n directional *= clamp((t + minH) * pow(maxH / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);\n }\n\n v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));\n}\n"},fillExtrudeTexture:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform sampler2D u_texture;\nuniform float u_opacity;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_FragColor = texture2D(u_texture, v_pos) * u_opacity;\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform int u_xdim;\nuniform int u_ydim;\nattribute vec2 a_pos;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n\n v_pos.x = a_pos.x / float(u_xdim);\n v_pos.y = 1.0 - a_pos.y / float(u_ydim);\n}\n"},line:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform lowp float u_opacity;\nuniform float u_blur;\n\n#pragma mapbox: define lowp vec4 color\n\nvarying vec2 v_linewidth;\nvarying vec2 v_normal;\nvarying float v_gamma_scale;\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 color\n\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float blur = u_blur * v_gamma_scale;\n float alpha = clamp(min(dist - (v_linewidth.t - blur), v_linewidth.s - dist) / blur, 0.0, 1.0);\n\n gl_FragColor = color * (alpha * u_opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\nattribute vec2 a_pos;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform mediump float u_linewidth;\nuniform mediump float u_gapwidth;\nuniform mediump float u_antialiasing;\nuniform mediump float u_extra;\nuniform mat2 u_antialiasingmatrix;\nuniform mediump float u_offset;\nuniform mediump float u_blur;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 color\n\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n float inset = u_gapwidth + (u_gapwidth > 0.0 ? u_antialiasing : 0.0);\n float outset = u_gapwidth + u_linewidth * (u_gapwidth > 0.0 ? 2.0 : 1.0) + u_antialiasing;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset = u_offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5) + (offset + dist) / u_ratio, 0.0, 1.0);\n\n // position of y on the screen\n float y = gl_Position.y / gl_Position.w;\n\n // how much features are squished in the y direction by the tilt\n float squish_scale = length(a_extrude) / length(u_antialiasingmatrix * a_extrude);\n\n // how much features are squished in all directions by the perspectiveness\n float perspective_scale = 1.0 / (1.0 - min(y * u_extra, 0.9));\n\n v_linewidth = vec2(outset, inset);\n v_gamma_scale = perspective_scale * squish_scale;\n}\n"},linePattern:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_blur;\n\nuniform vec2 u_pattern_size_a;\nuniform vec2 u_pattern_size_b;\nuniform vec2 u_pattern_tl_a;\nuniform vec2 u_pattern_br_a;\nuniform vec2 u_pattern_tl_b;\nuniform vec2 u_pattern_br_b;\nuniform float u_fade;\nuniform float u_opacity;\n\nuniform sampler2D u_image;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying float v_linesofar;\nvarying float v_gamma_scale;\n\nvoid main() {\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float blur = u_blur * v_gamma_scale;\n float alpha = clamp(min(dist - (v_linewidth.t - blur), v_linewidth.s - dist) / blur, 0.0, 1.0);\n\n float x_a = mod(v_linesofar / u_pattern_size_a.x, 1.0);\n float x_b = mod(v_linesofar / u_pattern_size_b.x, 1.0);\n float y_a = 0.5 + (v_normal.y * v_linewidth.s / u_pattern_size_a.y);\n float y_b = 0.5 + (v_normal.y * v_linewidth.s / u_pattern_size_b.y);\n vec2 pos_a = mix(u_pattern_tl_a, u_pattern_br_a, vec2(x_a, y_a));\n vec2 pos_b = mix(u_pattern_tl_b, u_pattern_br_b, vec2(x_b, y_b));\n\n vec4 color = mix(texture2D(u_image, pos_a), texture2D(u_image, pos_b), u_fade);\n\n alpha *= u_opacity;\n\n gl_FragColor = color * alpha;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\n// We scale the distance before adding it to the buffers so that we can store\n// long distances for long segments. Use this value to unscale the distance.\n#define LINE_DISTANCE_SCALE 2.0\n\nattribute vec2 a_pos;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform mediump float u_linewidth;\nuniform mediump float u_gapwidth;\nuniform mediump float u_antialiasing;\nuniform mediump float u_extra;\nuniform mat2 u_antialiasingmatrix;\nuniform mediump float u_offset;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying float v_linesofar;\nvarying float v_gamma_scale;\n\nvoid main() {\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\n\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n float inset = u_gapwidth + (u_gapwidth > 0.0 ? u_antialiasing : 0.0);\n float outset = u_gapwidth + u_linewidth * (u_gapwidth > 0.0 ? 2.0 : 1.0) + u_antialiasing;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset = u_offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5) + (offset + dist) / u_ratio, 0.0, 1.0);\n v_linesofar = a_linesofar;\n\n // position of y on the screen\n float y = gl_Position.y / gl_Position.w;\n\n // how much features are squished in the y direction by the tilt\n float squish_scale = length(a_extrude) / length(u_antialiasingmatrix * a_extrude);\n\n // how much features are squished in all directions by the perspectiveness\n float perspective_scale = 1.0 / (1.0 - min(y * u_extra, 0.9));\n\n v_linewidth = vec2(outset, inset);\n v_gamma_scale = perspective_scale * squish_scale;\n}\n"},lineSDF:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform lowp float u_opacity;\n\nuniform float u_blur;\nuniform sampler2D u_image;\nuniform float u_sdfgamma;\nuniform float u_mix;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying vec2 v_tex_a;\nvarying vec2 v_tex_b;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 color\n\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * v_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float blur = u_blur * v_gamma_scale;\n float alpha = clamp(min(dist - (v_linewidth.t - blur), v_linewidth.s - dist) / blur, 0.0, 1.0);\n\n float sdfdist_a = texture2D(u_image, v_tex_a).a;\n float sdfdist_b = texture2D(u_image, v_tex_b).a;\n float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);\n alpha *= smoothstep(0.5 - u_sdfgamma, 0.5 + u_sdfgamma, sdfdist);\n\n gl_FragColor = color * (alpha * u_opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\n// We scale the distance before adding it to the buffers so that we can store\n// long distances for long segments. Use this value to unscale the distance.\n#define LINE_DISTANCE_SCALE 2.0\n\nattribute vec2 a_pos;\nattribute vec4 a_data;\n\nuniform mat4 u_matrix;\nuniform mediump float u_ratio;\nuniform mediump float u_linewidth;\nuniform mediump float u_gapwidth;\nuniform mediump float u_antialiasing;\nuniform vec2 u_patternscale_a;\nuniform float u_tex_y_a;\nuniform vec2 u_patternscale_b;\nuniform float u_tex_y_b;\nuniform float u_extra;\nuniform mat2 u_antialiasingmatrix;\nuniform mediump float u_offset;\n\nvarying vec2 v_normal;\nvarying vec2 v_linewidth;\nvarying vec2 v_tex_a;\nvarying vec2 v_tex_b;\nvarying float v_gamma_scale;\n\n#pragma mapbox: define lowp vec4 color\n\nvoid main() {\n #pragma mapbox: initialize lowp vec4 color\n\n vec2 a_extrude = a_data.xy - 128.0;\n float a_direction = mod(a_data.z, 4.0) - 1.0;\n float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;\n\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n mediump vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n float inset = u_gapwidth + (u_gapwidth > 0.0 ? u_antialiasing : 0.0);\n float outset = u_gapwidth + u_linewidth * (u_gapwidth > 0.0 ? 2.0 : 1.0) + u_antialiasing;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n mediump vec2 dist = outset * a_extrude * scale;\n\n // Calculate the offset when drawing a line that is to the side of the actual line.\n // We do this by creating a vector that points towards the extrude, but rotate\n // it when we're drawing round end points (a_direction = -1 or 1) since their\n // extrude vector points in another direction.\n mediump float u = 0.5 * a_direction;\n mediump float t = 1.0 - abs(u);\n mediump vec2 offset = u_offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5) + (offset + dist) / u_ratio, 0.0, 1.0);\n\n v_tex_a = vec2(a_linesofar * u_patternscale_a.x, normal.y * u_patternscale_a.y + u_tex_y_a);\n v_tex_b = vec2(a_linesofar * u_patternscale_b.x, normal.y * u_patternscale_b.y + u_tex_y_b);\n\n // position of y on the screen\n float y = gl_Position.y / gl_Position.w;\n\n // how much features are squished in the y direction by the tilt\n float squish_scale = length(a_extrude) / length(u_antialiasingmatrix * a_extrude);\n\n // how much features are squished in all directions by the perspectiveness\n float perspective_scale = 1.0 / (1.0 - min(y * u_extra, 0.9));\n\n v_linewidth = vec2(outset, inset);\n v_gamma_scale = perspective_scale * squish_scale;\n}\n"},raster:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform float u_opacity0;\nuniform float u_opacity1;\nuniform sampler2D u_image0;\nuniform sampler2D u_image1;\nvarying vec2 v_pos0;\nvarying vec2 v_pos1;\n\nuniform float u_brightness_low;\nuniform float u_brightness_high;\n\nuniform float u_saturation_factor;\nuniform float u_contrast_factor;\nuniform vec3 u_spin_weights;\n\nvoid main() {\n\n // read and cross-fade colors from the main and parent tiles\n vec4 color0 = texture2D(u_image0, v_pos0);\n vec4 color1 = texture2D(u_image1, v_pos1);\n vec4 color = color0 * u_opacity0 + color1 * u_opacity1;\n vec3 rgb = color.rgb;\n\n // spin\n rgb = vec3(\n dot(rgb, u_spin_weights.xyz),\n dot(rgb, u_spin_weights.zxy),\n dot(rgb, u_spin_weights.yzx));\n\n // saturation\n float average = (color.r + color.g + color.b) / 3.0;\n rgb += (average - rgb) * u_saturation_factor;\n\n // contrast\n rgb = (rgb - 0.5) * u_contrast_factor + 0.5;\n\n // brightness\n vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);\n vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);\n\n gl_FragColor = vec4(mix(u_high_vec, u_low_vec, rgb), color.a);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform mat4 u_matrix;\nuniform vec2 u_tl_parent;\nuniform float u_scale_parent;\nuniform float u_buffer_scale;\n\nattribute vec2 a_pos;\nattribute vec2 a_texture_pos;\n\nvarying vec2 v_pos0;\nvarying vec2 v_pos1;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos0 = (((a_texture_pos / 32767.0) - 0.5) / u_buffer_scale ) + 0.5;\n v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;\n}\n"},symbolIcon:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform sampler2D u_texture;\nuniform sampler2D u_fadetexture;\nuniform lowp float u_opacity;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n lowp float alpha = texture2D(u_fadetexture, v_fade_tex).a * u_opacity;\n gl_FragColor = texture2D(u_texture, v_tex) * alpha;\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec2 a_texture_pos;\nattribute vec4 a_data;\n\n\n// matrix is for the vertex position.\nuniform mat4 u_matrix;\n\nuniform mediump float u_zoom;\nuniform bool u_rotate_with_map;\nuniform vec2 u_extrude_scale;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\n\nvoid main() {\n vec2 a_tex = a_texture_pos.xy;\n mediump float a_labelminzoom = a_data[0];\n mediump vec2 a_zoom = a_data.pq;\n mediump float a_minzoom = a_zoom[0];\n mediump float a_maxzoom = a_zoom[1];\n\n // u_zoom is the current zoom level adjusted for the change in font size\n mediump float z = 2.0 - step(a_minzoom, u_zoom) - (1.0 - step(a_maxzoom, u_zoom));\n\n vec2 extrude = u_extrude_scale * (a_offset / 64.0);\n if (u_rotate_with_map) {\n gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1);\n gl_Position.z += z * gl_Position.w;\n } else {\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0);\n }\n\n v_tex = a_tex / u_texsize;\n v_fade_tex = vec2(a_labelminzoom / 255.0, 0.0);\n}\n"},symbolSDF:{fragmentSource:"#ifdef GL_ES\nprecision mediump float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nuniform sampler2D u_texture;\nuniform sampler2D u_fadetexture;\nuniform lowp vec4 u_color;\nuniform lowp float u_opacity;\nuniform lowp float u_buffer;\nuniform lowp float u_gamma;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\nvarying float v_gamma_scale;\n\nvoid main() {\n lowp float dist = texture2D(u_texture, v_tex).a;\n lowp float fade_alpha = texture2D(u_fadetexture, v_fade_tex).a;\n lowp float gamma = u_gamma * v_gamma_scale;\n lowp float alpha = smoothstep(u_buffer - gamma, u_buffer + gamma, dist) * fade_alpha;\n\n gl_FragColor = u_color * (alpha * u_opacity);\n\n#ifdef OVERDRAW_INSPECTOR\n gl_FragColor = vec4(1.0);\n#endif\n}\n",vertexSource:"#ifdef GL_ES\nprecision highp float;\n#else\n#define lowp\n#define mediump\n#define highp\n#endif\n\nconst float PI = 3.141592653589793;\n\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec2 a_texture_pos;\nattribute vec4 a_data;\n\n\n// matrix is for the vertex position.\nuniform mat4 u_matrix;\n\nuniform mediump float u_zoom;\nuniform bool u_rotate_with_map;\nuniform bool u_pitch_with_map;\nuniform mediump float u_pitch;\nuniform mediump float u_bearing;\nuniform mediump float u_aspect_ratio;\nuniform vec2 u_extrude_scale;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying vec2 v_fade_tex;\nvarying float v_gamma_scale;\n\nvoid main() {\n vec2 a_tex = a_texture_pos.xy;\n mediump float a_labelminzoom = a_data[0];\n mediump vec2 a_zoom = a_data.pq;\n mediump float a_minzoom = a_zoom[0];\n mediump float a_maxzoom = a_zoom[1];\n\n // u_zoom is the current zoom level adjusted for the change in font size\n mediump float z = 2.0 - step(a_minzoom, u_zoom) - (1.0 - step(a_maxzoom, u_zoom));\n\n // pitch-alignment: map\n // rotation-alignment: map | viewport\n if (u_pitch_with_map) {\n lowp float angle = u_rotate_with_map ? (a_data[1] / 256.0 * 2.0 * PI) : u_bearing;\n lowp float asin = sin(angle);\n lowp float acos = cos(angle);\n mat2 RotationMatrix = mat2(acos, asin, -1.0 * asin, acos);\n vec2 offset = RotationMatrix * a_offset;\n vec2 extrude = u_extrude_scale * (offset / 64.0);\n gl_Position = u_matrix * vec4(a_pos + extrude, 0, 1);\n gl_Position.z += z * gl_Position.w;\n // pitch-alignment: viewport\n // rotation-alignment: map\n } else if (u_rotate_with_map) {\n // foreshortening factor to apply on pitched maps\n // as a label goes from horizontal <=> vertical in angle\n // it goes from 0% foreshortening to up to around 70% foreshortening\n lowp float pitchfactor = 1.0 - cos(u_pitch * sin(u_pitch * 0.75));\n\n lowp float lineangle = a_data[1] / 256.0 * 2.0 * PI;\n\n // use the lineangle to position points a,b along the line\n // project the points and calculate the label angle in projected space\n // this calculation allows labels to be rendered unskewed on pitched maps\n vec4 a = u_matrix * vec4(a_pos, 0, 1);\n vec4 b = u_matrix * vec4(a_pos + vec2(cos(lineangle),sin(lineangle)), 0, 1);\n lowp float angle = atan((b[1]/b[3] - a[1]/a[3])/u_aspect_ratio, b[0]/b[3] - a[0]/a[3]);\n lowp float asin = sin(angle);\n lowp float acos = cos(angle);\n mat2 RotationMatrix = mat2(acos, -1.0 * asin, asin, acos);\n\n vec2 offset = RotationMatrix * (vec2((1.0-pitchfactor)+(pitchfactor*cos(angle*2.0)), 1.0) * a_offset);\n vec2 extrude = u_extrude_scale * (offset / 64.0);\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0);\n gl_Position.z += z * gl_Position.w;\n // pitch-alignment: viewport\n // rotation-alignment: viewport\n } else {\n vec2 extrude = u_extrude_scale * (a_offset / 64.0);\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + vec4(extrude, 0, 0);\n }\n\n v_gamma_scale = (gl_Position.w - 0.5);\n\n v_tex = a_tex / u_texsize;\n v_fade_tex = vec2(a_labelminzoom / 255.0, 0.0);\n}\n"}};module.exports.util="float evaluate_zoom_function_1(const vec4 values, const float t) {\n if (t < 1.0) {\n return mix(values[0], values[1], t);\n } else if (t < 2.0) {\n return mix(values[1], values[2], t - 1.0);\n } else {\n return mix(values[2], values[3], t - 2.0);\n }\n}\nvec4 evaluate_zoom_function_4(const vec4 value0, const vec4 value1, const vec4 value2, const vec4 value3, const float t) {\n if (t < 1.0) {\n return mix(value0, value1, t);\n } else if (t < 2.0) {\n return mix(value1, value2, t - 1.0);\n } else {\n return mix(value2, value3, t - 2.0);\n }\n}\n"},{path:1}],168:[function(require,module,exports){"use strict";var format=require("util").format;function ValidationError(key,value){this.message=(key?key+": ":"")+format.apply(format,Array.prototype.slice.call(arguments,2));if(value!==null&&value!==undefined&&value.__line__){this.line=value.__line__}}module.exports=ValidationError},{util:11 }],169:[function(require,module,exports){"use strict";module.exports=function(output){for(var i=1;i7){return[new ValidationError(key,value,"constants have been deprecated as of v8")]}if(!(value in style.constants)){return[new ValidationError(key,value,'constant "%s" not found',value)]}options=extend({},options,{value:style.constants[value]})}if(valueSpec.function&&getType(value)==="object"){return validateFunction(options)}else if(valueSpec.type&&VALIDATORS[valueSpec.type]){return VALIDATORS[valueSpec.type](options)}else{return validateObject(extend({},options,{valueSpec:valueSpec.type?styleSpec[valueSpec.type]:valueSpec}))}}},{"../error/validation_error":168,"../util/extend":169,"../util/get_type":170,"./validate_array":173,"./validate_boolean":174,"./validate_color":175,"./validate_constants":176,"./validate_enum":177,"./validate_filter":178,"./validate_function":179,"./validate_layer":181,"./validate_number":184,"./validate_object":185,"./validate_source":187,"./validate_string":188}],173:[function(require,module,exports){"use strict";var getType=require("../util/get_type");var validate=require("./validate");var ValidationError=require("../error/validation_error");module.exports=function validateArray(options){var array=options.value;var arraySpec=options.valueSpec;var style=options.style;var styleSpec=options.styleSpec;var key=options.key;var validateArrayElement=options.arrayElementValidator||validate;if(getType(array)!=="array"){return[new ValidationError(key,array,"array expected, %s found",getType(array))]}if(arraySpec.length&&array.length!==arraySpec.length){return[new ValidationError(key,array,"array length %d expected, length %d found",arraySpec.length,array.length)]}if(arraySpec["min-length"]&&array.length7){if(constants){return[new ValidationError(key,constants,"constants have been deprecated as of v8")]}else{return[]}}else{var type=getType(constants);if(type!=="object"){return[new ValidationError(key,constants,"object expected, %s found",type)]}var errors=[];for(var constantName in constants){if(constantName[0]!=="@"){errors.push(new ValidationError(key+"."+constantName,constants[constantName],'constants must start with "@"'))}}return errors}}},{"../error/validation_error":168,"../util/get_type":170}],177:[function(require,module,exports){"use strict";var ValidationError=require("../error/validation_error");var unbundle=require("../util/unbundle_jsonlint");module.exports=function validateEnum(options){var key=options.key;var value=options.value;var valueSpec=options.valueSpec;var errors=[];if(Array.isArray(valueSpec.values)){if(valueSpec.values.indexOf(unbundle(value))===-1){errors.push(new ValidationError(key,value,"expected one of [%s], %s found",valueSpec.values.join(", "),value))}}else{if(Object.keys(valueSpec.values).indexOf(unbundle(value))===-1){errors.push(new ValidationError(key,value,"expected one of [%s], %s found",Object.keys(valueSpec.values).join(", "),value))}}return errors}},{"../error/validation_error":168,"../util/unbundle_jsonlint":171}],178:[function(require,module,exports){"use strict";var ValidationError=require("../error/validation_error");var validateEnum=require("./validate_enum");var getType=require("../util/get_type");var unbundle=require("../util/unbundle_jsonlint");module.exports=function validateFilter(options){var value=options.value;var key=options.key;var styleSpec=options.styleSpec;var type;var errors=[];if(getType(value)!=="array"){return[new ValidationError(key,value,"array expected, %s found",getType(value))]}if(value.length<1){return[new ValidationError(key,value,"filter array must have at least 1 element")]}errors=errors.concat(validateEnum({key:key+"[0]",value:value[0],valueSpec:styleSpec.filter_operator,style:options.style,styleSpec:options.styleSpec}));switch(unbundle(value[0])){case"<":case"<=":case">":case">=":if(value.length>=2&&value[1]=="$type"){errors.push(new ValidationError(key,value,'"$type" cannot be use with operator "%s"',value[0]))}case"==":case"!=":if(value.length!=3){errors.push(new ValidationError(key,value,'filter array for operator "%s" must have 3 elements',value[0]))}case"in":case"!in":if(value.length>=2){type=getType(value[1]);if(type!=="string"){errors.push(new ValidationError(key+"[1]",value[1],"string expected, %s found",type))}else if(value[1][0]==="@"){errors.push(new ValidationError(key+"[1]",value[1],"filter key cannot be a constant"))}}for(var i=2;i=8){if(isPropertyFunction&&!options.valueSpec["property-function"]){errors.push(new ValidationError(options.key,options.value,"property functions not supported"))}else if(isZoomFunction&&!options.valueSpec["zoom-function"]){errors.push(new ValidationError(options.key,options.value,"zoom functions not supported"))}}return errors;function validateFunctionStops(options){if(unbundle(functionValue.type)==="identity"){return[new ValidationError(options.key,options.value,'identity function may not have a "stops" property')]}var errors=[];var value=options.value;errors=errors.concat(validateArray({key:options.key,value:value,valueSpec:options.valueSpec,style:options.style,styleSpec:options.styleSpec,arrayElementValidator:validateFunctionStop}));if(getType(value)==="array"&&value.length===0){errors.push(new ValidationError(options.key,value,"array must have at least one stop"))}return errors}function validateFunctionStop(options){var errors=[];var value=options.value;var key=options.key;if(getType(value)!=="array"){return[new ValidationError(key,value,"array expected, %s found",getType(value))]}if(value.length!==2){return[new ValidationError(key,value,"array length %d expected, length %d found",2,value.length)]}var type=getType(value[0]);if(!stopKeyType)stopKeyType=type;if(type!==stopKeyType){return[new ValidationError(key,value,"%s stop key type must match previous stop key type %s",type,stopKeyType)]}if(type==="object"){if(value[0].zoom===undefined){return[new ValidationError(key,value,"object stop key must have zoom")]}if(value[0].value===undefined){return[new ValidationError(key,value,"object stop key must have value")]}errors=errors.concat(validateObject({key:key+"[0]",value:value[0],valueSpec:{zoom:{}},style:options.style,styleSpec:options.styleSpec,objectElementValidators:{zoom:validateNumber,value:validateValue}}))}else{errors=errors.concat((isZoomFunction?validateNumber:validateValue)({key:key+"[0]",value:value[0],valueSpec:{},style:options.style,styleSpec:options.styleSpec}))}errors=errors.concat(validate({key:key+"[1]",value:value[1],valueSpec:functionValueSpec,style:options.style,styleSpec:options.styleSpec}));if(getType(value[0])==="number"){if(functionValueSpec.function==="piecewise-constant"&&value[0]%1!==0){errors.push(new ValidationError(key+"[0]",value[0],"zoom level for piecewise-constant functions must be an integer"))}if(options.arrayIndex!==0){if(value[0]valueSpec.maximum){return[new ValidationError(key,value,"%s is greater than the maximum value %s",value,valueSpec.maximum)]}return[]}},{"../error/validation_error":168,"../util/get_type":170}],185:[function(require,module,exports){"use strict";var ValidationError=require("../error/validation_error");var getType=require("../util/get_type");var validate=require("./validate");module.exports=function validateObject(options){var key=options.key;var object=options.value;var valueSpec=options.valueSpec;var objectElementValidators=options.objectElementValidators||{};var style=options.style;var styleSpec=options.styleSpec;var errors=[];var type=getType(object);if(type!=="object"){return[new ValidationError(key,object,"object expected, %s found",type)]}for(var objectKey in object){var valueSpecKey=objectKey.split(".")[0];var objectElementSpec=valueSpec&&(valueSpec[valueSpecKey]||valueSpec["*"]);var objectElementValidator=objectElementValidators[valueSpecKey]||objectElementValidators["*"];if(objectElementSpec||objectElementValidator){errors=errors.concat((objectElementValidator||validate)({key:(key?key+".":key)+objectKey,value:object[objectKey],valueSpec:objectElementSpec,style:style,styleSpec:styleSpec,object:object,objectKey:objectKey}))}else if(key!==""&&key.split(".").length!==1){errors.push(new ValidationError(key,object[objectKey],'unknown property "%s"',objectKey))}}for(valueSpecKey in valueSpec){if(valueSpec[valueSpecKey].required&&valueSpec[valueSpecKey]["default"]===undefined&&object[valueSpecKey]===undefined){errors.push(new ValidationError(key,object,'missing required property "%s"',valueSpecKey))}}return errors}},{"../error/validation_error":168,"../util/get_type":170,"./validate":172}],186:[function(require,module,exports){"use strict";var validate=require("./validate");var ValidationError=require("../error/validation_error");module.exports=function validatePaintProperty(options){var key=options.key;var style=options.style;var styleSpec=options.styleSpec;var value=options.value;var propertyKey=options.objectKey;var layerSpec=styleSpec["paint_"+options.layerType];if(!layerSpec)return[];var transitionMatch=propertyKey.match(/^(.*)-transition$/);if(transitionMatch&&layerSpec[transitionMatch[1]]&&layerSpec[transitionMatch[1]].transition){return validate({key:key,value:value,valueSpec:styleSpec.transition,style:style,styleSpec:styleSpec})}else if(options.valueSpec||layerSpec[propertyKey]){return validate({key:options.key,value:value,valueSpec:options.valueSpec||layerSpec[propertyKey],style:style,styleSpec:styleSpec})}else{return[new ValidationError(key,value,'unknown property "%s"',propertyKey)]}}},{"../error/validation_error":168,"./validate":172}],187:[function(require,module,exports){"use strict";var ValidationError=require("../error/validation_error");var unbundle=require("../util/unbundle_jsonlint");var validateObject=require("./validate_object");var validateEnum=require("./validate_enum");module.exports=function validateSource(options){var value=options.value;var key=options.key;var styleSpec=options.styleSpec;var style=options.style;if(!value.type){return[new ValidationError(key,value,'"type" is required')]}var type=unbundle(value.type);switch(type){case"vector":case"raster":var errors=[];errors=errors.concat(validateObject({key:key,value:value,valueSpec:styleSpec.source_tile,style:options.style,styleSpec:styleSpec}));if("url"in value){for(var prop in value){if(["type","url","tileSize"].indexOf(prop)<0){errors.push(new ValidationError(key+"."+prop,value[prop],'a source with a "url" property may not include a "%s" property',prop))}}}return errors;case"geojson":return validateObject({key:key,value:value,valueSpec:styleSpec.source_geojson,style:style,styleSpec:styleSpec});case"video":return validateObject({key:key,value:value,valueSpec:styleSpec.source_video,style:style,styleSpec:styleSpec});case"image":return validateObject({key:key,value:value,valueSpec:styleSpec.source_image,style:style,styleSpec:styleSpec});default:return validateEnum({key:key+".type",value:value.type,valueSpec:{values:["vector","raster","geojson","video","image"]},style:style,styleSpec:styleSpec})}}},{"../error/validation_error":168,"../util/unbundle_jsonlint":171,"./validate_enum":177,"./validate_object":185}],188:[function(require,module,exports){"use strict";var getType=require("../util/get_type");var ValidationError=require("../error/validation_error");module.exports=function validateString(options){var value=options.value;var key=options.key;var type=getType(value);if(type!=="string"){return[new ValidationError(key,value,"string expected, %s found",type)]}return[]}},{"../error/validation_error":168,"../util/get_type":170}],189:[function(require,module,exports){"use strict";var validateConstants=require("./validate/validate_constants");var validate=require("./validate/validate");var latestStyleSpec=require("../reference/latest.min");var validateGlyphsURL=require("./validate/validate_glyphs_url");function validateStyleMin(style,styleSpec){styleSpec=styleSpec||latestStyleSpec;var errors=[];errors=errors.concat(validate({key:"",value:style,valueSpec:styleSpec.$root,styleSpec:styleSpec,style:style,objectElementValidators:{glyphs:validateGlyphsURL}}));if(styleSpec.$version>7&&style.constants){errors=errors.concat(validateConstants({key:"constants",value:style.constants,style:style,styleSpec:styleSpec}))}return sortErrors(errors)}validateStyleMin.source=wrapCleanErrors(require("./validate/validate_source"));validateStyleMin.light=wrapCleanErrors(require("./validate/validate_light"));validateStyleMin.layer=wrapCleanErrors(require("./validate/validate_layer"));validateStyleMin.filter=wrapCleanErrors(require("./validate/validate_filter"));validateStyleMin.paintProperty=wrapCleanErrors(require("./validate/validate_paint_property"));validateStyleMin.layoutProperty=wrapCleanErrors(require("./validate/validate_layout_property"));function sortErrors(errors){return[].concat(errors).sort(function(a,b){return a.line-b.line})}function wrapCleanErrors(inner){return function(){return sortErrors(inner.apply(this,arguments))}}module.exports=validateStyleMin},{"../reference/latest.min":190,"./validate/validate":172,"./validate/validate_constants":176,"./validate/validate_filter":178,"./validate/validate_glyphs_url":180,"./validate/validate_layer":181,"./validate/validate_layout_property":182,"./validate/validate_light":183,"./validate/validate_paint_property":186,"./validate/validate_source":187}],190:[function(require,module,exports){module.exports=require("./v8.min.json")},{"./v8.min.json":191}],191:[function(require,module,exports){module.exports={$version:8,$root:{version:{required:true,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},transition:false},position:{type:"array",default:[1.15,210,30],length:3,value:"number",transition:true,function:"interpolated","zoom-function":true,"property-function":false},color:{type:"color",default:"#ffffff",function:"interpolated","zoom-function":true,"property-function":false,transition:true},intensity:{type:"number",default:.5,minimum:0,maximum:1,function:"interpolated","zoom-function":true,"property-function":false,transition:true}},sources:{required:true,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:true,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_tile","source_geojson","source_video","source_image"],source_tile:{type:{required:true,type:"enum",values:{vector:{},raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},"*":{type:"*"}},source_geojson:{type:{required:true,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},buffer:{type:"number",default:128,maximum:512,minimum:0},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:false},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"}},source_video:{type:{required:true,type:"enum",values:{video:{}}},urls:{required:true,type:"array",value:"string"},coordinates:{required:true,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:true,type:"enum",values:{image:{}}},url:{required:true,type:"string"},coordinates:{required:true,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:true},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},raster:{},background:{}}},metadata:{type:"*"},ref:{type:"string"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:22},maxzoom:{type:"number",minimum:0,maximum:22},interactive:{type:"boolean",default:false},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"},"paint.*":{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_symbol","layout_raster","layout_background"],layout_background:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":true,values:{visible:{},none:{}},default:"visible"}},layout_fill:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":true,values:{visible:{},none:{}},default:"visible"}},layout_circle:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":true,values:{visible:{},none:{}},default:"visible"}},layout_line:{"line-cap":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{butt:{},round:{},square:{}},default:"butt"},"line-join":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{bevel:{},round:{},miter:{}},default:"miter"},"line-miter-limit":{type:"number",default:2,function:"interpolated","zoom-function":true,"property-function":true,requires:[{"line-join":"miter"}]},"line-round-limit":{type:"number",default:1.05,function:"interpolated","zoom-function":true,"property-function":true,requires:[{"line-join":"round"}]},visibility:{type:"enum",function:"piecewise-constant","zoom-function":true,values:{visible:{},none:{}},default:"visible"}},layout_symbol:{"symbol-placement":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{point:{},line:{}},default:"point"},"symbol-spacing":{type:"number",default:250,minimum:1,function:"interpolated","zoom-function":true,"property-function":true,units:"pixels",requires:[{"symbol-placement":"line"}]},"symbol-avoid-edges":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false},"icon-allow-overlap":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["icon-image"]},"icon-ignore-placement":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["icon-image"]},"icon-optional":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["icon-image","text-field"]},"icon-rotation-alignment":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"]},"icon-size":{type:"number",default:1,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,requires:["icon-image"]},"icon-text-fit":{ type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":false,values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"]},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",function:"interpolated","zoom-function":true,"property-function":true,requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}]},"icon-image":{type:"string",function:"piecewise-constant","zoom-function":true,"property-function":true,tokens:true},"icon-rotate":{type:"number",default:0,period:360,function:"interpolated","zoom-function":true,"property-function":true,units:"degrees",requires:["icon-image"]},"icon-padding":{type:"number",default:2,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,units:"pixels",requires:["icon-image"]},"icon-keep-upright":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":"line"}]},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":true,"property-function":true,requires:["icon-image"]},"text-pitch-alignment":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"]},"text-rotation-alignment":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"]},"text-field":{type:"string",function:"piecewise-constant","zoom-function":true,"property-function":true,default:"",tokens:true},"text-font":{type:"array",value:"string",function:"piecewise-constant","zoom-function":true,"property-function":true,default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"]},"text-size":{type:"number",default:16,minimum:0,units:"pixels",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field"]},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field"]},"text-line-height":{type:"number",default:1.2,units:"ems",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field"]},"text-letter-spacing":{type:"number",default:0,units:"ems",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field"]},"text-justify":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{left:{},center:{},right:{}},default:"center",requires:["text-field"]},"text-anchor":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field"]},"text-max-angle":{type:"number",default:45,units:"degrees",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field",{"symbol-placement":"line"}]},"text-rotate":{type:"number",default:0,period:360,units:"degrees",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field"]},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",function:"interpolated","zoom-function":true,"property-function":true,requires:["text-field"]},"text-keep-upright":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:true,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":"line"}]},"text-transform":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"]},"text-offset":{type:"array",value:"number",units:"ems",function:"interpolated","zoom-function":true,"property-function":true,length:2,default:[0,0],requires:["text-field"]},"text-allow-overlap":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["text-field"]},"text-ignore-placement":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["text-field"]},"text-optional":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:false,requires:["text-field","icon-image"]},visibility:{type:"enum",function:"piecewise-constant","zoom-function":true,values:{visible:{},none:{}},default:"visible"}},layout_raster:{visibility:{type:"enum",function:"piecewise-constant","zoom-function":true,values:{visible:{},none:{}},default:"visible"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"}},function_stop:{type:"array",minimum:0,maximum:22,value:["number","color"],length:2},paint:["paint_fill","paint_line","paint_circle","paint_symbol","paint_raster","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",function:"piecewise-constant","zoom-function":true,"property-function":true,default:true},"fill-opacity":{type:"number",function:"interpolated","zoom-function":true,"property-function":true,default:1,minimum:0,maximum:1,transition:true},"fill-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:[{"!":"fill-pattern"}]},"fill-outline-color":{type:"color",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:[{"!":"fill-pattern"},{"fill-antialias":true}]},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"fill-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{}},default:"map",requires:["fill-translate"]},"fill-pattern":{type:"string",function:"piecewise-constant","zoom-function":true,"property-function":true,transition:true},"fill-extrude-height":{type:"number",function:"interpolated","zoom-function":true,"property-function":true,default:0,minimum:0,transition:true},"fill-extrude-base":{type:"number",function:"interpolated","zoom-function":true,"property-function":true,default:0,minimum:0,transition:true,requires:[{"<=":"fill-extrude-height"}]}},paint_line:{"line-opacity":{type:"number",function:"interpolated","zoom-function":true,"property-function":true,default:1,minimum:0,maximum:1,transition:true},"line-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:[{"!":"line-pattern"}]},"line-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"line-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{}},default:"map",requires:["line-translate"]},"line-width":{type:"number",default:1,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"line-gap-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"line-offset":{type:"number",default:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"line-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"line-dasharray":{type:"array",value:"number",function:"piecewise-constant","zoom-function":true,"property-function":true,minimum:0,transition:true,units:"line widths",requires:[{"!":"line-pattern"}]},"line-pattern":{type:"string",function:"piecewise-constant","zoom-function":true,"property-function":true,transition:true}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"circle-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":true,"property-function":true,transition:true},"circle-blur":{type:"number",default:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":true,"property-function":true,transition:true},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels"},"circle-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{}},default:"map",requires:["circle-translate"]},"circle-pitch-scale":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{}},default:"map"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:["icon-image"]},"icon-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:["icon-image"]},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:["icon-image"]},"icon-halo-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels",requires:["icon-image"]},"icon-halo-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels",requires:["icon-image"]},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels",requires:["icon-image"]},"icon-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"]},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:["text-field"]},"text-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:["text-field"]},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",function:"interpolated","zoom-function":true,"property-function":true,transition:true,requires:["text-field"]},"text-halo-width":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels",requires:["text-field"]},"text-halo-blur":{type:"number",default:0,minimum:0,function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels",requires:["text-field"]},"text-translate":{type:"array",value:"number",length:2,default:[0,0],function:"interpolated","zoom-function":true,"property-function":true,transition:true,units:"pixels",requires:["text-field"]},"text-translate-anchor":{type:"enum",function:"piecewise-constant","zoom-function":true,"property-function":true,values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"]}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":true,transition:true},"raster-hue-rotate":{type:"number",default:0,period:360,function:"interpolated","zoom-function":true,transition:true,units:"degrees"},"raster-brightness-min":{type:"number",function:"interpolated","zoom-function":true,default:0,minimum:0,maximum:1,transition:true},"raster-brightness-max":{type:"number",function:"interpolated","zoom-function":true,default:1,minimum:0,maximum:1,transition:true},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,function:"interpolated","zoom-function":true,transition:true},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,function:"interpolated","zoom-function":true,transition:true},"raster-fade-duration":{type:"number",default:300,minimum:0,function:"interpolated","zoom-function":true,transition:true,units:"milliseconds"}},paint_background:{"background-color":{type:"color",default:"#000000",function:"interpolated","zoom-function":true,transition:true,requires:[{"!":"background-pattern"}]},"background-pattern":{type:"string",function:"piecewise-constant","zoom-function":true,transition:true},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,function:"interpolated","zoom-function":true,transition:true}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}}}},{}],192:[function(require,module,exports){"use strict";if(typeof module!=="undefined"&&module.exports){module.exports=isSupported}else if(window){window.mapboxgl=window.mapboxgl||{};window.mapboxgl.supported=isSupported}function isSupported(options){return!!(isBrowser()&&isArraySupported()&&isFunctionSupported()&&isObjectSupported()&&isJSONSupported()&&isWorkerSupported()&&isUint8ClampedArraySupported()&&isWebGLSupportedCached(options&&options.failIfMajorPerformanceCaveat))}function isBrowser(){return typeof window!=="undefined"&&typeof document!=="undefined"}function isArraySupported(){return Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray}function isFunctionSupported(){return Function.prototype&&Function.prototype.bind}function isObjectSupported(){return Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions}function isJSONSupported(){return"JSON"in window&&"parse"in JSON&&"stringify"in JSON}function isWorkerSupported(){return"Worker"in window}function isUint8ClampedArraySupported(){return"Uint8ClampedArray"in window}var isWebGLSupportedCache={};function isWebGLSupportedCached(failIfMajorPerformanceCaveat){if(isWebGLSupportedCache[failIfMajorPerformanceCaveat]===undefined){isWebGLSupportedCache[failIfMajorPerformanceCaveat]=isWebGLSupported(failIfMajorPerformanceCaveat)}return isWebGLSupportedCache[failIfMajorPerformanceCaveat]}isSupported.webGLContextAttributes={antialias:false,alpha:true,stencil:true,depth:true};function isWebGLSupported(failIfMajorPerformanceCaveat){var canvas=document.createElement("canvas");var attributes=Object.create(isSupported.webGLContextAttributes);attributes.failIfMajorPerformanceCaveat=failIfMajorPerformanceCaveat;if(canvas.probablySupportsContext){return canvas.probablySupportsContext("webgl",attributes)||canvas.probablySupportsContext("experimental-webgl",attributes)}else if(canvas.supportsContext){return canvas.supportsContext("webgl",attributes)||canvas.supportsContext("experimental-webgl",attributes)}else{return canvas.getContext("webgl",attributes)||canvas.getContext("experimental-webgl",attributes)}}},{}],193:[function(require,module,exports){"use strict";module.exports=Buffer;var ieee754=require("ieee754");var BufferMethods;function Buffer(length){var arr;if(length&&length.length){arr=length;length=arr.length}var buf=new Uint8Array(length||0);if(arr)buf.set(arr);buf.readUInt32LE=BufferMethods.readUInt32LE;buf.writeUInt32LE=BufferMethods.writeUInt32LE;buf.readInt32LE=BufferMethods.readInt32LE;buf.writeInt32LE=BufferMethods.writeInt32LE;buf.readFloatLE=BufferMethods.readFloatLE;buf.writeFloatLE=BufferMethods.writeFloatLE;buf.readDoubleLE=BufferMethods.readDoubleLE;buf.writeDoubleLE=BufferMethods.writeDoubleLE;buf.toString=BufferMethods.toString;buf.write=BufferMethods.write;buf.slice=BufferMethods.slice;buf.copy=BufferMethods.copy;buf._isBuffer=true;return buf}var lastStr,lastStrEncoded;BufferMethods={readUInt32LE:function(pos){return(this[pos]|this[pos+1]<<8|this[pos+2]<<16)+this[pos+3]*16777216},writeUInt32LE:function(val,pos){this[pos]=val;this[pos+1]=val>>>8;this[pos+2]=val>>>16;this[pos+3]=val>>>24},readInt32LE:function(pos){return(this[pos]|this[pos+1]<<8|this[pos+2]<<16)+(this[pos+3]<<24)},readFloatLE:function(pos){return ieee754.read(this,pos,true,23,4)},readDoubleLE:function(pos){return ieee754.read(this,pos,true,52,8)},writeFloatLE:function(val,pos){return ieee754.write(this,val,pos,true,23,4)},writeDoubleLE:function(val,pos){return ieee754.write(this,val,pos,true,52,8)},toString:function(encoding,start,end){var str="",tmp="";start=start||0;end=Math.min(this.length,end||this.length);for(var i=start;i55295&&c<57344){if(lead){if(c<56320){bytes.push(239,191,189);lead=c;continue}else{c=lead-55296<<10|c-56320|65536;lead=null}}else{if(c>56319||i+1===length)bytes.push(239,191,189);else lead=c;continue}}else if(lead){bytes.push(239,191,189);lead=null}if(c<128)bytes.push(c);else if(c<2048)bytes.push(c>>6|192,c&63|128);else if(c<65536)bytes.push(c>>12|224,c>>6&63|128,c&63|128);else bytes.push(c>>18|240,c>>12&63|128,c>>6&63|128,c&63|128)}return bytes}},{ieee754:195}],194:[function(require,module,exports){(function(global){"use strict";module.exports=Pbf;var Buffer=global.Buffer||require("./buffer");function Pbf(buf){this.buf=!Buffer.isBuffer(buf)?new Buffer(buf||0):buf;this.pos=0;this.length=this.buf.length}Pbf.Varint=0;Pbf.Fixed64=1;Pbf.Bytes=2;Pbf.Fixed32=5;var SHIFT_LEFT_32=(1<<16)*(1<<16),SHIFT_RIGHT_32=1/SHIFT_LEFT_32,POW_2_63=Math.pow(2,63);Pbf.prototype={destroy:function(){this.buf=null},readFields:function(readField,result,end){end=end||this.length;while(this.pos>3,startPos=this.pos;readField(tag,result,this);if(this.pos===startPos)this.skip(val)}return result},readMessage:function(readField,result){return this.readFields(readField,result,this.readVarint()+this.pos)},readFixed32:function(){var val=this.buf.readUInt32LE(this.pos);this.pos+=4;return val},readSFixed32:function(){var val=this.buf.readInt32LE(this.pos);this.pos+=4;return val},readFixed64:function(){var val=this.buf.readUInt32LE(this.pos)+this.buf.readUInt32LE(this.pos+4)*SHIFT_LEFT_32;this.pos+=8;return val},readSFixed64:function(){var val=this.buf.readUInt32LE(this.pos)+this.buf.readInt32LE(this.pos+4)*SHIFT_LEFT_32;this.pos+=8;return val},readFloat:function(){var val=this.buf.readFloatLE(this.pos);this.pos+=4;return val},readDouble:function(){var val=this.buf.readDoubleLE(this.pos);this.pos+=8;return val},readVarint:function(){var buf=this.buf,val,b;b=buf[this.pos++];val=b&127;if(b<128)return val;b=buf[this.pos++];val|=(b&127)<<7;if(b<128)return val;b=buf[this.pos++];val|=(b&127)<<14;if(b<128)return val;b=buf[this.pos++];val|=(b&127)<<21;if(b<128)return val;return readVarintRemainder(val,this)},readVarint64:function(){var startPos=this.pos,val=this.readVarint();if(val127){}else if(type===Pbf.Bytes)this.pos=this.readVarint()+this.pos;else if(type===Pbf.Fixed32)this.pos+=4;else if(type===Pbf.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+type)},writeTag:function(tag,type){this.writeVarint(tag<<3|type)},realloc:function(min){var length=this.length||16;while(length268435455){writeBigVarint(val,this);return}this.realloc(4);this.buf[this.pos++]=val&127|(val>127?128:0);if(val<=127)return;this.buf[this.pos++]=(val>>>=7)&127|(val>127?128:0);if(val<=127)return;this.buf[this.pos++]=(val>>>=7)&127|(val>127?128:0);if(val<=127)return;this.buf[this.pos++]=val>>>7&127},writeSVarint:function(val){this.writeVarint(val<0?-val*2-1:val*2)},writeBoolean:function(val){this.writeVarint(Boolean(val))},writeString:function(str){str=String(str);var bytes=Buffer.byteLength(str);this.writeVarint(bytes);this.realloc(bytes);this.buf.write(str,this.pos);this.pos+=bytes},writeFloat:function(val){this.realloc(4);this.buf.writeFloatLE(val,this.pos);this.pos+=4},writeDouble:function(val){this.realloc(8);this.buf.writeDoubleLE(val,this.pos);this.pos+=8},writeBytes:function(buffer){var len=buffer.length;this.writeVarint(len);this.realloc(len);for(var i=0;i=128)reallocForRawMessage(startPos,len,this);this.pos=startPos-1;this.writeVarint(len);this.pos+=len},writeMessage:function(tag,fn,obj){this.writeTag(tag,Pbf.Bytes);this.writeRawMessage(fn,obj)},writePackedVarint:function(tag,arr){this.writeMessage(tag,writePackedVarint,arr)},writePackedSVarint:function(tag,arr){this.writeMessage(tag,writePackedSVarint,arr)},writePackedBoolean:function(tag,arr){this.writeMessage(tag,writePackedBoolean,arr)},writePackedFloat:function(tag,arr){this.writeMessage(tag,writePackedFloat,arr)},writePackedDouble:function(tag,arr){this.writeMessage(tag,writePackedDouble,arr)},writePackedFixed32:function(tag,arr){this.writeMessage(tag,writePackedFixed32,arr)},writePackedSFixed32:function(tag,arr){this.writeMessage(tag,writePackedSFixed32,arr)},writePackedFixed64:function(tag,arr){this.writeMessage(tag,writePackedFixed64,arr)},writePackedSFixed64:function(tag,arr){this.writeMessage(tag,writePackedSFixed64,arr)},writeBytesField:function(tag,buffer){this.writeTag(tag,Pbf.Bytes);this.writeBytes(buffer)},writeFixed32Field:function(tag,val){this.writeTag(tag,Pbf.Fixed32);this.writeFixed32(val)},writeSFixed32Field:function(tag,val){this.writeTag(tag,Pbf.Fixed32);this.writeSFixed32(val)},writeFixed64Field:function(tag,val){this.writeTag(tag,Pbf.Fixed64);this.writeFixed64(val)},writeSFixed64Field:function(tag,val){this.writeTag(tag,Pbf.Fixed64);this.writeSFixed64(val)},writeVarintField:function(tag,val){this.writeTag(tag,Pbf.Varint);this.writeVarint(val)},writeSVarintField:function(tag,val){this.writeTag(tag,Pbf.Varint);this.writeSVarint(val)},writeStringField:function(tag,str){this.writeTag(tag,Pbf.Bytes);this.writeString(str)},writeFloatField:function(tag,val){this.writeTag(tag,Pbf.Fixed32);this.writeFloat(val)},writeDoubleField:function(tag,val){this.writeTag(tag,Pbf.Fixed64);this.writeDouble(val)},writeBooleanField:function(tag,val){this.writeVarintField(tag,Boolean(val))}};function readVarintRemainder(val,pbf){var buf=pbf.buf,b;b=buf[pbf.pos++];val+=(b&127)*268435456;if(b<128)return val;b=buf[pbf.pos++];val+=(b&127)*34359738368;if(b<128)return val;b=buf[pbf.pos++];val+=(b&127)*4398046511104;if(b<128)return val;b=buf[pbf.pos++];val+=(b&127)*562949953421312;if(b<128)return val;b=buf[pbf.pos++];val+=(b&127)*72057594037927940;if(b<128)return val;b=buf[pbf.pos++];val+=(b&127)*0x8000000000000000;if(b<128)return val;throw new Error("Expected varint not more than 10 bytes")}function writeBigVarint(val,pbf){pbf.realloc(10);var maxPos=pbf.pos+10;while(val>=1){if(pbf.pos>=maxPos)throw new Error("Given varint doesn't fit into 10 bytes");var b=val&255;pbf.buf[pbf.pos++]=b|(val>=128?128:0);val/=128}}function reallocForRawMessage(startPos,len,pbf){var extraLen=len<=16383?1:len<=2097151?2:len<=268435455?3:Math.ceil(Math.log(len)/(Math.LN2*7));pbf.realloc(extraLen);for(var i=pbf.pos-1;i>=startPos;i--)pbf.buf[i+extraLen]=pbf.buf[i]}function writePackedVarint(arr,pbf){for(var i=0;i>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],196:[function(require,module,exports){"use strict";module.exports=Point;function Point(x,y){this.x=x;this.y=y}Point.prototype={clone:function(){return new Point(this.x,this.y)},add:function(p){return this.clone()._add(p)},sub:function(p){return this.clone()._sub(p)},mult:function(k){return this.clone()._mult(k)},div:function(k){return this.clone()._div(k)},rotate:function(a){return this.clone()._rotate(a)},matMult:function(m){return this.clone()._matMult(m)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(p){return this.x===p.x&&this.y===p.y},dist:function(p){return Math.sqrt(this.distSqr(p))},distSqr:function(p){var dx=p.x-this.x,dy=p.y-this.y;return dx*dx+dy*dy},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(b){return Math.atan2(this.y-b.y,this.x-b.x)},angleWith:function(b){return this.angleWithSep(b.x,b.y)},angleWithSep:function(x,y){return Math.atan2(this.x*y-this.y*x,this.x*x+this.y*y)},_matMult:function(m){var x=m[0]*this.x+m[1]*this.y,y=m[2]*this.x+m[3]*this.y;this.x=x;this.y=y;return this},_add:function(p){this.x+=p.x;this.y+=p.y;return this},_sub:function(p){this.x-=p.x;this.y-=p.y;return this},_mult:function(k){this.x*=k;this.y*=k;return this},_div:function(k){this.x/=k;this.y/=k;return this},_unit:function(){this._div(this.mag());return this},_perp:function(){var y=this.y;this.y=this.x;this.x=-y;return this},_rotate:function(angle){var cos=Math.cos(angle),sin=Math.sin(angle),x=cos*this.x-sin*this.y,y=sin*this.x+cos*this.y;this.x=x;this.y=y;return this},_round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this}};Point.convert=function(a){if(a instanceof Point){return a}if(Array.isArray(a)){return new Point(a[0],a[1])}return a}},{}],197:[function(require,module,exports){"use strict";module.exports=partialSort;function partialSort(arr,k,left,right,compare){left=left||0;right=right||arr.length-1;compare=compare||defaultCompare;while(right>left){ if(right-left>600){var n=right-left+1;var m=k-left+1;var z=Math.log(n);var s=.5*Math.exp(2*z/3);var sd=.5*Math.sqrt(z*s*(n-s)/n)*(m-n/2<0?-1:1);var newLeft=Math.max(left,Math.floor(k-m*s/n+sd));var newRight=Math.min(right,Math.floor(k+(n-m)*s/n+sd));partialSort(arr,k,newLeft,newRight,compare)}var t=arr[k];var i=left;var j=right;swap(arr,left,k);if(compare(arr[right],t)>0)swap(arr,left,right);while(i0)j--}if(compare(arr[left],t)===0)swap(arr,left,j);else{j++;swap(arr,j,right)}if(j<=k)left=j+1;if(k<=j)right=j-1}}function swap(arr,i,j){var tmp=arr[i];arr[i]=arr[j];arr[j]=tmp}function defaultCompare(a,b){return ab?1:0}},{}],198:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):global.ShelfPack=factory()})(this,function(){function ShelfPack(w,h,options){options=options||{};this.w=w||64;this.h=h||64;this.autoResize=!!options.autoResize;this.shelves=[];this.stats={};this.count=function(h){this.stats[h]=(this.stats[h]|0)+1}}ShelfPack.prototype.pack=function(bins,options){bins=[].concat(bins);options=options||{};var results=[],w,h,allocation;for(var i=0;i0){var w2=0;var h2=0;for(var j=0;jshelf.h||w>shelf.free){continue}if(hw1){w2=Math.max(w,w1)*2}if(h1h1){h2=Math.max(h,h1)*2}this.resize(w2,h2);return this.packOne(w,h)}return null};ShelfPack.prototype.clear=function(){this.shelves=[];this.stats={}};ShelfPack.prototype.resize=function(w,h){this.w=w;this.h=h;for(var i=0;ithis.free||h>this.h){return null}var x=this.x;this.x+=w;this.free-=w;return{x:x,y:this.y,w:w,h:h,width:w,height:h}};Shelf.prototype.resize=function(w){this.free+=w-this.w;this.w=w;return true};return ShelfPack})},{}],199:[function(require,module,exports){"use strict";var kdbush=require("kdbush");module.exports=supercluster;function supercluster(options){return new SuperCluster(options)}function SuperCluster(options){this.options=extend(Object.create(this.options),options);this.trees=new Array(this.options.maxZoom+1)}SuperCluster.prototype={options:{minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:false},load:function(points){var log=this.options.log;if(log)console.time("total time");var timerId="prepare "+points.length+" points";if(log)console.time(timerId);this.points=points;var clusters=points.map(createPointCluster);if(log)console.timeEnd(timerId);for(var z=this.options.maxZoom;z>=this.options.minZoom;z--){var now=+Date.now();this.trees[z+1]=kdbush(clusters,getX,getY,this.options.nodeSize,Float32Array);clusters=this._cluster(clusters,z);if(log)console.log("z%d: %d clusters in %dms",z,clusters.length,+Date.now()-now)}this.trees[this.options.minZoom]=kdbush(clusters,getX,getY,this.options.nodeSize,Float32Array);if(log)console.timeEnd("total time");return this},getClusters:function(bbox,zoom){var tree=this.trees[this._limitZoom(zoom)];var ids=tree.range(lngX(bbox[0]),latY(bbox[3]),lngX(bbox[2]),latY(bbox[1]));var clusters=[];for(var i=0;i=1e4?Math.round(count/1e3)+"k":count>=1e3?Math.round(count/100)/10+"k":count;return{cluster:true,point_count:count,point_count_abbreviated:abbrev}}function lngX(lng){return lng/360+.5}function latY(lat){var sin=Math.sin(lat*Math.PI/180),y=.5-.25*Math.log((1+sin)/(1-sin))/Math.PI;return y<0?0:y>1?1:y}function xLng(x){return(x-.5)*360}function yLat(y){var y2=(180-y*360)*Math.PI/180;return 360*Math.atan(Math.exp(y2))/Math.PI-90}function extend(dest,src){for(var id in src)dest[id]=src[id];return dest}function getX(p){return p.x}function getY(p){return p.y}},{kdbush:200}],200:[function(require,module,exports){"use strict";var sort=require("./sort");var range=require("./range");var within=require("./within");module.exports=kdbush;function kdbush(points,getX,getY,nodeSize,ArrayType){return new KDBush(points,getX,getY,nodeSize,ArrayType)}function KDBush(points,getX,getY,nodeSize,ArrayType){getX=getX||defaultGetX;getY=getY||defaultGetY;ArrayType=ArrayType||Array;this.nodeSize=nodeSize||64;this.points=points;this.ids=new ArrayType(points.length);this.coords=new ArrayType(points.length*2);for(var i=0;i=minX&&x<=maxX&&y>=minY&&y<=maxY)result.push(ids[i])}continue}var m=Math.floor((left+right)/2);x=coords[2*m];y=coords[2*m+1];if(x>=minX&&x<=maxX&&y>=minY&&y<=maxY)result.push(ids[m]);var nextAxis=(axis+1)%2;if(axis===0?minX<=x:minY<=y){stack.push(left);stack.push(m-1);stack.push(nextAxis)}if(axis===0?maxX>=x:maxY>=y){stack.push(m+1);stack.push(right);stack.push(nextAxis)}}return result}},{}],202:[function(require,module,exports){"use strict";module.exports=sortKD;function sortKD(ids,coords,nodeSize,left,right,depth){if(right-left<=nodeSize)return;var m=Math.floor((left+right)/2);select(ids,coords,m,left,right,depth%2);sortKD(ids,coords,nodeSize,left,m-1,depth+1);sortKD(ids,coords,nodeSize,m+1,right,depth+1)}function select(ids,coords,k,left,right,inc){while(right>left){if(right-left>600){var n=right-left+1;var m=k-left+1;var z=Math.log(n);var s=.5*Math.exp(2*z/3);var sd=.5*Math.sqrt(z*s*(n-s)/n)*(m-n/2<0?-1:1);var newLeft=Math.max(left,Math.floor(k-m*s/n+sd));var newRight=Math.min(right,Math.floor(k+(n-m)*s/n+sd));select(ids,coords,k,newLeft,newRight,inc)}var t=coords[2*k+inc];var i=left;var j=right;swapItem(ids,coords,left,k);if(coords[2*right+inc]>t)swapItem(ids,coords,left,right);while(it)j--}if(coords[2*left+inc]===t)swapItem(ids,coords,left,j);else{j++;swapItem(ids,coords,j,right)}if(j<=k)left=j+1;if(k<=j)right=j-1}}function swapItem(ids,coords,i,j){swap(ids,i,j);swap(coords,2*i,2*j);swap(coords,2*i+1,2*j+1)}function swap(arr,i,j){var tmp=arr[i];arr[i]=arr[j];arr[j]=tmp}},{}],203:[function(require,module,exports){"use strict";module.exports=within;function within(ids,coords,qx,qy,r,nodeSize){var stack=[0,ids.length-1,0];var result=[];var r2=r*r;while(stack.length){var axis=stack.pop();var right=stack.pop();var left=stack.pop();if(right-left<=nodeSize){for(var i=left;i<=right;i++){if(sqDist(coords[2*i],coords[2*i+1],qx,qy)<=r2)result.push(ids[i])}continue}var m=Math.floor((left+right)/2);var x=coords[2*m];var y=coords[2*m+1];if(sqDist(x,y,qx,qy)<=r2)result.push(ids[m]);var nextAxis=(axis+1)%2;if(axis===0?qx-r<=x:qy-r<=y){stack.push(left);stack.push(m-1);stack.push(nextAxis)}if(axis===0?qx+r>=x:qy+r>=y){stack.push(m+1);stack.push(right);stack.push(nextAxis)}}return result}function sqDist(ax,ay,bx,by){var dx=ax-bx;var dy=ay-by;return dx*dx+dy*dy}},{}],204:[function(require,module,exports){"use strict";module.exports=TinyQueue;function TinyQueue(data,compare){if(!(this instanceof TinyQueue))return new TinyQueue(data,compare);this.data=data||[];this.length=this.data.length;this.compare=compare||defaultCompare;if(data)for(var i=Math.floor(this.length/2);i>=0;i--)this._down(i)}function defaultCompare(a,b){return ab?1:0}TinyQueue.prototype={push:function(item){this.data.push(item);this.length++;this._up(this.length-1)},pop:function(){var top=this.data[0];this.data[0]=this.data[this.length-1];this.length--;this.data.pop();this._down(0);return top},peek:function(){return this.data[0]},_up:function(pos){var data=this.data,compare=this.compare;while(pos>0){var parent=Math.floor((pos-1)/2);if(compare(data[pos],data[parent])<0){swap(data,parent,pos);pos=parent}else break}},_down:function(pos){var data=this.data,compare=this.compare,len=this.length;while(true){var left=2*pos+1,right=left+1,min=pos;if(leftt1)return t1;while(t0x2){t0=t2}else{t1=t2}t2=(t1-t0)*.5+t0}return t2};UnitBezier.prototype.solve=function(x,epsilon){return this.sampleCurveY(this.solveCurveX(x,epsilon))}},{}],206:[function(require,module,exports){module.exports.VectorTile=require("./lib/vectortile.js");module.exports.VectorTileFeature=require("./lib/vectortilefeature.js");module.exports.VectorTileLayer=require("./lib/vectortilelayer.js")},{"./lib/vectortile.js":207,"./lib/vectortilefeature.js":208,"./lib/vectortilelayer.js":209}],207:[function(require,module,exports){"use strict";var VectorTileLayer=require("./vectortilelayer");module.exports=VectorTile;function VectorTile(pbf,end){this.layers=pbf.readFields(readTile,{},end)}function readTile(tag,layers,pbf){if(tag===3){var layer=new VectorTileLayer(pbf,pbf.readVarint()+pbf.pos);if(layer.length)layers[layer.name]=layer}}},{"./vectortilelayer":209}],208:[function(require,module,exports){"use strict";var Point=require("point-geometry");module.exports=VectorTileFeature;function VectorTileFeature(pbf,end,extent,keys,values){this.properties={};this.extent=extent;this.type=0;this._pbf=pbf;this._geometry=-1;this._keys=keys;this._values=values;pbf.readFields(readFeature,this,end)}function readFeature(tag,feature,pbf){if(tag==1)feature.id=pbf.readVarint();else if(tag==2)readTag(pbf,feature);else if(tag==3)feature.type=pbf.readVarint();else if(tag==4)feature._geometry=pbf.pos}function readTag(pbf,feature){var end=pbf.readVarint()+pbf.pos;while(pbf.pos>3}length--;if(cmd===1||cmd===2){x+=pbf.readSVarint();y+=pbf.readSVarint();if(cmd===1){if(line)lines.push(line);line=[]}line.push(new Point(x,y))}else if(cmd===7){if(line){line.push(line[0].clone())}}else{throw new Error("unknown command "+cmd)}}if(line)lines.push(line);return lines};VectorTileFeature.prototype.bbox=function(){var pbf=this._pbf;pbf.pos=this._geometry;var end=pbf.readVarint()+pbf.pos,cmd=1,length=0,x=0,y=0,x1=Infinity,x2=-Infinity,y1=Infinity,y2=-Infinity;while(pbf.pos>3}length--;if(cmd===1||cmd===2){x+=pbf.readSVarint();y+=pbf.readSVarint();if(xx2)x2=x;if(yy2)y2=y}else if(cmd!==7){throw new Error("unknown command "+cmd)}}return[x1,y1,x2,y2]};VectorTileFeature.prototype.toGeoJSON=function(x,y,z){var size=this.extent*Math.pow(2,z),x0=this.extent*x,y0=this.extent*y,coords=this.loadGeometry(),type=VectorTileFeature.types[this.type],i,j;function project(line){for(var j=0;j>3;value=tag===1?pbf.readString():tag===2?pbf.readFloat():tag===3?pbf.readDouble():tag===4?pbf.readVarint64():tag===5?pbf.readVarint():tag===6?pbf.readSVarint():tag===7?pbf.readBoolean():null}return value}VectorTileLayer.prototype.feature=function(i){if(i<0||i>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[i];var end=this._pbf.readVarint()+this._pbf.pos;return new VectorTileFeature(this._pbf,end,this.extent,this._keys,this._values)}},{"./vectortilefeature.js":208}],210:[function(require,module,exports){var Pbf=require("pbf");var vtpb=require("./vector-tile-pb");var GeoJSONWrapper=require("./lib/geojson_wrapper");module.exports=fromVectorTileJs;module.exports.fromVectorTileJs=fromVectorTileJs;module.exports.fromGeojsonVt=fromGeojsonVt;module.exports.GeoJSONWrapper=GeoJSONWrapper;function fromVectorTileJs(tile){var layers=[];for(var l in tile.layers){layers.push(prepareLayer(tile.layers[l]))}var out=new Pbf;vtpb.tile.write({layers:layers},out);return out.finish()}function fromGeojsonVt(layers){var l={};for(var k in layers){l[k]=new GeoJSONWrapper(layers[k].features);l[k].name=k}return fromVectorTileJs({layers:l})}function prepareLayer(layer){var preparedLayer={name:layer.name||"",version:layer.version||1,extent:layer.extent||4096,keys:[],values:[],features:[]};var keycache={};var valuecache={};for(var i=0;i>31}function encodeGeometry(geometry){var encoded=[];var x=0;var y=0;var rings=geometry.length;for(var r=0;rx1)x1=p1[0];if(p1[1]y1)y1=p1[1]}function bboxGeometry(o){switch(o.type){case"GeometryCollection":o.geometries.forEach(bboxGeometry);break;case"Point":bboxPoint(o.coordinates);break;case"MultiPoint":o.coordinates.forEach(bboxPoint);break}}if(!bbox){var t=transform(topology),p0,p1=new Array(2),name,x0=Infinity,y0=x0,x1=-x0,y1=-x0;topology.arcs.forEach(function(arc){var i=-1,n=arc.length;while(++ix1)x1=p1[0];if(p1[1]y1)y1=p1[1]}});for(name in topology.objects){bboxGeometry(topology.objects[name])}bbox=topology.bbox=[x0,y0,x1,y1]}return bbox};var reverse=function(array,n){var t,j=array.length,i=j-n;while(i<--j)t=array[i],array[i++]=array[j],array[j]=t};var feature=function(topology,o){return o.type==="GeometryCollection"?{type:"FeatureCollection",features:o.geometries.map(function(o){return feature$1(topology,o)})}:feature$1(topology,o)};function feature$1(topology,o){var id=o.id,bbox=o.bbox,properties=o.properties==null?{}:o.properties,geometry=object(topology,o);return id==null&&bbox==null?{type:"Feature",properties:properties,geometry:geometry}:bbox==null?{type:"Feature",id:id,properties:properties,geometry:geometry}:{type:"Feature",id:id,bbox:bbox,properties:properties,geometry:geometry}}function object(topology,o){var transformPoint=transform(topology),arcs=topology.arcs;function arc(i,points){if(points.length)points.pop();for(var a=arcs[i<0?~i:i],k=0,n=a.length;k1)arcs=extractArcs(topology,object$$1,filter);else for(i=0,arcs=new Array(n=topology.arcs.length);i1){for(var i=1,k=area(arcs[0]),ki,t;ik){t=arcs[0],arcs[0]=arcs[i],arcs[i]=t,k=ki}}}return arcs})}}var bisect=function(a,x){var lo=0,hi=a.length;while(lo>>1;if(a[mid]=2))throw new Error("n must be ≥2");if(topology.transform)throw new Error("already quantized");var bb=bbox(topology),name,dx=bb[0],kx=(bb[2]-dx)/(n-1)||1,dy=bb[1],ky=(bb[3]-dy)/(n-1)||1;function quantizePoint(p){p[0]=Math.round((p[0]-dx)/kx);p[1]=Math.round((p[1]-dy)/ky)}function quantizeGeometry(o){switch(o.type){case"GeometryCollection":o.geometries.forEach(quantizeGeometry);break;case"Point":quantizePoint(o.coordinates);break;case"MultiPoint":o.coordinates.forEach(quantizePoint);break}}topology.arcs.forEach(function(arc){var i=1,j=1,n=arc.length,pi=arc[0],x0=pi[0]=Math.round((pi[0]-dx)/kx),y0=pi[1]=Math.round((pi[1]-dy)/ky),pj,x1,y1;for(;i