.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;S-1},complexity:function(){return this.getObjects().reduce(function(a,b){a+=b.complexity?b.complexity():0;return a},0)}};(function(u){var E=Math.sqrt,c=Math.atan2;fabric.util={};function p(H,G){var F=H.indexOf(G);if(F!==-1){H.splice(F,1)}return H}function g(G,F){return Math.floor(Math.random()*(F-G+1))+G}var a=Math.PI/180;function t(F){return F*a}function m(F){return F/a}function i(F,H,L){var G=Math.sin(L),J=Math.cos(L);F.subtractEquals(H);var K=F.x*J-F.y*G;var I=F.x*G+F.y*J;return new fabric.Point(K,I).addEquals(H)}function r(G,F){return parseFloat(Number(G).toFixed(F))}function o(){return false}function B(G,F){G=fabric.util.string.camelize(G.charAt(0).toUpperCase()+G.slice(1));return x(F)[G]}function x(H){if(!H){return fabric}var J=H.split("."),F=J.length,I=u||fabric.window;for(var G=0;G1){F=new fabric.PathGroup(H,G)}else{F=H[0]}if(typeof I!=="undefined"){F.setSourcePath(I)}return F}function q(J,G,I){if(I&&Object.prototype.toString.call(I)==="[object Array]"){for(var H=0,F=I.length;HM){M+=Q[I++%N];if(M>H){M=H}O[L?"lineTo":"moveTo"](M,0);L=!L}O.restore()}function f(F){F||(F=fabric.document.createElement("canvas"));if(!F.getContext&&typeof G_vmlCanvasManager!=="undefined"){G_vmlCanvasManager.initElement(F)}return F}function D(){return fabric.isLikelyNode?new (require("canvas").Image)():fabric.document.createElement("img")}function b(F){var J=F.prototype;for(var H=J.stateProperties.length;H--;){var K=J.stateProperties[H],L=K.charAt(0).toUpperCase()+K.slice(1),G="set"+L,I="get"+L;if(!J[I]){J[I]=(function(M){return new Function('return this.get("'+M+'")')})(K)}if(!J[G]){J[G]=(function(M){return new Function("value",'return this.set("'+M+'", value)')})(K)}}}function n(G,F){F.save();F.beginPath();G.clipTo(F);F.clip()}function w(I,G){var M=[[I[0],I[2],I[4]],[I[1],I[3],I[5]],[0,0,1]];var L=[[G[0],G[2],G[4]],[G[1],G[3],G[5]],[0,0,1]];var N=[];for(var F=0;F<3;F++){N[F]=[];for(var K=0;K<3;K++){var J=0;for(var H=0;H<3;H++){J+=M[F][H]*L[H][K]}N[F][K]=J}}return[N[0][0],N[1][0],N[0][1],N[1][1],N[0][2],N[1][2]]}function j(F){return(String(F).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function h(S,O,M,N){var H=N[0];var F=N[1];var I=N[2];var Q=N[3];var R=N[4];var L=N[5];var K=N[6];var G=y(L,K,H,F,Q,R,I,O,M);for(var J=0;J1){R=Math.sqrt(R);ab*=R;aa*=R}var ae=an/ab;var ad=aj/ab;var Q=(-aj)/aa;var P=(an)/aa;var U=ae*Z+ad*Y;var F=Q*Z+P*Y;var S=ae*ag+ad*af;var ao=Q*ag+P*af;var am=(S-U)*(S-U)+(ao-F)*(ao-F);var ah=1/am-0.25;if(ah<0){ah=0}var L=Math.sqrt(ah);if(ac===W){L=-L}var ai=0.5*(U+S)-L*(ao-F);var X=0.5*(F+ao)+L*(S-U);var K=Math.atan2(F-X,U-ai);var J=Math.atan2(ao-X,S-ai);var al=J-K;if(al<0&&ac===1){al+=2*Math.PI}else{if(al>0&&ac===0){al-=2*Math.PI}}var O=Math.ceil(Math.abs(al/(Math.PI*0.5+0.001)));var V=[];for(var ak=0;ak>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==Number.POSITIVE_INFINITY&&i!==Number.NEGATIVE_INFINITY){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b();return f}}})();(function(){var g=Array.prototype.slice,f=function(){};var d=(function(){for(var h in {toString:1}){if(h==="toString"){return false}}return true})();var c=function(h,k,i){for(var j in k){if(j in h.prototype&&typeof h.prototype[j]==="function"&&(k[j]+"").indexOf("callSuper")>-1){h.prototype[j]=(function(l){return function(){var n=this.constructor.superclass;this.constructor.superclass=i;var m=k[l].apply(this,arguments);this.constructor.superclass=n;if(l!=="initialize"){return m}}})(j)}else{h.prototype[j]=k[j]}if(d){if(k.toString!==Object.prototype.toString){h.prototype.toString=k.toString}if(k.valueOf!==Object.prototype.valueOf){h.prototype.valueOf=k.valueOf}}}};function b(){}function a(h){var i=this.constructor.superclass.prototype[h];return(arguments.length>1)?i.apply(this,g.call(arguments,1)):i.call(this)}function e(){var l=null,k=g.call(arguments,0);if(typeof k[0]==="function"){l=k.shift()}function h(){this.initialize.apply(this,arguments)}h.superclass=l;h.subclasses=[];if(l){b.prototype=l.prototype;h.prototype=new b();l.subclasses.push(h)}for(var j=0,m=k.length;j-1?b(g,i.match(/opacity:\s*(\d?\.?\d*)/)[1]):g}for(var j in i){if(j==="opacity"){b(g,i[j])}else{var h=(j==="float"||j==="cssFloat")?(typeof k.styleFloat==="undefined"?"cssFloat":"styleFloat"):j;k[h]=i[j]}}return g}var f=fabric.document.createElement("div"),e=typeof f.style.opacity==="string",a=typeof f.style.filter==="string",c=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,b=function(g){return g};if(e){b=function(g,h){g.style.opacity=h;return g}}else{if(a){b=function(g,h){var i=g.style;if(g.currentStyle&&!g.currentStyle.hasLayout){i.zoom=1}if(c.test(i.filter)){h=h>=0.9999?"":("alpha(opacity="+(h*100)+")");i.filter=i.filter.replace(c,h)}else{i.filter+=" alpha(opacity="+(h*100)+")"}return g}}}fabric.util.setStyle=d})();(function(){var i=Array.prototype.slice;function h(k){return typeof k==="string"?fabric.document.getElementById(k):k}var b=function(k){return i.call(k,0)};var j;try{j=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!j){b=function(l){var k=new Array(l.length),m=l.length;while(m--){k[m]=l[m]}return k}}function c(l,k){var m=fabric.document.createElement(l);for(var n in k){if(n==="class"){m.className=k[n]}else{if(n==="for"){m.htmlFor=k[n]}else{m.setAttribute(n,k[n])}}}return m}function g(k,l){if((" "+k.className+" ").indexOf(" "+l+" ")===-1){k.className+=(k.className?" ":"")+l}}function f(l,m,k){if(typeof m==="string"){m=c(m,k)}if(l.parentNode){l.parentNode.replaceChild(m,l)}m.appendChild(l);return m}function e(n){var l,q,o={left:0,top:0},p=n&&n.ownerDocument,r={left:0,top:0},m={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!p){return{left:0,top:0}}for(var k in m){r[m[k]]+=parseInt(d(n,k),10)||0}l=p.documentElement;if(typeof n.getBoundingClientRect!=="undefined"){o=n.getBoundingClientRect()}if(p!=null&&p===p.window){q=p}else{q=p.nodeType===9&&(p.defaultView||p.parentWindow)}return{left:o.left+(q.pageXOffset||l.scrollLeft)-(l.clientLeft||0)+r.left,top:o.top+(q.pageYOffset||l.scrollTop)-(l.clientTop||0)+r.top}}function d(l,k){if(!l.style){l.style={}}if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle){return fabric.document.defaultView.getComputedStyle(l,null)[k]}else{var m=l.style[k];if(!m&&l.currentStyle){m=l.currentStyle[k]}return m}}(function(){var l=fabric.document.documentElement.style;var m="userSelect" in l?"userSelect":"MozUserSelect" in l?"MozUserSelect":"WebkitUserSelect" in l?"WebkitUserSelect":"KhtmlUserSelect" in l?"KhtmlUserSelect":"";function n(o){if(typeof o.onselectstart!=="undefined"){o.onselectstart=fabric.util.falseFunction}if(m){o.style[m]="none"}else{if(typeof o.unselectable==="string"){o.unselectable="on"}}return o}function k(o){if(typeof o.onselectstart!=="undefined"){o.onselectstart=null}if(m){o.style[m]=""}else{if(typeof o.unselectable==="string"){o.unselectable=""}}return o}fabric.util.makeElementUnselectable=n;fabric.util.makeElementSelectable=k})();(function(){function k(l,p){var n=fabric.document.getElementsByTagName("head")[0],m=fabric.document.createElement("script"),o=true;m.onload=m.onreadystatechange=function(q){if(o){if(typeof this.readyState==="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}o=false;p(q||fabric.window.event);m=m.onload=m.onreadystatechange=null}};m.src=l;n.appendChild(m)}fabric.util.getScript=k})();fabric.util.getById=h;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=g;fabric.util.wrapElement=f;fabric.util.getElementOffset=e;fabric.util.getElementStyle=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",h=f.onComplete||function(){},i=c(),e;i.onreadystatechange=function(){if(i.readyState===4){h(i);i.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters==="string"){g=d(g,f.parameters)}}i.open(j,g,true);if(j==="POST"||j==="PUT"){i.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}i.send(e);return i}fabric.util.request=b})();(function(){function a(o){o||(o={});var e=+new Date(),g=o.duration||500,m=e+g,f,j=o.onChange||function(){},h=o.abort||function(){return false},k=o.easing||function(q,p,s,r){return -s*Math.cos(q/r*(Math.PI/2))+s+p},d="startValue" in o?o.startValue:0,l="endValue" in o?o.endValue:100,n=o.byValue||l-d;o.onStart&&o.onStart();(function i(){f=+new Date();var p=f>m?g:(f-e);if(h()){o.onComplete&&o.onComplete();return}j(k(p,d,n,g));if(f>m){o.onComplete&&o.onComplete();return}b(i)})()}var c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(d){fabric.window.setTimeout(d,1000/60)};var b=function(){return c.apply(fabric.window,arguments)};fabric.util.animate=a;fabric.util.requestAnimFrame=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){F/=(G/2);if(F<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){F/=G/2;if(F<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){F/=G/2;if(F<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){F/=G/2;if(F<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F===0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F===G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F===0){return E}if(F===G){return E+H}F/=G/2;if(F<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){F/=G/2;if(F<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G===0){return E}G/=J;if(G===1){return E+K}if(!I){I=J*0.3}if(F1){V.shift();W=o.util.multiplyTransformMatrices(W,V[0])}return W}})();function A(E){if(!E){return null}E=E.trim();var G=E.indexOf(",")>-1;E=E.split(/\s+/);var C=[],D,B;if(G){D=0;B=E.length;for(;D/i,""))}if(!F.documentElement){return}o.parseSVGDocument(F.documentElement,function(I,H){r.set(C,{objects:o.util.array.invoke(I,"toObject"),options:H});E(I,H)},B)}}function e(D){var C=D.objects,B=D.options;C=C.map(function(E){return o[k(E.type)].fromObject(E)});return({objects:C,options:B})}function v(C,F,B){C=C.trim();var D;if(typeof DOMParser!=="undefined"){var E=new DOMParser();if(E&&E.parseFromString){D=E.parseFromString(C,"text/xml")}}else{if(o.window.ActiveXObject){D=new ActiveXObject("Microsoft.XMLDOM");D.async="false";D.loadXML(C.replace(//i,""))}}o.parseSVGDocument(D.documentElement,function(H,G){F(H,G)},B)}function u(E){var C="";for(var D=0,B=E.length;D',"",""].join("")}return C}function d(C){var B="";if(C.backgroundColor&&C.backgroundColor.source){B=['',''].join("")}return B}function l(G){var D=G.getElementsByTagName("linearGradient"),B=G.getElementsByTagName("radialGradient"),E,C,F={};C=D.length;for(;C--;){E=D[C];F[E.getAttribute("id")]=E}C=B.length;for(;C--;){E=B[C];F[E.getAttribute("id")]=E}return F}x(o,{parseAttributes:j,parseElements:m,parseStyleAttribute:p,parsePointsAttribute:A,getCSSRules:g,loadSVGFromURL:f,loadSVGFromString:v,createSVGFontFacesMarkup:u,createSVGRefElementsMarkup:d,getGradientDefs:l})})(typeof exports!=="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){this.x=d;this.y=e}a.prototype={constructor:a,add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x===d.x&&this.y===d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},midPointFrom:function(d){return new a(this.x+(d.x-this.x)/2,this.y+(d.y-this.y)/2)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!=="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){this.status=d;this.points=[]}b.Intersection=c;b.Intersection.prototype={appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!==0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c()}}else{if(i===0||j===0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c(),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c(),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c();o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!=="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Color){c.warn("fabric.Color is already defined.");return}function d(e){if(!e){this.setSource([0,0,0,1])}else{this._tryParsingColor(e)}}c.Color=d;c.Color.prototype={_tryParsingColor:function(e){var f;if(e in d.colorNameMap){e=d.colorNameMap[e]}f=d.sourceFromHex(e);if(!f){f=d.sourceFromRgb(e)}if(!f){f=d.sourceFromHsl(e)}if(f){this.setSource(f)}},_rgbToHsl:function(e,k,n){e/=255,k/=255,n/=255;var j,p,f,o=c.util.array.max([e,k,n]),i=c.util.array.min([e,k,n]);f=(o+i)/2;if(o===i){j=p=0}else{var m=o-i;p=f>0.5?m/(2-o-i):m/(o+i);switch(o){case e:j=(k-n)/m+(k1){e-=1}if(e<1/6){return g+(f-g)*6*e}if(e<1/2){return f}if(e<2/3){return g+(f-g)*(2/3-e)*6}return g}c.Color.fromRgb=function(e){return d.fromSource(d.sourceFromRgb(e))};c.Color.sourceFromRgb=function(f){var h=f.match(d.reRGBa);if(h){var j=parseInt(h[1],10)/(/%$/.test(h[1])?100:1)*(/%$/.test(h[1])?255:1),i=parseInt(h[2],10)/(/%$/.test(h[2])?100:1)*(/%$/.test(h[2])?255:1),e=parseInt(h[3],10)/(/%$/.test(h[3])?100:1)*(/%$/.test(h[3])?255:1);return[parseInt(j,10),parseInt(i,10),parseInt(e,10),h[4]?parseFloat(h[4]):1]}};c.Color.fromRgba=d.fromRgb;c.Color.fromHsl=function(e){return d.fromSource(d.sourceFromHsl(e))};c.Color.sourceFromHsl=function(k){var n=k.match(d.reHSLa);if(!n){return}var m=(((parseFloat(n[1])%360)+360)%360)/360,u=parseFloat(n[2])/(/%$/.test(n[2])?100:1),j=parseFloat(n[3])/(/%$/.test(n[3])?100:1),e,o,t;if(u===0){e=o=t=j}else{var f=j<=0.5?j*(u+1):j+u-j*u;var i=j*2-f;e=a(i,f,m+1/3);o=a(i,f,m);t=a(i,f,m-1/3)}return[Math.round(e*255),Math.round(o*255),Math.round(t*255),n[4]?parseFloat(n[4]):1]};c.Color.fromHsla=d.fromHsl;c.Color.fromHex=function(e){return d.fromSource(d.sourceFromHex(e))};c.Color.sourceFromHex=function(h){if(h.match(d.reHex)){var k=h.slice(h.indexOf("#")+1),f=(k.length===3),j=f?(k.charAt(0)+k.charAt(0)):k.substring(0,2),i=f?(k.charAt(1)+k.charAt(1)):k.substring(2,4),e=f?(k.charAt(2)+k.charAt(2)):k.substring(4,6);return[parseInt(j,16),parseInt(i,16),parseInt(e,16),1]}};c.Color.fromSource=function(e){var f=new d();f.setSource(e);return f}})(typeof exports!=="undefined"?exports:this);(function(){function c(e){var d=e.getAttribute("style"),g=e.getAttribute("offset"),f,k;g=parseFloat(g)/(/%$/.test(g)?100:1);if(d){var j=d.split(/\s*;\s*/);if(j[j.length-1]===""){j.pop()}for(var h=j.length;h--;){var l=j[h].split(/\s*:\s*/),n=l[0].trim(),m=l[1].trim();if(n==="stop-color"){f=m}else{if(n==="stop-opacity"){k=m}}}}if(!f){f=e.getAttribute("stop-color")||"rgb(0,0,0)"}if(!k){k=e.getAttribute("stop-opacity")}f=new fabric.Color(f).toRgb();return{offset:g,color:f,opacity:isNaN(parseFloat(k))?1:parseFloat(k)}}fabric.Gradient=fabric.util.createClass({initialize:function(d){d||(d={});var e={};this.id=fabric.Object.__uid++;this.type=d.type||"linear";e={x1:d.coords.x1||0,y1:d.coords.y1||0,x2:d.coords.x2||0,y2:d.coords.y2||0};if(this.type==="radial"){e.r1=d.coords.r1||0;e.r2=d.coords.r2||0}this.coords=e;this.gradientUnits=d.gradientUnits||"objectBoundingBox";this.colorStops=d.colorStops.slice()},addColorStop:function(e){for(var d in e){var f=new fabric.Color(e[d]);this.colorStops.push({offset:d,color:f.toRgb(),opacity:f.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,gradientUnits:this.gradientUnits,colorStops:this.colorStops}},toSVG:function(f,e){var h=fabric.util.object.clone(this.coords),d;this.colorStops.sort(function(j,i){return j.offset-i.offset});if(e&&this.gradientUnits==="userSpaceOnUse"){h.x1+=f.width/2;h.y1+=f.height/2;h.x2+=f.width/2;h.y2+=f.height/2}else{if(this.gradientUnits==="objectBoundingBox"){b(f,h)}}if(this.type==="linear"){d=["']}else{if(this.type==="radial"){d=["']}}for(var g=0;g')}d.push((this.type==="linear"?"":""));return d.join("")},toLive:function(e){var j;if(!this.type){return}if(this.type==="linear"){j=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2)}else{if(this.type==="radial"){j=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2)}}for(var h=0,d=this.colorStops.length;h'},toLive:function(a){var b=typeof this.source==="function"?this.source():this.source;return a.createPattern(b,this.repeat)}});(function(a){var b=a.fabric||(a.fabric={});if(b.Shadow){b.warn("fabric.Shadow is already defined.");return}b.Shadow=b.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:false,initialize:function(c){if(typeof c==="string"){c=this._parseShadow(c)}for(var d in c){this[d]=c[d]}this.id=b.Object.__uid++},_parseShadow:function(f){var e=f.trim();var d=b.Shadow.reOffsetsAndBlur.exec(e)||[],c=e.replace(b.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:c.trim(),offsetX:parseInt(d[1],10)||0,offsetY:parseInt(d[2],10)||0,blur:parseInt(d[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(c){var d="SourceAlpha";if(c&&(c.fill===this.color||c.stroke===this.color)){d="SourceGraphic"}return('')},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}});b.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/})(typeof exports!=="undefined"?exports:this);(function(){if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,c=fabric.util.getElementOffset,d=fabric.util.removeFromArray,b=fabric.util.removeListener,a=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(g,f){f||(f={});this._initStatic(g,f);fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:true,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:true,stateful:true,renderOnAddRemove:true,clipTo:null,controlsAboveOverlay:false,allowTouchScrolling:false,onBeforeScaleRotate:function(){},_initStatic:function(g,f){this._objects=[];this._createLowerCanvas(g);this._initOptions(f);if(f.overlayImage){this.setOverlayImage(f.overlayImage,this.renderAll.bind(this))}if(f.backgroundImage){this.setBackgroundImage(f.backgroundImage,this.renderAll.bind(this))}if(f.backgroundColor){this.setBackgroundColor(f.backgroundColor,this.renderAll.bind(this))}this.calcOffset()},calcOffset:function(){this._offset=c(this.lowerCanvasEl);return this},setOverlayImage:function(g,h,f){fabric.util.loadImage(g,function(i){this.overlayImage=i;if(f&&("overlayImageLeft" in f)){this.overlayImageLeft=f.overlayImageLeft}if(f&&("overlayImageTop" in f)){this.overlayImageTop=f.overlayImageTop}h&&h()},this);return this},setBackgroundImage:function(g,h,f){fabric.util.loadImage(g,function(i){this.backgroundImage=i;if(f&&("backgroundImageOpacity" in f)){this.backgroundImageOpacity=f.backgroundImageOpacity}if(f&&("backgroundImageStretch" in f)){this.backgroundImageStretch=f.backgroundImageStretch}h&&h()},this);return this},setBackgroundColor:function(f,h){if(f.source){var g=this;fabric.util.loadImage(f.source,function(i){g.backgroundColor=new fabric.Pattern({source:i,repeat:f.repeat});h&&h()})}else{this.backgroundColor=f;h&&h()}return this},_createCanvasElement:function(){var f=fabric.document.createElement("canvas");if(!f.style){f.style={}}if(!f){throw a}this._initCanvasElement(f);return f},_initCanvasElement:function(f){fabric.util.createCanvasElement(f);if(typeof f.getContext==="undefined"){throw a}},_initOptions:function(f){for(var g in f){this[g]=f[g]}this.width=parseInt(this.lowerCanvasEl.width,10)||0;this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style){return}this.lowerCanvasEl.style.width=this.width+"px";this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(f){this.lowerCanvasEl=fabric.util.getById(f)||this._createCanvasElement();this._initCanvasElement(this.lowerCanvasEl);fabric.util.addClass(this.lowerCanvasEl,"lower-canvas");if(this.interactive){this._applyCanvasStyle(this.lowerCanvasEl)}this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(f){return this._setDimension("width",f)},setHeight:function(f){return this._setDimension("height",f)},setDimensions:function(f){for(var g in f){this._setDimension(g,f[g])}return this},_setDimension:function(g,f){this.lowerCanvasEl[g]=f;this.lowerCanvasEl.style[g]=f+"px";if(this.upperCanvasEl){this.upperCanvasEl[g]=f;this.upperCanvasEl.style[g]=f+"px"}if(this.cacheCanvasEl){this.cacheCanvasEl[g]=f}if(this.wrapperEl){this.wrapperEl.style[g]=f+"px"}this[g]=f;this.calcOffset();this.renderAll();return this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(g,h){if(!h){return}if(this.controlsAboveOverlay){var f=h.hasBorders,i=h.hasControls;h.hasBorders=h.hasControls=false;h.render(g);h.hasBorders=f;h.hasControls=i}else{h.render(g)}},_onObjectAdded:function(f){this.stateful&&f.setupState();f.setCoords();f.canvas=this;this.fire("object:added",{target:f});f.fire("added")},_onObjectRemoved:function(f){this.fire("object:removed",{target:f});f.fire("removed")},getObjects:function(){return this._objects},clearContext:function(f){f.clearRect(0,0,this.width,this.height);return this},getContext:function(){return this.contextContainer},clear:function(){this._objects.length=0;if(this.discardActiveGroup){this.discardActiveGroup()}if(this.discardActiveObject){this.discardActiveObject()}this.clearContext(this.contextContainer);if(this.contextTop){this.clearContext(this.contextTop)}this.fire("canvas:cleared");this.renderAll();return this},renderAll:function(f){var g=this[(f===true&&this.interactive)?"contextTop":"contextContainer"];if(this.contextTop&&this.selection&&!this._groupSelector){this.clearContext(this.contextTop)}if(!f){this.clearContext(g)}this.fire("before:render");if(this.clipTo){fabric.util.clipContext(this,g)}if(this.backgroundColor){g.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(g):this.backgroundColor;g.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)}if(typeof this.backgroundImage==="object"){this._drawBackroundImage(g)}var j=this.getActiveGroup();for(var h=0,k=this._objects.length;h','\n')}h.push("