gas.gl
Version:
HighPerformance Geojson Data Render with WebGL
1 lines • 1.72 MB
JavaScript
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("leaflet"),require("lodash"),require("isomorphic-fetch"),require("react"),require("react-leaflet"));else if("function"==typeof define&&define.amd)define(["leaflet","lodash","isomorphic-fetch","react","react-leaflet"],e);else{var n="object"==typeof exports?e(require("leaflet"),require("lodash"),require("isomorphic-fetch"),require("react"),require("react-leaflet")):e(t.L,t._,t.fetch,t.React,t.ReactLeaflet);for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(window,(function(t,e,n,r,o){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=393)}([function(t,e){function n(t,e,n,i){if(void 0===t)throw new Error("geometry is required");if(e&&e.constructor!==Object)throw new Error("properties must be an Object");if(n&&4!==n.length)throw new Error("bbox must be an Array of 4 numbers");if(i&&-1===["string","number"].indexOf(typeof i))throw new Error("id must be a number or a string");var r={type:"Feature"};return i&&(r.id=i),n&&(r.bbox=n),r.properties=e||{},r.geometry=t,r}function i(t,e,i,r){if(!t)throw new Error("No coordinates passed");if(void 0===t.length)throw new Error("Coordinates must be an array");if(t.length<2)throw new Error("Coordinates must be at least 2 numbers long");if(!p(t[0])||!p(t[1]))throw new Error("Coordinates must contain numbers");return n({type:"Point",coordinates:t},e,i,r)}function r(t,e,i,r){if(!t)throw new Error("No coordinates passed");for(var o=0;o<t.length;o++){var s=t[o];if(s.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");for(var a=0;a<s[s.length-1].length;a++){if(0===o&&0===a&&!p(s[0][0])||!p(s[0][1]))throw new Error("Coordinates must contain numbers");if(s[s.length-1][a]!==s[0][a])throw new Error("First and last Position are not equivalent.")}}return n({type:"Polygon",coordinates:t},e,i,r)}function o(t,e,i,r){if(!t)throw new Error("No coordinates passed");if(t.length<2)throw new Error("Coordinates must be an array of two or more positions");if(!p(t[0][1])||!p(t[0][1]))throw new Error("Coordinates must contain numbers");return n({type:"LineString",coordinates:t},e,i,r)}function s(t,e,i,r){if(!t)throw new Error("No coordinates passed");return n({type:"MultiLineString",coordinates:t},e,i,r)}function a(t,e,i,r){if(!t)throw new Error("No coordinates passed");return n({type:"MultiPoint",coordinates:t},e,i,r)}function u(t,e,i,r){if(!t)throw new Error("No coordinates passed");return n({type:"MultiPolygon",coordinates:t},e,i,r)}var l={miles:3960,nauticalmiles:3441.145,degrees:57.2957795,radians:1,inches:250905600,yards:6969600,meters:6373e3,metres:6373e3,centimeters:6373e5,centimetres:6373e5,kilometers:6373,kilometres:6373,feet:20908792.65},c={kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,centimetres:1e4,millimeter:1e6,acres:247105e-9,miles:386e-9,yards:1.195990046,feet:10.763910417,inches:1550.003100006};function h(t,e){if(null==t)throw new Error("radians is required");var n=l[e||"kilometers"];if(!n)throw new Error("units is invalid");return t*n}function f(t,e){if(null==t)throw new Error("distance is required");var n=l[e||"kilometers"];if(!n)throw new Error("units is invalid");return t/n}function d(t){if(null==t)throw new Error("radians is required");return 180*(t%(2*Math.PI))/Math.PI}function p(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}t.exports={feature:n,geometry:function(t,e,n){if(!t)throw new Error("type is required");if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(n&&4!==n.length)throw new Error("bbox must be an Array of 4 numbers");var l;switch(t){case"Point":l=i(e).geometry;break;case"LineString":l=o(e).geometry;break;case"Polygon":l=r(e).geometry;break;case"MultiPoint":l=a(e).geometry;break;case"MultiLineString":l=s(e).geometry;break;case"MultiPolygon":l=u(e).geometry;break;default:throw new Error(t+" is invalid")}return n&&(l.bbox=n),l},featureCollection:function(t,e,n){if(!t)throw new Error("No features passed");if(!Array.isArray(t))throw new Error("features must be an Array");if(e&&4!==e.length)throw new Error("bbox must be an Array of 4 numbers");if(n&&-1===["string","number"].indexOf(typeof n))throw new Error("id must be a number or a string");var i={type:"FeatureCollection"};return n&&(i.id=n),e&&(i.bbox=e),i.features=t,i},geometryCollection:function(t,e,i,r){if(!t)throw new Error("geometries is required");if(!Array.isArray(t))throw new Error("geometries must be an Array");return n({type:"GeometryCollection",geometries:t},e,i,r)},point:i,multiPoint:a,lineString:o,multiLineString:s,polygon:r,multiPolygon:u,radiansToDistance:h,distanceToRadians:f,distanceToDegrees:function(t,e){return d(f(t,e))},radians2degrees:d,degrees2radians:function(t){if(null==t)throw new Error("degrees is required");return t%360*Math.PI/180},bearingToAngle:function(t){if(null==t)throw new Error("bearing is required");var e=t%360;return e<0&&(e+=360),e},convertDistance:function(t,e,n){if(null==t)throw new Error("distance is required");if(!(t>=0))throw new Error("distance must be a positive number");return h(f(t,e),n||"kilometers")},convertArea:function(t,e,n){if(null==t)throw new Error("area is required");if(!(t>=0))throw new Error("area must be a positive number");var i=c[e||"meters"];if(!i)throw new Error("invalid original units");var r=c[n||"kilometers"];if(!r)throw new Error("invalid final units");return t/i*r},round:function(t,e){if(null==t||isNaN(t))throw new Error("num is required");if(e&&!(e>=0))throw new Error("precision must be a positive number");var n=Math.pow(10,e||0);return Math.round(t*n)/n},isNumber:p}},function(t,e,n){"use strict";function i(t,e,n){if(null!==t){var r,o,s,a,u,l,c,h,f,d,p=0,g=0,v=t.type,m="FeatureCollection"===v,y="Feature"===v,x=m?t.features.length:1;for(r=0;r<x;r++)for(c=(d=!!(f=m?t.features[r].geometry:y?t.geometry:t)&&"GeometryCollection"===f.type)?f.geometries.length:1,o=0;o<c;o++){var E=0;if(null!==(l=d?f.geometries[o]:f)){h=l.coordinates;var b=l.type;switch(p=!n||"Polygon"!==b&&"MultiPolygon"!==b?0:1,b){case null:break;case"Point":e(h,g,r,E),g++,E++;break;case"LineString":case"MultiPoint":for(s=0;s<h.length;s++)e(h[s],g,r,E),g++,"MultiPoint"===b&&E++;"LineString"===b&&E++;break;case"Polygon":case"MultiLineString":for(s=0;s<h.length;s++){for(a=0;a<h[s].length-p;a++)e(h[s][a],g,r,E),g++;"MultiLineString"===b&&E++}"Polygon"===b&&E++;break;case"MultiPolygon":for(s=0;s<h.length;s++){for(a=0;a<h[s].length;a++)for(u=0;u<h[s][a].length-p;u++)e(h[s][a][u],g,r,E),g++;E++}break;case"GeometryCollection":for(s=0;s<l.geometries.length;s++)i(l.geometries[s],e,n);break;default:throw new Error("Unknown Geometry Type")}}}}}function r(t,e,n,r){var o=n;return i(t,(function(t,i,r,s){o=0===i&&void 0===n?t:e(o,t,i,r,s)}),r),o}function o(t,e){var n;switch(t.type){case"FeatureCollection":for(n=0;n<t.features.length;n++)e(t.features[n].properties,n);break;case"Feature":e(t.properties,0)}}function s(t,e,n){var i=n;return o(t,(function(t,r){i=0===r&&void 0===n?t:e(i,t,r)})),i}function a(t,e){if("Feature"===t.type)e(t,0);else if("FeatureCollection"===t.type)for(var n=0;n<t.features.length;n++)e(t.features[n],n)}function u(t,e,n){var i=n;return a(t,(function(t,r){i=0===r&&void 0===n?t:e(i,t,r)})),i}function l(t){var e=[];return i(t,(function(t){e.push(t)})),e}function c(t,e){var n,i,r,o,s,a,u,l,c=0,h="FeatureCollection"===t.type,f="Feature"===t.type,d=h?t.features.length:1;for(n=0;n<d;n++){for(a=h?t.features[n].geometry:f?t.geometry:t,l=h?t.features[n].properties:f?t.properties:{},s=(u=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,r=0;r<s;r++)if(null!==(o=u?a.geometries[r]:a))switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":e(o,c,l);break;case"GeometryCollection":for(i=0;i<o.geometries.length;i++)e(o.geometries[i],c,l);break;default:throw new Error("Unknown Geometry Type")}else e(null,c,l);c++}}function h(t,e,n){var i=n;return c(t,(function(t,r,o){i=0===r&&void 0===n?t:e(i,t,r,o)})),i}function f(t,e){c(t,(function(t,n,i){var r,o=null===t?null:t.type;switch(o){case null:case"Point":case"LineString":case"Polygon":return void e(v(t,i),n,0)}switch(o){case"MultiPoint":r="Point";break;case"MultiLineString":r="LineString";break;case"MultiPolygon":r="Polygon"}t.coordinates.forEach((function(t,o){e(v({type:r,coordinates:t},i),n,o)}))}))}function d(t,e,n){var i=n;return f(t,(function(t,r,o){i=0===r&&0===o&&void 0===n?t:e(i,t,r,o)})),i}function p(t,e){f(t,(function(t,n,i){var o=0;if(t.geometry){var s=t.geometry.type;"Point"!==s&&"MultiPoint"!==s&&r(t,(function(r,s){var a=m([r,s],t.properties);return e(a,n,i,o),o++,s}))}}))}function g(t,e,n){var i=n,r=!1;return p(t,(function(t,o,s,a){i=!1===r&&void 0===n?t:e(i,t,o,s,a),r=!0})),i}function v(t,e){if(void 0===t)throw new Error("No geometry passed");return{type:"Feature",properties:e||{},geometry:t}}function m(t,e){if(!t)throw new Error("No coordinates passed");if(t.length<2)throw new Error("Coordinates must be an array of two or more positions");return{type:"Feature",properties:e||{},geometry:{type:"LineString",coordinates:t}}}function y(t,e){if(!t)throw new Error("geojson is required");var n=t.geometry?t.geometry.type:t.type;if(!n)throw new Error("invalid geojson");if("FeatureCollection"===n)throw new Error("FeatureCollection is not supported");if("GeometryCollection"===n)throw new Error("GeometryCollection is not supported");var i=t.geometry?t.geometry.coordinates:t.coordinates;if(!i)throw new Error("geojson must contain coordinates");switch(n){case"LineString":return void e(i,0,0);case"Polygon":case"MultiLineString":for(var r=0,o=0;o<i.length;o++)"MultiLineString"===n&&(r=o),e(i[o],o,r);return;case"MultiPolygon":for(var s=0;s<i.length;s++)for(var a=0;a<i[s].length;a++)e(i[s][a],a,s);return;default:throw new Error(n+" geometry not supported")}}function x(t,e,n){var i=n;return y(t,(function(t,r,o){i=0===r&&void 0===n?t:e(i,t,r,o)})),i}n.r(e),n.d(e,"coordEach",(function(){return i})),n.d(e,"coordReduce",(function(){return r})),n.d(e,"propEach",(function(){return o})),n.d(e,"propReduce",(function(){return s})),n.d(e,"featureEach",(function(){return a})),n.d(e,"featureReduce",(function(){return u})),n.d(e,"coordAll",(function(){return l})),n.d(e,"geomEach",(function(){return c})),n.d(e,"geomReduce",(function(){return h})),n.d(e,"flattenEach",(function(){return f})),n.d(e,"flattenReduce",(function(){return d})),n.d(e,"segmentEach",(function(){return p})),n.d(e,"segmentReduce",(function(){return g})),n.d(e,"feature",(function(){return v})),n.d(e,"lineString",(function(){return m})),n.d(e,"lineEach",(function(){return y})),n.d(e,"lineReduce",(function(){return x}))},function(t,e){function n(t){if(!t)throw new Error("obj is required");var e;if(t.length?e=t:t.coordinates?e=t.coordinates:t.geometry&&t.geometry.coordinates&&(e=t.geometry.coordinates),e)return i(e),e;throw new Error("No valid coordinates")}function i(t){if(t.length>1&&"number"==typeof t[0]&&"number"==typeof t[1])return!0;if(Array.isArray(t[0])&&t[0].length)return i(t[0]);throw new Error("coordinates must only contain numbers")}function r(t){if(!t)throw new Error("geojson is required");if(void 0!==t.geometry)return t.geometry;if(t.coordinates||t.geometries)return t;throw new Error("geojson must be a valid Feature or Geometry Object")}t.exports={geojsonType:function(t,e,n){if(!e||!n)throw new Error("type and name required");if(!t||t.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+t.type)},collectionOf:function(t,e,n){if(!t)throw new Error("No featureCollection passed");if(!n)throw new Error(".collectionOf() requires a name");if(!t||"FeatureCollection"!==t.type)throw new Error("Invalid input to "+n+", FeatureCollection required");for(var i=0;i<t.features.length;i++){var r=t.features[i];if(!r||"Feature"!==r.type||!r.geometry)throw new Error("Invalid input to "+n+", Feature with geometry required");if(!r.geometry||r.geometry.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+r.geometry.type)}},featureOf:function(t,e,n){if(!t)throw new Error("No feature passed");if(!n)throw new Error(".featureOf() requires a name");if(!t||"Feature"!==t.type||!t.geometry)throw new Error("Invalid input to "+n+", Feature with geometry required");if(!t.geometry||t.geometry.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+t.geometry.type)},getCoord:function(t){if(!t)throw new Error("obj is required");var e=n(t);if(e.length>1&&"number"==typeof e[0]&&"number"==typeof e[1])return e;throw new Error("Coordinate is not a valid Point")},getCoords:n,containsNumber:i,getGeom:r,getGeomType:function(t){if(!t)throw new Error("geojson is required");var e=r(t);if(e)return e.type}}},function(t,e,n){"use strict";e.__esModule=!0;var i,r=n(215),o=(i=r)&&i.__esModule?i:{default:i};e.default=o.default||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}},function(t,e){var n=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(t,e,n){var i=n(2).getCoord,r=n(0).radiansToDistance;t.exports=function(t,e,n){var o=Math.PI/180,s=i(t),a=i(e),u=o*(a[1]-s[1]),l=o*(a[0]-s[0]),c=o*s[1],h=o*a[1],f=Math.pow(Math.sin(u/2),2)+Math.pow(Math.sin(l/2),2)*Math.cos(c)*Math.cos(h);return r(2*Math.atan2(Math.sqrt(f),Math.sqrt(1-f)),n)}},function(t,e,n){var i=n(1).coordEach;t.exports=function(t){var e=[1/0,1/0,-1/0,-1/0];return i(t,(function(t){e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]<t[0]&&(e[2]=t[0]),e[3]<t[1]&&(e[3]=t[1])})),e}},function(t,e,n){var i=n(2),r=i.getCoord,o=i.getCoords;function s(t,e,n){var i=!1;e[0][0]===e[e.length-1][0]&&e[0][1]===e[e.length-1][1]&&(e=e.slice(0,e.length-1));for(var r=0,o=e.length-1;r<e.length;o=r++){var s=e[r][0],a=e[r][1],u=e[o][0],l=e[o][1];if(t[1]*(s-u)+a*(u-t[0])+l*(t[0]-s)==0&&(s-t[0])*(u-t[0])<=0&&(a-t[1])*(l-t[1])<=0)return!n;a>t[1]!=l>t[1]&&t[0]<(u-s)*(t[1]-a)/(l-a)+s&&(i=!i)}return i}t.exports=function(t,e,n){if(!t)throw new Error("point is required");if(!e)throw new Error("polygon is required");var i=r(t),a=o(e),u=e.geometry?e.geometry.type:e.type,l=e.bbox;if(l&&!1===function(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}(i,l))return!1;"Polygon"===u&&(a=[a]);for(var c=0,h=!1;c<a.length&&!h;c++)if(s(i,a[c][0],n)){for(var f=!1,d=1;d<a[c].length&&!f;)s(i,a[c][d],!n)&&(f=!0),d++;f||(h=!0)}return h}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var i=n(80)("wks"),r=n(56),o=n(8).Symbol,s="function"==typeof o;(t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)("Symbol."+t))}).store=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=h(n(3)),r=h(n(275)),o=h(n(19)),s=h(n(39)),a=h(n(34));e.getScale=d,e.lineToPixels=p,e.polygonToPixels=g,e.pixelToPoint=m,e.getPolygonCoords=y,e.getKey=function(t){if("object"!==(void 0===t?"undefined":(0,a.default)(t)))return(0,l.default)(t);if(Array.isArray(t))return v(t);var e=[],n=!0,i=!1,r=void 0;try{for(var u,c=(0,s.default)((0,o.default)(t).sort());!(n=(u=c.next()).done);n=!0){var h=u.value;e.push(h+"_"+t[h])}}catch(t){i=!0,r=t}finally{try{!n&&c.return&&c.return()}finally{if(i)throw r}}return v(e)},e.getValueByKeys=function(t,e,n){return t.split(".").reduce((function(t,e){return t&&null!=t[e]?t[e]:n||null}),e)},e.pointToPixel=x,e.arcToPixel=E,e.meterToPixel=function(t,e,n,i){var r=i.latLngToContainerPoint([0,0]),o=(a=L.latLng([0,0]),u=t,l=a.toBounds(2*u),[(l._southWest.lat+l._northEast.lat)/2,l._northEast.lng]),s=function(t,e){var n=t.toBounds(2*e);return[n._southWest.lat,(n._southWest.lng+n._northEast.lng)/2]}(L.latLng([0,0]),e);var a,u,l;return t=Math.abs(i.latLngToContainerPoint(o).x-r.x),e=Math.abs(i.latLngToContainerPoint(s).y-r.y),{width:t<n?n:t,height:e<n?n:e}},e.meterPerPixel=function(t){return 40075016.686*Math.abs(Math.cos(180*t.getCenter().lat/Math.PI))/Math.pow(2,t.getZoom()+8)},e.arcPerPixel=function(t){var e=t.latLngToContainerPoint([0,0]);return t.latLngToContainerPoint([1,1]).x-e.x},e.isAnyRenderOptionsChange=b,e.between=C,e.distance=w,e.isPointOnLine=S,e.geoJsonToMarkerList=function(t){return t.features.map((function(t){if(t.geometry&&"point"===t.geometry.type.toLowerCase()){var e=(0,r.default)(t.geometry.coordinates,2),n=e[0],o=e[1],s=t.properties||{};return(0,i.default)({},s,{position:[o,n]})}return null})).filter((function(t){return null!==t}))};var u=h(n(15)),l=h(n(279));n(11);var c=n(2);function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){return L.point(t.x,t.y).add(e)}function d(t,e){if(null==e)throw new Error("scaleOpts cannot be empty");return u.default.isArray(e)?e:u.default.isObject(e)?function(t,e){var n=e.domain,i=e.range;if(!u.default.isArray(i)||0===i.length)throw new Error("range must be an not empty array");if(null==n||0===n.length)return i[0];if(!u.default.isArray(n))throw new Error("domain must be an array or void 0");var r=Math.min(n.length,i.length);if(isNaN(t))return i[0];for(var o=0,s=0;s<r-1&&n[s]<t;s++)o=s+1;return i[o]}(t,e):e}function p(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;try{for(var r=[],o=void 0,s=0,a=t.geometry.coordinates.length;s<a;s++){var u=t.geometry.coordinates[s],l=n.latLngToContainerPoint([u[1],u[0]]),c=l;o||e.contains([c.x,c.y])&&(o=!0),i&&(c=f(c,i));var h=r[r.length-1]||{};h.x===c.x&&h.y===c.y||r.push(c)}return 1===r.length&&r.push({x:r[0].x+.1,y:r[0].y+.1}),o?r:null}catch(t){return null}}function g(t,n,i){for(var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=[],s=void 0,a=0,u=t.geometry.coordinates.length;a<u;a++){var l=t.geometry.coordinates[a],c=e.lineToPixels({geometry:{coordinates:l}},n,i,r);if(c&&(c.forEach((function(t){o.push(t)})),!s))for(var h=0,f=c.length;h<f;++h)if(n.contains(c[h])){s=!0;break}}return 1===o.length&&o.push({x:o[0].x+.1,y:o[0].y+.1}),s?o:null}function v(t){return(0,l.default)(t.join("_"))}function m(t,e,n){return n.containerPointToLatLng(L.point(t,e))}function y(t){var e=(0,c.getCoords)(t).reduce((function(t,e){return t.concat(e)}));return e[0][0]===e[e.length-1][0]&&e[0][1]===e[e.length-1][1]||e.push(e[0]),[e]}function x(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=t.geometry.coordinates,o=n.latLngToContainerPoint([r[1],r[0]]),s=o;return e.contains(s)?(i&&(s=f(o,i)),s):null}function E(t,e,n,i){var r=i.latLngToContainerPoint([0,0]);return{width:(t=Math.abs(i.latLngToContainerPoint([0,t]).x-r.x))<n?n:t,height:(e=Math.abs(i.latLngToContainerPoint([e,0]).y-r.y))<n?n:e}}function b(t,e,n){for(var i=0,r=n.length;i<r;i++){var o=n[i];if(t[o]&&!u.default.isEqual(t[o],e[o]))return!0}return!1}function C(t,e,n){if(e>n){var i=n;n=e,e=i}return e<=t&&t<=n}function w(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function _(t,e,n){return t+n*(e-t)}function A(t,e,n,i){var r=e.x-t.x,o=e.y-t.y,s=((n-t.x)*r+(i-t.y)*o)/(r*r+o*o);return{x:_(t.x,e.x,s),y:_(t.y,e.y,s)}}function S(t,e,n,i){for(var r=i/2,o={x:t,y:e},s=0,a=n.length;s<a-1;s++){var u=n[s],l=n[s+1];if(u.x!==l.x){if(u.y!==l.y){if(C(t,u.x,l.x))if(w(A(u,l,t,e),o)<=r)return!0}else if(C(e,u.y+r,u.y-r)&&C(t,u.x,l.x))return!0}else if(C(t,u.x+r,u.x-r)&&C(e,u.y,l.y))return!0}return!1}e.default={getScale:d,polygonToPixels:g,lineToPixels:p,pointToPixel:x,arcToPixel:E,isAnyRenderOptionsChange:b,isPointOnLine:S,distance:w,between:C,pixelToPoint:m,getPolygonCoords:y}},function(e,n){e.exports=t},function(t,e,n){var i=n(8),r=n(4),o=n(37),s=n(23),a=n(24),u=function(t,e,n){var l,c,h,f=t&u.F,d=t&u.G,p=t&u.S,g=t&u.P,v=t&u.B,m=t&u.W,y=d?r:r[e]||(r[e]={}),x=y.prototype,E=d?i:p?i[e]:(i[e]||{}).prototype;for(l in d&&(n=e),n)(c=!f&&E&&void 0!==E[l])&&a(y,l)||(h=c?E[l]:n[l],y[l]=d&&"function"!=typeof E[l]?n[l]:v&&c?o(h,i):m&&E[l]==h?function(t){var e=function(e,n,i){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,i)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(h):g&&"function"==typeof h?o(Function.call,h):h,g&&((y.virtual||(y.virtual={}))[l]=h,t&u.R&&x&&!x[l]&&s(x,l,h)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,n){"use strict";var i=s(n(90)),r=s(n(19)),o=s(n(34));function s(t){return t&&t.__esModule?t:{default:t}}/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */var a,u,l,c,h,f,d,p,g,v,m,y,x,E,b,C,w,_,A,S,D=D||{version:"3.6.2"};if(e.fabric=D,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?D.document=document:D.document=document.implementation.createHTMLDocument(""),D.window=window;else{var L=new(n(!function(){var t=new Error("Cannot find module 'jsdom'");throw t.code="MODULE_NOT_FOUND",t}()).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;D.document=L.document,D.jsdomImplForWrapper=n(280).implForWrapper,D.nodeCanvas=n(281).Canvas,D.window=L,DOMParser=D.window.DOMParser}function F(t,e){var n=t.canvas,i=e.targetCanvas,r=i.getContext("2d");r.translate(0,i.height),r.scale(1,-1);var o=n.height-i.height;r.drawImage(n,0,o,i.width,i.height,0,0,i.width,i.height)}function T(t,e){var n=e.targetCanvas.getContext("2d"),i=e.destinationWidth,r=e.destinationHeight,o=i*r*4,s=new Uint8Array(this.imageBuffer,0,o),a=new Uint8ClampedArray(this.imageBuffer,0,o);t.readPixels(0,0,i,r,t.RGBA,t.UNSIGNED_BYTE,s);var u=new ImageData(a,i,r);n.putImageData(u,0,0)}D.isTouchSupported="ontouchstart"in D.window||"ontouchstart"in D.document||D.window&&D.window.navigator&&D.window.navigator.maxTouchPoints>0,D.isLikelyNode=!1,D.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],D.DPI=96,D.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",D.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,D.reNonWord=/[ \n\.,;!\?\-]/,D.fontPaths={},D.iMatrix=[1,0,0,1,0,0],D.svgNS="http://www.w3.org/2000/svg",D.perfLimitSizeTotal=2097152,D.maxCacheSideLimit=4096,D.minCacheSideLimit=256,D.charWidthsCache={},D.textureSize=2048,D.disableStyleCopyPaste=!1,D.enableGLFiltering=!0,D.devicePixelRatio=D.window.devicePixelRatio||D.window.webkitDevicePixelRatio||D.window.mozDevicePixelRatio||1,D.browserShadowBlurConstant=1,D.arcToSegmentsCache={},D.boundsOfCurveCache={},D.cachesBoundsOfCurve=!0,D.forceGLPutImageData=!1,D.initFilterBackend=function(){return D.enableGLFiltering&&D.isWebglSupported&&D.isWebglSupported(D.textureSize)?(console.log("max texture size: "+D.maxTextureSize),new D.WebglFilterBackend({tileSize:D.textureSize})):D.Canvas2dFilterBackend?new D.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=D),function(){function t(t,e){if(this.__eventListeners[t]){var n=this.__eventListeners[t];e?n[n.indexOf(e)]=!1:D.util.array.fill(n,!1)}}function e(t,e){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var n in t)this.on(n,t[n]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(e);return this}function n(e,n){if(!this.__eventListeners)return this;if(0===arguments.length)for(e in this.__eventListeners)t.call(this,e);else if(1===arguments.length&&"object"===(0,o.default)(arguments[0]))for(var i in e)t.call(this,i,e[i]);else t.call(this,e,n);return this}function i(t,e){if(!this.__eventListeners)return this;var n=this.__eventListeners[t];if(!n)return this;for(var i=0,r=n.length;i<r;i++)n[i]&&n[i].call(this,e||{});return this.__eventListeners[t]=n.filter((function(t){return!1!==t})),this}D.Observable={observe:e,stopObserving:n,fire:i,on:e,off:n,trigger:i}}(),D.Collection={_objects:[],add:function(){if(this._objects.push.apply(this._objects,arguments),this._onObjectAdded)for(var t=0,e=arguments.length;t<e;t++)this._onObjectAdded(arguments[t]);return this.renderOnAddRemove&&this.requestRenderAll(),this},insertAt:function(t,e,n){var i=this._objects;return n?i[e]=t:i.splice(e,0,t),this._onObjectAdded&&this._onObjectAdded(t),this.renderOnAddRemove&&this.requestRenderAll(),this},remove:function(){for(var t,e=this._objects,n=!1,i=0,r=arguments.length;i<r;i++)-1!==(t=e.indexOf(arguments[i]))&&(n=!0,e.splice(t,1),this._onObjectRemoved&&this._onObjectRemoved(arguments[i]));return this.renderOnAddRemove&&n&&this.requestRenderAll(),this},forEachObject:function(t,e){for(var n=this.getObjects(),i=0,r=n.length;i<r;i++)t.call(e,n[i],i,n);return this},getObjects:function(t){return void 0===t?this._objects.concat():this._objects.filter((function(e){return e.type===t}))},item:function(t){return this._objects[t]},isEmpty:function(){return 0===this._objects.length},size:function(){return this._objects.length},contains:function(t){return this._objects.indexOf(t)>-1},complexity:function(){return this._objects.reduce((function(t,e){return t+=e.complexity?e.complexity():0}),0)}},D.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof D.Gradient||this.set(e,new D.Gradient(t))},_initPattern:function(t,e,n){!t||!t.source||t instanceof D.Pattern?n&&n():this.set(e,new D.Pattern(t,n))},_initClipping:function(t){if(t.clipTo&&"string"==typeof t.clipTo){var e=D.util.getFunctionBody(t.clipTo);void 0!==e&&(this.clipTo=new Function("ctx",e))}},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"===(void 0===t?"undefined":(0,o.default)(t))?this._setObject(t):"function"==typeof e&&"clipTo"!==t?this._set(t,e(this.get(t))):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},a=e,u=Math.sqrt,l=Math.atan2,c=Math.pow,h=Math.PI/180,f=Math.PI/2,D.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/f){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/f){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var n=t.indexOf(e);return-1!==n&&t.splice(n,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*h},radiansToDegrees:function(t){return t/h},rotatePoint:function(t,e,n){t.subtractEquals(e);var i=D.util.rotateVector(t,n);return new D.Point(i.x,i.y).addEquals(e)},rotateVector:function(t,e){var n=D.util.sin(e),i=D.util.cos(e);return{x:t.x*i-t.y*n,y:t.x*n+t.y*i}},transformPoint:function(t,e,n){return n?new D.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new D.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var n=0;n<t.length;n++)t[n]=D.util.transformPoint(t[n],e);var i=[t[0].x,t[1].x,t[2].x,t[3].x],r=D.util.array.min(i),o=D.util.array.max(i)-r,s=[t[0].y,t[1].y,t[2].y,t[3].y],a=D.util.array.min(s);return{left:r,top:a,width:o,height:D.util.array.max(s)-a}},invertTransform:function(t){var e=1/(t[0]*t[3]-t[1]*t[2]),n=[e*t[3],-e*t[1],-e*t[2],e*t[0]],i=D.util.transformPoint({x:t[4],y:t[5]},n,!0);return n[4]=-i.x,n[5]=-i.y,n},toFixed:function(t,e){return parseFloat(Number(t).toFixed(e))},parseUnit:function(t,e){var n=/\D{0,2}$/.exec(t),i=parseFloat(t);switch(e||(e=D.Text.DEFAULT_SVG_FONT_SIZE),n[0]){case"mm":return i*D.DPI/25.4;case"cm":return i*D.DPI/2.54;case"in":return i*D.DPI;case"pt":return i*D.DPI/72;case"pc":return i*D.DPI/72*12;case"em":return i*e;default:return i}},falseFunction:function(){return!1},getKlass:function(t,e){return t=D.util.string.camelize(t.charAt(0).toUpperCase()+t.slice(1)),D.util.resolveNamespace(e)[t]},getSvgAttributes:function(t){var e=["instantiated_by_use","style","id","class"];switch(t){case"linearGradient":e=e.concat(["x1","y1","x2","y2","gradientUnits","gradientTransform"]);break;case"radialGradient":e=e.concat(["gradientUnits","gradientTransform","cx","cy","r","fx","fy","fr"]);break;case"stop":e=e.concat(["offset","stop-color","stop-opacity"])}return e},resolveNamespace:function(t){if(!t)return D;var e,n=t.split("."),i=n.length,r=a||D.window;for(e=0;e<i;++e)r=r[n[e]];return r},loadImage:function(t,e,n,i){if(t){var r=D.util.createImage(),o=function(){e&&e.call(n,r),r=r.onload=r.onerror=null};r.onload=o,r.onerror=function(){D.log("Error loading "+r.src),e&&e.call(n,null,!0),r=r.onload=r.onerror=null},0!==t.indexOf("data")&&i&&(r.crossOrigin=i),"data:image/svg"===t.substring(0,14)&&(r.onload=null,D.util.loadImageInDom(r,o)),r.src=t}else e&&e.call(n,t)},loadImageInDom:function(t,e){var n=D.document.createElement("div");n.style.width=n.style.height="1px",n.style.left=n.style.top="-100%",n.style.position="absolute",n.appendChild(t),D.document.querySelector("body").appendChild(n),t.onload=function(){e(),n.parentNode.removeChild(n),n=null}},enlivenObjects:function(t,e,n,i){var r=[],o=0,s=(t=t||[]).length;function a(){++o===s&&e&&e(r.filter((function(t){return t})))}s?t.forEach((function(t,e){t&&t.type?D.util.getKlass(t.type,n).fromObject(t,(function(n,o){o||(r[e]=n),i&&i(t,n,o),a()})):a()})):e&&e(r)},enlivenPatterns:function(t,e){function n(){++r===o&&e&&e(i)}var i=[],r=0,o=(t=t||[]).length;o?t.forEach((function(t,e){t&&t.source?new D.Pattern(t,(function(t){i[e]=t,n()})):(i[e]=t,n())})):e&&e(i)},groupSVGElements:function(t,e,n){var i;return t&&1===t.length?t[0]:(e&&(e.width&&e.height?e.centerPoint={x:e.width/2,y:e.height/2}:(delete e.width,delete e.height)),i=new D.Group(t,e),void 0!==n&&(i.sourcePath=n),i)},populateWithProperties:function(t,e,n){if(n&&"[object Array]"===Object.prototype.toString.call(n))for(var i=0,r=n.length;i<r;i++)n[i]in t&&(e[n[i]]=t[n[i]])},drawDashedLine:function(t,e,n,i,r,o){var s=i-e,a=r-n,c=u(s*s+a*a),h=l(a,s),f=o.length,d=0,p=!0;for(t.save(),t.translate(e,n),t.moveTo(0,0),t.rotate(h),e=0;c>e;)(e+=o[d++%f])>c&&(e=c),t[p?"lineTo":"moveTo"](e,0),p=!p;t.restore()},createCanvasElement:function(){return D.document.createElement("canvas")},copyCanvasElement:function(t){var e=D.util.createCanvasElement();return e.width=t.width,e.height=t.height,e.getContext("2d").drawImage(t,0,0),e},toDataURL:function(t,e,n){return t.toDataURL("image/"+e,n)},createImage:function(){return D.document.createElement("img")},clipContext:function(t,e){e.save(),e.beginPath(),t.clipTo(e),e.clip()},multiplyTransformMatrices:function(t,e,n){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],n?0:t[0]*e[4]+t[2]*e[5]+t[4],n?0:t[1]*e[4]+t[3]*e[5]+t[5]]},qrDecompose:function(t){var e=l(t[1],t[0]),n=c(t[0],2)+c(t[1],2),i=u(n),r=(t[0]*t[3]-t[2]*t[1])/i,o=l(t[0]*t[2]+t[1]*t[3],n);return{angle:e/h,scaleX:i,scaleY:r,skewX:o/h,skewY:0,translateX:t[4],translateY:t[5]}},calcRotateMatrix:function(t){if(!t.angle)return D.iMatrix.concat();var e=D.util.degreesToRadians(t.angle),n=D.util.cos(e),i=D.util.sin(e);return[n,i,-i,n,0,0]},calcDimensionsMatrix:function(t){var e=void 0===t.scaleX?1:t.scaleX,n=void 0===t.scaleY?1:t.scaleY,i=[t.flipX?-e:e,0,0,t.flipY?-n:n,0,0],r=D.util.multiplyTransformMatrices,o=D.util.degreesToRadians;return t.skewX&&(i=r(i,[1,0,Math.tan(o(t.skewX)),1],!0)),t.skewY&&(i=r(i,[1,Math.tan(o(t.skewY)),0,1],!0)),i},composeMatrix:function(t){var e=[1,0,0,1,t.translateX||0,t.translateY||0],n=D.util.multiplyTransformMatrices;return t.angle&&(e=n(e,D.util.calcRotateMatrix(t))),(t.scaleX||t.scaleY||t.skewX||t.skewY||t.flipX||t.flipY)&&(e=n(e,D.util.calcDimensionsMatrix(t))),e},customTransformMatrix:function(t,e,n){return D.util.composeMatrix({scaleX:t,scaleY:e,skewX:n})},resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.rotate(0)},saveObjectTransform:function(t){return{scaleX:t.scaleX,scaleY:t.scaleY,skewX:t.skewX,skewY:t.skewY,angle:t.angle,left:t.left,flipX:t.flipX,flipY:t.flipY,top:t.top}},getFunctionBody:function(t){return(String(t).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(t,e,n,i){i>0&&(e>i?e-=i:e=0,n>i?n-=i:n=0);var r,o=!0,s=t.getImageData(e,n,2*i||1,2*i||1),a=s.data.length;for(r=3;r<a&&!1!=(o=s.data[r]<=0);r+=4);return s=null,o},parsePreserveAspectRatioAttribute:function(t){var e,n="meet",i=t.split(" ");return i&&i.length&&("meet"!==(n=i.pop())&&"slice"!==n?(e=n,n="meet"):i.length&&(e=i.pop())),{meetOrSlice:n,alignX:"none"!==e?e.slice(1,4):"none",alignY:"none"!==e?e.slice(5,8):"none"}},clearFabricFontCache:function(t){(t=(t||"").toLowerCase())?D.charWidthsCache[t]&&delete D.charWidthsCache[t]:D.charWidthsCache={}},limitDimsByArea:function(t,e){var n=Math.sqrt(e*t),i=Math.floor(e/n);return{x:Math.floor(n),y:i}},capValue:function(t,e,n){return Math.max(t,Math.min(e,n))},findScaleToFit:function(t,e){return Math.min(e.width/t.width,e.height/t.height)},findScaleToCover:function(t,e){return Math.max(e.width/t.width,e.height/t.height)},matrixToSVG:function(t){return"matrix("+t.map((function(t){return D.util.toFixed(t,D.Object.NUM_FRACTION_DIGITS)})).join(" ")+")"}},function(){var t=Array.prototype.join;function e(e,r,o,s,a,u,l){var c=t.call(arguments);if(D.arcToSegmentsCache[c])return D.arcToSegmentsCache[c];var h=Math.PI,f=l*h/180,d=D.util.sin(f),p=D.util.cos(f),g=0,v=0,m=-p*e*.5-d*r*.5,y=-p*r*.5+d*e*.5,x=(o=Math.abs(o))*o,E=(s=Math.abs(s))*s,b=y*y,C=m*m,w=x*E-x*b-E*C,_=0;if(w<0){var A=Math.sqrt(1-w/(x*E));o*=A,s*=A}else _=(a===u?-1:1)*Math.sqrt(w/(x*b+E*C));var S=_*o*y/s,L=-_*s*m/o,F=p*S-d*L+.5*e,T=d*S+p*L+.5*r,M=i(1,0,(m-S)/o,(y-L)/s),I=i((m-S)/o,(y-L)/s,(-m-S)/o,(-y-L)/s);0===u&&I>0?I-=2*h:1===u&&I<0&&(I+=2*h);for(var P=Math.ceil(Math.abs(I/h*2)),O=[],B=I/P,N=8/3*Math.sin(B/4)*Math.sin(B/4)/Math.sin(B/2),k=M+B,R=0;R<P;R++)O[R]=n(M,k,p,d,o,s,F,T,N,g,v),g=O[R][4],v=O[R][5],M=k,k+=B;return D.arcToSegmentsCache[c]=O,O}function n(t,e,n,i,r,o,s,a,u,l,c){var h=D.util.cos(t),f=D.util.sin(t),d=D.util.cos(e),p=D.util.sin(e),g=n*r*d-i*o*p+s,v=i*r*d+n*o*p+a;return[l+u*(-n*r*f-i*o*h),c+u*(-i*r*f+n*o*h),g+u*(n*r*p+i*o*d),v+u*(i*r*p-n*o*d),g,v]}function i(t,e,n,i){var r=Math.atan2(e,t),o=Math.atan2(i,n);return o>=r?o-r:2*Math.PI-(r-o)}function r(e,n,i,r,o,s,a,u){var l;if(D.cachesBoundsOfCurve&&(l=t.call(arguments),D.boundsOfCurveCache[l]))return D.boundsOfCurveCache[l];var c,h,f,d,p,g,v,m,y=Math.sqrt,x=Math.min,E=Math.max,b=Math.abs,C=[],w=[[],[]];h=6*e-12*i+6*o,c=-3*e+9*i-9*o+3*a,f=3*i-3*e;for(var _=0;_<2;++_)if(_>0&&(h=6*n-12*r+6*s,c=-3*n+9*r-9*s+3*u,f=3*r-3*n),b(c)<1e-12){if(b(h)<1e-12)continue;0<(d=-f/h)&&d<1&&C.push(d)}else(v=h*h-4*f*c)<0||(0<(p=(-h+(m=y(v)))/(2*c))&&p<1&&C.push(p),0<(g=(-h-m)/(2*c))&&g<1&&C.push(g));for(var A,S,L,F=C.length,T=F;F--;)A=(L=1-(d=C[F]))*L*L*e+3*L*L*d*i+3*L*d*d*o+d*d*d*a,w[0][F]=A,S=L*L*L*n+3*L*L*d*r+3*L*d*d*s+d*d*d*u,w[1][F]=S;w[0][T]=e,w[1][T]=n,w[0][T+1]=a,w[1][T+1]=u;var M=[{x:x.apply(null,w[0]),y:x.apply(null,w[1])},{x:E.apply(null,w[0]),y:E.apply(null,w[1])}];return D.cachesBoundsOfCurve&&(D.boundsOfCurveCache[l]=M),M}D.util.drawArc=function(t,n,i,r){for(var o=r[0],s=r[1],a=r[2],u=r[3],l=r[4],c=[[],[],[],[]],h=e(r[5]-n,r[6]-i,o,s,u,l,a),f=0,d=h.length;f<d;f++)c[f][0]=h[f][0]+n,c[f][1]=h[f][1]+i,c[f][2]=h[f][2]+n,c[f][3]=h[f][3]+i,c[f][4]=h[f][4]+n,c[f][5]=h[f][5]+i,t.bezierCurveTo.apply(t,c[f])},D.util.getBoundsOfArc=function(t,n,i,o,s,a,u,l,c){for(var h,f=0,d=0,p=[],g=e(l-t,c-n,i,o,a,u,s),v=0,m=g.length;v<m;v++)h=r(f,d,g[v][0],g[v][1],g[v][2],g[v][3],g[v][4],g[v][5]),p.push({x:h[0].x+t,y:h[0].y+n}),p.push({x:h[1].x+t,y:h[1].y+n}),f=g[v][4],d=g[v][5];return p},D.util.getBoundsOfCurve=r}(),function(){var t=Array.prototype.slice;function e(t,e,n){if(t&&0!==t.length){var i=t.length-1,r=e?t[i][e]:t[i];if(e)for(;i--;)n(t[i][e],r)&&(r=t[i][e]);else for(;i--;)n(t[i],r)&&(r=t[i]);return r}}D.util.array={fill:function(t,e){for(var n=t.length;n--;)t[n]=e;return t},invoke:function(e,n){for(var i=t.call(arguments,2),r=[],o=0,s=e.length;o<s;o++)r[o]=i.length?e[o][n].apply(e[o],i):e[o][n].call(e[o]);return r},min:function(t,n){return e(t,n,(function(t,e){return t<e}))},max:function(t,n){return e(t,n,(function(t,e){return t>=e}))}}}(),function(){function t(e,n,i){if(i)if(!D.isLikelyNode&&n instanceof Element)e=n;else if(n instanceof Array){e=[];for(var r=0,s=n.length;r<s;r++)e[r]=t({},n[r],i)}else if(n&&"object"===(void 0===n?"undefined":(0,o.default)(n)))for(var a in n)"canvas"===a?e[a]=t({},n[a]):n.hasOwnProperty(a)&&(e[a]=t({},n[a],i));else e=n;else for(var a in n)e[a]=n[a];return e}D.util.object={extend:t,clone:function(e,n){return t({},e,n)}},D.util.object.extend(D.util,D.Observable)}(),function(){function t(t,e){var n=t.charCodeAt(e);if(isNaN(n))return"";if(n<55296||n>57343)return t.charAt(e);if(55296<=n&&n<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var i=t.charCodeAt(e+1);if(56320>i||i>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var r=t.charCodeAt(e-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}D.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")},graphemeSplit:function(e){var n,i=0,r=[];for(i=0;i<e.length;i++)!1!==(n=t(e,i))&&r.push(n);return r}}}(),function(){var t=Array.prototype.slice,e=function(){},n=function(){for(var t in{toString:1})if("toString"===t)return!1;return!0}(),i=function(t,e,i){for(var r in e)r in t.prototype&&"function"==typeof t.prototype[r]&&(e[r]+"").indexOf("callSuper")>-1?t.prototype[r]=function(t){return function(){var n=this.constructor.superclass;this.constructor.superclass=i;var r=e[t].apply(this,arguments);if(this.constructor.superclass=n,"initialize"!==t)return r}}(r):t.prototype[r]=e[r],n&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function r(){}function o(e){for(var n=null,i=this;i.constructor.superclass;){var r=i.constructor.superclass.prototype[e];if(i[e]!==r){n=r;break}i=i.constructor.superclass.prototype}return n?arguments.length>1?n.apply(this,t.call(arguments,1)):n.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}D.util.createClass=function(){var n=null,s=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof s[0]&&(n=s.shift()),a.superclass=n,a.subclasses=[],n&&(r.prototype=n.prototype,a.prototype=new r,n.subclasses.push(a));for(var u=0,l=s.length;u<l;u++)i(a,s[u],n);return a.prototype.initialize||(a.prototype.initialize=e),a.prototype.constructor=a,a.prototype.callSuper=o,a}}(),d=!!D.document.createElement("div").attachEvent,D.util.addListener=function(t,e,n,i){t&&t.addEventListener(e,n,!d&&i)},D.util.removeListener=function(t,e,n,i){t&&t.removeEventListener(e,n,!d&&i)},D.util.getPointer=function(t){var e=t.target,n=D.util.getScrollLeftTop(e),i=function(t){var e=t.changedTouches;return e&&e[0]?e[0]:t}(t);return{x:i.clientX+n.left,y:i.clientY+n.top}},p=D.document.createElement("div"),g="string"==typeof p.style.opacity,v="string"==typeof p.style.filter,m=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,y=function(t){return t},g?y=function(t,e){return t.style.opacity=e,t}:v&&(y=function(t,e){var n=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(n.zoom=1),m.test(n.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",n.filter=n.filter.replace(m,e)):n.filter+=" alpha(opacity="+100*e+")",t}),D.util.setStyle=function(t,e){var n=t.style;if(!n)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?y(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var i in e)"opacity"===i?y(t,e[i]):n["float"===i||"cssFloat"===i?void 0===n.styleFloat?"cssFloat":"styleFloat":i]=e[i];return t},function(){var t=Array.prototype.slice;var e,n,i,r,o=function(e){return t.call(e,0)};try{e=o(D.document.childNodes)instanceof Array}catch(t){}function s(t,e){var n=D.document.createElement(t);for(var i in e)"class"===i?n.className=e[i]:"for"===i?n.htmlFor=e[i]:n.setAttribute(i,e[i]);return n}function a(t){for(var e=0,n=0,i=D.document.documentElement,r=D.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===D.document?(e=r.scrollLeft||i.scrollLeft||0,n=r.scrollTop||i.scrollTop||0):(e+=t.scrollLeft||0,n+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:n}}e||(o=function(t){for(var e=new Array(t.length),n=t.length;n--;)e[n]=t[n];return e}),n=D.document.defaultView&&D.document.defaultView.getComputedStyle?function(t,e){var n=D.document.defaultView.getComputedStyle(t,null);return n?n[e]:void 0}:function(t,e){var n=t.style[e];return!n&&t.currentStyle&&(n=t.currentStyle[e]),n},i=D.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",D.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=D.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},D.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},D.util.getScript=function(t,e){var n=D.document.getElementsByTagName("head")[0],i=D.document.createElement("script"),r=!0;i.onload=i.onreadystatechange=function(t){if(r){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;r=!1,e(t||D.window.event),i=i.onload=i.onreadystatechange=null}},i.src=t,n.appendChild(i)},D.util.getById=function(t){return"string"==typeof t?D.document.getElementById(t):t},D.util.toArray=o,D.util.makeElement=s,D.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},D.util.wrapElement=function(t,e,n){return"string"==typeof e&&(e=s(e,n)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},D.util.getScrollLeftTop=a,D.util.getElementOffset=function(t){var e,i,r=t&&t.ownerDocument,o={left:0,top:0},s={left:0,top:0},u={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return s;for(var l in u)s[u[l]]+=parseInt(n(t,l),10)||0;return e=r.documentElement,void 0!==t.getBoundingClientRect&&(o=t.getBoundingClientRect()),i=a(t),{left:o.left+i.left-(e.clientLeft||0)+s.left,top:o.top+i.top-(e.clientTop||0)+s.top}},D.util.getElementStyle=n,D.util.getNodeCanvas=function(t){var e=D.jsdomImplForWrapper(t);return e._canvas||e._image},D.util.cleanUpJsdomNode=function(t){if(D.isLikelyNode){var e=D.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}D.util.request=function(e,n){n||(n={});var i=n.method?n.method.toUpperCase():"GET",r=n.onComplete||function(){},o=new D.window.XMLHttpRequest,s=n.body||n.parameters;return o.onreadystatechange=function(){4===o.readyState&&(r(o),o.onreadystatechange=t)},"GET"===i&&(s=null,"string"==typeof n.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,n.parameters))),o.open(i,e,!0),"POST"!==i&&"PUT"!==i||o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.send(s),o}}(),D.log=console.log,D.warn=console.warn,function(){function t(){return!1}function e(t,e,n,i){return-n*Math.cos(t/i*(Math.PI/2))+n+e}var n=D.window.requestAnimationFrame||D.window.webkitRequestAnimationFrame||D.window.mozRequestAnimationFrame||D.window.oRequestAnimationFrame||D.window.msRequestAnimationFrame||function(t){return D.window.setTimeout(t,1e3/60)},i=D.window.cancelAnimationFrame||D.window.clearTimeout;function r(){return n.apply(D.window,arguments)}D.util.animate=function(n){r((function(i){n||(n={});var o,s=i||+new Date,a=n.duration||500,u=s+a,l=n.onChange||t,c=n.abort||t,h=n.onComplete||t,f=n.easing||e,d="startValue"in n?n.startValue:0,p="endValue"in n?n.endValue:100,g=n.byValue||p-d;n.onStart&&n.onStart(),function t(e){var n=(o=e||+new Date)>u?a:o-s,i=n/a,v=f(n,d,g,a),m=Math.abs((v-d)/g);if(!c())return o>u?(l(p,1,1),void h(p,1,1)):(l(v,m,i),void r(t));h(p,1,1)}(s)}))},D.util.requestAnimFrame=r,D.util.cancelAnimFrame=function(){return i.apply(D.window,arguments)}}(),D.util.animateColor=function(t,e,n,i){var r=new D.Color(t).getSource(),o=new D.Color(e).getSource();i=i||{},D.util.animate(D.util.object.extend(i,{duration:n||500,startValue:r,endValue:o,byValue:o,easing:function(t,e,n,r){var o,s,a,u,l=i.colorEasing?i.colorEasing(t,r):1-Math.cos(t/r*(Math.PI/2));return o=e,s=n,a=l,u="rgba("+parseInt(o[0]+a*(s[0]-o[0]),10)+","+parseInt(o[1]+a*(s[1]-o[1]),10)+","+parseInt(o[2]+a*(s[2]-o[2]),10),u+=","+(o&&s?parseFloat(o[3]+a*(s[3]-o[3])):1),u+=")"}}))},function(){function t(t,e,n,i){return t<Math.abs(e)?(t=e,i=n/4):i=0===e&&0===t?n/(2*Math.PI)*Math.asin(1):n/(2*Math.PI)*Math.asin(e/t),{a:t,c:e,p:n,s:i}}function e(t,e,n){return t.a*Math.pow(2,10*(e-=1))*Math.sin((e*n-t.s)*(2*Math.PI)/t.p)}function n(t,e,n,r){return n-i(r-t,0,n,r)+e}function i(t,e,n,i){return(t/=i)<1/2.75?n*(7.5625*t*t)+e:t<2/2.75?n*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?n*(7.5625*(t-=2.25/2.75)*t+.9375)+e:n*(7.5625*(t-=2.625/2.75)*t+.984375)+e}D.util.ease={easeInQuad:function(t,e,n,i){return n*(t/=i)*t+e},easeOutQuad:function(t,e,n,i){return-n*(t/=i)*(t-2)+e},easeInOutQuad:function(t,e,n,i){return(t/=i/2)<1?n/2*t*t+e:-n/2*(--t*(t-2)-1)+e},easeInCubic:function(t,e,n,i){return n*(t/=i)*t*t+e},easeOutCubic:function(t,e,n,i){return n*((t=t/i-1)*t*t+1)+e},easeInOutCubic:function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t+e:n/2*((t-=2)*t*t+2)+e},easeInQuart:function(t,e,n,i){return n*(t/=i)*t*t*t+e},easeOutQuart:function(t,e,n,i){return-n*((t=t/i-1)*t*t*t-1)+e},easeInOutQuart:function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t*t+e:-n/2*((t-=2)*t*t*t-2)+e},easeInQuint:function(t,e,n,i){return n*(t/=i)*t*t*t*t+e},easeOutQuint:function(t,e,n,i){return n*((t=t/i-1)*t*t*t*t+1)+e},easeInOutQuint:function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t*t*t+e:n/2*((t-=2)*t*t*t*t+2)+e},easeInSine:function(t,e,n,i){return-n*Math.cos(t/i*(Math.PI/2))+n+e},easeOutSine:function(t,e,n,i){return n*Math.sin(t/i*(Math.PI/2))+e},easeInOutSine:function(t,e,n,i){return-n/2*(Math.cos(Math.PI*t/i)-1)+e},easeInExpo:function(t,e,n,i){return 0===t?e:n*Math.pow(2,10*(t/i-1))+e},easeOutExpo:function(t,e,n,i){return t===i?e+n:n*(1-Math.pow(2,-10*t/i))+e},easeInOutExpo:function(t,e,n,i){return 0===t?e:t===i?e+n:(t/=i/2)<1?n/2*Math.pow(2,10*(t-1))+e:n/2*(2-Math.pow(2,-10*--t))+e},easeInCirc:function(t,e,n,i){return-n*(Math.sqrt(1-(t/=i)*t)-1)+e},easeOutCirc:function(t,e,n,i){return n*Math.sqrt(1-(t=t/i-1)*t)+e},easeInOutCirc:function(t,e,n,i){return(t/=i/2)<1?-n/2*(Math.sqrt(1-t*t)-1)+e:n/2*(Math.sqrt(1-(t-=2)*t)+1)+e},easeInElastic:function(n,i,r,o){var s=0;return 0===n?i:1===(n/=o)?i+r:(s||(s=.3*o),-e(t(r,r,s,1.70158),n,o)+i)},easeOutElastic:function(e,n,i,r){var o=0;if(0===e)return n;if(1===(e/=r))return n+i;o||(o=.3*r);var s=t(i,i,o,1.70158);return s.a*Math.pow(2,-10*e)*Math.sin((e*r-s.s)*(2*Math.PI)/s.p)+s.c+n},easeInOutElastic:function(n,i,r,o){var s=0;if(0===n)return i;if(2===(n/=o/2))return i+r;s||(s=o*(.3*1.5));var a=t(r,r,s,1.70158);return n<1?-.5*e(a,n,o)+i:a.a*Math.pow(2,-10*(n-=1))*Math.sin((n*o-a.s)*(2*Math.PI)/a.p)*.5+a.c+i},easeInBack:function(t,e,n,i,r){return void 0===r&&(r=1.70158),n*(t/=i)*t*((r+1)*t-r)+e},easeOutBack:function(t,e,n,i,r){return void 0===r&&(r=1.70158),n*((t=t/i-1)*t*((r+1)*t+r)+1)+e},easeInOutBack:function(t,e,n,i,r){return void 0===r&&(r=1.70158),(t/=i/2)<1?n/2*(t*t*((1+(r*=1.525))*t-r))+e:n/2*((t-=2)*t*((1+(r*=1.525))*t+r)+2)+e},easeInBounce:n,easeOutBounce:i,easeInOutBounce:function(t,e,r,o){return t<o/2?.5*n(2*t,0,r,o)+e:.5*i(2*t-o,0,r,o)+.5*r+e}}}(),function(t){var e=t.fabric||(t.fabric={}),n=e.util.object.extend,i=e.util.object.clone,r=e.util.toFixed,o=e.util.parseUnit,s=e.util.multiplyTransformMatrices,a={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textA