/*! For license information please see main.9a98e7f0.js.LICENSE.txt */ !function(){var t={67228:function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(u)throw a}}}},t.exports.__esModule=!0,t.exports.default=t.exports},59713:function(t){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.__esModule=!0,t.exports.default=t.exports},46860:function(t){t.exports=function(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.__esModule=!0,t.exports.default=t.exports},13884:function(t){t.exports=function(t,e){var n=null==t?null:"undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);a=!0);}catch(u){s=!0,i=u}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}},t.exports.__esModule=!0,t.exports.default=t.exports},80521:function(t){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},98206:function(t){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},81109:function(t,e,n){var r=n(59713);function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}t.exports=function(t){for(var e=1;er;){var o=Math.floor((r+i)/2);n(e,t[o])>0?r=o+1:i=o}return t.splice(r,0,e),t}},58578:function(t){t.exports=function(t,e){if(Array.isArray(t)&&!(t.length=r.points.length&&(s-=r.points.length);var u=r.points[s];n+=" 10\n".concat(u[0],"\n 20\n").concat(u[1],"\n")}e.statusCallback&&e.statusCallback({progress:100*i/t.length})}})),e.statusCallback&&e.statusCallback({progress:100}),[n]},x=function(t,e){e.statusCallback&&e.statusCallback({progress:0});var n="";return t.forEach((function(r,i){var o=r.points.length+(r.closed?1:0);n+=" 0\nPOLYLINE\n 5\n".concat(k(e),"\n 100\nAcDbEntity\n 3\n").concat(T(r,e),"\n 8\n0\n 62\n").concat(P(r,e),"\n 100\nAcDb2dPolyline\n");for(var a=0;a=r.points.length&&(s-=r.points.length);var u=r.points[s];n+=" 0\nVERTEX\n 5\n".concat(k(e),"\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb2dVertex\n 10\n").concat(u[0],"\n 20\n").concat(u[1],"\n")}n+=" 0\nSEQEND\n 5\n".concat(k(e),"\n 100\nAcDbEntity\n"),e.statusCallback&&e.statusCallback({progress:100*i/t.length})})),e.statusCallback&&e.statusCallback({progress:100}),[n]},_=function(t,e){e.statusCallback&&e.statusCallback({progress:0});var n="",r=a.toPolygons(t),i=P(t,e);return r.forEach((function(t,r){var o=t.color?P(t,e):i;S(t).forEach((function(t,r){n+=A(t,e,o)}))})),e.statusCallback&&e.statusCallback({progress:100}),[n]},S=function(t){var e=t.vertices.length-2;if(e<1)return[];for(var n=t.vertices[0],r=[],i=0;i0&&(n+=" 0\nPOLYLINE\n 5\n".concat(k(e),"\n 100\nAcDbEntity\n 3\n").concat(T(t,e),"\n 8\n0\n 62\n").concat(P(t,e),"\n 100\nAcDb3dPolyline\n 70\n64\n 71\n").concat(r.vertices.length,"\n 72\n").concat(r.faces.length,"\n"),r.vertices.forEach((function(t){n+=" 0\nVERTEX\n 5\n".concat(k(e),"\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb3dPolylineVertex\n 10\n").concat(t[0],"\n 20\n").concat(t[1],"\n 30\n").concat(t[2],"\n 70\n192\n")})),r.faces.forEach((function(t){n+=" 0\nVERTEX\n 5\n".concat(k(e),"\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb3dPolylineVertex\n 10\n0\n 20\n0\n 30\n0\n 70\n128\n 71\n").concat(t[0],"\n 72\n").concat(t[1],"\n 73\n").concat(t[2],"\n 74\n").concat(t[3],"\n")}))),[n]},C=function(t){for(var e=[],n=[],r=0;r1?e-1:0),r=1;r1?e-1:0),h=1;h=8?[e,n,r,parseInt(t.substring(6,8),16)/255]:[e,n,r]}},60100:function(t,e,n){var r=n(28200),i=n(76505);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var d=e[3];return[u,c,l,d]}return[u,c,l]}},80594:function(t,e,n){var r=n(28200);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var v=e[3];return[s,u,c,v]}return[s,u,c]}},76505:function(t){t.exports=function(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}},23877:function(t,e,n){t.exports={colorize:n(31131),colorNameToRgb:n(63335),cssColors:n(83725),hexToRgb:n(60648),hslToRgb:n(60100),hsvToRgb:n(80594),hueToColorComponent:n(76505),rgbToHex:n(69491),rgbToHsl:n(8379),rgbToHsv:n(75133)}},69491:function(t,e,n){var r=n(28200);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3&&(s+=Number(255*e[3]).toString(16)),s}},8379:function(t,e,n){var r=n(28200);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n.5?h/(2-c-l):h/(c+l),c){case a:i=(s-u)/h+(s3){var d=e[3];return[i,o,f,d]}return[i,o,f]}},75133:function(t,e,n){var r=n(28200);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var d=e[3];return[i,h,l,d]}return[i,h,l]}},36454:function(t){var e=function(t){var e=null;return t.forEach((function(t){var n="";if(Number.isFinite(t))n="float_single";else{if(!Array.isArray(t))throw new Error("Bezier points must all be numbers or arrays of number.");t.forEach((function(t){if(!Number.isFinite(t))throw new Error("Bezier point values must all be numbers.")})),n="float_"+t.length}if(null==e)e=n;else if(e!==n)throw new Error("Bezier points must be either all numbers or all arrays of numbers of the same size.")})),e},n=function(t){for(var e=[],n=0;n<=t;n++)e.push(r(t)/(r(n)*r(t-n)));return e},r=function(t){for(var e=1,n=2;n<=t;n++)e*=n;return e};t.exports=function(t){if(!Array.isArray(t))throw new Error("Bezier points must be a valid array/");if(t.length<2)throw new Error("Bezier points must contain at least 2 values.");var r=e(t);return{points:t,pointType:r,dimensions:"float_single"===r?0:t[0].length,permutations:n(t.length-1),tangentPermutations:n(t.length-2)}}},57623:function(t,e,n){t.exports={create:n(36454),valueAt:n(914),tangentAt:n(61723)}},61723:function(t){var e=function(t,e,n){for(var r=e.length-1,i=0,o=0;o1)throw new Error("Bezier tangentAt() input must be between 0 and 1");if("float_single"===n.pointType)return e(n,n.points,t);for(var r=[],i=0;i1)throw new Error("Bezier valueAt() input must be between 0 and 1");if("float_single"===n.pointType)return e(n,n.points,t);for(var r=[],i=0;i=0&&(e.color=[t[17],t[18],t[19],t[20]]),e}},42797:function(t,e,n){var r=n(87930),i=n(48224);t.exports=function(t){if(!Array.isArray(t))throw new Error("the given points must be an array");var e=t.length;if(e<3)throw new Error("the given points must define a closed geometry with three or more points");r.equals(t[0],t[e-1])&&--e;for(var n=[],o=t[e-1],a=0;a=180&&(s-=360),(void 0===r||s>n)&&(r=e,n=s)}));var s=e[r];return e.splice(r,1),s};t.exports=function(t){for(var e=s(a(t)),n=[];;){var o,c=void 0,l=i(e);try{for(l.s();!(o=l.n()).done;){var f=r(o.value,2),h=f[0];if(c=f[1].shift())break;e.delete(h)}}catch(y){l.e(y)}finally{l.f()}if(void 0===c)break;for(var d=[],p=c[0];;){d.push(c[0]);var v=c[1];if(v===p)break;var g=e.get(v);if(!g)throw new Error("geometry is not closed at vertex ".concat(v));var m=u(c,g);0===g.length&&e.delete(v),c=m}d.length>0&&d.push(d.shift()),n.push(d)}return e.clear(),n}},19915:function(t,e,n){var r=n(27604);t.exports=function(t){var e=r(t).map((function(t){return t[0]}));return e.length>0&&e.push(e.shift()),e}},27604:function(t,e,n){var r=n(21675);t.exports=function(t){return r(t).sides}},30296:function(t,e,n){var r=n(87930),i=n(27604);t.exports=function(t){var e=i(t),n="geom2 ("+e.length+" sides):\n[\n";return e.forEach((function(t){n+=" ["+r.toString(t[0])+", "+r.toString(t[1])+"]\n"})),n+="]\n"}},23754:function(t,e,n){var r=n(30175);t.exports=function(t,e){var n=r.multiply(r.create(),t,e.transforms);return Object.assign({},e,{transforms:n})}},28419:function(t,e,n){var r=n(87930),i=n(54012),o=n(10185);t.exports=function(t){if(!i(t))throw new Error("invalid geom2 structure");if(o(t),t.sides.forEach((function(t){if(r.equals(t[0],t[1]))throw new Error("geom2 self-edge ".concat(t[0]))})),!t.transforms.every(Number.isFinite))throw new Error("geom2 invalid transforms ".concat(t.transforms))}},83608:function(t,e,n){var r=n(30175),i=n(80026);t.exports=function(t){return r.isIdentity(t.transforms)||(t.polygons=t.polygons.map((function(e){return i.transform(t.transforms,e)})),t.transforms=r.create()),t}},45846:function(t){t.exports=function(t){return Object.assign({},t)}},24277:function(t,e,n){var r=n(30175);t.exports=function(t){return void 0===t&&(t=[]),{polygons:t,transforms:r.create()}}},18392:function(t,e,n){var r=n(59820),i=n(30175),o=n(80026),a=n(24277);t.exports=function(t){if(1!==t[0])throw new Error("invalid compact binary data");var e=a();e.transforms=i.clone(t.slice(1,17));for(var n=t[21],s=22,u=t.length-3*n;u=0&&(e.color=[t[17],t[18],t[19],t[20]]),e}},717:function(t,e,n){var r=n(80026),i=n(24277);t.exports=function(t){if(!Array.isArray(t))throw new Error("the given points must be an array");var e=t.map((function(t,e){return r.create(t)}));return i(e)}},27207:function(t,e,n){t.exports={clone:n(45846),create:n(24277),fromPoints:n(717),fromCompactBinary:n(18392),invert:n(52710),isA:n(44266),toPoints:n(23221),toPolygons:n(71251),toString:n(77094),toCompactBinary:n(44390),transform:n(57579),validate:n(55658)}},52710:function(t,e,n){var r=n(80026),i=n(24277),o=n(71251);t.exports=function(t){var e=o(t).map((function(t){return r.invert(t)}));return i(e)}},44266:function(t){t.exports=function(t){return!!(t&&"object"===typeof t&&"polygons"in t&&"transforms"in t&&Array.isArray(t.polygons)&&"length"in t.transforms)}},44390:function(t,e,n){var r=n(80026);t.exports=function(t){var e=t.polygons,n=t.transforms,i=e.length,o=e.reduce((function(t,e){return t+e.vertices.length}),0),a=[-1,-1,-1,-1];t.color&&(a=t.color);var s=new Float32Array(22+i+3*o);s[0]=1,s[1]=n[0],s[2]=n[1],s[3]=n[2],s[4]=n[3],s[5]=n[4],s[6]=n[5],s[7]=n[6],s[8]=n[7],s[9]=n[8],s[10]=n[9],s[11]=n[10],s[12]=n[11],s[13]=n[12],s[14]=n[13],s[15]=n[14],s[16]=n[15],s[17]=a[0],s[18]=a[1],s[19]=a[2],s[20]=a[3],s[21]=o;var u=22,c=u+i;return e.forEach((function(t){var e=r.toPoints(t);s[u]=e.length,u++;for(var n=0;n "))})),n.length>0)throw new Error("non-manifold edges ".concat(n.length,"\n").concat(n.join("\n")))};t.exports=function(t){if(!i(t))throw new Error("invalid geom3 structure");if(t.polygons.forEach(r.validate),o(t),!t.transforms.every(Number.isFinite))throw new Error("geom3 invalid transforms ".concat(t.transforms))}},63470:function(t,e,n){t.exports={geom2:n(66002),geom3:n(27207),path2:n(63266),poly2:n(23583),poly3:n(80026)}},7002:function(t,e,n){var r=n(80797).TAU,i=n(87930),o=n(89610),a=n(36203);t.exports=function(t,e){var n=Object.assign({},{radius:[0,0],xaxisrotation:0,clockwise:!1,large:!1,segments:16},t),s=n.endpoint,u=n.radius,c=n.xaxisrotation,l=n.clockwise,f=n.large,h=n.segments;if(!Array.isArray(s))throw new Error("endpoint must be an array of X and Y values");if(s.length<2)throw new Error("endpoint must contain X and Y values");if(s=i.clone(s),!Array.isArray(u))throw new Error("radius must be an array of X and Y values");if(u.length<2)throw new Error("radius must contain X and Y values");if(h<4)throw new Error("segments must be four or more");var d=1e5;if(e.isClosed)throw new Error("the given path cannot be closed");var p=a(e);if(p.length<1)throw new Error("the given path must contain one or more points (as the starting point for the arc)");var v=u[0],g=u[1],m=p[p.length-1];v=Math.round(v*d)/d,g=Math.round(g*d)/d,s=i.fromValues(Math.round(s[0]*d)/d,Math.round(s[1]*d)/d);var y=!l,b=[];if(0===v||0===g)b.push(s);else{v=Math.abs(v),g=Math.abs(g);var w=c,x=Math.cos(w),_=Math.sin(w),S=i.subtract(i.create(),m,s);i.scale(S,S,.5);var A=Math.round((x*S[0]+_*S[1])*d)/d,E=Math.round((-_*S[0]+x*S[1])*d)/d,C=i.fromValues(A,E),k=C[0]*C[0]/(v*v)+C[1]*C[1]/(g*g);if(k>1){var T=Math.sqrt(k);v*=T,g*=T,v=Math.round(v*d)/d,g=Math.round(g*d)/d}var P=Math.sqrt((v*v*g*g-v*v*C[1]*C[1]-g*g*C[0]*C[0])/(v*v*C[1]*C[1]+g*g*C[0]*C[0]));y===f&&(P=-P);var M=i.fromValues(v*C[1]/g,-g*C[0]/v);i.scale(M,M,P);var O=i.fromValues(x*M[0]-_*M[1],_*M[0]+x*M[1]);O=i.add(O,O,i.scale(i.create(),i.add(i.create(),m,s),.5));var L=i.fromValues((C[0]-M[0])/v,(C[1]-M[1])/g),N=i.fromValues((-C[0]-M[0])/v,(-C[1]-M[1])/g),D=i.angleRadians(L),j=i.angleRadians(N)-D;j%=r,!y&&j>0?j-=r:y&&j<0&&(j+=r);var I=Math.ceil(Math.abs(j)/r*h)+1;I<1&&(I=1);for(var R=1;R0&&(v*=g),p.push(v);for(var m=[],y=0;y<=d;++y){var b=p[d]/(p[y]*p[d-y]);m.push(b)}for(var w=i.create(),x=i.create(),_=o.create(),S=function(t){for(var e=1,n=Math.pow(1-t,d),r=1!==t?1/(1-t):1,o=i.create(),a=0;a<=d;++a){a===d&&(n=1);var s=m[a]*e*n,c=i.scale(w,u[a],s);i.add(o,o,c),e*=t,n*=r}return o},A=[],E=[],C=d+1,k=0;kL){var I=E[M-1],R=E[M+1],F=I+1*(R-I)/3,B=I+2*(R-I)/3,z=S(F),V=S(B);A.splice(M,1,z,V),E.splice(M,1,F,B),--M<1&&(M=1)}else++M}A.shift();var q=a(A,e);return q.lastBezierControlPoint=u[u.length-2],q}},41668:function(t,e,n){var r=n(29114),i=n(49262);t.exports=function(t,e){return r(e,i(t))}},54156:function(t,e,n){var r=n(30175),i=n(87930);t.exports=function(t){return r.isIdentity(t.transforms)||(t.points=t.points.map((function(e){return i.transform(i.create(),e,t.transforms)})),t.transforms=r.create()),t}},39303:function(t){t.exports=function(t){return Object.assign({},t)}},16224:function(t,e,n){var r=n(80797).EPS,i=n(87930),o=n(39303);t.exports=function(t){if(t.isClosed)return t;var e=o(t);if(e.isClosed=!0,e.points.length>1)for(var n=e.points,a=n[0],s=n[n.length-1];i.distance(a,s)0&&a.length>0&&o(a[0],e[e.length-1])&&a.shift(),a.length>0&&t)throw new Error("Cannot concatenate to a closed path; check the ".concat(r,"th path"));t=n.isClosed,e=e.concat(a)})),r({closed:t},e)}},49262:function(t,e,n){var r=n(30175);t.exports=function(t){return void 0===t&&(t=[]),{points:t,isClosed:!1,transforms:r.create()}}},89439:function(t,e,n){var r=n(87930),i=n(36203);t.exports=function(t,e){if(t.isClosed!==e.isClosed)return!1;if(t.points.length!==e.points.length)return!1;var n=i(t),o=i(e),a=n.length,s=0;do{for(var u=!1,c=0;c=0&&(e.color=[t[18],t[19],t[20],t[21]]),e}},89610:function(t,e,n){var r=n(80797).EPS,i=n(87930),o=n(16224),a=n(49262);t.exports=function(t,e){var n=Object.assign({},{closed:!1},t).closed,s=a();if(s.points=e.map((function(t){return i.clone(t)})),s.points.length>1){var u=s.points[0],c=s.points[s.points.length-1];i.distance(u,c)1)for(var e=0;ei,u=0,c=0,l=n+1;--l;){var f=a[1]>i;if(s!==f){var h=o[0]>r,d=a[0]>r;(h&&d||a[0]-(a[1]-i)*(o[0]-a[0])/(o[1]-a[1])>=r)&&(u=!u)}s=f,o=a,a=e[++c]}return u};t.exports=function(t,e){if(0===t.length)return 0;var n=e.vertices;return n.length<3?0:(r(e)<0&&(e=i(e)),t.reduce((function(t,e){return t+o(e,n)}),0)===t.length?1:0)}},23303:function(t){t.exports=function(t){return(void 0===t||t.length<3)&&(t=[]),{vertices:t}}},63612:function(t,e,n){var r=n(23303);t.exports=function(t){var e=t.vertices.slice().reverse();return r(e)}},23583:function(t,e,n){t.exports={arePointsInside:n(68380),create:n(23303),flip:n(63612),measureArea:n(33745)}},33745:function(t,e,n){var r=n(87431);t.exports=function(t){return r(t.vertices)}},39633:function(t,e,n){var r=n(77737),i=n(59820);t.exports=function(){var t,e;return 1===arguments.length?(t=r(),e=arguments.length<=0?void 0:arguments[0]):(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),t.vertices=e.vertices.map((function(t){return i.clone(t)})),t}},77737:function(t){t.exports=function(t){return(void 0===t||t.length<3)&&(t=[]),{vertices:t}}},68411:function(t,e,n){var r=n(59820),i=n(77737);t.exports=function(t){var e=t.map((function(t){return r.clone(t)}));return i(e)}},36740:function(t,e,n){var r=n(77737);t.exports=function(t,e){var n=r(t);return n.plane=e,n}},80026:function(t,e,n){t.exports={clone:n(39633),create:n(77737),fromPoints:n(68411),fromPointsAndPlane:n(36740),invert:n(72682),isA:n(34354),isConvex:n(77498),measureArea:n(42958),measureBoundingBox:n(5136),measureBoundingSphere:n(61031),measureSignedVolume:n(86446),plane:n(50199),toPoints:n(15920),toString:n(29749),transform:n(46018),validate:n(72414)}},72682:function(t,e,n){var r=n(76692),i=n(77737);t.exports=function(t){var e=t.vertices.slice().reverse(),n=i(e);return t.plane&&(n.plane=r.flip(r.create(),t.plane)),n}},34354:function(t){t.exports=function(t){return!!(t&&"object"===typeof t&&"vertices"in t&&Array.isArray(t.vertices))}},77498:function(t,e,n){var r=n(319).default,i=n(76692),o=n(59820),a=function(t){var e=t.length;if(e>2)for(var n=i.fromPoints.apply(i,[i.create()].concat(r(t))),o=t[e-2],a=t[e-1],u=0;u=0};t.exports=function(t){return a(t.vertices)}},42958:function(t,e,n){var r=n(50199);t.exports=function(t){var e=t.vertices.length;if(e<3)return 0;var n=t.vertices,i=r(t),o=Math.abs(i[0]),a=Math.abs(i[1]),s=Math.abs(i[2]);if(o+a+s===0)return 0;var u=3;o>a&&o>s?u=1:a>s&&(u=2);var c=0,l=0,f=1,h=2;switch(u){case 1:for(f=1;ft[0]&&(a=t),s[1]>t[1]&&(s=t),u[2]>t[2]&&(u=t),c[0]3){var n=c(t);t.vertices.forEach((function(t){var e=Math.abs(r(n,t));if(e>i)throw new Error("poly3 must be coplanar: vertex ".concat(t," distance ").concat(e))}))}}},79954:function(t,e,n){t.exports={colors:n(23877),curves:n(46713),geometries:n(63470),maths:n(55205),measurements:n(35281),primitives:n(21427),text:n(18582),utils:n(51602),booleans:n(3475),expansions:n(20735),extrusions:n(20544),hulls:n(27919),modifiers:n(46791),transforms:n(73078)}},41991:function(t,e,n){var r=n(30175),i=n(87930),o=n(59820),a=function(t,e){arguments.length<2&&(e=o.orthogonal(o.create(),t)),this.v=o.normalize(o.create(),o.cross(o.create(),t,e)),this.u=o.cross(o.create(),this.v,t),this.plane=t,this.planeorigin=o.scale(o.create(),t,t[3])};a.GetCartesian=function(t,e){var n,r,i=t+"/"+e;if("X/Y"===i)n=[0,0,1],r=[1,0,0];else if("Y/-X"===i)n=[0,0,1],r=[0,1,0];else if("-X/-Y"===i)n=[0,0,1],r=[-1,0,0];else if("-Y/X"===i)n=[0,0,1],r=[0,-1,0];else if("-X/Y"===i)n=[0,0,-1],r=[-1,0,0];else if("-Y/-X"===i)n=[0,0,-1],r=[0,-1,0];else if("X/-Y"===i)n=[0,0,-1],r=[1,0,0];else if("Y/X"===i)n=[0,0,-1],r=[0,1,0];else if("X/Z"===i)n=[0,-1,0],r=[1,0,0];else if("Z/-X"===i)n=[0,-1,0],r=[0,0,1];else if("-X/-Z"===i)n=[0,-1,0],r=[-1,0,0];else if("-Z/X"===i)n=[0,-1,0],r=[0,0,-1];else if("-X/Z"===i)n=[0,1,0],r=[-1,0,0];else if("-Z/-X"===i)n=[0,1,0],r=[0,0,-1];else if("X/-Z"===i)n=[0,1,0],r=[1,0,0];else if("Z/X"===i)n=[0,1,0],r=[0,0,1];else if("Y/Z"===i)n=[1,0,0],r=[0,1,0];else if("Z/-Y"===i)n=[1,0,0],r=[0,0,1];else if("-Y/-Z"===i)n=[1,0,0],r=[0,-1,0];else if("-Z/Y"===i)n=[1,0,0],r=[0,0,-1];else if("-Y/Z"===i)n=[-1,0,0],r=[0,-1,0];else if("-Z/-Y"===i)n=[-1,0,0],r=[0,0,-1];else if("Y/-Z"===i)n=[-1,0,0],r=[0,1,0];else{if("Z/Y"!==i)throw new Error("OrthoNormalBasis.GetCartesian: invalid combination of axis identifiers. Should pass two string arguments from [X,Y,Z,-X,-Y,-Z], being two different axes.");n=[-1,0,0],r=[0,0,1]}return new a(new Plane(new Vector3D(n),0),new Vector3D(r))},a.Z0Plane=function(){var t=new Plane(new Vector3D([0,0,1]),0);return new a(t,new Vector3D([1,0,0]))},a.prototype={getProjectionMatrix:function(){return r.fromValues(this.u[0],this.v[0],this.plane[0],0,this.u[1],this.v[1],this.plane[1],0,this.u[2],this.v[2],this.plane[2],0,0,0,-this.plane[3],1)},getInverseProjectionMatrix:function(){var t=o.scale(o.create(),this.plane,this.plane[3]);return r.fromValues(this.u[0],this.u[1],this.u[2],0,this.v[0],this.v[1],this.v[2],0,this.plane[0],this.plane[1],this.plane[2],0,t[0],t[1],t[2],1)},to2D:function(t){return i.fromValues(o.dot(t,this.u),o.dot(t,this.v))},to3D:function(t){var e=o.scale(o.create(),this.u,t[0]),n=o.scale(o.create(),this.v,t[1]),r=o.add(e,e,this.planeorigin);return o.add(n,n,r)},line3Dto2D:function(t){var e=t.point,n=t.direction.plus(e),r=this.to2D(e),i=this.to2D(n);return Line2D.fromPoints(r,i)},line2Dto3D:function(t){var e=t.origin(),n=t.direction().plus(e),r=this.to3D(e),i=this.to3D(n);return Line3D.fromPoints(r,i)},transform:function(t){var e=this.plane.transform(t),n=this.u.transform(t),r=new Vector3D(0,0,0).transform(t),i=n.minus(r);return new a(e,i)}},t.exports=a},80797:function(t){var e=2*Math.PI;t.exports={EPS:1e-5,NEPS:1e-13,TAU:e,spatialResolution:1e5}},55205:function(t,e,n){t.exports={constants:n(80797),line2:n(59636),line3:n(87865),mat4:n(30175),plane:n(76692),utils:n(71687),vec2:n(87930),vec3:n(59820),vec4:n(21070)}},34004:function(t,e,n){var r=n(52637);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},10869:function(t,e,n){var r=n(87930),i=n(47575),o=n(35063);t.exports=function(t,e){var n=o(t),a=i(t),s=(a[1]-n[1])/(a[0]-n[0]),u=n[1]-s*n[0],c=-1/s,l=(e[1]-c*e[0]-u)/(s-c),f=s*l+u;return r.fromValues(l,f)}},88595:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},52637:function(t){t.exports=function(){return[0,1,0]}},47575:function(t,e,n){var r=n(87930);t.exports=function(t){var e=r.normal(r.create(),t);return r.negate(e,e),e}},2952:function(t,e,n){var r=n(87930);t.exports=function(t,e){var n=r.dot(e,t);return n=Math.abs(n-t[2])}},34454:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},42408:function(t,e,n){var r=n(87930);t.exports=function(t,e,n){var i=r.subtract(r.create(),n,e);r.normal(i,i),r.normalize(i,i);var o=r.dot(e,i);return t[0]=i[0],t[1]=i[1],t[2]=o,t}},68825:function(t,e,n){var r=n(52637);t.exports=function(t,e,n){var i=r();return i[0]=t,i[1]=e,i[2]=n,i}},59636:function(t,e,n){t.exports={clone:n(34004),closestPoint:n(10869),copy:n(88595),create:n(52637),direction:n(47575),distanceToPoint:n(2952),equals:n(34454),fromPoints:n(42408),fromValues:n(68825),intersectPointOfLines:n(2170),origin:n(35063),reverse:n(24211),toString:n(81152),transform:n(97146),xAtY:n(30948)}},2170:function(t,e,n){var r=n(87930),i=n(71687).solve2Linear;t.exports=function(t,e){var n=i(t[0],t[1],e[0],e[1],t[2],e[2]);return r.clone(n)}},35063:function(t,e,n){var r=n(87930);t.exports=function(t){return r.scale(r.create(),t,t[2])}},24211:function(t,e,n){var r=n(87930),i=n(88595),o=n(68825);t.exports=function(t,e){var n=r.negate(r.create(),e),a=-e[2];return i(t,o(n[0],n[1],a))}},81152:function(t){t.exports=function(t){return"line2: (".concat(t[0].toFixed(7),", ").concat(t[1].toFixed(7),", ").concat(t[2].toFixed(7),")")}},97146:function(t,e,n){var r=n(87930),i=n(42408),o=n(35063),a=n(47575);t.exports=function(t,e,n){var s=o(e),u=a(e);return r.transform(s,s,n),r.transform(u,u,n),i(t,s,u)}},30948:function(t,e,n){var r=n(35063);t.exports=function(t,e){var n=(t[2]-t[1]*e)/t[0];Number.isNaN(n)&&(n=r(t)[0]);return n}},62043:function(t,e,n){var r=n(59820),i=n(45377);t.exports=function(t){var e=i();return r.copy(e[0],t[0]),r.copy(e[1],t[1]),e}},47499:function(t,e,n){var r=n(59820);t.exports=function(t,e){var n=t[0],i=t[1],o=r.dot(r.subtract(r.create(),e,n),i)/r.dot(i,i),a=r.scale(r.create(),i,o);return r.add(a,a,n),a}},37349:function(t,e,n){var r=n(59820);t.exports=function(t,e){return r.copy(t[0],e[0]),r.copy(t[1],e[1]),t}},45377:function(t,e,n){var r=n(59820);t.exports=function(){return[r.fromValues(0,0,0),r.fromValues(0,0,1)]}},10222:function(t){t.exports=function(t){return t[1]}},47998:function(t,e,n){var r=n(59820),i=n(47499);t.exports=function(t,e){var n=i(t,e),o=r.subtract(r.create(),e,n);return r.length(o)}},42515:function(t,e,n){var r=n(59820);t.exports=function(t,e){return!!r.equals(t[1],e[1])&&!!r.equals(t[0],e[0])}},55381:function(t,e,n){var r=n(59820),i=n(71687).solve2Linear,o=n(80797).EPS,a=n(1470);t.exports=function(t,e,n){var s=r.cross(r.create(),e,n),u=r.length(s);if(u=h&&f>=d?(l=i(e[1],e[2],n[1],n[2],e[3],n[3]),c=r.fromValues(0,l[0],l[1])):h>=f&&h>=d?(l=i(e[0],e[2],n[0],n[2],e[3],n[3]),c=r.fromValues(l[0],0,l[1])):(l=i(e[0],e[1],n[0],n[1],e[3],n[3]),c=r.fromValues(l[0],l[1],0)),a(t,c,s)}},1470:function(t,e,n){var r=n(59820);t.exports=function(t,e,n){var i=r.normalize(r.create(),n);return r.copy(t[0],e),r.copy(t[1],i),t}},70157:function(t,e,n){var r=n(59820),i=n(1470);t.exports=function(t,e,n){var o=r.subtract(r.create(),n,e);return i(t,e,o)}},87865:function(t,e,n){t.exports={clone:n(62043),closestPoint:n(47499),copy:n(37349),create:n(45377),direction:n(10222),distanceToPoint:n(47998),equals:n(42515),fromPlanes:n(55381),fromPointAndDirection:n(1470),fromPoints:n(70157),intersectPointOfLineAndPlane:n(33073),origin:n(1026),reverse:n(16439),toString:n(37044),transform:n(69456)}},33073:function(t,e,n){var r=n(59820);t.exports=function(t,e){var n=e,i=e[3],o=t[0],a=t[1],s=(i-r.dot(n,o))/r.dot(n,a);return r.add(r.create(),o,r.scale(r.create(),a,s))}},1026:function(t){t.exports=function(t){return t[0]}},16439:function(t,e,n){var r=n(59820),i=n(1470);t.exports=function(t,e){var n=r.clone(e[0]),o=r.negate(r.create(),e[1]);return i(t,n,o)}},37044:function(t){t.exports=function(t){var e=t[0],n=t[1];return"line3: point: (".concat(e[0].toFixed(7),", ").concat(e[1].toFixed(7),", ").concat(e[2].toFixed(7),") direction: (").concat(n[0].toFixed(7),", ").concat(n[1].toFixed(7),", ").concat(n[2].toFixed(7),")")}},69456:function(t,e,n){var r=n(59820),i=n(1470);t.exports=function(t,e,n){var o=e[0],a=e[1],s=r.add(r.create(),o,a),u=r.transform(r.create(),o,n),c=r.transform(s,s,n),l=r.subtract(c,c,u);return i(t,u,l)}},67651:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}},73782:function(t,e,n){var r=n(35558);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},46680:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},35558:function(t){t.exports=function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}},95075:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}},7306:function(t,e,n){var r=n(63038).default,i=n(80797).EPS,o=n(81981),a=o.sin,s=o.cos,u=n(91841);t.exports=function(t,e,n){var o=r(n,3),c=o[0],l=o[1],f=o[2],h=c*c+l*l+f*f;if(Math.abs(h)1?e-1:0),i=1;i=o?1:o<1e-10?.5:i/o,t[0]+r*(e[0]-t[0])}},89283:function(t){t.exports=function(t,e,n,r){if(!(t[0]===e[0]&&t[1]===e[1]||n[0]===r[0]&&n[1]===r[1])){var i=(r[1]-n[1])*(e[0]-t[0])-(r[0]-n[0])*(e[1]-t[1]);if(!(Math.abs(i)1||a<0||a>1))return[t[0]+o*(e[0]-t[0]),t[1]+o*(e[1]-t[1])]}}}},99064:function(t){t.exports=function(t,e,n,r,i,o){var a=1/(t*r-e*n),s=i*r-e*o,u=-i*n+t*o;return[s*=a,u*=a]}},81981:function(t,e,n){var r=n(80797).NEPS,i=function(t){return Math.abs(t)0&&(i=1/Math.sqrt(i)),t[0]=n*i,t[1]=r*i,t}},91509:function(t){t.exports=function(t,e,n,r){var i=e[0]-n[0],o=e[1]-n[1],a=Math.cos(r),s=Math.sin(r);return t[0]=i*a-o*s+n[0],t[1]=i*s+o*a+n[1],t}},71397:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}},85476:function(t){t.exports=function(t,e,n){return t[0]=Math.round(e[0]/n)*n+0,t[1]=Math.round(e[1]/n)*n+0,t}},78715:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r}},72007:function(t){t.exports=function(t){var e=t[0],n=t[1];return e*e+n*n}},84891:function(t){t.exports=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}},74699:function(t){t.exports=function(t){return"[".concat(t[0].toFixed(7),", ").concat(t[1].toFixed(7),"]")}},59333:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[4]*i+n[12],t[1]=n[1]*r+n[5]*i+n[13],t}},59413:function(t){t.exports=function(t,e){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t}},99623:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}},84709:function(t,e,n){var r=n(6928);t.exports=function(t,e){var n=t[0],i=t[1],o=t[2],a=e[0],s=e[1],u=e[2],c=Math.sqrt(n*n+i*i+o*o)*Math.sqrt(a*a+s*s+u*u),l=c&&r(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}},44626:function(t,e,n){var r=n(58714);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},6809:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},58714:function(t){t.exports=function(){return[0,0,0]}},40094:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2];return t[0]=i*u-o*s,t[1]=o*a-r*u,t[2]=r*s-i*a,t}},88823:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+r*r+i*i)}},24824:function(t){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}},6928:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},58658:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},67175:function(t){t.exports=function(t,e){return t[0]=e,t[1]=e,t[2]=e,t}},93035:function(t,e,n){var r=n(58714);t.exports=function(t,e,n){var i=r();return i[0]=t,i[1]=e,i[2]=n,i}},32719:function(t){t.exports=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t[0]=e[0],t[1]=e[1],t[2]=n,t}},59820:function(t,e,n){t.exports={abs:n(59413),add:n(99623),angle:n(84709),clone:n(44626),copy:n(6809),create:n(58714),cross:n(40094),distance:n(88823),divide:n(24824),dot:n(6928),equals:n(58658),fromScalar:n(67175),fromValues:n(93035),fromVec2:n(32719),length:n(38619),lerp:n(82596),max:n(58152),min:n(24115),multiply:n(29331),negate:n(38214),normalize:n(16778),orthogonal:n(82300),rotateX:n(19374),rotateY:n(18930),rotateZ:n(86954),scale:n(50080),snap:n(56228),squaredDistance:n(77405),squaredLength:n(32337),subtract:n(33570),toString:n(59443),transform:n(257)}},38619:function(t){t.exports=function(t){var e=t[0],n=t[1],r=t[2];return Math.sqrt(e*e+n*n+r*r)}},82596:function(t){t.exports=function(t,e,n,r){return t[0]=e[0]+r*(n[0]-e[0]),t[1]=e[1]+r*(n[1]-e[1]),t[2]=e[2]+r*(n[2]-e[2]),t}},58152:function(t){t.exports=function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}},24115:function(t){t.exports=function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}},29331:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}},38214:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}},16778:function(t){t.exports=function(t,e){var n=e[0],r=e[1],i=e[2],o=n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=n*o,t[1]=r*o,t[2]=i*o,t}},82300:function(t,e,n){var r=n(59413),i=n(58714),o=n(40094);t.exports=function(t,e){var n=r(i(),e),a=0+(n[0]0){var i=c.toPoints(n[0]);o.copy(r,i[0])}var a=o.clone(r);return n.forEach((function(t){c.toPoints(t).forEach((function(t){o.min(r,r,t),o.max(a,a,t)}))})),r=[r[0],r[1],r[2]],a=[a[0],a[1],a[2]],e=[r,a],l.set(t,e),e};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0){var s=0,c=o.create();a.forEach((function(t){o.add(n,n,o.fromVec2(c,t,0)),s++})),o.scale(n,n,1/s),a.forEach((function(t){r=Math.max(r,i.squaredDistance(n,t))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e},h=function(t){var e=l.get(t);if(void 0!==e)return e;var n=o.create(),r=0,s=a.toSides(t);if(s.length>0){var u=0,c=o.create();s.forEach((function(t){o.add(n,n,o.fromVec2(c,t[0],0)),u++})),o.scale(n,n,1/u),s.forEach((function(t){r=Math.max(r,i.squaredDistance(n,t[0]))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e},d=function(t){var e=l.get(t);if(void 0!==e)return e;var n=o.create(),r=0,i=s.toPolygons(t);if(i.length>0){var a=0;i.forEach((function(t){c.toPoints(t).forEach((function(t){o.add(n,n,t),a++}))})),o.scale(n,n,1/a),i.forEach((function(t){c.toPoints(t).forEach((function(t){r=Math.max(r,o.squaredDistance(n,t))}))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0){for(var c=0;c0&&(n.push(e),!0)}));if(2!==i.length)throw new Error("Assertion failed: fromFakePolygon: not enough points found");var o=i.map((function(e){var n=Math.round(e[0]/t)*t+0,i=Math.round(e[1]/t)*t+0;return r.fromValues(n,i)}));if(r.equals(o[0],o[1]))return null;var a=n[1]-n[0];if(1!==a&&3!==a)throw new Error("Assertion failed: fromFakePolygon: unknown index ordering");return 1===a&&o.reverse(),o}(t,e)})).filter((function(t){return null!==t}));return i.create(n)}},3475:function(t,e,n){t.exports={intersect:n(91634),scission:n(63062),subtract:n(93274),union:n(22300)}},91634:function(t,e,n){var r=n(28200),i=n(86787),o=n(66002),a=n(27207),s=n(75929),u=n(64514);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;nr)&&(!(o[0]-c[0]>r)&&(!(u[1]-a[1]>r)&&(!(o[1]-c[1]>r)&&(!(u[2]-a[2]>r)&&!(o[2]-c[2]>r)))))}},63062:function(t,e,n){var r=n(28200),i=n(27207),o=n(79307);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&function(){var t=new Array(a);t[h]=!0;do{l=0,t.forEach((function(e,n){var r=c[n];if(r.e>0){r.e=-1;for(var i=0;i0);d.indexes=t}()}for(var p=[],v=0;v0&&i.push({node:n.front,polygontreenodes:s});var h=a.length;if(n.back&&h>0)i.push({node:n.back,polygontreenodes:a});else for(var d=0;d0&&t.rootnode.clipPolygons(n.polygontreenodes,e),n.front&&r.push(n.front),n.back&&r.push(n.back),n=r.pop()}while(void 0!==n)}},{key:"addPolygonTreeNodes",value:function(e){var n={node:this,polygontreenodes:e},r=[];do{var i=n.node,o=n.polygontreenodes;if(0!==o.length){if(!i.plane){var s=o[Math.floor(o.length/2)].getPolygon();i.plane=a.plane(s)}for(var u=[],c=[],l=o.length,f=0;f0)i.front||(i.front=new t(i)),l===u.length&&0===c.length?i.front.polygontreenodes=u:r.push({node:i.front,polygontreenodes:u});if(c.length>0)i.back||(i.back=new t(i)),l===c.length&&0===u.length?i.back.polygontreenodes=c:r.push({node:i.back,polygontreenodes:c});n=r.pop()}else n=r.pop()}while(void 0!==n)}}]),t}();t.exports=s},45155:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(80797).EPS,a=n(59820),s=n(80026),u=n(49586),c=function(){"use strict";function t(e,n){r(this,t),this.parent=e,this.children=[],this.polygon=n,this.removed=!1}return i(t,[{key:"addPolygons",value:function(t){if(!this.isRootNode())throw new Error("Assertion failed");var e=this;t.forEach((function(t){e.addChild(t)}))}},{key:"remove",value:function(){if(!this.removed){this.removed=!0,this.polygon=null;var t=this.parent.children,e=t.indexOf(this);if(e<0)throw new Error("Assertion failed");t.splice(e,1),this.parent.recursivelyInvalidatePolygon()}}},{key:"isRemoved",value:function(){return this.removed}},{key:"isRootNode",value:function(){return!this.parent}},{key:"invert",value:function(){if(!this.isRootNode())throw new Error("Assertion failed");this.invertSub()}},{key:"getPolygon",value:function(){if(!this.polygon)throw new Error("Assertion failed");return this.polygon}},{key:"getPolygons",value:function(t){var e,n,r,i,o=[this],a=[o];for(e=0;e0&&a.push(i.children)}},{key:"splitByPlane",value:function(t,e,n,r,i){if(this.children.length){var o,a,s,u,c,l=[this.children];for(o=0;o0?l.push(u.children):u._splitByPlane(t,e,n,r,i)}else this._splitByPlane(t,e,n,r,i)}},{key:"_splitByPlane",value:function(t,e,n,r,i){var c=this.polygon;if(c){var l=s.measureBoundingSphere(c),f=l[3]+o,h=l,d=a.dot(t,h)-t[3];if(d>f)r.push(this);else if(d<-f)i.push(this);else{var p=u(t,c);switch(p.type){case 0:e.push(this);break;case 1:n.push(this);break;case 2:r.push(this);break;case 3:i.push(this);break;case 4:if(p.front){var v=this.addChild(p.front);r.push(v)}if(p.back){var g=this.addChild(p.back);i.push(g)}}}}}},{key:"addChild",value:function(e){var n=new t(this,e);return this.children.push(n),n}},{key:"invertSub",value:function(){var t,e,n,r,i=[this],o=[i];for(t=0;t0&&o.push(r.children)}},{key:"recursivelyInvalidatePolygon",value:function(){this.polygon=null,this.parent&&this.parent.recursivelyInvalidatePolygon()}},{key:"clear",value:function(){for(var t=[this],e=[t],n=0;n0&&e.push(o.children),o.children=[]}}},{key:"toString",value:function(){var t,e,n,r,i="",o=[this],a=[o];for(t=0;t0&&a.push(r.children)}return i}}]),t}();t.exports=c},66484:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(21607),a=n(45155),s=function(){"use strict";function t(e){r(this,t),this.polygonTree=new a,this.rootnode=new o(null),e&&this.addPolygons(e)}return i(t,[{key:"invert",value:function(){this.polygonTree.invert(),this.rootnode.invert()}},{key:"clipTo",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.rootnode.clipTo(t,e)}},{key:"allPolygons",value:function(){var t=[];return this.polygonTree.getPolygons(t),t}},{key:"addPolygons",value:function(t){for(var e=new Array(t.length),n=0;n1&&(o=1),o<0&&(o=0),r.scale(i,i,o),r.add(i,e,i),i}},49586:function(t,e,n){var r=n(80797).EPS,i=n(76692),o=n(59820),a=n(80026),s=n(63091);t.exports=function(t,e){var n={type:null,front:null,back:null},u=e.vertices,c=u.length,l=a.plane(e);if(i.equals(l,t))n.type=0;else{for(var f=!1,h=!1,d=[],p=-r,v=0;vr&&(f=!0),g=c&&(S=0);var A=d[S];if(w===A)w?b.push(_):y.push(_);else{var E=u[S],C=s(t,_,E);w?(b.push(_),b.push(C),y.push(C)):(y.push(_),y.push(C),b.push(C))}w=A}var k=r*r;if(b.length>=3)for(var T=b[b.length-1],P=0;P=3)for(var O=y[y.length-1],L=0;L=3&&(n.front=a.fromPointsAndPlane(y,l)),b.length>=3&&(n.back=a.fromPointsAndPlane(b,l))}else n.type=3;else n.type=2;else{var D=o.dot(t,l);n.type=D>=0?0:1}}return n}},22300:function(t,e,n){var r=n(28200),i=n(86787),o=n(66002),a=n(27207),s=n(32383),u=n(72103);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),l=1;l0)for(var d=Math.PI/l,p=s[s.length-1],v=o.angle(o.subtract(o.create(),u[u.length-1],p)),g=s[0],m=o.angle(o.subtract(o.create(),c[0],g)),y=1;y=0&&s.distance(B,P)=0){L.push(B),N.push(z);var q=[M,z,B,P],U=l.create(q);D.push(U)}P=B,M=z}}N.reverse(),D.push(l.create(L)),D.push(l.create(N));var W=c.create(D);b=d(b,W)})),w.forEach((function(t){for(var e=t[0],n=t[1],i=n[0],o=null,a=0,u=1;u.05&&h>a&&(a=h,o=c)}o||(o=s.orthogonal(_,i));var p=s.cross(_,i,o);s.normalize(p,p);var v=s.cross(S,p,i),g=f({center:[e[0],e[1],e[2]],radius:r,segments:y,axes:[i,p,v]});b=d(b,g)})),h(b)}},76922:function(t,e,n){var r=n(30175),i=n(59820),o=n(27207),a=n(80026);t.exports=function(t,e){i.dot(a.plane(e),t)>0&&(e=a.invert(e));for(var n=[e],s=a.transform(r.fromTranslation(r.create(),t),e),u=e.vertices.length,c=0;c1?e-1:0),u=1;u0&&r>=0||d<0&&r<0;r=Math.abs(r);for(var v=null,g=[],m=[],y=u.create(),b=e.length,w=0;w0&&(e-=Math.PI)>0&&(e-=Math.PI),0!==e){for(var n=e/(I=Math.floor(h*(Math.abs(e)/o))),i=u.angle(u.subtract(R,t.s0[1],t.c)),a=[],s=1;s0){var f,d=t.s0[1],v=g.findIndex((function(t){return u.equals(d,t)}));v=(v+1)%g.length,(f=g).splice.apply(f,[v,0].concat(a))}}else{var m=t.s1[0],y=g.findIndex((function(t){return u.equals(m,t)}));g.splice(y,1)}}))}return g}},2481:function(t,e,n){var r=n(66002),i=n(23583),o=n(75266);t.exports=function(t,e){var n=Object.assign({},{delta:1,corners:"edge",segments:0},t),a=n.delta,s=n.corners,u=n.segments;if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');var c=r.toOutlines(e),l=c.map((function(e){var n=c.reduce((function(t,n){return t+i.arePointsInside(e,i.create(n))}),0);return o(t={delta:n%2===0?a:-a,corners:s,closed:!0,segments:u},e)})).reduce((function(t,e){return t.concat(r.toSides(r.fromPoints(e)))}),[]);return r.create(l)}},21270:function(t,e,n){var r=n(63266),i=n(75266);t.exports=function(t,e){var n={delta:1,corners:"edge",closed:e.isClosed,segments:16},o=Object.assign({},n,t),a=o.delta,s=o.corners,u=o.closed,c=o.segments;if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');var l=i(t={delta:a,corners:s,closed:u,segments:c},r.toPoints(e));return r.fromPoints({closed:u},l)}},1564:function(t,e,n){var r=n(71687).area,i=n(66002).toOutlines,o=n(23583).arePointsInside,a=function(t,e){var n,r;return t.forEach((function(t,i){var o=e(t);(void 0===r||o0&&n.push(e)}));var u=[],c=[];return n.forEach((function(t,n){var r=e[t];u[n]=[],s.forEach((function(t,i){var a=e[t];o([a[0]],{vertices:r})&&(u[n].push(t),c[i]||(c[i]=[]),c[i].push(n))}))})),s.forEach((function(t,e){if(c[e]&&c[e].length>1){var n=a(c[e],(function(t){return u[t].length}));c[e].forEach((function(e,r){r!==n&&(u[e]=u[e].filter((function(e){return e!==t})))}))}})),u.map((function(t,r){return{solid:e[n[r]],holes:t.map((function(t){return e[t]}))}}))}},7691:function(t,e,n){var r=n(91633),i=r.filterPoints,o=r.linkedPolygon,a=r.locallyInside,s=r.splitPolygon,u=n(13045),c=u.area,l=u.pointInTriangle,f=function(t,e){var n=h(t,e);if(!n)return e;var r=s(n,t),o=i(n,n.next);return i(r,r.next),e===n?o:e},h=function(t,e){var n,r=e,i=t.x,o=t.y,s=-1/0;do{if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){var u=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(u<=i&&u>s){if(s=u,u===i){if(o===r.y)return r;if(o===r.next.y)return r.next}n=r.x=r.x&&r.x>=f&&i!==r.x&&l(on.x||r.x===n.x&&d(n,r)))&&(n=r,p=v)}r=r.next}while(r!==c);return n},d=function(t,e){return c(t.prev,t,e.prev)<0&&c(e.next,t,t.next)<0},p=function(t){var e=t,n=t;do{(e.x=0)return!1;for(var i=t.next.next;i!==t.prev;){if(v(e.x,e.y,n.x,n.y,r.x,r.y,i.x,i.y)&&p(i.prev,i,i.next)>=0)return!1;i=i.next}return!0},y=function(t,e,n,r){var i=t.prev,o=t,a=t.next;if(p(i,o,a)>=0)return!1;for(var s=i.xo.x?i.x>a.x?i.x:a.x:o.x>a.x?o.x:a.x,l=i.y>o.y?i.y>a.y?i.y:a.y:o.y>a.y?o.y:a.y,f=x(s,u,e,n,r),h=x(c,l,e,n,r),d=t.prevZ,g=t.nextZ;d&&d.z>=f&&g&&g.z<=h;){if(d!==t.prev&&d!==t.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&p(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,g!==t.prev&&g!==t.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,g.x,g.y)&&p(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;d&&d.z>=f;){if(d!==t.prev&&d!==t.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&p(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;g&&g.z<=h;){if(g!==t.prev&&g!==t.next&&v(i.x,i.y,o.x,o.y,a.x,a.y,g.x,g.y)&&p(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0},b=function(t,e,n,r,i,o){var a=t;do{for(var s=a.next.next;s!==a.prev;){if(a.i!==s.i&&l(a,s)){var u=h(a,s);return a=c(a,a.next),u=c(u,u.next),g(a,e,n,r,i,o),void g(u,e,n,r,i,o)}s=s.next}a=a.next}while(a!==t)},w=function(t,e,n,r){var i=t;do{null===i.z&&(i.z=x(i.x,i.y,e,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,a(i,(function(t){return t.z}))},x=function(t,e,n,r,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1};t.exports=function(t,e){var n,i,o,a,s,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,c=e&&e.length,l=c?e[0]*u:t.length,h=f(t,0,l,u,!0),d=[];if(!h||h.next===h.prev)return d;if(c&&(h=r(t,e,h,u)),t.length>80*u){n=o=t[0],i=a=t[1];for(var p=u;po&&(o=v),m>a&&(a=m)}s=0!==(s=Math.max(o-n,a-i))?1/s:0}return g(h,d,u,n,i,s),d}},49201:function(t,e,n){var r=n(93913).default,i=n(34575).default,o=n(88806),a=r((function t(e,n,r){"use strict";i(this,t),this.i=e,this.x=n,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}));t.exports={Node:a,insertNode:function(t,e,n,r){var i=new a(t,e,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i},removeNode:function(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)},sortLinked:o}},88806:function(t){t.exports=function(t,e){var n,r,i,o,a,s=1;do{r=t,t=null;var u=null;for(a=0;r;){a++,i=r;var c=0;for(n=0;n0||l>0&&i;)0!==c&&(0===l||!i||e(r)<=e(i))?(o=r,r=r.nextZ,c--):(o=i,i=i.nextZ,l--),u?u.nextZ=o:t=o,o.prevZ=u,u=o;r=i}u.nextZ=null,s*=2}while(a>1);return t}},91633:function(t,e,n){var r=n(49201),i=r.Node,o=r.insertNode,a=r.removeNode,s=n(13045).area,u=function(t,e){if(!t)return t;e||(e=t);var n,r=t;do{if(n=!1,r.steiner||!d(r,r.next)&&0!==s(r.prev,r,r.next))r=r.next;else{if(a(r),(r=e=r.prev)===r.next)break;n=!0}}while(n||r!==e);return e},c=function(t,e){return s(t.prev,t,t.next)<0?s(t,e,t.next)>=0&&s(t,t.prev,e)>=0:s(t,e,t.prev)<0||s(t,t.next,e)<0},l=function(t,e,n,r){var i=Math.sign(s(t,e,n)),o=Math.sign(s(t,e,r)),a=Math.sign(s(n,r,t)),u=Math.sign(s(n,r,e));return i!==o&&a!==u||(!(0!==i||!f(t,n,e))||(!(0!==o||!f(t,r,e))||(!(0!==a||!f(n,t,r))||!(0!==u||!f(n,e,r)))))},f=function(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)},h=function(t,e,n,r){for(var i=0,o=e,a=n-r;oo!==n.next.y>o&&n.next.y!==n.y&&i<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==t);return r}(t,e)&&(s(t.prev,t,e.prev)||s(t,e.prev,e))||d(t,e)&&s(t.prev,t,t.next)>0&&s(e.prev,e,e.next)>0)},linkedPolygon:function(t,e,n,r,i){var s;if(i===h(t,e,n,r)>0)for(var u=e;u=e;c-=r)s=o(c,t[c],t[c+1],s);return s&&d(s,s.next)&&(a(s),s=s.next),s},locallyInside:c,splitPolygon:function(t,e){var n=new i(t.i,t.x,t.y),r=new i(e.i,e.x,e.y),o=t.next,a=e.prev;return t.next=e,e.prev=t,n.next=o,o.prev=n,r.next=n,n.prev=r,a.next=r,r.prev=a,r}}},32061:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(66002),a=n(76692),s=n(87930),u=n(59820),c=n(93451),l=n(1564),f=function(){"use strict";function t(e){var n=this;r(this,t),this.plane=c(e);var i=u.orthogonal(u.create(),this.plane),a=u.cross(u.create(),this.plane,i);this.v=u.normalize(a,a),this.u=u.cross(u.create(),this.v,this.plane),this.basisMap=new Map;var s=e.edges.map((function(t){return t.map((function(t){return n.to2D(t)}))})),f=o.create(s);this.roots=l(f)}return i(t,[{key:"to2D",value:function(t){var e=s.fromValues(u.dot(t,this.u),u.dot(t,this.v));return this.basisMap.set(e,t),e}},{key:"to3D",value:function(t){var e=this.basisMap.get(t);if(e)return e;console.log("Warning: point not in original slice");var n=u.scale(u.create(),this.u,t[0]),r=u.scale(u.create(),this.v,t[1]),i=u.scale(u.create(),a,a[3]),o=u.add(n,n,i);return u.add(r,r,o)}}]),t}();t.exports=f},13045:function(t){t.exports={area:function(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)},pointInTriangle:function(t,e,n,r,i,o,a,s){return(i-a)*(e-s)-(t-a)*(o-s)>=0&&(t-a)*(r-s)-(n-a)*(e-s)>=0&&(n-a)*(o-s)-(i-a)*(r-s)>=0}}},28508:function(t,e,n){var r=n(30175),i=n(66002),o=n(27207),a=n(80026),s=n(51290),u=n(54644),c=n(97223),l=function(t,e,n){var o=null;return i.isA(n)&&(o=s.fromSides(i.toSides(n))),a.isA(n)&&(o=s.fromPoints(a.toPoints(n))),0===t||1===t?s.transform(r.fromTranslation(r.create(),[0,0,t]),o):null};t.exports=function(t,e){var n={numberOfSlices:2,capStart:!0,capEnd:!0,close:!1,repair:!0,callback:l},r=Object.assign({},n,t),i=r.numberOfSlices,f=r.capStart,h=r.capEnd,d=r.close,p=r.repair,v=r.callback;if(i<2)throw new Error("numberOfSlices must be 2 or more");p&&(e=u(e));for(var g=i-1,m=null,y=null,b=null,w=[],x=0;x=0})),g=i.fromSides(p);0===v.length&&(g=i.reverse(g));var m,y=Math.round(h/r*Math.abs(l)),b=y>=2?y:2,w=o.create();return a({numberOfSlices:b+1,callback:function(t,e,a){var s=d+l/b*e,u=f/b*e,c=(s-d)/r*n;return o.multiply(w,o.fromTranslation(o.create(),[u,0,c*Math.sign(l)]),o.fromXRotation(o.create(),-r/4*Math.sign(l))),m=o.create(),o.multiply(m,o.fromZRotation(o.create(),s),w),i.transform(m,a)}},g)}},54112:function(t,e,n){var r=n(28200),i=n(66002),o=n(63266),a=n(85448),s=n(85356);t.exports=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),u=1;u1?e-1:0),u=1;ur?f%r:f,h=Math.abs(h)>r?h%r:h;var p=f+h;if((p=Math.abs(p)>r?p%r:p)l*m&&l++}var y=a.toSides(e);if(0===y.length)throw new Error("the given geometry cannot be empty");var b=y.filter((function(t){return t[0][0]<0})),w=y.filter((function(t){return t[0][0]>=0}));b.length>0&&w.length>0&&"cap"===d&&(b.length>w.length?(y=y.map((function(t){var e=t[0],n=t[1];return[e=[Math.min(e[0],0),e[1]],n=[Math.min(n[0],0),n[1]]]})),e=a.reverse(a.create(y)),e=o(e)):w.length>=b.length&&(y=y.map((function(t){var e=t[0],n=t[1];return[e=[Math.max(e[0],0),e[1]],n=[Math.max(n[0],0),n[1]]]})),e=a.create(y)));var x=g/l,_=Math.abs(g)c&&h.push(r);var a=o.create([t[0],n[1],n[0]]),s=o.measureArea(a);Number.isFinite(s)&&s>c&&h.push(a)})),h}},20544:function(t,e,n){t.exports={extrudeFromSlices:n(28508),extrudeLinear:n(54112),extrudeRectangular:n(37643),extrudeRotate:n(44859),extrudeHelical:n(45368),project:n(98507),slice:n(51290)}},98507:function(t,e,n){var r=n(28200),i=n(92417),o=n(76692),a=n(30175),s=n(66002),u=n(27207),c=n(80026),l=n(23399),f=n(32383),h=function(t,e){var n=o.fromNormalAndPoint(o.create(),t.axis,t.origin);if(Number.isNaN(n[0])||Number.isNaN(n[1])||Number.isNaN(n[2])||Number.isNaN(n[3]))throw new Error("project: invalid axis or origin");var r=l(e),h=r*r*Math.sqrt(3)/4;if(0===r)return s.create();for(var d=u.toPolygons(e),p=[],v=0;v1?e-1:0),i=1;ia&&(n=t,a=e)}}));var s=e.find((function(t){return i.equals(t[1],n[0])}));return r.fromPoints(r.create(),s[0],n[0],n[1])}},29769:function(t,e,n){var r=n(99593),i=n(59820);t.exports=function(){var t,e;return 1===arguments.length?(t=r(),e=arguments.length<=0?void 0:arguments[0]):(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),t.edges=e.edges.map((function(t){return[i.clone(t[0]),i.clone(t[1])]})),t}},99593:function(t){t.exports=function(t){return t||(t=[]),{edges:t}}},76527:function(t,e,n){var r=n(59820);t.exports=function(t,e){var n=t.edges,i=e.edges;return n.length===i.length&&n.reduce((function(t,e,n){var o=i[n],a=r.squaredDistance(e[0],o[0]);return t&&a0&&s.push(e)})),a.forEach((function(t){var i,o=n.get(t),a=1/0;s.forEach((function(t){var e=n.get(t),s=r.distance(o,e);se.angle?1:t.distSqe.distSq?1:0}));var a=[];return n.forEach((function(t){for(var e=a.length;e>1&&i(a[e-2],a[e-1],t.point)<=Number.EPSILON;)a.pop(),e=a.length;a.push(t.point)})),a}},27919:function(t,e,n){t.exports={hull:n(53409),hullChain:n(66906)}},84450:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(99623),a=n(6809),s=n(40094),u=n(6928),c=n(38619),l=n(16778),f=n(50080),h=n(33570),d=n(84427),p=function(){"use strict";function t(){r(this,t),this.normal=[],this.centroid=[],this.offset=0,this.outside=null,this.mark=0,this.edge=null,this.nVertices=0}return i(t,[{key:"getEdge",value:function(t){if("number"!==typeof t)throw Error("requires a number");for(var e=this.edge;t>0;)e=e.next,t-=1;for(;t<0;)e=e.prev,t+=1;return e}},{key:"computeNormal",value:function(){var t=this.edge,e=t.next,n=e.next,r=h([],e.head().point,t.head().point),i=[],u=[];for(this.nVertices=2,this.normal=[0,0,0];n!==t;)a(u,r),h(r,n.head().point,t.head().point),o(this.normal,this.normal,s(i,u,r)),n=n.next,this.nVertices+=1;this.area=c(this.normal),this.normal=f(this.normal,this.normal,1/this.area)}},{key:"computeNormalMinArea",value:function(t){if(this.computeNormal(),this.arean&&(e=r,n=i),r=r.next}while(r!==this.edge);var a=e.tail().point,s=e.head().point,c=h([],s,a),d=Math.sqrt(n);f(c,c,1/d);var p=u(this.normal,c);f(c,c,-p),o(this.normal,this.normal,c),l(this.normal,this.normal)}}},{key:"computeCentroid",value:function(){this.centroid=[0,0,0];var t=this.edge;do{o(this.centroid,this.centroid,t.head().point),t=t.next}while(t!==this.edge);f(this.centroid,this.centroid,1/this.nVertices)}},{key:"computeNormalAndCentroid",value:function(t){"undefined"!==typeof t?this.computeNormalMinArea(t):this.computeNormal(),this.computeCentroid(),this.offset=u(this.normal,this.centroid)}},{key:"distanceToPlane",value:function(t){return u(this.normal,t)-this.offset}},{key:"connectHalfEdges",value:function(t,e){var n;if(t.opposite.face===e.opposite.face){var r,i=e.opposite.face;t===this.edge&&(this.edge=e),3===i.nVertices?(r=e.opposite.prev.opposite,i.mark=2,n=i):(r=e.opposite.next,i.edge===r.prev&&(i.edge=r),r.prev=r.prev.prev,r.prev.next=r),e.prev=t.prev,e.prev.next=e,e.setOpposite(r),i.computeNormalAndCentroid()}else t.next=e,e.prev=t;return n}},{key:"mergeAdjacentFaces",value:function(t,e){var n=t.opposite,r=n.face;e.push(r),r.mark=2;for(var i,o,a=t.prev,s=t.next,u=n.prev,c=n.next;a.opposite.face===r;)a=a.prev,c=c.next;for(;s.opposite.face===r;)s=s.next,u=u.prev;for(i=c;i!==u.next;i=i.next)i.face=this;return this.edge=s,(o=this.connectHalfEdges(u,s))&&e.push(o),(o=this.connectHalfEdges(a,c))&&e.push(o),this.computeNormalAndCentroid(),e}},{key:"collectIndices",value:function(){var t=[],e=this.edge;do{t.push(e.head().index),e=e.next}while(e!==this.edge);return t}}],[{key:"createTriangle",value:function(e,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=new t,a=new d(e,o),s=new d(n,o),u=new d(r,o);return a.next=u.prev=s,s.next=a.prev=u,u.next=s.prev=a,o.edge=a,o.computeNormalAndCentroid(i),o}}]),t}();t.exports={VISIBLE:0,NON_CONVEX:1,DELETED:2,Face:p}},84427:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(88823),a=n(77405),s=function(){"use strict";function t(e,n){r(this,t),this.vertex=e,this.face=n,this.next=null,this.prev=null,this.opposite=null}return i(t,[{key:"head",value:function(){return this.vertex}},{key:"tail",value:function(){return this.prev?this.prev.vertex:null}},{key:"length",value:function(){return this.tail()?o(this.tail().point,this.head().point):-1}},{key:"lengthSquared",value:function(){return this.tail()?a(this.tail().point,this.head().point):-1}},{key:"setOpposite",value:function(t){this.opposite=t,t.opposite=this}}]),t}();t.exports=s},88105:function(t,e,n){var r=n(63038).default,i=n(34575).default,o=n(93913).default,a=n(6928),s=n(32071),u=n(51788),c=n(67529),l=n(13107),f=n(84450),h=f.Face,d=f.VISIBLE,p=f.NON_CONVEX,v=f.DELETED,g=function(){"use strict";function t(e){if(i(this,t),!Array.isArray(e))throw TypeError("input is not a valid array");if(e.length<4)throw Error("cannot build a simplex out of <4 points");this.tolerance=-1,this.nFaces=0,this.nPoints=e.length,this.faces=[],this.newFaces=[],this.claimed=new c,this.unclaimed=new c,this.vertices=[];for(var n=0;nthis.tolerance?this.addVertexToFace(i,e):this.unclaimed.add(i)}else this.unclaimed.addAll(n)}},{key:"resolveUnclaimedPoints",value:function(t){for(var e=this.unclaimed.first(),n=e;n;n=e){e=n.next;for(var r=this.tolerance,i=void 0,o=0;or&&(r=s,i=a),r>1e3*this.tolerance)break}}i&&this.addVertexToFace(n,i)}}},{key:"computeExtremes",value:function(){var t,e,n=[],r=[],i=[],o=[];for(t=0;t<3;t+=1)i[t]=o[t]=this.vertices[0];for(t=0;t<3;t+=1)n[t]=r[t]=this.vertices[0].point[t];for(t=1;tr[e]&&(r[e]=s[e],o[e]=a)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(n[0]),Math.abs(r[0]))+Math.max(Math.abs(n[1]),Math.abs(r[1]))+Math.max(Math.abs(n[2]),Math.abs(r[2]))),[i,o]}},{key:"createInitialSimplex",value:function(){var t,e,n,i,o=this.vertices,c=this.computeExtremes(),l=r(c,2),f=l[0],d=l[1],p=0,v=0;for(n=0;n<3;n+=1){var g=d[n].point[n]-f[n].point[n];g>p&&(p=g,v=n)}var m=f[v],y=d[v];for(p=0,n=0;np&&(p=w,t=b)}}var x=u([],m.point,y.point,t.point),_=a(m.point,x);for(p=-1,n=0;np&&(p=A,e=S)}}var E=[];if(a(e.point,x)-_<0)for(E.push(h.createTriangle(m,y,t),h.createTriangle(e,y,m),h.createTriangle(e,t,y),h.createTriangle(e,m,t)),n=0;n<3;n+=1){var C=(n+1)%3;E[n+1].getEdge(2).setOpposite(E[0].getEdge(C)),E[n+1].getEdge(1).setOpposite(E[C+1].getEdge(0))}else for(E.push(h.createTriangle(m,t,y),h.createTriangle(e,m,y),h.createTriangle(e,y,t),h.createTriangle(e,t,m)),n=0;n<3;n+=1){var k=(n+1)%3;E[n+1].getEdge(2).setOpposite(E[0].getEdge((3-n)%3)),E[n+1].getEdge(0).setOpposite(E[k+1].getEdge(1))}for(n=0;n<4;n+=1)this.faces.push(E[n]);for(n=0;np&&(p=M,P=E[i])}P&&this.addVertexToFace(T,P)}}}},{key:"reindexFaceAndVertices",value:function(){for(var t=[],e=0;en&&(n=i,t=e)}return t}}},{key:"computeHorizon",value:function(t,e,n,r){var i;this.deleteFaceVertices(n),n.mark=v,i=e?e.next:e=n.getEdge(0);do{var o=i.opposite,a=o.face;a.mark===d&&(a.distanceToPlane(t)>this.tolerance?this.computeHorizon(t,o,a,r):r.push(i)),i=i.next}while(i!==e)}},{key:"addAdjoiningFace",value:function(t,e){var n=h.createTriangle(t,e.tail(),e.head());return this.faces.push(n),n.getEdge(-1).setOpposite(e.opposite),n.getEdge(0)}},{key:"addNewFaces",value:function(t,e){var n,r;this.newFaces=[];for(var i=0;i=t.nVertices)throw Error("merge recursion limit exceeded");var o=n.opposite.face,a=!1;if(2===e?(this.oppositeFaceDistance(n)>-this.tolerance||this.oppositeFaceDistance(n.opposite)>-this.tolerance)&&(a=!0):t.area>o.area?this.oppositeFaceDistance(n)>-this.tolerance?a=!0:this.oppositeFaceDistance(n.opposite)>-this.tolerance&&(r=!1):this.oppositeFaceDistance(n.opposite)>-this.tolerance?a=!0:this.oppositeFaceDistance(n)>-this.tolerance&&(r=!1),a){for(var s=t.mergeAdjacentFaces(n,[]),u=0;u1&&void 0!==arguments[1]?arguments[1]:{},n=new r(t);return n.build(),n.collectFaces(e.skipTriangulation)}},32071:function(t,e,n){var r=n(40094),i=n(33570),o=n(32337);t.exports=function(t,e,n){return Math.sqrt(function(t,e,n){var a=[],s=[];i(a,n,e),i(s,t,e);var u=o(r([],s,a)),c=o(a);if(0===c)throw Error("a and b are the same point");return u/c}(t,e,n))}},48686:function(t,e,n){var r=n(66002),i=n(27207),o=n(63266);t.exports=function(t){var e=new Set,n=[],a=function(t){var r=t.toString();e.has(r)||(n.push(t),e.add(r))};return t.forEach((function(t){r.isA(t)?r.toPoints(t).forEach(a):i.isA(t)?i.toPoints(t).forEach((function(t){return t.forEach(a)})):o.isA(t)&&o.toPoints(t).forEach(a)})),n}},59231:function(t,e,n){var r=n(28200),i=n(23399),o=n(66002),a=n(27207),s=n(63266),u=n(87662),c=n(82732),l=n(8073),f=n(74605),h=function(t,e){return e},d=function(t,e){return e},p=function(t,e){var n=Object.assign({},{snap:!1,simplify:!1,triangulate:!1},t),r=n.snap,o=n.simplify,s=n.triangulate,h=i(e),d=a.toPolygons(e);r&&(d=u(h,d)),o&&(d=c(h,d)),s&&(d=l(d),d=f(h,d));var p=Object.assign({},e);return p.polygons=d,p};t.exports=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i=3)for(var p=h.vertices[0],v=c(p),g=0;g0&&function(){var n,h=new Map,d=new Map,p=new Map,v=i(e);try{var g=function(){var t=r(n.value,2),e=t[0],i=t[1];p.set(e,!0),i.forEach((function(t){var n=c(t.vertex0),r=c(t.vertex1);h.has(n)?h.get(n).push(e):h.set(n,[e]),d.has(r)?d.get(r).push(e):d.set(r,[e])}))};for(v.s();!(n=v.n()).done;)g()}catch(tt){v.e(tt)}finally{v.f()}for(var m=t.slice(0);0!==e.size;){var y,b=i(e.keys());try{for(b.s();!(y=b.n()).done;){var w=y.value;p.set(w,!0)}}catch(tt){b.e(tt)}finally{b.f()}for(var x=!1;;){var _=Array.from(p.keys());if(0===_.length)break;var S=_[0],A=!0;if(e.has(S)){var E=e.get(S);u;for(var C=E[0],k=0;k<2;k++){var T=0===k?C.vertex0:C.vertex1,P=0===k?C.vertex1:C.vertex0,M=c(T),O=c(P),L=[];0===k?d.has(M)&&(L=d.get(M)):h.has(M)&&(L=h.get(M));for(var N=0;N0&&U<1){var W=a.scale(a.create(),q,U);if(a.add(W,W,B),a.squaredDistance(W,z)0;)for(var i=n.shift(),f=a(i),h=0;h=0&&v[1]>=0){var g=p.next,m=d.next;d.prev.next=p.next,d.next.prev=p.prev,p.prev.next=d.next,p.next.prev=d.prev,d.v1=null,d.v2=null,d.next=null,d.prev=null,u(r,p),p.v1=null,p.v2=null,p.next=null,p.prev=null;var y=function(t,e,n){var r={v1:n.v1,v2:e.v2,next:e.next,prev:n.prev};n.prev.next=r,e.next.prev=r,u(t,e),e.v1=null,e.v2=null,e.next=null,e.prev=null,u(t,n),n.v1=null,n.v2=null,n.next=null,n.prev=null};0===v[0]&&y(r,g,g.prev),0===v[1]&&y(r,m,m.prev)}}else d.next&&s(r,d)}var b=[];return r.forEach((function(t){var e=function(t){for(var e,n=[];t.next;){var r=t.next;n.push(t.v1),t.v1=null,t.v2=null,t.next=null,t.prev=null,t=r}return n.length>0&&(e=o.create(n)),e}(t);e&&b.push(e)})),r.clear(),b};t.exports=function(t,e){var n=[];e.forEach((function(t){var e=n.find((function(e){return n=e[0],i=o.plane(t),Math.abs(n[3]-i[3])<15e-8&&r(n,i);var n,i}));e?e[1].push(t):n.push([o.plane(t),[t]])}));var i=[];return n.forEach((function(t){var e=t[1],n=p(e);i=i.concat(n)})),i}},55264:function(t,e,n){var r=n(80797).EPS,i=n(59636),o=n(87930),a=n(41991),s=n(55170),u=n(51602),c=u.insertSorted,l=u.fnNumberSort,f=n(80026);t.exports=function(t){if(t.length<2)return t;for(var e=[],n=t.length,u=f.plane(t[0]),h=new a(u),d=[],p=[],v=new Map,g=new Map,m=new Map,y=10/r,b=0;b0){for(var A=void 0,E=void 0,C=0;C<_;C++){var k=h.to2D(w.vertices[C]),T=Math.floor(k[1]*y),P=void 0;m.has(T)?P=m.get(T):m.has(T+1)?P=m.get(T+1):m.has(T-1)?P=m.get(T-1):(P=k[1],m.set(T,k[1])),k=o.fromValues(k[0],P),x.push(k);var M=k[1];(0===C||ME)&&(E=M);var O=g.get(M);O||(O={},g.set(M,O)),O[b]=!0}if(A>=E)x=[],_=0,S=-1;else{var L=v.get(A);L||(L=[],v.set(A,L)),L.push(b)}}x.reverse(),S=_-S-1,d.push(x),p.push(S)}var N=[];g.forEach((function(t,e){return N.push(e)})),N.sort(l);for(var D=[],j=[],I=0;I=W&&(H=0),U[H][1]!==F)break;Y=H}var G=X-1;if(G<0&&(G=W-1),U[G][1]===F&&(X=G),Y!==V.leftvertexindex&&Y===X)D.splice(z,1),--z;else{V.leftvertexindex=Y,V.rightvertexindex=X,V.topleft=U[Y],V.topright=U[X];var Z=Y+1;Z>=W&&(Z=0),V.bottomleft=U[Z];var $=X-1;$<0&&($=W-1),V.bottomright=U[$]}}}var K=void 0;for(var J in I>=N.length-1?(D=[],K=null):function(){K=Number(N[I+1]);var t=.5*(F+K),e=v.get(F);for(var n in e){for(var r=e[n],i=d[r],o=i.length,a=p[r],u=a;;){var l=u+1;if(l>=o&&(l=0),i[l][1]!==F)break;if(l===a)break;u=l}for(var f=a;;){var h=f-1;if(h<0&&(h=o-1),i[h][1]!==F)break;if(h===u)break;f=h}var g=u+1;g>=o&&(g=0);var m=f-1;m<0&&(m=o-1);var y={polygonindex:r,leftvertexindex:u,rightvertexindex:f,topleft:i[u],topright:i[f],bottomleft:i[g],bottomright:i[m]};c(D,y,(function(e,n){var r=s(e.topleft,e.bottomleft,t),i=s(n.topleft,n.bottomleft,t);return r>i?1:r0){var at=R[R.length-1],st=o.distance(ot.topleft,at.topright),ut=o.distance(ot.bottomleft,at.bottomright);st0){for(var ct=new Set,lt=new Set,ft=0;ft=0)&&(_t||wt>=0)&&(ht.outpolygon=pt.outpolygon,ht.leftlinecontinues=xt,ht.rightlinecontinues=_t,ct.add(dt));break}}for(var St=0;Str&&At.outpolygon.leftpoints.push(At.bottomleft),At.outpolygon.leftpoints.reverse();var Et=At.outpolygon.rightpoints.concat(At.outpolygon.leftpoints).map((function(t){return h.to3D(t)})),Ct=f.fromPointsAndPlane(Et,u);Ct.vertices.length&&e.push(Ct)}}for(var kt=0;ktr&&Tt.outpolygon.rightpoints.push(Tt.topright))}j=R}return e}},49425:function(t,e,n){var r=n(27207),i=n(80026),o=n(92417),a=n(55264);t.exports=function(t){if(t.isRetesselated)return t;var e=r.toPolygons(t),n=[];e.forEach((function(t){var e=n.find((function(e){return n=e[0],r=i.plane(t),Math.abs(n[3]-r[3])<15e-8&&o(n,r);var n,r}));e?e[1].push(t):n.push([i.plane(t),[t]])}));var s=[];n.forEach((function(t){var e=t[1],n=a(e);s=s.concat(n)}));var u=r.create(s);return u.isRetesselated=!0,u}},99004:function(t,e,n){var r=n(28200),i=n(87930),o=n(66002),a=n(27207),s=n(63266),u=n(23399),c=n(87662),l=function(t){var e=u(t),n=s.toPoints(t).map((function(t){return i.snap(i.create(),t,e)}));return s.create(n)},f=function(t){var e=u(t),n=o.toSides(t).map((function(t){return[i.snap(i.create(),t[0],e),i.snap(i.create(),t[1],e)]}));return n=n.filter((function(t){return!i.equals(t[0],t[1])})),o.create(n)},h=function(t){var e=u(t),n=a.toPolygons(t),r=c(e,n);return a.create(r)};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;nt}(o,t)})),n}},74605:function(t,e,n){var r=n(59820),i=n(80026);t.exports=function(t,e){var n=[];return e.forEach((function(e){!function(t,e,n){var o=e.vertices.length;if(o>3){if(o>4){var a=[0,0,0];e.vertices.forEach((function(t){return r.add(a,a,t)})),r.snap(a,r.divide(a,a,[o,o,o]),t);for(var s=0;s3)throw new Error("align(): modes must be an array of length <= 3");if(t.modes=i(t.modes,"none",3),3!==t.modes.filter((function(t){return["center","max","min","none"].includes(t)})).length)throw new Error('align(): all modes must be one of "center", "max" or "min"');if(!Array.isArray(t.relativeTo)||t.relativeTo.length>3)throw new Error("align(): relativeTo must be an array of length <= 3");if(t.relativeTo=i(t.relativeTo,0,3),3!==t.relativeTo.filter((function(t){return Number.isFinite(t)||null==t})).length)throw new Error("align(): all relativeTo values must be a number, or null.");if("boolean"!==typeof t.grouped)throw new Error("align(): grouped must be a boolean value.");return t},u=function(t,e,n){for(var r=0;r<3;r++)null==t[r]&&("center"===e[r]?t[r]=(n[0][r]+n[1][r])/2:"max"===e[r]?t[r]=n[1][r]:"min"===e[r]&&(t[r]=n[0][r]));return t},c=function(t,e,n){for(var r=o(t),i=[0,0,0],s=0;s<3;s++)"center"===e[s]?i[s]=n[s]-(r[0][s]+r[1][s])/2:"max"===e[s]?i[s]=n[s]-r[1][s]:"min"===e[s]&&(i[s]=n[s]-r[0][s]);return a(i,t)};t.exports=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i1?e-1:0),s=1;s1?e-1:0),c=1;c1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),s=1;s1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;rd&&(g=d+(o-h));var m,y=Math.acos((u*u+u*u-i*i)/(2*u*u)),b=a.clone(r),w=[];if(g.25&&(_=.25);for(var S=p?x+2:x,A=0;A<=S;A++){var E=A;p&&((E=(A-1)*(x-2*_)/x+_)<0&&(E=0),E>x&&(E=x));var C=h+E*(g/x);m=a.fromAngleRadians(a.create(),C),a.scale(m,m,u),a.add(m,m,b),w.push(m)}}return s.fromPoints({closed:!1},w)}},38191:function(t,e,n){var r=n(80797).TAU,i=n(77724),o=n(49438).isGT;t.exports=function(t){var e={center:[0,0],radius:1,startAngle:0,endAngle:r,segments:32},n=Object.assign({},e,t),a=n.center,s=n.radius,u=n.startAngle,c=n.endAngle,l=n.segments;if(!o(s,0))throw new Error("radius must be greater than zero");return i({center:a,radius:s=[s,s],startAngle:u,endAngle:c,segments:l})}},49438:function(t){t.exports={isNumberArray:function(t,e){return!!(Array.isArray(t)&&t.length>=e)&&t.every((function(t){return Number.isFinite(t)}))},isGT:function(t,e){return Number.isFinite(t)&&t>e},isGTE:function(t,e){return Number.isFinite(t)&&t>=e}}},31746:function(t,e,n){var r=n(87842),i=n(49438).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],size:2},t),n=e.center,o=e.size;if(!i(o,0))throw new Error("size must be greater than zero");return r({center:n,size:o=[o,o,o]})}},87842:function(t,e,n){var r=n(27207),i=n(80026),o=n(49438).isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],size:[2,2,2]},t),n=e.center,a=e.size;if(!o(n,3))throw new Error("center must be an array of X, Y and Z values");if(!o(a,3))throw new Error("size must be an array of width, depth and height values");if(!a.every((function(t){return t>0})))throw new Error("size values must be greater than zero");return r.create([[[0,4,6,2],[-1,0,0]],[[1,3,7,5],[1,0,0]],[[0,1,5,4],[0,-1,0]],[[2,6,7,3],[0,1,0]],[[0,2,3,1],[0,0,-1]],[[4,5,7,6],[0,0,1]]].map((function(t){var e=t[0].map((function(t){return[n[0]+a[0]/2*(2*!!(1&t)-1),n[1]+a[1]/2*(2*!!(2&t)-1),n[2]+a[2]/2*(2*!!(4&t)-1)]}));return i.create(e)})))}},72979:function(t,e,n){var r=n(77490),i=n(49438).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],height:2,radius:1,segments:32},t),n=e.center,o=e.height,a=e.radius,s=e.segments;if(!i(a,0))throw new Error("radius must be greater than zero");return r({center:n,height:o,startRadius:[a,a],endRadius:[a,a],segments:s})}},77490:function(t,e,n){var r=n(80797),i=r.EPS,o=r.TAU,a=n(59820),s=n(27207),u=n(80026),c=n(81981),l=c.sin,f=c.cos,h=n(49438),d=h.isGT,p=h.isGTE,v=h.isNumberArray;t.exports=function(t){var e={center:[0,0,0],height:2,startRadius:[1,1],startAngle:0,endRadius:[1,1],endAngle:o,segments:32},n=Object.assign({},e,t),r=n.center,c=n.height,h=n.startRadius,g=n.startAngle,m=n.endRadius,y=n.endAngle,b=n.segments;if(!v(r,3))throw new Error("center must be an array of X, Y and Z values");if(!d(c,0))throw new Error("height must be greater then zero");if(!v(h,2))throw new Error("startRadius must be an array of X and Y values");if(!h.every((function(t){return t>=0})))throw new Error("startRadius values must be positive");if(!v(m,2))throw new Error("endRadius must be an array of X and Y values");if(!m.every((function(t){return t>=0})))throw new Error("endRadius values must be positive");if(m.every((function(t){return 0===t}))&&h.every((function(t){return 0===t})))throw new Error("at least one radius must be positive");if(!p(g,0))throw new Error("startAngle must be positive");if(!p(y,0))throw new Error("endAngle must be positive");if(!p(b,4))throw new Error("segments must be four or more");var w=o;(g%=o)<(y%=o)&&(w=y-g),g>y&&(w=y+(o-g));var x=Math.min(h[0],h[1],m[0],m[1]),_=Math.acos((x*x+x*x-i*i)/(2*x*x));if(w<_)throw new Error("startAngle and endAngle do not define a significant rotation");for(var S=Math.floor(b*(w/o)),A=a.fromValues(0,0,-c/2),E=a.fromValues(0,0,c/2),C=a.subtract(a.create(),E,A),k=a.fromValues(1,0,0),T=a.fromValues(0,1,0),P=a.create(),M=a.create(),O=a.create(),L=function(t,e,n){var r=e*w+g;return a.scale(P,k,n[0]*f(r)),a.scale(M,T,n[1]*l(r)),a.add(P,P,M),a.scale(O,C,t),a.add(O,O,A),a.add(a.create(),P,O)},N=function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&h[1]>0&&D.push(N(A,L(0,R,h),L(0,I,h))),(h[0]>0||h[1]>0)&&D.push(N(L(0,I,h),L(0,R,h),L(1,I,m))),m[0]>0&&m[1]>0&&D.push(N(E,L(1,I,m),L(1,R,m))),(m[0]>0||m[1]>0)&&D.push(N(L(1,I,m),L(0,R,h),L(1,R,m))))}return w0})))throw new Error("radius values must be greater than zero");if(!h(f,0))throw new Error("startAngle must be positive");if(!h(p,0))throw new Error("endAngle must be positive");if(!h(v,3))throw new Error("segments must be three or more");var g=o;(f%=o)<(p%=o)&&(g=p-f),f>p&&(g=p+(o-f));var m=Math.min(u[0],u[1]);if(g0})))throw new Error("radius values must be greater than zero");if(!f(l,4))throw new Error("segments must be four or more");for(var p,v=i.scale(i.create(),i.normalize(i.create(),d[0]),s[0]),g=i.scale(i.create(),i.normalize(i.create(),d[1]),s[1]),m=i.scale(i.create(),i.normalize(i.create(),d[2]),s[2]),y=Math.round(l/4),b=[],w=i.create(),x=i.create(),_=0;_<=l;_++){var S=r*_/l,A=i.add(i.create(),i.scale(w,v,c(S)),i.scale(x,g,u(S)));if(_>0)for(var E=void 0,C=void 0,k=0;k<=y;k++){var T=r/4*k/y,P=c(T),M=u(T);if(k>0){var O=[],L=void 0;L=i.subtract(i.create(),i.scale(w,p,E),i.scale(x,m,C)),O.push(i.add(L,L,n)),L=i.subtract(i.create(),i.scale(w,A,E),i.scale(x,m,C)),O.push(i.add(L,L,n)),k0})))throw new Error("size values must be greater than zero");var s=[a[0]/2,a[1]/2],u=[s[0],-s[1]],c=[r.subtract(r.create(),n,s),r.add(r.create(),n,u),r.add(r.create(),n,s),r.subtract(r.create(),n,u)];return i.fromPoints(c)}},46237:function(t,e,n){var r=n(80797),i=r.EPS,o=r.TAU,a=n(87930),s=n(59820),u=n(27207),c=n(80026),l=n(81981),f=l.sin,h=l.cos,d=n(49438),p=d.isGT,v=d.isGTE,g=d.isNumberArray,m=function(t,e,n,r,u,c){var l=o/4*u/r,d=h(l),p=f(l),v=r-u,g=n*d,m=e[2]-(n-n*p);c||(m=n-n*p-e[2]),g=g>i?g:0;for(var y=s.add(s.create(),t,[e[0]-n,e[1]-n,m]),b=s.add(s.create(),t,[n-e[0],e[1]-n,m]),w=s.add(s.create(),t,[n-e[0],n-e[1],m]),x=s.add(s.create(),t,[e[0]-n,n-e[1],m]),_=[],S=[],A=[],E=[],C=0;C<=v;C++){var k=v>0?o/4*C/v:0,T=a.fromAngleRadians(a.create(),k);a.scale(T,T,g);var P=s.fromVec2(s.create(),T);_.push(s.add(s.create(),y,P)),s.rotateZ(P,P,[0,0,0],o/4),S.push(s.add(s.create(),b,P)),s.rotateZ(P,P,[0,0,0],o/4),A.push(s.add(s.create(),w,P)),s.rotateZ(P,P,[0,0,0],o/4),E.push(s.add(s.create(),x,P))}return c?[_,S,A,E]:(_.reverse(),S.reverse(),A.reverse(),E.reverse(),[E,A,S,_])},y=function(t,e){for(var n=[],r=0;r0})))throw new Error("size values must be greater than zero");if(!p(o,0))throw new Error("roundRadius must be greater than zero");if(!v(a,4))throw new Error("segments must be four or more");if(o>(r=r.map((function(t){return t/2})))[0]-i||o>r[1]-i||o>r[2]-i)throw new Error("roundRadius must be smaller then the radius of all dimensions");a=Math.floor(a/4);for(var s=null,l=null,f=[],h=0;h<=a;h++){var d=m(n,r,o,a,h,!0),x=m(n,r,o,a,h,!1);if(0===h&&(f=f.concat(w(x,d))),s&&(f=f.concat(y(s,d),b(s,d))),l&&(f=f.concat(y(l,x),b(l,x))),h===a){var _=d.map((function(t){return t[0]}));f.push(c.create(_)),_=x.map((function(t){return t[0]})),f.push(c.create(_))}s=d,l=x}return u.create(f)}},23968:function(t,e,n){var r=n(80797),i=r.EPS,o=r.TAU,a=n(59820),s=n(27207),u=n(80026),c=n(81981),l=c.sin,f=c.cos,h=n(49438),d=h.isGT,p=h.isGTE,v=h.isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],height:2,radius:1,roundRadius:.2,segments:32},t),n=e.center,r=e.height,c=e.radius,h=e.roundRadius,g=e.segments;if(!v(n,3))throw new Error("center must be an array of X, Y and Z values");if(!d(r,0))throw new Error("height must be greater then zero");if(!d(c,0))throw new Error("radius must be greater then zero");if(!d(h,0))throw new Error("roundRadius must be greater then zero");if(h>c-i)throw new Error("roundRadius must be smaller then the radius");if(!p(g,4))throw new Error("segments must be four or more");var m,y=[0,0,-r/2],b=[0,0,r/2],w=a.subtract(a.create(),b,y);if(2*h>a.length(w)-i)throw new Error("height must be larger than twice roundRadius");m=Math.abs(w[0])>Math.abs(w[1])?a.fromValues(0,1,0):a.fromValues(1,0,0);var x=a.scale(a.create(),a.normalize(a.create(),w),h),_=a.scale(a.create(),a.normalize(a.create(),a.cross(a.create(),x,m)),c),S=a.scale(a.create(),a.normalize(a.create(),a.cross(a.create(),_,x)),c);a.add(y,y,x),a.subtract(b,b,x);for(var A,E=Math.floor(.25*g),C=function(t){var e=t.map((function(t){return a.add(t,t,n)}));return u.create(e)},k=[],T=a.create(),P=a.create(),M=0;M<=g;M++){var O=o*M/g,L=a.add(a.create(),a.scale(T,_,f(O)),a.scale(P,S,l(O)));if(M>0){var N=[];N.push(a.add(a.create(),y,L)),N.push(a.add(a.create(),y,A)),N.push(a.add(a.create(),b,A)),N.push(a.add(a.create(),b,L)),k.push(C(N));for(var D=void 0,j=void 0,I=0;I<=E;I++){var R=o/4*I/E,F=f(R),B=l(R);if(I>0){N=[];var z=void 0;z=a.add(a.create(),y,a.subtract(T,a.scale(T,A,D),a.scale(P,x,j))),N.push(z),z=a.add(a.create(),y,a.subtract(T,a.scale(T,L,D),a.scale(P,x,j))),N.push(z),I0})))throw new Error("size values must be greater than zero");if(!c(u,0))throw new Error("roundRadius must be greater than zero");if(!l(h,4))throw new Error("segments must be four or more");if(u>(r=r.map((function(t){return t/2})))[0]-i||u>r[1]-i)throw new Error("roundRadius must be smaller then the radius of all dimensions");for(var d=Math.floor(h/4),p=a.add(a.create(),n,[r[0]-u,r[1]-u]),v=a.add(a.create(),n,[u-r[0],r[1]-u]),g=a.add(a.create(),n,[u-r[0],u-r[1]]),m=a.add(a.create(),n,[r[0]-u,u-r[1]]),y=[],b=[],w=[],x=[],_=0;_<=d;_++){var S=o/4*_/d,A=a.fromAngleRadians(a.create(),S);a.scale(A,A,u),y.push(a.add(a.create(),p,A)),a.rotate(A,A,a.create(),o/4),b.push(a.add(a.create(),v,A)),a.rotate(A,A,a.create(),o/4),w.push(a.add(a.create(),g,A)),a.rotate(A,A,a.create(),o/4),x.push(a.add(a.create(),m,A))}return s.fromPoints(y.concat(b,w,x))}},80172:function(t,e,n){var r=n(74587),i=n(49438).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],radius:1,segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},t),n=e.center,o=e.radius,a=e.segments,s=e.axes;if(!i(o,0))throw new Error("radius must be greater than zero");return r({center:n,radius:o=[o,o,o],segments:a,axes:s})}},64863:function(t,e,n){var r=n(38916),i=n(49438).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0],size:2},t),n=e.center,o=e.size;if(!i(o,0))throw new Error("size must be greater than zero");return r({center:n,size:o=[o,o]})}},69624:function(t,e,n){var r=n(80797).TAU,i=n(87930),o=n(66002),a=n(49438),s=a.isGT,u=a.isGTE,c=a.isNumberArray,l=function(t,e,n,o){for(var a=r/t,s=[],u=0;u0&&e>1&&e=h)throw new Error("inner circle is two large to rotate about the outer circle");var m=s({radius:u,segments:f});return 0!==p&&(m=o([0,0,p],m)),m=a([h,0],m),i({startAngle:v,angle:g,segments:d},m)}},9487:function(t,e,n){var r=n(80797).NEPS,i=n(87930),o=n(66002),a=n(49438).isNumberArray,s=function(t,e,n){return Math.acos((t*t+e*e-n*n)/(2*t*e))},u=function(t){var e=t[0],n=t[1],i=t[2],o=function(t,e,n){return e>r?Math.sqrt(t*t+n*n-2*t*n*Math.cos(e)):Math.sqrt((t-n)*(t-n)+t*n*e*e*(1-e*e/12))}(e,n,i),a=s(o,e,i),u=Math.PI-a-n;return c(a,n,u,i,o,e)},c=function(t,e,n,r,a,s){var u=i.fromValues(0,0),c=i.fromValues(s,0),l=i.fromValues(r,0);return i.add(l,i.rotate(l,l,[0,0],Math.PI-e),c),o.fromPoints([u,c,l])};t.exports=function(t){var e=Object.assign({},{type:"SSS",values:[1,1,1]},t),n=e.type,i=e.values;if("string"!==typeof n)throw new Error("triangle type must be a string");if("A"!==(n=n.toUpperCase())[0]&&"S"!==n[0]||"A"!==n[1]&&"S"!==n[1]||"A"!==n[2]&&"S"!==n[2])throw new Error("triangle type must contain three letters; A or S");if(!a(i,3))throw new Error("triangle values must contain three values");if(!i.every((function(t){return t>0})))throw new Error("triangle values must be greater than zero");switch(n){case"AAA":return function(t){if(Math.abs(t[0]+t[1]+t[2]-Math.PI)>r)throw new Error("AAA triangles require angles that sum to PI");var e=t[0],n=t[1],i=Math.PI-e-n,o=1/Math.sin(i)*Math.sin(e),a=1/Math.sin(i)*Math.sin(n);return c(e,n,i,o,a,1)}(i);case"AAS":return function(t){var e=t[0],n=t[1],i=Math.PI+r-e-n;if(iS.width&&(l=C-S.width,"right"===m?S=o({x:l},S):"center"===m&&(S=o({x:l/2},S))),E=E.concat(S.segments);return E}},86787:function(t,e,n){var r=n(43269).default,i=n(66002),o=n(27207),a=n(63266);t.exports=function(t){var e,n,s=r(t);try{for(s.s();!(n=s.n()).done;){var u=n.value,c=0;if(i.isA(u)&&(c=1),o.isA(u)&&(c=2),a.isA(u)&&(c=3),e&&c!==e)return!1;e=c}}catch(l){s.e(l)}finally{s.f()}return!0}},98959:function(t){t.exports=function(t){return.017453292519943295*t}},28200:function(t){t.exports=function t(e){return e.reduce((function(e,n){return Array.isArray(n)?e.concat(t(n)):e.concat(n)}),[])}},80500:function(t){t.exports=function(t,e){return t-e}},51602:function(t,e,n){t.exports={areAllShapesTheSameType:n(86787),degToRad:n(98959),flatten:n(28200),fnNumberSort:n(80500),insertSorted:n(72415),radiusToSegments:n(95199),radToDeg:n(720)}},72415:function(t){t.exports=function(t,e,n){for(var r=0,i=t.length;i>r;){var o=Math.floor((r+i)/2);n(e,t[o])>0?r=o+1:i=o}t.splice(r,0,e)}},70173:function(t){t.exports=function(t,e,n){for(t=t.slice();t.length0?t*r/e:0,o=n>0?r/n:0;return Math.ceil(Math.max(i,o,4))}},81709:function(t){t.exports=function(t){if(0===t.length)return[[0,0,0],[0,0,0]];for(var e=Array.isArray(t)&&Array.isArray(t[0]),n=e?t[0].length:3,r=new Array(n),i=new Array(n),o=0;oi[o]?a:i[o],r[o]=ai[s]?u:i[s],r[s]=u.001},camera:{position:E,view:C}}},rotate:function(t,e){var n=t.controls,r=t.camera,i=t.speed,o=void 0===i?1:i,a=n.thetaDelta,s=n.phiDelta;return n.userControl.rotate&&(a+=e[0]*o,s+=e[1]*o),{controls:{thetaDelta:a,phiDelta:s},camera:r}},zoom:function(t){var e=t.controls,i=t.camera,o=t.speed,a=void 0===o?1:o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,u=e.scale;if(e.userControl.zoom&&i&&void 0!==s&&0!==s&&!isNaN(s)){var c=0===Math.sign(s)?1:Math.sign(s),l=(s=s/s*c*a)+e.scale,f=r.distance(i.position,i.target)*l;if(f>e.limits.minDistance&&f1?e-1:0),i=1;i0)for(var m=p.length,y=0;y65535);h++)f++;for(var d=[],p=[],v=[],g=[],m=n[3]<1,y=c;yt.limits.lineWidthDims[1]&&(u=t.limits.lineWidthDims[1]);var l=[0,0,0,i,0,0],f={frag:"precision mediump float;\n uniform vec4 color;\n void main() {\n gl_FragColor = color;\n }",vert:"\n precision mediump float;\n attribute vec3 position;\n uniform mat4 model, view, projection;\n void main() {\n gl_Position = projection * view * model * vec4(position, 1);\n }",uniforms:{model:function(t,e){return e&&e.model?e.model:r.identity([])},color:function(t,e){return e.color},angle:function(t,e){return e.angle}},attributes:{position:l},count:l.length/3,primitive:"line loop",lineWidth:u,depth:{enable:!c}},h=r.identity([]),d=r.rotateZ(r.create(),r.identity([]),Math.PI/2),p=r.rotateY(r.create(),r.identity([]),-Math.PI/2),v=t(f);return function(t){var e={model:r.identity([])};return t=Object.assign({},e,t),v([{color:o,model:r.multiply(r.create(),t.model,h)},{color:a,model:r.multiply(r.create(),t.model,d)},{color:s,model:r.multiply(r.create(),t.model,p)}])}}},95111:function(t,e,n){var r=n(4496);t.exports=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],i={visuals:{color:[0,0,1,1],fadeOut:!1},ticks:1,size:[16,16],centered:!1,lineWidth:2},o=Object.assign({},i.visuals,e.visuals||{}),a=o.fadeOut,s=o.color,u=Object.assign({},i,e),c=u.size,l=u.ticks,f=u.centered,h=u.lineWidth,d=c[0],p=c[1];if(f){for(var v=.5*d,g=.5*p,m=v%l,y=-v+m,b=-y,w=g%l,x=-g+w,_=-x,S=0,A=y,E=0;A<=b;A+=l,E+=1)E%S!==0&&(n.push(x,A,0),n.push(_,A,0),n.push(x,A,0));for(var C=x,k=0;C<=_;C+=l,k+=1)k%S!==0&&(n.push(C,y,0),n.push(C,b,0),n.push(C,y,0))}else{for(var T=.5*-d;T<=.5*d;T+=l)n.push(.5*-p,T,0),n.push(.5*p,T,0),n.push(.5*-p,T,0);for(var P=.5*-p;P<=.5*p;P+=l)n.push(P,.5*-d,0),n.push(P,.5*d,0),n.push(P,.5*-d,0)}return t({vert:"precision mediump float;\n\n uniform float camNear, camFar;\n uniform mat4 model, view, projection;\n\n attribute vec3 position;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n void main() {\n fragPosition = position;\n worldPosition = model * vec4(position, 1);\n vec4 glPosition = projection * view * worldPosition;\n gl_Position = glPosition;\n }",frag:"precision mediump float;\n uniform vec4 color;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n uniform vec4 fogColor;\n uniform bool fadeOut;\n void main() {\n float dist = .5;\n if(fadeOut){\n dist = distance( vec2(0.,0.), vec2(worldPosition.x, worldPosition.y));\n dist *= 0.0025;\n dist = sqrt(dist);\n }\n\n gl_FragColor = mix(color, fogColor, dist);\n }\n ",attributes:{position:t.buffer(n)},count:n.length/3,uniforms:{model:function(t,e){return e&&e.model?e.model:r.identity([])},color:function(t,e){return e&&e.color?e.color:s},fogColor:function(t,e){return e&&e.color?[e.color[0],e.color[1],e.color[2],0]:[s[0],s[1],s[2],0]},fadeOut:function(t,e){return e&&void 0!==e.fadeOut?e.fadeOut:a}},lineWidth:function(e,n){return Math.min(n&&n.lineWidth?n.lineWidth:h,t.limits.lineWidthDims[1])},primitive:"lines",cull:{enable:!0,face:"front"},polygonOffset:{enable:!0,offset:{factor:1,units:10*Math.random()}},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}})}},9944:function(t,e,n){t.exports=function(t,e){var r=Object.assign({},{size:[50,50],ticks:[10,1]},e),i=r.size,o=r.ticks,a=n(95111)(t,{size:i,ticks:o[0]}),s=n(95111)(t,{size:i,ticks:o[1]});return function(t){a(t),s({color:t.subColor,fadeOut:t.fadeOut})}}},52309:function(t){t.exports={frag:"\nprecision mediump float;\nuniform vec4 ucolor;\n\nvoid main () {\n gl_FragColor = ucolor;\n}\n"}},85375:function(t,e,n){var r=n(4496),i=n(23586).meshColor;t.exports=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o={color:i,geometry:void 0},a=Object.assign({},o,e),s=a.geometry,u=a.color,c=a.transparent;"color"in s&&(u=s.color);var l=!!(s.indices&&s.indices.length>0),f=!!(s.normals&&s.normals.length>0),h=!!(s.colors&&s.colors.length>0),d=h?n(43588).vert:n(55248).vert,p=h?n(43588).frag:n(52309).frag,v={primitive:"lines",vert:d,frag:p,uniforms:{model:function(t,e){return e.model||s.transforms||r.create()},ucolor:function(t,e){return e&&e.color?e.color:u}},attributes:{position:t.buffer({usage:"static",type:"float",data:s.positions})}};return c&&(v.blend={enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}),h&&(v.attributes.color=t.buffer({usage:"static",type:"float",data:s.colors})),l&&(v.elements=t.elements({usage:"static",type:"uint16",data:s.indices})),f&&(v.attributes.normal=t.buffer({usage:"static",type:"float",data:s.normals})),t(v)}},55248:function(t){t.exports={vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\n\nvoid main() {\n\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n",frag:"\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}"}},43588:function(t){t.exports={frag:"\nprecision mediump float;\nvarying vec4 vColor;\n\nvoid main () {\n gl_FragColor = vColor;\n}\n",vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n vColor = color;\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n"}},34386:function(t,e,n){var r=n(4496),i=n(23586).meshColor;t.exports=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{extras:{}},o={useVertexColors:!0,dynamicCulling:!0,geometry:void 0,color:i,visuals:{}},a=Object.assign({},o,e),s=a.geometry,u=a.dynamicCulling,c=a.useVertexColors,l=a.color,f=a.visuals,h=t.buffer([]),d=!!(s.indices&&s.indices.length>0),p=!!(s.normals&&s.normals.length>0),v="transparent"in f&&f.transparent,g=!!(c&&s.colors&&s.colors.length>0),m=s.transforms||r.create(),y=r.determinant(m)<0,b=u&&y?"front":"back",w=g?n(54251).vert:n(25750).vert,x=g?n(54251).frag:n(25750).frag,_=r.invert(r.create(),m),S={primitive:"triangles",vert:w,frag:x,uniforms:{model:function(t,e){return m},ucolor:function(t,e){return e&&e.color?e.color:l},vColorToggler:function(t,e){return e&&e.useVertexColors&&!0===e.useVertexColors?1:0},unormal:function(t,e){var n=r.invert(r.create(),e.camera.view);return r.multiply(n,_,n),r.transpose(n,n),n}},attributes:{position:t.buffer({usage:"static",type:"float",data:s.positions}),ao:h},cull:{enable:!0,face:b}};return v&&(S.blend={enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}),s.cells?S.elements=s.cells:d?S.elements=t.elements({usage:"static",type:"uint16",data:s.indices}):s.triangles?S.elements=s.triangles:S.count=s.positions.length/3,p&&(S.attributes.normal=t.buffer({usage:"static",type:"float",data:s.normals})),g&&(S.attributes.color=t.buffer({usage:"static",type:"float",data:s.colors})),t(S=Object.assign({},S,e.extras))}},25750:function(t){t.exports={vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\nvoid main() {\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n",frag:"\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}"}},54251:function(t){t.exports={frag:"\nprecision mediump float;\nvarying vec3 surfaceNormal, surfacePosition;\n\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform float specularLightAmount;\n\nuniform vec3 lightDirection;\nuniform vec4 lightColor;\nuniform vec3 opacity;\nuniform float uMaterialShininess;\n\nvarying vec4 vColor;\nuniform vec4 ucolor;\nuniform float vColorToggler;\n\nuniform vec2 printableArea;\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);//vec4(0.15, 0.15, 0.15, 0.3);\nvarying vec4 _worldSpacePosition;\nvarying float ambientAo;\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n vec4 endColor = vColor * vColorToggler + ucolor * (1.0 - vColorToggler);\n\n vec3 ambient = ambientLightAmount * endColor.rgb ; //ambientAo * \n\n float diffuseWeight = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(diffuseWeight , 0.0, 1.0 );\n\n //specular\n \n vec4 specularColor = vec4(lightColor);\n vec3 eyeDirection = normalize(surfacePosition.xyz);\n vec3 reflectionDirection = reflect(-lightDirection, -surfaceNormal);\n float specularLightWeight = pow(max(dot(reflectionDirection, eyeDirection), 0.0), uMaterialShininess);\n vec3 specular = specularColor.rgb * specularLightWeight * specularLightAmount;\n\n gl_FragColor = vec4((ambient + diffuse + specular), endColor.a);\n}\n",vert:"\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection, unormal;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nattribute float ao;\nvarying float ambientAo;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n surfacePosition = (unormal * vec4(position, 1.0)).xyz;\n surfaceNormal = normalize((unormal * vec4(normal, 1.0)).xyz); //vec4 transformedNormal = uNormalMatrix * vec4(aVertexNormal, 1.0);\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n //gl_Position = projection * view * worldSpacePosition;\n\n vColor = color;\n\n //ambientAo = (1. - ao) * (0.5 * max(normal.x, 0.) + 0.5);\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n //gl_Position = zBufferAdjust(glPosition, camNear, camFar);\n}\n"}},40416:function(t,e,n){var r=n(81109).default,i=n(45079),o=n(23586);t.exports=function(t){var e=Object.assign({},{},t.glOptions,{onDone:function(t,e){if(t)throw t}}),a=n(39084)(e),s=new Map;return function(t){var e;a.poll(),(e=t).rendering=Object.assign({},o,e.rendering),i(a)(e,(function(t){a.clear({color:e.rendering.background,depth:1}),e.entities&&e.entities.sort((function(t,e){var n="transparent"in t.visuals&&t.visuals.transparent;return n===("transparent"in e.visuals&&e.visuals.transparent)?0:n?1:-1})).forEach((function(t){var n,i=t.visuals;(!("show"in i)||i.show)&&i.drawCmd&&e.drawCommands[i.drawCmd]&&(i.cacheId?n=s.get(i.cacheId):(i.cacheId=s.size,n=e.drawCommands[i.drawCmd](a,t),s.set(i.cacheId,n)),n(r(r(r({},t),i),{},{camera:e.camera})))}))}))}}},45079:function(t,e,n){var r=n(4496);t.exports=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.fbo,i={cull:{enable:!0},context:{lightDirection:[.2,.2,1]},uniforms:{view:function(t,e){return e.camera.view},eye:function(t,e){return e.camera.position},projection:function(t,e){return e.camera.projection},camNear:function(t,e){return e.camera.near},camFar:function(t,e){return e.camera.far},invertedView:function(t,e){return r.invert([],e.camera.view)},lightPosition:function(t,e){return e&&e.rendering&&e.rendering.lightPosition?e.rendering.lightPosition:[100,200,100]},lightDirection:function(t,e){return e&&e.rendering&&e.rendering.lightDirection?e.rendering.lightDirection:t.lightDirection||[0,0,0]},lightView:function(t){return r.lookAt([],t.lightDirection,[0,0,0],[0,0,1])},lightProjection:r.ortho([],-25,-25,-20,20,-25,25),lightColor:function(t,e){return e&&e.rendering&&e.rendering.lightColor?e.rendering.lightColor:[1,.8,0]},ambientLightAmount:function(t,e){return e&&e.rendering&&e.rendering.ambientLightAmount?e.rendering.ambientLightAmount:.3},diffuseLightAmount:function(t,e){return e&&e.rendering&&e.rendering.diffuseLightAmount?e&&e.rendering&&e.rendering.diffuseLightAmount:.89},specularLightAmount:function(t,e){return e&&e.rendering&&e.rendering.specularLightAmount?e.rendering.specularLightAmount:.16},uMaterialShininess:function(t,e){return e&&e.rendering&&e.rendering.materialShininess?e.rendering.materialShininess:8},materialAmbient:[.5,.8,.3],materialDiffuse:[.5,.8,.3],materialSpecular:[.5,.8,.3]},framebuffer:n};return t(Object.assign({},i,e.extras))}},23586:function(t){t.exports={background:[.95,.95,.95,1],meshColor:[.1,.1,.1,1],lightColor:[.9,.9,1,.1],lightDirection:[1,1,1],lightPosition:[6e3,8700,-800],ambientLightAmount:.3,diffuseLightAmount:.89,specularLightAmount:.02,materialShininess:2}},50006:function(t,e,n){var r=n(68072).geometries,i=function(t,e){var n=[];return t.forEach((function(r,i){n.push(o(r,e)),e.statusCallback&&e.statusCallback({progress:100*i/t.length})})),n.join("\n")},o=function(t,e){var n=[];return r.geom3.toPolygons(t).forEach((function(t,e){n.push(u(t))})),n.join("\n")},a=function(t){return"".concat(t[0]," ").concat(t[1]," ").concat(t[2])},s=function(t){return"vertex ".concat(a(t))},u=function(t){var e=[];if(t.vertices.length>=3)for(var n=s(t.vertices[0]),i=0;i=3?e-2:0,s+=1}))}));for(var u=new Uint8Array(80),c=0;c<80;c++)u[c]=65;var l=new Uint32Array(1);l[0]=a;var f=new ArrayBuffer(50*a),h=new Int8Array(f),d=new ArrayBuffer(50),p=new Int8Array(d),v=new Float32Array(d,0,12),g=new Uint16Array(d,48,1),m=0;return t.forEach((function(t){r.geom3.toPolygons(t).forEach((function(t,n){for(var i=t.vertices,o=i.length,a=r.poly3.plane(t),u=0;u0?u:0)];v[c++]=f[0],v[c++]=f[1],v[c++]=f[2]}g[0]=0,h.set(p,m),m+=50}e.statusCallback&&e.statusCallback({progress:100*n/s})}))})),e.statusCallback&&e.statusCallback({progress:100}),[u.buffer,l.buffer,f]}}},79220:function(t,e,n){var r=n(68072),i=r.geometries,o=r.modifiers,a=n(8302),s=a.flatten,u=a.toArray,c=n(67302).serializeBinary,l=n(50006).serializeText;t.exports={mimeType:"application/sla",serialize:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;rr;){var o=Math.floor((r+i)/2);n(e,t[o])>0?r=o+1:i=o}return t.splice(r,0,e),t}},22338:function(t){t.exports=function(t,e){if(Array.isArray(t)&&!(t.length1?e-1:0),h=1;h=8?[e,n,r,parseInt(t.substring(6,8),16)/255]:[e,n,r]}},90329:function(t,e,n){var r=n(45366),i=n(15050);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var d=e[3];return[u,c,l,d]}return[u,c,l]}},77170:function(t,e,n){var r=n(45366);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var v=e[3];return[s,u,c,v]}return[s,u,c]}},15050:function(t){t.exports=function(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}},68168:function(t,e,n){t.exports={colorize:n(4346),colorNameToRgb:n(94778),cssColors:n(77182),hexToRgb:n(62077),hslToRgb:n(90329),hsvToRgb:n(77170),hueToColorComponent:n(15050),rgbToHex:n(90911),rgbToHsl:n(77838),rgbToHsv:n(33211)}},90911:function(t,e,n){var r=n(45366);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3&&(s+=Number(255*e[3]).toString(16)),s}},77838:function(t,e,n){var r=n(45366);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n.5?h/(2-c-l):h/(c+l),c){case a:i=(s-u)/h+(s3){var d=e[3];return[i,o,f,d]}return[i,o,f]}},33211:function(t,e,n){var r=n(45366);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var d=e[3];return[i,h,l,d]}return[i,h,l]}},75239:function(t){var e=function(t){var e=null;return t.forEach((function(t){var n="";if(Number.isFinite(t))n="float_single";else{if(!Array.isArray(t))throw new Error("Bezier points must all be numbers or arrays of number.");t.forEach((function(t){if(!Number.isFinite(t))throw new Error("Bezier point values must all be numbers.")})),n="float_"+t.length}if(null==e)e=n;else if(e!==n)throw new Error("Bezier points must be either all numbers or all arrays of numbers of the same size.")})),e},n=function(t){for(var e=[],n=0;n<=t;n++)e.push(r(t)/(r(n)*r(t-n)));return e},r=function(t){for(var e=1,n=2;n<=t;n++)e*=n;return e};t.exports=function(t){if(!Array.isArray(t))throw new Error("Bezier points must be a valid array/");if(t.length<2)throw new Error("Bezier points must contain at least 2 values.");var r=e(t);return{points:t,pointType:r,dimensions:"float_single"===r?0:t[0].length,permutations:n(t.length-1),tangentPermutations:n(t.length-2)}}},51032:function(t,e,n){t.exports={create:n(75239),valueAt:n(11247),tangentAt:n(67090)}},67090:function(t){var e=function(t,e,n){for(var r=e.length-1,i=0,o=0;o1)throw new Error("Bezier tangentAt() input must be between 0 and 1");if("float_single"===n.pointType)return e(n,n.points,t);for(var r=[],i=0;i1)throw new Error("Bezier valueAt() input must be between 0 and 1");if("float_single"===n.pointType)return e(n,n.points,t);for(var r=[],i=0;i=0&&(e.color=[t[17],t[18],t[19],t[20]]),e}},17997:function(t,e,n){var r=n(29274),i=n(40821);t.exports=function(t){if(!Array.isArray(t))throw new Error("the given points must be an array");var e=t.length;if(e<3)throw new Error("the given points must define a closed geometry with three or more points");r.equals(t[0],t[e-1])&&--e;for(var n=[],o=t[e-1],a=0;a=180&&(S-=360),(y<0||S>b)&&(y=x,b=S)}var A=m[y];m.splice(y,1),0===m.length&&e.delete(g),c=A}d.length>0&&d.push(d.shift()),s.push(d)}return e.clear(),s}},63518:function(t,e,n){var r=n(62230);t.exports=function(t){var e=r(t).map((function(t){return t[0]}));return e.length>0&&e.push(e.shift()),e}},62230:function(t,e,n){var r=n(68259);t.exports=function(t){return r(t).sides}},38856:function(t,e,n){var r=n(29274),i=n(62230);t.exports=function(t){var e=i(t),n="geom2 ("+e.length+" sides):\n[\n";return e.forEach((function(t){n+=" ["+r.toString(t[0])+", "+r.toString(t[1])+"]\n"})),n+="]\n"}},778:function(t,e,n){var r=n(99907);t.exports=function(t,e){var n=r.multiply(r.create(),t,e.transforms);return Object.assign({},e,{transforms:n})}},79180:function(t,e,n){var r=n(99907),i=n(79127);t.exports=function(t){return r.isIdentity(t.transforms)||(t.polygons=t.polygons.map((function(e){return i.transform(t.transforms,e)})),t.transforms=r.create()),t}},20567:function(t){t.exports=function(t){return Object.assign({},t)}},47068:function(t,e,n){var r=n(99907);t.exports=function(t){return void 0===t&&(t=[]),{polygons:t,transforms:r.create()}}},19778:function(t,e,n){var r=n(61809),i=n(99907),o=n(79127),a=n(47068);t.exports=function(t){if(1!==t[0])throw new Error("invalid compact binary data");var e=a();e.transforms=i.clone(t.slice(1,17));for(var n=t[21],s=22,u=t.length-3*n;u=0&&(e.color=[t[17],t[18],t[19],t[20]]),e}},17e3:function(t,e,n){var r=n(79127),i=n(47068);t.exports=function(t){if(!Array.isArray(t))throw new Error("the given points must be an array");var e=t.map((function(t,e){return r.fromPoints(t)}));return i(e)}},29342:function(t,e,n){t.exports={clone:n(20567),create:n(47068),fromPoints:n(17e3),fromCompactBinary:n(19778),invert:n(94041),isA:n(80049),toPoints:n(52825),toPolygons:n(26064),toString:n(957),toCompactBinary:n(9319),transform:n(7396)}},94041:function(t,e,n){var r=n(79127),i=n(47068),o=n(26064);t.exports=function(t){var e=o(t).map((function(t){return r.invert(t)}));return i(e)}},80049:function(t){t.exports=function(t){return!!(t&&"object"===typeof t&&"polygons"in t&&"transforms"in t&&Array.isArray(t.polygons)&&"length"in t.transforms)}},9319:function(t,e,n){var r=n(79127);t.exports=function(t){var e=t.polygons,n=t.transforms,i=e.length,o=e.reduce((function(t,e){return t+e.vertices.length}),0),a=[-1,-1,-1,-1];t.color&&(a=t.color);var s=new Float32Array(22+i+3*o);s[0]=1,s[1]=n[0],s[2]=n[1],s[3]=n[2],s[4]=n[3],s[5]=n[4],s[6]=n[5],s[7]=n[6],s[8]=n[7],s[9]=n[8],s[10]=n[9],s[11]=n[10],s[12]=n[11],s[13]=n[12],s[14]=n[13],s[15]=n[14],s[16]=n[15],s[17]=a[0],s[18]=a[1],s[19]=a[2],s[20]=a[3],s[21]=o;var u=22,c=u+i;return e.forEach((function(t){var e=r.toPoints(t);s[u]=e.length,u++;for(var n=0;n1){var k=Math.sqrt(C);p*=k,v*=k,p=Math.round(p*h)/h,v=Math.round(v*h)/h}var T=Math.sqrt((p*p*v*v-p*p*E[1]*E[1]-v*v*E[0]*E[0])/(p*p*E[1]*E[1]+v*v*E[0]*E[0]));m===l&&(T=-T);var P=r.fromValues(p*E[1]/v,-v*E[0]/p);r.scale(P,P,T);var M=r.fromValues(w*P[0]-x*P[1],x*P[0]+w*P[1]);M=r.add(M,M,r.scale(r.create(),r.add(r.create(),g,a),.5));var O=r.fromValues((E[0]-P[0])/p,(E[1]-P[1])/v),L=r.fromValues((-E[0]-P[0])/p,(-E[1]-P[1])/v),N=r.angleRadians(O),D=r.angleRadians(L)-N;D%=2*Math.PI,!m&&D>0?D-=2*Math.PI:m&&D<0&&(D+=2*Math.PI);var j=Math.ceil(Math.abs(D)/(2*Math.PI)*f)+1;j<1&&(j=1);for(var I=1;I0&&(p*=v),d.push(p);for(var g=[],m=0;m<=h;++m){var y=d[h]/(d[m]*d[h-m]);g.push(y)}for(var b=r.create(),w=r.create(),x=i.create(),_=function(t){for(var e=1,n=Math.pow(1-t,h),i=1!==t?1/(1-t):1,o=r.create(),a=0;a<=h;++a){a===h&&(n=1);var u=g[a]*e*n,c=r.scale(b,s[a],u);r.add(o,o,c),e*=t,n*=i}return o},S=[],A=[],E=h+1,C=0;CO){var j=A[P-1],I=A[P+1],R=j+1*(I-j)/3,F=j+2*(I-j)/3,B=_(R),z=_(F);S.splice(P,1,B,z),A.splice(P,1,R,F),--P<1&&(P=1)}else++P}S.shift();var V=o(S,e);return V.lastBezierControlPoint=s[s.length-2],V}},37511:function(t,e,n){var r=n(74369),i=n(38689);t.exports=function(t,e){if(e.isClosed)throw new Error("cannot append points to a closed path");var n=i(e);return n=n.concat(t),r({},n)}},65844:function(t,e,n){var r=n(99907),i=n(29274);t.exports=function(t){return r.isIdentity(t.transforms)||(t.points=t.points.map((function(e){return i.transform(i.create(),e,t.transforms)})),t.transforms=r.create()),t}},19793:function(t){t.exports=function(t){return Object.assign({},t)}},93757:function(t,e,n){var r=n(69221).EPS,i=n(29274),o=n(19793);t.exports=function(t){if(t.isClosed)return t;var e=o(t);if(e.isClosed=!0,e.points.length>1)for(var n=e.points,a=n[0],s=n[n.length-1];i.distance(a,s)0&&e.length>0&&o(e[0],l[l.length-1])&&e.shift(),l=l.concat(e)})),r({closed:t},l)}},28833:function(t,e,n){var r=n(99907);t.exports=function(t){return void 0===t&&(t=[]),{points:t,isClosed:!1,transforms:r.create()}}},51556:function(t,e,n){var r=n(38689);t.exports=function(t,e,n){r(n).forEach(e)}},93285:function(t,e,n){var r=n(29274),i=n(38689);t.exports=function(t,e){if(t.isClosed!==e.isClosed)return!1;if(t.points.length!==e.points.length)return!1;var n=i(t),o=i(e),a=n.length,s=0;do{for(var u=!1,c=0;c=0&&(e.color=[t[18],t[19],t[20],t[21]]),e}},74369:function(t,e,n){var r=n(69221).EPS,i=n(29274),o=n(93757),a=n(28833);t.exports=function(t,e){var n=Object.assign({},{closed:!1},t).closed,s=a();if(s.points=e.map((function(t){return i.clone(t)})),s.points.length>1){var u=s.points[0],c=s.points[s.points.length-1];i.distance(u,c)i,u=0,c=0,l=n+1;--l;){var f=a[1]>i;if(s!==f){var h=o[0]>r,d=a[0]>r;(h&&d||a[0]-(a[1]-i)*(o[0]-a[0])/(o[1]-a[1])>=r)&&(u=!u)}s=f,o=a,a=e[++c]}return u};t.exports=function(t,e){if(0===t.length)return 0;var n=e.vertices;return n.length<3?0:(r(e)<0&&(e=i(e)),t.reduce((function(t,e){return t+o(e,n)}),0)===t.length?1:0)}},89426:function(t){t.exports=function(t){return(void 0===t||t.length<3)&&(t=[]),{vertices:t}}},34847:function(t,e,n){var r=n(89426);t.exports=function(t){var e=t.vertices.slice().reverse();return r(e)}},7744:function(t,e,n){t.exports={arePointsInside:n(44448),create:n(89426),flip:n(34847),measureArea:n(96219)}},96219:function(t,e,n){var r=n(82601);t.exports=function(t){return r(t.vertices)}},79249:function(t,e,n){var r=n(47937),i=n(61809);t.exports=function(){var t,e;return 1===arguments.length?(t=r(),e=arguments.length<=0?void 0:arguments[0]):(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),t.vertices=e.vertices.map((function(t){return i.clone(t)})),t}},47937:function(t){t.exports=function(t){return(void 0===t||t.length<3)&&(t=[]),{vertices:t}}},34126:function(t,e,n){var r=n(61809),i=n(47937);t.exports=function(t){var e=t.map((function(t){return r.clone(t)}));return i(e)}},97217:function(t,e,n){var r=n(47937);t.exports=function(t,e){var n=r(t);return n.plane=e,n}},79127:function(t,e,n){t.exports={clone:n(79249),create:n(47937),fromPoints:n(34126),fromPointsAndPlane:n(97217),invert:n(16897),isA:n(58289),isConvex:n(77942),measureArea:n(37170),measureBoundingBox:n(85859),measureBoundingSphere:n(20978),measureSignedVolume:n(12498),plane:n(113),toPoints:n(77587),toString:n(82569),transform:n(41516)}},16897:function(t,e,n){var r=n(47937);t.exports=function(t){var e=t.vertices.slice().reverse();return r(e)}},58289:function(t){t.exports=function(t){return!!(t&&"object"===typeof t&&"vertices"in t&&Array.isArray(t.vertices))}},77942:function(t,e,n){var r=n(319).default,i=n(46397),o=n(61809),a=function(t){var e=t.length;if(e>2)for(var n=i.fromPoints.apply(i,[i.create()].concat(r(t))),o=t[e-2],a=t[e-1],u=0;u=0};t.exports=function(t){return a(t.vertices)}},37170:function(t,e,n){var r=n(113);t.exports=function(t){var e=t.vertices.length;if(e<3)return 0;var n=t.vertices,i=r(t),o=Math.abs(i[0]),a=Math.abs(i[1]),s=Math.abs(i[2]);if(o+a+s===0)return 0;var u=3;o>a&&o>s?u=1:a>s&&(u=2);var c=0,l=0,f=1,h=2;switch(u){case 1:for(f=1;f=h&&f>=d?(l=i(e[1],e[2],n[1],n[2],e[3],n[3]),c=r.fromValues(0,l[0],l[1])):h>=f&&h>=d?(l=i(e[0],e[2],n[0],n[2],e[3],n[3]),c=r.fromValues(l[0],0,l[1])):(l=i(e[0],e[1],n[0],n[1],e[3],n[3]),c=r.fromValues(l[0],l[1],0)),a(t,c,s)}},55557:function(t,e,n){var r=n(61809);t.exports=function(t,e,n){var i=r.normalize(r.create(),n);return r.copy(t[0],e),r.copy(t[1],i),t}},36008:function(t,e,n){var r=n(61809),i=n(55557);t.exports=function(t,e,n){var o=r.subtract(r.create(),n,e);return i(t,e,o)}},26417:function(t,e,n){t.exports={clone:n(15819),closestPoint:n(55767),copy:n(11653),create:n(49166),direction:n(19598),distanceToPoint:n(11),equals:n(22440),fromPlanes:n(52214),fromPointAndDirection:n(55557),fromPoints:n(36008),intersectPointOfLineAndPlane:n(44267),origin:n(25022),reverse:n(64717),toString:n(68556),transform:n(78915)}},44267:function(t,e,n){var r=n(61809);t.exports=function(t,e){var n=e,i=e[3],o=t[0],a=t[1],s=(i-r.dot(n,o))/r.dot(n,a);return r.add(r.create(),o,r.scale(r.create(),a,s))}},25022:function(t){t.exports=function(t){return t[0]}},64717:function(t,e,n){var r=n(61809),i=n(55557);t.exports=function(t,e){var n=r.clone(e[0]),o=r.negate(r.create(),e[1]);return i(t,n,o)}},68556:function(t){t.exports=function(t){var e=t[0],n=t[1];return"line3: point: (".concat(e[0].toFixed(7),", ").concat(e[1].toFixed(7),", ").concat(e[2].toFixed(7),") direction: (").concat(n[0].toFixed(7),", ").concat(n[1].toFixed(7),", ").concat(n[2].toFixed(7),")")}},78915:function(t,e,n){var r=n(61809),i=n(55557);t.exports=function(t,e,n){var o=e[0],a=e[1],s=r.add(r.create(),o,a),u=r.transform(r.create(),o,n),c=r.transform(s,s,n),l=r.subtract(c,c,u);return i(t,u,l)}},59085:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}},25346:function(t,e,n){var r=n(21387);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},15620:function(t){t.exports={EPSILON:1e-6}},68643:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},21387:function(t){t.exports=function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}},72015:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}},30184:function(t,e,n){var r=n(63038).default,i=n(87777),o=n(15620).EPSILON;t.exports=function(t,e,n){var a=r(n,3),s=a[0],u=a[1],c=a[2],l=Math.sqrt(s*s+u*u+c*c);if(Math.abs(l)1?e-1:0),i=1;i=o?1:o<1e-10?.5:i/o,t[0]+r*(e[0]-t[0])}},71885:function(t){t.exports=function(t,e,n,r){if(!(t[0]===e[0]&&t[1]===e[1]||n[0]===r[0]&&n[1]===r[1])){var i=(r[1]-n[1])*(e[0]-t[0])-(r[0]-n[0])*(e[1]-t[1]);if(!(Math.abs(i)1||a<0||a>1))return[t[0]+o*(e[0]-t[0]),t[1]+o*(e[1]-t[1])]}}}},7700:function(t){t.exports=function(t,e,n,r,i,o){var a=1/(t*r-e*n),s=i*r-e*o,u=-i*n+t*o;return[s*=a,u*=a]}},75252:function(t){t.exports=function(t,e){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t}},4855:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}},73658:function(t,e,n){t.exports=n(85463)},15220:function(t,e,n){var r=n(85463);t.exports=function(t){return 57.29577951308232*r(t)}},85463:function(t){t.exports=function(t){return Math.atan2(t[1],t[0])}},5523:function(t,e,n){var r=n(63086);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e}},23041:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t}},63086:function(t){t.exports=function(){return[0,0]}},81267:function(t){t.exports=function(t,e,n){return t[0]=0,t[1]=0,t[2]=e[0]*n[1]-e[1]*n[0],t}},95331:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1];return Math.hypot(n,r)}},35472:function(t){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t}},73034:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]}},61659:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]}},65267:function(t,e,n){var r=n(43713);t.exports=function(t,e){return r(t,Math.PI*e/180)}},43713:function(t){t.exports=function(t,e){return t[0]=Math.cos(e),t[1]=Math.sin(e),t}},2949:function(t){t.exports=function(t,e){return t[0]=e,t[1]=e,t}},40858:function(t,e,n){var r=n(63086);t.exports=function(t,e){var n=r();return n[0]=t,n[1]=e,n}},29274:function(t,e,n){t.exports={abs:n(75252),add:n(4855),angle:n(73658),angleDegrees:n(15220),angleRadians:n(85463),clone:n(5523),copy:n(23041),create:n(63086),cross:n(81267),distance:n(95331),divide:n(35472),dot:n(73034),equals:n(61659),fromAngleDegrees:n(65267),fromAngleRadians:n(43713),fromScalar:n(2949),fromValues:n(40858),length:n(26019),lerp:n(76701),max:n(9593),min:n(86403),multiply:n(86688),negate:n(90579),normal:n(29957),normalize:n(71819),rotate:n(69433),scale:n(7845),snap:n(25221),squaredDistance:n(57508),squaredLength:n(81783),subtract:n(42629),toString:n(27511),transform:n(82405)}},26019:function(t){t.exports=function(t){return Math.hypot(t[0],t[1])}},76701:function(t){t.exports=function(t,e,n,r){var i=e[0],o=e[1];return t[0]=i+r*(n[0]-i),t[1]=o+r*(n[1]-o),t}},9593:function(t){t.exports=function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}},86403:function(t){t.exports=function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}},86688:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t}},90579:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t}},29957:function(t,e,n){var r=n(63086),i=n(69433);t.exports=function(t,e){return i(t,e,r(),Math.PI/2)}},71819:function(t){t.exports=function(t,e){var n=e[0],r=e[1],i=n*n+r*r;return i>0&&(i=1/Math.sqrt(i)),t[0]=n*i,t[1]=r*i,t}},69433:function(t){t.exports=function(t,e,n,r){var i=e[0]-n[0],o=e[1]-n[1],a=Math.cos(r),s=Math.sin(r);return t[0]=i*a-o*s+n[0],t[1]=i*s+o*a+n[1],t}},7845:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}},25221:function(t){t.exports=function(t,e,n){return t[0]=Math.round(e[0]/n)*n+0,t[1]=Math.round(e[1]/n)*n+0,t}},57508:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r}},81783:function(t){t.exports=function(t){var e=t[0],n=t[1];return e*e+n*n}},42629:function(t){t.exports=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}},27511:function(t){t.exports=function(t){return"[".concat(t[0].toFixed(7),", ").concat(t[1].toFixed(7),"]")}},82405:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[4]*i+n[12],t[1]=n[1]*r+n[5]*i+n[13],t}},12782:function(t){t.exports=function(t,e){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t}},40025:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}},92795:function(t,e,n){var r=n(71151);t.exports=function(t,e){var n=t[0],i=t[1],o=t[2],a=e[0],s=e[1],u=e[2],c=Math.sqrt(n*n+i*i+o*o)*Math.sqrt(a*a+s*s+u*u),l=c&&r(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}},93248:function(t,e,n){var r=n(29997);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},38115:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},29997:function(t){t.exports=function(){return[0,0,0]}},73327:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2];return t[0]=i*u-o*s,t[1]=o*a-r*u,t[2]=r*s-i*a,t}},89252:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.hypot(n,r,i)}},26509:function(t){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}},71151:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},94785:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},5200:function(t){t.exports=function(t,e){return t[0]=e,t[1]=e,t[2]=e,t}},45913:function(t,e,n){var r=n(29997);t.exports=function(t,e,n){var i=r();return i[0]=t,i[1]=e,i[2]=n,i}},67411:function(t){t.exports=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t[0]=e[0],t[1]=e[1],t[2]=n,t}},61809:function(t,e,n){t.exports={abs:n(12782),add:n(40025),angle:n(92795),clone:n(93248),copy:n(38115),create:n(29997),cross:n(73327),distance:n(89252),divide:n(26509),dot:n(71151),equals:n(94785),fromScalar:n(5200),fromValues:n(45913),fromVec2:n(67411),length:n(5331),lerp:n(7922),max:n(27479),min:n(21098),multiply:n(7580),negate:n(79302),normalize:n(74034),orthogonal:n(76225),rotateX:n(46329),rotateY:n(76363),rotateZ:n(42432),scale:n(92247),snap:n(80277),squaredDistance:n(99101),squaredLength:n(78576),subtract:n(75508),toString:n(88465),transform:n(94047)}},5331:function(t){t.exports=function(t){var e=t[0],n=t[1],r=t[2];return Math.hypot(e,n,r)}},7922:function(t){t.exports=function(t,e,n,r){return t[0]=e[0]+r*(n[0]-e[0]),t[1]=e[1]+r*(n[1]-e[1]),t[2]=e[2]+r*(n[2]-e[2]),t}},27479:function(t){t.exports=function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}},21098:function(t){t.exports=function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}},7580:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}},79302:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}},74034:function(t){t.exports=function(t,e){var n=e[0],r=e[1],i=e[2],o=n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=n*o,t[1]=r*o,t[2]=i*o,t}},76225:function(t,e,n){var r=n(12782),i=n(29997),o=n(73327);t.exports=function(t,e){var n=r(i(),e),a=0+(n[0]0){var i=c.toPoints(n[0]);o.copy(r,i[0])}var a=o.clone(r);return n.forEach((function(t){c.toPoints(t).forEach((function(t){o.min(r,r,t),o.max(a,a,t)}))})),r=[r[0],r[1],r[2]],a=[a[0],a[1],a[2]],e=[r,a],l.set(t,e),e};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0){var s=0,c=o.create();a.forEach((function(t){o.add(n,n,o.fromVec2(c,t,0)),s++})),o.scale(n,n,1/s),a.forEach((function(t){r=Math.max(r,i.squaredDistance(n,t))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e},h=function(t){var e=l.get(t);if(void 0!==e)return e;var n=o.create(),r=0,s=a.toSides(t);if(s.length>0){var u=0,c=o.create();s.forEach((function(t){o.add(n,n,o.fromVec2(c,t[0],0)),u++})),o.scale(n,n,1/u),s.forEach((function(t){r=Math.max(r,i.squaredDistance(n,t[0]))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e},d=function(t){var e=l.get(t);if(void 0!==e)return e;var n=o.create(),r=0,i=s.toPolygons(t);if(i.length>0){var a=0;i.forEach((function(t){c.toPoints(t).forEach((function(t){o.add(n,n,t),a++}))})),o.scale(n,n,1/a),i.forEach((function(t){c.toPoints(t).forEach((function(t){r=Math.max(r,o.squaredDistance(n,t))}))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0){for(var c=0;c0&&(n.push(e),!0)}));if(2!==i.length)throw new Error("Assertion failed: fromFakePolygon: not enough points found");var o=i.map((function(e){var n=Math.round(e[0]/t)*t+0,i=Math.round(e[1]/t)*t+0;return r.fromValues(n,i)}));if(r.equals(o[0],o[1]))return null;var a=n[1]-n[0];if(1!==a&&3!==a)throw new Error("Assertion failed: fromFakePolygon: unknown index ordering");return 1===a&&o.reverse(),o}(t,e)})).filter((function(t){return null!==t}));return i.create(n)}},35251:function(t,e,n){t.exports={intersect:n(88409),scission:n(82665),subtract:n(4082),union:n(88177)}},88409:function(t,e,n){var r=n(45366),i=n(18417),o=n(47963),a=n(29342),s=n(87399),u=n(43337);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;nr)&&(!(o[0]-c[0]>r)&&(!(u[1]-a[1]>r)&&(!(o[1]-c[1]>r)&&(!(u[2]-a[2]>r)&&!(o[2]-c[2]>r)))))}},53288:function(t,e,n){var r=n(69221).EPS,i=n(62513),o=n(29274),a=n(52523),s=n(63256),u=n(72470),c=u.insertSorted,l=u.fnNumberSort,f=n(79127);t.exports=function(t){if(t.length<2)return t;for(var e=[],n=t.length,u=f.plane(t[0]),h=new a(u),d=[],p=[],v={},g={},m={},y=1/r*10,b=0;b0){for(var A=void 0,E=void 0,C=0;C<_;C++){var k=h.to2D(w.vertices[C]),T=Math.floor(k[1]*y),P=void 0;T in m?P=m[T]:T+1 in m?P=m[T+1]:T-1 in m?P=m[T-1]:(P=k[1],m[T]=k[1]),k=o.fromValues(k[0],P),x.push(k);var M=k[1];(0===C||ME)&&(E=M),M in g||(g[M]={}),g[M][b]=!0}A>=E?(x=[],_=0,S=-1):(A in v||(v[A]=[]),v[A].push(b))}x.reverse(),S=_-S-1,d.push(x),p.push(S)}var O=[];for(var L in g)O.push(L);O.sort(l);for(var N=[],D=[],j=0;j=W&&(H=0),U[H][1]!==F)break;Y=H}var G=X-1;if(G<0&&(G=W-1),U[G][1]===F&&(X=G),Y!==V.leftvertexindex&&Y===X)N.splice(z,1),--z;else{V.leftvertexindex=Y,V.rightvertexindex=X,V.topleft=U[Y],V.topright=U[X];var Z=Y+1;Z>=W&&(Z=0),V.bottomleft=U[Z];var $=X-1;$<0&&($=W-1),V.bottomright=U[$]}}}var K=void 0;for(var J in j>=O.length-1?(N=[],K=null):function(){K=Number(O[j+1]);var t=.5*(F+K),e=v[R];for(var n in e){for(var r=e[n],i=d[r],o=i.length,a=p[r],u=a;;){var l=u+1;if(l>=o&&(l=0),i[l][1]!==F)break;if(l===a)break;u=l}for(var f=a;;){var h=f-1;if(h<0&&(h=o-1),i[h][1]!==F)break;if(h===u)break;f=h}var g=u+1;g>=o&&(g=0);var m=f-1;m<0&&(m=o-1);var y={polygonindex:r,leftvertexindex:u,rightvertexindex:f,topleft:i[u],topright:i[f],bottomleft:i[g],bottomright:i[m]};c(N,y,(function(e,n){var r=s(e.topleft,e.bottomleft,t),i=s(n.topleft,n.bottomleft,t);return r>i?1:r0){var at=I[I.length-1],st=o.distance(ot.topleft,at.topright),ut=o.distance(ot.bottomleft,at.bottomright);st0){for(var ct={},lt={},ft=0;ft=0)&&(_t||wt>=0)&&(ht.outpolygon=pt.outpolygon,ht.leftlinecontinues=xt,ht.rightlinecontinues=_t,ct[dt]=!0);break}}for(var St=0;Str&&At.outpolygon.leftpoints.push(At.bottomleft),At.outpolygon.leftpoints.reverse();var Et=At.outpolygon.rightpoints.concat(At.outpolygon.leftpoints).map((function(t){return h.to3D(t)})),Ct=f.fromPointsAndPlane(Et,u);Ct.vertices.length&&e.push(Ct)}}for(var kt=0;ktr&&Tt.outpolygon.rightpoints.push(Tt.topright))}D=I}return e}},92158:function(t,e,n){var r=n(29342),i=n(79127),o=n(53288),a=1e-13,s=function(t,e){return Math.abs(t[3]-e[3])<15e-8&&(n=t,r=e,Math.abs(n[0]-r[0])<=a&&Math.abs(n[1]-r[1])<=a&&Math.abs(n[2]-r[2])<=a);var n,r};t.exports=function(t){if(t.isRetesselated)return t;var e=r.toPolygons(t),n=[];e.forEach((function(t){var e=n.find((function(e){return s(e[0],i.plane(t))}));e?e[1].push(t):n.push([i.plane(t),[t]])}));var a=[];n.forEach((function(t){var e=t[1],n=o(e);a=a.concat(n)}));var u=r.create(a);return u.isRetesselated=!0,u}},82665:function(t,e,n){var r=n(45366),i=n(29342),o=n(76564);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&function(){var t=new Array(a);t[h]=!0;do{l=0,t.forEach((function(e,n){var r=c[n];if(r.e>0){r.e=-1;for(var i=0;i0);d.indexes=t}()}for(var p=[],v=0;v0&&i.push({node:n.front,polygontreenodes:a});var h=o.length;if(n.back&&h>0)i.push({node:n.back,polygontreenodes:o});else for(var d=0;d0&&t.rootnode.clipPolygons(n.polygontreenodes,e),n.front&&r.push(n.front),n.back&&r.push(n.back),n=r.pop()}while(void 0!==n)}},{key:"addPolygonTreeNodes",value:function(e){var n={node:this,polygontreenodes:e},r=[];do{var i=n.node,o=n.polygontreenodes;if(0!==o.length){if(!i.plane){var s=o[Math.floor(o.length/2)].getPolygon();i.plane=a.plane(s)}for(var u=[],c=[],l=o.length,f=0;f0)i.front||(i.front=new t(i)),l===u.length&&0===c.length?i.front.polygontreenodes=u:r.push({node:i.front,polygontreenodes:u});if(c.length>0)i.back||(i.back=new t(i)),l===c.length&&0===u.length?i.back.polygontreenodes=c:r.push({node:i.back,polygontreenodes:c});n=r.pop()}else n=r.pop()}while(void 0!==n)}},{key:"getParentPlaneNormals",value:function(t,e){e>0&&this.parent&&(t.push(this.parent.plane.normal),this.parent.getParentPlaneNormals(t,e-1))}}]),t}();t.exports=s},50413:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(69221).EPS,a=n(61809),s=n(79127),u=n(97463),c=function(){"use strict";function t(){r(this,t),this.parent=null,this.children=[],this.polygon=null,this.removed=!1}return i(t,[{key:"addPolygons",value:function(t){if(!this.isRootNode())throw new Error("Assertion failed");var e=this;t.forEach((function(t){e.addChild(t)}))}},{key:"remove",value:function(){if(!this.removed){this.removed=!0;var t=this.parent.children,e=t.indexOf(this);if(e<0)throw new Error("Assertion failed");t.splice(e,1),this.parent.recursivelyInvalidatePolygon()}}},{key:"isRemoved",value:function(){return this.removed}},{key:"isRootNode",value:function(){return!this.parent}},{key:"invert",value:function(){if(!this.isRootNode())throw new Error("Assertion failed");this.invertSub()}},{key:"getPolygon",value:function(){if(!this.polygon)throw new Error("Assertion failed");return this.polygon}},{key:"getPolygons",value:function(t){var e,n,r,i,o=[this],a=[o];for(e=0;e0&&a.push(i.children)}},{key:"splitByPlane",value:function(t,e,n,r,i){if(this.children.length){var o,a,s,u,c,l=[this.children];for(o=0;o0?l.push(u.children):u._splitByPlane(t,e,n,r,i)}else this._splitByPlane(t,e,n,r,i)}},{key:"_splitByPlane",value:function(t,e,n,r,i){var c=this.polygon;if(c){var l=s.measureBoundingSphere(c),f=l[1]+o,h=l[0],d=a.dot(t,h)-t[3];if(d>f)r.push(this);else if(d<-f)i.push(this);else{var p=u(t,c);switch(p.type){case 0:e.push(this);break;case 1:n.push(this);break;case 2:r.push(this);break;case 3:i.push(this);break;case 4:if(p.front){var v=this.addChild(p.front);r.push(v)}if(p.back){var g=this.addChild(p.back);i.push(g)}}}}}},{key:"addChild",value:function(e){var n=new t;return n.parent=this,n.polygon=e,this.children.push(n),n}},{key:"invertSub",value:function(){var t,e,n,r,i=[this],o=[i];for(t=0;t0&&o.push(r.children)}},{key:"recursivelyInvalidatePolygon",value:function(){for(var t=this;t.polygon;)t.polygon=null,t.parent&&(t=t.parent)}},{key:"clear",value:function(){for(var t=[this],e=[t],n=0;n0&&e.push(o.children),o.children=[]}}},{key:"toString",value:function(){var t,e,n,r,i="",o=[this],a=[o];for(t=0;t0&&a.push(r.children)}return i}}]),t}();t.exports=c},33228:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(23815),a=n(50413),s=function(){"use strict";function t(e){r(this,t),this.polygonTree=new a,this.rootnode=new o(null),e&&this.addPolygons(e)}return i(t,[{key:"invert",value:function(){this.polygonTree.invert(),this.rootnode.invert()}},{key:"clipTo",value:function(t,e){e=!!e,this.rootnode.clipTo(t,e)}},{key:"allPolygons",value:function(){var t=[];return this.polygonTree.getPolygons(t),t}},{key:"addPolygons",value:function(t){for(var e=new Array(t.length),n=0;n1&&(o=1),o<0&&(o=0),r.scale(i,i,o),r.add(i,e,i),i}},97463:function(t,e,n){var r=n(69221).EPS,i=n(46397),o=n(61809),a=n(79127),s=n(83994);t.exports=function(t,e){var n={type:null,front:null,back:null},u=e.vertices,c=u.length,l=a.plane(e);if(i.equals(l,t))n.type=0;else{for(var f=!1,h=!1,d=[],p=-r,v=0;vr&&(f=!0),g=c&&(S=0);var A=d[S];if(w===A)w?b.push(_):y.push(_);else{var E=_,C=u[S],k=s(t,E,C);w?(b.push(_),b.push(k),y.push(k)):(y.push(_),y.push(k),b.push(k))}w=A}var T=r*r;if(b.length>=3)for(var P=b[b.length-1],M=0;M=3)for(var L=y[y.length-1],N=0;N=3&&(n.front=a.fromPointsAndPlane(y,l)),b.length>=3&&(n.back=a.fromPointsAndPlane(b,l))}else n.type=3;else n.type=2;else{var j=o.dot(t,l);n.type=j>=0?0:1}}return n}},88177:function(t,e,n){var r=n(45366),i=n(18417),o=n(47963),a=n(29342),s=n(3710),u=n(81334);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),l=1;l0)for(var d=Math.PI/l,p=s[s.length-1],v=o.angle(o.subtract(o.create(),u[u.length-1],p)),g=s[0],m=o.angle(o.subtract(o.create(),c[0],g)),y=1;y=0&&o.distance(F,T)=0){O.push(F),L.push(B);var V=[P,B,F,T],q=u.fromPoints(V);N.push(q)}T=F,P=B}}L.reverse(),N.push(u.fromPoints(O)),N.push(u.fromPoints(L));var U=s.create(N);y=f(y,U)})),b.forEach((function(t){for(var e=t[0],n=t[1],r=n[0],i=null,a=0,s=1;s.05&&h>a&&(a=h,i=u)}i||(i=o.orthogonal(x,r));var d=o.cross(x,r,i);o.normalize(d,d);var p=o.cross(_,d,r),v=c({center:[e[0],e[1],e[2]],radius:g,segments:m,axes:[r,d,p]});y=f(y,v)})),l(y)}},63071:function(t,e,n){var r=n(99907),i=n(61809),o=n(29342),a=n(79127);t.exports=function(t,e){i.dot(a.plane(e),t)>0&&(e=a.invert(e));for(var n=[e],s=a.transform(r.fromTranslation(r.create(),t),e),u=e.vertices.length,c=0;c1?e-1:0),u=1;u0&&u>=0||h<0&&u<0;u=Math.abs(u);for(var p=null,v=[],g=[],m=a.create(),y=e.length,b=0;b0&&(e-=Math.PI)>0&&(e-=Math.PI),0!==e){for(var n=e/(D=Math.floor(f*(Math.abs(e)/(2*Math.PI)))),r=a.angle(a.subtract(j,t.s0[1],t.c)),i=[],o=1;o0){var l=t.s0[1],h=v.findIndex((function(t){return a.equals(l,t)}));h=(h+1)%v.length,v.splice.apply(v,[h,0].concat(i))}}else{var p=t.s1[0],g=v.findIndex((function(t){return a.equals(p,t)}));v.splice(g,1)}}))}return v}},2517:function(t,e,n){var r=n(47963),i=n(7744),o=n(77694);t.exports=function(t,e){var n=Object.assign({},{delta:1,corners:"edge",segments:0},t),a=n.delta,s=n.corners,u=n.segments;if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');var c=r.toOutlines(e),l=c.map((function(e){var n=c.reduce((function(t,n){return t+i.arePointsInside(e,i.create(n))}),0);return o(t={delta:n%2===0?a:-a,corners:s,closed:!0,segments:u},e)})).reduce((function(t,e){return t.concat(r.toSides(r.fromPoints(e)))}),[]);return r.create(l)}},42359:function(t,e,n){var r=n(27657),i=n(77694);t.exports=function(t,e){var n={delta:1,corners:"edge",closed:e.isClosed,segments:16},o=Object.assign({},n,t),a=o.delta,s=o.corners,u=o.closed,c=o.segments;if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');var l=i(t={delta:a,corners:s,closed:u,segments:c},r.toPoints(e));return r.fromPoints({closed:u},l)}},64349:function(t,e,n){var r=n(99907),i=n(47963),o=n(29342),a=n(79127),s=n(40262),u=n(55886),c=function(t,e,n){var o=null;return i.isA(n)&&(o=s.fromSides(i.toSides(n))),a.isA(n)&&(o=s.fromPoints(a.toPoints(n))),0===t||1===t?s.transform(r.fromTranslation(r.create(),[0,0,t]),o):null};t.exports=function(t,e){var n={numberOfSlices:2,capStart:!0,capEnd:!0,close:!1,callback:c},r=Object.assign({},n,t),i=r.numberOfSlices,a=r.capStart,l=r.capEnd,f=r.close,h=r.callback;if(i<2)throw new Error("numberOfSlices must be 2 or more");for(var d=i-1,p=null,v=null,g=null,m=[],y=0;y1?e-1:0),a=1;a1?e-1:0),u=1;u2*Math.PI?l%(2*Math.PI):l,f=Math.abs(f)>2*Math.PI?f%(2*Math.PI):f;var d=l+f;if((d=Math.abs(d)>2*Math.PI?d%(2*Math.PI):d)c*g&&c++}var m=o.toSides(e);if(0===m.length)throw new Error("the given geometry cannot be empty");var y=m.filter((function(t){return t[0][0]<0})),b=m.filter((function(t){return t[0][0]>=0}));y.length>0&&b.length>0&&"cap"===h&&(y.length>b.length?(m=m.map((function(t){var e=t[0],n=t[1];return[e=[Math.min(e[0],0),e[1]],n=[Math.min(n[0],0),n[1]]]})),e=o.reverse(o.create(m)),e=i(e)):b.length>=y.length&&(m=m.map((function(t){var e=t[0],n=t[1];return[e=[Math.max(e[0],0),e[1]],n=[Math.max(n[0],0),n[1]]]})),e=o.create(m)));var w=v/c,x=Math.abs(v)<2*Math.PI,_=a.fromSides(o.toSides(e));a.reverse(_,_);var S=r.create();return s(t={numberOfSlices:c+1,capStart:x,capEnd:x,close:!x,callback:function(t,e,n){var i=w*e+l;return r.multiply(S,r.fromZRotation(S,i),r.fromXRotation(r.create(),Math.PI/2)),a.transform(S,n)}},_)}},55886:function(t,e,n){var r=n(69221).EPS,i=n(61809),o=n(79127),a=n(40262),s=function t(e,n){return e===n?e:ec&&h.push(r);var a=o.fromPoints([t[0],n[1],n[0]]),s=o.measureArea(a);Number.isFinite(s)&&s>c&&h.push(a)})),h}},10933:function(t,e,n){t.exports={extrudeFromSlices:n(64349),extrudeLinear:n(56077),extrudeRectangular:n(92794),extrudeRotate:n(3236),project:n(54031),slice:n(40262)}},54031:function(t,e,n){var r=n(45366),i=n(56962),o=n(46397),a=n(99907),s=n(47963),u=n(29342),c=n(79127),l=n(73653),f=n(3710),h=n(81334),d=function(t,e){var n=o.fromNormalAndPoint(o.create(),t.axis,t.origin);if(Number.isNaN(n[0])||Number.isNaN(n[1])||Number.isNaN(n[2])||Number.isNaN(n[3]))throw new Error("project: invalid axis or origin");var r=l(e),d=r*r*Math.sqrt(3)/4;if(0===r)return s.create();for(var p=u.toPolygons(e),v=[],g=0;g1?e-1:0),i=1;ia&&(n=t,a=e)}));var s=e.find((function(t){return i.equals(t[1],n[0])}));return r.fromPoints(r.create(),s[0],n[0],n[1])}},14543:function(t,e,n){var r=n(28614),i=n(61809);t.exports=function(){var t,e;return 1===arguments.length?(t=r(),e=arguments.length<=0?void 0:arguments[0]):(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),t.edges=e.edges.map((function(t){return[i.clone(t[0]),i.clone(t[1])]})),t}},28614:function(t){t.exports=function(t){return t||(t=[]),{edges:t}}},29991:function(t,e,n){var r=n(61809);t.exports=function(t,e){var n=t.edges,i=e.edges;return n.length===i.length&&n.reduce((function(t,e,n){var o=i[n],a=r.squaredDistance(e[0],o[0]);return t&&al&&(c=t,l=e)}));var f=r.subtract(r.create(),c[0],u),h=r.cross(r.create(),e,f),d=r.add(r.create(),u,f);r.add(d,d,f);var p=r.add(r.create(),u,h);r.add(p,p,h);var v=r.subtract(r.create(),u,f);r.subtract(v,v,f);var g=r.subtract(r.create(),u,h);r.subtract(g,g,h);var m=o.fromPoints([d,p,v,g]),y=i.create([m]),b=n.map((function(t){return function(t,e){var n=[r.subtract(r.create(),e[0],t),r.subtract(r.create(),e[1],t),r.add(r.create(),e[1],t),r.add(r.create(),e[0],t)];return o.fromPoints(n)}(e,t)})),w=i.create(b),x=a(y,w),_=i.toPolygons(x);return _=_.filter((function(t){var n=r.angle(e,o.plane(t));return Math.abs(n)r.angle?1:n.distancer.distance?1:0;var n,r}));for(var c=new Array(t.length+1),l=2,f=0;f0;)e=e.next,t-=1;for(;t<0;)e=e.prev,t+=1;return e}},{key:"computeNormal",value:function(){var t=this.edge,e=t.next,n=e.next,r=h([],e.head().point,t.head().point),i=[],u=[];for(this.nVertices=2,this.normal=[0,0,0];n!==t;)a(u,r),h(r,n.head().point,t.head().point),o(this.normal,this.normal,s(i,u,r)),n=n.next,this.nVertices+=1;this.area=c(this.normal),this.normal=f(this.normal,this.normal,1/this.area)}},{key:"computeNormalMinArea",value:function(t){if(this.computeNormal(),this.arean&&(e=r,n=i),r=r.next}while(r!==this.edge);var a=e.tail().point,s=e.head().point,c=h([],s,a),d=Math.sqrt(n);f(c,c,1/d);var p=u(this.normal,c);f(c,c,-p),o(this.normal,this.normal,c),l(this.normal,this.normal)}}},{key:"computeCentroid",value:function(){this.centroid=[0,0,0];var t=this.edge;do{o(this.centroid,this.centroid,t.head().point),t=t.next}while(t!==this.edge);f(this.centroid,this.centroid,1/this.nVertices)}},{key:"computeNormalAndCentroid",value:function(t){"undefined"!==typeof t?this.computeNormalMinArea(t):this.computeNormal(),this.computeCentroid(),this.offset=u(this.normal,this.centroid)}},{key:"distanceToPlane",value:function(t){return u(this.normal,t)-this.offset}},{key:"connectHalfEdges",value:function(t,e){var n;if(t.opposite.face===e.opposite.face){var r,i=e.opposite.face;t===this.edge&&(this.edge=e),3===i.nVertices?(r=e.opposite.prev.opposite,i.mark=2,n=i):(r=e.opposite.next,i.edge===r.prev&&(i.edge=r),r.prev=r.prev.prev,r.prev.next=r),e.prev=t.prev,e.prev.next=e,e.setOpposite(r),i.computeNormalAndCentroid()}else t.next=e,e.prev=t;return n}},{key:"mergeAdjacentFaces",value:function(t,e){var n=t.opposite,r=n.face;e.push(r),r.mark=2;for(var i,o,a=t.prev,s=t.next,u=n.prev,c=n.next;a.opposite.face===r;)a=a.prev,c=c.next;for(;s.opposite.face===r;)s=s.next,u=u.prev;for(i=c;i!==u.next;i=i.next)i.face=this;return this.edge=s,(o=this.connectHalfEdges(u,s))&&e.push(o),(o=this.connectHalfEdges(a,c))&&e.push(o),this.computeNormalAndCentroid(),e}},{key:"collectIndices",value:function(){var t=[],e=this.edge;do{t.push(e.head().index),e=e.next}while(e!==this.edge);return t}}],[{key:"createTriangle",value:function(e,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=new t,a=new d(e,o),s=new d(n,o),u=new d(r,o);return a.next=u.prev=s,s.next=a.prev=u,u.next=s.prev=a,o.edge=a,o.computeNormalAndCentroid(i),o}}]),t}();t.exports={VISIBLE:0,NON_CONVEX:1,DELETED:2,Face:p}},18967:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(89252),a=n(99101),s=function(){"use strict";function t(e,n){r(this,t),this.vertex=e,this.face=n,this.next=null,this.prev=null,this.opposite=null}return i(t,[{key:"head",value:function(){return this.vertex}},{key:"tail",value:function(){return this.prev?this.prev.vertex:null}},{key:"length",value:function(){return this.tail()?o(this.tail().point,this.head().point):-1}},{key:"lengthSquared",value:function(){return this.tail()?a(this.tail().point,this.head().point):-1}},{key:"setOpposite",value:function(t){this.opposite=t,t.opposite=this}}]),t}();t.exports=s},30910:function(t,e,n){var r=n(63038).default,i=n(34575).default,o=n(93913).default,a=n(71151),s=n(25510),u=n(4188),c=n(80956),l=n(41367),f=n(1054),h=f.Face,d=f.VISIBLE,p=f.NON_CONVEX,v=f.DELETED,g=function(){"use strict";function t(e){if(i(this,t),!Array.isArray(e))throw TypeError("input is not a valid array");if(e.length<4)throw Error("cannot build a simplex out of <4 points");this.tolerance=-1,this.nFaces=0,this.nPoints=e.length,this.faces=[],this.newFaces=[],this.claimed=new c,this.unclaimed=new c,this.vertices=[];for(var n=0;nthis.tolerance?this.addVertexToFace(i,e):this.unclaimed.add(i)}else this.unclaimed.addAll(n)}},{key:"resolveUnclaimedPoints",value:function(t){for(var e=this.unclaimed.first(),n=e;n;n=e){e=n.next;for(var r=this.tolerance,i=void 0,o=0;or&&(r=s,i=a),r>1e3*this.tolerance)break}}i&&this.addVertexToFace(n,i)}}},{key:"computeExtremes",value:function(){var t,e,n=[],r=[],i=[],o=[];for(t=0;t<3;t+=1)i[t]=o[t]=this.vertices[0];for(t=0;t<3;t+=1)n[t]=r[t]=this.vertices[0].point[t];for(t=1;tr[e]&&(r[e]=s[e],o[e]=a)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(n[0]),Math.abs(r[0]))+Math.max(Math.abs(n[1]),Math.abs(r[1]))+Math.max(Math.abs(n[2]),Math.abs(r[2]))),[i,o]}},{key:"createInitialSimplex",value:function(){var t,e,n,i,o=this.vertices,c=this.computeExtremes(),l=r(c,2),f=l[0],d=l[1],p=0,v=0;for(n=0;n<3;n+=1){var g=d[n].point[n]-f[n].point[n];g>p&&(p=g,v=n)}var m=f[v],y=d[v];for(p=0,n=0;np&&(p=w,t=b)}}var x=u([],m.point,y.point,t.point),_=a(m.point,x);for(p=-1,n=0;np&&(p=A,e=S)}}var E=[];if(a(e.point,x)-_<0)for(E.push(h.createTriangle(m,y,t),h.createTriangle(e,y,m),h.createTriangle(e,t,y),h.createTriangle(e,m,t)),n=0;n<3;n+=1){var C=(n+1)%3;E[n+1].getEdge(2).setOpposite(E[0].getEdge(C)),E[n+1].getEdge(1).setOpposite(E[C+1].getEdge(0))}else for(E.push(h.createTriangle(m,t,y),h.createTriangle(e,m,y),h.createTriangle(e,y,t),h.createTriangle(e,t,m)),n=0;n<3;n+=1){var k=(n+1)%3;E[n+1].getEdge(2).setOpposite(E[0].getEdge((3-n)%3)),E[n+1].getEdge(0).setOpposite(E[k+1].getEdge(1))}for(n=0;n<4;n+=1)this.faces.push(E[n]);for(n=0;np&&(p=M,P=E[i])}P&&this.addVertexToFace(T,P)}}}},{key:"reindexFaceAndVertices",value:function(){for(var t=[],e=0;en&&(n=i,t=e)}return t}}},{key:"computeHorizon",value:function(t,e,n,r){var i;this.deleteFaceVertices(n),n.mark=v,i=e?e.next:e=n.getEdge(0);do{var o=i.opposite,a=o.face;a.mark===d&&(a.distanceToPlane(t)>this.tolerance?this.computeHorizon(t,o,a,r):r.push(i)),i=i.next}while(i!==e)}},{key:"addAdjoiningFace",value:function(t,e){var n=h.createTriangle(t,e.tail(),e.head());return this.faces.push(n),n.getEdge(-1).setOpposite(e.opposite),n.getEdge(0)}},{key:"addNewFaces",value:function(t,e){var n,r;this.newFaces=[];for(var i=0;i=t.nVertices)throw Error("merge recursion limit exceeded");var o=n.opposite.face,a=!1;if(2===e?(this.oppositeFaceDistance(n)>-this.tolerance||this.oppositeFaceDistance(n.opposite)>-this.tolerance)&&(a=!0):t.area>o.area?this.oppositeFaceDistance(n)>-this.tolerance?a=!0:this.oppositeFaceDistance(n.opposite)>-this.tolerance&&(r=!1):this.oppositeFaceDistance(n.opposite)>-this.tolerance?a=!0:this.oppositeFaceDistance(n)>-this.tolerance&&(r=!1),a){for(var s=t.mergeAdjacentFaces(n,[]),u=0;u1&&void 0!==arguments[1]?arguments[1]:{},n=new r(t);return n.build(),n.collectFaces(e.skipTriangulation)}},25510:function(t,e,n){var r=n(73327),i=n(75508),o=n(78576);t.exports=function(t,e,n){return Math.sqrt(function(t,e,n){var a=[],s=[];i(a,n,e),i(s,t,e);var u=o(r([],s,a)),c=o(a);if(0===c)throw Error("a and b are the same point");return u/c}(t,e,n))}},16920:function(t,e,n){var r=n(61809),i=n(26417),o=n(79127),a=function(t,e,n){var i=t.findIndex((function(t){if(t){if(r.equals(t[0],e[0])&&r.equals(t[1],e[1]))return!0;if(r.equals(t[0],e[1])&&r.equals(t[1],e[0]))return!0}return!1}));i>=0?(e=t[i]).polygons.push(n):(e.polygons=[n],t.push(e))},s=function(t,e){var n=t.findIndex((function(t){if(t){if(r.equals(t[0],e[0])&&r.equals(t[1],e[1]))return!0;if(r.equals(t[0],e[1])&&r.equals(t[1],e[0]))return!0}return!1}));n>=0&&(t[n].polygons=[],t[n]=null)},u=function(t,e){var n=e.vertices,r=n.length,i=[n[r-1],n[0]];a(t,i,e);for(var o=0;o1?e-1:0),i=1;i=3)for(var p=h.vertices[0],v=c(p),g=0;g0&&function(){var n,h={},d={},p={},v=i(e);try{var g=function(){var t=r(n.value,2),e=t[0],i=t[1];p[e]=!0,i.forEach((function(t){var n=c(t.vertex0),r=c(t.vertex1);n in h?h[n].push(e):h[n]=[e],r in d?d[r].push(e):d[r]=[e]}))};for(v.s();!(n=v.n()).done;)g()}catch(tt){v.e(tt)}finally{v.f()}for(var m=t.slice(0);0!==e.size;){var y,b=i(e.keys());try{for(b.s();!(y=b.n()).done;){var w=y.value;p[w]=!0}}catch(tt){b.e(tt)}finally{b.f()}for(var x=!1;;){var _=Object.keys(p);if(0===_.length)break;var S=_[0],A=!0;if(e.has(S)){var E=e.get(S);u;for(var C=E[0],k=0;k<2;k++){var T=0===k?C.vertex0:C.vertex1,P=0===k?C.vertex1:C.vertex0,M=c(T),O=c(P),L=[];0===k?M in d&&(L=d[M]):M in h&&(L=h[M]);for(var N=0;N0&&U<1){var W=a.scale(a.create(),q,U);if(a.add(W,W,B),a.squaredDistance(W,z)0;)for(var f=r.shift(),h=o(f),d=0;d=0&&g[1]>=0){var m=v.next,y=p.next;p.prev.next=v.next,p.next.prev=v.prev,v.prev.next=p.next,v.next.prev=p.prev,p.v1=null,p.v2=null,p.next=null,p.prev=null,s(l,v),v.v1=null,v.v2=null,v.next=null,v.prev=null;var b=function(t,e,n){var r={v1:n.v1,v2:e.v2,next:e.next,prev:n.prev};n.prev.next=r,e.next.prev=r,s(t,e),e.v1=null,e.v2=null,e.next=null,e.prev=null,s(t,n),n.v1=null,n.v2=null,n.next=null,n.prev=null};0===g[0]&&b(l,m,m.prev),0===g[1]&&b(l,y,y.prev)}}else p.next&&a(l,p)}var w=[];return l.forEach((function(t){var e=function(t){for(var e,n=[];t.next;){var r=t.next;n.push(t.v1),t.v1=null,t.v2=null,t.next=null,t.prev=null,t=r}return n.length>0&&(e=i.fromPoints(n)),e}(t);e&&w.push(e)})),w},h=1e-13,d=function(t,e){return Math.abs(t[3]-e[3])<15e-8&&(n=t,r=e,Math.abs(n[0]-r[0])<=h&&Math.abs(n[1]-r[1])<=h&&Math.abs(n[2]-r[2])<=h);var n,r};t.exports=function(t,e){var n=[];e.forEach((function(t){var e=n.find((function(e){return d(e[0],i.plane(t))}));e?e[1].push(t):n.push([i.plane(t),[t]])}));var r=[];return n.forEach((function(t){var e=t[1],n=f(0,e);r=r.concat(n)})),r}},6171:function(t,e,n){var r=n(16920),i=r.polygonsToEdges,o=r.edgesToPolygons,a=r.cullOpenEdges,s=r.splitEdge,u=r.removePolygons,c=r.addPolygon;t.exports=function(t,e){var n=i(e),r=a(n);if(0===r.length)return e;for(var l=!0;l;){for(var f=0,h=0;h0}return r=r.filter((function(t){return t&&t.polygons&&1===t.polygons.length})),r.length>0&&console.warn("Repair of all T-junctions failed:",r.length),e=o(n)}},27314:function(t,e,n){var r=n(45366),i=n(29274),o=n(47963),a=n(29342),s=n(27657),u=n(73653),c=n(64346),l=function(t){var e=u(t),n=s.toPoints(t).map((function(t){return i.snap(i.create(),t,e)}));return s.create(n)},f=function(t){var e=u(t),n=o.toSides(t).map((function(t){return[i.snap(i.create(),t[0],e),i.snap(i.create(),t[1],e)]}));return n=n.filter((function(t){return!i.equals(t[0],t[1])})),o.create(n)},h=function(t){var e=u(t),n=a.toPolygons(t),r=c(e,n);return a.create(r)};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;nt}(o,t)})),n}},53544:function(t,e,n){var r=n(61809),i=n(79127);t.exports=function(t,e){var n=[];return e.forEach((function(e){!function(t,e,n){var o=e.vertices.length;if(o>3){if(o>4){var a=[0,0,0];e.vertices.forEach((function(t){return r.add(a,a,t)})),r.snap(a,r.divide(a,a,[o,o,o]),t);for(var s=0;s3)throw new Error("align(): modes must be an array of length <= 3");if(t.modes=i(t.modes,"none",3),3!==t.modes.filter((function(t){return["center","max","min","none"].includes(t)})).length)throw new Error('align(): all modes must be one of "center", "max" or "min"');if(!Array.isArray(t.relativeTo)||t.relativeTo.length>3)throw new Error("align(): relativeTo must be an array of length <= 3");if(t.relativeTo=i(t.relativeTo,0,3),3!==t.relativeTo.filter((function(t){return Number.isFinite(t)||null==t})).length)throw new Error("align(): all relativeTo values must be a number, or null.");if("boolean"!==typeof t.grouped)throw new Error("align(): grouped must be a boolean value.");return t},u=function(t,e,n){for(var r=0;r<3;r++)null==t[r]&&("center"===e[r]?t[r]=(n[0][r]+n[1][r])/2:"max"===e[r]?t[r]=n[1][r]:"min"===e[r]&&(t[r]=n[0][r]));return t},c=function(t,e,n){for(var r=o(t),i=[0,0,0],s=0;s<3;s++)"center"===e[s]?i[s]=n[s]-(r[0][s]+r[1][s])/2:"max"===e[s]?i[s]=n[s]-r[1][s]:"min"===e[s]&&(i[s]=n[s]-r[0][s]);return a(i,t)};t.exports=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i1?e-1:0),s=1;s1?e-1:0),c=1;c1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),s=1;s1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;rh&&(v=h+(2*Math.PI-f));var g,m=Math.acos((l*l+l*l-r*r)/(2*l*l)),y=i.clone(a),b=[];if(v.25&&(x=.25);for(var _=d?w+2:w,S=0;S<=_;S++){var A=S;d&&((A=(S-1)*(w-2*x)/w+x)<0&&(A=0),A>w&&(A=w));var E=f+A*(v/w);g=i.fromAngleRadians(i.create(),E),i.scale(g,g,l),i.add(g,g,y),b.push(g)}}return o.fromPoints({close:!1},b)}},19476:function(t,e,n){var r=n(32003),i=n(21651).isGT;t.exports=function(t){var e={center:[0,0],radius:1,startAngle:0,endAngle:2*Math.PI,segments:32},n=Object.assign({},e,t),o=n.center,a=n.radius,s=n.startAngle,u=n.endAngle,c=n.segments;if(!i(a,0))throw new Error("radius must be greater than zero");return r({center:o,radius:a=[a,a],startAngle:s,endAngle:u,segments:c})}},21651:function(t){t.exports={isNumberArray:function(t,e){return!!(Array.isArray(t)&&t.length>=e)&&t.every((function(t){return Number.isFinite(t)}))},isGT:function(t,e){return Number.isFinite(t)&&t>e},isGTE:function(t,e){return Number.isFinite(t)&&t>=e}}},72534:function(t,e,n){var r=n(35852),i=n(21651).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],size:2},t),n=e.center,o=e.size;if(!i(o,0))throw new Error("size must be greater than zero");return r({center:n,size:o=[o,o,o]})}},35852:function(t,e,n){var r=n(29342),i=n(79127),o=n(21651).isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],size:[2,2,2]},t),n=e.center,a=e.size;if(!o(n,3))throw new Error("center must be an array of X, Y and Z values");if(!o(a,3))throw new Error("size must be an array of width, depth and height values");if(!a.every((function(t){return t>0})))throw new Error("size values must be greater than zero");return r.create([[[0,4,6,2],[-1,0,0]],[[1,3,7,5],[1,0,0]],[[0,1,5,4],[0,-1,0]],[[2,6,7,3],[0,1,0]],[[0,2,3,1],[0,0,-1]],[[4,5,7,6],[0,0,1]]].map((function(t){var e=t[0].map((function(t){return[n[0]+a[0]/2*(2*!!(1&t)-1),n[1]+a[1]/2*(2*!!(2&t)-1),n[2]+a[2]/2*(2*!!(4&t)-1)]}));return i.fromPoints(e)})))}},2869:function(t,e,n){var r=n(9402),i=n(21651).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],height:2,radius:1,segments:32},t),n=e.center,o=e.height,a=e.radius,s=e.segments;if(!i(a,0))throw new Error("radius must be greater than zero");return r({center:n,height:o,startRadius:[a,a],endRadius:[a,a],segments:s})}},9402:function(t,e,n){var r=n(69221).EPS,i=n(61809),o=n(29342),a=n(79127),s=n(21651),u=s.isGT,c=s.isGTE,l=s.isNumberArray;t.exports=function(t){var e={center:[0,0,0],height:2,startRadius:[1,1],startAngle:0,endRadius:[1,1],endAngle:2*Math.PI,segments:32},n=Object.assign({},e,t),s=n.center,f=n.height,h=n.startRadius,d=n.startAngle,p=n.endRadius,v=n.endAngle,g=n.segments;if(!l(s,3))throw new Error("center must be an array of X, Y and Z values");if(!u(f,0))throw new Error("height must be greater then zero");if(!l(h,2))throw new Error("startRadius must be an array of X and Y values");if(!h.every((function(t){return t>0})))throw new Error("startRadius values must be greater than zero");if(!l(p,2))throw new Error("endRadius must be an array of X and Y values");if(!p.every((function(t){return t>0})))throw new Error("endRadius values must be greater than zero");if(!c(d,0))throw new Error("startAngle must be positive");if(!c(v,0))throw new Error("endAngle must be positive");if(!c(g,4))throw new Error("segments must be four or more");d%=2*Math.PI,v%=2*Math.PI;var m=2*Math.PI;dv&&(m=v+(2*Math.PI-d));var y=Math.min(h[0],h[1],p[0],p[1]),b=Math.acos((y*y+y*y-r*r)/(2*y*y));if(m0&&(O.push(M(x,P(0,D,h),P(0,N,h))),O.push(M(P(0,N,h),P(0,D,h),P(1,N,p)))),p[0]>0&&(O.push(M(_,P(1,N,p),P(1,D,p))),O.push(M(P(1,N,p),P(0,D,h),P(1,D,p)))))}return m<2*Math.PI&&(O.push(M(x,P(0,0,h),_)),O.push(M(P(0,0,h),P(1,0,p),_)),O.push(M(x,_,P(0,1,h))),O.push(M(P(0,1,h),_,P(1,1,p)))),o.create(O)}},32003:function(t,e,n){var r=n(69221).EPS,i=n(29274),o=n(47963),a=n(21651),s=a.isGTE,u=a.isNumberArray;t.exports=function(t){var e={center:[0,0],radius:[1,1],startAngle:0,endAngle:2*Math.PI,segments:32},n=Object.assign({},e,t),a=n.center,c=n.radius,l=n.startAngle,f=n.endAngle,h=n.segments;if(!u(a,2))throw new Error("center must be an array of X and Y values");if(!u(c,2))throw new Error("radius must be an array of X and Y values");if(!c.every((function(t){return t>0})))throw new Error("radius values must be greater than zero");if(!s(l,0))throw new Error("startAngle must be positive");if(!s(f,0))throw new Error("endAngle must be positive");if(!s(h,3))throw new Error("segments must be three or more");l%=2*Math.PI,f%=2*Math.PI;var d=2*Math.PI;lf&&(d=f+(2*Math.PI-l));var p=Math.min(c[0],c[1]);if(d0})))throw new Error("radius values must be greater than zero");if(!s(c,4))throw new Error("segments must be four or more");for(var f,h=r.scale(r.create(),r.normalize(r.create(),l[0]),a[0]),d=r.scale(r.create(),r.normalize(r.create(),l[1]),a[1]),p=r.scale(r.create(),r.normalize(r.create(),l[2]),a[2]),v=Math.round(c/4),g=[],m=r.create(),y=r.create(),b=0;b<=c;b++){var w=2*Math.PI*b/c,x=r.add(r.create(),r.scale(m,h,Math.cos(w)),r.scale(y,d,Math.sin(w)));if(b>0)for(var _=void 0,S=void 0,A=0;A<=v;A++){var E=.5*Math.PI*A/v,C=Math.cos(E),k=Math.sin(E);if(A>0){var T=[],P=void 0;P=r.subtract(r.create(),r.scale(m,f,_),r.scale(y,p,S)),T.push(r.add(P,P,n)),P=r.subtract(r.create(),r.scale(m,x,_),r.scale(y,p,S)),T.push(r.add(P,P,n)),A0})))throw new Error("size values must be greater than zero");var s=[a[0]/2,a[1]/2],u=[s[0],-s[1]],c=[r.subtract(r.create(),n,s),r.add(r.create(),n,u),r.add(r.create(),n,s),r.subtract(r.create(),n,u)];return i.fromPoints(c)}},82006:function(t,e,n){var r=n(69221).EPS,i=n(29274),o=n(61809),a=n(29342),s=n(79127),u=n(21651),c=u.isGT,l=u.isGTE,f=u.isNumberArray,h=function(t,e,n,a,s,u){var c=Math.PI/2*s/a,l=Math.cos(c),f=Math.sin(c),h=a-s,d=n*l,p=e[2]-(n-n*f);u||(p=n-n*f-e[2]),d=d>r?d:0;for(var v=o.add(o.create(),t,[e[0]-n,e[1]-n,p]),g=o.add(o.create(),t,[n-e[0],e[1]-n,p]),m=o.add(o.create(),t,[n-e[0],n-e[1],p]),y=o.add(o.create(),t,[e[0]-n,n-e[1],p]),b=[],w=[],x=[],_=[],S=0;S<=h;S++){var A=h>0?Math.PI/2*S/h:0,E=i.fromAngleRadians(i.create(),A);i.scale(E,E,d);var C=o.fromVec2(o.create(),E);b.push(o.add(o.create(),v,C)),o.rotateZ(C,C,[0,0,0],Math.PI/2),w.push(o.add(o.create(),g,C)),o.rotateZ(C,C,[0,0,0],Math.PI/2),x.push(o.add(o.create(),m,C)),o.rotateZ(C,C,[0,0,0],Math.PI/2),_.push(o.add(o.create(),y,C))}return u?[b,w,x,_]:(b.reverse(),w.reverse(),x.reverse(),_.reverse(),[_,x,w,b])},d=function(t,e){for(var n=[],r=0;r0})))throw new Error("size values must be greater than zero");if(!c(o,0))throw new Error("roundRadius must be greater than zero");if(!l(u,4))throw new Error("segments must be four or more");if(o>(i=i.map((function(t){return t/2})))[0]-r||o>i[1]-r||o>i[2]-r)throw new Error("roundRadius must be smaller then the radius of all dimensions");u=Math.floor(u/4);for(var g=null,m=null,y=[],b=0;b<=u;b++){var w=h(n,i,o,u,b,!0),x=h(n,i,o,u,b,!1);if(0===b&&(y=y.concat(v(x,w))),g&&(y=y.concat(d(g,w),p(g,w))),m&&(y=y.concat(d(m,x),p(m,x))),b===u){var _=w.map((function(t){return t[0]}));y.push(s.fromPoints(_)),_=x.map((function(t){return t[0]})),y.push(s.fromPoints(_))}g=w,m=x}return a.create(y)}},15385:function(t,e,n){var r=n(69221).EPS,i=n(61809),o=n(29342),a=n(79127),s=n(21651),u=s.isGT,c=s.isGTE,l=s.isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],height:2,radius:1,roundRadius:.2,segments:32},t),n=e.center,s=e.height,f=e.radius,h=e.roundRadius,d=e.segments;if(!l(n,3))throw new Error("center must be an array of X, Y and Z values");if(!u(s,0))throw new Error("height must be greater then zero");if(!u(f,0))throw new Error("radius must be greater then zero");if(!u(h,0))throw new Error("roundRadius must be greater then zero");if(h>f-r)throw new Error("roundRadius must be smaller then the radius");if(!c(d,4))throw new Error("segments must be four or more");var p,v=[0,0,-s/2],g=[0,0,s/2],m=i.subtract(i.create(),g,v);if(2*h>i.length(m)-r)throw new Error("height must be larger than twice roundRadius");p=Math.abs(m[0])>Math.abs(m[1])?i.fromValues(0,1,0):i.fromValues(1,0,0);var y=i.scale(i.create(),i.normalize(i.create(),m),h),b=i.scale(i.create(),i.normalize(i.create(),i.cross(i.create(),y,p)),f),w=i.scale(i.create(),i.normalize(i.create(),i.cross(i.create(),b,y)),f);i.add(v,v,y),i.subtract(g,g,y);for(var x,_=Math.floor(.25*d),S=function(t){var e=t.map((function(t){return i.add(t,t,n)}));return a.fromPoints(e)},A=[],E=i.create(),C=i.create(),k=0;k<=d;k++){var T=2*Math.PI*k/d,P=i.add(i.create(),i.scale(E,b,Math.cos(T)),i.scale(C,w,Math.sin(T)));if(k>0){var M=[];M.push(i.add(i.create(),v,P)),M.push(i.add(i.create(),v,x)),M.push(i.add(i.create(),g,x)),M.push(i.add(i.create(),g,P)),A.push(S(M));for(var O=void 0,L=void 0,N=0;N<=_;N++){var D=.5*Math.PI*N/_,j=Math.cos(D),I=Math.sin(D);if(N>0){M=[];var R=void 0;R=i.add(i.create(),v,i.subtract(E,i.scale(E,x,O),i.scale(C,y,L))),M.push(R),R=i.add(i.create(),v,i.subtract(E,i.scale(E,P,O),i.scale(C,y,L))),M.push(R),N<_&&(R=i.add(i.create(),v,i.subtract(E,i.scale(E,P,j),i.scale(C,y,I))),M.push(R)),R=i.add(i.create(),v,i.subtract(E,i.scale(E,x,j),i.scale(C,y,I))),M.push(R),A.push(S(M)),M=[],R=i.add(i.create(),i.scale(E,x,O),i.scale(C,y,L)),i.add(R,R,g),M.push(R),R=i.add(i.create(),i.scale(E,P,O),i.scale(C,y,L)),i.add(R,R,g),M.push(R),N<_&&(R=i.add(i.create(),i.scale(E,P,j),i.scale(C,y,I)),i.add(R,R,g),M.push(R)),R=i.add(i.create(),i.scale(E,x,j),i.scale(C,y,I)),i.add(R,R,g),M.push(R),M.reverse(),A.push(S(M))}O=j,L=I}}x=P}return o.create(A)}},43844:function(t,e,n){var r=n(69221).EPS,i=n(29274),o=n(47963),a=n(21651),s=a.isGT,u=a.isGTE,c=a.isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0],size:[2,2],roundRadius:.2,segments:32},t),n=e.center,a=e.size,l=e.roundRadius,f=e.segments;if(!c(n,2))throw new Error("center must be an array of X and Y values");if(!c(a,2))throw new Error("size must be an array of X and Y values");if(!a.every((function(t){return t>0})))throw new Error("size values must be greater than zero");if(!s(l,0))throw new Error("roundRadius must be greater than zero");if(!u(f,4))throw new Error("segments must be four or more");if(l>(a=a.map((function(t){return t/2})))[0]-r||l>a[1]-r)throw new Error("roundRadius must be smaller then the radius of all dimensions");for(var h=Math.floor(f/4),d=i.add(i.create(),n,[a[0]-l,a[1]-l]),p=i.add(i.create(),n,[l-a[0],a[1]-l]),v=i.add(i.create(),n,[l-a[0],l-a[1]]),g=i.add(i.create(),n,[a[0]-l,l-a[1]]),m=[],y=[],b=[],w=[],x=0;x<=h;x++){var _=Math.PI/2*x/h,S=i.fromAngleRadians(i.create(),_);i.scale(S,S,l),m.push(i.add(i.create(),d,S)),i.rotate(S,S,i.create(),Math.PI/2),y.push(i.add(i.create(),p,S)),i.rotate(S,S,i.create(),Math.PI/2),b.push(i.add(i.create(),v,S)),i.rotate(S,S,i.create(),Math.PI/2),w.push(i.add(i.create(),g,S))}return o.fromPoints(m.concat(y,b,w))}},66979:function(t,e,n){var r=n(76377),i=n(21651).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],radius:1,segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},t),n=e.center,o=e.radius,a=e.segments,s=e.axes;if(!i(o,0))throw new Error("radius must be greater than zero");return r({center:n,radius:o=[o,o,o],segments:a,axes:s})}},7592:function(t,e,n){var r=n(858),i=n(21651).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0],size:2},t),n=e.center,o=e.size;if(!i(o,0))throw new Error("size must be greater than zero");return r({center:n,size:o=[o,o]})}},91260:function(t,e,n){var r=n(29274),i=n(47963),o=n(21651),a=o.isGT,s=o.isGTE,u=o.isNumberArray,c=function(t,e,n,i){for(var o=2*Math.PI/t,a=[],s=0;s0&&e>1&&e=f)throw new Error("inner circle is two large to rotate about the outer circle");var g=a({radius:s,segments:l});return 0!==d&&(g=i([0,0,d],g)),g=o([f,0],g),r({startAngle:p,angle:v,segments:h},g)}},56259:function(t,e,n){var r=n(29274),i=n(47963),o=n(21651).isNumberArray,a=1e-13,s=function(t,e,n){return Math.acos((t*t+e*e-n*n)/(2*t*e))},u=function(t){var e=t[0],n=t[1],r=t[2],i=function(t,e,n){return e>a?Math.sqrt(t*t+n*n-2*t*n*Math.cos(e)):Math.sqrt((t-n)*(t-n)+t*n*e*e*(1-e*e/12))}(e,n,r),o=s(i,e,r),u=Math.PI-o-n;return c(o,n,u,r,i,e)},c=function(t,e,n,o,a,s){var u=r.fromValues(0,0),c=r.fromValues(s,0),l=r.fromValues(o,0);return r.add(l,r.rotate(l,l,[0,0],Math.PI-e),c),i.fromPoints([u,c,l])};t.exports=function(t){var e=Object.assign({},{type:"SSS",values:[1,1,1]},t),n=e.type,r=e.values;if("string"!==typeof n)throw new Error("triangle type must be a string");if("A"!==(n=n.toUpperCase())[0]&&"S"!==n[0]||"A"!==n[1]&&"S"!==n[1]||"A"!==n[2]&&"S"!==n[2])throw new Error("triangle type must contain three letters; A or S");if(!o(r,3))throw new Error("triangle values must contain three values");if(!r.every((function(t){return t>0})))throw new Error("triangle values must be greater than zero");switch(n){case"AAA":return function(t){if(Math.abs(t[0]+t[1]+t[2]-Math.PI)>a)throw new Error("AAA triangles require angles that sum to PI");var e=t[0],n=t[1],r=Math.PI-e-n,i=1/Math.sin(r)*Math.sin(e),o=1/Math.sin(r)*Math.sin(n);return c(e,n,r,i,o,1)}(r);case"AAS":return function(t){var e=t[0],n=t[1],r=Math.PI+a-e-n;if(rA.width&&(S=k-A.width,"right"===f?A=o({x:S},A):"center"===f&&(A=o({x:S/2},A))),C=C.concat(A.segments);return C}},18417:function(t,e,n){var r=n(47963),i=n(29342),o=n(27657);t.exports=function(t){var e;return t.forEach((function(t){var n=0;if(r.isA(t)&&(n=1),i.isA(t)&&(n=2),o.isA(t)&&(n=3),e&&n!==e)return!1;e=n})),!0}},80723:function(t){t.exports=function(t){return.017453292519943295*t}},45366:function(t){t.exports=function t(e){return e.reduce((function(e,n){return Array.isArray(n)?e.concat(t(n)):e.concat(n)}),[])}},31279:function(t){t.exports=function(t,e){return t-e}},72470:function(t,e,n){t.exports={areAllShapesTheSameType:n(18417),degToRad:n(80723),flatten:n(45366),fnNumberSort:n(31279),insertSorted:n(72901),radiusToSegments:n(50005),radToDeg:n(19036)}},72901:function(t){t.exports=function(t,e,n){for(var r=0,i=t.length;i>r;){var o=Math.floor((r+i)/2);n(e,t[o])>0?r=o+1:i=o}t.splice(r,0,e)}},40308:function(t){t.exports=function(t,e,n){for(t=t.slice();t.length0?2*t*Math.PI/e:0,i=n>0?2*Math.PI/n:0;return Math.ceil(Math.max(r,i,4))}},46544:function(t,e,n){var r=n(37069),i=r.geometries,o=r.maths,a=r.measurements,s=r.utils,u=n(5491),c=n(93193).i8,l=function(t){var e=a.measureBoundingBox(t);return 1===t.length?e:e.reduce((function(t,e){return o.vec3.min(t[0],t[0],e[0]),o.vec3.max(t[1],t[1],e[1]),t}),[[0,0,0],[0,0,0]])},f=function(t,e,n){var r=0-e[0][0],o=0-e[1][1],a=[];return t.forEach((function(e,s){n.statusCallback&&n.statusCallback({progress:100*s/t.length}),i.geom2.isA(e)&&a.push(p(e,[r,o],n)),i.path2.isA(e)&&a.push(g([e],[r,o],n))})),a},h=function(t,e,n,r){var i=t-n,o=e-r;return t===n&&e===n?[t,e]:t===n?[t,r-o]:e===r?[n- -i,e]:[n- -i,r-o]},p=function(t,e,n){var r=i.geom2.toOutlines(t).map((function(t){return i.path2.fromPoints({closed:!0},t)}));return n.color="black",t.color&&(n.color=y(t.color)),n.id=null,t.id&&(n.id=t.id),n.class=null,t.class&&(n.class=t.class),v(r,e,n)},v=function(t,e,n){var r="";t.forEach((function(t){return r+=m(t,e,n)}));var i={fill:n.color,d:r};return n.id&&(i.id=n.id),n.class&&(i.class=n.class),["g",["path",i]]},g=function(t,e,n){return t.reduce((function(t,r,i){return d={d:m(r,e,n)},r.color&&(d.stroke=y(r.color)),r.id&&(d.id=r.id),r.class&&(d.class=r.class),t.concat([["path",d]])}),["g"])},m=function(t,e,n){for(var r="",i=t.points.length+(t.isClosed?1:0),o=0;o=t.points.length&&(a-=t.points.length);var s=t.points[a],u=[s[0]+e[0],s[1]+e[1]],c=h(u[0],u[1],0,0),l=Math.round(c[0]*n.decimals)/n.decimals,f=Math.round(c[1]*n.decimals)/n.decimals;r+=o>0?"L".concat(l," ").concat(f):"M".concat(l," ").concat(f)}return r},y=function(t){return"rgb(".concat(255*t[0],",").concat(255*t[1],",").concat(255*t[2],",").concat(255*t[3],")")};t.exports={serialize:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r1?e-1:0),h=1;h=8?[e,n,r,parseInt(t.substring(6,8),16)/255]:[e,n,r]}},46003:function(t,e,n){var r=n(7388),i=n(10781);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var d=e[3];return[u,c,l,d]}return[u,c,l]}},207:function(t,e,n){var r=n(7388);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var v=e[3];return[s,u,c,v]}return[s,u,c]}},10781:function(t){t.exports=function(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}},22644:function(t,e,n){t.exports={colorize:n(59187),colorNameToRgb:n(21666),cssColors:n(35878),hexToRgb:n(68317),hslToRgb:n(46003),hsvToRgb:n(207),hueToColorComponent:n(10781),rgbToHex:n(30253),rgbToHsl:n(71149),rgbToHsv:n(7293)}},30253:function(t,e,n){var r=n(7388);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3&&(s+=Number(255*e[3]).toString(16)),s}},71149:function(t,e,n){var r=n(7388);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n.5?h/(2-c-l):h/(c+l),c){case a:i=(s-u)/h+(s3){var d=e[3];return[i,o,f,d]}return[i,o,f]}},7293:function(t,e,n){var r=n(7388);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n3){var d=e[3];return[i,h,l,d]}return[i,h,l]}},58522:function(t){var e=function(t){var e=null;return t.forEach((function(t){var n="";if(Number.isFinite(t))n="float_single";else{if(!Array.isArray(t))throw new Error("Bezier points must all be numbers or arrays of number.");t.forEach((function(t){if(!Number.isFinite(t))throw new Error("Bezier point values must all be numbers.")})),n="float_"+t.length}if(null==e)e=n;else if(e!==n)throw new Error("Bezier points must be either all numbers or all arrays of numbers of the same size.")})),e},n=function(t){for(var e=[],n=0;n<=t;n++)e.push(r(t)/(r(n)*r(t-n)));return e},r=function(t){for(var e=1,n=2;n<=t;n++)e*=n;return e};t.exports=function(t){if(!Array.isArray(t))throw new Error("Bezier points must be a valid array/");if(t.length<2)throw new Error("Bezier points must contain at least 2 values.");var r=e(t);return{points:t,pointType:r,dimensions:"float_single"===r?0:t[0].length,permutations:n(t.length-1),tangentPermutations:n(t.length-2)}}},10351:function(t,e,n){t.exports={create:n(58522),valueAt:n(272),tangentAt:n(12335)}},12335:function(t){var e=function(t,e,n){for(var r=e.length-1,i=0,o=0;o1)throw new Error("Bezier tangentAt() input must be between 0 and 1");if("float_single"===n.pointType)return e(n,n.points,t);for(var r=[],i=0;i1)throw new Error("Bezier valueAt() input must be between 0 and 1");if("float_single"===n.pointType)return e(n,n.points,t);for(var r=[],i=0;i=0&&(e.color=[t[17],t[18],t[19],t[20]]),e}},73099:function(t,e,n){var r=n(13632),i=n(88960);t.exports=function(t){if(!Array.isArray(t))throw new Error("the given points must be an array");var e=t.length;if(e<3)throw new Error("the given points must define a closed geometry with three or more points");r.equals(t[0],t[e-1])&&--e;for(var n=[],o=t[e-1],a=0;a=180&&(S-=360),(y<0||S>b)&&(y=x,b=S)}var A=m[y];m.splice(y,1),0===m.length&&e.delete(g),c=A}d.length>0&&d.push(d.shift()),s.push(d)}return e.clear(),s}},10366:function(t,e,n){var r=n(77526);t.exports=function(t){var e=r(t).map((function(t){return t[0]}));return e.length>0&&e.push(e.shift()),e}},77526:function(t,e,n){var r=n(77393);t.exports=function(t){return r(t).sides}},57276:function(t,e,n){var r=n(13632),i=n(77526);t.exports=function(t){var e=i(t),n="geom2 ("+e.length+" sides):\n[\n";return e.forEach((function(t){n+=" ["+r.toString(t[0])+", "+r.toString(t[1])+"]\n"})),n+="]\n"}},71676:function(t,e,n){var r=n(82530);t.exports=function(t,e){var n=r.multiply(r.create(),t,e.transforms);return Object.assign({},e,{transforms:n})}},50497:function(t,e,n){var r=n(82530),i=n(70564);t.exports=function(t){return r.isIdentity(t.transforms)||(t.polygons=t.polygons.map((function(e){return i.transform(t.transforms,e)})),t.transforms=r.create()),t}},16371:function(t){t.exports=function(t){return Object.assign({},t)}},90884:function(t,e,n){var r=n(82530);t.exports=function(t){return void 0===t&&(t=[]),{polygons:t,transforms:r.create()}}},83450:function(t,e,n){var r=n(21177),i=n(82530),o=n(70564),a=n(90884);t.exports=function(t){if(1!==t[0])throw new Error("invalid compact binary data");var e=a();e.transforms=i.clone(t.slice(1,17));for(var n=t[21],s=22,u=t.length-3*n;u=0&&(e.color=[t[17],t[18],t[19],t[20]]),e}},72298:function(t,e,n){var r=n(70564),i=n(90884);t.exports=function(t){if(!Array.isArray(t))throw new Error("the given points must be an array");var e=t.map((function(t,e){return r.fromPoints(t)}));return i(e)}},88955:function(t,e,n){t.exports={clone:n(16371),create:n(90884),fromPoints:n(72298),fromCompactBinary:n(83450),invert:n(80965),isA:n(14902),toPoints:n(66078),toPolygons:n(12803),toString:n(62562),toCompactBinary:n(78617),transform:n(9433)}},80965:function(t,e,n){var r=n(70564),i=n(90884),o=n(12803);t.exports=function(t){var e=o(t).map((function(t){return r.invert(t)}));return i(e)}},14902:function(t){t.exports=function(t){return!!(t&&"object"===typeof t&&"polygons"in t&&"transforms"in t&&Array.isArray(t.polygons)&&"length"in t.transforms)}},78617:function(t,e,n){var r=n(70564);t.exports=function(t){var e=t.polygons,n=t.transforms,i=e.length,o=e.reduce((function(t,e){return t+e.vertices.length}),0),a=[-1,-1,-1,-1];t.color&&(a=t.color);var s=new Float32Array(22+i+3*o);s[0]=1,s[1]=n[0],s[2]=n[1],s[3]=n[2],s[4]=n[3],s[5]=n[4],s[6]=n[5],s[7]=n[6],s[8]=n[7],s[9]=n[8],s[10]=n[9],s[11]=n[10],s[12]=n[11],s[13]=n[12],s[14]=n[13],s[15]=n[14],s[16]=n[15],s[17]=a[0],s[18]=a[1],s[19]=a[2],s[20]=a[3],s[21]=o;var u=22,c=u+i;return e.forEach((function(t){var e=r.toPoints(t);s[u]=e.length,u++;for(var n=0;n1){var k=Math.sqrt(C);p*=k,v*=k,p=Math.round(p*h)/h,v=Math.round(v*h)/h}var T=Math.sqrt((p*p*v*v-p*p*E[1]*E[1]-v*v*E[0]*E[0])/(p*p*E[1]*E[1]+v*v*E[0]*E[0]));m===l&&(T=-T);var P=r.fromValues(p*E[1]/v,-v*E[0]/p);r.scale(P,P,T);var M=r.fromValues(w*P[0]-x*P[1],x*P[0]+w*P[1]);M=r.add(M,M,r.scale(r.create(),r.add(r.create(),g,a),.5));var O=r.fromValues((E[0]-P[0])/p,(E[1]-P[1])/v),L=r.fromValues((-E[0]-P[0])/p,(-E[1]-P[1])/v),N=r.angleRadians(O),D=r.angleRadians(L)-N;D%=2*Math.PI,!m&&D>0?D-=2*Math.PI:m&&D<0&&(D+=2*Math.PI);var j=Math.ceil(Math.abs(D)/(2*Math.PI)*f)+1;j<1&&(j=1);for(var I=1;I0&&(p*=v),d.push(p);for(var g=[],m=0;m<=h;++m){var y=d[h]/(d[m]*d[h-m]);g.push(y)}for(var b=r.create(),w=r.create(),x=i.create(),_=function(t){for(var e=1,n=Math.pow(1-t,h),i=1!==t?1/(1-t):1,o=r.create(),a=0;a<=h;++a){a===h&&(n=1);var u=g[a]*e*n,c=r.scale(b,s[a],u);r.add(o,o,c),e*=t,n*=i}return o},S=[],A=[],E=h+1,C=0;CO){var j=A[P-1],I=A[P+1],R=j+1*(I-j)/3,F=j+2*(I-j)/3,B=_(R),z=_(F);S.splice(P,1,B,z),A.splice(P,1,R,F),--P<1&&(P=1)}else++P}S.shift();var V=o(S,e);return V.lastBezierControlPoint=s[s.length-2],V}},35595:function(t,e,n){var r=n(38048),i=n(53703);t.exports=function(t,e){if(e.isClosed)throw new Error("cannot append points to a closed path");var n=i(e);return n=n.concat(t),r({},n)}},12788:function(t,e,n){var r=n(82530),i=n(13632);t.exports=function(t){return r.isIdentity(t.transforms)||(t.points=t.points.map((function(e){return i.transform(i.create(),e,t.transforms)})),t.transforms=r.create()),t}},25289:function(t){t.exports=function(t){return Object.assign({},t)}},49436:function(t,e,n){var r=n(63055).EPS,i=n(13632),o=n(25289);t.exports=function(t){if(t.isClosed)return t;var e=o(t);if(e.isClosed=!0,e.points.length>1)for(var n=e.points,a=n[0],s=n[n.length-1];i.distance(a,s)0&&e.length>0&&o(e[0],l[l.length-1])&&e.shift(),l=l.concat(e)})),r({closed:t},l)}},4541:function(t,e,n){var r=n(82530);t.exports=function(t){return void 0===t&&(t=[]),{points:t,isClosed:!1,transforms:r.create()}}},42983:function(t,e,n){var r=n(53703);t.exports=function(t,e,n){r(n).forEach(e)}},90899:function(t,e,n){var r=n(13632),i=n(53703);t.exports=function(t,e){if(t.isClosed!==e.isClosed)return!1;if(t.points.length!==e.points.length)return!1;var n=i(t),o=i(e),a=n.length,s=0;do{for(var u=!1,c=0;c=0&&(e.color=[t[18],t[19],t[20],t[21]]),e}},38048:function(t,e,n){var r=n(63055).EPS,i=n(13632),o=n(49436),a=n(4541);t.exports=function(t,e){var n=Object.assign({},{closed:!1},t).closed,s=a();if(s.points=e.map((function(t){return i.clone(t)})),s.points.length>1){var u=s.points[0],c=s.points[s.points.length-1];i.distance(u,c)i,u=0,c=0,l=n+1;--l;){var f=a[1]>i;if(s!==f){var h=o[0]>r,d=a[0]>r;(h&&d||a[0]-(a[1]-i)*(o[0]-a[0])/(o[1]-a[1])>=r)&&(u=!u)}s=f,o=a,a=e[++c]}return u};t.exports=function(t,e){if(0===t.length)return 0;var n=e.vertices;return n.length<3?0:(r(e)<0&&(e=i(e)),t.reduce((function(t,e){return t+o(e,n)}),0)===t.length?1:0)}},73472:function(t){t.exports=function(t){return(void 0===t||t.length<3)&&(t=[]),{vertices:t}}},60590:function(t,e,n){var r=n(73472);t.exports=function(t){var e=t.vertices.slice().reverse();return r(e)}},52926:function(t,e,n){t.exports={arePointsInside:n(90504),create:n(73472),flip:n(60590),measureArea:n(48519)}},48519:function(t,e,n){var r=n(74607);t.exports=function(t){return r(t.vertices)}},41271:function(t,e,n){var r=n(89233),i=n(21177);t.exports=function(){var t,e;return 1===arguments.length?(t=r(),e=arguments.length<=0?void 0:arguments[0]):(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),t.vertices=e.vertices.map((function(t){return i.clone(t)})),t}},89233:function(t){t.exports=function(t){return(void 0===t||t.length<3)&&(t=[]),{vertices:t}}},87624:function(t,e,n){var r=n(21177),i=n(89233);t.exports=function(t){var e=t.map((function(t){return r.clone(t)}));return i(e)}},83896:function(t,e,n){var r=n(89233);t.exports=function(t,e){var n=r(t);return n.plane=e,n}},70564:function(t,e,n){t.exports={clone:n(41271),create:n(89233),fromPoints:n(87624),fromPointsAndPlane:n(83896),invert:n(75597),isA:n(80568),isConvex:n(6093),measureArea:n(68223),measureBoundingBox:n(20405),measureBoundingSphere:n(32232),measureSignedVolume:n(80774),plane:n(14524),toPoints:n(13303),toString:n(95218),transform:n(53917)}},75597:function(t,e,n){var r=n(89233);t.exports=function(t){var e=t.vertices.slice().reverse();return r(e)}},80568:function(t){t.exports=function(t){return!!(t&&"object"===typeof t&&"vertices"in t&&Array.isArray(t.vertices))}},6093:function(t,e,n){var r=n(319).default,i=n(5322),o=n(21177),a=function(t){var e=t.length;if(e>2)for(var n=i.fromPoints.apply(i,[i.create()].concat(r(t))),o=t[e-2],a=t[e-1],u=0;u=0};t.exports=function(t){return a(t.vertices)}},68223:function(t,e,n){var r=n(14524);t.exports=function(t){var e=t.vertices.length;if(e<3)return 0;var n=t.vertices,i=r(t),o=Math.abs(i[0]),a=Math.abs(i[1]),s=Math.abs(i[2]);if(o+a+s===0)return 0;var u=3;o>a&&o>s?u=1:a>s&&(u=2);var c=0,l=0,f=1,h=2;switch(u){case 1:for(f=1;f=h&&f>=d?(l=i(e[1],e[2],n[1],n[2],e[3],n[3]),c=r.fromValues(0,l[0],l[1])):h>=f&&h>=d?(l=i(e[0],e[2],n[0],n[2],e[3],n[3]),c=r.fromValues(l[0],0,l[1])):(l=i(e[0],e[1],n[0],n[1],e[3],n[3]),c=r.fromValues(l[0],l[1],0)),a(t,c,s)}},22443:function(t,e,n){var r=n(21177);t.exports=function(t,e,n){var i=r.normalize(r.create(),n);return r.copy(t[0],e),r.copy(t[1],i),t}},23969:function(t,e,n){var r=n(21177),i=n(22443);t.exports=function(t,e,n){var o=r.subtract(r.create(),n,e);return i(t,e,o)}},5678:function(t,e,n){t.exports={clone:n(41202),closestPoint:n(24597),copy:n(77439),create:n(96674),direction:n(2936),distanceToPoint:n(6374),equals:n(69206),fromPlanes:n(42469),fromPointAndDirection:n(22443),fromPoints:n(23969),intersectPointOfLineAndPlane:n(46042),origin:n(35141),reverse:n(57202),toString:n(82334),transform:n(72423)}},46042:function(t,e,n){var r=n(21177);t.exports=function(t,e){var n=e,i=e[3],o=t[0],a=t[1],s=(i-r.dot(n,o))/r.dot(n,a);return r.add(r.create(),o,r.scale(r.create(),a,s))}},35141:function(t){t.exports=function(t){return t[0]}},57202:function(t,e,n){var r=n(21177),i=n(22443);t.exports=function(t,e){var n=r.clone(e[0]),o=r.negate(r.create(),e[1]);return i(t,n,o)}},82334:function(t){t.exports=function(t){var e=t[0],n=t[1];return"line3: point: (".concat(e[0].toFixed(7),", ").concat(e[1].toFixed(7),", ").concat(e[2].toFixed(7),") direction: (").concat(n[0].toFixed(7),", ").concat(n[1].toFixed(7),", ").concat(n[2].toFixed(7),")")}},72423:function(t,e,n){var r=n(21177),i=n(22443);t.exports=function(t,e,n){var o=e[0],a=e[1],s=r.add(r.create(),o,a),u=r.transform(r.create(),o,n),c=r.transform(s,s,n),l=r.subtract(c,c,u);return i(t,u,l)}},19005:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}},45048:function(t,e,n){var r=n(58968);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},16926:function(t){t.exports={EPSILON:1e-6}},7919:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},58968:function(t){t.exports=function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}},1533:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}},85789:function(t,e,n){var r=n(63038).default,i=n(76929),o=n(16926).EPSILON;t.exports=function(t,e,n){var a=r(n,3),s=a[0],u=a[1],c=a[2],l=Math.sqrt(s*s+u*u+c*c);if(Math.abs(l)1?e-1:0),i=1;i=o?1:o<1e-10?.5:i/o,t[0]+r*(e[0]-t[0])}},9467:function(t){t.exports=function(t,e,n,r){if(!(t[0]===e[0]&&t[1]===e[1]||n[0]===r[0]&&n[1]===r[1])){var i=(r[1]-n[1])*(e[0]-t[0])-(r[0]-n[0])*(e[1]-t[1]);if(!(Math.abs(i)1||a<0||a>1))return[t[0]+o*(e[0]-t[0]),t[1]+o*(e[1]-t[1])]}}}},79110:function(t){t.exports=function(t,e,n,r,i,o){var a=1/(t*r-e*n),s=i*r-e*o,u=-i*n+t*o;return[s*=a,u*=a]}},52567:function(t){t.exports=function(t,e){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t}},72490:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}},29869:function(t,e,n){t.exports=n(37854)},69923:function(t,e,n){var r=n(37854);t.exports=function(t){return 57.29577951308232*r(t)}},37854:function(t){t.exports=function(t){return Math.atan2(t[1],t[0])}},24396:function(t,e,n){var r=n(50524);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e}},78502:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t}},50524:function(t){t.exports=function(){return[0,0]}},80505:function(t){t.exports=function(t,e,n){return t[0]=0,t[1]=0,t[2]=e[0]*n[1]-e[1]*n[0],t}},26258:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1];return Math.hypot(n,r)}},74500:function(t){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t}},13493:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]}},86312:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]}},95352:function(t,e,n){var r=n(48962);t.exports=function(t,e){return r(t,Math.PI*e/180)}},48962:function(t){t.exports=function(t,e){return t[0]=Math.cos(e),t[1]=Math.sin(e),t}},85406:function(t){t.exports=function(t,e){return t[0]=e,t[1]=e,t}},86212:function(t,e,n){var r=n(50524);t.exports=function(t,e){var n=r();return n[0]=t,n[1]=e,n}},13632:function(t,e,n){t.exports={abs:n(52567),add:n(72490),angle:n(29869),angleDegrees:n(69923),angleRadians:n(37854),clone:n(24396),copy:n(78502),create:n(50524),cross:n(80505),distance:n(26258),divide:n(74500),dot:n(13493),equals:n(86312),fromAngleDegrees:n(95352),fromAngleRadians:n(48962),fromScalar:n(85406),fromValues:n(86212),length:n(55277),lerp:n(79144),max:n(78102),min:n(80649),multiply:n(60459),negate:n(82133),normal:n(88083),normalize:n(21543),rotate:n(58580),scale:n(78105),snap:n(44658),squaredDistance:n(78008),squaredLength:n(53294),subtract:n(4034),toString:n(44466),transform:n(65650)}},55277:function(t){t.exports=function(t){return Math.hypot(t[0],t[1])}},79144:function(t){t.exports=function(t,e,n,r){var i=e[0],o=e[1];return t[0]=i+r*(n[0]-i),t[1]=o+r*(n[1]-o),t}},78102:function(t){t.exports=function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}},80649:function(t){t.exports=function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}},60459:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t}},82133:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t}},88083:function(t,e,n){var r=n(50524),i=n(58580);t.exports=function(t,e){return i(t,e,r(),Math.PI/2)}},21543:function(t){t.exports=function(t,e){var n=e[0],r=e[1],i=n*n+r*r;return i>0&&(i=1/Math.sqrt(i)),t[0]=n*i,t[1]=r*i,t}},58580:function(t){t.exports=function(t,e,n,r){var i=e[0]-n[0],o=e[1]-n[1],a=Math.cos(r),s=Math.sin(r);return t[0]=i*a-o*s+n[0],t[1]=i*s+o*a+n[1],t}},78105:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}},44658:function(t){t.exports=function(t,e,n){return t[0]=Math.round(e[0]/n)*n+0,t[1]=Math.round(e[1]/n)*n+0,t}},78008:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r}},53294:function(t){t.exports=function(t){var e=t[0],n=t[1];return e*e+n*n}},4034:function(t){t.exports=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}},44466:function(t){t.exports=function(t){return"[".concat(t[0].toFixed(7),", ").concat(t[1].toFixed(7),"]")}},65650:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1];return t[0]=n[0]*r+n[4]*i+n[12],t[1]=n[1]*r+n[5]*i+n[13],t}},27044:function(t){t.exports=function(t,e){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t}},59142:function(t){t.exports=function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}},38737:function(t,e,n){var r=n(91370);t.exports=function(t,e){var n=t[0],i=t[1],o=t[2],a=e[0],s=e[1],u=e[2],c=Math.sqrt(n*n+i*i+o*o)*Math.sqrt(a*a+s*s+u*u),l=c&&r(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}},61012:function(t,e,n){var r=n(79484);t.exports=function(t){var e=r();return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},64673:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},79484:function(t){t.exports=function(){return[0,0,0]}},62607:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2];return t[0]=i*u-o*s,t[1]=o*a-r*u,t[2]=r*s-i*a,t}},3799:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.hypot(n,r,i)}},49150:function(t){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}},91370:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},38489:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},20051:function(t){t.exports=function(t,e){return t[0]=e,t[1]=e,t[2]=e,t}},94560:function(t,e,n){var r=n(79484);t.exports=function(t,e,n){var i=r();return i[0]=t,i[1]=e,i[2]=n,i}},63424:function(t){t.exports=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t[0]=e[0],t[1]=e[1],t[2]=n,t}},21177:function(t,e,n){t.exports={abs:n(27044),add:n(59142),angle:n(38737),clone:n(61012),copy:n(64673),create:n(79484),cross:n(62607),distance:n(3799),divide:n(49150),dot:n(91370),equals:n(38489),fromScalar:n(20051),fromValues:n(94560),fromVec2:n(63424),length:n(66550),lerp:n(30383),max:n(8842),min:n(57401),multiply:n(70898),negate:n(80689),normalize:n(96472),orthogonal:n(48518),rotateX:n(87755),rotateY:n(57334),rotateZ:n(43748),scale:n(83977),snap:n(84620),squaredDistance:n(36041),squaredLength:n(9753),subtract:n(78130),toString:n(89202),transform:n(43986)}},66550:function(t){t.exports=function(t){var e=t[0],n=t[1],r=t[2];return Math.hypot(e,n,r)}},30383:function(t){t.exports=function(t,e,n,r){return t[0]=e[0]+r*(n[0]-e[0]),t[1]=e[1]+r*(n[1]-e[1]),t[2]=e[2]+r*(n[2]-e[2]),t}},8842:function(t){t.exports=function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}},57401:function(t){t.exports=function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}},70898:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}},80689:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}},96472:function(t){t.exports=function(t,e){var n=e[0],r=e[1],i=e[2],o=n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=n*o,t[1]=r*o,t[2]=i*o,t}},48518:function(t,e,n){var r=n(27044),i=n(79484),o=n(62607);t.exports=function(t,e){var n=r(i(),e),a=0+(n[0]0){var i=c.toPoints(n[0]);o.copy(r,i[0])}var a=o.clone(r);return n.forEach((function(t){c.toPoints(t).forEach((function(t){o.min(r,r,t),o.max(a,a,t)}))})),r=[r[0],r[1],r[2]],a=[a[0],a[1],a[2]],e=[r,a],l.set(t,e),e};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0){var s=0,c=o.create();a.forEach((function(t){o.add(n,n,o.fromVec2(c,t,0)),s++})),o.scale(n,n,1/s),a.forEach((function(t){r=Math.max(r,i.squaredDistance(n,t))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e},h=function(t){var e=l.get(t);if(void 0!==e)return e;var n=o.create(),r=0,s=a.toSides(t);if(s.length>0){var u=0,c=o.create();s.forEach((function(t){o.add(n,n,o.fromVec2(c,t[0],0)),u++})),o.scale(n,n,1/u),s.forEach((function(t){r=Math.max(r,i.squaredDistance(n,t[0]))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e},d=function(t){var e=l.get(t);if(void 0!==e)return e;var n=o.create(),r=0,i=s.toPolygons(t);if(i.length>0){var a=0;i.forEach((function(t){c.toPoints(t).forEach((function(t){o.add(n,n,t),a++}))})),o.scale(n,n,1/a),i.forEach((function(t){c.toPoints(t).forEach((function(t){r=Math.max(r,o.squaredDistance(n,t))}))})),r=Math.sqrt(r)}return e=[n,r],l.set(t,e),e};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0){for(var c=0;c0&&(n.push(e),!0)}));if(2!==i.length)throw new Error("Assertion failed: fromFakePolygon: not enough points found");var o=i.map((function(e){var n=Math.round(e[0]/t)*t+0,i=Math.round(e[1]/t)*t+0;return r.fromValues(n,i)}));if(r.equals(o[0],o[1]))return null;var a=n[1]-n[0];if(1!==a&&3!==a)throw new Error("Assertion failed: fromFakePolygon: unknown index ordering");return 1===a&&o.reverse(),o}(t,e)})).filter((function(t){return null!==t}));return i.create(n)}},10770:function(t,e,n){t.exports={intersect:n(84299),scission:n(79970),subtract:n(10549),union:n(57798)}},84299:function(t,e,n){var r=n(7388),i=n(84179),o=n(77656),a=n(88955),s=n(94286),u=n(331);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;nr)&&(!(o[0]-c[0]>r)&&(!(u[1]-a[1]>r)&&(!(o[1]-c[1]>r)&&(!(u[2]-a[2]>r)&&!(o[2]-c[2]>r)))))}},43628:function(t,e,n){var r=n(63055).EPS,i=n(87552),o=n(13632),a=n(4932),s=n(82706),u=n(2446),c=u.insertSorted,l=u.fnNumberSort,f=n(70564);t.exports=function(t){if(t.length<2)return t;for(var e=[],n=t.length,u=f.plane(t[0]),h=new a(u),d=[],p=[],v={},g={},m={},y=1/r*10,b=0;b0){for(var A=void 0,E=void 0,C=0;C<_;C++){var k=h.to2D(w.vertices[C]),T=Math.floor(k[1]*y),P=void 0;T in m?P=m[T]:T+1 in m?P=m[T+1]:T-1 in m?P=m[T-1]:(P=k[1],m[T]=k[1]),k=o.fromValues(k[0],P),x.push(k);var M=k[1];(0===C||ME)&&(E=M),M in g||(g[M]={}),g[M][b]=!0}A>=E?(x=[],_=0,S=-1):(A in v||(v[A]=[]),v[A].push(b))}x.reverse(),S=_-S-1,d.push(x),p.push(S)}var O=[];for(var L in g)O.push(L);O.sort(l);for(var N=[],D=[],j=0;j=W&&(H=0),U[H][1]!==F)break;Y=H}var G=X-1;if(G<0&&(G=W-1),U[G][1]===F&&(X=G),Y!==V.leftvertexindex&&Y===X)N.splice(z,1),--z;else{V.leftvertexindex=Y,V.rightvertexindex=X,V.topleft=U[Y],V.topright=U[X];var Z=Y+1;Z>=W&&(Z=0),V.bottomleft=U[Z];var $=X-1;$<0&&($=W-1),V.bottomright=U[$]}}}var K=void 0;for(var J in j>=O.length-1?(N=[],K=null):function(){K=Number(O[j+1]);var t=.5*(F+K),e=v[R];for(var n in e){for(var r=e[n],i=d[r],o=i.length,a=p[r],u=a;;){var l=u+1;if(l>=o&&(l=0),i[l][1]!==F)break;if(l===a)break;u=l}for(var f=a;;){var h=f-1;if(h<0&&(h=o-1),i[h][1]!==F)break;if(h===u)break;f=h}var g=u+1;g>=o&&(g=0);var m=f-1;m<0&&(m=o-1);var y={polygonindex:r,leftvertexindex:u,rightvertexindex:f,topleft:i[u],topright:i[f],bottomleft:i[g],bottomright:i[m]};c(N,y,(function(e,n){var r=s(e.topleft,e.bottomleft,t),i=s(n.topleft,n.bottomleft,t);return r>i?1:r0){var at=I[I.length-1],st=o.distance(ot.topleft,at.topright),ut=o.distance(ot.bottomleft,at.bottomright);st0){for(var ct={},lt={},ft=0;ft=0)&&(_t||wt>=0)&&(ht.outpolygon=pt.outpolygon,ht.leftlinecontinues=xt,ht.rightlinecontinues=_t,ct[dt]=!0);break}}for(var St=0;Str&&At.outpolygon.leftpoints.push(At.bottomleft),At.outpolygon.leftpoints.reverse();var Et=At.outpolygon.rightpoints.concat(At.outpolygon.leftpoints).map((function(t){return h.to3D(t)})),Ct=f.fromPointsAndPlane(Et,u);Ct.vertices.length&&e.push(Ct)}}for(var kt=0;ktr&&Tt.outpolygon.rightpoints.push(Tt.topright))}D=I}return e}},70628:function(t,e,n){var r=n(88955),i=n(70564),o=n(43628),a=1e-13,s=function(t,e){return Math.abs(t[3]-e[3])<15e-8&&(n=t,r=e,Math.abs(n[0]-r[0])<=a&&Math.abs(n[1]-r[1])<=a&&Math.abs(n[2]-r[2])<=a);var n,r};t.exports=function(t){if(t.isRetesselated)return t;var e=r.toPolygons(t),n=[];e.forEach((function(t){var e=n.find((function(e){return s(e[0],i.plane(t))}));e?e[1].push(t):n.push([i.plane(t),[t]])}));var a=[];n.forEach((function(t){var e=t[1],n=o(e);a=a.concat(n)}));var u=r.create(a);return u.isRetesselated=!0,u}},79970:function(t,e,n){var r=n(7388),i=n(88955),o=n(21547);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&function(){var t=new Array(a);t[h]=!0;do{l=0,t.forEach((function(e,n){var r=c[n];if(r.e>0){r.e=-1;for(var i=0;i0);d.indexes=t}()}for(var p=[],v=0;v0&&i.push({node:n.front,polygontreenodes:a});var h=o.length;if(n.back&&h>0)i.push({node:n.back,polygontreenodes:o});else for(var d=0;d0&&t.rootnode.clipPolygons(n.polygontreenodes,e),n.front&&r.push(n.front),n.back&&r.push(n.back),n=r.pop()}while(void 0!==n)}},{key:"addPolygonTreeNodes",value:function(e){var n={node:this,polygontreenodes:e},r=[];do{var i=n.node,o=n.polygontreenodes;if(0!==o.length){if(!i.plane){var s=o[Math.floor(o.length/2)].getPolygon();i.plane=a.plane(s)}for(var u=[],c=[],l=o.length,f=0;f0)i.front||(i.front=new t(i)),l===u.length&&0===c.length?i.front.polygontreenodes=u:r.push({node:i.front,polygontreenodes:u});if(c.length>0)i.back||(i.back=new t(i)),l===c.length&&0===u.length?i.back.polygontreenodes=c:r.push({node:i.back,polygontreenodes:c});n=r.pop()}else n=r.pop()}while(void 0!==n)}},{key:"getParentPlaneNormals",value:function(t,e){e>0&&this.parent&&(t.push(this.parent.plane.normal),this.parent.getParentPlaneNormals(t,e-1))}}]),t}();t.exports=s},62054:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(63055).EPS,a=n(21177),s=n(70564),u=n(23677),c=function(){"use strict";function t(){r(this,t),this.parent=null,this.children=[],this.polygon=null,this.removed=!1}return i(t,[{key:"addPolygons",value:function(t){if(!this.isRootNode())throw new Error("Assertion failed");var e=this;t.forEach((function(t){e.addChild(t)}))}},{key:"remove",value:function(){if(!this.removed){this.removed=!0;var t=this.parent.children,e=t.indexOf(this);if(e<0)throw new Error("Assertion failed");t.splice(e,1),this.parent.recursivelyInvalidatePolygon()}}},{key:"isRemoved",value:function(){return this.removed}},{key:"isRootNode",value:function(){return!this.parent}},{key:"invert",value:function(){if(!this.isRootNode())throw new Error("Assertion failed");this.invertSub()}},{key:"getPolygon",value:function(){if(!this.polygon)throw new Error("Assertion failed");return this.polygon}},{key:"getPolygons",value:function(t){var e,n,r,i,o=[this],a=[o];for(e=0;e0&&a.push(i.children)}},{key:"splitByPlane",value:function(t,e,n,r,i){if(this.children.length){var o,a,s,u,c,l=[this.children];for(o=0;o0?l.push(u.children):u._splitByPlane(t,e,n,r,i)}else this._splitByPlane(t,e,n,r,i)}},{key:"_splitByPlane",value:function(t,e,n,r,i){var c=this.polygon;if(c){var l=s.measureBoundingSphere(c),f=l[1]+o,h=l[0],d=a.dot(t,h)-t[3];if(d>f)r.push(this);else if(d<-f)i.push(this);else{var p=u(t,c);switch(p.type){case 0:e.push(this);break;case 1:n.push(this);break;case 2:r.push(this);break;case 3:i.push(this);break;case 4:if(p.front){var v=this.addChild(p.front);r.push(v)}if(p.back){var g=this.addChild(p.back);i.push(g)}}}}}},{key:"addChild",value:function(e){var n=new t;return n.parent=this,n.polygon=e,this.children.push(n),n}},{key:"invertSub",value:function(){var t,e,n,r,i=[this],o=[i];for(t=0;t0&&o.push(r.children)}},{key:"recursivelyInvalidatePolygon",value:function(){for(var t=this;t.polygon;)t.polygon=null,t.parent&&(t=t.parent)}},{key:"clear",value:function(){for(var t=[this],e=[t],n=0;n0&&e.push(o.children),o.children=[]}}},{key:"toString",value:function(){var t,e,n,r,i="",o=[this],a=[o];for(t=0;t0&&a.push(r.children)}return i}}]),t}();t.exports=c},53008:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(64326),a=n(62054),s=function(){"use strict";function t(e){r(this,t),this.polygonTree=new a,this.rootnode=new o(null),e&&this.addPolygons(e)}return i(t,[{key:"invert",value:function(){this.polygonTree.invert(),this.rootnode.invert()}},{key:"clipTo",value:function(t,e){e=!!e,this.rootnode.clipTo(t,e)}},{key:"allPolygons",value:function(){var t=[];return this.polygonTree.getPolygons(t),t}},{key:"addPolygons",value:function(t){for(var e=new Array(t.length),n=0;n1&&(o=1),o<0&&(o=0),r.scale(i,i,o),r.add(i,e,i),i}},23677:function(t,e,n){var r=n(63055).EPS,i=n(5322),o=n(21177),a=n(70564),s=n(97567);t.exports=function(t,e){var n={type:null,front:null,back:null},u=e.vertices,c=u.length,l=a.plane(e);if(i.equals(l,t))n.type=0;else{for(var f=!1,h=!1,d=[],p=-r,v=0;vr&&(f=!0),g=c&&(S=0);var A=d[S];if(w===A)w?b.push(_):y.push(_);else{var E=_,C=u[S],k=s(t,E,C);w?(b.push(_),b.push(k),y.push(k)):(y.push(_),y.push(k),b.push(k))}w=A}var T=r*r;if(b.length>=3)for(var P=b[b.length-1],M=0;M=3)for(var L=y[y.length-1],N=0;N=3&&(n.front=a.fromPointsAndPlane(y,l)),b.length>=3&&(n.back=a.fromPointsAndPlane(b,l))}else n.type=3;else n.type=2;else{var j=o.dot(t,l);n.type=j>=0?0:1}}return n}},57798:function(t,e,n){var r=n(7388),i=n(84179),o=n(77656),a=n(88955),s=n(74066),u=n(19615);t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n1?e-1:0),l=1;l0)for(var d=Math.PI/l,p=s[s.length-1],v=o.angle(o.subtract(o.create(),u[u.length-1],p)),g=s[0],m=o.angle(o.subtract(o.create(),c[0],g)),y=1;y=0&&o.distance(F,T)=0){O.push(F),L.push(B);var V=[P,B,F,T],q=u.fromPoints(V);N.push(q)}T=F,P=B}}L.reverse(),N.push(u.fromPoints(O)),N.push(u.fromPoints(L));var U=s.create(N);y=f(y,U)})),b.forEach((function(t){for(var e=t[0],n=t[1],r=n[0],i=null,a=0,s=1;s.05&&h>a&&(a=h,i=u)}i||(i=o.orthogonal(x,r));var d=o.cross(x,r,i);o.normalize(d,d);var p=o.cross(_,d,r),v=c({center:[e[0],e[1],e[2]],radius:g,segments:m,axes:[r,d,p]});y=f(y,v)})),l(y)}},82355:function(t,e,n){var r=n(82530),i=n(21177),o=n(88955),a=n(70564);t.exports=function(t,e){i.dot(a.plane(e),t)>0&&(e=a.invert(e));for(var n=[e],s=a.transform(r.fromTranslation(r.create(),t),e),u=e.vertices.length,c=0;c1?e-1:0),u=1;u0&&u>=0||h<0&&u<0;u=Math.abs(u);for(var p=null,v=[],g=[],m=a.create(),y=e.length,b=0;b0&&(e-=Math.PI)>0&&(e-=Math.PI),0!==e){for(var n=e/(D=Math.floor(f*(Math.abs(e)/(2*Math.PI)))),r=a.angle(a.subtract(j,t.s0[1],t.c)),i=[],o=1;o0){var l=t.s0[1],h=v.findIndex((function(t){return a.equals(l,t)}));h=(h+1)%v.length,v.splice.apply(v,[h,0].concat(i))}}else{var p=t.s1[0],g=v.findIndex((function(t){return a.equals(p,t)}));v.splice(g,1)}}))}return v}},77611:function(t,e,n){var r=n(77656),i=n(52926),o=n(68544);t.exports=function(t,e){var n=Object.assign({},{delta:1,corners:"edge",segments:0},t),a=n.delta,s=n.corners,u=n.segments;if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');var c=r.toOutlines(e),l=c.map((function(e){var n=c.reduce((function(t,n){return t+i.arePointsInside(e,i.create(n))}),0);return o(t={delta:n%2===0?a:-a,corners:s,closed:!0,segments:u},e)})).reduce((function(t,e){return t.concat(r.toSides(r.fromPoints(e)))}),[]);return r.create(l)}},83002:function(t,e,n){var r=n(36607),i=n(68544);t.exports=function(t,e){var n={delta:1,corners:"edge",closed:e.isClosed,segments:16},o=Object.assign({},n,t),a=o.delta,s=o.corners,u=o.closed,c=o.segments;if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');var l=i(t={delta:a,corners:s,closed:u,segments:c},r.toPoints(e));return r.fromPoints({closed:u},l)}},2629:function(t,e,n){var r=n(82530),i=n(77656),o=n(88955),a=n(70564),s=n(79593),u=n(1161),c=function(t,e,n){var o=null;return i.isA(n)&&(o=s.fromSides(i.toSides(n))),a.isA(n)&&(o=s.fromPoints(a.toPoints(n))),0===t||1===t?s.transform(r.fromTranslation(r.create(),[0,0,t]),o):null};t.exports=function(t,e){var n={numberOfSlices:2,capStart:!0,capEnd:!0,close:!1,callback:c},r=Object.assign({},n,t),i=r.numberOfSlices,a=r.capStart,l=r.capEnd,f=r.close,h=r.callback;if(i<2)throw new Error("numberOfSlices must be 2 or more");for(var d=i-1,p=null,v=null,g=null,m=[],y=0;y1?e-1:0),a=1;a1?e-1:0),u=1;u2*Math.PI?l%(2*Math.PI):l,f=Math.abs(f)>2*Math.PI?f%(2*Math.PI):f;var d=l+f;if((d=Math.abs(d)>2*Math.PI?d%(2*Math.PI):d)c*g&&c++}var m=o.toSides(e);if(0===m.length)throw new Error("the given geometry cannot be empty");var y=m.filter((function(t){return t[0][0]<0})),b=m.filter((function(t){return t[0][0]>=0}));y.length>0&&b.length>0&&"cap"===h&&(y.length>b.length?(m=m.map((function(t){var e=t[0],n=t[1];return[e=[Math.min(e[0],0),e[1]],n=[Math.min(n[0],0),n[1]]]})),e=o.reverse(o.create(m)),e=i(e)):b.length>=y.length&&(m=m.map((function(t){var e=t[0],n=t[1];return[e=[Math.max(e[0],0),e[1]],n=[Math.max(n[0],0),n[1]]]})),e=o.create(m)));var w=v/c,x=Math.abs(v)<2*Math.PI,_=a.fromSides(o.toSides(e));a.reverse(_,_);var S=r.create();return s(t={numberOfSlices:c+1,capStart:x,capEnd:x,close:!x,callback:function(t,e,n){var i=w*e+l;return r.multiply(S,r.fromZRotation(S,i),r.fromXRotation(r.create(),Math.PI/2)),a.transform(S,n)}},_)}},1161:function(t,e,n){var r=n(63055).EPS,i=n(21177),o=n(70564),a=n(79593),s=function t(e,n){return e===n?e:ec&&h.push(r);var a=o.fromPoints([t[0],n[1],n[0]]),s=o.measureArea(a);Number.isFinite(s)&&s>c&&h.push(a)})),h}},45792:function(t,e,n){t.exports={extrudeFromSlices:n(2629),extrudeLinear:n(36986),extrudeRectangular:n(34926),extrudeRotate:n(61497),project:n(93070),slice:n(79593)}},93070:function(t,e,n){var r=n(7388),i=n(67783),o=n(5322),a=n(82530),s=n(77656),u=n(88955),c=n(70564),l=n(74564),f=n(74066),h=n(19615),d=function(t,e){var n=o.fromNormalAndPoint(o.create(),t.axis,t.origin);if(Number.isNaN(n[0])||Number.isNaN(n[1])||Number.isNaN(n[2])||Number.isNaN(n[3]))throw new Error("project: invalid axis or origin");var r=l(e),d=r*r*Math.sqrt(3)/4;if(0===r)return s.create();for(var p=u.toPolygons(e),v=[],g=0;g1?e-1:0),i=1;ia&&(n=t,a=e)}));var s=e.find((function(t){return i.equals(t[1],n[0])}));return r.fromPoints(r.create(),s[0],n[0],n[1])}},46706:function(t,e,n){var r=n(69956),i=n(21177);t.exports=function(){var t,e;return 1===arguments.length?(t=r(),e=arguments.length<=0?void 0:arguments[0]):(t=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1]),t.edges=e.edges.map((function(t){return[i.clone(t[0]),i.clone(t[1])]})),t}},69956:function(t){t.exports=function(t){return t||(t=[]),{edges:t}}},3859:function(t,e,n){var r=n(21177);t.exports=function(t,e){var n=t.edges,i=e.edges;return n.length===i.length&&n.reduce((function(t,e,n){var o=i[n],a=r.squaredDistance(e[0],o[0]);return t&&al&&(c=t,l=e)}));var f=r.subtract(r.create(),c[0],u),h=r.cross(r.create(),e,f),d=r.add(r.create(),u,f);r.add(d,d,f);var p=r.add(r.create(),u,h);r.add(p,p,h);var v=r.subtract(r.create(),u,f);r.subtract(v,v,f);var g=r.subtract(r.create(),u,h);r.subtract(g,g,h);var m=o.fromPoints([d,p,v,g]),y=i.create([m]),b=n.map((function(t){return function(t,e){var n=[r.subtract(r.create(),e[0],t),r.subtract(r.create(),e[1],t),r.add(r.create(),e[1],t),r.add(r.create(),e[0],t)];return o.fromPoints(n)}(e,t)})),w=i.create(b),x=a(y,w),_=i.toPolygons(x);return _=_.filter((function(t){var n=r.angle(e,o.plane(t));return Math.abs(n)r.angle?1:n.distancer.distance?1:0;var n,r}));for(var c=new Array(t.length+1),l=2,f=0;f0;)e=e.next,t-=1;for(;t<0;)e=e.prev,t+=1;return e}},{key:"computeNormal",value:function(){var t=this.edge,e=t.next,n=e.next,r=h([],e.head().point,t.head().point),i=[],u=[];for(this.nVertices=2,this.normal=[0,0,0];n!==t;)a(u,r),h(r,n.head().point,t.head().point),o(this.normal,this.normal,s(i,u,r)),n=n.next,this.nVertices+=1;this.area=c(this.normal),this.normal=f(this.normal,this.normal,1/this.area)}},{key:"computeNormalMinArea",value:function(t){if(this.computeNormal(),this.arean&&(e=r,n=i),r=r.next}while(r!==this.edge);var a=e.tail().point,s=e.head().point,c=h([],s,a),d=Math.sqrt(n);f(c,c,1/d);var p=u(this.normal,c);f(c,c,-p),o(this.normal,this.normal,c),l(this.normal,this.normal)}}},{key:"computeCentroid",value:function(){this.centroid=[0,0,0];var t=this.edge;do{o(this.centroid,this.centroid,t.head().point),t=t.next}while(t!==this.edge);f(this.centroid,this.centroid,1/this.nVertices)}},{key:"computeNormalAndCentroid",value:function(t){"undefined"!==typeof t?this.computeNormalMinArea(t):this.computeNormal(),this.computeCentroid(),this.offset=u(this.normal,this.centroid)}},{key:"distanceToPlane",value:function(t){return u(this.normal,t)-this.offset}},{key:"connectHalfEdges",value:function(t,e){var n;if(t.opposite.face===e.opposite.face){var r,i=e.opposite.face;t===this.edge&&(this.edge=e),3===i.nVertices?(r=e.opposite.prev.opposite,i.mark=2,n=i):(r=e.opposite.next,i.edge===r.prev&&(i.edge=r),r.prev=r.prev.prev,r.prev.next=r),e.prev=t.prev,e.prev.next=e,e.setOpposite(r),i.computeNormalAndCentroid()}else t.next=e,e.prev=t;return n}},{key:"mergeAdjacentFaces",value:function(t,e){var n=t.opposite,r=n.face;e.push(r),r.mark=2;for(var i,o,a=t.prev,s=t.next,u=n.prev,c=n.next;a.opposite.face===r;)a=a.prev,c=c.next;for(;s.opposite.face===r;)s=s.next,u=u.prev;for(i=c;i!==u.next;i=i.next)i.face=this;return this.edge=s,(o=this.connectHalfEdges(u,s))&&e.push(o),(o=this.connectHalfEdges(a,c))&&e.push(o),this.computeNormalAndCentroid(),e}},{key:"collectIndices",value:function(){var t=[],e=this.edge;do{t.push(e.head().index),e=e.next}while(e!==this.edge);return t}}],[{key:"createTriangle",value:function(e,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=new t,a=new d(e,o),s=new d(n,o),u=new d(r,o);return a.next=u.prev=s,s.next=a.prev=u,u.next=s.prev=a,o.edge=a,o.computeNormalAndCentroid(i),o}}]),t}();t.exports={VISIBLE:0,NON_CONVEX:1,DELETED:2,Face:p}},17914:function(t,e,n){var r=n(34575).default,i=n(93913).default,o=n(3799),a=n(36041),s=function(){"use strict";function t(e,n){r(this,t),this.vertex=e,this.face=n,this.next=null,this.prev=null,this.opposite=null}return i(t,[{key:"head",value:function(){return this.vertex}},{key:"tail",value:function(){return this.prev?this.prev.vertex:null}},{key:"length",value:function(){return this.tail()?o(this.tail().point,this.head().point):-1}},{key:"lengthSquared",value:function(){return this.tail()?a(this.tail().point,this.head().point):-1}},{key:"setOpposite",value:function(t){this.opposite=t,t.opposite=this}}]),t}();t.exports=s},28879:function(t,e,n){var r=n(63038).default,i=n(34575).default,o=n(93913).default,a=n(91370),s=n(28701),u=n(47582),c=n(99080),l=n(36628),f=n(22373),h=f.Face,d=f.VISIBLE,p=f.NON_CONVEX,v=f.DELETED,g=function(){"use strict";function t(e){if(i(this,t),!Array.isArray(e))throw TypeError("input is not a valid array");if(e.length<4)throw Error("cannot build a simplex out of <4 points");this.tolerance=-1,this.nFaces=0,this.nPoints=e.length,this.faces=[],this.newFaces=[],this.claimed=new c,this.unclaimed=new c,this.vertices=[];for(var n=0;nthis.tolerance?this.addVertexToFace(i,e):this.unclaimed.add(i)}else this.unclaimed.addAll(n)}},{key:"resolveUnclaimedPoints",value:function(t){for(var e=this.unclaimed.first(),n=e;n;n=e){e=n.next;for(var r=this.tolerance,i=void 0,o=0;or&&(r=s,i=a),r>1e3*this.tolerance)break}}i&&this.addVertexToFace(n,i)}}},{key:"computeExtremes",value:function(){var t,e,n=[],r=[],i=[],o=[];for(t=0;t<3;t+=1)i[t]=o[t]=this.vertices[0];for(t=0;t<3;t+=1)n[t]=r[t]=this.vertices[0].point[t];for(t=1;tr[e]&&(r[e]=s[e],o[e]=a)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(n[0]),Math.abs(r[0]))+Math.max(Math.abs(n[1]),Math.abs(r[1]))+Math.max(Math.abs(n[2]),Math.abs(r[2]))),[i,o]}},{key:"createInitialSimplex",value:function(){var t,e,n,i,o=this.vertices,c=this.computeExtremes(),l=r(c,2),f=l[0],d=l[1],p=0,v=0;for(n=0;n<3;n+=1){var g=d[n].point[n]-f[n].point[n];g>p&&(p=g,v=n)}var m=f[v],y=d[v];for(p=0,n=0;np&&(p=w,t=b)}}var x=u([],m.point,y.point,t.point),_=a(m.point,x);for(p=-1,n=0;np&&(p=A,e=S)}}var E=[];if(a(e.point,x)-_<0)for(E.push(h.createTriangle(m,y,t),h.createTriangle(e,y,m),h.createTriangle(e,t,y),h.createTriangle(e,m,t)),n=0;n<3;n+=1){var C=(n+1)%3;E[n+1].getEdge(2).setOpposite(E[0].getEdge(C)),E[n+1].getEdge(1).setOpposite(E[C+1].getEdge(0))}else for(E.push(h.createTriangle(m,t,y),h.createTriangle(e,m,y),h.createTriangle(e,y,t),h.createTriangle(e,t,m)),n=0;n<3;n+=1){var k=(n+1)%3;E[n+1].getEdge(2).setOpposite(E[0].getEdge((3-n)%3)),E[n+1].getEdge(0).setOpposite(E[k+1].getEdge(1))}for(n=0;n<4;n+=1)this.faces.push(E[n]);for(n=0;np&&(p=M,P=E[i])}P&&this.addVertexToFace(T,P)}}}},{key:"reindexFaceAndVertices",value:function(){for(var t=[],e=0;en&&(n=i,t=e)}return t}}},{key:"computeHorizon",value:function(t,e,n,r){var i;this.deleteFaceVertices(n),n.mark=v,i=e?e.next:e=n.getEdge(0);do{var o=i.opposite,a=o.face;a.mark===d&&(a.distanceToPlane(t)>this.tolerance?this.computeHorizon(t,o,a,r):r.push(i)),i=i.next}while(i!==e)}},{key:"addAdjoiningFace",value:function(t,e){var n=h.createTriangle(t,e.tail(),e.head());return this.faces.push(n),n.getEdge(-1).setOpposite(e.opposite),n.getEdge(0)}},{key:"addNewFaces",value:function(t,e){var n,r;this.newFaces=[];for(var i=0;i=t.nVertices)throw Error("merge recursion limit exceeded");var o=n.opposite.face,a=!1;if(2===e?(this.oppositeFaceDistance(n)>-this.tolerance||this.oppositeFaceDistance(n.opposite)>-this.tolerance)&&(a=!0):t.area>o.area?this.oppositeFaceDistance(n)>-this.tolerance?a=!0:this.oppositeFaceDistance(n.opposite)>-this.tolerance&&(r=!1):this.oppositeFaceDistance(n.opposite)>-this.tolerance?a=!0:this.oppositeFaceDistance(n)>-this.tolerance&&(r=!1),a){for(var s=t.mergeAdjacentFaces(n,[]),u=0;u1&&void 0!==arguments[1]?arguments[1]:{},n=new r(t);return n.build(),n.collectFaces(e.skipTriangulation)}},28701:function(t,e,n){var r=n(62607),i=n(78130),o=n(9753);t.exports=function(t,e,n){return Math.sqrt(function(t,e,n){var a=[],s=[];i(a,n,e),i(s,t,e);var u=o(r([],s,a)),c=o(a);if(0===c)throw Error("a and b are the same point");return u/c}(t,e,n))}},89450:function(t,e,n){var r=n(21177),i=n(5678),o=n(70564),a=function(t,e,n){var i=t.findIndex((function(t){if(t){if(r.equals(t[0],e[0])&&r.equals(t[1],e[1]))return!0;if(r.equals(t[0],e[1])&&r.equals(t[1],e[0]))return!0}return!1}));i>=0?(e=t[i]).polygons.push(n):(e.polygons=[n],t.push(e))},s=function(t,e){var n=t.findIndex((function(t){if(t){if(r.equals(t[0],e[0])&&r.equals(t[1],e[1]))return!0;if(r.equals(t[0],e[1])&&r.equals(t[1],e[0]))return!0}return!1}));n>=0&&(t[n].polygons=[],t[n]=null)},u=function(t,e){var n=e.vertices,r=n.length,i=[n[r-1],n[0]];a(t,i,e);for(var o=0;o1?e-1:0),i=1;i=3)for(var p=h.vertices[0],v=c(p),g=0;g0&&function(){var n,h={},d={},p={},v=i(e);try{var g=function(){var t=r(n.value,2),e=t[0],i=t[1];p[e]=!0,i.forEach((function(t){var n=c(t.vertex0),r=c(t.vertex1);n in h?h[n].push(e):h[n]=[e],r in d?d[r].push(e):d[r]=[e]}))};for(v.s();!(n=v.n()).done;)g()}catch(tt){v.e(tt)}finally{v.f()}for(var m=t.slice(0);0!==e.size;){var y,b=i(e.keys());try{for(b.s();!(y=b.n()).done;){var w=y.value;p[w]=!0}}catch(tt){b.e(tt)}finally{b.f()}for(var x=!1;;){var _=Object.keys(p);if(0===_.length)break;var S=_[0],A=!0;if(e.has(S)){var E=e.get(S);u;for(var C=E[0],k=0;k<2;k++){var T=0===k?C.vertex0:C.vertex1,P=0===k?C.vertex1:C.vertex0,M=c(T),O=c(P),L=[];0===k?M in d&&(L=d[M]):M in h&&(L=h[M]);for(var N=0;N0&&U<1){var W=a.scale(a.create(),q,U);if(a.add(W,W,B),a.squaredDistance(W,z)0;)for(var f=r.shift(),h=o(f),d=0;d=0&&g[1]>=0){var m=v.next,y=p.next;p.prev.next=v.next,p.next.prev=v.prev,v.prev.next=p.next,v.next.prev=p.prev,p.v1=null,p.v2=null,p.next=null,p.prev=null,s(l,v),v.v1=null,v.v2=null,v.next=null,v.prev=null;var b=function(t,e,n){var r={v1:n.v1,v2:e.v2,next:e.next,prev:n.prev};n.prev.next=r,e.next.prev=r,s(t,e),e.v1=null,e.v2=null,e.next=null,e.prev=null,s(t,n),n.v1=null,n.v2=null,n.next=null,n.prev=null};0===g[0]&&b(l,m,m.prev),0===g[1]&&b(l,y,y.prev)}}else p.next&&a(l,p)}var w=[];return l.forEach((function(t){var e=function(t){for(var e,n=[];t.next;){var r=t.next;n.push(t.v1),t.v1=null,t.v2=null,t.next=null,t.prev=null,t=r}return n.length>0&&(e=i.fromPoints(n)),e}(t);e&&w.push(e)})),w},h=1e-13,d=function(t,e){return Math.abs(t[3]-e[3])<15e-8&&(n=t,r=e,Math.abs(n[0]-r[0])<=h&&Math.abs(n[1]-r[1])<=h&&Math.abs(n[2]-r[2])<=h);var n,r};t.exports=function(t,e){var n=[];e.forEach((function(t){var e=n.find((function(e){return d(e[0],i.plane(t))}));e?e[1].push(t):n.push([i.plane(t),[t]])}));var r=[];return n.forEach((function(t){var e=t[1],n=f(0,e);r=r.concat(n)})),r}},1225:function(t,e,n){var r=n(89450),i=r.polygonsToEdges,o=r.edgesToPolygons,a=r.cullOpenEdges,s=r.splitEdge,u=r.removePolygons,c=r.addPolygon;t.exports=function(t,e){var n=i(e),r=a(n);if(0===r.length)return e;for(var l=!0;l;){for(var f=0,h=0;h0}return r=r.filter((function(t){return t&&t.polygons&&1===t.polygons.length})),r.length>0&&console.warn("Repair of all T-junctions failed:",r.length),e=o(n)}},83577:function(t,e,n){var r=n(7388),i=n(13632),o=n(77656),a=n(88955),s=n(36607),u=n(74564),c=n(6749),l=function(t){var e=u(t),n=s.toPoints(t).map((function(t){return i.snap(i.create(),t,e)}));return s.create(n)},f=function(t){var e=u(t),n=o.toSides(t).map((function(t){return[i.snap(i.create(),t[0],e),i.snap(i.create(),t[1],e)]}));return n=n.filter((function(t){return!i.equals(t[0],t[1])})),o.create(n)},h=function(t){var e=u(t),n=a.toPolygons(t),r=c(e,n);return a.create(r)};t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;nt}(o,t)})),n}},80968:function(t,e,n){var r=n(21177),i=n(70564);t.exports=function(t,e){var n=[];return e.forEach((function(e){!function(t,e,n){var o=e.vertices.length;if(o>3){if(o>4){var a=[0,0,0];e.vertices.forEach((function(t){return r.add(a,a,t)})),r.snap(a,r.divide(a,a,[o,o,o]),t);for(var s=0;s3)throw new Error("align(): modes must be an array of length <= 3");if(t.modes=i(t.modes,"none",3),3!==t.modes.filter((function(t){return["center","max","min","none"].includes(t)})).length)throw new Error('align(): all modes must be one of "center", "max" or "min"');if(!Array.isArray(t.relativeTo)||t.relativeTo.length>3)throw new Error("align(): relativeTo must be an array of length <= 3");if(t.relativeTo=i(t.relativeTo,0,3),3!==t.relativeTo.filter((function(t){return Number.isFinite(t)||null==t})).length)throw new Error("align(): all relativeTo values must be a number, or null.");if("boolean"!==typeof t.grouped)throw new Error("align(): grouped must be a boolean value.");return t},u=function(t,e,n){for(var r=0;r<3;r++)null==t[r]&&("center"===e[r]?t[r]=(n[0][r]+n[1][r])/2:"max"===e[r]?t[r]=n[1][r]:"min"===e[r]&&(t[r]=n[0][r]));return t},c=function(t,e,n){for(var r=o(t),i=[0,0,0],s=0;s<3;s++)"center"===e[s]?i[s]=n[s]-(r[0][s]+r[1][s])/2:"max"===e[s]?i[s]=n[s]-r[1][s]:"min"===e[s]&&(i[s]=n[s]-r[0][s]);return a(i,t)};t.exports=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i1?e-1:0),s=1;s1?e-1:0),c=1;c1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),s=1;s1?e-1:0),u=1;u1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;rh&&(v=h+(2*Math.PI-f));var g,m=Math.acos((l*l+l*l-r*r)/(2*l*l)),y=i.clone(a),b=[];if(v.25&&(x=.25);for(var _=d?w+2:w,S=0;S<=_;S++){var A=S;d&&((A=(S-1)*(w-2*x)/w+x)<0&&(A=0),A>w&&(A=w));var E=f+A*(v/w);g=i.fromAngleRadians(i.create(),E),i.scale(g,g,l),i.add(g,g,y),b.push(g)}}return o.fromPoints({close:!1},b)}},97167:function(t,e,n){var r=n(97916),i=n(52528).isGT;t.exports=function(t){var e={center:[0,0],radius:1,startAngle:0,endAngle:2*Math.PI,segments:32},n=Object.assign({},e,t),o=n.center,a=n.radius,s=n.startAngle,u=n.endAngle,c=n.segments;if(!i(a,0))throw new Error("radius must be greater than zero");return r({center:o,radius:a=[a,a],startAngle:s,endAngle:u,segments:c})}},52528:function(t){t.exports={isNumberArray:function(t,e){return!!(Array.isArray(t)&&t.length>=e)&&t.every((function(t){return Number.isFinite(t)}))},isGT:function(t,e){return Number.isFinite(t)&&t>e},isGTE:function(t,e){return Number.isFinite(t)&&t>=e}}},1092:function(t,e,n){var r=n(35552),i=n(52528).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],size:2},t),n=e.center,o=e.size;if(!i(o,0))throw new Error("size must be greater than zero");return r({center:n,size:o=[o,o,o]})}},35552:function(t,e,n){var r=n(88955),i=n(70564),o=n(52528).isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],size:[2,2,2]},t),n=e.center,a=e.size;if(!o(n,3))throw new Error("center must be an array of X, Y and Z values");if(!o(a,3))throw new Error("size must be an array of width, depth and height values");if(!a.every((function(t){return t>0})))throw new Error("size values must be greater than zero");return r.create([[[0,4,6,2],[-1,0,0]],[[1,3,7,5],[1,0,0]],[[0,1,5,4],[0,-1,0]],[[2,6,7,3],[0,1,0]],[[0,2,3,1],[0,0,-1]],[[4,5,7,6],[0,0,1]]].map((function(t){var e=t[0].map((function(t){return[n[0]+a[0]/2*(2*!!(1&t)-1),n[1]+a[1]/2*(2*!!(2&t)-1),n[2]+a[2]/2*(2*!!(4&t)-1)]}));return i.fromPoints(e)})))}},8690:function(t,e,n){var r=n(87622),i=n(52528).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],height:2,radius:1,segments:32},t),n=e.center,o=e.height,a=e.radius,s=e.segments;if(!i(a,0))throw new Error("radius must be greater than zero");return r({center:n,height:o,startRadius:[a,a],endRadius:[a,a],segments:s})}},87622:function(t,e,n){var r=n(63055).EPS,i=n(21177),o=n(88955),a=n(70564),s=n(52528),u=s.isGT,c=s.isGTE,l=s.isNumberArray;t.exports=function(t){var e={center:[0,0,0],height:2,startRadius:[1,1],startAngle:0,endRadius:[1,1],endAngle:2*Math.PI,segments:32},n=Object.assign({},e,t),s=n.center,f=n.height,h=n.startRadius,d=n.startAngle,p=n.endRadius,v=n.endAngle,g=n.segments;if(!l(s,3))throw new Error("center must be an array of X, Y and Z values");if(!u(f,0))throw new Error("height must be greater then zero");if(!l(h,2))throw new Error("startRadius must be an array of X and Y values");if(!h.every((function(t){return t>0})))throw new Error("startRadius values must be greater than zero");if(!l(p,2))throw new Error("endRadius must be an array of X and Y values");if(!p.every((function(t){return t>0})))throw new Error("endRadius values must be greater than zero");if(!c(d,0))throw new Error("startAngle must be positive");if(!c(v,0))throw new Error("endAngle must be positive");if(!c(g,4))throw new Error("segments must be four or more");d%=2*Math.PI,v%=2*Math.PI;var m=2*Math.PI;dv&&(m=v+(2*Math.PI-d));var y=Math.min(h[0],h[1],p[0],p[1]),b=Math.acos((y*y+y*y-r*r)/(2*y*y));if(m0&&(O.push(M(x,P(0,D,h),P(0,N,h))),O.push(M(P(0,N,h),P(0,D,h),P(1,N,p)))),p[0]>0&&(O.push(M(_,P(1,N,p),P(1,D,p))),O.push(M(P(1,N,p),P(0,D,h),P(1,D,p)))))}return m<2*Math.PI&&(O.push(M(x,P(0,0,h),_)),O.push(M(P(0,0,h),P(1,0,p),_)),O.push(M(x,_,P(0,1,h))),O.push(M(P(0,1,h),_,P(1,1,p)))),o.create(O)}},97916:function(t,e,n){var r=n(63055).EPS,i=n(13632),o=n(77656),a=n(52528),s=a.isGTE,u=a.isNumberArray;t.exports=function(t){var e={center:[0,0],radius:[1,1],startAngle:0,endAngle:2*Math.PI,segments:32},n=Object.assign({},e,t),a=n.center,c=n.radius,l=n.startAngle,f=n.endAngle,h=n.segments;if(!u(a,2))throw new Error("center must be an array of X and Y values");if(!u(c,2))throw new Error("radius must be an array of X and Y values");if(!c.every((function(t){return t>0})))throw new Error("radius values must be greater than zero");if(!s(l,0))throw new Error("startAngle must be positive");if(!s(f,0))throw new Error("endAngle must be positive");if(!s(h,3))throw new Error("segments must be three or more");l%=2*Math.PI,f%=2*Math.PI;var d=2*Math.PI;lf&&(d=f+(2*Math.PI-l));var p=Math.min(c[0],c[1]);if(d0})))throw new Error("radius values must be greater than zero");if(!s(c,4))throw new Error("segments must be four or more");for(var f,h=r.scale(r.create(),r.normalize(r.create(),l[0]),a[0]),d=r.scale(r.create(),r.normalize(r.create(),l[1]),a[1]),p=r.scale(r.create(),r.normalize(r.create(),l[2]),a[2]),v=Math.round(c/4),g=[],m=r.create(),y=r.create(),b=0;b<=c;b++){var w=2*Math.PI*b/c,x=r.add(r.create(),r.scale(m,h,Math.cos(w)),r.scale(y,d,Math.sin(w)));if(b>0)for(var _=void 0,S=void 0,A=0;A<=v;A++){var E=.5*Math.PI*A/v,C=Math.cos(E),k=Math.sin(E);if(A>0){var T=[],P=void 0;P=r.subtract(r.create(),r.scale(m,f,_),r.scale(y,p,S)),T.push(r.add(P,P,n)),P=r.subtract(r.create(),r.scale(m,x,_),r.scale(y,p,S)),T.push(r.add(P,P,n)),A0})))throw new Error("size values must be greater than zero");var s=[a[0]/2,a[1]/2],u=[s[0],-s[1]],c=[r.subtract(r.create(),n,s),r.add(r.create(),n,u),r.add(r.create(),n,s),r.subtract(r.create(),n,u)];return i.fromPoints(c)}},31300:function(t,e,n){var r=n(63055).EPS,i=n(13632),o=n(21177),a=n(88955),s=n(70564),u=n(52528),c=u.isGT,l=u.isGTE,f=u.isNumberArray,h=function(t,e,n,a,s,u){var c=Math.PI/2*s/a,l=Math.cos(c),f=Math.sin(c),h=a-s,d=n*l,p=e[2]-(n-n*f);u||(p=n-n*f-e[2]),d=d>r?d:0;for(var v=o.add(o.create(),t,[e[0]-n,e[1]-n,p]),g=o.add(o.create(),t,[n-e[0],e[1]-n,p]),m=o.add(o.create(),t,[n-e[0],n-e[1],p]),y=o.add(o.create(),t,[e[0]-n,n-e[1],p]),b=[],w=[],x=[],_=[],S=0;S<=h;S++){var A=h>0?Math.PI/2*S/h:0,E=i.fromAngleRadians(i.create(),A);i.scale(E,E,d);var C=o.fromVec2(o.create(),E);b.push(o.add(o.create(),v,C)),o.rotateZ(C,C,[0,0,0],Math.PI/2),w.push(o.add(o.create(),g,C)),o.rotateZ(C,C,[0,0,0],Math.PI/2),x.push(o.add(o.create(),m,C)),o.rotateZ(C,C,[0,0,0],Math.PI/2),_.push(o.add(o.create(),y,C))}return u?[b,w,x,_]:(b.reverse(),w.reverse(),x.reverse(),_.reverse(),[_,x,w,b])},d=function(t,e){for(var n=[],r=0;r0})))throw new Error("size values must be greater than zero");if(!c(o,0))throw new Error("roundRadius must be greater than zero");if(!l(u,4))throw new Error("segments must be four or more");if(o>(i=i.map((function(t){return t/2})))[0]-r||o>i[1]-r||o>i[2]-r)throw new Error("roundRadius must be smaller then the radius of all dimensions");u=Math.floor(u/4);for(var g=null,m=null,y=[],b=0;b<=u;b++){var w=h(n,i,o,u,b,!0),x=h(n,i,o,u,b,!1);if(0===b&&(y=y.concat(v(x,w))),g&&(y=y.concat(d(g,w),p(g,w))),m&&(y=y.concat(d(m,x),p(m,x))),b===u){var _=w.map((function(t){return t[0]}));y.push(s.fromPoints(_)),_=x.map((function(t){return t[0]})),y.push(s.fromPoints(_))}g=w,m=x}return a.create(y)}},39686:function(t,e,n){var r=n(63055).EPS,i=n(21177),o=n(88955),a=n(70564),s=n(52528),u=s.isGT,c=s.isGTE,l=s.isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],height:2,radius:1,roundRadius:.2,segments:32},t),n=e.center,s=e.height,f=e.radius,h=e.roundRadius,d=e.segments;if(!l(n,3))throw new Error("center must be an array of X, Y and Z values");if(!u(s,0))throw new Error("height must be greater then zero");if(!u(f,0))throw new Error("radius must be greater then zero");if(!u(h,0))throw new Error("roundRadius must be greater then zero");if(h>f-r)throw new Error("roundRadius must be smaller then the radius");if(!c(d,4))throw new Error("segments must be four or more");var p,v=[0,0,-s/2],g=[0,0,s/2],m=i.subtract(i.create(),g,v);if(2*h>i.length(m)-r)throw new Error("height must be larger than twice roundRadius");p=Math.abs(m[0])>Math.abs(m[1])?i.fromValues(0,1,0):i.fromValues(1,0,0);var y=i.scale(i.create(),i.normalize(i.create(),m),h),b=i.scale(i.create(),i.normalize(i.create(),i.cross(i.create(),y,p)),f),w=i.scale(i.create(),i.normalize(i.create(),i.cross(i.create(),b,y)),f);i.add(v,v,y),i.subtract(g,g,y);for(var x,_=Math.floor(.25*d),S=function(t){var e=t.map((function(t){return i.add(t,t,n)}));return a.fromPoints(e)},A=[],E=i.create(),C=i.create(),k=0;k<=d;k++){var T=2*Math.PI*k/d,P=i.add(i.create(),i.scale(E,b,Math.cos(T)),i.scale(C,w,Math.sin(T)));if(k>0){var M=[];M.push(i.add(i.create(),v,P)),M.push(i.add(i.create(),v,x)),M.push(i.add(i.create(),g,x)),M.push(i.add(i.create(),g,P)),A.push(S(M));for(var O=void 0,L=void 0,N=0;N<=_;N++){var D=.5*Math.PI*N/_,j=Math.cos(D),I=Math.sin(D);if(N>0){M=[];var R=void 0;R=i.add(i.create(),v,i.subtract(E,i.scale(E,x,O),i.scale(C,y,L))),M.push(R),R=i.add(i.create(),v,i.subtract(E,i.scale(E,P,O),i.scale(C,y,L))),M.push(R),N<_&&(R=i.add(i.create(),v,i.subtract(E,i.scale(E,P,j),i.scale(C,y,I))),M.push(R)),R=i.add(i.create(),v,i.subtract(E,i.scale(E,x,j),i.scale(C,y,I))),M.push(R),A.push(S(M)),M=[],R=i.add(i.create(),i.scale(E,x,O),i.scale(C,y,L)),i.add(R,R,g),M.push(R),R=i.add(i.create(),i.scale(E,P,O),i.scale(C,y,L)),i.add(R,R,g),M.push(R),N<_&&(R=i.add(i.create(),i.scale(E,P,j),i.scale(C,y,I)),i.add(R,R,g),M.push(R)),R=i.add(i.create(),i.scale(E,x,j),i.scale(C,y,I)),i.add(R,R,g),M.push(R),M.reverse(),A.push(S(M))}O=j,L=I}}x=P}return o.create(A)}},72373:function(t,e,n){var r=n(63055).EPS,i=n(13632),o=n(77656),a=n(52528),s=a.isGT,u=a.isGTE,c=a.isNumberArray;t.exports=function(t){var e=Object.assign({},{center:[0,0],size:[2,2],roundRadius:.2,segments:32},t),n=e.center,a=e.size,l=e.roundRadius,f=e.segments;if(!c(n,2))throw new Error("center must be an array of X and Y values");if(!c(a,2))throw new Error("size must be an array of X and Y values");if(!a.every((function(t){return t>0})))throw new Error("size values must be greater than zero");if(!s(l,0))throw new Error("roundRadius must be greater than zero");if(!u(f,4))throw new Error("segments must be four or more");if(l>(a=a.map((function(t){return t/2})))[0]-r||l>a[1]-r)throw new Error("roundRadius must be smaller then the radius of all dimensions");for(var h=Math.floor(f/4),d=i.add(i.create(),n,[a[0]-l,a[1]-l]),p=i.add(i.create(),n,[l-a[0],a[1]-l]),v=i.add(i.create(),n,[l-a[0],l-a[1]]),g=i.add(i.create(),n,[a[0]-l,l-a[1]]),m=[],y=[],b=[],w=[],x=0;x<=h;x++){var _=Math.PI/2*x/h,S=i.fromAngleRadians(i.create(),_);i.scale(S,S,l),m.push(i.add(i.create(),d,S)),i.rotate(S,S,i.create(),Math.PI/2),y.push(i.add(i.create(),p,S)),i.rotate(S,S,i.create(),Math.PI/2),b.push(i.add(i.create(),v,S)),i.rotate(S,S,i.create(),Math.PI/2),w.push(i.add(i.create(),g,S))}return o.fromPoints(m.concat(y,b,w))}},74947:function(t,e,n){var r=n(84092),i=n(52528).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0,0],radius:1,segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},t),n=e.center,o=e.radius,a=e.segments,s=e.axes;if(!i(o,0))throw new Error("radius must be greater than zero");return r({center:n,radius:o=[o,o,o],segments:a,axes:s})}},33798:function(t,e,n){var r=n(24778),i=n(52528).isGT;t.exports=function(t){var e=Object.assign({},{center:[0,0],size:2},t),n=e.center,o=e.size;if(!i(o,0))throw new Error("size must be greater than zero");return r({center:n,size:o=[o,o]})}},19312:function(t,e,n){var r=n(13632),i=n(77656),o=n(52528),a=o.isGT,s=o.isGTE,u=o.isNumberArray,c=function(t,e,n,i){for(var o=2*Math.PI/t,a=[],s=0;s0&&e>1&&e=f)throw new Error("inner circle is two large to rotate about the outer circle");var g=a({radius:s,segments:l});return 0!==d&&(g=i([0,0,d],g)),g=o([f,0],g),r({startAngle:p,angle:v,segments:h},g)}},8910:function(t,e,n){var r=n(13632),i=n(77656),o=n(52528).isNumberArray,a=1e-13,s=function(t,e,n){return Math.acos((t*t+e*e-n*n)/(2*t*e))},u=function(t){var e=t[0],n=t[1],r=t[2],i=function(t,e,n){return e>a?Math.sqrt(t*t+n*n-2*t*n*Math.cos(e)):Math.sqrt((t-n)*(t-n)+t*n*e*e*(1-e*e/12))}(e,n,r),o=s(i,e,r),u=Math.PI-o-n;return c(o,n,u,r,i,e)},c=function(t,e,n,o,a,s){var u=r.fromValues(0,0),c=r.fromValues(s,0),l=r.fromValues(o,0);return r.add(l,r.rotate(l,l,[0,0],Math.PI-e),c),i.fromPoints([u,c,l])};t.exports=function(t){var e=Object.assign({},{type:"SSS",values:[1,1,1]},t),n=e.type,r=e.values;if("string"!==typeof n)throw new Error("triangle type must be a string");if("A"!==(n=n.toUpperCase())[0]&&"S"!==n[0]||"A"!==n[1]&&"S"!==n[1]||"A"!==n[2]&&"S"!==n[2])throw new Error("triangle type must contain three letters; A or S");if(!o(r,3))throw new Error("triangle values must contain three values");if(!r.every((function(t){return t>0})))throw new Error("triangle values must be greater than zero");switch(n){case"AAA":return function(t){if(Math.abs(t[0]+t[1]+t[2]-Math.PI)>a)throw new Error("AAA triangles require angles that sum to PI");var e=t[0],n=t[1],r=Math.PI-e-n,i=1/Math.sin(r)*Math.sin(e),o=1/Math.sin(r)*Math.sin(n);return c(e,n,r,i,o,1)}(r);case"AAS":return function(t){var e=t[0],n=t[1],r=Math.PI+a-e-n;if(rA.width&&(S=k-A.width,"right"===f?A=o({x:S},A):"center"===f&&(A=o({x:S/2},A))),C=C.concat(A.segments);return C}},84179:function(t,e,n){var r=n(77656),i=n(88955),o=n(36607);t.exports=function(t){var e;return t.forEach((function(t){var n=0;if(r.isA(t)&&(n=1),i.isA(t)&&(n=2),o.isA(t)&&(n=3),e&&n!==e)return!1;e=n})),!0}},85696:function(t){t.exports=function(t){return.017453292519943295*t}},7388:function(t){t.exports=function t(e){return e.reduce((function(e,n){return Array.isArray(n)?e.concat(t(n)):e.concat(n)}),[])}},59772:function(t){t.exports=function(t,e){return t-e}},2446:function(t,e,n){t.exports={areAllShapesTheSameType:n(84179),degToRad:n(85696),flatten:n(7388),fnNumberSort:n(59772),insertSorted:n(4941),radiusToSegments:n(81022),radToDeg:n(58173)}},4941:function(t){t.exports=function(t,e,n){for(var r=0,i=t.length;i>r;){var o=Math.floor((r+i)/2);n(e,t[o])>0?r=o+1:i=o}t.splice(r,0,e)}},30010:function(t){t.exports=function(t,e,n){for(t=t.slice();t.length0?2*t*Math.PI/e:0,i=n>0?2*Math.PI/n:0;return Math.ceil(Math.max(r,i,4))}},5491:function(t){"use strict";t.exports=function(t,e){var n="",r=function(t){return t};return e>0&&(n="\n",r=function(t){var e=" ".repeat(t);return function(t){var n,r=[];return"string"!==typeof t?t:1===(n=t.split("\n")).length?e+t:(n.forEach((function(t){""!==t.trim()?r.push(e+t):r.push(t)})),r.join("\n"))}}(e)),function t(e){var i,o,a;return o="",a=!0,e.some((function(e,r,s){if(0===r)return i="<"+e,1===s.length||void 0;if(1===r){if((u=e)&&"[object Object]"===Object.prototype.toString.call(u))return Object.keys(e).forEach((function(t){i+=" "+t+'="'+e[t]+'"'})),2===s.length||void(i+=">");i+=">"}var u;switch(typeof e){case"string":case"number":case"boolean":case"undefined":return void(o+=e+n)}a=!1,o+=t(e)}))?i+"/>"+n:a?i+function(t){var e=t.split("\n"),n=[];return e.forEach((function(t){""!==t.trim()&&n.push(t)})),n.join("\n")}(o)+""+n:i+n+r(o)+""+n}(t)}},48796:function(t,e,n){var r=n(65100);t.exports=function(t,e,n,i){var o=n[0],a=n[1],s=n[2],u=n[3],c=e[0],l=e[1],f=e[2];return c-=o,l=u-l-1,l-=a,t[0]=2*c/s-1,t[1]=2*l/u-1,t[2]=2*f-1,r(t,t,i)}},65100:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2],c=n[3],l=n[4],f=n[5],h=n[6],d=n[7],p=n[8],v=n[9],g=n[10],m=n[11],y=n[12],b=n[13],w=n[14],x=n[15],_=1/(r*c+i*d+o*m+x);return t[0]=(r*a+i*l+o*p+y)*_,t[1]=(r*s+i*f+o*v+b)*_,t[2]=(r*u+i*h+o*g+w)*_,t}},36364:function(t,e){!function(t){"use strict";var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,n)},n=function(){return(n=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?[(-e+Math.sqrt(r))/(2*t),(-e-Math.sqrt(r))/(2*t)]:[]}function c(t,e,n,r){if(Math.abs(t)0)i=[(f=s(-c/2-Math.sqrt(l)))-o/(3*f)];else{var f=2*Math.sqrt(-o/3),h=Math.acos(3*c/o/f)/3,d=2*Math.PI/3;i=[f*Math.cos(h),f*Math.cos(h-d),f*Math.cos(h-2*d)]}}for(var p=0;p2)throw Error("Only supported for 2d vectors");var e=-t[1];return t[1]=t[0],t[0]=e,t}function g(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),tn?n:t}function m(t,e,n){var r,i,o,a,s=e.length-1;return n?(r=e[t-1<0?s:t-1],i=e[t%e.length],o=e[(t+1)%e.length],a=e[(t+2)%e.length]):(r=e[Math.max(0,t-1)],i=e[t],o=e[Math.min(s,t+1)],a=e[Math.min(s,t+2)]),[r,i,o,a]}function y(t,e,n,r){void 0===n&&(n={});var i=Number.isFinite(n.tension)?n.tension:.5,o=!!n.closed,a=n.func||f,s=o?e.length:e.length-1,u=s*t,c=Math.floor(u),l=u-c,h=m(c,e,o),d=h[0],p=h[1],v=h[2],g=h[3];r=r||new Array(d.length);for(var y=0;y0)){a=s;break}a=s-1}if(e[s=a]===i)return s/(r-1);var u=e[s];return(s+(i-u)/(e[s+1]-u))/(r-1)}function _(t,e){if(0===t)return 0;if(1===t)return 1;var n=e.length-1,r=e[n],i=t*n,o=Math.floor(i),a=e[o];return i===o?a/r:(a+(i-o)*(e[o+1]-a))/r}function S(t,e,n,r,i,o){var s=l(n,r,i,o,t,e),u=s[0],f=s[1],h=s[2],d=s[3];return 0===u&&0===f&&0===h&&0===d?[0]:c(u,f,h,d).filter((function(t){return t>-a&&t<=1+a})).map((function(t){return g(t,0,1)}))}function A(t,e,r){for(var i=n({axis:0,tension:.5,closed:!1,margin:.5,max:0,processRefAxis:!1,func:f},r),o=i.func,a=i.axis,s=i.tension,u=i.closed,c=i.margin,l=i.max,h=i.processRefAxis,d=a,p=[],v=u?e.length:e.length-1,g=0;g=E){var k=S(t,s,w[d],x[d],_[d],A[d]);l<0?k.sort((function(t,e){return e-t})):l>=0&&k.sort((function(t,e){return t-e}));for(var T=0;T0)){for(var P=[],M=0;M=E){var k=S(t,a,y[l],b[l],x[l],A[l]);c<0?k.sort((function(t,e){return e-t})):c>=0&&k.sort((function(t,e){return t-e}));for(var T=0;T0)){var P=_((k[T]+v)/d,h);if(f.add(P),f.size===Math.abs(c))return Array.from(f)}}}return Array.from(f)}function C(t,e){void 0===e&&(e={});for(var r=n({tension:.5,closed:!1,from:0,to:1,arcLengths:null,arcDivisions:300},e),i=r.tension,o=r.closed,s=r.from,c=r.to,h=r.arcLengths,d=r.arcDivisions,p=o?t.length:t.length-1,v=x(s,h=h||w(t,d,{tension:i,closed:o})),g=x(c,h),b=Math.floor(p*v),_=Math.ceil(p*g),S=y(v,t,{tension:i,closed:o}),A=y(g,t,{tension:i,closed:o}),E=[],C=[],k=0;kC[d]&&(C[d]=c[d]);if(i<1){var y=p*v-(e-1),w=p*g-(e-1),x=function(t){return t>-a&&t<=1+a&&(e-1!==b||t>y)&&(e!==_||tC[t]&&(C[t]=n)}))};for(d=0;d1||re||x>=n)&&(f.push([p+o,v+a]),c=(r=[p,v])[0],l=r[1])}}var _=s[s.length-1];return f.push([_[0]+o,_[1]+a]),f},t.solveForT=f,t.tangentsLookup=function(t,e,r){return A(t,e,n(n({},r),{func:h,processRefAxis:!0}))},t.valuesLookup=A,Object.defineProperty(t,"__esModule",{value:!0})}(e)},53050:function(t,e,n){var r,i=i||{version:"5.2.1"};if(e.fabric=i,"undefined"!==typeof document&&"undefined"!==typeof window)document instanceof("undefined"!==typeof HTMLDocument?HTMLDocument:Document)?i.document=document:i.document=document.implementation.createHTMLDocument(""),i.window=window;else{var o=new(n(24960).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;i.document=o.document,i.jsdomImplForWrapper=n(26759).implForWrapper,i.nodeCanvas=n(56272).Canvas,i.window=o,DOMParser=i.window.DOMParser}function a(t,e){var n=t.canvas,r=e.targetCanvas,i=r.getContext("2d");i.translate(0,r.height),i.scale(1,-1);var o=n.height-r.height;i.drawImage(n,0,o,r.width,r.height,0,0,r.width,r.height)}function s(t,e){var n=e.targetCanvas.getContext("2d"),r=e.destinationWidth,i=e.destinationHeight,o=r*i*4,a=new Uint8Array(this.imageBuffer,0,o),s=new Uint8ClampedArray(this.imageBuffer,0,o);t.readPixels(0,0,r,i,t.RGBA,t.UNSIGNED_BYTE,a);var u=new ImageData(s,r,i);n.putImageData(u,0,0)}i.isTouchSupported="ontouchstart"in i.window||"ontouchstart"in i.document||i.window&&i.window.navigator&&i.window.navigator.maxTouchPoints>0,i.isLikelyNode="undefined"!==typeof Buffer&&"undefined"===typeof window,i.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"],i.DPI=96,i.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",i.commaWsp="(?:\\s+,?\\s*|,\\s*)",i.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,i.reNonWord=/[ \n\.,;!\?\-]/,i.fontPaths={},i.iMatrix=[1,0,0,1,0,0],i.svgNS="http://www.w3.org/2000/svg",i.perfLimitSizeTotal=2097152,i.maxCacheSideLimit=4096,i.minCacheSideLimit=256,i.charWidthsCache={},i.textureSize=2048,i.disableStyleCopyPaste=!1,i.enableGLFiltering=!0,i.devicePixelRatio=i.window.devicePixelRatio||i.window.webkitDevicePixelRatio||i.window.mozDevicePixelRatio||1,i.browserShadowBlurConstant=1,i.arcToSegmentsCache={},i.boundsOfCurveCache={},i.cachesBoundsOfCurve=!0,i.forceGLPutImageData=!1,i.initFilterBackend=function(){return i.enableGLFiltering&&i.isWebglSupported&&i.isWebglSupported(i.textureSize)?(console.log("max texture size: "+i.maxTextureSize),new i.WebglFilterBackend({tileSize:i.textureSize})):i.Canvas2dFilterBackend?new i.Canvas2dFilterBackend:void 0},"undefined"!==typeof document&&"undefined"!==typeof window&&(window.fabric=i),function(){function t(t,e){if(this.__eventListeners[t]){var n=this.__eventListeners[t];e?n[n.indexOf(e)]=!1:i.util.array.fill(n,!1)}}function e(t,e){var n=function(){e.apply(this,arguments),this.off(t,n)}.bind(this);this.on(t,n)}i.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var n=this.__eventListeners[t];if(!n)return this;for(var r=0,i=n.length;r-1||!!e&&this._objects.some((function(e){return"function"===typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+=e.complexity?e.complexity():0}),0)}},i.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof i.Gradient||this.set(e,new i.Gradient(t))},_initPattern:function(t,e,n){!t||!t.source||t instanceof i.Pattern?n&&n():this.set(e,new i.Pattern(t,n))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"===typeof t?this._setObject(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]}},function(t){var e=Math.sqrt,n=Math.atan2,r=Math.pow,o=Math.PI/180,a=Math.PI/2;i.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/a){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/a){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*o},radiansToDegrees:function(t){return t/o},rotatePoint:function(t,e,n){var r=new i.Point(t.x-e.x,t.y-e.y),o=i.util.rotateVector(r,n);return new i.Point(o.x,o.y).addEquals(e)},rotateVector:function(t,e){var n=i.util.sin(e),r=i.util.cos(e);return{x:t.x*r-t.y*n,y:t.x*n+t.y*r}},createVector:function(t,e){return new i.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new i.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,n){var r=i.util.createVector(t,e),o=i.util.createVector(t,n),a=i.util.calcAngleBetweenVectors(r,o),s=a*(0===i.util.calcAngleBetweenVectors(i.util.rotateVector(r,a),o)?1:-1)/2;return{vector:i.util.getHatVector(i.util.rotateVector(r,s)),angle:a}},projectStrokeOnPoints:function(t,e,n){var r=[],o=e.strokeWidth/2,a=e.strokeUniform?new i.Point(1/e.scaleX,1/e.scaleY):new i.Point(1,1),s=function(t){var e=o/Math.hypot(t.x,t.y);return new i.Point(t.x*e*a.x,t.y*e*a.y)};return t.length<=1||t.forEach((function(u,c){var l,f,h=new i.Point(u.x,u.y);0===c?(f=t[c+1],l=n?s(i.util.createVector(f,h)).addEquals(h):t[t.length-1]):c===t.length-1?(l=t[c-1],f=n?s(i.util.createVector(l,h)).addEquals(h):t[0]):(l=t[c-1],f=t[c+1]);var d,p,v=i.util.getBisector(h,l,f),g=v.vector,m=v.angle;if("miter"===e.strokeLineJoin&&(d=-o/Math.sin(m/2),p=new i.Point(g.x*d*a.x,g.y*d*a.y),Math.hypot(p.x,p.y)/o<=e.strokeMiterLimit))return r.push(h.add(p)),void r.push(h.subtract(p));d=-o*Math.SQRT2,p=new i.Point(g.x*d*a.x,g.y*d*a.y),r.push(h.add(p)),r.push(h.subtract(p))})),r},transformPoint:function(t,e,n){return n?new i.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new i.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;n0&&(e>r?e-=r:e=0,n>r?n-=r:n=0);var i,o=!0,a=t.getImageData(e,n,2*r||1,2*r||1),s=a.data.length;for(i=3;i=i?o-i:2*Math.PI-(i-o)}function a(t,e,n){for(var a=n[1],s=n[2],u=n[3],c=n[4],l=n[5],f=function(t,e,n,a,s,u,c){var l=Math.PI,f=c*l/180,h=i.util.sin(f),d=i.util.cos(f),p=0,v=0,g=-d*t*.5-h*e*.5,m=-d*e*.5+h*t*.5,y=(n=Math.abs(n))*n,b=(a=Math.abs(a))*a,w=m*m,x=g*g,_=y*b-y*w-b*x,S=0;if(_<0){var A=Math.sqrt(1-_/(y*b));n*=A,a*=A}else S=(s===u?-1:1)*Math.sqrt(_/(y*w+b*x));var E=S*n*m/a,C=-S*a*g/n,k=d*E-h*C+.5*t,T=h*E+d*C+.5*e,P=o(1,0,(g-E)/n,(m-C)/a),M=o((g-E)/n,(m-C)/a,(-g-E)/n,(-m-C)/a);0===u&&M>0?M-=2*l:1===u&&M<0&&(M+=2*l);for(var O=Math.ceil(Math.abs(M/l*2)),L=[],N=M/O,D=8/3*Math.sin(N/4)*Math.sin(N/4)/Math.sin(N/2),j=P+N,I=0;I1e-4;)n=u(o),i=o,(r=s(c.x,c.y,n.x,n.y))+a>e?(o-=l,l/=2):(c=n,o+=l,a+=r);return n.angle=f(i),n}function p(t){for(var e,n,r,i,o=0,a=t.length,d=0,p=0,v=0,g=0,m=[],y=0;yS)for(var E=1,C=g.length;E2;for(e=e||0,l&&(u=t[2].xt[n-2].x?1:o.x===t[n-2].x?0:-1,c=o.y>t[n-2].y?1:o.y===t[n-2].y?0:-1),r.push(["L",o.x+u*e,o.y+c*e]),r},i.util.getPathSegmentsInfo=p,i.util.getBoundsOfCurve=function(e,n,r,o,a,s,u,c){var l;if(i.cachesBoundsOfCurve&&(l=t.call(arguments),i.boundsOfCurveCache[l]))return i.boundsOfCurveCache[l];var f,h,d,p,v,g,m,y,b=Math.sqrt,w=Math.min,x=Math.max,_=Math.abs,S=[],A=[[],[]];h=6*e-12*r+6*a,f=-3*e+9*r-9*a+3*u,d=3*r-3*e;for(var E=0;E<2;++E)if(E>0&&(h=6*n-12*o+6*s,f=-3*n+9*o-9*s+3*c,d=3*o-3*n),_(f)<1e-12){if(_(h)<1e-12)continue;0<(p=-d/h)&&p<1&&S.push(p)}else(m=h*h-4*d*f)<0||(0<(v=(-h+(y=b(m)))/(2*f))&&v<1&&S.push(v),0<(g=(-h-y)/(2*f))&&g<1&&S.push(g));for(var C,k,T,P=S.length,M=P;P--;)C=(T=1-(p=S[P]))*T*T*e+3*T*T*p*r+3*T*p*p*a+p*p*p*u,A[0][P]=C,k=T*T*T*n+3*T*T*p*o+3*T*p*p*s+p*p*p*c,A[1][P]=k;A[0][M]=e,A[1][M]=n,A[0][M+1]=u,A[1][M+1]=c;var O=[{x:w.apply(null,A[0]),y:w.apply(null,A[1])},{x:x.apply(null,A[0]),y:x.apply(null,A[1])}];return i.cachesBoundsOfCurve&&(i.boundsOfCurveCache[l]=O),O},i.util.getPointOnPath=function(t,e,n){n||(n=p(t));for(var r=0;e-n[r].length>0&&r=e}))}}}(),function(){function t(e,n,r){if(r)if(!i.isLikelyNode&&n instanceof Element)e=n;else if(n instanceof Array){e=[];for(var o=0,a=n.length;o57343)return t.charAt(e);if(55296<=n&&n<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var r=t.charCodeAt(e+1);if(56320>r||r>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 i=t.charCodeAt(e-1);if(55296>i||i>56319)throw"Low surrogate without preceding high surrogate";return!1}i.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,">")},graphemeSplit:function(e){var n,r=0,i=[];for(r=0;r-1?t.prototype[i]=function(t){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=e[t].apply(this,arguments);if(this.constructor.superclass=n,"initialize"!==t)return i}}(i):t.prototype[i]=e[i],n&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function o(){}function a(e){for(var n=null,r=this;r.constructor.superclass;){var i=r.constructor.superclass.prototype[e];if(r[e]!==i){n=i;break}r=r.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)}i.util.createClass=function(){var n=null,i=t.call(arguments,0);function s(){this.initialize.apply(this,arguments)}"function"===typeof i[0]&&(n=i.shift()),s.superclass=n,s.subclasses=[],n&&(o.prototype=n.prototype,s.prototype=new o,n.subclasses.push(s));for(var u=0,c=i.length;u-1||"touch"===t.pointerType}}(),function(){var t=i.document.createElement("div"),e="string"===typeof t.style.opacity,n="string"===typeof t.style.filter,r=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,o=function(t){return t};e?o=function(t,e){return t.style.opacity=e,t}:n&&(o=function(t,e){var n=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(n.zoom=1),r.test(n.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",n.filter=n.filter.replace(r,e)):n.filter+=" alpha(opacity="+100*e+")",t}),i.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?o(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e){if("opacity"===r)o(t,e[r]);else n["float"===r||"cssFloat"===r?"undefined"===typeof n.styleFloat?"cssFloat":"styleFloat":r]=e[r]}return t}}(),function(){var t=Array.prototype.slice;var e,n,r=function(e){return t.call(e,0)};try{e=r(i.document.childNodes)instanceof Array}catch(s){}function o(t,e){var n=i.document.createElement(t);for(var r in e)"class"===r?n.className=e[r]:"for"===r?n.htmlFor=e[r]:n.setAttribute(r,e[r]);return n}function a(t){for(var e=0,n=0,r=i.document.documentElement,o=i.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===i.document?(e=o.scrollLeft||r.scrollLeft||0,n=o.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,n+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:n}}e||(r=function(t){for(var e=new Array(t.length),n=t.length;n--;)e[n]=t[n];return e}),n=i.document.defaultView&&i.document.defaultView.getComputedStyle?function(t,e){var n=i.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},function(){var t=i.document.documentElement.style,e="userSelect"in t?"userSelect":"MozUserSelect"in t?"MozUserSelect":"WebkitUserSelect"in t?"WebkitUserSelect":"KhtmlUserSelect"in t?"KhtmlUserSelect":"";i.util.makeElementUnselectable=function(t){return"undefined"!==typeof t.onselectstart&&(t.onselectstart=i.util.falseFunction),e?t.style[e]="none":"string"===typeof t.unselectable&&(t.unselectable="on"),t},i.util.makeElementSelectable=function(t){return"undefined"!==typeof t.onselectstart&&(t.onselectstart=null),e?t.style[e]="":"string"===typeof t.unselectable&&(t.unselectable=""),t}}(),i.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},i.util.getById=function(t){return"string"===typeof t?i.document.getElementById(t):t},i.util.toArray=r,i.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},i.util.makeElement=o,i.util.wrapElement=function(t,e,n){return"string"===typeof e&&(e=o(e,n)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},i.util.getScrollLeftTop=a,i.util.getElementOffset=function(t){var e,r,i=t&&t.ownerDocument,o={left:0,top:0},s={left:0,top:0},u={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return s;for(var c in u)s[u[c]]+=parseInt(n(t,c),10)||0;return e=i.documentElement,"undefined"!==typeof t.getBoundingClientRect&&(o=t.getBoundingClientRect()),r=a(t),{left:o.left+r.left-(e.clientLeft||0)+s.left,top:o.top+r.top-(e.clientTop||0)+s.top}},i.util.getNodeCanvas=function(t){var e=i.jsdomImplForWrapper(t);return e._canvas||e._image},i.util.cleanUpJsdomNode=function(t){if(i.isLikelyNode){var e=i.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}i.util.request=function(e,n){n||(n={});var r=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=new i.window.XMLHttpRequest,s=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=t)},"GET"===r&&(s=null,"string"===typeof n.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,n.parameters))),a.open(r,e,!0),"POST"!==r&&"PUT"!==r||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(s),a}}(),i.log=console.log,i.warn=console.warn,function(){var t=i.util.object.extend,e=i.util.object.clone,n=[];function r(){return!1}function o(t,e,n,r){return-n*Math.cos(t/r*(Math.PI/2))+n+e}i.util.object.extend(n,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"===typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var a=i.window.requestAnimationFrame||i.window.webkitRequestAnimationFrame||i.window.mozRequestAnimationFrame||i.window.oRequestAnimationFrame||i.window.msRequestAnimationFrame||function(t){return i.window.setTimeout(t,1e3/60)},s=i.window.cancelAnimationFrame||i.window.clearTimeout;function u(){return a.apply(i.window,arguments)}i.util.animate=function(n){n||(n={});var a,s=!1,c=function(){var t=i.runningAnimations.indexOf(a);return t>-1&&i.runningAnimations.splice(t,1)[0]};return a=t(e(n),{cancel:function(){return s=!0,c()},currentValue:"startValue"in n?n.startValue:0,completionRate:0,durationRate:0}),i.runningAnimations.push(a),u((function(t){var e,i=t||+new Date,l=n.duration||500,f=i+l,h=n.onChange||r,d=n.abort||r,p=n.onComplete||r,v=n.easing||o,g="startValue"in n&&n.startValue.length>0,m="startValue"in n?n.startValue:0,y="endValue"in n?n.endValue:100,b=n.byValue||(g?m.map((function(t,e){return y[e]-m[e]})):y-m);n.onStart&&n.onStart(),function t(n){var r=(e=n||+new Date)>f?l:e-i,o=r/l,w=g?m.map((function(t,e){return v(r,m[e],b[e],l)})):v(r,m,b,l),x=g?Math.abs((w[0]-m[0])/b[0]):Math.abs((w-m)/b);if(a.currentValue=g?w.slice():w,a.completionRate=x,a.durationRate=o,!s){if(!d(w,x,o))return e>f?(a.currentValue=g?y.slice():y,a.completionRate=1,a.durationRate=1,h(g?y.slice():y,1,1),p(y,1,1),void c()):(h(w,x,o),void u(t));c()}}(i)})),a.cancel},i.util.requestAnimFrame=u,i.util.cancelAnimFrame=function(){return s.apply(i.window,arguments)},i.runningAnimations=n}(),function(){function t(t,e,n){var r="rgba("+parseInt(t[0]+n*(e[0]-t[0]),10)+","+parseInt(t[1]+n*(e[1]-t[1]),10)+","+parseInt(t[2]+n*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+n*(e[3]-t[3])):1),r+=")"}i.util.animateColor=function(e,n,r,o){var a=new i.Color(e).getSource(),s=new i.Color(n).getSource(),u=o.onComplete,c=o.onChange;return o=o||{},i.util.animate(i.util.object.extend(o,{duration:r||500,startValue:a,endValue:s,byValue:s,easing:function(e,n,r,i){return t(n,r,o.colorEasing?o.colorEasing(e,i):1-Math.cos(e/i*(Math.PI/2)))},onComplete:function(e,n,r){if(u)return u(t(s,s,0),n,r)},onChange:function(e,n,r){if(c){if(Array.isArray(e))return c(t(e,e,0),n,r);c(e,n,r)}}}))}}(),function(){function t(t,e,n,r){return t-1&&l>-1&&l-1)&&(n="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return n;if("imageSmoothing"===t)return"optimizeQuality"===n;s=u?n.map(o):o(n,i)}}else n="";return!u&&isNaN(s)?n:s}function d(t){return new RegExp("^("+t.join("|")+")\\b","i")}function p(t,e){var n,r,i,o,a=[];for(i=0,o=e.length;i1;)u.shift(),c=e.util.multiplyTransformMatrices(c,u[0]);return c}}();var y=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function b(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var n,r,i,a,s,u,c=t.getAttribute("viewBox"),l=1,f=1,h=t.getAttribute("width"),d=t.getAttribute("height"),p=t.getAttribute("x")||0,v=t.getAttribute("y")||0,g=t.getAttribute("preserveAspectRatio")||"",m=!c||!(c=c.match(y)),b=!h||!d||"100%"===h||"100%"===d,w=m&&b,x={},_="",S=0,A=0;if(x.width=0,x.height=0,x.toBeParsed=w,m&&(p||v)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(_=" translate("+o(p)+" "+o(v)+") ",s=(t.getAttribute("transform")||"")+_,t.setAttribute("transform",s),t.removeAttribute("x"),t.removeAttribute("y")),w)return x;if(m)return x.width=o(h),x.height=o(d),x;if(n=-parseFloat(c[1]),r=-parseFloat(c[2]),i=parseFloat(c[3]),a=parseFloat(c[4]),x.minX=n,x.minY=r,x.viewBoxWidth=i,x.viewBoxHeight=a,b?(x.width=i,x.height=a):(x.width=o(h),x.height=o(d),l=x.width/i,f=x.height/a),"none"!==(g=e.util.parsePreserveAspectRatioAttribute(g)).alignX&&("meet"===g.meetOrSlice&&(f=l=l>f?f:l),"slice"===g.meetOrSlice&&(f=l=l>f?l:f),S=x.width-i*l,A=x.height-a*l,"Mid"===g.alignX&&(S/=2),"Mid"===g.alignY&&(A/=2),"Min"===g.alignX&&(S=0),"Min"===g.alignY&&(A=0)),1===l&&1===f&&0===n&&0===r&&0===p&&0===v)return x;if((p||v)&&"#document"!==t.parentNode.nodeName&&(_=" translate("+o(p)+" "+o(v)+") "),s=_+" matrix("+l+" 0 0 "+f+" "+(n*l+S)+" "+(r*f+A)+") ","svg"===t.nodeName){for(u=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)u.appendChild(t.firstChild);t.appendChild(u)}else(u=t).removeAttribute("x"),u.removeAttribute("y"),s=u.getAttribute("transform")+s;return u.setAttribute("transform",s),x}function w(t,e){var n="xlink:href",r=m(t,e.getAttribute(n).slice(1));if(r&&r.getAttribute(n)&&w(t,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){r&&!e.hasAttribute(t)&&r.hasAttribute(t)&&e.setAttribute(t,r.getAttribute(t))})),!e.children.length)for(var i=r.cloneNode(!0);i.firstChild;)e.appendChild(i.firstChild);e.removeAttribute(n)}e.parseSVGDocument=function(t,n,i,o){if(t){!function(t){for(var n=p(t,["use","svg:use"]),r=0;n.length&&rt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return"undefined"===typeof e&&(e=.5),e=Math.max(Math.min(1,e),0),new n(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new n(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new n(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,n=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=n},clone:function(){return new n(this.x,this.y)}})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={});function n(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=n,e.Intersection.prototype={constructor:n,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,r,i,o){var a,s=(o.x-i.x)*(t.y-i.y)-(o.y-i.y)*(t.x-i.x),u=(r.x-t.x)*(t.y-i.y)-(r.y-t.y)*(t.x-i.x),c=(o.y-i.y)*(r.x-t.x)-(o.x-i.x)*(r.y-t.y);if(0!==c){var l=s/c,f=u/c;0<=l&&l<=1&&0<=f&&f<=1?(a=new n("Intersection")).appendPoint(new e.Point(t.x+l*(r.x-t.x),t.y+l*(r.y-t.y))):a=new n}else a=new n(0===s||0===u?"Coincident":"Parallel");return a},e.Intersection.intersectLinePolygon=function(t,e,r){var i,o,a,s,u=new n,c=r.length;for(s=0;s0&&(u.status="Intersection"),u},e.Intersection.intersectPolygonPolygon=function(t,e){var r,i=new n,o=t.length;for(r=0;r0&&(i.status="Intersection"),i},e.Intersection.intersectPolygonRectangle=function(t,r,i){var o=r.min(i),a=r.max(i),s=new e.Point(a.x,o.y),u=new e.Point(o.x,a.y),c=n.intersectLinePolygon(o,s,t),l=n.intersectLinePolygon(s,a,t),f=n.intersectLinePolygon(a,u,t),h=n.intersectLinePolygon(u,o,t),d=new n;return d.appendPoints(c.points),d.appendPoints(l.points),d.appendPoints(f.points),d.appendPoints(h.points),d.points.length>0&&(d.status="Intersection"),d})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={});function n(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function r(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=n,e.Color.prototype={_tryParsingColor:function(t){var e;t in n.colorNameMap&&(t=n.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=n.sourceFromHex(t)),e||(e=n.sourceFromRgb(t)),e||(e=n.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,n,r){t/=255,n/=255,r/=255;var i,o,a,s=e.util.array.max([t,n,r]),u=e.util.array.min([t,n,r]);if(a=(s+u)/2,s===u)i=o=0;else{var c=s-u;switch(o=a>.5?c/(2-s-u):c/(s+u),s){case t:i=(n-r)/c+(n0)-(t<0)||+t};function d(t,e){var n=t.angle+f(Math.atan2(e.y,e.x))+360;return Math.round(n%360/45)}function p(t,n){var r=n.transform.target,i=r.canvas,o=e.util.object.clone(n);o.target=r,i&&i.fire("object:"+t,o),r.fire(t,n)}function v(t,e){var n=e.canvas,r=t[n.uniScaleKey];return n.uniformScaling&&!r||!n.uniformScaling&&r}function g(t){return t.originX===c&&t.originY===c}function m(t,e,n){var r=t.lockScalingX,i=t.lockScalingY;return!(!r||!i)||(!(e||!r&&!i||!n)||(!(!r||"x"!==e)||!(!i||"y"!==e)))}function y(t,e,n,r){return{e:t,transform:e,pointer:{x:n,y:r}}}function b(t){return function(e,n,r,i){var o=n.target,a=o.getCenterPoint(),s=o.translateToOriginPoint(a,n.originX,n.originY),u=t(e,n,r,i);return o.setPositionByOrigin(s,n.originX,n.originY),u}}function w(t,e){return function(n,r,i,o){var a=e(n,r,i,o);return a&&p(t,y(n,r,i,o)),a}}function x(t,n,r,i,o){var a=t.target,s=a.controls[t.corner],u=a.canvas.getZoom(),c=a.padding/u,l=a.toLocalPoint(new e.Point(i,o),n,r);return l.x>=c&&(l.x-=c),l.x<=-c&&(l.x+=c),l.y>=c&&(l.y-=c),l.y<=c&&(l.y+=c),l.x-=s.offsetX,l.y-=s.offsetY,l}function _(t){return t.flipX!==t.flipY}function S(t,e,n,r,i){if(0!==t[e]){var o=i/t._getTransformedDimensions()[r]*t[n];t.set(n,o)}}function A(t,e,n,r){var i,c=e.target,l=c._getTransformedDimensions(0,c.skewY),h=x(e,e.originX,e.originY,n,r),d=Math.abs(2*h.x)-l.x,p=c.skewX;d<2?i=0:(i=f(Math.atan2(d/c.scaleX,l.y/c.scaleY)),e.originX===o&&e.originY===u&&(i=-i),e.originX===s&&e.originY===a&&(i=-i),_(c)&&(i=-i));var v=p!==i;if(v){var g=c._getTransformedDimensions().y;c.set("skewX",i),S(c,"skewY","scaleY","y",g)}return v}function E(t,e,n,r){var i,c=e.target,l=c._getTransformedDimensions(c.skewX,0),h=x(e,e.originX,e.originY,n,r),d=Math.abs(2*h.y)-l.y,p=c.skewY;d<2?i=0:(i=f(Math.atan2(d/c.scaleY,l.x/c.scaleX)),e.originX===o&&e.originY===u&&(i=-i),e.originX===s&&e.originY===a&&(i=-i),_(c)&&(i=-i));var v=p!==i;if(v){var g=c._getTransformedDimensions().x;c.set("skewY",i),S(c,"skewX","scaleX","x",g)}return v}function C(t,e,n,r,i){i=i||{};var o,a,s,u,c,f,d=e.target,p=d.lockScalingX,y=d.lockScalingY,b=i.by,w=v(t,d),_=m(d,b,w),S=e.gestureScale;if(_)return!1;if(S)a=e.scaleX*S,s=e.scaleY*S;else{if(o=x(e,e.originX,e.originY,n,r),c="y"!==b?h(o.x):1,f="x"!==b?h(o.y):1,e.signX||(e.signX=c),e.signY||(e.signY=f),d.lockScalingFlip&&(e.signX!==c||e.signY!==f))return!1;if(u=d._getTransformedDimensions(),w&&!b){var A=Math.abs(o.x)+Math.abs(o.y),E=e.original,C=A/(Math.abs(u.x*E.scaleX/d.scaleX)+Math.abs(u.y*E.scaleY/d.scaleY));a=E.scaleX*C,s=E.scaleY*C}else a=Math.abs(o.x*d.scaleX/u.x),s=Math.abs(o.y*d.scaleY/u.y);g(e)&&(a*=2,s*=2),e.signX!==c&&"y"!==b&&(e.originX=l[e.originX],a*=-1,e.signX=c),e.signY!==f&&"x"!==b&&(e.originY=l[e.originY],s*=-1,e.signY=f)}var k=d.scaleX,T=d.scaleY;return b?("x"===b&&d.set("scaleX",a),"y"===b&&d.set("scaleY",s)):(!p&&d.set("scaleX",a),!y&&d.set("scaleY",s)),k!==d.scaleX||T!==d.scaleY}i.scaleCursorStyleHandler=function(t,e,r){var i=v(t,r),o="";if(0!==e.x&&0===e.y?o="x":0===e.x&&0!==e.y&&(o="y"),m(r,o,i))return"not-allowed";var a=d(r,e);return n[a]+"-resize"},i.skewCursorStyleHandler=function(t,e,n){var i="not-allowed";if(0!==e.x&&n.lockSkewingY)return i;if(0!==e.y&&n.lockSkewingX)return i;var o=d(n,e)%4;return r[o]+"-resize"},i.scaleSkewCursorStyleHandler=function(t,e,n){return t[n.canvas.altActionKey]?i.skewCursorStyleHandler(t,e,n):i.scaleCursorStyleHandler(t,e,n)},i.rotationWithSnapping=w("rotating",b((function(t,e,n,r){var i=e,o=i.target,a=o.translateToOriginPoint(o.getCenterPoint(),i.originX,i.originY);if(o.lockRotation)return!1;var s,u=Math.atan2(i.ey-a.y,i.ex-a.x),c=Math.atan2(r-a.y,n-a.x),l=f(c-u+i.theta);if(o.snapAngle>0){var h=o.snapAngle,d=o.snapThreshold||h,p=Math.ceil(l/h)*h,v=Math.floor(l/h)*h;Math.abs(l-v)0?o:s:(l>0&&(i=f===a?o:s),l<0&&(i=f===a?s:o),_(u)&&(i=i===o?s:o)),e.originX=i,w("skewing",b(A))(t,e,n,r))},i.skewHandlerY=function(t,e,n,r){var i,s=e.target,l=s.skewY,f=e.originX;return!s.lockSkewingY&&(0===l?i=x(e,c,c,n,r).y>0?a:u:(l>0&&(i=f===o?a:u),l<0&&(i=f===o?u:a),_(s)&&(i=i===a?u:a)),e.originY=i,w("skewing",b(E))(t,e,n,r))},i.dragHandler=function(t,e,n,r){var i=e.target,o=n-e.offsetX,a=r-e.offsetY,s=!i.get("lockMovementX")&&i.left!==o,u=!i.get("lockMovementY")&&i.top!==a;return s&&i.set("left",o),u&&i.set("top",a),(s||u)&&p("moving",y(t,e,n,r)),s||u},i.scaleOrSkewActionName=function(t,e,n){var r=t[n.canvas.altActionKey];return 0===e.x?r?"skewX":"scaleY":0===e.y?r?"skewY":"scaleX":void 0},i.rotationStyleHandler=function(t,e,n){return n.lockRotation?"not-allowed":e.cursorStyle},i.fireEvent=p,i.wrapWithFixedAnchor=b,i.wrapWithFireEvent=w,i.getLocalPoint=x,e.controlsUtils=i}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.degreesToRadians,r=e.controlsUtils;r.renderCircleControl=function(t,e,n,r,i){r=r||{};var o,a=this.sizeX||r.cornerSize||i.cornerSize,s=this.sizeY||r.cornerSize||i.cornerSize,u="undefined"!==typeof r.transparentCorners?r.transparentCorners:i.transparentCorners,c=u?"stroke":"fill",l=!u&&(r.cornerStrokeColor||i.cornerStrokeColor),f=e,h=n;t.save(),t.fillStyle=r.cornerColor||i.cornerColor,t.strokeStyle=r.cornerStrokeColor||i.cornerStrokeColor,a>s?(o=a,t.scale(1,s/a),h=n*a/s):s>a?(o=s,t.scale(a/s,1),f=e*s/a):o=a,t.lineWidth=1,t.beginPath(),t.arc(f,h,o/2,0,2*Math.PI,!1),t[c](),l&&t.stroke(),t.restore()},r.renderSquareControl=function(t,e,r,i,o){i=i||{};var a=this.sizeX||i.cornerSize||o.cornerSize,s=this.sizeY||i.cornerSize||o.cornerSize,u="undefined"!==typeof i.transparentCorners?i.transparentCorners:o.transparentCorners,c=u?"stroke":"fill",l=!u&&(i.cornerStrokeColor||o.cornerStrokeColor),f=a/2,h=s/2;t.save(),t.fillStyle=i.cornerColor||o.cornerColor,t.strokeStyle=i.cornerStrokeColor||o.cornerStrokeColor,t.lineWidth=1,t.translate(e,r),t.rotate(n(o.angle)),t[c+"Rect"](-f,-h,a,s),l&&t.strokeRect(-f,-h,a,s),t.restore()}}(e),function(t){"use strict";var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var n=t._controlsVisibility;return n&&"undefined"!==typeof n[e]?n[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,n){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},n)},calcCornerCoords:function(t,n,r,i,o){var a,s,u,c,l=o?this.touchSizeX:this.sizeX,f=o?this.touchSizeY:this.sizeY;if(l&&f&&l!==f){var h=Math.atan2(f,l),d=Math.sqrt(l*l+f*f)/2,p=h-e.util.degreesToRadians(t),v=Math.PI/2-h-e.util.degreesToRadians(t);a=d*e.util.cos(p),s=d*e.util.sin(p),u=d*e.util.cos(v),c=d*e.util.sin(v)}else{d=.7071067812*(l&&f?l:n);p=e.util.degreesToRadians(45-t);a=u=d*e.util.cos(p),s=c=d*e.util.sin(p)}return{tl:{x:r-c,y:i-u},tr:{x:r+a,y:i-s},bl:{x:r-a,y:i+s},br:{x:r+c,y:i+u}}},render:function(t,n,r,i,o){if("circle"===((i=i||{}).cornerStyle||o.cornerStyle))e.controlsUtils.renderCircleControl.call(this,t,n,r,i,o);else e.controlsUtils.renderSquareControl.call(this,t,n,r,i,o)}}}(e),function(){function t(t,e){var n,r,o,a,s=t.getAttribute("style"),u=t.getAttribute("offset")||0;if(u=(u=parseFloat(u)/(/%$/.test(u)?100:1))<0?0:u>1?1:u,s){var c=s.split(/\s*;\s*/);for(""===c[c.length-1]&&c.pop(),a=c.length;a--;){var l=c[a].split(/\s*:\s*/),f=l[0].trim(),h=l[1].trim();"stop-color"===f?n=h:"stop-opacity"===f&&(o=h)}}return n||(n=t.getAttribute("stop-color")||"rgb(0,0,0)"),o||(o=t.getAttribute("stop-opacity")),r=(n=new i.Color(n)).getAlpha(),o=isNaN(parseFloat(o))?1:parseFloat(o),o*=r*e,{offset:u,color:n.toRgb(),opacity:o}}var e=i.util.object.clone;i.Gradient=i.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,n=this;Object.keys(t).forEach((function(e){n[e]=t[e]})),this.id?this.id+="_"+i.Object.__uid++:this.id=i.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var n=new i.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return i.util.populateWithProperties(this,e,t),e},toSVG:function(t,n){var r,o,a,s,u=e(this.coords,!0),c=(n=n||{},e(this.colorStops,!0)),l=u.r1>u.r2,f=this.gradientTransform?this.gradientTransform.concat():i.iMatrix.concat(),h=-this.offsetX,d=-this.offsetY,p=!!n.additionalTransform,v="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(c.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===v?(h/=t.width,d/=t.height):(h+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(h-=t.pathOffset.x,d-=t.pathOffset.y),f[4]-=h,f[5]-=d,s='id="SVGID_'+this.id+'" gradientUnits="'+v+'"',s+=' gradientTransform="'+(p?n.additionalTransform+" ":"")+i.util.matrixToSVG(f)+'" ',"linear"===this.type?a=["\n']:"radial"===this.type&&(a=["\n']),"radial"===this.type){if(l)for((c=c.concat()).reverse(),r=0,o=c.length;r0){var m=g/Math.max(u.r1,u.r2);for(r=0,o=c.length;r\n')}return a.push("linear"===this.type?"\n":"\n"),a.join("")},toLive:function(t){var e,n,r,o=i.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(o.x1,o.y1,o.x2,o.y2):"radial"===this.type&&(e=t.createRadialGradient(o.x1,o.y1,o.r1,o.x2,o.y2,o.r2)),n=0,r=this.colorStops.length;n1?1:a,isNaN(a)&&(a=1);var s,u,c,l,f=e.getElementsByTagName("stop"),h="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",p=[],v=0,g=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(s="linear",u=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(s="radial",u=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),c=f.length;c--;)p.push(t(f[c],a));return l=i.parseTransformAttribute(d),function(t,e,n,r){var i,o;Object.keys(e).forEach((function(t){"Infinity"===(i=e[t])?o=1:"-Infinity"===i?o=0:(o=parseFloat(e[t],10),"string"===typeof i&&/^(\d+\.\d+)%|(\d+)%$/.test(i)&&(o*=.01,"pixels"===r&&("x1"!==t&&"x2"!==t&&"r2"!==t||(o*=n.viewBoxWidth||n.width),"y1"!==t&&"y2"!==t||(o*=n.viewBoxHeight||n.height)))),e[t]=o}))}(0,u,o,h),"pixels"===h&&(v=-n.left,g=-n.top),new i.Gradient({id:e.getAttribute("id"),type:s,coords:u,colorStops:p,gradientUnits:h,gradientTransform:l,offsetX:v,offsetY:g})}})}(),function(){"use strict";var t=i.util.toFixed;i.Pattern=i.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=i.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!==typeof t.source)e&&e(this);else{var n=this;this.source=i.util.createImage(),i.util.loadImage(t.source,(function(t,r){n.source=t,e&&e(n,r)}),null,this.crossOrigin)}},toObject:function(e){var n,r,o=i.Object.NUM_FRACTION_DIGITS;return"string"===typeof this.source.src?n=this.source.src:"object"===typeof this.source&&this.source.toDataURL&&(n=this.source.toDataURL()),r={type:"pattern",source:n,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:t(this.offsetX,o),offsetY:t(this.offsetY,o),patternTransform:this.patternTransform?this.patternTransform.concat():null},i.util.populateWithProperties(this,r,e),r},toSVG:function(t){var e="function"===typeof this.source?this.source():this.source,n=e.width/t.width,r=e.height/t.height,i=this.offsetX/t.width,o=this.offsetY/t.height,a="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,o&&(r+=Math.abs(o))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(n=1,i&&(n+=Math.abs(i))),e.src?a=e.src:e.toDataURL&&(a=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if("undefined"!==typeof e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var n in"string"===typeof t&&(t=this._parseShadow(t)),t)this[n]=t[n];this.id=e.Object.__uid++},_parseShadow:function(t){var n=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(n)||[];return{color:(n.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,i=40,o=e.Object.NUM_FRACTION_DIGITS,a=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),s=new e.Color(this.color);return t.width&&t.height&&(r=100*n((Math.abs(a.x)+this.blur)/t.width,o)+20,i=100*n((Math.abs(a.y)+this.blur)/t.height,o)+20),t.flipX&&(a.x*=-1),t.flipY&&(a.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},n=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==n[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){"use strict";if(i.StaticCanvas)i.warn("fabric.StaticCanvas is already defined.");else{var t=i.util.object.extend,e=i.util.getElementOffset,n=i.util.removeFromArray,r=i.util.toFixed,o=i.util.transformPoint,a=i.util.invertTransform,s=i.util.getNodeCanvas,u=i.util.createCanvasElement,c=new Error("Could not initialize `canvas` element");i.StaticCanvas=i.util.createClass(i.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:i.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var n=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,n),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,n),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,n),e.overlayColor&&this.setOverlayColor(e.overlayColor,n),this.calcOffset()},_isRetinaScaling:function(){return i.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,i.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=i.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,n){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),n.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,n){return this.__setBgOverlayImage("overlayImage",t,e,n)},setBackgroundImage:function(t,e,n){return this.__setBgOverlayImage("backgroundImage",t,e,n)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,n,r){return"string"===typeof e?i.util.loadImage(e,(function(e,o){if(e){var a=new i.Image(e,r);this[t]=a,a.canvas=this}n&&n(e,o)}),this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,e&&(e.canvas=this),n&&n(e,!1)),this},__setBgOverlayColor:function(t,e,n){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,n),this},_createCanvasElement:function(){var t=u();if(!t)throw c;if(t.style||(t.style={}),"undefined"===typeof t.getContext)throw c;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=i.util.getById(t)||this._createCanvasElement(),i.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var n;for(var r in e=e||{},t)n=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),n+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,n);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,n,r,i=this._activeObject,o=this.backgroundImage,a=this.overlayImage;for(this.viewportTransform=t,n=0,r=this._objects.length;n\n'),this._setSVGBgOverlayColor(n,"background"),this._setSVGBgOverlayImage(n,"backgroundImage",e),this._setSVGObjects(n,e),this.clipPath&&n.push("\n"),this._setSVGBgOverlayColor(n,"overlay"),this._setSVGBgOverlayImage(n,"overlayImage",e),n.push(""),n.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var n,o=e.width||this.width,a=e.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',u=i.Object.NUM_FRACTION_DIGITS;e.viewBox?s='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(n=this.viewportTransform,s='viewBox="'+r(-n[4]/n[0],u)+" "+r(-n[5]/n[3],u)+" "+r(this.width/n[0],u)+" "+r(this.height/n[3],u)+'" '),t.push("\n',"Created with Fabric.js ",i.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+i.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var n=t[e+"Color"];if(n&&n.toLive){var r=t[e+"Vpt"],o=t.viewportTransform,a={width:t.width/(r?o[0]:1),height:t.height/(r?o[3]:1)};return n.toSVG(a,{additionalTransform:r?i.util.matrixToSVG(o):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,n,r,o,a,s,u,c="",l={},f=i.fontPaths,h=[];for(this._objects.forEach((function t(e){h.push(e),e._objects&&e._objects.forEach(t)})),s=0,u=h.length;s',"\n",c,"","\n"].join("")),c},_setSVGObjects:function(t,e){var n,r,i,o=this._objects;for(r=0,i=o.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,i,o=this._activeObject;if(t===o&&"activeSelection"===t.type)for(e=(i=o._objects).length;e--;)r=i[e],n(this._objects,r),this._objects.unshift(r);else n(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,r,i,o=this._activeObject;if(t===o&&"activeSelection"===t.type)for(i=o._objects,e=0;e0+c&&(a=o-1,n(this._objects,i),this._objects.splice(a,0,i)),c++;else 0!==(o=this._objects.indexOf(t))&&(a=this._findNewLowerIndex(t,o,e),n(this._objects,t),this._objects.splice(a,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,n){var r,i;if(n)for(r=e,i=e-1;i>=0;--i){if(t.intersectsWithObject(this._objects[i])||t.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(t)){r=i;break}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,i,o,a,s,u=this._activeObject,c=0;if(t===u&&"activeSelection"===t.type)for(r=(s=u._objects).length;r--;)i=s[r],(o=this._objects.indexOf(i))"}}),t(i.StaticCanvas.prototype,i.Observable),t(i.StaticCanvas.prototype,i.Collection),t(i.StaticCanvas.prototype,i.DataURLExporter),t(i.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=u();if(!e||!e.getContext)return null;var n=e.getContext("2d");return n&&"setLineDash"===t?"undefined"!==typeof n.setLineDash:null}}),i.StaticCanvas.prototype.toJSON=i.StaticCanvas.prototype.toObject,i.isLikelyNode&&(i.StaticCanvas.prototype.createPNGStream=function(){var t=s(this.lowerCanvasEl);return t&&t.createPNGStream()},i.StaticCanvas.prototype.createJPEGStream=function(t){var e=s(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),i.BaseBrush=i.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,n=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=i.devicePixelRatio),n.shadowColor=e.color,n.shadowBlur=e.blur*r,n.shadowOffsetX=e.offsetX*r,n.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new i.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),i.PencilBrush=i.util.createClass(i.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,n){var r=e.midPointFrom(n);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var n=this._points,r=n.length,i=this.canvas.contextTop;this._saveAndTransform(i),this.oldEnd&&(i.beginPath(),i.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(i,n[r-2],n[r-1],!0),i.stroke(),i.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new i.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1]))&&(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),!0)},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new i.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,n,r=this._points[0],o=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&r.x===o.x&&r.y===o.y){var a=this.width/1e3;r=new i.Point(r.x,r.y),o=new i.Point(o.x,o.y),r.x-=a,o.x+=a}for(t.moveTo(r.x,r.y),e=1,n=this._points.length;e=i&&(a=t[n],s.push(a));return s.push(t[o]),s},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),i.CircleBrush=i.util.createClass(i.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),n=this.canvas.contextTop;this._saveAndTransform(n),this.dot(n,e),n.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,n=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(n),t=0,e=r.length;t0&&!this.preserveObjectStacking){e=[],n=[];for(var i=0,o=this._objects.length;i1&&(this._activeObject._objects=n),e.push.apply(e,n)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var n=t.calcTransformMatrix(),r=i.util.invertTransform(n),o=this.restorePointerVpt(e);return i.util.transformPoint(o,r)},isTargetTransparent:function(t,e,n){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var r=this._normalizePointer(t,{x:e,y:n}),o=Math.max(t.cacheTranslationX+r.x*t.zoomX,0),a=Math.max(t.cacheTranslationY+r.y*t.zoomY,0);return i.util.isTransparent(t._cacheContext,Math.round(o),Math.round(a),this.targetFindTolerance)}var s=this.contextCache,u=t.selectionBackgroundColor,c=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(s),s.save(),s.transform(c[0],c[1],c[2],c[3],c[4],c[5]),t.render(s),s.restore(),t.selectionBackgroundColor=u,i.util.isTransparent(s,e,n,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var n=this.getActiveObjects(),r=this._activeObject;return!e||e&&r&&n.length>1&&-1===n.indexOf(e)&&r!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&r&&r!==e},_shouldCenterTransform:function(t,e,n){var r;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?r=this.centeredScaling||t.centeredScaling:"rotate"===e&&(r=this.centeredRotation||t.centeredRotation),r?!n:n},_getOriginFromCorner:function(t,e){var n={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?n.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(n.x="left"),"tl"===e||"mt"===e||"tr"===e?n.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(n.y="top"),n},_getActionFromCorner:function(t,e,n,r){if(!e||!t)return"drag";var i=r.controls[e];return i.getActionName(n,i,r)},_setupCurrentTransform:function(t,n,r){if(n){var o=this.getPointer(t),a=n.__corner,s=n.controls[a],u=r&&a?s.getActionHandler(t,n,s):i.controlsUtils.dragHandler,c=this._getActionFromCorner(r,a,t,n),l=this._getOriginFromCorner(n,a),f=t[this.centeredKey],h={target:n,action:c,actionHandler:u,corner:a,scaleX:n.scaleX,scaleY:n.scaleY,skewX:n.skewX,skewY:n.skewY,offsetX:o.x-n.left,offsetY:o.y-n.top,originX:l.x,originY:l.y,ex:o.x,ey:o.y,lastX:o.x,lastY:o.y,theta:e(n.angle),width:n.width*n.scaleX,shiftKey:t.shiftKey,altKey:f,original:i.util.saveObjectTransform(n)};this._shouldCenterTransform(n,c,f)&&(h.originX="center",h.originY="center"),h.original.originX=l.x,h.original.originY=l.y,this._currentTransform=h,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,n=new i.Point(e.ex,e.ey),r=i.util.transformPoint(n,this.viewportTransform),o=new i.Point(e.ex+e.left,e.ey+e.top),a=i.util.transformPoint(o,this.viewportTransform),s=Math.min(r.x,a.x),u=Math.min(r.y,a.y),c=Math.max(r.x,a.x),l=Math.max(r.y,a.y),f=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(s,u,c-s,l-u)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,s+=f,u+=f,c-=f,l-=f,i.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(s,u,c-s,l-u))},findTarget:function(t,e){if(!this.skipTargetFind){var r,i,o=this.getPointer(t,!0),a=this._activeObject,s=this.getActiveObjects(),u=n(t),c=s.length>1&&!e||1===s.length;if(this.targets=[],c&&a._findTargetCorner(o,u))return a;if(s.length>1&&!e&&a===this._searchPossibleTargets([a],o))return a;if(1===s.length&&a===this._searchPossibleTargets([a],o)){if(!this.preserveObjectStacking)return a;r=a,i=this.targets,this.targets=[]}var l=this._searchPossibleTargets(this._objects,o);return t[this.altSelectionKey]&&l&&r&&l!==r&&(l=r,this.targets=i),l}},_checkTarget:function(t,e,n){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,n.x,n.y))return!0}},_searchPossibleTargets:function(t,e){for(var n,r,o=t.length;o--;){var a=t[o],s=a.group?this._normalizePointer(a.group,e):e;if(this._checkTarget(s,a,e)){(n=t[o]).subTargetCheck&&n instanceof i.Group&&(r=this._searchPossibleTargets(n._objects,e))&&this.targets.push(r);break}}return n},restorePointerVpt:function(t){return i.util.transformPoint(t,i.util.invertTransform(this.viewportTransform))},getPointer:function(e,n){if(this._absolutePointer&&!n)return this._absolutePointer;if(this._pointer&&n)return this._pointer;var r,i=t(e),o=this.upperCanvasEl,a=o.getBoundingClientRect(),s=a.width||0,u=a.height||0;s&&u||("top"in a&&"bottom"in a&&(u=Math.abs(a.top-a.bottom)),"right"in a&&"left"in a&&(s=Math.abs(a.right-a.left))),this.calcOffset(),i.x=i.x-this._offset.left,i.y=i.y-this._offset.top,n||(i=this.restorePointerVpt(i));var c=this.getRetinaScaling();return 1!==c&&(i.x/=c,i.y/=c),r=0===s||0===u?{width:1,height:1}:{width:o.width/s,height:o.height/u},{x:i.x*r.width,y:i.y*r.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,n=this.upperCanvasEl;n?n.className="":(n=this._createCanvasElement(),this.upperCanvasEl=n),i.util.addClass(n,"upper-canvas "+t),this.wrapperEl.appendChild(n),this._copyCanvasStyle(e,n),this._applyCanvasStyle(n),this.contextTop=n.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=i.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),i.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),i.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,n=this.height||t.height;i.util.setStyle(t,{position:"absolute",width:e+"px",height:n+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=n,i.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var n=!1,r=this.getActiveObjects(),i=[],o=[];t.forEach((function(t){-1===r.indexOf(t)&&(n=!0,t.fire("deselected",{e:e,target:t}),o.push(t))})),r.forEach((function(r){-1===t.indexOf(r)&&(n=!0,r.fire("selected",{e:e,target:r}),i.push(r))})),t.length>0&&r.length>0?n&&this.fire("selection:updated",{e:e,selected:i,deselected:o}):r.length>0?this.fire("selection:created",{e:e,selected:i}):t.length>0&&this.fire("selection:cleared",{e:e,deselected:o})},setActiveObject:function(t,e){var n=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(n,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&(!!this._discardActiveObject(e,t)&&(!t.onSelect({e:e})&&(this._activeObject=t,!0)))},_discardActiveObject:function(t,e){var n=this._activeObject;if(n){if(n.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),n=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:n,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){i.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,i.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,n){var r=this._realizeGroupTransformOnObject(t),i=this.callSuper("_toObject",t,e,n);return this._unwindGroupTransformOnObject(t,r),i},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(n){e[n]=t[n]})),i.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,n){var r=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,n),this._unwindGroupTransformOnObject(e,r)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),i.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),i.StaticCanvas)"prototype"!==r&&(i.Canvas[r]=i.StaticCanvas[r])}(),function(){var t=i.util.addListener,e=i.util.removeListener,n={passive:!1};function r(t,e){return t.button&&t.button===e-1}i.util.object.extend(i.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var r=this.upperCanvasEl,o=this._getEventPrefix();t(i.window,"resize",this._onResize),t(r,o+"down",this._onMouseDown),t(r,o+"move",this._onMouseMove,n),t(r,o+"out",this._onMouseOut),t(r,o+"enter",this._onMouseEnter),t(r,"wheel",this._onMouseWheel),t(r,"contextmenu",this._onContextMenu),t(r,"dblclick",this._onDoubleClick),t(r,"dragover",this._onDragOver),t(r,"dragenter",this._onDragEnter),t(r,"dragleave",this._onDragLeave),t(r,"drop",this._onDrop),this.enablePointerEvents||t(r,"touchstart",this._onTouchStart,n),"undefined"!==typeof eventjs&&e in eventjs&&(eventjs[e](r,"gesture",this._onGesture),eventjs[e](r,"drag",this._onDrag),eventjs[e](r,"orientation",this._onOrientationChange),eventjs[e](r,"shake",this._onShake),eventjs[e](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(i.document,t+"up",this._onMouseUp),e(i.document,"touchend",this._onTouchEnd,n),e(i.document,t+"move",this._onMouseMove,n),e(i.document,"touchmove",this._onMouseMove,n)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var n=this;this._hoveredTargets.forEach((function(r){n.fire("mouse:out",{target:e,e:t}),r&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||(!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId))},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();t(i.document,"touchend",this._onTouchEnd,n),t(i.document,"touchmove",this._onMouseMove,n),e(o,a+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();e(o,a+"move",this._onMouseMove,n),t(i.document,a+"up",this._onMouseUp),t(i.document,a+"move",this._onMouseMove,n)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var o=this._getEventPrefix();e(i.document,"touchend",this._onTouchEnd,n),e(i.document,"touchmove",this._onMouseMove,n);var a=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(a.upperCanvasEl,o+"down",a._onMouseDown),a._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var o=this.upperCanvasEl,a=this._getEventPrefix();this._isMainEvent(r)&&(e(i.document,a+"up",this._onMouseUp),e(i.document,a+"move",this._onMouseMove,n),t(o,a+"move",this._onMouseMove,n))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!==!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,n=this._currentTransform,o=this._groupSelector,a=!1,s=!o||0===o.left&&0===o.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),r(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,s);else{if(r(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,s),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(n&&(this._finalizeCurrentTransform(t),a=n.actionPerformed),!s){var u=e===this._activeObject;this._maybeGroupObjects(t),a||(a=this._shouldRender(e)||!u&&e===this._activeObject)}var c,l;if(e){if(c=e._findTargetCorner(this.getPointer(t,!0),i.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),a=!0;else{var f=e.controls[c],h=f&&f.getMouseUpHandler(t,e,f);h&&h(t,n,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(n&&(n.target!==e||n.corner!==c)){var d=n.target&&n.target.controls[n.corner],p=d&&d.getMouseUpHandler(t,e,f);l=l||this.getPointer(t),p&&p(t,n,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,s),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),a?this.requestRenderAll():s||this.renderTop()}}},_simpleEventHandler:function(t,e){var n=this.findTarget(e),r=this.targets,i={e:e,target:n,subTargets:r};if(this.fire(t,i),n&&n.fire(t,i),!r)return n;for(var o=0;o1&&(e=new i.ActiveSelection(n.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(n){for(var r,o=[],a=this._groupSelector.ex,s=this._groupSelector.ey,u=a+this._groupSelector.left,c=s+this._groupSelector.top,l=new i.Point(t(a,u),t(s,c)),f=new i.Point(e(a,u),e(s,c)),h=!this.selectionFullyContained,d=a===u&&s===c,p=this._objects.length;p--&&!((r=this._objects[p])&&r.selectable&&r.visible&&(h&&r.intersectsWithRect(l,f,!0)||r.isContainedWithinRect(l,f,!0)||h&&r.containsPoint(l,null,!0)||h&&r.containsPoint(f,null,!0))&&(o.push(r),d)););return o.length>1&&(o=o.filter((function(t){return!t.onSelect({e:n})}))),o},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}})}(),i.util.object.extend(i.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",n=t.quality||1,r=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),o=this.toCanvasElement(r,t);return i.util.toDataURL(o,e,n)},toCanvasElement:function(t,e){t=t||1;var n=((e=e||{}).width||this.width)*t,r=(e.height||this.height)*t,o=this.getZoom(),a=this.width,s=this.height,u=o*t,c=this.viewportTransform,l=(c[4]-(e.left||0))*t,f=(c[5]-(e.top||0))*t,h=this.interactive,d=[u,0,0,u,l,f],p=this.enableRetinaScaling,v=i.util.createCanvasElement(),g=this.contextTop;return v.width=n,v.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=n,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(v.getContext("2d"),this._objects),this.viewportTransform=c,this.width=a,this.height=s,this.calcViewportBoundaries(),this.interactive=h,this.enableRetinaScaling=p,this.contextTop=g,v}}),i.util.object.extend(i.StaticCanvas.prototype,{loadFromJSON:function(t,e,n){if(t){var r="string"===typeof t?JSON.parse(t):i.util.object.clone(t),o=this,a=r.clipPath,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(t){o.clear(),o._setBgOverlay(r,(function(){a?o._enlivenObjects([a],(function(n){o.clipPath=n[0],o.__setupCanvas.call(o,r,t,s,e)})):o.__setupCanvas.call(o,r,t,s,e)}))}),n),this}},__setupCanvas:function(t,e,n,r){var i=this;e.forEach((function(t,e){i.insertAt(t,e)})),this.renderOnAddRemove=n,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),r&&r()},_setBgOverlay:function(t,e){var n={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var r=function(){n.backgroundImage&&n.overlayImage&&n.backgroundColor&&n.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,n,r),this.__setBgOverlay("overlayImage",t.overlayImage,n,r),this.__setBgOverlay("backgroundColor",t.background,n,r),this.__setBgOverlay("overlayColor",t.overlay,n,r)}else e&&e()},__setBgOverlay:function(t,e,n,r){var o=this;if(!e)return n[t]=!0,void(r&&r());"backgroundImage"===t||"overlayImage"===t?i.util.enlivenObjects([e],(function(e){o[t]=e[0],n[t]=!0,r&&r()})):this["set"+i.util.string.capitalize(t,!0)](e,(function(){n[t]=!0,r&&r()}))},_enlivenObjects:function(t,e,n){t&&0!==t.length?i.util.enlivenObjects(t,(function(t){e&&e(t)}),null,n):e&&e([])},_toDataURL:function(t,e){this.clone((function(n){e(n.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,n){this.clone((function(r){n(r.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var n=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(n,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=i.util.createCanvasElement();e.width=this.width,e.height=this.height;var n=new i.Canvas(e);this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,(function(){n.renderAll(),t&&t(n)})),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):t&&t(n)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.object.extend,r=e.util.object.clone,i=e.util.toFixed,o=e.util.string.capitalize,a=e.util.degreesToRadians,s=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:s,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var n=e.perfLimitSizeTotal,r=t.width,i=t.height,o=e.maxCacheSideLimit,a=e.minCacheSideLimit;if(r<=o&&i<=o&&r*i<=n)return rl&&(t.zoomX/=r/l,t.width=l,t.capped=!0),i>f&&(t.zoomY/=i/f,t.height=f,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),n=e.x*t.scaleX/this.scaleX,r=e.y*t.scaleY/this.scaleY;return{width:n+2,height:r+2,zoomX:t.scaleX,zoomY:t.scaleY,x:n,y:r}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var n=t._currentTransform.target,r=t._currentTransform.action;if(this===n&&r.slice&&"scale"===r.slice(0,5))return!1}var i,o,a=this._cacheCanvas,s=this._limitCacheSize(this._getCacheCanvasDimensions()),u=e.minCacheSideLimit,c=s.width,l=s.height,f=s.zoomX,h=s.zoomY,d=c!==this.cacheWidth||l!==this.cacheHeight,p=this.zoomX!==f||this.zoomY!==h,v=d||p,g=0,m=0,y=!1;if(d){var b=this._cacheCanvas.width,w=this._cacheCanvas.height,x=c>b||l>w;y=x||(c<.9*b||l<.9*w)&&b>u&&w>u,x&&!s.capped&&(c>u||l>u)&&(g=.1*c,m=.1*l)}return this instanceof e.Text&&this.path&&(v=!0,y=!0,g+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!v&&(y?(a.width=Math.ceil(c+g),a.height=Math.ceil(l+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,a.width,a.height)),i=s.x/2,o=s.y/2,this.cacheTranslationX=Math.round(a.width/2-i)+i,this.cacheTranslationY=Math.round(a.height/2-o)+o,this.cacheWidth=c,this.cacheHeight=l,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(f,h),this.zoomX=f,this.zoomY=h,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,n=this.calcTransformMatrix(!e);t.transform(n[0],n[1],n[2],n[3],n[4],n[5])},toObject:function(t){var n=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:i(this.left,n),top:i(this.top,n),width:i(this.width,n),height:i(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:i(this.strokeWidth,n),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:i(this.strokeMiterLimit,n),scaleX:i(this.scaleX,n),scaleY:i(this.scaleY,n),angle:i(this.angle,n),flipX:this.flipX,flipY:this.flipY,opacity:i(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:i(this.skewX,n),skewY:i(this.skewY,n)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(t),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var n=e.util.getKlass(t.type).prototype;return n.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===n[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(n[e])&&0===t[e].length&&0===n[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,n=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),i=this.canvas.getRetinaScaling();e*=r*i,n*=r*i}return{scaleX:e,scaleY:n}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,n){var r="scaleX"===t||"scaleY"===t,i=this[t]!==n,o=!1;return r&&(n=this._constrainScale(n)),"scaleX"===t&&n<0?(this.flipX=!this.flipX,n*=-1):"scaleY"===t&&n<0?(this.flipY=!this.flipY,n*=-1):"shadow"!==t||!n||n instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",n):n=new e.Shadow(n),this[t]=n,i&&(o=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,o&&this.group.set("dirty",!0)):o&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!==typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,n){if(t.save(),n.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",n.absolutePositioned){var r=e.util.invertTransform(this.calcTransformMatrix());t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}n.transform(t),t.scale(1/n.zoomX,1/n.zoomY),t.drawImage(n._cacheCanvas,-n.cacheTranslationX,-n.cacheTranslationY),t.restore()},drawObject:function(t,e){var n=this.fill,r=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=n,this.stroke=r},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,n=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-n/2,e,n)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var n=e.stroke;n&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,n.toLive?"percentage"===n.gradientUnits||n.gradientTransform||n.patternTransform?this._applyPatternForTransformedGradient(t,n):(t.strokeStyle=n.toLive(t,this),this._applyPatternGradientTransform(t,n)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var n=e.fill;n&&(n.toLive?(t.fillStyle=n.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=n)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,n){var r,i,o,s=this.getViewportTransform(),u=this.calcTransformMatrix();i="undefined"!==typeof(n=n||{}).hasBorders?n.hasBorders:this.hasBorders,o="undefined"!==typeof n.hasControls?n.hasControls:this.hasControls,u=e.util.multiplyTransformMatrices(s,u),r=e.util.qrDecompose(u),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),t.rotate(a(this.group?r.angle:this.angle)),n.forActiveSelection||this.group?i&&this.drawBordersInGroup(t,r,n):i&&this.drawBorders(t,n),o&&this.drawControls(t,n),t.restore()},_setShadow:function(t){if(this.shadow){var n,r=this.shadow,i=this.canvas,o=i&&i.viewportTransform[0]||1,a=i&&i.viewportTransform[3]||1;n=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),i&&i._isRetinaScaling()&&(o*=e.devicePixelRatio,a*=e.devicePixelRatio),t.shadowColor=r.color,t.shadowBlur=r.blur*e.browserShadowBlurConstant*(o+a)*(n.scaleX+n.scaleY)/4,t.shadowOffsetX=r.offsetX*o*n.scaleX,t.shadowOffsetY=r.offsetY*a*n.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var n=e.gradientTransform||e.patternTransform,r=-this.width/2+e.offsetX||0,i=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,r,i):t.transform(1,0,0,1,r,i),n&&t.transform(n[0],n[1],n[2],n[3],n[4],n[5]),{offsetX:r,offsetY:i}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,n){var r,i=this._limitCacheSize(this._getCacheCanvasDimensions()),o=e.util.createCanvasElement(),a=this.canvas.getRetinaScaling(),s=i.x/this.scaleX/a,u=i.y/this.scaleY/a;o.width=s,o.height=u,(r=o.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(s,0),r.lineTo(s,u),r.lineTo(0,u),r.closePath(),r.translate(s/2,u/2),r.scale(i.zoomX/this.scaleX/a,i.zoomY/this.scaleY/a),this._applyPatternGradientTransform(r,n),r.fillStyle=n.toLive(t),r.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(a*this.scaleX/i.zoomX,a*this.scaleY/i.zoomY),t.strokeStyle=r.createPattern(o,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var n=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),n=e.util.transformPoint(n,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,n.x+=t.offsetLeft,n.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(n,"center","center")},clone:function(t,n){var r=this.toObject(n);this.constructor.fromObject?this.constructor.fromObject(r,t):e.Object._fromObject("Object",r,t)},cloneAsImage:function(t,n){var r=this.toCanvasElement(n);return t&&t(new e.Image(r)),this},toCanvasElement:function(t){t||(t={});var n=e.util,r=n.saveObjectTransform(this),i=this.group,o=this.shadow,a=Math.abs,s=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&n.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var u,c,l,f,h=e.util.createCanvasElement(),d=this.getBoundingRect(!0,!0),p=this.shadow,v={x:0,y:0};p&&(c=p.blur,u=p.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),v.x=2*Math.round(a(p.offsetX)+c)*a(u.scaleX),v.y=2*Math.round(a(p.offsetY)+c)*a(u.scaleY)),l=d.width+v.x,f=d.height+v.y,h.width=Math.ceil(l),h.height=Math.ceil(f);var g=new e.StaticCanvas(h,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(g.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(g.width/2,g.height/2),"center","center");var m=this.canvas;g.add(this);var y=g.toCanvasElement(s||1,t);return this.shadow=o,this.set("canvas",m),i&&(this.group=i),this.set(r).setCoords(),g._objects=[],g.dispose(),g=null,y},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,n){n=n||this.canvas.getPointer(t);var r=new e.Point(n.x,n.y),i=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,i,a(-this.angle))),{x:r.x-i.x,y:r.y-i.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),n(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,n,i,o){var a=e[t];n=r(n,!0),e.util.enlivenPatterns([n.fill,n.stroke],(function(t){"undefined"!==typeof t[0]&&(n.fill=t[0]),"undefined"!==typeof t[1]&&(n.stroke=t[1]),e.util.enlivenObjectEnlivables(n,n,(function(){var t=o?new a(n[o],n):new a(n);i&&i(t)}))}))},e.Object.__uid=0)}(e),function(){var t=i.util.degreesToRadians,e={left:-.5,center:0,right:.5},n={top:-.5,center:0,bottom:.5};i.util.object.extend(i.Object.prototype,{translateToGivenOrigin:function(t,r,o,a,s){var u,c,l,f=t.x,h=t.y;return"string"===typeof r?r=e[r]:r-=.5,"string"===typeof a?a=e[a]:a-=.5,"string"===typeof o?o=n[o]:o-=.5,"string"===typeof s?s=n[s]:s-=.5,c=s-o,((u=a-r)||c)&&(l=this._getTransformedDimensions(),f=t.x+u*l.x,h=t.y+c*l.y),new i.Point(f,h)},translateToCenterPoint:function(e,n,r){var o=this.translateToGivenOrigin(e,n,r,"center","center");return this.angle?i.util.rotatePoint(o,e,t(this.angle)):o},translateToOriginPoint:function(e,n,r){var o=this.translateToGivenOrigin(e,"center","center",n,r);return this.angle?i.util.rotatePoint(o,e,t(this.angle)):o},getCenterPoint:function(){var t=new i.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var n=this.getCenterPoint();return this.translateToOriginPoint(n,t,e)},toLocalPoint:function(e,n,r){var o,a,s=this.getCenterPoint();return o="undefined"!==typeof n&&"undefined"!==typeof r?this.translateToGivenOrigin(s,"center","center",n,r):new i.Point(this.left,this.top),a=new i.Point(e.x,e.y),this.angle&&(a=i.util.rotatePoint(a,s,-t(this.angle))),a.subtractEquals(o)},setPositionByOrigin:function(t,e,n){var r=this.translateToCenterPoint(t,e,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(n){var r,o,a=t(this.angle),s=this.getScaledWidth(),u=i.util.cos(a)*s,c=i.util.sin(a)*s;r="string"===typeof this.originX?e[this.originX]:this.originX-.5,o="string"===typeof n?e[n]:n-.5,this.left+=u*(o-r),this.top+=c*(o-r),this.setCoords(),this.originX=n},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){var t=i.util,e=t.degreesToRadians,n=t.multiplyTransformMatrices,r=t.transformPoint;t.object.extend(i.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return n=this._getCoords(t,e),[new i.Point(n.tl.x,n.tl.y),new i.Point(n.tr.x,n.tr.y),new i.Point(n.br.x,n.br.y),new i.Point(n.bl.x,n.bl.y)];var n},intersectsWithRect:function(t,e,n,r){var o=this.getCoords(n,r);return"Intersection"===i.Intersection.intersectPolygonRectangle(o,t,e).status},intersectsWithObject:function(t,e,n){return"Intersection"===i.Intersection.intersectPolygonPolygon(this.getCoords(e,n),t.getCoords(e,n)).status||t.isContainedWithinObject(this,e,n)||this.isContainedWithinObject(t,e,n)},isContainedWithinObject:function(t,e,n){for(var r=this.getCoords(e,n),i=e?t.aCoords:t.lineCoords,o=0,a=t._getImageLines(i);o<4;o++)if(!t.containsPoint(r[o],a))return!1;return!0},isContainedWithinRect:function(t,e,n,r){var i=this.getBoundingRect(n,r);return i.left>=t.x&&i.left+i.width<=e.x&&i.top>=t.y&&i.top+i.height<=e.y},containsPoint:function(t,e,n,r){var i=this._getCoords(n,r),o=(e=e||this._getImageLines(i),this._findCrossPoints(t,e));return 0!==o&&o%2===1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,n=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=n.x&&t.x>=e.x&&t.y<=n.y&&t.y>=e.y}))||(!!this.intersectsWithRect(e,n,!0,t)||this._containsCenterOfCanvas(e,n,t))},_containsCenterOfCanvas:function(t,e,n){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,n)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,n=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,n,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=n.x||t.x<=e.x)&&(t.y>=n.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,n,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var n,r,i,o=0;for(var a in e)if(!((i=e[a]).o.y=t.y&&i.d.y>=t.y)&&(i.o.x===i.d.x&&i.o.x>=t.x?r=i.o.x:(0,n=(i.d.y-i.o.y)/(i.d.x-i.o.x),r=-(t.y-0*t.x-(i.o.y-n*i.o.x))/(0-n)),r>=t.x&&(o+=1),2===o))break;return o},getBoundingRect:function(e,n){var r=this.getCoords(e,n);return t.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var n=(e=e||{}).reviver,r=e.additionalTransform||"",i=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),o=t.indexOf("COMMON_PARTS");return t[o]=i,n?n(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var n,r,o=(e=e||{}).noStyle,a=e.reviver,s=o?"":'style="'+this.getSvgStyles()+'" ',u=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",c=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",f=c&&c.absolutePositioned,h=this.stroke,d=this.fill,p=this.shadow,v=[],g=t.indexOf("COMMON_PARTS"),m=e.additionalTransform;return c&&(c.clipPathId="CLIPPATH_"+i.Object.__uid++,r='\n'+c.toClipPathSVG(a)+"\n"),f&&v.push("\n"),v.push("\n"),n=[s,l,o?"":this.addPaintOrder()," ",m?'transform="'+m+'" ':""].join(""),t[g]=n,d&&d.toLive&&v.push(d.toSVG(this)),h&&h.toLive&&v.push(h.toSVG(this)),p&&v.push(p.toSVG(this)),c&&v.push(r),v.push(t.join("")),v.push("\n"),f&&v.push("\n"),a?a(v.join("")):v.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=i.util.object.extend,e="stateProperties";function n(e,n,r){var i={};r.forEach((function(t){i[t]=e[t]})),t(e[n],i,!0)}function r(t,e,n){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var i=0,o=t.length;i=0;u--)if(i=s[u],this.isControlVisible(i)&&(r=this._getImageLines(e?this.oCoords[i].touchCorner:this.oCoords[i].corner),0!==(n=this._findCrossPoints({x:o,y:a},r))&&n%2===1))return this.__corner=i,i;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var n=this.controls[e];t[e].corner=n.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=n.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var n=this.getCenterPoint(),r=this._calculateCurrentDimensions(),i=this.canvas.viewportTransform;return e.translate(n.x,n.y),e.scale(1/i[0],1/i[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-r.x/2,-r.y/2,r.x,r.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var n=this._calculateCurrentDimensions(),r=this.borderScaleFactor,i=n.x+r,o=n.y+r,a="undefined"!==typeof e.hasControls?e.hasControls:this.hasControls,s=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-i/2,-o/2,i,o),a&&(t.beginPath(),this.forEachControl((function(e,n,r){e.withConnection&&e.getVisibility(r,n)&&(s=!0,t.moveTo(e.x*i,e.y*o),t.lineTo(e.x*i+e.offsetX,e.y*o+e.offsetY))})),s&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,n){n=n||{};var r=i.util.sizeAfterTransform(this.width,this.height,e),o=this.strokeWidth,a=this.strokeUniform,s=this.borderScaleFactor,u=r.x+o*(a?this.canvas.getZoom():e.scaleX)+s,c=r.y+o*(a?this.canvas.getZoom():e.scaleY)+s;return t.save(),this._setLineDash(t,n.borderDashArray||this.borderDashArray),t.strokeStyle=n.borderColor||this.borderColor,t.strokeRect(-u/2,-c/2,u,c),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var n,r,o=this.canvas.getRetinaScaling();return t.setTransform(o,0,0,o,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(n=this.group.calcTransformMatrix()),this.forEachControl((function(o,a,s){r=s.oCoords[a],o.getVisibility(s,a)&&(n&&(r=i.util.transformPoint(r,n)),o.render(t,r.x,r.y,e,s))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),i.util.object.extend(i.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var n=function(){},r=(e=e||{}).onComplete||n,o=e.onChange||n,a=this;return i.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),a.requestRenderAll(),o()},onComplete:function(){t.setCoords(),r()}})},fxCenterObjectV:function(t,e){var n=function(){},r=(e=e||{}).onComplete||n,o=e.onChange||n,a=this;return i.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),a.requestRenderAll(),o()},onComplete:function(){t.setCoords(),r()}})},fxRemove:function(t,e){var n=function(){},r=(e=e||{}).onComplete||n,o=e.onChange||n,a=this;return i.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),a.requestRenderAll(),o()},onComplete:function(){a.remove(t),r()}})}}),i.util.object.extend(i.Object.prototype,{animate:function(){if(arguments[0]&&"object"===typeof arguments[0]){var t,e,n=[],r=[];for(t in arguments[0])n.push(t);for(var i=0,o=n.length;i-1||o&&a.colorProperties.indexOf(o[1])>-1,u=o?this.get(o[0])[o[1]]:this.get(t);"from"in n||(n.from=u),s||(e=~e.indexOf("=")?u+parseFloat(e.replace("=","")):parseFloat(e));var c={target:this,startValue:n.from,endValue:e,byValue:n.by,easing:n.easing,duration:n.duration,abort:n.abort&&function(t,e,r){return n.abort.call(a,t,e,r)},onChange:function(e,i,s){o?a[o[0]][o[1]]=e:a.set(t,e),r||n.onChange&&n.onChange(e,i,s)},onComplete:function(t,e,i){r||(a.setCoords(),n.onComplete&&n.onComplete(t,e,i))}};return s?i.util.animateColor(c.startValue,c.endValue,c.duration,c):i.util.animate(c)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.object.extend,r=e.util.object.clone,i={x1:1,x2:1,y1:1,y2:1};function o(t,e){var n=t.origin,r=t.axis1,i=t.axis2,o=t.dimension,a=e.nearest,s=e.center,u=e.farthest;return function(){switch(this.get(n)){case a:return Math.min(this.get(r),this.get(i));case s:return Math.min(this.get(r),this.get(i))+.5*this.get(o);case u:return Math.max(this.get(r),this.get(i))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),"undefined"!==typeof i[t]&&this._setWidthHeight(),this},_getLeftToOriginX:o({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:o({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var n=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=n},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return n(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,n=t*this.width*.5,r=e*this.height*.5;return{x1:n,x2:t*this.width*-.5,y1:r,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,r,i){i=i||{};var o=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),a=[o.x1||0,o.y1||0,o.x2||0,o.y2||0];r(new e.Line(a,n(o,i)))},e.Line.fromObject=function(t,n){var i=r(t,!0);i.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",i,(function(t){delete t.points,n&&n(t)}),"points")})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,r=(this.endAngle-this.startAngle)%360;if(0===r)t=["\n'];else{var i=n(this.startAngle),o=n(this.endAngle),a=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(o)*a+" "+e.util.sin(o)*a,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,n(this.startAngle),n(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,n){var r,i=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=i)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");i.left=(i.left||0)-i.radius,i.top=(i.top||0)-i.radius,n(new e.Circle(i))},e.Circle.fromObject=function(t,n){e.Object._fromObject("Circle",t,n)})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,n=this.height/2;t.beginPath(),t.moveTo(-e,n),t.lineTo(0,-n),t.lineTo(e,n),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,n){return e.Object._fromObject("Triangle",t,n)})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,n,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,n){var r=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,n(new e.Ellipse(r))},e.Ellipse.fromObject=function(t,n){e.Object._fromObject("Ellipse",t,n)})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,n=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,i=this.height,o=-this.width/2,a=-this.height/2,s=0!==e||0!==n,u=.4477152502;t.beginPath(),t.moveTo(o+e,a),t.lineTo(o+r-e,a),s&&t.bezierCurveTo(o+r-u*e,a,o+r,a+u*n,o+r,a+n),t.lineTo(o+r,a+i-n),s&&t.bezierCurveTo(o+r,a+i-u*n,o+r-u*e,a+i,o+r-e,a+i),t.lineTo(o+e,a+i),s&&t.bezierCurveTo(o+u*e,a+i,o,a+i-u*n,o,a+i-n),t.lineTo(o,a+n),s&&t.bezierCurveTo(o,a+u*n,o+u*e,a,o+e,a),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r,i){if(!t)return r(null);i=i||{};var o=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);o.left=o.left||0,o.top=o.top||0,o.height=o.height||0,o.width=o.width||0;var a=new e.Rect(n(i?e.util.object.clone(i):{},o));a.visible=a.visible&&a.width>0&&a.height>0,r(a)},e.Rect.fromObject=function(t,n){return e.Object._fromObject("Rect",t,n)})}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.util.object.extend,r=e.util.array.min,i=e.util.array.max,o=e.util.toFixed,a=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return a(this.points,this,!0)},_setPositionDimensions:function(t){var e,n=this._calcDimensions(t),r=this.exactBoundingBox?this.strokeWidth:0;this.width=n.width-r,this.height=n.height-r,t.fromSVG||(e=this.translateToGivenOrigin({x:n.left-this.strokeWidth/2+r/2,y:n.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),"undefined"===typeof t.left&&(this.left=t.fromSVG?n.left:e.x),"undefined"===typeof t.top&&(this.top=t.fromSVG?n.top:e.y),this.pathOffset={x:n.left+this.width/2+r/2,y:n.top+this.height/2+r/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=r(t,"x")||0,n=r(t,"y")||0;return{left:e,top:n,width:(i(t,"x")||0)-e,height:(i(t,"y")||0)-n}},toObject:function(t){return n(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],n=this.pathOffset.x,r=this.pathOffset.y,i=e.Object.NUM_FRACTION_DIGITS,a=0,s=this.points.length;a\n']},commonRender:function(t){var e,n=this.points.length,r=this.pathOffset.x,i=this.pathOffset.y;if(!n||isNaN(this.points[n-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-i);for(var o=0;o"},toObject:function(t){return i(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+a(-this.pathOffset.x,t)+", "+a(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,i,o=[],a=[],s=0,u=0,c=0,l=0,f=0,h=this.path.length;f"},addWithUpdate:function(t){var n=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(n&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,n?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,n){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(t,n);if("canvas"===t)for(;r--;)this._objects[r]._set(t,n);e.Object.prototype._set.call(this,t,n)},toObject:function(t){var n=this.includeDefaultValues,r=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var r=e.includeDefaultValues;e.includeDefaultValues=n;var i=e.toObject(t);return e.includeDefaultValues=r,i})),i=e.Object.prototype.toObject.call(this,t);return i.objects=r,i},toDatalessObject:function(t){var n,r=this.sourcePath;if(r)n=r;else{var i=this.includeDefaultValues;n=this._objects.map((function(e){var n=e.includeDefaultValues;e.includeDefaultValues=i;var r=e.toDatalessObject(t);return e.includeDefaultValues=n,r}))}var o=e.Object.prototype.toDatalessObject.call(this,t);return o.objects=n,o},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var n=0,r=this._objects.length;n\n"],n=0,r=this._objects.length;n\n"),e},getSvgStyles:function(){var t="undefined"!==typeof this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],n=0,r=this._objects.length;n"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,n){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),"undefined"===typeof(n=n||{}).hasControls&&(n.hasControls=!1),n.forActiveSelection=!0;for(var r=0,i=this._objects.length;r\n','\t\n',"\n"),s=' clip-path="url(#imageCrop_'+c+')" '}if(this.imageSmoothing||(u='" image-rendering="optimizeSpeed'),n.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return e="fill"!==this.paintFirst?e.concat(t,n):e.concat(n,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,n){return i.util.loadImage(t,(function(t,r){this.setElement(t,n),this._setWidthHeight(),e&&e(this,r)}),this,n&&n.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,n=this.getTotalObjectScaling(),r=n.scaleX,o=n.scaleY,a=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||r>e&&o>e)return this._element=a,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=o);i.filterBackend||(i.filterBackend=i.initFilterBackend());var s=i.util.createCanvasElement(),u=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,c=a.width,l=a.height;s.width=c,s.height=l,this._element=s,this._lastScaleX=t.scaleX=r,this._lastScaleY=t.scaleY=o,i.filterBackend.applyFilters([t],a,c,l,this._element,u),this._filterScalingX=s.width/this._originalElement.width,this._filterScalingY=s.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,n=e.naturalWidth||e.width,r=e.naturalHeight||e.height;if(this._element===this._originalElement){var o=i.util.createCanvasElement();o.width=n,o.height=r,this._element=o,this._filteredEl=o}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,n,r),this._lastScaleX=1,this._lastScaleY=1;return i.filterBackend||(i.filterBackend=i.initFilterBackend()),i.filterBackend.applyFilters(t,this._originalElement,n,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){i.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){i.util.setImageSmoothing(t,this.imageSmoothing),i.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var n=this._filterScalingX,r=this._filterScalingY,i=this.width,o=this.height,a=Math.min,s=Math.max,u=s(this.cropX,0),c=s(this.cropY,0),l=e.naturalWidth||e.width,f=e.naturalHeight||e.height,h=u*n,d=c*r,p=a(i*n,l-h),v=a(o*r,f-d),g=-i/2,m=-o/2,y=a(i,l/n-u),b=a(o,f/r-c);e&&t.drawImage(e,h,d,p,v,g,m,y,b)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(i.util.getById(t),e),i.util.addClass(this.getElement(),i.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?i.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=i.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),n=this._element.width,r=this._element.height,o=1,a=1,s=0,u=0,c=0,l=0,f=this.width,h=this.height,d={width:f,height:h};return!e||"none"===e.alignX&&"none"===e.alignY?(o=f/n,a=h/r):("meet"===e.meetOrSlice&&(t=(f-n*(o=a=i.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(s=-t),"Max"===e.alignX&&(s=t),t=(h-r*a)/2,"Min"===e.alignY&&(u=-t),"Max"===e.alignY&&(u=t)),"slice"===e.meetOrSlice&&(t=n-f/(o=a=i.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(c=t/2),"Max"===e.alignX&&(c=t),t=r-h/a,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),n=f/o,r=h/a)),{width:n,height:r,scaleX:o,scaleY:a,offsetLeft:s,offsetTop:u,cropX:c,cropY:l}}}),i.Image.CSS_CANVAS="canvas-img",i.Image.prototype.getSvgSrc=i.Image.prototype.getSrc,i.Image.fromObject=function(t,e){var n=i.util.object.clone(t);i.util.loadImage(n.src,(function(t,r){r?e&&e(null,!0):i.Image.prototype._initFilters.call(n,n.filters,(function(r){n.filters=r||[],i.Image.prototype._initFilters.call(n,[n.resizeFilter],(function(r){n.resizeFilter=r[0],i.util.enlivenObjectEnlivables(n,n,(function(){var r=new i.Image(t,n);e(r,!1)}))}))}))}),null,n.crossOrigin)},i.Image.fromURL=function(t,e,n){i.util.loadImage(t,(function(t,r){e&&e(new i.Image(t,n),r)}),null,n&&n.crossOrigin)},i.Image.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),i.Image.fromElement=function(t,n,r){var o=i.parseAttributes(t,i.Image.ATTRIBUTE_NAMES);i.Image.fromURL(o["xlink:href"],n,e(r?i.util.object.clone(r):{},o))})}(e),i.util.object.extend(i.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},n=(t=t||{}).onComplete||e,r=t.onChange||e,o=this;return i.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){o.rotate(t),r()},onComplete:function(){o.setCoords(),n()}})}}),i.util.object.extend(i.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){"use strict";function t(t,e){var n="precision "+e+" float;\nvoid main(){}",r=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(r,n),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}i.isWebglSupported=function(e){if(i.isLikelyNode)return!1;e=e||i.WebglFilterBackend.prototype.tileSize;var n=document.createElement("canvas"),r=n.getContext("webgl")||n.getContext("experimental-webgl"),o=!1;if(r){i.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),o=i.maxTextureSize>=e;for(var a=["highp","mediump","lowp"],s=0;s<3;s++)if(t(r,a[s])){i.webGlPrecision=a[s];break}}return this.isSupported=o,o},i.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var n,r="undefined"!==typeof window.performance;try{new ImageData(1,1),n=!0}catch(p){n=!1}var o="undefined"!==typeof ArrayBuffer,u="undefined"!==typeof Uint8ClampedArray;if(r&&n&&o&&u){var c=i.util.createCanvasElement(),l=new ArrayBuffer(t*e*4);if(i.forceGLPutImageData)return this.imageBuffer=l,void(this.copyGLTo2D=s);var f,h,d={imageBuffer:l,destinationWidth:t,destinationHeight:e,targetCanvas:c};c.width=t,c.height=e,f=window.performance.now(),a.call(d,this.gl,d),h=window.performance.now()-f,f=window.performance.now(),s.call(d,this.gl,d),h>window.performance.now()-f?(this.imageBuffer=l,this.copyGLTo2D=s):this.copyGLTo2D=a}},createWebGLCanvas:function(t,e){var n=i.util.createCanvasElement();n.width=t,n.height=e;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},o=n.getContext("webgl",r);o||(o=n.getContext("experimental-webgl",r)),o&&(o.clearColor(0,0,0,0),this.canvas=n,this.gl=o)},applyFilters:function(t,e,n,r,i,o){var a,s=this.gl;o&&(a=this.getCachedTexture(o,e));var u={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:n,sourceHeight:r,destinationWidth:n,destinationHeight:r,context:s,sourceTexture:this.createTexture(s,n,r,!a&&e),targetTexture:this.createTexture(s,n,r),originalTexture:a||this.createTexture(s,n,r,!a&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:i},c=s.createFramebuffer();return s.bindFramebuffer(s.FRAMEBUFFER,c),t.forEach((function(t){t&&t.applyTo(u)})),function(t){var e=t.targetCanvas,n=e.width,r=e.height,i=t.destinationWidth,o=t.destinationHeight;n===i&&r===o||(e.width=i,e.height=o)}(u),this.copyGLTo2D(s,u),s.bindTexture(s.TEXTURE_2D,null),s.deleteTexture(u.sourceTexture),s.deleteTexture(u.targetTexture),s.deleteFramebuffer(c),i.getContext("2d").setTransform(1,0,0,1,0,0),u},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,n,r){var i=t.createTexture();return t.bindTexture(t.TEXTURE_2D,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,n,0,t.RGBA,t.UNSIGNED_BYTE,null),i},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var n=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=n,n},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:a,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var n=t.getExtension("WEBGL_debug_renderer_info");if(n){var r=t.getParameter(n.UNMASKED_RENDERER_WEBGL),i=t.getParameter(n.UNMASKED_VENDOR_WEBGL);r&&(e.renderer=r.toLowerCase()),i&&(e.vendor=i.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){"use strict";var t=function(){};function e(){}i.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,n,r,i){var o=i.getContext("2d");o.drawImage(e,0,0,n,r);var a={sourceWidth:n,sourceHeight:r,imageData:o.getImageData(0,0,n,r),originalEl:e,originalImageData:o.getImageData(0,0,n,r),canvasEl:i,ctx:o,filterBackend:this};return t.forEach((function(t){t.applyTo(a)})),a.imageData.width===n&&a.imageData.height===r||(i.width=a.imageData.width,i.height=a.imageData.height),o.putImageData(a.imageData,0,0),a}}}(),i.Image=i.Image||{},i.Image.filters=i.Image.filters||{},i.Image.filters.BaseFilter=i.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,n){e=e||this.fragmentSource,n=n||this.vertexSource,"highp"!==i.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+i.webGlPrecision+" float"));var r=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(r,n),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var o=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(o,e),t.compileShader(o),!t.getShaderParameter(o,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(o));var a=t.createProgram();if(t.attachShader(a,r),t.attachShader(a,o),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(a));var s=this.getAttributeLocations(t,a),u=this.getUniformLocations(t,a)||{};return u.uStepW=t.getUniformLocation(a,"uStepW"),u.uStepH=t.getUniformLocation(a,"uStepH"),{program:a,attributeLocations:s,uniformLocations:u}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,n){var r=e.aPosition,i=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,i),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,n,r=t.context;t.passes>1?(e=t.destinationWidth,n=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===n||(r.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(r,e,n)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=i.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var n=e[t].length;n--;)if(this[t][n]!==e[t][n])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,n=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(n.program),this.sendAttributeData(e,n.attributeLocations,t.aPosition),e.uniform1f(n.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(n.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,n.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,n){t.activeTexture(n),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),i.Image.filters.BaseFilter.fromObject=function(t,e){var n=new i.Image.filters[t.type](t);return e&&e(n),n},function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.Image.filters,r=e.util.createClass;n.ColorMatrix=r(n.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,n,r,i,o,a=t.imageData.data,s=a.length,u=this.matrix,c=this.colorsOnly;for(o=0;o=w||a<0||a>=b||(u=4*(s*b+a),c=g[d*m+h],e+=v[u]*c,n+=v[u+1]*c,r+=v[u+2]*c,S||(i+=v[u+3]*c));_[o]=e,_[o+1]=n,_[o+2]=r,_[o+3]=S?v[o+3]:i}t.imageData=x},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.Image.filters,r=e.util.createClass;n.Grayscale=r(n.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,n,r=t.imageData.data,i=r.length,o=this.mode;for(e=0;ec[0]&&i>c[1]&&o>c[2]&&r 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,n=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(n)||(e=this.buildSource(this.mode),t.programCache[n]=this.createProgram(t.context,e)),t.programCache[n]},applyTo2d:function(t){var n,r,i,o,a,s,u,c=t.imageData.data,l=c.length,f=1-this.alpha;n=(u=new e.Color(this.color).getSource())[0]*this.alpha,r=u[1]*this.alpha,i=u[2]*this.alpha;for(var h=0;h=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var n=(e*=Math.PI)/t;return s(e)/e*s(n)/n}},applyTo2d:function(t){var e=t.imageData,n=this.scaleX,r=this.scaleY;this.rcpScaleX=1/n,this.rcpScaleY=1/r;var i,o=e.width,s=e.height,u=a(o*n),c=a(s*r);"sliceHack"===this.resizeType?i=this.sliceByTwo(t,o,s,u,c):"hermite"===this.resizeType?i=this.hermiteFastResize(t,o,s,u,c):"bilinear"===this.resizeType?i=this.bilinearFiltering(t,o,s,u,c):"lanczos"===this.resizeType&&(i=this.lanczosResize(t,o,s,u,c)),t.imageData=i},sliceByTwo:function(t,n,i,o,a){var s,u,c=t.imageData,l=.5,f=!1,h=!1,d=n*l,p=i*l,v=e.filterBackend.resources,g=0,m=0,y=n,b=0;for(v.sliceByTwo||(v.sliceByTwo=document.createElement("canvas")),((s=v.sliceByTwo).width<1.5*n||s.height=e)){L=r(1e3*o(A-x.x)),w[L]||(w[L]={});for(var D=_.y-b;D<=_.y+b;D++)D<0||D>=a||(N=r(1e3*o(D-x.y)),w[L][N]||(w[L][N]=d(i(n(L*g,2)+n(N*m,2))/1e3)),(E=w[L][N])>0&&(k+=E,T+=E*l[C=4*(D*e+A)],P+=E*l[C+1],M+=E*l[C+2],O+=E*l[C+3]))}h[C=4*(S*s+u)]=T/k,h[C+1]=P/k,h[C+2]=M/k,h[C+3]=O/k}return++u1&&N<-1||(b=2*N*N*N-3*N*N+1)>0&&(E+=b*d[(L=4*(O+k*e))+3],x+=b,d[L+3]<255&&(b=b*d[L+3]/250),_+=b*d[L],S+=b*d[L+1],A+=b*d[L+2],w+=b)}v[y]=_/w,v[y+1]=S/w,v[y+2]=A/w,v[y+3]=E/x}return p},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.Image.filters,r=e.util.createClass;n.Contrast=r(n.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,n=t.imageData.data,r=n.length,i=Math.floor(255*this.contrast),o=259*(i+255)/(255*(259-i));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?n[0]=t:n[1]=t,n}}),n.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){"use strict";var e=t.fabric||(t.fabric={}),n=e.Image.filters,r=e.util.createClass;n.Gamma=r(n.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],n.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,n=t.imageData.data,r=this.gamma,i=n.length,o=1/r[0],a=1/r[1],s=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,i=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,n){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,n)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,n=this._textLines.length;et&&(t=r)}return t},_renderTextLine:function(t,e,n,r,i,o){this._renderChars(t,e,n,r,i,o)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,n,r,i,o,a,s,u=t.fillStyle,c=this._getLeftOffset(),l=this._getTopOffset(),f=0,h=0,d=this.path,p=0,v=this._textLines.length;p=0:ns?f%=s:f<0&&(f+=s),this._setGraphemeOnPath(f,o,a),f+=o.kernedWidth}return{width:u,numOfSpaces:0}},_setGraphemeOnPath:function(t,n,r){var i=t+n.kernedWidth/2,o=this.path,a=e.util.getPointOnPath(o.path,i,o.segmentsInfo);n.renderLeft=a.x-r.x,n.renderTop=a.y-r.y,n.angle=a.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,n,r,i){var o,a=this.getCompleteStyleDeclaration(e,n),s=r?this.getCompleteStyleDeclaration(e,n-1):{},u=this._measureChar(t,a,r,s),c=u.kernedWidth,l=u.width;0!==this.charSpacing&&(l+=o=this._getWidthOfCharSpacing(),c+=o);var f={width:l,left:0,height:a.fontSize,kernedWidth:c,deltaY:a.deltaY};if(n>0&&!i){var h=this.__charBounds[e][n-1];f.left=h.left+h.width+u.kernedWidth-u.width}return f},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],n=this.getHeightOfChar(t,0),r=1,i=e.length;r0){var k=y+o+f;"rtl"===this.direction&&(k=this.width-k-h),c&&m&&(t.fillStyle=m,t.fillRect(k,l+_*r+a,h,this.fontSize/15)),f=d.left,h=d.width,c=p,m=g,r=i,a=s}else h+=d.kernedWidth;k=y+o+f;"rtl"===this.direction&&(k=this.width-k-h),t.fillStyle=g,p&&g&&t.fillRect(k,l+_*r+a,h-x,this.fontSize/15),b+=n}else b+=n;this._removeShadow(t)}},_getFontDeclaration:function(t,n){var r=t||this,i=this.fontFamily,o=e.Text.genericFonts.indexOf(i.toLowerCase())>-1,a=void 0===i||i.indexOf("'")>-1||i.indexOf(",")>-1||i.indexOf('"')>-1||o?r.fontFamily:'"'+r.fontFamily+'"';return[e.isLikelyNode?r.fontWeight:r.fontStyle,e.isLikelyNode?r.fontStyle:r.fontWeight,n?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",a].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var n=t.split(this._reNewline),r=new Array(n.length),i=["\n"],o=[],a=0;a-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}i.IText=i.util.createClass(i.Text,i.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,n=this.canvas.viewportTransform;e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,n=this.height+4;t.clearRect(-e/2,-n/2,e,n)},_getCursorBoundaries:function(t){"undefined"===typeof t&&(t=this.selectionStart);var e=this._getLeftOffset(),n=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t);return{left:e,top:n,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,n,r,i,o=0,a=0,s=this.get2DCursorLocation(t);r=s.charIndex,n=s.lineIndex;for(var u=0;u0?a:0)},"rtl"===this.direction&&(i.left*=-1),this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(t,e){var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex>0?n.charIndex-1:0,o=this.getValueOfPropertyAt(r,i,"fontSize"),a=this.scaleX*this.canvas.getZoom(),s=this.cursorWidth/a,u=t.topOffset,c=this.getValueOfPropertyAt(r,i,"deltaY");u+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-o*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,i,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-s/2,u+t.top+c,s,o)},renderSelection:function(t,e){for(var n=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,i=-1!==this.textAlign.indexOf("justify"),o=this.get2DCursorLocation(n),a=this.get2DCursorLocation(r),s=o.lineIndex,u=a.lineIndex,c=o.charIndex<0?0:o.charIndex,l=a.charIndex<0?0:a.charIndex,f=s;f<=u;f++){var h,d=this._getLineLeftOffset(f)||0,p=this.getHeightOfLine(f),v=0,g=0;if(f===s&&(v=this.__charBounds[s][c].left),f>=s&&f1)&&(p/=this.lineHeight);var y=t.left+d+v,b=g-v,w=p,x=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,x=p):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(y=this.width-y-b),e.fillRect(y,t.top+t.topOffset+x,b,w),t.topOffset+=h}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),i.IText.fromObject=function(e,n){if(t(e),e.styles)for(var r in e.styles)for(var o in e.styles[r])t(e.styles[r][o]);i.Object._fromObject("IText",e,n,"text")}}(),function(){var t=i.util.object.clone;i.util.object.extend(i.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],i.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,n,r){var i;return i={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:n,onComplete:function(){i.isAborted||t[r]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return i.isAborted}}),i},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,n=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),n)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,n=t-1;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)e++,n--;for(;/\S/.test(this._text[n])&&n>-1;)e++,n--;return t-e},findWordBoundaryRight:function(t){var e=0,n=t;if(this._reSpace.test(this._text[n]))for(;this._reSpace.test(this._text[n]);)e++,n++;for(;/\S/.test(this._text[n])&&n-1;)e++,n--;return t-e},findLineBoundaryRight:function(t){for(var e=0,n=t;!/\n/.test(this._text[n])&&n0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===n&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,n){var r=n.slice(0,t),o=i.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:o,selectionEnd:o};var a=n.slice(t,e);return{selectionStart:o,selectionEnd:o+i.util.string.graphemeSplit(a).length}},fromGraphemeToStringSelection:function(t,e,n){var r=n.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+n.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),n=this.get2DCursorLocation(t),r=n.lineIndex,o=n.charIndex,a=this.getValueOfPropertyAt(r,o,"fontSize")*this.lineHeight,s=e.leftOffset,u=this.calcTransformMatrix(),c={x:e.left+s,y:e.top+e.topOffset+a},l=this.canvas.getRetinaScaling(),f=this.canvas.upperCanvasEl,h=f.width/l,d=f.height/l,p=h-a,v=d-a,g=f.clientWidth/h,m=f.clientHeight/d;return c=i.util.transformPoint(c,u),(c=i.util.transformPoint(c,this.canvas.viewportTransform)).x*=g,c.y*=m,c.x<0&&(c.x=0),c.x>p&&(c.x=p),c.y<0&&(c.y=0),c.y>v&&(c.y=v),c.x+=this.canvas._offset.left,c.y+=this.canvas._offset.top,{left:c.x+"px",top:c.y+"px",fontSize:a+"px",charHeight:a}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var n,r,i=this.get2DCursorLocation(t,!0),o=this.get2DCursorLocation(e,!0),a=i.lineIndex,s=i.charIndex,u=o.lineIndex,c=o.charIndex;if(a!==u){if(this.styles[a])for(n=s;n=c&&(r[l-h]=r[f],delete r[f])}},shiftLineStyles:function(e,n){var r=t(this.styles);for(var i in this.styles){var o=parseInt(i,10);o>e&&(this.styles[o+n]=r[o],r[o-n]||delete this.styles[o])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(e,n,r,i){var o,a={},s=!1,u=this._unwrappedTextLines[e].length===n;for(var c in r||(r=1),this.shiftLineStyles(e,r),this.styles[e]&&(o=this.styles[e][0===n?n:n-1]),this.styles[e]){var l=parseInt(c,10);l>=n&&(s=!0,a[l-n]=this.styles[e][c],u&&0===n||delete this.styles[e][c])}var f=!1;for(s&&!u&&(this.styles[e+r]=a,f=!0),f&&r--;r>0;)i&&i[r-1]?this.styles[e+r]={0:t(i[r-1])}:o?this.styles[e+r]={0:t(o)}:delete this.styles[e+r],r--;this._forceClearCache=!0},insertCharStyleObject:function(e,n,r,i){this.styles||(this.styles={});var o=this.styles[e],a=o?t(o):{};for(var s in r||(r=1),a){var u=parseInt(s,10);u>=n&&(o[u+r]=a[u],a[u-r]||delete o[u])}if(this._forceClearCache=!0,i)for(;r--;)Object.keys(i[r]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][n+r]=t(i[r]));else if(o)for(var c=o[n?n-1:1];c&&r--;)this.styles[e][n+r]=t(c)},insertNewStyleBlock:function(t,e,n){for(var r=this.get2DCursorLocation(e,!0),i=[0],o=0,a=0;a0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,i[0],n),n=n&&n.slice(i[0]+1)),o&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+i[0],o);for(a=1;a0?this.insertCharStyleObject(r.lineIndex+a,0,i[a],n):n&&this.styles[r.lineIndex+a]&&n[0]&&(this.styles[r.lineIndex+a][0]=n[0]),n=n&&n.slice(i[a]+1);i[a]>0&&this.insertCharStyleObject(r.lineIndex+a,0,i[a],n)},setSelectionStartEndWithShift:function(t,e,n){n<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=n):n>t&&nt?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),i.util.object.extend(i.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),n=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(n,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,n=this.getLocalPointer(t),r=0,i=0,o=0,a=0,s=0,u=0,c=this._textLines.length;u0&&(a+=this._textLines[u-1].length+this.missingNewlineOffset(u-1));i=this._getLineLeftOffset(s)*this.scaleX,e=this._textLines[s],"rtl"===this.direction&&(n.x=this.width*this.scaleX-n.x+i);for(var l=0,f=e.length;lo||a<0?0:1);return this.flipX&&(s=i-s),s>this._text.length&&(s=this._text.length),s}}),i.util.object.extend(i.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=i.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding\uff70top: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):i.document.body.appendChild(this.hiddenTextarea),i.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),i.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),i.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),i.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),i.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),i.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),i.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),i.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),i.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(i.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var n,r,o,a,s,u=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,c=this._text.length,l=u.length,f=l-c,h=this.selectionStart,d=this.selectionEnd,p=h!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var v=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),g=h>v.selectionStart;p?(n=this._text.slice(h,d),f+=d-h):l0&&(r+=(n=this.__charBounds[t][e-1]).left+n.width),r},getDownCursorOffset:function(t,e){var n=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(n),i=r.lineIndex;if(i===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-n;var o=r.charIndex,a=this._getWidthBeforeCursor(i,o),s=this._getIndexOnLine(i+1,a);return this._textLines[i].slice(o).length+s+1+this.missingNewlineOffset(i)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var n=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(n),i=r.lineIndex;if(0===i||t.metaKey||33===t.keyCode)return-n;var o=r.charIndex,a=this._getWidthBeforeCursor(i,o),s=this._getIndexOnLine(i-1,a),u=this._textLines[i].slice(0,o),c=this.missingNewlineOffset(i-1);return-this._textLines[i-1].length+s-u.length+(1-c)},_getIndexOnLine:function(t,e){for(var n,r,i=this._textLines[t],o=this._getLineLeftOffset(t),a=0,s=0,u=i.length;se){r=!0;var c=o-n,l=o,f=Math.abs(c-e);a=Math.abs(l-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var n=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(n):this.moveCursorWithoutShift(n),0!==n&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,n){var r;if(t.altKey)r=this["findWordBoundary"+n](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===n?-1:1,!0;r=this["findLineBoundary"+n](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var n="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?n+="Shift":n+="outShift",this[n](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){"undefined"===typeof e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,n,r){"undefined"===typeof r&&(r=n),r>n&&this.removeStyleFromTo(n,r);var o=i.util.string.graphemeSplit(t);this.insertNewStyleBlock(o,n,e),this._text=[].concat(this._text.slice(0,n),o,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=i.util.toFixed,e=/ +/g;i.util.object.extend(i.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var n,r=[],i=[],o=t;this._setSVGBg(i);for(var a=0,s=this._textLines.length;a",i.util.string.escapeXml(n),""].join("")},_setSVGTextLineText:function(t,e,n,r){var i,o,a,s,u,c=this.getHeightOfLine(e),l=-1!==this.textAlign.indexOf("justify"),f="",h=0,d=this._textLines[e];r+=c*(1-this._fontSizeFraction)/this.lineHeight;for(var p=0,v=d.length-1;p<=v;p++)u=p===v||this.charSpacing,f+=d[p],a=this.__charBounds[e][p],0===h?(n+=a.kernedWidth-a.width,h+=a.width):h+=a.kernedWidth,l&&!u&&this._reSpaceAndTab.test(d[p])&&(u=!0),u||(i=i||this.getCompleteStyleDeclaration(e,p),o=this.getCompleteStyleDeclaration(e,p+1),u=this._hasStyleChangedForSvg(i,o)),u&&(s=this._getStyleDeclaration(e,p)||{},t.push(this._createTextCharSpan(f,s,n,r)),f="",i=o,n+=h,h=0)},_pushTextBgRect:function(e,n,r,o,a,s){var u=i.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,n,r){for(var i,o,a=this._textLines[e],s=this.getHeightOfLine(e)/this.lineHeight,u=0,c=0,l=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),f=0,h=a.length;fthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,n=0,r=0,i={},o=0;o0?(n=0,r++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[r])&&o>0&&(n++,r++),i[o]={line:e,offset:n},r+=t.graphemeLines[o].length,n+=t.graphemeLines[o].length;return i},styleHas:function(t,n){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[n];r&&(n=r.line)}return e.Text.prototype.styleHas.call(this,t,n)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,n,r=0,i=!1,o=this._styleMap[t],a=this._styleMap[t+1];for(var s in o&&(t=o.line,r=o.offset),a&&(i=a.line===t,e=a.offset),n="undefined"===typeof t?this.styles:{line:this.styles[t]})for(var u in n[s])if(u>=r&&(!i||ur&&!g?(s.push(u),u=[],o=d,g=!0):o+=m,g||a||u.push(h),u=u.concat(l),p=a?0:this._measureWord([h],n,f),f++,g=!1,d>v&&(v=d);return y&&s.push(u),v+i>this.dynamicMinWidth&&(this.dynamicMinWidth=v-m+i),s},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var n=e.Text.prototype._splitTextIntoLines.call(this,t),r=this._wrapText(n.lines,this.width),i=new Array(r.length),o=0;o1?0:Math.acos(s)};var r=n(17996),i=n(11323),o=n(55232)},73508:function(t){t.exports=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}},16387:function(t){t.exports=function(t){var e=new Float32Array(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},88499:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},61458:function(t){t.exports=function(){var t=new Float32Array(3);return t[0]=0,t[1]=0,t[2]=0,t}},11600:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2];return t[0]=i*u-o*s,t[1]=o*a-r*u,t[2]=r*s-i*a,t}},38945:function(t,e,n){t.exports=n(35922)},35922:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+r*r+i*i)}},64651:function(t,e,n){t.exports=n(69678)},69678:function(t){t.exports=function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}},55232:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},68728:function(t){t.exports=1e-6},11574:function(t,e,n){t.exports=function(t,e){var n=t[0],i=t[1],o=t[2],a=e[0],s=e[1],u=e[2];return Math.abs(n-a)<=r*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=r*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(o-u)<=r*Math.max(1,Math.abs(o),Math.abs(u))};var r=n(68728)},68124:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},10250:function(t){t.exports=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}},79223:function(t,e,n){t.exports=function(t,e,n,i,o,a){var s,u;e||(e=3);n||(n=0);u=i?Math.min(i*e+n,t.length):t.length;for(s=n;s0&&(o=1/Math.sqrt(o),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o);return t}},10482:function(t){t.exports=function(t,e){e=e||1;var n=2*Math.random()*Math.PI,r=2*Math.random()-1,i=Math.sqrt(1-r*r)*e;return t[0]=Math.cos(n)*i,t[1]=Math.sin(n)*i,t[2]=r*e,t}},32996:function(t){t.exports=function(t,e,n,r){var i=n[1],o=n[2],a=e[1]-i,s=e[2]-o,u=Math.sin(r),c=Math.cos(r);return t[0]=e[0],t[1]=i+a*c-s*u,t[2]=o+a*u+s*c,t}},69218:function(t){t.exports=function(t,e,n,r){var i=n[0],o=n[2],a=e[0]-i,s=e[2]-o,u=Math.sin(r),c=Math.cos(r);return t[0]=i+s*u+a*c,t[1]=e[1],t[2]=o+s*c-a*u,t}},43115:function(t){t.exports=function(t,e,n,r){var i=n[0],o=n[1],a=e[0]-i,s=e[1]-o,u=Math.sin(r),c=Math.cos(r);return t[0]=i+a*c-s*u,t[1]=o+a*u+s*c,t[2]=e[2],t}},27597:function(t){t.exports=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}},64149:function(t){t.exports=function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}},67433:function(t){t.exports=function(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t}},92433:function(t){t.exports=function(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}},45631:function(t,e,n){t.exports=n(32861)},34827:function(t,e,n){t.exports=n(80757)},32861:function(t){t.exports=function(t,e){var n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}},80757:function(t){t.exports=function(t){var e=t[0],n=t[1],r=t[2];return e*e+n*n+r*r}},97045:function(t,e,n){t.exports=n(28361)},28361:function(t){t.exports=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}},5069:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2];return t[0]=r*n[0]+i*n[3]+o*n[6],t[1]=r*n[1]+i*n[4]+o*n[7],t[2]=r*n[2]+i*n[5]+o*n[8],t}},8224:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[3]*r+n[7]*i+n[11]*o+n[15];return a=a||1,t[0]=(n[0]*r+n[4]*i+n[8]*o+n[12])/a,t[1]=(n[1]*r+n[5]*i+n[9]*o+n[13])/a,t[2]=(n[2]*r+n[6]*i+n[10]*o+n[14])/a,t}},47545:function(t){t.exports=function(t,e,n){var r=e[0],i=e[1],o=e[2],a=n[0],s=n[1],u=n[2],c=n[3],l=c*r+s*o-u*i,f=c*i+u*r-a*o,h=c*o+a*i-s*r,d=-a*r-s*i-u*o;return t[0]=l*c+d*-a+f*-u-h*-s,t[1]=f*c+d*-s+h*-a-l*-u,t[2]=h*c+d*-u+l*-s-f*-a,t}},30871:function(t,e,n){var r=n(49410).runInContext();t.exports=n(54717)(r,r)},54717:function(t,e,n){var r=n(60767),i=n(18485),o=Array.prototype.push;function a(t,e){return 2==e?function(e,n){return t(e,n)}:function(e){return t(e)}}function s(t){for(var e=t?t.length:0,n=Array(e);e--;)n[e]=t[e];return n}function u(t,e){return function(){var n=arguments.length;if(n){for(var r=Array(n);n--;)r[n]=arguments[n];var i=r[0]=e.apply(void 0,r);return t.apply(void 0,r),i}}}t.exports=function t(e,n,c,l){var f="function"==typeof n,h=n===Object(n);if(h&&(l=c,c=n,n=void 0),null==c)throw new TypeError;l||(l={});var d=!("cap"in l)||l.cap,p=!("curry"in l)||l.curry,v=!("fixed"in l)||l.fixed,g=!("immutable"in l)||l.immutable,m=!("rearg"in l)||l.rearg,y=f?c:i,b="curry"in l&&l.curry,w="fixed"in l&&l.fixed,x="rearg"in l&&l.rearg,_=f?c.runInContext():void 0,S=f?c:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},A=S.ary,E=S.assign,C=S.clone,k=S.curry,T=S.forEach,P=S.isArray,M=S.isError,O=S.isFunction,L=S.isWeakMap,N=S.keys,D=S.rearg,j=S.toInteger,I=S.toPath,R=N(r.aryMethod),F={castArray:function(t){return function(){var e=arguments[0];return P(e)?t(s(e)):t.apply(void 0,arguments)}},iteratee:function(t){return function(){var e=arguments[0],n=arguments[1],r=t(e,n),i=r.length;return d&&"number"==typeof n?(n=n>2?n-2:1,i&&i<=n?r:a(r,n)):r}},mixin:function(t){return function(e){var n=this;if(!O(n))return t(n,Object(e));var r=[];return T(N(e),(function(t){O(e[t])&&r.push([t,n.prototype[t]])})),t(n,Object(e)),T(r,(function(t){var e=t[1];O(e)?n.prototype[t[0]]=e:delete n.prototype[t[0]]})),n}},nthArg:function(t){return function(e){var n=e<0?1:j(e)+1;return k(t(e),n)}},rearg:function(t){return function(e,n){var r=n?n.length:0;return k(t(e,n),r)}},runInContext:function(n){return function(r){return t(e,n(r),l)}}};function B(t,e){if(d){var n=r.iterateeRearg[t];if(n)return function(t,e){return W(t,(function(t){var n=e.length;return function(t,e){return 2==e?function(e,n){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}(D(a(t,n),e),n)}))}(e,n);var i=!f&&r.iterateeAry[t];if(i)return function(t,e){return W(t,(function(t){return"function"==typeof t?a(t,e):t}))}(e,i)}return e}function z(t,e,n){if(v&&(w||!r.skipFixed[t])){var i=r.methodSpread[t],a=i&&i.start;return void 0===a?A(e,n):function(t,e){return function(){for(var n=arguments.length,r=n-1,i=Array(n);n--;)i[n]=arguments[n];var a=i[e],s=i.slice(0,e);return a&&o.apply(s,a),e!=r&&o.apply(s,i.slice(e+1)),t.apply(this,s)}}(e,a)}return e}function V(t,e,n){return m&&n>1&&(x||!r.skipRearg[t])?D(e,r.methodRearg[t]||r.aryRearg[n]):e}function q(t,e){for(var n=-1,r=(e=I(e)).length,i=r-1,o=C(Object(t)),a=o;null!=a&&++n1?k(e,n):e}(0,i=B(o,i),t),!1}})),!i})),i||(i=a),i==e&&(i=b?k(i,1):function(){return e.apply(this,arguments)}),i.convert=U(o,e),i.placeholder=e.placeholder=n,i}if(!h)return Y(n,c,y);var X=c,H=[];return T(R,(function(t){T(r.aryMethod[t],(function(t){var e=X[r.remap[t]||t];e&&H.push([t,Y(t,e,X)])}))})),T(N(X),(function(t){var e=X[t];if("function"==typeof e){for(var n=H.length;n--;)if(H[n][0]==t)return;e.convert=U(t,e),H.push([t,e])}})),T(H,(function(t){X[t[0]]=t[1]})),X.convert=function(t){return X.runInContext.convert(t)(void 0)},X.placeholder=X,T(N(X),(function(t){T(r.realToAlias[t]||[],(function(e){X[e]=X[t]}))})),X}},60767:function(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},e.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},e.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},e.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,n=e.aliasToReal,r={};for(var i in n){var o=n[i];t.call(r,o)?r[o].push(i):r[o]=[i]}return r}(),e.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},18485:function(t){t.exports={}},763:function(t,e,n){var r;t=n.nmd(t),function(){var i,o="Expected a function",a="__lodash_hash_undefined__",s="__lodash_placeholder__",u=16,c=32,l=64,f=128,h=256,d=1/0,p=9007199254740991,v=NaN,g=4294967295,m=[["ary",f],["bind",1],["bindKey",2],["curry",8],["curryRight",u],["flip",512],["partial",c],["partialRight",l],["rearg",h]],y="[object Arguments]",b="[object Array]",w="[object Boolean]",x="[object Date]",_="[object Error]",S="[object Function]",A="[object GeneratorFunction]",E="[object Map]",C="[object Number]",k="[object Object]",T="[object Promise]",P="[object RegExp]",M="[object Set]",O="[object String]",L="[object Symbol]",N="[object WeakMap]",D="[object ArrayBuffer]",j="[object DataView]",I="[object Float32Array]",R="[object Float64Array]",F="[object Int8Array]",B="[object Int16Array]",z="[object Int32Array]",V="[object Uint8Array]",q="[object Uint8ClampedArray]",U="[object Uint16Array]",W="[object Uint32Array]",Y=/\b__p \+= '';/g,X=/\b(__p \+=) '' \+/g,H=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,Z=/[&<>"']/g,$=RegExp(G.source),K=RegExp(Z.source),J=/<%-([\s\S]+?)%>/g,Q=/<%([\s\S]+?)%>/g,tt=/<%=([\s\S]+?)%>/g,et=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nt=/^\w*$/,rt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,it=/[\\^$.*+?()[\]{}|]/g,ot=RegExp(it.source),at=/^\s+/,st=/\s/,ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ct=/\{\n\/\* \[wrapped with (.+)\] \*/,lt=/,? & /,ft=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ht=/[()=,{}\[\]\/\s]/,dt=/\\(\\)?/g,pt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,vt=/\w*$/,gt=/^[-+]0x[0-9a-f]+$/i,mt=/^0b[01]+$/i,yt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,xt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,_t=/($^)/,St=/['\n\r\u2028\u2029\\]/g,At="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Et="\\u2700-\\u27bf",Ct="a-z\\xdf-\\xf6\\xf8-\\xff",kt="A-Z\\xc0-\\xd6\\xd8-\\xde",Tt="\\ufe0e\\ufe0f",Pt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Mt="['\u2019]",Ot="[\\ud800-\\udfff]",Lt="["+Pt+"]",Nt="["+At+"]",Dt="\\d+",jt="[\\u2700-\\u27bf]",It="["+Ct+"]",Rt="[^\\ud800-\\udfff"+Pt+Dt+Et+Ct+kt+"]",Ft="\\ud83c[\\udffb-\\udfff]",Bt="[^\\ud800-\\udfff]",zt="(?:\\ud83c[\\udde6-\\uddff]){2}",Vt="[\\ud800-\\udbff][\\udc00-\\udfff]",qt="["+kt+"]",Ut="(?:"+It+"|"+Rt+")",Wt="(?:"+qt+"|"+Rt+")",Yt="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Xt="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",Ht="(?:"+Nt+"|"+Ft+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Zt=Gt+Ht+("(?:\\u200d(?:"+[Bt,zt,Vt].join("|")+")"+Gt+Ht+")*"),$t="(?:"+[jt,zt,Vt].join("|")+")"+Zt,Kt="(?:"+[Bt+Nt+"?",Nt,zt,Vt,Ot].join("|")+")",Jt=RegExp(Mt,"g"),Qt=RegExp(Nt,"g"),te=RegExp(Ft+"(?="+Ft+")|"+Kt+Zt,"g"),ee=RegExp([qt+"?"+It+"+"+Yt+"(?="+[Lt,qt,"$"].join("|")+")",Wt+"+"+Xt+"(?="+[Lt,qt+Ut,"$"].join("|")+")",qt+"?"+Ut+"+"+Yt,qt+"+"+Xt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Dt,$t].join("|"),"g"),ne=RegExp("[\\u200d\\ud800-\\udfff"+At+Tt+"]"),re=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ie=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],oe=-1,ae={};ae[I]=ae[R]=ae[F]=ae[B]=ae[z]=ae[V]=ae[q]=ae[U]=ae[W]=!0,ae[y]=ae[b]=ae[D]=ae[w]=ae[j]=ae[x]=ae[_]=ae[S]=ae[E]=ae[C]=ae[k]=ae[P]=ae[M]=ae[O]=ae[N]=!1;var se={};se[y]=se[b]=se[D]=se[j]=se[w]=se[x]=se[I]=se[R]=se[F]=se[B]=se[z]=se[E]=se[C]=se[k]=se[P]=se[M]=se[O]=se[L]=se[V]=se[q]=se[U]=se[W]=!0,se[_]=se[S]=se[N]=!1;var ue={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ce=parseFloat,le=parseInt,fe="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,he="object"==typeof self&&self&&self.Object===Object&&self,de=fe||he||Function("return this")(),pe=e&&!e.nodeType&&e,ve=pe&&t&&!t.nodeType&&t,ge=ve&&ve.exports===pe,me=ge&&fe.process,ye=function(){try{var t=ve&&ve.require&&ve.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(e){}}(),be=ye&&ye.isArrayBuffer,we=ye&&ye.isDate,xe=ye&&ye.isMap,_e=ye&&ye.isRegExp,Se=ye&&ye.isSet,Ae=ye&&ye.isTypedArray;function Ee(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ce(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Le(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function en(t,e){for(var n=t.length;n--&&Ve(e,t[n],0)>-1;);return n}function nn(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var rn=Xe({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),on=Xe({"&":"&","<":"<",">":">",'"':""","'":"'"});function an(t){return"\\"+ue[t]}function sn(t){return ne.test(t)}function un(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function cn(t,e){return function(n){return t(e(n))}}function ln(t,e){for(var n=-1,r=t.length,i=0,o=[];++n",""":'"',"'":"'"});var mn=function t(e){var n=(e=null==e?de:mn.defaults(de.Object(),e,mn.pick(de,ie))).Array,r=e.Date,st=e.Error,At=e.Function,Et=e.Math,Ct=e.Object,kt=e.RegExp,Tt=e.String,Pt=e.TypeError,Mt=n.prototype,Ot=At.prototype,Lt=Ct.prototype,Nt=e["__core-js_shared__"],Dt=Ot.toString,jt=Lt.hasOwnProperty,It=0,Rt=function(){var t=/[^.]+$/.exec(Nt&&Nt.keys&&Nt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Ft=Lt.toString,Bt=Dt.call(Ct),zt=de._,Vt=kt("^"+Dt.call(jt).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),qt=ge?e.Buffer:i,Ut=e.Symbol,Wt=e.Uint8Array,Yt=qt?qt.allocUnsafe:i,Xt=cn(Ct.getPrototypeOf,Ct),Ht=Ct.create,Gt=Lt.propertyIsEnumerable,Zt=Mt.splice,$t=Ut?Ut.isConcatSpreadable:i,Kt=Ut?Ut.iterator:i,te=Ut?Ut.toStringTag:i,ne=function(){try{var t=ho(Ct,"defineProperty");return t({},"",{}),t}catch(e){}}(),ue=e.clearTimeout!==de.clearTimeout&&e.clearTimeout,fe=r&&r.now!==de.Date.now&&r.now,he=e.setTimeout!==de.setTimeout&&e.setTimeout,pe=Et.ceil,ve=Et.floor,me=Ct.getOwnPropertySymbols,ye=qt?qt.isBuffer:i,Fe=e.isFinite,Xe=Mt.join,yn=cn(Ct.keys,Ct),bn=Et.max,wn=Et.min,xn=r.now,_n=e.parseInt,Sn=Et.random,An=Mt.reverse,En=ho(e,"DataView"),Cn=ho(e,"Map"),kn=ho(e,"Promise"),Tn=ho(e,"Set"),Pn=ho(e,"WeakMap"),Mn=ho(Ct,"create"),On=Pn&&new Pn,Ln={},Nn=zo(En),Dn=zo(Cn),jn=zo(kn),In=zo(Tn),Rn=zo(Pn),Fn=Ut?Ut.prototype:i,Bn=Fn?Fn.valueOf:i,zn=Fn?Fn.toString:i;function Vn(t){if(rs(t)&&!Xa(t)&&!(t instanceof Yn)){if(t instanceof Wn)return t;if(jt.call(t,"__wrapped__"))return Vo(t)}return new Wn(t)}var qn=function(){function t(){}return function(e){if(!ns(e))return{};if(Ht)return Ht(e);t.prototype=e;var n=new t;return t.prototype=i,n}}();function Un(){}function Wn(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=i}function Yn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=g,this.__views__=[]}function Xn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function cr(t,e,n,r,o,a){var s,u=1&e,c=2&e,l=4&e;if(n&&(s=o?n(t,r,o,a):n(t)),s!==i)return s;if(!ns(t))return t;var f=Xa(t);if(f){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&jt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!u)return Mi(t,s)}else{var h=go(t),d=h==S||h==A;if($a(t))return Ai(t,u);if(h==k||h==y||d&&!o){if(s=c||d?{}:yo(t),!u)return c?function(t,e){return Oi(t,vo(t),e)}(t,function(t,e){return t&&Oi(e,Ds(e),t)}(s,t)):function(t,e){return Oi(t,po(t),e)}(t,or(s,t))}else{if(!se[h])return o?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case D:return Ei(t);case w:case x:return new r(+t);case j:return function(t,e){var n=e?Ei(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case I:case R:case F:case B:case z:case V:case q:case U:case W:return Ci(t,n);case E:return new r;case C:case O:return new r(t);case P:return function(t){var e=new t.constructor(t.source,vt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case M:return new r;case L:return i=t,Bn?Ct(Bn.call(i)):{}}var i}(t,h,u)}}a||(a=new $n);var p=a.get(t);if(p)return p;a.set(t,s),us(t)?t.forEach((function(r){s.add(cr(r,e,n,r,t,a))})):is(t)&&t.forEach((function(r,i){s.set(i,cr(r,e,n,i,t,a))}));var v=f?i:(l?c?oo:io:c?Ds:Ns)(t);return ke(v||t,(function(r,i){v&&(r=t[i=r]),nr(s,i,cr(r,e,n,i,t,a))})),s}function lr(t,e,n){var r=n.length;if(null==t)return!r;for(t=Ct(t);r--;){var o=n[r],a=e[o],s=t[o];if(s===i&&!(o in t)||!a(s))return!1}return!0}function fr(t,e,n){if("function"!=typeof t)throw new Pt(o);return No((function(){t.apply(i,n)}),e)}function hr(t,e,n,r){var i=-1,o=Oe,a=!0,s=t.length,u=[],c=e.length;if(!s)return u;n&&(e=Ne(e,Ke(n))),r?(o=Le,a=!1):e.length>=200&&(o=Qe,a=!1,e=new Zn(e));t:for(;++i-1},Hn.prototype.set=function(t,e){var n=this.__data__,r=rr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Gn.prototype.clear=function(){this.size=0,this.__data__={hash:new Xn,map:new(Cn||Hn),string:new Xn}},Gn.prototype.delete=function(t){var e=lo(this,t).delete(t);return this.size-=e?1:0,e},Gn.prototype.get=function(t){return lo(this,t).get(t)},Gn.prototype.has=function(t){return lo(this,t).has(t)},Gn.prototype.set=function(t,e){var n=lo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Zn.prototype.add=Zn.prototype.push=function(t){return this.__data__.set(t,a),this},Zn.prototype.has=function(t){return this.__data__.has(t)},$n.prototype.clear=function(){this.__data__=new Hn,this.size=0},$n.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},$n.prototype.get=function(t){return this.__data__.get(t)},$n.prototype.has=function(t){return this.__data__.has(t)},$n.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Hn){var r=n.__data__;if(!Cn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Gn(r)}return n.set(t,e),this.size=n.size,this};var dr=Di(xr),pr=Di(_r,!0);function vr(t,e){var n=!0;return dr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function gr(t,e,n){for(var r=-1,o=t.length;++r0&&n(s)?e>1?yr(s,e-1,n,r,i):De(i,s):r||(i[i.length]=s)}return i}var br=ji(),wr=ji(!0);function xr(t,e){return t&&br(t,e,Ns)}function _r(t,e){return t&&wr(t,e,Ns)}function Sr(t,e){return Me(e,(function(e){return Qa(t[e])}))}function Ar(t,e){for(var n=0,r=(e=wi(e,t)).length;null!=t&&ne}function Tr(t,e){return null!=t&&jt.call(t,e)}function Pr(t,e){return null!=t&&e in Ct(t)}function Mr(t,e,r){for(var o=r?Le:Oe,a=t[0].length,s=t.length,u=s,c=n(s),l=1/0,f=[];u--;){var h=t[u];u&&e&&(h=Ne(h,Ke(e))),l=wn(h.length,l),c[u]=!r&&(e||a>=120&&h.length>=120)?new Zn(u&&h):i}h=t[0];var d=-1,p=c[0];t:for(;++d=s?u:u*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Xr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)s!==t&&Zt.call(s,u,1),Zt.call(t,u,1);return t}function Gr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;wo(i)?Zt.call(t,i,1):hi(t,i)}}return t}function Zr(t,e){return t+ve(Sn()*(e-t+1))}function $r(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=ve(e/2))&&(t+=t)}while(e);return n}function Kr(t,e){return Do(To(t,e,ou),t+"")}function Jr(t){return Jn(qs(t))}function Qr(t,e){var n=qs(t);return Ro(n,ur(e,0,n.length))}function ti(t,e,n,r){if(!ns(t))return t;for(var o=-1,a=(e=wi(e,t)).length,s=a-1,u=t;null!=u&&++oo?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var a=n(o);++i>>1,a=t[o];null!==a&&!ls(a)&&(n?a<=e:a=200){var c=e?null:$i(t);if(c)return fn(c);a=!1,i=Qe,u=new Zn}else u=e?[]:s;t:for(;++r=r?t:ii(t,e,n)}var Si=ue||function(t){return de.clearTimeout(t)};function Ai(t,e){if(e)return t.slice();var n=t.length,r=Yt?Yt(n):new t.constructor(n);return t.copy(r),r}function Ei(t){var e=new t.constructor(t.byteLength);return new Wt(e).set(new Wt(t)),e}function Ci(t,e){var n=e?Ei(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function ki(t,e){if(t!==e){var n=t!==i,r=null===t,o=t===t,a=ls(t),s=e!==i,u=null===e,c=e===e,l=ls(e);if(!u&&!l&&!a&&t>e||a&&s&&c&&!u&&!l||r&&s&&c||!n&&c||!o)return 1;if(!r&&!a&&!l&&t1?n[o-1]:i,s=o>2?n[2]:i;for(a=t.length>3&&"function"==typeof a?(o--,a):i,s&&xo(n[0],n[1],s)&&(a=o<3?i:a,o=1),e=Ct(e);++r-1?o[a?e[s]:s]:i}}function zi(t){return ro((function(e){var n=e.length,r=n,a=Wn.prototype.thru;for(t&&e.reverse();r--;){var s=e[r];if("function"!=typeof s)throw new Pt(o);if(a&&!u&&"wrapper"==so(s))var u=new Wn([],!0)}for(r=u?r:n;++r1&&b.reverse(),d&&lu))return!1;var l=a.get(t),f=a.get(e);if(l&&f)return l==e&&f==t;var h=-1,d=!0,p=2&n?new Zn:i;for(a.set(t,e),a.set(e,t);++h-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(ut,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return ke(m,(function(n){var r="_."+n[0];e&n[1]&&!Oe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ct);return e?e[1].split(lt):[]}(r),n)))}function Io(t){var e=0,n=0;return function(){var r=xn(),o=16-(r-n);if(n=r,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(i,arguments)}}function Ro(t,e){var n=-1,r=t.length,o=r-1;for(e=e===i?r:e;++n1?t[e-1]:i;return n="function"==typeof n?(t.pop(),n):i,sa(t,n)}));function pa(t){var e=Vn(t);return e.__chain__=!0,e}function va(t,e){return e(t)}var ga=ro((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return sr(e,t)};return!(e>1||this.__actions__.length)&&r instanceof Yn&&wo(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:va,args:[o],thisArg:i}),new Wn(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(i),t}))):this.thru(o)}));var ma=Li((function(t,e,n){jt.call(t,n)?++t[n]:ar(t,n,1)}));var ya=Bi(Yo),ba=Bi(Xo);function wa(t,e){return(Xa(t)?ke:dr)(t,co(e,3))}function xa(t,e){return(Xa(t)?Te:pr)(t,co(e,3))}var _a=Li((function(t,e,n){jt.call(t,n)?t[n].push(e):ar(t,n,[e])}));var Sa=Kr((function(t,e,r){var i=-1,o="function"==typeof e,a=Ga(t)?n(t.length):[];return dr(t,(function(t){a[++i]=o?Ee(e,t,r):Or(t,e,r)})),a})),Aa=Li((function(t,e,n){ar(t,n,e)}));function Ea(t,e){return(Xa(t)?Ne:zr)(t,co(e,3))}var Ca=Li((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var ka=Kr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&xo(t,e[0],e[1])?e=[]:n>2&&xo(e[0],e[1],e[2])&&(e=[e[0]]),Yr(t,yr(e,1),[])})),Ta=fe||function(){return de.Date.now()};function Pa(t,e,n){return e=n?i:e,e=t&&null==e?t.length:e,Ji(t,f,i,i,i,i,e)}function Ma(t,e){var n;if("function"!=typeof e)throw new Pt(o);return t=gs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=i),n}}var Oa=Kr((function(t,e,n){var r=1;if(n.length){var i=ln(n,uo(Oa));r|=c}return Ji(t,r,e,n,i)})),La=Kr((function(t,e,n){var r=3;if(n.length){var i=ln(n,uo(La));r|=c}return Ji(e,r,t,n,i)}));function Na(t,e,n){var r,a,s,u,c,l,f=0,h=!1,d=!1,p=!0;if("function"!=typeof t)throw new Pt(o);function v(e){var n=r,o=a;return r=a=i,f=e,u=t.apply(o,n)}function g(t){return f=t,c=No(y,e),h?v(t):u}function m(t){var n=t-l;return l===i||n>=e||n<0||d&&t-f>=s}function y(){var t=Ta();if(m(t))return b(t);c=No(y,function(t){var n=e-(t-l);return d?wn(n,s-(t-f)):n}(t))}function b(t){return c=i,p&&r?v(t):(r=a=i,u)}function w(){var t=Ta(),n=m(t);if(r=arguments,a=this,l=t,n){if(c===i)return g(l);if(d)return Si(c),c=No(y,e),v(l)}return c===i&&(c=No(y,e)),u}return e=ys(e)||0,ns(n)&&(h=!!n.leading,s=(d="maxWait"in n)?bn(ys(n.maxWait)||0,e):s,p="trailing"in n?!!n.trailing:p),w.cancel=function(){c!==i&&Si(c),f=0,r=l=a=c=i},w.flush=function(){return c===i?u:b(Ta())},w}var Da=Kr((function(t,e){return fr(t,1,e)})),ja=Kr((function(t,e,n){return fr(t,ys(e)||0,n)}));function Ia(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Pt(o);var n=function n(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Ia.Cache||Gn),n}function Ra(t){if("function"!=typeof t)throw new Pt(o);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ia.Cache=Gn;var Fa=xi((function(t,e){var n=(e=1==e.length&&Xa(e[0])?Ne(e[0],Ke(co())):Ne(yr(e,1),Ke(co()))).length;return Kr((function(r){for(var i=-1,o=wn(r.length,n);++i=e})),Ya=Lr(function(){return arguments}())?Lr:function(t){return rs(t)&&jt.call(t,"callee")&&!Gt.call(t,"callee")},Xa=n.isArray,Ha=be?Ke(be):function(t){return rs(t)&&Cr(t)==D};function Ga(t){return null!=t&&es(t.length)&&!Qa(t)}function Za(t){return rs(t)&&Ga(t)}var $a=ye||yu,Ka=we?Ke(we):function(t){return rs(t)&&Cr(t)==x};function Ja(t){if(!rs(t))return!1;var e=Cr(t);return e==_||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!as(t)}function Qa(t){if(!ns(t))return!1;var e=Cr(t);return e==S||e==A||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ts(t){return"number"==typeof t&&t==gs(t)}function es(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function ns(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function rs(t){return null!=t&&"object"==typeof t}var is=xe?Ke(xe):function(t){return rs(t)&&go(t)==E};function os(t){return"number"==typeof t||rs(t)&&Cr(t)==C}function as(t){if(!rs(t)||Cr(t)!=k)return!1;var e=Xt(t);if(null===e)return!0;var n=jt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Dt.call(n)==Bt}var ss=_e?Ke(_e):function(t){return rs(t)&&Cr(t)==P};var us=Se?Ke(Se):function(t){return rs(t)&&go(t)==M};function cs(t){return"string"==typeof t||!Xa(t)&&rs(t)&&Cr(t)==O}function ls(t){return"symbol"==typeof t||rs(t)&&Cr(t)==L}var fs=Ae?Ke(Ae):function(t){return rs(t)&&es(t.length)&&!!ae[Cr(t)]};var hs=Hi(Br),ds=Hi((function(t,e){return t<=e}));function ps(t){if(!t)return[];if(Ga(t))return cs(t)?pn(t):Mi(t);if(Kt&&t[Kt])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Kt]());var e=go(t);return(e==E?un:e==M?fn:qs)(t)}function vs(t){return t?(t=ys(t))===d||t===-1/0?17976931348623157e292*(t<0?-1:1):t===t?t:0:0===t?t:0}function gs(t){var e=vs(t),n=e%1;return e===e?n?e-n:e:0}function ms(t){return t?ur(gs(t),0,g):0}function ys(t){if("number"==typeof t)return t;if(ls(t))return v;if(ns(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ns(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=$e(t);var n=mt.test(t);return n||bt.test(t)?le(t.slice(2),n?2:8):gt.test(t)?v:+t}function bs(t){return Oi(t,Ds(t))}function ws(t){return null==t?"":li(t)}var xs=Ni((function(t,e){if(Eo(e)||Ga(e))Oi(e,Ns(e),t);else for(var n in e)jt.call(e,n)&&nr(t,n,e[n])})),_s=Ni((function(t,e){Oi(e,Ds(e),t)})),Ss=Ni((function(t,e,n,r){Oi(e,Ds(e),t,r)})),As=Ni((function(t,e,n,r){Oi(e,Ns(e),t,r)})),Es=ro(sr);var Cs=Kr((function(t,e){t=Ct(t);var n=-1,r=e.length,o=r>2?e[2]:i;for(o&&xo(e[0],e[1],o)&&(r=1);++n1),e})),Oi(t,oo(t),n),r&&(n=cr(n,7,eo));for(var i=e.length;i--;)hi(n,e[i]);return n}));var Fs=ro((function(t,e){return null==t?{}:function(t,e){return Xr(t,e,(function(e,n){return Ps(t,n)}))}(t,e)}));function Bs(t,e){if(null==t)return{};var n=Ne(oo(t),(function(t){return[t]}));return e=co(e),Xr(t,n,(function(t,n){return e(t,n[0])}))}var zs=Ki(Ns),Vs=Ki(Ds);function qs(t){return null==t?[]:Je(t,Ns(t))}var Us=Ri((function(t,e,n){return e=e.toLowerCase(),t+(n?Ws(e):e)}));function Ws(t){return Js(ws(t).toLowerCase())}function Ys(t){return(t=ws(t))&&t.replace(xt,rn).replace(Qt,"")}var Xs=Ri((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Hs=Ri((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Gs=Ii("toLowerCase");var Zs=Ri((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var $s=Ri((function(t,e,n){return t+(n?" ":"")+Js(e)}));var Ks=Ri((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Js=Ii("toUpperCase");function Qs(t,e,n){return t=ws(t),(e=n?i:e)===i?function(t){return re.test(t)}(t)?function(t){return t.match(ee)||[]}(t):function(t){return t.match(ft)||[]}(t):t.match(e)||[]}var tu=Kr((function(t,e){try{return Ee(t,i,e)}catch(n){return Ja(n)?n:new st(n)}})),eu=ro((function(t,e){return ke(e,(function(e){e=Bo(e),ar(t,e,Oa(t[e],t))})),t}));function nu(t){return function(){return t}}var ru=zi(),iu=zi(!0);function ou(t){return t}function au(t){return Ir("function"==typeof t?t:cr(t,1))}var su=Kr((function(t,e){return function(n){return Or(n,t,e)}})),uu=Kr((function(t,e){return function(n){return Or(t,n,e)}}));function cu(t,e,n){var r=Ns(e),i=Sr(e,r);null!=n||ns(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Sr(e,Ns(e)));var o=!(ns(n)&&"chain"in n)||!!n.chain,a=Qa(t);return ke(i,(function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Mi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,De([this.value()],arguments))})})),t}function lu(){}var fu=Wi(Ne),hu=Wi(Pe),du=Wi(Re);function pu(t){return _o(t)?Ye(Bo(t)):function(t){return function(e){return Ar(e,t)}}(t)}var vu=Xi(),gu=Xi(!0);function mu(){return[]}function yu(){return!1}var bu=Ui((function(t,e){return t+e}),0),wu=Zi("ceil"),xu=Ui((function(t,e){return t/e}),1),_u=Zi("floor");var Su=Ui((function(t,e){return t*e}),1),Au=Zi("round"),Eu=Ui((function(t,e){return t-e}),0);return Vn.after=function(t,e){if("function"!=typeof e)throw new Pt(o);return t=gs(t),function(){if(--t<1)return e.apply(this,arguments)}},Vn.ary=Pa,Vn.assign=xs,Vn.assignIn=_s,Vn.assignInWith=Ss,Vn.assignWith=As,Vn.at=Es,Vn.before=Ma,Vn.bind=Oa,Vn.bindAll=eu,Vn.bindKey=La,Vn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Xa(t)?t:[t]},Vn.chain=pa,Vn.chunk=function(t,e,r){e=(r?xo(t,e,r):e===i)?1:bn(gs(e),0);var o=null==t?0:t.length;if(!o||e<1)return[];for(var a=0,s=0,u=n(pe(o/e));ao?0:o+n),(r=r===i||r>o?o:gs(r))<0&&(r+=o),r=n>r?0:ms(r);n>>0)?(t=ws(t))&&("string"==typeof e||null!=e&&!ss(e))&&!(e=li(e))&&sn(t)?_i(pn(t),0,n):t.split(e,n):[]},Vn.spread=function(t,e){if("function"!=typeof t)throw new Pt(o);return e=null==e?0:bn(gs(e),0),Kr((function(n){var r=n[e],i=_i(n,0,e);return r&&De(i,r),Ee(t,this,i)}))},Vn.tail=function(t){var e=null==t?0:t.length;return e?ii(t,1,e):[]},Vn.take=function(t,e,n){return t&&t.length?ii(t,0,(e=n||e===i?1:gs(e))<0?0:e):[]},Vn.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?ii(t,(e=r-(e=n||e===i?1:gs(e)))<0?0:e,r):[]},Vn.takeRightWhile=function(t,e){return t&&t.length?pi(t,co(e,3),!1,!0):[]},Vn.takeWhile=function(t,e){return t&&t.length?pi(t,co(e,3)):[]},Vn.tap=function(t,e){return e(t),t},Vn.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new Pt(o);return ns(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Na(t,e,{leading:r,maxWait:e,trailing:i})},Vn.thru=va,Vn.toArray=ps,Vn.toPairs=zs,Vn.toPairsIn=Vs,Vn.toPath=function(t){return Xa(t)?Ne(t,Bo):ls(t)?[t]:Mi(Fo(ws(t)))},Vn.toPlainObject=bs,Vn.transform=function(t,e,n){var r=Xa(t),i=r||$a(t)||fs(t);if(e=co(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:ns(t)&&Qa(o)?qn(Xt(t)):{}}return(i?ke:xr)(t,(function(t,r,i){return e(n,t,r,i)})),n},Vn.unary=function(t){return Pa(t,1)},Vn.union=ra,Vn.unionBy=ia,Vn.unionWith=oa,Vn.uniq=function(t){return t&&t.length?fi(t):[]},Vn.uniqBy=function(t,e){return t&&t.length?fi(t,co(e,2)):[]},Vn.uniqWith=function(t,e){return e="function"==typeof e?e:i,t&&t.length?fi(t,i,e):[]},Vn.unset=function(t,e){return null==t||hi(t,e)},Vn.unzip=aa,Vn.unzipWith=sa,Vn.update=function(t,e,n){return null==t?t:di(t,e,bi(n))},Vn.updateWith=function(t,e,n,r){return r="function"==typeof r?r:i,null==t?t:di(t,e,bi(n),r)},Vn.values=qs,Vn.valuesIn=function(t){return null==t?[]:Je(t,Ds(t))},Vn.without=ua,Vn.words=Qs,Vn.wrap=function(t,e){return Ba(bi(e),t)},Vn.xor=ca,Vn.xorBy=la,Vn.xorWith=fa,Vn.zip=ha,Vn.zipObject=function(t,e){return mi(t||[],e||[],nr)},Vn.zipObjectDeep=function(t,e){return mi(t||[],e||[],ti)},Vn.zipWith=da,Vn.entries=zs,Vn.entriesIn=Vs,Vn.extend=_s,Vn.extendWith=Ss,cu(Vn,Vn),Vn.add=bu,Vn.attempt=tu,Vn.camelCase=Us,Vn.capitalize=Ws,Vn.ceil=wu,Vn.clamp=function(t,e,n){return n===i&&(n=e,e=i),n!==i&&(n=(n=ys(n))===n?n:0),e!==i&&(e=(e=ys(e))===e?e:0),ur(ys(t),e,n)},Vn.clone=function(t){return cr(t,4)},Vn.cloneDeep=function(t){return cr(t,5)},Vn.cloneDeepWith=function(t,e){return cr(t,5,e="function"==typeof e?e:i)},Vn.cloneWith=function(t,e){return cr(t,4,e="function"==typeof e?e:i)},Vn.conformsTo=function(t,e){return null==e||lr(t,e,Ns(e))},Vn.deburr=Ys,Vn.defaultTo=function(t,e){return null==t||t!==t?e:t},Vn.divide=xu,Vn.endsWith=function(t,e,n){t=ws(t),e=li(e);var r=t.length,o=n=n===i?r:ur(gs(n),0,r);return(n-=e.length)>=0&&t.slice(n,o)==e},Vn.eq=qa,Vn.escape=function(t){return(t=ws(t))&&K.test(t)?t.replace(Z,on):t},Vn.escapeRegExp=function(t){return(t=ws(t))&&ot.test(t)?t.replace(it,"\\$&"):t},Vn.every=function(t,e,n){var r=Xa(t)?Pe:vr;return n&&xo(t,e,n)&&(e=i),r(t,co(e,3))},Vn.find=ya,Vn.findIndex=Yo,Vn.findKey=function(t,e){return Be(t,co(e,3),xr)},Vn.findLast=ba,Vn.findLastIndex=Xo,Vn.findLastKey=function(t,e){return Be(t,co(e,3),_r)},Vn.floor=_u,Vn.forEach=wa,Vn.forEachRight=xa,Vn.forIn=function(t,e){return null==t?t:br(t,co(e,3),Ds)},Vn.forInRight=function(t,e){return null==t?t:wr(t,co(e,3),Ds)},Vn.forOwn=function(t,e){return t&&xr(t,co(e,3))},Vn.forOwnRight=function(t,e){return t&&_r(t,co(e,3))},Vn.get=Ts,Vn.gt=Ua,Vn.gte=Wa,Vn.has=function(t,e){return null!=t&&mo(t,e,Tr)},Vn.hasIn=Ps,Vn.head=Go,Vn.identity=ou,Vn.includes=function(t,e,n,r){t=Ga(t)?t:qs(t),n=n&&!r?gs(n):0;var i=t.length;return n<0&&(n=bn(i+n,0)),cs(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&Ve(t,e,n)>-1},Vn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:gs(n);return i<0&&(i=bn(r+i,0)),Ve(t,e,i)},Vn.inRange=function(t,e,n){return e=vs(e),n===i?(n=e,e=0):n=vs(n),function(t,e,n){return t>=wn(e,n)&&t=-9007199254740991&&t<=p},Vn.isSet=us,Vn.isString=cs,Vn.isSymbol=ls,Vn.isTypedArray=fs,Vn.isUndefined=function(t){return t===i},Vn.isWeakMap=function(t){return rs(t)&&go(t)==N},Vn.isWeakSet=function(t){return rs(t)&&"[object WeakSet]"==Cr(t)},Vn.join=function(t,e){return null==t?"":Xe.call(t,e)},Vn.kebabCase=Xs,Vn.last=Jo,Vn.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var o=r;return n!==i&&(o=(o=gs(n))<0?bn(r+o,0):wn(o,r-1)),e===e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):ze(t,Ue,o,!0)},Vn.lowerCase=Hs,Vn.lowerFirst=Gs,Vn.lt=hs,Vn.lte=ds,Vn.max=function(t){return t&&t.length?gr(t,ou,kr):i},Vn.maxBy=function(t,e){return t&&t.length?gr(t,co(e,2),kr):i},Vn.mean=function(t){return We(t,ou)},Vn.meanBy=function(t,e){return We(t,co(e,2))},Vn.min=function(t){return t&&t.length?gr(t,ou,Br):i},Vn.minBy=function(t,e){return t&&t.length?gr(t,co(e,2),Br):i},Vn.stubArray=mu,Vn.stubFalse=yu,Vn.stubObject=function(){return{}},Vn.stubString=function(){return""},Vn.stubTrue=function(){return!0},Vn.multiply=Su,Vn.nth=function(t,e){return t&&t.length?Wr(t,gs(e)):i},Vn.noConflict=function(){return de._===this&&(de._=zt),this},Vn.noop=lu,Vn.now=Ta,Vn.pad=function(t,e,n){t=ws(t);var r=(e=gs(e))?dn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Yi(ve(i),n)+t+Yi(pe(i),n)},Vn.padEnd=function(t,e,n){t=ws(t);var r=(e=gs(e))?dn(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var o=Sn();return wn(t+o*(e-t+ce("1e-"+((o+"").length-1))),e)}return Zr(t,e)},Vn.reduce=function(t,e,n){var r=Xa(t)?je:He,i=arguments.length<3;return r(t,co(e,4),n,i,dr)},Vn.reduceRight=function(t,e,n){var r=Xa(t)?Ie:He,i=arguments.length<3;return r(t,co(e,4),n,i,pr)},Vn.repeat=function(t,e,n){return e=(n?xo(t,e,n):e===i)?1:gs(e),$r(ws(t),e)},Vn.replace=function(){var t=arguments,e=ws(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Vn.result=function(t,e,n){var r=-1,o=(e=wi(e,t)).length;for(o||(o=1,t=i);++rp)return[];var n=g,r=wn(t,g);e=co(e),t-=g;for(var i=Ze(r,e);++n=a)return t;var u=n-dn(r);if(u<1)return r;var c=s?_i(s,0,u).join(""):t.slice(0,u);if(o===i)return c+r;if(s&&(u+=c.length-u),ss(o)){if(t.slice(u).search(o)){var l,f=c;for(o.global||(o=kt(o.source,ws(vt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var h=l.index;c=c.slice(0,h===i?u:h)}}else if(t.indexOf(li(o),u)!=u){var d=c.lastIndexOf(o);d>-1&&(c=c.slice(0,d))}return c+r},Vn.unescape=function(t){return(t=ws(t))&&$.test(t)?t.replace(G,gn):t},Vn.uniqueId=function(t){var e=++It;return ws(t)+e},Vn.upperCase=Ks,Vn.upperFirst=Js,Vn.each=wa,Vn.eachRight=xa,Vn.first=Go,cu(Vn,function(){var t={};return xr(Vn,(function(e,n){jt.call(Vn.prototype,n)||(t[n]=e)})),t}(),{chain:!1}),Vn.VERSION="4.17.21",ke(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Vn[t].placeholder=Vn})),ke(["drop","take"],(function(t,e){Yn.prototype[t]=function(n){n=n===i?1:bn(gs(n),0);var r=this.__filtered__&&!e?new Yn(this):this.clone();return r.__filtered__?r.__takeCount__=wn(n,r.__takeCount__):r.__views__.push({size:wn(n,g),type:t+(r.__dir__<0?"Right":"")}),r},Yn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),ke(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Yn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:co(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),ke(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Yn.prototype[t]=function(){return this[n](1).value()[0]}})),ke(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Yn.prototype[t]=function(){return this.__filtered__?new Yn(this):this[n](1)}})),Yn.prototype.compact=function(){return this.filter(ou)},Yn.prototype.find=function(t){return this.filter(t).head()},Yn.prototype.findLast=function(t){return this.reverse().find(t)},Yn.prototype.invokeMap=Kr((function(t,e){return"function"==typeof t?new Yn(this):this.map((function(n){return Or(n,t,e)}))})),Yn.prototype.reject=function(t){return this.filter(Ra(co(t)))},Yn.prototype.slice=function(t,e){t=gs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new Yn(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==i&&(n=(e=gs(e))<0?n.dropRight(-e):n.take(e-t)),n)},Yn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Yn.prototype.toArray=function(){return this.take(g)},xr(Yn.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),o=Vn[r?"take"+("last"==e?"Right":""):e],a=r||/^find/.test(e);o&&(Vn.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,u=e instanceof Yn,c=s[0],l=u||Xa(e),f=function(t){var e=o.apply(Vn,De([t],s));return r&&h?e[0]:e};l&&n&&"function"==typeof c&&1!=c.length&&(u=l=!1);var h=this.__chain__,d=!!this.__actions__.length,p=a&&!h,v=u&&!d;if(!a&&l){e=v?e:new Yn(this);var g=t.apply(e,s);return g.__actions__.push({func:va,args:[f],thisArg:i}),new Wn(g,h)}return p&&v?t.apply(this,s):(g=this.thru(f),p?r?g.value()[0]:g.value():g)})})),ke(["pop","push","shift","sort","splice","unshift"],(function(t){var e=Mt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Vn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Xa(i)?i:[],t)}return this[n]((function(n){return e.apply(Xa(n)?n:[],t)}))}})),xr(Yn.prototype,(function(t,e){var n=Vn[e];if(n){var r=n.name+"";jt.call(Ln,r)||(Ln[r]=[]),Ln[r].push({name:e,func:n})}})),Ln[Vi(i,2).name]=[{name:"wrapper",func:i}],Yn.prototype.clone=function(){var t=new Yn(this.__wrapped__);return t.__actions__=Mi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Mi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Mi(this.__views__),t},Yn.prototype.reverse=function(){if(this.__filtered__){var t=new Yn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Yn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Xa(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?i:this.__values__[this.__index__++]}},Vn.prototype.plant=function(t){for(var e,n=this;n instanceof Un;){var r=Vo(n);r.__index__=0,r.__values__=i,e?o.__wrapped__=r:e=r;var o=r;n=n.__wrapped__}return o.__wrapped__=t,e},Vn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Yn){var e=t;return this.__actions__.length&&(e=new Yn(this)),(e=e.reverse()).__actions__.push({func:va,args:[na],thisArg:i}),new Wn(e,this.__chain__)}return this.thru(na)},Vn.prototype.toJSON=Vn.prototype.valueOf=Vn.prototype.value=function(){return vi(this.__wrapped__,this.__actions__)},Vn.prototype.first=Vn.prototype.head,Kt&&(Vn.prototype[Kt]=function(){return this}),Vn}();de._=mn,(r=function(){return mn}.call(e,n,e,t))===i||(t.exports=r)}.call(this)},49410:function(t,e,n){var r;t=n.nmd(t),function(){function i(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function o(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function f(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function D(t,e){for(var n=t.length;n--&&w(e,t[n],0)>-1;);return n}function j(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function I(t){return"\\"+Qe[t]}function R(t){return He.test(t)}function F(t){return Ge.test(t)}function B(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function z(t,e){return function(n){return t(e(n))}}function V(t,e){for(var n=-1,r=t.length,i=0,o=[];++n"']/g,Bt=RegExp(Rt.source),zt=RegExp(Ft.source),Vt=/<%-([\s\S]+?)%>/g,qt=/<%([\s\S]+?)%>/g,Ut=/<%=([\s\S]+?)%>/g,Wt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Yt=/^\w*$/,Xt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ht=/[\\^$.*+?()[\]{}|]/g,Gt=RegExp(Ht.source),Zt=/^\s+/,$t=/\s/,Kt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Jt=/\{\n\/\* \[wrapped with (.+)\] \*/,Qt=/,? & /,te=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ee=/[()=,{}\[\]\/\s]/,ne=/\\(\\)?/g,re=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ie=/\w*$/,oe=/^[-+]0x[0-9a-f]+$/i,ae=/^0b[01]+$/i,se=/^\[object .+?Constructor\]$/,ue=/^0o[0-7]+$/i,ce=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,fe=/($^)/,he=/['\n\r\u2028\u2029\\]/g,de="\\ud800-\\udfff",pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",ve="\\u2700-\\u27bf",ge="a-z\\xdf-\\xf6\\xf8-\\xff",me="A-Z\\xc0-\\xd6\\xd8-\\xde",ye="\\ufe0e\\ufe0f",be="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",we="['\u2019]",xe="["+de+"]",_e="["+be+"]",Se="["+pe+"]",Ae="\\d+",Ee="["+ve+"]",Ce="["+ge+"]",ke="[^"+de+be+Ae+ve+ge+me+"]",Te="\\ud83c[\\udffb-\\udfff]",Pe="[^"+de+"]",Me="(?:\\ud83c[\\udde6-\\uddff]){2}",Oe="[\\ud800-\\udbff][\\udc00-\\udfff]",Le="["+me+"]",Ne="\\u200d",De="(?:"+Ce+"|"+ke+")",je="(?:"+Le+"|"+ke+")",Ie="(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Re="(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",Fe="(?:"+Se+"|"+Te+")"+"?",Be="["+ye+"]?",ze=Be+Fe+("(?:\\u200d(?:"+[Pe,Me,Oe].join("|")+")"+Be+Fe+")*"),Ve="(?:"+[Ee,Me,Oe].join("|")+")"+ze,qe="(?:"+[Pe+Se+"?",Se,Me,Oe,xe].join("|")+")",Ue=RegExp(we,"g"),We=RegExp(Se,"g"),Ye=RegExp(Te+"(?="+Te+")|"+qe+ze,"g"),Xe=RegExp([Le+"?"+Ce+"+"+Ie+"(?="+[_e,Le,"$"].join("|")+")",je+"+"+Re+"(?="+[_e,Le+De,"$"].join("|")+")",Le+"?"+De+"+"+Ie,Le+"+"+Re,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ae,Ve].join("|"),"g"),He=RegExp("["+Ne+de+pe+ye+"]"),Ge=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ze=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],$e=-1,Ke={};Ke[Et]=Ke[Ct]=Ke[kt]=Ke[Tt]=Ke[Pt]=Ke[Mt]=Ke[Ot]=Ke[Lt]=Ke[Nt]=!0,Ke[st]=Ke[ut]=Ke[St]=Ke[ct]=Ke[At]=Ke[lt]=Ke[ft]=Ke[ht]=Ke[pt]=Ke[vt]=Ke[gt]=Ke[yt]=Ke[bt]=Ke[wt]=Ke[_t]=!1;var Je={};Je[st]=Je[ut]=Je[St]=Je[At]=Je[ct]=Je[lt]=Je[Et]=Je[Ct]=Je[kt]=Je[Tt]=Je[Pt]=Je[pt]=Je[vt]=Je[gt]=Je[yt]=Je[bt]=Je[wt]=Je[xt]=Je[Mt]=Je[Ot]=Je[Lt]=Je[Nt]=!0,Je[ft]=Je[ht]=Je[_t]=!1;var Qe={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},tn=parseFloat,en=parseInt,nn="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,rn="object"==typeof self&&self&&self.Object===Object&&self,on=nn||rn||Function("return this")(),an=e&&!e.nodeType&&e,sn=an&&t&&!t.nodeType&&t,un=sn&&sn.exports===an,cn=un&&nn.process,ln=function(){try{var t=sn&&sn.require&&sn.require("util").types;return t||cn&&cn.binding&&cn.binding("util")}catch(t){}}(),fn=ln&&ln.isArrayBuffer,hn=ln&&ln.isDate,dn=ln&&ln.isMap,pn=ln&&ln.isRegExp,vn=ln&&ln.isSet,gn=ln&&ln.isTypedArray,mn=A("length"),yn=E({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),bn=E({"&":"&","<":"<",">":">",'"':""","'":"'"}),wn=E({"&":"&","<":"<",">":">",""":'"',"'":"'"}),xn=function t(e){function n(t){if(zi(t)&&!Ms(t)&&!(t instanceof $t)){if(t instanceof E)return t;if(Mo.call(t,"__wrapped__"))return hi(t)}return new E(t)}function r(){}function E(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=H}function $t(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=ot,this.__views__=[]}function te(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function Pe(t,e,n,r,i,o){var s,u=1&e,c=2&e,l=4&e;if(n&&(s=i?n(t,r,i,o):n(t)),s!==H)return s;if(!Bi(t))return t;var f=Ms(t);if(f){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&Mo.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!u)return cr(t,s)}else{var h=za(t),d=h==ht||h==dt;if(Ls(t))return rr(t,u);if(h==gt||h==st||d&&!i){if(s=c||d?{}:Hr(t),!u)return c?function(t,e){return lr(t,Ba(t),e)}(t,function(t,e){return t&&lr(e,eo(e),t)}(s,t)):function(t,e){return lr(t,Fa(t),e)}(t,Ee(s,t))}else{if(!Je[h])return i?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case St:return ir(t);case ct:case lt:return new r(+t);case At:return function(t,e){return new t.constructor(e?ir(t.buffer):t.buffer,t.byteOffset,t.byteLength)}(t,n);case Et:case Ct:case kt:case Tt:case Pt:case Mt:case Ot:case Lt:case Nt:return or(t,n);case pt:return new r;case vt:case wt:return new r(t);case yt:return function(t){var e=new t.constructor(t.source,ie.exec(t));return e.lastIndex=t.lastIndex,e}(t);case bt:return new r;case xt:return function(t){return Ea?xo(Ea.call(t)):{}}(t)}}(t,h,u)}}o||(o=new ge);var p=o.get(t);if(p)return p;o.set(t,s),Is(t)?t.forEach((function(r){s.add(Pe(r,e,n,r,t,o))})):Ds(t)&&t.forEach((function(r,i){s.set(i,Pe(r,e,n,i,t,o))}));var v=f?H:(l?c?Br:Fr:c?eo:to)(t);return a(v||t,(function(r,i){v&&(r=t[i=r]),_e(s,i,Pe(r,e,n,i,t,o))})),s}function Me(t,e,n){var r=n.length;if(null==t)return!r;for(t=xo(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===H&&!(i in t)||!o(a))return!1}return!0}function Oe(t,e,n){if("function"!=typeof t)throw new Ao(G);return Ua((function(){t.apply(H,n)}),e)}function Le(t,e,n,r){var i=-1,o=l,a=!0,s=t.length,u=[],c=e.length;if(!s)return u;n&&(e=h(e,M(n))),r?(o=f,a=!1):e.length>=200&&(o=L,a=!1,e=new ve(e));t:for(;++i0&&n(s)?e>1?Ie(s,e-1,n,r,i):d(i,s):r||(i[i.length]=s)}return i}function Re(t,e){return t&&Ma(t,e,to)}function Fe(t,e){return t&&Oa(t,e,to)}function Be(t,e){return c(e,(function(e){return Ii(t[e])}))}function ze(t,e){for(var n=0,r=(e=er(e,t)).length;null!=t&&ne}function Xe(t,e){return null!=t&&Mo.call(t,e)}function He(t,e){return null!=t&&e in xo(t)}function Ge(t,e,n){for(var r=n?f:l,i=t[0].length,o=t.length,a=o,s=go(o),u=1/0,c=[];a--;){var d=t[a];a&&e&&(d=h(d,M(e))),u=aa(d.length,u),s[a]=!n&&(e||i>=120&&d.length>=120)?new ve(a&&d):H}d=t[0];var p=-1,v=s[0];t:for(;++p=s?u:u*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Pn(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)s!==t&&Wo.call(s,u,1),Wo.call(t,u,1);return t}function On(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Zr(i)?Wo.call(t,i,1):Hn(t,i)}}return t}function Ln(t,e){return t+Qo(ca()*(e-t+1))}function Nn(t,e){var n="";if(!t||e<1||e>rt)return n;do{e%2&&(n+=t),(e=Qo(e/2))&&(t+=t)}while(e);return n}function Dn(t,e){return Wa(ni(t,e,uo),t+"")}function jn(t){return ye(ro(t))}function In(t,e){var n=ro(t);return ui(n,Te(e,0,n.length))}function Rn(t,e,n,r){if(!Bi(t))return t;for(var i=-1,o=(e=er(e,t)).length,a=o-1,s=t;null!=s&&++ii?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=go(i);++r>>1,a=t[o];null!==a&&!Wi(a)&&(n?a<=e:a=200){var c=e?null:Ia(t);if(c)return q(c);a=!1,i=L,u=new ve}else u=e?[]:s;t:for(;++r=r?t:Bn(t,e,n)}function rr(t,e){if(e)return t.slice();var n=t.length,r=zo?zo(n):new t.constructor(n);return t.copy(r),r}function ir(t){var e=new t.constructor(t.byteLength);return new Bo(e).set(new Bo(t)),e}function or(t,e){return new t.constructor(e?ir(t.buffer):t.buffer,t.byteOffset,t.length)}function ar(t,e){if(t!==e){var n=t!==H,r=null===t,i=t===t,o=Wi(t),a=e!==H,s=null===e,u=e===e,c=Wi(e);if(!s&&!c&&!o&&t>e||o&&a&&u&&!s&&!c||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!c&&t1?n[i-1]:H,a=i>2?n[2]:H;for(o=t.length>3&&"function"==typeof o?(i--,o):H,a&&$r(n[0],n[1],a)&&(o=i<3?H:o,i=1),e=xo(e);++r-1?i[o?e[a]:a]:H}}function wr(t){return Rr((function(e){var n=e.length,r=n,i=E.prototype.thru;for(t&&e.reverse();r--;){var o=e[r];if("function"!=typeof o)throw new Ao(G);if(i&&!a&&"wrapper"==zr(o))var a=new E([],!0)}for(r=a?r:n;++r1&&y.reverse(),l&&us))return!1;var c=o.get(t),l=o.get(e);if(c&&l)return c==e&&l==t;var f=-1,h=!0,d=2&n?new ve:H;for(o.set(t,e),o.set(e,t);++f-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Kt,"{\n/* [wrapped with "+e+"] */\n")}(r,fi(function(t){var e=t.match(Jt);return e?e[1].split(Qt):[]}(r),n)))}function si(t){var e=0,n=0;return function(){var r=sa(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(H,arguments)}}function ui(t,e){var n=-1,r=t.length,i=r-1;for(e=e===H?r:e;++n0&&(n=e.apply(this,arguments)),t<=1&&(e=H),n}}function Pi(t,e,n){function r(e){var n=c,r=l;return c=l=H,v=e,h=t.apply(r,n)}function i(t){return v=t,d=Ua(a,e),g?r(t):h}function o(t){var n=t-p;return p===H||n>=e||n<0||m&&t-v>=f}function a(){var t=ys();return o(t)?s(t):(d=Ua(a,function(t){var n=e-(t-p);return m?aa(n,f-(t-v)):n}(t)),H)}function s(t){return d=H,y&&c?r(t):(c=l=H,h)}function u(){var t=ys(),n=o(t);if(c=arguments,l=this,p=t,n){if(d===H)return i(p);if(m)return ja(d),d=Ua(a,e),r(p)}return d===H&&(d=Ua(a,e)),h}var c,l,f,h,d,p,v=0,g=!1,m=!1,y=!0;if("function"!=typeof t)throw new Ao(G);return e=Zi(e)||0,Bi(n)&&(g=!!n.leading,f=(m="maxWait"in n)?oa(Zi(n.maxWait)||0,e):f,y="trailing"in n?!!n.trailing:y),u.cancel=function(){d!==H&&ja(d),v=0,c=p=l=d=H},u.flush=function(){return d===H?h:s(ys())},u}function Mi(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Ao(G);var n=function n(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Mi.Cache||pe),n}function Oi(t){if("function"!=typeof t)throw new Ao(G);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Li(t,e){return t===e||t!==t&&e!==e}function Ni(t){return null!=t&&Fi(t.length)&&!Ii(t)}function Di(t){return zi(t)&&Ni(t)}function ji(t){if(!zi(t))return!1;var e=qe(t);return e==ft||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!qi(t)}function Ii(t){if(!Bi(t))return!1;var e=qe(t);return e==ht||e==dt||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Ri(t){return"number"==typeof t&&t==Hi(t)}function Fi(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=rt}function Bi(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function zi(t){return null!=t&&"object"==typeof t}function Vi(t){return"number"==typeof t||zi(t)&&qe(t)==vt}function qi(t){if(!zi(t)||qe(t)!=gt)return!1;var e=Vo(t);if(null===e)return!0;var n=Mo.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Po.call(n)==Do}function Ui(t){return"string"==typeof t||!Ms(t)&&zi(t)&&qe(t)==wt}function Wi(t){return"symbol"==typeof t||zi(t)&&qe(t)==xt}function Yi(t){if(!t)return[];if(Ni(t))return Ui(t)?W(t):cr(t);if(Xo&&t[Xo])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Xo]());var e=za(t);return(e==pt?B:e==bt?q:ro)(t)}function Xi(t){return t?(t=Zi(t))===nt||t===-nt?17976931348623157e292*(t<0?-1:1):t===t?t:0:0===t?t:0}function Hi(t){var e=Xi(t),n=e%1;return e===e?n?e-n:e:0}function Gi(t){return t?Te(Hi(t),0,ot):0}function Zi(t){if("number"==typeof t)return t;if(Wi(t))return it;if(Bi(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Bi(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=P(t);var n=ae.test(t);return n||ue.test(t)?en(t.slice(2),n?2:8):oe.test(t)?it:+t}function $i(t){return lr(t,eo(t))}function Ki(t){return null==t?"":Yn(t)}function Ji(t,e,n){var r=null==t?H:ze(t,e);return r===H?n:r}function Qi(t,e){return null!=t&&Xr(t,e,He)}function to(t){return Ni(t)?me(t):ln(t)}function eo(t){return Ni(t)?me(t,!0):mn(t)}function no(t,e){if(null==t)return{};var n=h(Br(t),(function(t){return[t]}));return e=qr(e),Pn(t,n,(function(t,n){return e(t,n[0])}))}function ro(t){return null==t?[]:O(t,to(t))}function io(t){return cu(Ki(t).toLowerCase())}function oo(t){return(t=Ki(t))&&t.replace(le,yn).replace(We,"")}function ao(t,e,n){return t=Ki(t),(e=n?H:e)===H?F(t)?X(t):m(t):t.match(e)||[]}function so(t){return function(){return t}}function uo(t){return t}function co(t){return cn("function"==typeof t?t:Pe(t,1))}function lo(t,e,n){var r=to(e),i=Be(e,r);null!=n||Bi(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Be(e,to(e)));var o=!(Bi(n)&&"chain"in n&&!n.chain),s=Ii(t);return a(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=cr(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,d([this.value()],arguments))})})),t}function fo(){}function ho(t){return Kr(t)?A(ci(t)):function(t){return function(e){return ze(e,t)}}(t)}function po(){return[]}function vo(){return!1}var go=(e=null==e?on:xn.defaults(on.Object(),e,xn.pick(on,Ze))).Array,mo=e.Date,yo=e.Error,bo=e.Function,wo=e.Math,xo=e.Object,_o=e.RegExp,So=e.String,Ao=e.TypeError,Eo=go.prototype,Co=bo.prototype,ko=xo.prototype,To=e["__core-js_shared__"],Po=Co.toString,Mo=ko.hasOwnProperty,Oo=0,Lo=function(){var t=/[^.]+$/.exec(To&&To.keys&&To.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),No=ko.toString,Do=Po.call(xo),jo=on._,Io=_o("^"+Po.call(Mo).replace(Ht,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ro=un?e.Buffer:H,Fo=e.Symbol,Bo=e.Uint8Array,zo=Ro?Ro.allocUnsafe:H,Vo=z(xo.getPrototypeOf,xo),qo=xo.create,Uo=ko.propertyIsEnumerable,Wo=Eo.splice,Yo=Fo?Fo.isConcatSpreadable:H,Xo=Fo?Fo.iterator:H,Ho=Fo?Fo.toStringTag:H,Go=function(){try{var t=Yr(xo,"defineProperty");return t({},"",{}),t}catch(t){}}(),Zo=e.clearTimeout!==on.clearTimeout&&e.clearTimeout,$o=mo&&mo.now!==on.Date.now&&mo.now,Ko=e.setTimeout!==on.setTimeout&&e.setTimeout,Jo=wo.ceil,Qo=wo.floor,ta=xo.getOwnPropertySymbols,ea=Ro?Ro.isBuffer:H,na=e.isFinite,ra=Eo.join,ia=z(xo.keys,xo),oa=wo.max,aa=wo.min,sa=mo.now,ua=e.parseInt,ca=wo.random,la=Eo.reverse,fa=Yr(e,"DataView"),ha=Yr(e,"Map"),da=Yr(e,"Promise"),pa=Yr(e,"Set"),va=Yr(e,"WeakMap"),ga=Yr(xo,"create"),ma=va&&new va,ya={},ba=li(fa),wa=li(ha),xa=li(da),_a=li(pa),Sa=li(va),Aa=Fo?Fo.prototype:H,Ea=Aa?Aa.valueOf:H,Ca=Aa?Aa.toString:H,ka=function(){function t(){}return function(e){if(!Bi(e))return{};if(qo)return qo(e);t.prototype=e;var n=new t;return t.prototype=H,n}}();n.templateSettings={escape:Vt,evaluate:qt,interpolate:Ut,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,E.prototype=ka(r.prototype),E.prototype.constructor=E,$t.prototype=ka(r.prototype),$t.prototype.constructor=$t,te.prototype.clear=function(){this.__data__=ga?ga(null):{},this.size=0},te.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},te.prototype.get=function(t){var e=this.__data__;if(ga){var n=e[t];return n===Z?H:n}return Mo.call(e,t)?e[t]:H},te.prototype.has=function(t){var e=this.__data__;return ga?e[t]!==H:Mo.call(e,t)},te.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=ga&&e===H?Z:e,this},de.prototype.clear=function(){this.__data__=[],this.size=0},de.prototype.delete=function(t){var e=this.__data__,n=Se(e,t);return!(n<0)&&(n==e.length-1?e.pop():Wo.call(e,n,1),--this.size,!0)},de.prototype.get=function(t){var e=this.__data__,n=Se(e,t);return n<0?H:e[n][1]},de.prototype.has=function(t){return Se(this.__data__,t)>-1},de.prototype.set=function(t,e){var n=this.__data__,r=Se(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},pe.prototype.clear=function(){this.size=0,this.__data__={hash:new te,map:new(ha||de),string:new te}},pe.prototype.delete=function(t){var e=Ur(this,t).delete(t);return this.size-=e?1:0,e},pe.prototype.get=function(t){return Ur(this,t).get(t)},pe.prototype.has=function(t){return Ur(this,t).has(t)},pe.prototype.set=function(t,e){var n=Ur(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},ve.prototype.add=ve.prototype.push=function(t){return this.__data__.set(t,Z),this},ve.prototype.has=function(t){return this.__data__.has(t)},ge.prototype.clear=function(){this.__data__=new de,this.size=0},ge.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},ge.prototype.get=function(t){return this.__data__.get(t)},ge.prototype.has=function(t){return this.__data__.has(t)},ge.prototype.set=function(t,e){var n=this.__data__;if(n instanceof de){var r=n.__data__;if(!ha||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new pe(r)}return n.set(t,e),this.size=n.size,this};var Ta=dr(Re),Pa=dr(Fe,!0),Ma=pr(),Oa=pr(!0),La=ma?function(t,e){return ma.set(t,e),t}:uo,Na=Go?function(t,e){return Go(t,"toString",{configurable:!0,enumerable:!1,value:so(e),writable:!0})}:uo,Da=Dn,ja=Zo||function(t){return on.clearTimeout(t)},Ia=pa&&1/q(new pa([,-0]))[1]==nt?function(t){return new pa(t)}:fo,Ra=ma?function(t){return ma.get(t)}:fo,Fa=ta?function(t){return null==t?[]:(t=xo(t),c(ta(t),(function(e){return Uo.call(t,e)})))}:po,Ba=ta?function(t){for(var e=[];t;)d(e,Fa(t)),t=Vo(t);return e}:po,za=qe;(fa&&za(new fa(new ArrayBuffer(1)))!=At||ha&&za(new ha)!=pt||da&&za(da.resolve())!=mt||pa&&za(new pa)!=bt||va&&za(new va)!=_t)&&(za=function(t){var e=qe(t),n=e==gt?t.constructor:H,r=n?li(n):"";if(r)switch(r){case ba:return At;case wa:return pt;case xa:return mt;case _a:return bt;case Sa:return _t}return e});var Va=To?Ii:vo,qa=si(La),Ua=Ko||function(t,e){return on.setTimeout(t,e)},Wa=si(Na),Ya=function(t){var e=Mi(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Xt,(function(t,n,r,i){e.push(r?i.replace(ne,"$1"):n||t)})),e})),Xa=Dn((function(t,e){return Di(t)?Le(t,Ie(e,1,Di,!0)):[]})),Ha=Dn((function(t,e){var n=mi(e);return Di(n)&&(n=H),Di(t)?Le(t,Ie(e,1,Di,!0),qr(n,2)):[]})),Ga=Dn((function(t,e){var n=mi(e);return Di(n)&&(n=H),Di(t)?Le(t,Ie(e,1,Di,!0),H,n):[]})),Za=Dn((function(t){var e=h(t,Qn);return e.length&&e[0]===t[0]?Ge(e):[]})),$a=Dn((function(t){var e=mi(t),n=h(t,Qn);return e===mi(n)?e=H:n.pop(),n.length&&n[0]===t[0]?Ge(n,qr(e,2)):[]})),Ka=Dn((function(t){var e=mi(t),n=h(t,Qn);return(e="function"==typeof e?e:H)&&n.pop(),n.length&&n[0]===t[0]?Ge(n,H,e):[]})),Ja=Dn(yi),Qa=Rr((function(t,e){var n=null==t?0:t.length,r=ke(t,e);return On(t,h(e,(function(t){return Zr(t,n)?+t:t})).sort(ar)),r})),ts=Dn((function(t){return Xn(Ie(t,1,Di,!0))})),es=Dn((function(t){var e=mi(t);return Di(e)&&(e=H),Xn(Ie(t,1,Di,!0),qr(e,2))})),ns=Dn((function(t){var e=mi(t);return e="function"==typeof e?e:H,Xn(Ie(t,1,Di,!0),H,e)})),rs=Dn((function(t,e){return Di(t)?Le(t,e):[]})),is=Dn((function(t){return Kn(c(t,Di))})),os=Dn((function(t){var e=mi(t);return Di(e)&&(e=H),Kn(c(t,Di),qr(e,2))})),as=Dn((function(t){var e=mi(t);return e="function"==typeof e?e:H,Kn(c(t,Di),H,e)})),ss=Dn(wi),us=Dn((function(t){var e=t.length,n=e>1?t[e-1]:H;return n="function"==typeof n?(t.pop(),n):H,xi(t,n)})),cs=Rr((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return ke(e,t)};return!(e>1||this.__actions__.length)&&r instanceof $t&&Zr(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:Si,args:[i],thisArg:H}),new E(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(H),t}))):this.thru(i)})),ls=fr((function(t,e,n){Mo.call(t,n)?++t[n]:Ce(t,n,1)})),fs=br(di),hs=br(pi),ds=fr((function(t,e,n){Mo.call(t,n)?t[n].push(e):Ce(t,n,[e])})),ps=Dn((function(t,e,n){var r=-1,o="function"==typeof e,a=Ni(t)?go(t.length):[];return Ta(t,(function(t){a[++r]=o?i(e,t,n):Qe(t,e,n)})),a})),vs=fr((function(t,e,n){Ce(t,n,e)})),gs=fr((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]})),ms=Dn((function(t,e){if(null==t)return[];var n=e.length;return n>1&&$r(t,e[0],e[1])?e=[]:n>2&&$r(e[0],e[1],e[2])&&(e=[e[0]]),Tn(t,Ie(e,1),[])})),ys=$o||function(){return on.Date.now()},bs=Dn((function(t,e,n){var r=1;if(n.length){var i=V(n,Vr(bs));r|=J}return Lr(t,r,e,n,i)})),ws=Dn((function(t,e,n){var r=3;if(n.length){var i=V(n,Vr(ws));r|=J}return Lr(e,r,t,n,i)})),xs=Dn((function(t,e){return Oe(t,1,e)})),_s=Dn((function(t,e,n){return Oe(t,Zi(e)||0,n)}));Mi.Cache=pe;var Ss=Da((function(t,e){var n=(e=1==e.length&&Ms(e[0])?h(e[0],M(qr())):h(Ie(e,1),M(qr()))).length;return Dn((function(r){for(var o=-1,a=aa(r.length,n);++o=e})),Ps=nn(function(){return arguments}())?nn:function(t){return zi(t)&&Mo.call(t,"callee")&&!Uo.call(t,"callee")},Ms=go.isArray,Os=fn?M(fn):function(t){return zi(t)&&qe(t)==St},Ls=ea||vo,Ns=hn?M(hn):function(t){return zi(t)&&qe(t)==lt},Ds=dn?M(dn):function(t){return zi(t)&&za(t)==pt},js=pn?M(pn):function(t){return zi(t)&&qe(t)==yt},Is=vn?M(vn):function(t){return zi(t)&&za(t)==bt},Rs=gn?M(gn):function(t){return zi(t)&&Fi(t.length)&&!!Ke[qe(t)]},Fs=Tr(_n),Bs=Tr((function(t,e){return t<=e})),zs=hr((function(t,e){if(Qr(e)||Ni(e))return lr(e,to(e),t),H;for(var n in e)Mo.call(e,n)&&_e(t,n,e[n])})),Vs=hr((function(t,e){lr(e,eo(e),t)})),qs=hr((function(t,e,n,r){lr(e,eo(e),t,r)})),Us=hr((function(t,e,n,r){lr(e,to(e),t,r)})),Ws=Rr(ke),Ys=Dn((function(t,e){t=xo(t);var n=-1,r=e.length,i=r>2?e[2]:H;for(i&&$r(e[0],e[1],i)&&(r=1);++n1),e})),lr(t,Br(t),n),r&&(n=Pe(n,7,jr));for(var i=e.length;i--;)Hn(n,e[i]);return n})),Qs=Rr((function(t,e){return null==t?{}:function(t,e){return Pn(t,e,(function(e,n){return Qi(t,n)}))}(t,e)})),tu=Or(to),eu=Or(eo),nu=gr((function(t,e,n){return e=e.toLowerCase(),t+(n?io(e):e)})),ru=gr((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),iu=gr((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),ou=vr("toLowerCase"),au=gr((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()})),su=gr((function(t,e,n){return t+(n?" ":"")+cu(e)})),uu=gr((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),cu=vr("toUpperCase"),lu=Dn((function(t,e){try{return i(t,H,e)}catch(i){return ji(i)?i:new yo(i)}})),fu=Rr((function(t,e){return a(e,(function(e){e=ci(e),Ce(t,e,bs(t[e],t))})),t})),hu=wr(),du=wr(!0),pu=Dn((function(t,e){return function(n){return Qe(n,t,e)}})),vu=Dn((function(t,e){return function(n){return Qe(t,n,e)}})),gu=Ar(h),mu=Ar(u),yu=Ar(g),bu=kr(),wu=kr(!0),xu=Sr((function(t,e){return t+e}),0),_u=Mr("ceil"),Su=Sr((function(t,e){return t/e}),1),Au=Mr("floor"),Eu=Sr((function(t,e){return t*e}),1),Cu=Mr("round"),ku=Sr((function(t,e){return t-e}),0);return n.after=function(t,e){if("function"!=typeof e)throw new Ao(G);return t=Hi(t),function(){if(--t<1)return e.apply(this,arguments)}},n.ary=ki,n.assign=zs,n.assignIn=Vs,n.assignInWith=qs,n.assignWith=Us,n.at=Ws,n.before=Ti,n.bind=bs,n.bindAll=fu,n.bindKey=ws,n.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Ms(t)?t:[t]},n.chain=_i,n.chunk=function(t,e,n){e=(n?$r(t,e,n):e===H)?1:oa(Hi(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=go(Jo(r/e));ii?0:i+n),(r=r===H||r>i?i:Hi(r))<0&&(r+=i),r=n>r?0:Gi(r);n>>0)?(t=Ki(t))&&("string"==typeof e||null!=e&&!js(e))&&(!(e=Yn(e))&&R(t))?nr(W(t),0,n):t.split(e,n):[]},n.spread=function(t,e){if("function"!=typeof t)throw new Ao(G);return e=null==e?0:oa(Hi(e),0),Dn((function(n){var r=n[e],o=nr(n,0,e);return r&&d(o,r),i(t,this,o)}))},n.tail=function(t){var e=null==t?0:t.length;return e?Bn(t,1,e):[]},n.take=function(t,e,n){return t&&t.length?Bn(t,0,(e=n||e===H?1:Hi(e))<0?0:e):[]},n.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Bn(t,(e=r-(e=n||e===H?1:Hi(e)))<0?0:e,r):[]},n.takeRightWhile=function(t,e){return t&&t.length?Zn(t,qr(e,3),!1,!0):[]},n.takeWhile=function(t,e){return t&&t.length?Zn(t,qr(e,3)):[]},n.tap=function(t,e){return e(t),t},n.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new Ao(G);return Bi(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Pi(t,e,{leading:r,maxWait:e,trailing:i})},n.thru=Si,n.toArray=Yi,n.toPairs=tu,n.toPairsIn=eu,n.toPath=function(t){return Ms(t)?h(t,ci):Wi(t)?[t]:cr(Ya(Ki(t)))},n.toPlainObject=$i,n.transform=function(t,e,n){var r=Ms(t),i=r||Ls(t)||Rs(t);if(e=qr(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Bi(t)&&Ii(o)?ka(Vo(t)):{}}return(i?a:Re)(t,(function(t,r,i){return e(n,t,r,i)})),n},n.unary=function(t){return ki(t,1)},n.union=ts,n.unionBy=es,n.unionWith=ns,n.uniq=function(t){return t&&t.length?Xn(t):[]},n.uniqBy=function(t,e){return t&&t.length?Xn(t,qr(e,2)):[]},n.uniqWith=function(t,e){return e="function"==typeof e?e:H,t&&t.length?Xn(t,H,e):[]},n.unset=function(t,e){return null==t||Hn(t,e)},n.unzip=wi,n.unzipWith=xi,n.update=function(t,e,n){return null==t?t:Gn(t,e,tr(n))},n.updateWith=function(t,e,n,r){return r="function"==typeof r?r:H,null==t?t:Gn(t,e,tr(n),r)},n.values=ro,n.valuesIn=function(t){return null==t?[]:O(t,eo(t))},n.without=rs,n.words=ao,n.wrap=function(t,e){return As(tr(e),t)},n.xor=is,n.xorBy=os,n.xorWith=as,n.zip=ss,n.zipObject=function(t,e){return Jn(t||[],e||[],_e)},n.zipObjectDeep=function(t,e){return Jn(t||[],e||[],Rn)},n.zipWith=us,n.entries=tu,n.entriesIn=eu,n.extend=Vs,n.extendWith=qs,lo(n,n),n.add=xu,n.attempt=lu,n.camelCase=nu,n.capitalize=io,n.ceil=_u,n.clamp=function(t,e,n){return n===H&&(n=e,e=H),n!==H&&(n=(n=Zi(n))===n?n:0),e!==H&&(e=(e=Zi(e))===e?e:0),Te(Zi(t),e,n)},n.clone=function(t){return Pe(t,4)},n.cloneDeep=function(t){return Pe(t,5)},n.cloneDeepWith=function(t,e){return Pe(t,5,e="function"==typeof e?e:H)},n.cloneWith=function(t,e){return Pe(t,4,e="function"==typeof e?e:H)},n.conformsTo=function(t,e){return null==e||Me(t,e,to(e))},n.deburr=oo,n.defaultTo=function(t,e){return null==t||t!==t?e:t},n.divide=Su,n.endsWith=function(t,e,n){t=Ki(t),e=Yn(e);var r=t.length,i=n=n===H?r:Te(Hi(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},n.eq=Li,n.escape=function(t){return(t=Ki(t))&&zt.test(t)?t.replace(Ft,bn):t},n.escapeRegExp=function(t){return(t=Ki(t))&&Gt.test(t)?t.replace(Ht,"\\$&"):t},n.every=function(t,e,n){var r=Ms(t)?u:Ne;return n&&$r(t,e,n)&&(e=H),r(t,qr(e,3))},n.find=fs,n.findIndex=di,n.findKey=function(t,e){return y(t,qr(e,3),Re)},n.findLast=hs,n.findLastIndex=pi,n.findLastKey=function(t,e){return y(t,qr(e,3),Fe)},n.floor=Au,n.forEach=Ai,n.forEachRight=Ei,n.forIn=function(t,e){return null==t?t:Ma(t,qr(e,3),eo)},n.forInRight=function(t,e){return null==t?t:Oa(t,qr(e,3),eo)},n.forOwn=function(t,e){return t&&Re(t,qr(e,3))},n.forOwnRight=function(t,e){return t&&Fe(t,qr(e,3))},n.get=Ji,n.gt=ks,n.gte=Ts,n.has=function(t,e){return null!=t&&Xr(t,e,Xe)},n.hasIn=Qi,n.head=gi,n.identity=uo,n.includes=function(t,e,n,r){t=Ni(t)?t:ro(t),n=n&&!r?Hi(n):0;var i=t.length;return n<0&&(n=oa(i+n,0)),Ui(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&w(t,e,n)>-1},n.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Hi(n);return i<0&&(i=oa(r+i,0)),w(t,e,i)},n.inRange=function(t,e,n){return e=Xi(e),n===H?(n=e,e=0):n=Xi(n),function(t,e,n){return t>=aa(e,n)&&t=-rt&&t<=rt},n.isSet=Is,n.isString=Ui,n.isSymbol=Wi,n.isTypedArray=Rs,n.isUndefined=function(t){return t===H},n.isWeakMap=function(t){return zi(t)&&za(t)==_t},n.isWeakSet=function(t){return zi(t)&&"[object WeakSet]"==qe(t)},n.join=function(t,e){return null==t?"":ra.call(t,e)},n.kebabCase=ru,n.last=mi,n.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==H&&(i=(i=Hi(n))<0?oa(r+i,0):aa(i,r-1)),e===e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):b(t,_,i,!0)},n.lowerCase=iu,n.lowerFirst=ou,n.lt=Fs,n.lte=Bs,n.max=function(t){return t&&t.length?De(t,uo,Ye):H},n.maxBy=function(t,e){return t&&t.length?De(t,qr(e,2),Ye):H},n.mean=function(t){return S(t,uo)},n.meanBy=function(t,e){return S(t,qr(e,2))},n.min=function(t){return t&&t.length?De(t,uo,_n):H},n.minBy=function(t,e){return t&&t.length?De(t,qr(e,2),_n):H},n.stubArray=po,n.stubFalse=vo,n.stubObject=function(){return{}},n.stubString=function(){return""},n.stubTrue=function(){return!0},n.multiply=Eu,n.nth=function(t,e){return t&&t.length?kn(t,Hi(e)):H},n.noConflict=function(){return on._===this&&(on._=jo),this},n.noop=fo,n.now=ys,n.pad=function(t,e,n){t=Ki(t);var r=(e=Hi(e))?U(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Er(Qo(i),n)+t+Er(Jo(i),n)},n.padEnd=function(t,e,n){t=Ki(t);var r=(e=Hi(e))?U(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=ca();return aa(t+i*(e-t+tn("1e-"+((i+"").length-1))),e)}return Ln(t,e)},n.reduce=function(t,e,n){var r=Ms(t)?p:C,i=arguments.length<3;return r(t,qr(e,4),n,i,Ta)},n.reduceRight=function(t,e,n){var r=Ms(t)?v:C,i=arguments.length<3;return r(t,qr(e,4),n,i,Pa)},n.repeat=function(t,e,n){return e=(n?$r(t,e,n):e===H)?1:Hi(e),Nn(Ki(t),e)},n.replace=function(){var t=arguments,e=Ki(t[0]);return t.length<3?e:e.replace(t[1],t[2])},n.result=function(t,e,n){var r=-1,i=(e=er(e,t)).length;for(i||(i=1,t=H);++rrt)return[];var n=ot,r=aa(t,ot);e=qr(e),t-=ot;for(var i=T(r,e);++n=o)return t;var s=n-U(r);if(s<1)return r;var u=a?nr(a,0,s).join(""):t.slice(0,s);if(i===H)return u+r;if(a&&(s+=u.length-s),js(i)){if(t.slice(s).search(i)){var c,l=u;for(i.global||(i=_o(i.source,Ki(ie.exec(i))+"g")),i.lastIndex=0;c=i.exec(l);)var f=c.index;u=u.slice(0,f===H?s:f)}}else if(t.indexOf(Yn(i),s)!=s){var h=u.lastIndexOf(i);h>-1&&(u=u.slice(0,h))}return u+r},n.unescape=function(t){return(t=Ki(t))&&Bt.test(t)?t.replace(Rt,wn):t},n.uniqueId=function(t){var e=++Oo;return Ki(t)+e},n.upperCase=uu,n.upperFirst=cu,n.each=Ai,n.eachRight=Ei,n.first=gi,lo(n,function(){var t={};return Re(n,(function(e,r){Mo.call(n.prototype,r)||(t[r]=e)})),t}(),{chain:!1}),n.VERSION="4.17.21",a(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){n[t].placeholder=n})),a(["drop","take"],(function(t,e){$t.prototype[t]=function(n){n=n===H?1:oa(Hi(n),0);var r=this.__filtered__&&!e?new $t(this):this.clone();return r.__filtered__?r.__takeCount__=aa(n,r.__takeCount__):r.__views__.push({size:aa(n,ot),type:t+(r.__dir__<0?"Right":"")}),r},$t.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),a(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;$t.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:qr(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),a(["head","last"],(function(t,e){var n="take"+(e?"Right":"");$t.prototype[t]=function(){return this[n](1).value()[0]}})),a(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");$t.prototype[t]=function(){return this.__filtered__?new $t(this):this[n](1)}})),$t.prototype.compact=function(){return this.filter(uo)},$t.prototype.find=function(t){return this.filter(t).head()},$t.prototype.findLast=function(t){return this.reverse().find(t)},$t.prototype.invokeMap=Dn((function(t,e){return"function"==typeof t?new $t(this):this.map((function(n){return Qe(n,t,e)}))})),$t.prototype.reject=function(t){return this.filter(Oi(qr(t)))},$t.prototype.slice=function(t,e){t=Hi(t);var n=this;return n.__filtered__&&(t>0||e<0)?new $t(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==H&&(n=(e=Hi(e))<0?n.dropRight(-e):n.take(e-t)),n)},$t.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},$t.prototype.toArray=function(){return this.take(ot)},Re($t.prototype,(function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=n[i?"take"+("last"==e?"Right":""):e],a=i||/^find/.test(e);o&&(n.prototype[e]=function(){var e=this.__wrapped__,s=i?[1]:arguments,u=e instanceof $t,c=s[0],l=u||Ms(e),f=function(t){var e=o.apply(n,d([t],s));return i&&h?e[0]:e};l&&r&&"function"==typeof c&&1!=c.length&&(u=l=!1);var h=this.__chain__,p=!!this.__actions__.length,v=a&&!h,g=u&&!p;if(!a&&l){e=g?e:new $t(this);var m=t.apply(e,s);return m.__actions__.push({func:Si,args:[f],thisArg:H}),new E(m,h)}return v&&g?t.apply(this,s):(m=this.thru(f),v?i?m.value()[0]:m.value():m)})})),a(["pop","push","shift","sort","splice","unshift"],(function(t){var e=Eo[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(Ms(n)?n:[],t)}return this[r]((function(n){return e.apply(Ms(n)?n:[],t)}))}})),Re($t.prototype,(function(t,e){var r=n[e];if(r){var i=r.name+"";Mo.call(ya,i)||(ya[i]=[]),ya[i].push({name:e,func:r})}})),ya[xr(H,2).name]=[{name:"wrapper",func:H}],$t.prototype.clone=function(){var t=new $t(this.__wrapped__);return t.__actions__=cr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=cr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=cr(this.__views__),t},$t.prototype.reverse=function(){if(this.__filtered__){var t=new $t(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},$t.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Ms(t),r=e<0,i=n?t.length:0,o=function(t,e,n){for(var r=-1,i=n.length;++r=this.__values__.length;return{done:t,value:t?H:this.__values__[this.__index__++]}},n.prototype.plant=function(t){for(var e,n=this;n instanceof r;){var i=hi(n);i.__index__=0,i.__values__=H,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e},n.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof $t){var e=t;return this.__actions__.length&&(e=new $t(this)),(e=e.reverse()).__actions__.push({func:Si,args:[bi],thisArg:H}),new E(e,this.__chain__)}return this.thru(bi)},n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=function(){return $n(this.__wrapped__,this.__actions__)},n.prototype.first=n.prototype.head,Xo&&(n.prototype[Xo]=function(){return this}),n}();on._=xn,void 0===(r=function(){return xn}.call(e,n,e,t))||(t.exports=r)}.call(this)},31725:function(t){"use strict";var e=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function i(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(i){return!1}}()?Object.assign:function(t,o){for(var a,s,u=i(t),c=1;c