From 38ffacfbecb1946a9adc321f9653256420961e6c Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 28 Jul 2012 17:58:45 +0200 Subject: [PATCH] Fix bug with text shadows parsed incorrectly when using native text rendering. Thanks @Kienz. Closes #211. --- dist/all.js | 100 ++++++++++++++++++++++++--------------------- dist/all.min.js | 2 +- dist/all.min.js.gz | Bin 40938 -> 40939 bytes src/text.class.js | 2 +- 4 files changed, 56 insertions(+), 48 deletions(-) diff --git a/dist/all.js b/dist/all.js index e8ce8909..7f1bc28b 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1222,8 +1222,8 @@ if (typeof exports != 'undefined') { } /* - http://www.JSON.org/json2.js - 2010-03-20 + json2.js + 2011-10-19 Public Domain. @@ -1369,7 +1369,7 @@ if (typeof exports != 'undefined') { redistribute. */ -/*jslint evil: true, strict: false */ +/*jslint evil: true, regexp: true */ /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, @@ -1382,11 +1382,13 @@ if (typeof exports != 'undefined') { // Create a JSON object only if one does not already exist. We create the // methods in a closure to avoid creating global variables. -if (!this.JSON) { - this.JSON = {}; +var JSON; +if (!JSON) { + JSON = {}; } (function () { + 'use strict'; function f(n) { // Format integers to have at least two digits. @@ -1397,20 +1399,21 @@ if (!this.JSON) { Date.prototype.toJSON = function (key) { - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; + return isFinite(this.valueOf()) + ? this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' + : null; }; - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; } var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, @@ -1437,13 +1440,12 @@ if (!this.JSON) { // sequences. escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' + ? c + : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; } @@ -1526,11 +1528,11 @@ if (!this.JSON) { // Join all of the elements together, separated with commas, and wrap them in // brackets. - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; + v = partial.length === 0 + ? '[]' + : gap + ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' + : '[' + partial.join(',') + ']'; gap = mind; return v; } @@ -1540,8 +1542,8 @@ if (!this.JSON) { if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { + if (typeof rep[i] === 'string') { + k = rep[i]; v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); @@ -1553,7 +1555,7 @@ if (!this.JSON) { // Otherwise, iterate through all of the keys in the object. for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { + if (Object.prototype.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); @@ -1565,9 +1567,11 @@ if (!this.JSON) { // Join all of the member texts together, separated with commas, // and wrap them in braces. - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; + v = partial.length === 0 + ? '{}' + : gap + ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' + : '{' + partial.join(',') + '}'; gap = mind; return v; } @@ -1608,7 +1612,7 @@ if (!this.JSON) { rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { + typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); } @@ -1638,7 +1642,7 @@ if (!this.JSON) { var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { + if (Object.prototype.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; @@ -1678,10 +1682,10 @@ if (!this.JSON) { // we look to see that the remaining characters are only whitespace or ']' or // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - if (/^[\],:{}\s]*$/. -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { // In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity @@ -1693,8 +1697,9 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { // In the optional fourth stage, we recursively walk the new structure, passing // each name/value pair to a reviver function for possible transformation. - return typeof reviver === 'function' ? - walk({'': j}, '') : j; + return typeof reviver === 'function' + ? walk({'': j}, '') + : j; } // If the text is not JSON parseable, then a SyntaxError is thrown. @@ -12450,9 +12455,12 @@ fabric.Image.filters.GradientTransparency.fromObject = function(object) { this.setCoords(); }, + /** + * Renders text object on offscreen canvas, so that it would get dimensions + * @private + * @method _initDimensions + */ _initDimensions: function() { - - // render on offscreen canvas, so that object would get dimensions var canvasEl = fabric.document.createElement('canvas'); if (!canvasEl.getContext && typeof G_vmlCanvasManager != 'undefined') { @@ -12666,7 +12674,7 @@ fabric.Image.filters.GradientTransparency.fromObject = function(object) { // "rgb(0, 100, 0) 0 0 5px" // "red 2px 2px 1px" // "#f55 123 345 567" - var reOffsetsAndBlur = /\s*(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/; + var reOffsetsAndBlur = /\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/; var shadowDeclaration = this.textShadow; var offsetsAndBlur = reOffsetsAndBlur.exec(this.textShadow); diff --git a/dist/all.min.js b/dist/all.min.js index 3705429c..381ed6c8 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -4,4 +4,4 @@ var fabric=fabric||{version:"0.8.4"};if(typeof exports!="undefined"){exports.fab * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. */ -var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.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;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>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!==(1/0)&&i!==-(1/0)){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 f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=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",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=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){if((F/=G/2)<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){if((F/=G/2)<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){if((F/=G/2)<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){if((F/=G/2)<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}if((F/=G/2)<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){if((F/=G/2)<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}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(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){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},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)},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){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},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("No Intersection")}}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("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),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("No Intersection");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(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;r&&r.setActive(true);return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}if(!o&&this.active){this.drawBorders(j);this.hideCorners||this.drawCorners(j)}j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){this.forEachObject(function(h){h.setActive()});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=f;i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s*(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[0],10);f.shadowOffsetY=parseInt(i[1],10);f.shadowBlur=parseInt(i[2],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-((Cufon.textOptions.height/K)/2)+(Cufon.fonts[ab.family].offsetTop||0));ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.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;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>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!==(1/0)&&i!==-(1/0)){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 f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=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",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=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){if((F/=G/2)<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){if((F/=G/2)<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){if((F/=G/2)<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){if((F/=G/2)<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}if((F/=G/2)<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){if((F/=G/2)<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}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(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){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},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)},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){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},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("No Intersection")}}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("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),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("No Intersection");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(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});r.fire("selected",{e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;r&&r.setActive(true);return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";"].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,2)+" "+c(this.scaleY,2)+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.top:(this.y1+this.height/2))},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2;this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",initialize:function(e){e=e||{};this.callSuper("initialize",e);this.set("rx",e.rx||0);this.set("ry",e.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j,o){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}if(!o&&this.active){this.drawBorders(j);this.hideCorners||this.drawCorners(j)}j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){this.forEachObject(function(h){h.setActive()});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=f;i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h._element=f;i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc;fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return this}});fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(f){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon:function(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElementForCufon();this.transform(f);Cufon.replaceElement(g,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[0],10);f.shadowOffsetY=parseInt(i[1],10);f.shadowBlur=parseInt(i[2],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var i=this.text.split(/\r?\n/),j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 71311d26254a9a8a1f86b40c17d22ede1c543784..b9dd88be0f17006d2a2686fc7bb541f207be7493 100644 GIT binary patch delta 35106 zcmV(qK<~fmzXI#O0tX+92nYrY6tM@_6d0BOw!@Px$(An}`51$({PwS^`j%xFNZyn7 z6np`2vvU>p0Ri8WY8S14m;EBP(J}YmYq2|;@}UUz2Nd;5dFgXU20!6XNLvbs5IvA0 z_`|_JP9!4(BONB8{m}m}dtw;{qWE5lrPy;L#20+)W2>jfQihKJK6dPhu~en3|F|-L z%(1d9{{QQ*i6iw60l>$BSlu<7%lTOIAKG)6ld@!WeND;b`jljU6}L*rMX~C8=;3;; z&5z}vX1k!~Ea~Q)*7T|@bA5WvzMh_txjy|And|!?C_(j9m~8+CuCLKh<#8dUwy*ix z652lGbL%bPdU5@GN^HsgutcAUz_g$FALj`@{lxDH$CXFo;Z^&gy4n2!k0n{`#FE86 z*P__=!y_rIDfknAIAv&-LrA$u0=cd$#ytINyoGrYJwKf1T*s*|YESnoC7fQ>fm5lg zwPz#g;OpgH{XyMZtQLt!!-JuH+E{MxT%$|aByzyLA!0G&{HptVU)+>zlhNEUVs!GP zJ8J$(9Mjw(o;)aW$&yFhgOTNiPvQ^MTL$;zbiqg5|Ecj~K=bnm@|G}r9M&c3;FSXY z*1cWqwLCO`aDaqS{rh%Kmka6oNHh6@=aSrBNWsXj@TBQQ_!A4o?OmbAzT1^zx2=Vz z)Fi1PkUM9awlGb-=1c&J!c^Qp%ND@edGH`0+={=LLGodqk+zctOpmXm+H7+K$wJ)| z?n`T&DBHl!soTEIH>JjJ^Mz@h9$yvrwe#gxJ;6DDxvAAQ>NPkVE?`zm#?3$0OB4cF z`Fru&)*+#i(QIN9OMmlo5a8`f`EWS*l%tKrSZ0Na@GP(8@XYlQMv;il^^8ArRXLUE zl^va{3Ogl=>qn;%F;D21wu+ygJ^7Vr6CZ*-{_=fMIA(puw_suRn#+r3$7{mEwHB6@ z;tzO#i8N6J))_W<6W~>i04SAZ%(PBpW7(Om9;6GrjF<=xPZC(1j&j-g@AK~;z^?Zy z4s#!fuHn@a-^%+1b{n|3*Dosa5DXvrsOP1OA2Z;pg#%z-u^ee+@_arn)LDwyd-ggze$2g@F(e?k664KhD&6Su+v`8 z>+P_s-9^&deVf3;cgg<%h*7v?;`Yhr@jB#tuQ!0@>A^4adTV-Idt`8rj|+TE=rO^6 z$DAH>ve<2X34{0&5_^;ge+rhzOH0v(&OpAf6$PSF!#@LlZ~X{^0l=B4?h!hZ?nJUq z2knBzv$l2BC7Hdq&}woVQ8(=C%}J2ikQ01<(;>A*Zz)`4{41Seo(I2_6e z3Tf$P_bx5ocj5X9}ZWHXR|p&D^2 ziPCb0TDUh$_+$hEs#(Cy*SSFZwp;-;oPpv;v0M}aNa>zv4QH$?I=OK-&%<|pm^bML zA|_k1tH|o5s0X=}327aDdt{&8w9gS$QaQ8eu}|=Axh$c5OE?@D-M-fX$l(F#u#RI; zrG!g6lgY4&;uGRn-Ge$_*DIHQL?)~6wV^P_Vn)n}9Av!Is3oyO&ZizDBFBeE=pY!5 z)3H?NBC)-t;ZNo83FYXNFq{@ZzeO8%8MO@{n4$-rTC;U*Zvch3oU{7mCIFBEtf^eNZe;)iqqs>iEVIyGtG%8=0NVH zIU}j7+^(oM&ua@Zp(ouJmBS^K^eiOk0u3lnVFA^ZVQ!SttK5c03)vH8p#A2OE5Ovhu_2?p=Vvnz^WbwAHxSe`q1p0-&*f zzZD#<2TAa%)`Bw3Iv|gK3d^ufx9Yfhw z!yP-mcYNltPtK`-c6)u++84bQ#%nXZTV9Giztid>7j!;I7Wuk=f7o=Jjqk!na<}oI zzyGR0dvotUUSO(t-9NGXqL=q?c?T5MAIJ^xfJefi(dk8XXtQ_Li*5xSY(2i;@78;b zKIQ}+Y_D&(2Sxrov<@u5TB}>VZcxWEfZ@S@!ef|V-}AjX!j18Gf)bY`7slZYI<)SH z?~?*sfp1oUttizp6GKAykvRmMlP+qQQnG?UI&;b#{eBovoQi99D3XcDq+`X0^ z6~M;bLbaNer4&@vkjUX5mG@KpS)otKAO>fO|+>|VJ^JQ=Lwd`owT zeMZk#Jid?(geH)#I&a>@cC3Vz3{qH5#``Pkf=mADoLrKBm0WH}{_3&?=xNBp?yw)2 zExx)-V8u`L+C@viesL;KoWTR=fUVZqQj8j%T>g=aK=;p_uRCMr|jvU7~{DXAs1 zqc4!th|C~SRWi$9MudKVG&R39wqrHf zz1R*5!Ww3QC&zM+3B1Jh19!$!@=KSXcy^rT*v)Xh*;Q?@6Mu) zkX;=PUpJfViZAL*mcjYIg1l_;{Wx5V;={q-JlR{w3I|!fcG4Xf*c!^jAxfF8LKt-A z9y8%W8~1Jr!C$uW-=E*T<*OOH4YPQ!{;ptiWZ{5ceSt?d#UtKzc4sE3)nps)#f!)- zpb}bt7tLmS@Q$7VAo+ASY#Q@64(}N@RIBMnKQLHzBZom{_I$OaniIne@$Al3XW8 z7wMeV?EyM;!W=t=uHwNoT|d1}(Rud%TII5T>$SEzRZQW4@V{~@S&^F-3>ER`-!uc| zrBH!k^6+va@!CP39d|E4XWAh3Hh>HIXdaGm#^onYSccY7C4N1R|K(Tj6tm z*kri7CFyJp8--!~jZoNMlkh({3s>(J!$QTCXbW?0JOtWMKg;i9Fd%b-V;ga{Y(;I` zwr9;DUnCPZC0a%mXaeV$;QFBf-PTpGf7{*k`4yI~*YWBAR|FQSTN?f}yd)TVcO8Bq3rqJyg~Cligu9_HC*No&>0x=q{PeOYD!=ZKik zvQ0h|W@bx$Hq46;oZfuWwsWI+l*jSvdG<7n(r~fjLnm8q={$B)NAdb89V?F(Xcl2- z(f;~Cj+@V%ypV`4=26>)Pg5ijBcD3ih}lFAeBh+Viy1KK3$X+%p1J_yG(LNO@lg5C z@{k+e{|g;=AxV<&*or%BEyjANU-OCw15uVERAk7;r1p_TbwH(yJ|Sxg2!$p% zR>W0I0{q24{>6DS5RVOd#*%)2dIyGren(|4BOI*IdZ!?+GQGp&GKdL>)Mh7bX`Nc! zuxg?n4Vk!hatWx0EF0R;;dwc()yCZfg=izQLFqd*v|d!LmfS0jS4(D?)f%&r;qDXI zs$#)(TGM_66D`huEH>5=h1diTS;9o%zoHtZIU49!BpO&IY%CBnv3(hTN0mU00H~1! zYGi;)x}!d->q({{ARG1BNI_;MunIz8v-5YyFjDg0pRro)=BX(wv1d9go{rOWM5oz2 zJ_Zz1{|Puh3Z?+eg}D+9>By_VLP|fe@ND{dOF!juxskdx3QX1F!(52VKjxCdcUGt|Zs=|mzqPiXiyB#oxX2-N}Q^m)O0gf@kk#xs> zt{gNvQ+Vr6l=nWq0m`;iDs_P`fmtobfKnVZH^+y=*pj|$B-PA+g4}>rp~eM(HtOK6 z3dqvJzqnG+nwY<&(V&K90h(|)h{T)HJRBFb${GB!u6x7(8N`>@1NgEUUYlVdhH0NJ zw%Igp4N!I28e&N2R#+S{6c(loS!{Nm2=NZJgx#pmWB5^h4eiw&>PZ;*aEBcR4j@8; z&G#ZU9Y8XiWoQk5atsAd@3Hkjo&qylnSAQ27bXNcevx8#x7n|squkSE==3ir!yy&( ziGj#eXw>~P64vT2ZTsP*lbl(R&HVr)jRiLP*o~sdT8XQzI`v2jtS?FdHtngd1g?ex z;#xRgwjIGVrJ@GRN&Zq4US=yN`I3@nZrMAOIKsr@_}0XK_v%W8i>hx>fMulIk6+Gb zxXLI*E;FygYUY)NT(RF)7VR)>a3p2ESy6TX9Br^akzrbh)MiLgkz+nA?}-<%Clbr5 zzb%tgU|VRPwLmJXb+{Pfg=avw#UfS(LZd@{uM{yDADfPPR7mLH{U2hP0v&h2HfjmBz-yE7y z*c>`43FXZ4eXu&&l~3{ZjP@2O(U+OM8LeR|@AjpCVNKu%*^VJi)I_Vsps|z263*P1 zxc#PbK}|{XtE!e{mfMg_|mcVA*KWM?1w^d5dK>+L3ge)L0Ga8=$POqB4Iu2aZJ4%#ZNvhzqtS8nqfD4lvBK7nSoO?6*TG&yG4|23n61mQY#EW=j>^1Z`Efgc zSK{!1anx$~+s*r8&>Jpa^{r(Kq_pN6Eq%RQx3`F2o9V3jB7l?p8;IsQMCda zk%d<*XSA+I@%tfN#qV!VD=JhB(5|C@MR;?kzcp0fh}B+kl*_k=(4_F>zqx?b5BB&g zwZW7^=pi3aF)i>Sg=(9iEz`vwyd_7Y@;3!?wmow(-W}1F0RkxmjG+;>Bi{hnw`w)~ zC8!iet^p%+E|V2ru3_I>BVO)Q4v-@`y`aiU5*{3A*v*->Kmx!O+m!)qn`VT65=9%> zeQ+-6R3UIj)+A~g8|g`uP8jR1n4!Kjvm3dyS?GK&NV#wdY}|Rgg2mqnaJB%>6@fDX zLPaXy;!qT<@>Ns$hUQd<O3Qz26wkBe(I8$`4B}PQ zAYM6xpqNd$d9j9|!Z}%v>*Y`H0=s5#&zv&(8GVm8Ue#*)5x7bBO-+4&t|qr=FaKU+ zuS{dFT*Ms3>)(V2G=JMZ7NMx<{#K6q(1|hRK08F={_&M%PKBXJ3s zDoq92M^5hW=Gk}f52H%^9u3=9@OgEAa_gcA8w(jus)}4aXu($mV2Tl_EVPCGKx2g& zxGN}=-{#(}J&K?*QkW5Kn#QD-Xo9h2FfO#v z#14-AskF2~Si_}V4iWW<!F0vOBy z7%T%|FoW*jYp`k75Mk6v_J|E=Vp0=D#3|8$apP6!v@ko+6tn2WP*0tZIHV|#tIU~@ zo^6Dx);s=x&UR?DO91T>vVpm`jZWdA*R~M=c{DT~u09P@9jk z-si{n+#3XGuI+Y4LYj!)LF}Xch>* z{Rv2aC$L8+b3mc#{bA60XbFHyY=W|;i~AOC^+_2RO+SQE;SN8@n+Y&r9<)grRZrg& zsn@5QUR6b6pmb2O7b8%bF*=iJ)|7N!Q`+PAyD+0~u6QL1nI~#pOp!Low0a+}T@=e!& z>!B*WBcxd=2|?UOh%(Tso7ll<^l}2vlp9#qS<0(+&$Ny%&cizyFVnLhomYL?0SkbGEpd1QHst5U4dET?ojda1;YzLP8H& z=7ieye5|dJ3W5$0fnf!rO_zHoQpm4=uWr7;PK{v0VMGreH_n=ZoZ37^~4p#C*!4EW~CzX0Gl+DyS*)U z9dc(+A-|n7FysIQ(vPvCA7Mq!)Ydu?PRDh%0PQB7Ve#UM!kWB`7YGM>jDx+cBZ2eb z+jMT1a%Pu(l;uT2sCe1+aB5 z+NL8Kt7mGo)+2B8>#~U@;WJvfPI0vW5?LJjxq75uF25TgO(Um#ag#{1iFx(ljd;b3 za~hp-&Tu-Z5dml!&ju!!_Z&x7z-ZdD$db4P9E%p6VT0s6nY#mjj?`F@Volh)u{{6$S>)On$A(AIrEwou1+}9D?vzD)Q7=^txx5!4VdRM7qV zxx3cT7#x_;7;!HmZqQs^M*>r5tYInqAi^iB$=E%XpcHCrPzv{D{rc0k+f&uU(8Q=6 zhF20R+RA{+&JZiKlT zYBB>&tq42*M{(N#?S?8xbj?X8%!t&oa1l`8oB^1BU=tjk?TvlduTHEW-E?bxO!l|y^g=EFShT*Zz%A43LHnGR{ z(qRH2UDRo0OUF@14ig*oRW_-Vy{+dCbNhl_^6_%zUE+(_3shEBJEtoLB1$3x1qF&I zH@#ecH0FIIkGYw>V%O5c!8M*EUwHPlew$Kus@H(u#iYs=lD>o=#HMka^D+`yETXyb z6Dg&5N?oS>%u}#qT$*GdX%CZ1!ujKY*C00*+?hoa%?h9)oLsh9y%pwhZu7Tf4hM~} zs|2U&SnMMK-`>u$3?gTlXNG?v;gAyS*)Ujt{^?-c?X8VJwv}CEEfM1Y;G+io>qWpb z4mcg-0ooQwNVGs?vqaGRcB&f9CqWOrpS_O7%z46dD%TX>m;03G9?=xFC2LyQ-}0@g z)QF0eJdc_M{+8BCUc$pjo1mV3T6;V;X5NF?x%W4RaJZ{pRW_BMYJ zI~Jb_)m*)baZB7wvPNv_blOepm7 zb!>@hy@ng-1y?kDTDiuewSw7+6!pxgQWNcgX&Z#8v~VWdiWX_d&_YyJAck6hNG;?a z%R999m8;LfJev~wn7HV(2X7HwewCkhu5GDL>mSS``UhIh#bd1sf6FEt1s`%HtWKd6GYpj~+2@X4_!V3~cU4W434SB7b z$jRmmvyv?W^Zb0lj@Ys6E?k*rp_FM>TItmz5Ai7~vY6j(J2aLLcXtoX`tqANOppdm zBFP{bZ!4UNs-XcCq1bx@f&?rE4>rAxcyyq3grf}!@dyxc^v90K!f*Qy@Qx}RckP4x zD45M!XpHGV&I|-+YPzg{Ri{b0&KDyVq#GE}kCnGhV>s-f|B9P2kW5#GIl{ti2A`_l zG&9xP%x!@i0<1g&jL@!Ze0^$WZl4s;rqIRoM_O&Ph_71nK#k+dV{&?^@nRi&HHqJr zm>m=Vp6tfgO*7*F83zP`V_f47;HNC72arJy(q<%>?K2hlU*HRW^rBH~;_HkWDWA*M zI)c_Z@lIuH9qpe~j$~^cdZ&$}rh&~RZ0Lalh2J{-l$sU9*f?u?bu@aDoOj1^-aUXG zEq72`=3k*H2Et=JrH{UOm-OgH6nagzK2S*(ca<|aQ0<4^T|<^YfhTWeAH>_Gwc~(@ z@)!g82Z&A)fJmx;l|9gjbcL&z%T=@xjdc@!^{$#;Bn~3BDooKW&G>^JE;ZyW@NMMT`8;K^XQYv*3A(Z?q_;k2Y_d9|~e=f4j6V9vj43 zO-is?5)%0~;Co|!ung&C33A_BKEPk??%Fu&4AnTAJlDK`rB~)YJKcmve6~7gpSXZ@ z9@*v}dWMa-nmqXs>LvDh%G8pvIJ;{R!vi(%JkJ%FNI}!K3WZDqov_(?XUF?#_R#&Q zDg3vbn)V&)FviY2iK|lIKdaPnjGZ>>O|J%jHZ|{592e9Q%f_W{1tD6iSs%phrG3fh z?H=?P$aepK3_`#RAM9}>Q#)ib58zgE`HCKbc;~UfCLBt^h&xWC@k1L2W}tWqcPv7q zmmZORFm{kNarG{Y-J2 zNAI|5NQcLc`v`CcX54|}@>`4x?}=*SJ~Ccz_v5C25)}=gpFjocMvQ%q3LkP{dp-{n zdf9)>z0D;qbyB(P8lXUaBvX63H|7qpZJ^VB0v2ANG0boFg=4%u9C}Z^)=XQ+oa2k4 zg)JU&F(_axZNp|}+yWnineTqv0QSIT6K%2K_8up7S~kQ!VuQv#fI#p85$KUDG%U! zJ)599H-G!l8aEDMa^$P7**pS z*^Xi~3_R={Umbn<>-t2l==NorY7cuQxawU1><7pf$4)1C)*@FnlL#%6b6C{+QMaF}s3=H^yNFK`NkpICr@ zu<*d!7R}ws_xM=BSR~NqdY>zDpQ$dCws$evPH*d0i&(c>sBZP2^rUT_Ws%-l*7zoH zNk3*|k8Jhi(z0F^t8r$)-52r!+a6oWdVb!aNEBlXcU+6C*RcLgZYj~X@Vh6xC*Yw` zKU}--EJoQdu0~PJs=UKngK67+haNnCe-aRgm{~tLkhZa!!u-D_J=`vU%swuJA1s#U zVe}_v?e8>>jt{;ZG%U7YRA8@*;_Kq}4>p>eJWJYv41U+^$v3$Cl>vyps;IPm<`4fS{e zYk|)?P(OT{4i$b{m0Ul@{8h{hR{8*?hr0x9U)w1x*NFY`hr3I_==#}(}hMy17pzd0_t}y zhzex)OCjwO=|GSU1nEG3kPhOcjqa$AnLAOtFdfqtSy$L1(~E3?_9D%92p~TCS=Gdt z?8shgFaqOAa+h|ApaVTW^RF^$NF&+~A3_Y68=*;NPzh0j; z0Sw!WChskM)|eEKZvek+nQW6{fhc}QG;T%Y4s>qdSS29h@a1u{iT}w)MtHZp^ICct zYsHqayZjki|Cj}o#d*4mu4ZQ9i;J4EW%A#$kdY04NfW!*u0$iuMJ~3i2~7CvY%!BO zn$UItC>?MeP9*hMefT0?r-qFXb&iH|W<*R5$Q3;-TiRXG#&o=+8e9*oksJ$A=DeZmqS}et8z$CM>u#8llyx6M-G}>OWhm?3B|D@H zZC=^1fO5PO|cymn+|Swep|wvHg8FG)C(^qh*%YAfTmx z%18Tn0WCH@^4;v|Bbd;;(50bC%;+vek1%?eUgHkC$1$Fg-eDt5@291YU`~PbURrtx z+bT#Or!uiJjyCpCHg-H=ke1L-OX#TtH0+n;+xTU^jsI_#JvvEBtalWI|IwfKba}ZUs2y_PtBh#19kf-=*McE`pW&kmm4T`iG1x{~5^BMJl0$&pbeN1b zJjPTy`|r8`5T6T!+@sNM!6%uIo6kC&fS)B|z#YgID^=Moo^>;B)=3$rqiPE`yv?UyHqYuC zQ2kKoEAS4VTD>j1);1-7iV7vCVn|0(N~9$2Z~yA(8vrFc$?m(ev54;KySuuox(*a?vffBn z4xdoG4jFZ(4@F<gi@6m0|}*%lmHu+GfJe497-W=_yi8{Uh{drh;Eot=~~|j9$`N zjvqEKBF)GFKd`_LJn%#Dj9%d^@Iwpy&;x%azEblUf`@D5Sc@wE}0O*`WT$@ zi)!%n%L&zPT7}bXh{6K*s}B~r>%et3Bs|PyB-2I>QIY?D9|gjIQ1rlNkW2bedR0B} zGk`|v!%1zTilP9He6sBIUrWcK7cxEast=b-{{vD7@5vg)dM-p=ulellW%l!B4|Ax9HS0}xd3aHzjty!ia)Nw}W*Y&V zHS}s^7Vt-Z*2IC18)Bq_XW~hJNre%pda)@`)pSs z<=Pu_Se$n8$jF5mZbUxcImzaEeQ252xZabs>)~%cT~8-m*AML(%!a4$wzHFmAepmP zE8L!ckFio7(;+hja(oh5I3x4bS#Y)}q#gXjQ%A4zhOfz=K&e*)BpZ4$rF?#!-&%-4 zoKh|TyHV!WO-HK1K|P7&HF za*bF3C<6Md+1p;eQY`u@U(gCoQtTcsND6I#MeRz|%NqvwO*=ui{sl8?*^vc@=yeX+ zadHDt#*Whp5!kn^v|R$nD?_-`t8eH_boz_e2~1&znNqnOP%0Jm+t^-Ks=uqkI_Kfz z;MD}TwH?BdZvh9S=w^4OmJV3yCZ=58=W4B&EEJJTc$ZJJYIM^58aJv&4w#YZ+VppS zu7t)2t=y&Ea&P$1yBZBqT(%LM(X+URHngvM<=WF4IEt=a3ihd&wr@NN0B>^HW5lDb zqKQX^k%+(wh@~^^NM$CntN)(Z8nUNN^$>`p<<5?YlsY7H$mJ#Ztc1Dqb57>-w3n$_ z9waGh(ecDUuhED7-2%!0y=0f%colJfIW8a%zfaj}f3zj*n9P8ZUmP!-eJv6WHs{S5 z>V1uDk+PagX@WQu4OoVaHz^}`CPw+;+nsxGK1Lg?!x?#QXUaI^rLtt%Z=g#j{dOu5 zp@S=ib;`oGnGj{^1_cTW%jH|n)#bMAqh{HI@?9zg3i1-QyBii(Xs!^MgRw(@?zR_3 zkj?g8qBE>*qC_HuLqZgKAQL6`n|*;D1*V~(8Tefe&cC$JXafMvlIlJ%z$(IoM=2Fm zHD>AKEH0XDF*Wi?gNZ`*yvEi;rq9GQQsj{KHD-+Ko&GSH{nTEJ)P80dXtgz_-#|8x z(avnbu@XG;o4Di_13b6^J$KcAK6??%QxrHI98Tt)_JoA3e&aU#pvPFu0brGgg_+kW z0u)<%&UoZ8HQ;2W{cHi;cu0#rGj}<^_|96@s+2gB>bTs58gE^k@9aF8(%ykBmxX?A zq&5lND&bh<09e7*TX3gSQ>O}VuZn4;%e!p64=HKT+`0DW$>H;9l63ulMlPYaF3ad` z((-}A|M{QrpwVdT4;Ak&k?R1CaFb8Ik7GF%;~n{!Yukw}8(ZstYiihd)ZB`naHn0e zzk7U+H4FGbL57SehQ%mB+FuM6)lrOAAD+*}9G0hzb|yA{^>8x#pXS~akdAVCT#lfw zYYqc4Qr-`$qjK7AXmtgDA9Q|T#muB{T~YYtZwHB0j6;YI{VIj&cd`$e?#;wSJcob% zNtAY3C@L?WUAbto{&7^-oB>A8@Fu%X4|(AXy4SLamqmYi`JSY(uYl<2r`gFog>93e z#FiUU0cCkHsZ_5|mlqrlnxBo$E>9gkc*+&B6o2=r}|0 z%l7(csawfqY?zyWKj|Y4mZwDTFvN_1PWKN51)%XxG}>T@E>*-G{MH*i`FvqFg{mmG z8%A|Zeu#~<>;9#vZgO~-s~S>2r{+>Qf-^M8bP|3cCX!F@q@QK~{P5$uGQ!?KDWrxa zOIclsnIymuWP=@A_P}rQqfpRZ7!rt+IlH!7LnMSGWwQ|o<~R*!C~l?Rt{7N<+l;m zxk5_XzJ=U2c0{OP{>wLcg`upMHMz{dXsoptisN>(i6{{nsB~SD=N;VWV--_`30IfB((9paR8$(PDAg z+~2>sxvAeg1;jJl|M-3%!S>(3IjKRJnl1yC>_g=Tje2jxaOr5(_>QwnX!<>RB1Nce9N!T;I&B8PTq6;S)zA_&M`?ec z+bB4HCJ4!oILbwBvlv*O5P*OAVxPwOa@QCtW7xHeI5%lPS!x63@rz+=j9Nf)wl2=b zq{{ZoH!!&ynTTfQ*Ta{F3?CUAbCG0krk9KLL((J5H4QRENGUmpweQIlhlbC|QNU1% zqSKgJ=+NVHQ!^}0;;U>q*ib$8_Y$BX)1F&@p)E(tS5hwS8KMAv*84ao_sI_o$DNMl zEE^>Q`|ZtdWFtDLk@9g4G^F%+d_)!e{nuT;#Vj9Aw~ON=ZL^{3u!%9HecPl%IUN zNY1M?y+91B=zUCAbYy>oQL|wkvj$s#q8r-ZS}5TNSAA5c%^ujD*APRAUT}ERkr<<` z_t4uNWOjEs&-%sUny}>Iu~Q&r5W#f5%=$fyU9H4qvmY?&H6%r?EoBfxdS!lqBrM}Z zz!L%7Ov$YU`<}l2XE}zVTLVyvZK9Q^L!aVB=$pjXSb_+}=kR_<+LEt-(b3*; zL;jDpsWxd1={UDxg1@~`I{mDV7D|IZdp}fzs9CwIDAKzkL7Z*IOI-~ro0ma}dX~6* z^TSUcPd^cVvU?{bzFE+$oSln`rTYOX!42va2b!eu8Ops7(;W+mG~dW#5X-C- z1k{^9`okaAdyp-r@Pjjv@s)Ic$CVg~xtP(*+8l7}{Kd32$J-hcW{@y@k+x=-a21F1 zy=T#0S`BCLw>65x%d@NVD*RJD;6I1w(f-pGrUJg=bot{DAF4JNaBEoo9kMV`WE>_v z%e`eJpQE1gNQICG6+RMnK$YCzKS``fcb_|1=$GUcr6u)YY*^`Lc_iI`EZa*KG}Q^R z^hFt$&n8n(%S|qWG?<3~?6P9^)2nSomBoc#InNW*Ktc;*V8YMwh&>?3lK0DX(f%3ZG0ar2WjD zbt_73QcY63pSFVQL8Bom^v~h*=c3Z6KaBzdY02v(JVBX%Ja{yJt7Cnd12IVZ{nu&x zMjK|4{gTn9wesy^BYYS+S*975;LBK^Rh1||13~WBaXc~u{ibE3c9I67tKMBmsi`S( zVofIp!e7Ar>$VJbuj5K^gwBE|89T!o)o(v3YwLX8sh@|v`BiDaxXN6N-hVcisgFaFeVi}5 zqYr$Y^?N%z1yw8%1W=n_M_FsUFH(;}`|K8rs~Lvr7RvC^jTTf>-sr|%iJvda*5T(% zT!rBuUxk7y%2uJQwa=cA&sl}epR)=D)jWC?FwI#9M7~lu?+)!U~|A zsg_v;Z*843`)D?!WsFYzQJ3*VG;j*+{uxY>HCuV6h~Mx2mpCv~A~xI7AT$~0fEdF} z;@2N2Mw7&n*$HFv$y(+r3=fnTnX|}bTN#FhQq-R&o~pZk^IAJZ(@*ueJHke;`CPG# z(>hDWS`?3e;uCT<>`_$zw%!`DV&MgI)ERQrt_&h`wDycbf!1Ye3cF`vP2V(8MHohPLT$U7&_xl{`dm=m45zn!Nt6Z)V?p7te_ch2Qa z!O$6hyTHJ19(6P=ySnRGRyON>q^aYeMrxZ$h6)o)_MTXp?VOF!MD7HIR7NA`Mr&)i z8|kjUYOd-l(O<)#wZLcY2ES@IZ9}ah1BiIy&FUl6KggB zJDI8J0YucB@U(tE9|Dtw^=rkDYv9`p7obE1MmFU3;9A@i>5-J}CwZ8z1#c{J0d0ZV zyUsdJKR8b-Hzk*nN#1fV6>k4cuDg6uy4&BrHk^$|bB>~NjD>Z_A!M%bRArm3aY0ifbp1ae-RJ6E0~EbI+6NQYogSIYC4p zs|aT@sF*(OTD^<1of$ONxnU9DldIgaHQb4W0QYR=|luo;F;n`zXxB$}T|2vG) z+0gy{qo^)BR*@5`NaQ-)wB*v)&ZU{7e@0X2=StkbzdWi%94=8hq2etNDG(r6pv?<1 z9jhv>Q5d%)Lpcu1~W2`!L(t zL4G2&y9Y_o^$ag6j-=y@)p4o1mArVb`bP8m`JEjTd@TuuMyTnX(ule_`UL z7)+Uer5F%dVzZ{qUFh77&OHs9GBXX1bd1oj;2JtoaY7YT8T+h{tzgX5%mjC&xnSMw z-}w7feV+;*$#2bTr0ZyPWzs1m0VRjaEPxleW?lr+q;4(4lKL&dEJpoB8-L?p!7-5* z(ha+6eN%=oQ0W(iEb(1o<+!nYfBN5BNZg`vIS-KAa8QU;+leXwjs%%gI0T_Q0w%K6 z#*)+&NfuIS+uD(Idga?0vSrdRWg&$P4zWlT)KO4JYEuV_Td}pEWLuI3Nb$YSsn$lJ zmUa|t_Zdu@3W|f&O07;XspwvEZHpt~X;rM1m&Hd1pO$n;0qp2m9#$;Qe~mGKJt%Zh zQ9QG7G35HmlbsS9tA$svGjaj~vo*BTD9=POahsoR#f>^FpoO%oOGH2Nc^?^C4 z-*$GK?^91SJPVT$1zR-|eASML3_6Uel)9?1zzmX!mN|@&=X^6+UMxOHP*dXyOE z$t}wL?H=CW-|)OidJ`}b|JqybUq>ys`!4XQ20kTVO$OXjf4G|f!+}!qpJ&Mj_5AcX zt-BSjA5q~$J>1}JZ_ASGm49g6ubp)#F{k2Fu?z2|l8A>2=JpC-(~8-Pd(C!Xu#4v5 ztpk;MAT8Y*?{lP*0}7rbC z*>d<$EnY06e~ozppFAmGcXxKeC+YpY&BtA%`2P`{F-M>F`)O$d>20^fr>Ut0IXzpR zn_R_uVXFm#Kc{+EgGj|H&rej*Jeh#a#LElUBD+}M#*@jz-c1=X(8Dk?Tk$2#7+klP z;WAHwc+MDHg|0$q^30Ip#ty^lmko593zv;ZaqoxWe^RC_fo?#F#slPEUd`)a60=B^ ztfZ9gYqf29yWq}JlI(8Ay=5}Ye=;`nE+fIN0r)kNF@>)p&>9dqg&Aw0ma=M57OmKE zd{UT+t9UDJ99n}M-4956Pym@Cjw2+tau5@Sm@tGUjh1o4AUXG?WBKB`RjtCQxpnj5 zK&X2~e}~mXgzZ^6(2U=RSJD0bZQjg5=bE<^%QeBR{2=$5ceg%M*LuyA+pTm;@!A+7 z9hBI5zs7L!D|5Z5A}&t2(xS^XXuH|HfP0u+f! zIrw;~Y+De`qAbzg0lK$j)}51JYIg1l88|Io%!*ze#k!dlJT`8$4?Rm4GRJl~SD>O9 z%3bBTH)a>LMKShX98iYxdB?EELm9_#I2k3AUXgn=$>bF~!z%(cxUlFR&%41ZP#4Wj ze}wL>qfL#es^e*v1d;+=a!We1U8QRX0i|1gic zUOWRCuwuIN?M^nIEEoMiNlcxgr~Jige;=#^vO!8x`kHKMza8nLMxL=Rg%5@vc#MB9 z*lljH2VCVjo020PSm@g(*|Vrj?3ho>zq99IU>b7L&8-}=dWMs0czu#ux z>{>UL>2*DFYRc5BB{B zVYW3Gp;~qfqC2(-65|9oXupjlx*3Cgm^zL~6-D7K)$vc}f=`G8gAM(LvXt<$Jl{H&=Q$mim)Q#g^EKY#+ze?Q`# zV!uyq!C^_Bv>mx;Csrn@e{Cy5dvt__>*OmvY)8#D$qqUg&>Ps)j_g-vp3a$ylt%gV z;W;geJ64M1hWfJ!%=OIm`;>*cdgw8b?8Q*_M#CTq%8YUtCKQXlt{ep8w^9IbwlR#T zTJ6E0+w6fE7sG_m5i7p{ip-S%a& zp!Y~s@SGyyC`T41zQbj7Hw-VK)3Ec1m)CaCGMxODHl}@Q;Zg0ge;^EzYITG*>dW8q=qB=2&`aJ7@wCN$3S=7}A=4dlOPYE++<~P2^Ar+$&v4Ac z>T}@9+Nfd@oN@0fKVr%`?xjNel3{p(ofkkh$N|WdjWZR~yJ@=*2MSCATd)+LO(E)^}ou zbzqkn->dD&tE9}oEex!zQnLT-)k~_NDWOKFn02%Ae?+x;=Q3(f1{`-ldkCM;Nc9bH z3OOsW2f~O!oe+CEp+9Jd+r?H@yH+htyB6-kV?CU-?dU8=c2LV>yTLw6`~HoDSW`U*e*%>=12r(MTsrHH>E|7Z&W~mF4&|k!ijDFzxq&Gk@RiCGA-z<}rn_ zvo1-Bc!BqPmrDX^!mGRzWey0 zc_@DP?%k&kC&%Bv`SksFKYaJG*{C0I47ZFIMvfdr+cHrKu^UQ$-B9Ys2TJewK+p)9#7fccQ~8_q ze}@}lu4CiT$RNdxsd;cHF5A5x>UcIpC+BtKpm8V;o<9}nbEHxK`|~J}h0B2u24_LJ z9U-^LLd{Dv;J}(SoX0>|v&m8NcrNYV%0CHrPM*JCNBtR_RKe0e6S>I-cyGF8m3q#3 zca7Tg_?pfqnNE;yo%Oe)$ROu7wbNwif4XN43}iR?u)MVI3+Zg^N~`$6sFw6#ogpB- z_n6a!EQ(am_hZVuJcy32tdKNf&Sa^E6Br5fiW8Z%5+-n@)1gG$h3Y7R3CBjt#Rsg--mxh2ka&S7jQVflOF0BK~lW!8#VU_ER zznwE{rL$u_iMzV?q!6d z8d58)p=H96{m~2#s6cRTIRfS}7uZ25RN!qy6=gXvSPO1b3o{%>q-JfQ08D|)GePIG zM?f7&d=^x@VSC(wqL0GwbYw{L=O_q(AY!72%G*Z}YpS@3r>c5;#6^22 zcU2^@qWdf&anARO9iqa&e@k*~AKL+4!Oa09NKjwqPD=7H4ajG;XRpvHGfR{U_UaQp z6#PnRz0x|jj0F-ud6M|yS6B>`uiW_Y45}BQM*1*wF9T}InjMj-XVLJ=GS9ugzp~9; zcXpB&RF6mDO3w{)Q+b(IOwcPkrjyoR@^9T#;1pU`(9{P)pn;_%e@6Q@vCLl4mu9lr zc(XGc+8Q2L{`Q9yOInm*OP%?A(r?eKwqSmqB%TXbM`V~^u1x2}N$%m?0hbh2Vh!@h zJDh}6f%;Oxi|mCJ@ko3P||$v3p*dahI;Eo&A$T2vl`D;&6S?~$MyUUGJT z{~Y2!Pw}5;_|Nlmf3~()FT}b&m|M%+5aL3t)>j`jNV0WRpeafTegG=G;IS@G_0`IC z&D;jX@c5~m6Uit@IH8)o=QD>EsLE0=ZQsb74>u0avI&_Y=N+MB3Qob56>RHqp-T5G z{P*avrBTStbIBD4^*xR6#`f=`cGjZEwT%GKje@;ibq~F_ZMO8#KrtkSa z%lF!OYD)?Mbd6 z=fwsI)<(~*Y|94xHWwh+UQa3V9j!0ti~ekx^^MQdPC?Jt(gs*9EVJ<(3-u54Y9<*{YVLd?pC0bS|g~f3D+d%WSBgl+1_KljE56f4B4` zd#ERiKR6n`OZZ>|%RFhG0Q=uuqyOVq==C^5=f+F)X`G-d<16%Fd<>sybD>P$wW}We z)a;|IS15o5x()T|b2kFd=b7D+`eIUF2{$G6Q#$z+D0SXaq_68z8Lu#wpSU^g73Rne zE62%Ue^N`MT+j0t6E~IX`a0M3b*}4v3Y0o8>|lcUT5h^r*OPqL)7lm41Dea*ba-tA zhB9oe^J*utvXn$(z`wo2)>;u#>%0g^IaFdYu1qv|fOYufjveX^+g`;7`!+XJNPZs` zB{r>6Xp897bNWT~oZ@H=`F5~xb=eYc;<)IFe_x@yL(6NI6>Txgzrn0+gP;HTpRg8Q z?;l3BMO1Cnp9@OJ+=T0D65-zr{u-jqmpv%=UKX9El3Ytb-f6Z#Eo;`YX#Y^|w6KO9 zf_~c8_G@Kd-$24~t<1&Yt7_LoKa1qDwX&QDYqL$n)%*Yzxi%D~r%Y-nPqW2exm#RG ze|4Na{#r?ZmF!)t3bCJI z*$J{YM^sB-Yc|81+Gl_l^>*{B?Cg0D=ZWFV?ROPh@yWBkD1cGIHYLjxMhbzC)k>D- zgQ@5Ab%GGlbge=}PI_^@SZG8CPGcD9~%9W9kqit$twYD$D{tW`SG zaEUId$tUTRLI*AKN)}(~yN4ZXcrKTe(+wu&tk^GMaEaQL03jnxVRz#t8_xiZfWDnJ z8{zrJE|W6&660(>?S~~IkhA1md0A4fu&4P906-Vi@0ZeJkPuPb1PSR?_%FZ7;S$yM1M+Y#RHQj|Ac2L^jg3_Dg4u+e zCtnuIEtTiIa|wrAf4&5v<4$~|e1gv=4E>2Kh%+_$*~a(M=~d`BV^NQ5w_=UW2snFW zYnbWDIL66HP(39%J0@KeI1h7J#_MQj2Y&YGr|Y(XAzsD?1b-L6tl}86R}2T=FJp8= zzl!OjwT!R%^1Y24t#!;*)u{4lpT1V~wL!x3B6!1Oe;-B|y*`PvJuSXQ%36JAB%{m8%2_@RTgVl=OC2J*G318DOXY6WHc=ie@u0Frl@6W%nHy9tdqJ^+A+QF zq+ZKr%pE!AgumXfAL!Gn3g+U%N^5l$C~YeLG!t)hSz(g5=1$7G$*xiQ4VM?70uXVt4$xMw&V2n zvDH=|tk&u6V<(~dz$BoSXHj6;oXQAka52m8zEB(WgFr~O85v}Ns#`Ua-R}Eg2N_&f zg0wA)a|3(lS{apVyg_%Mxn2ScIVndP3Q*XZe>OZ2(W@(9YA2Z@ zYGla3#9EFVL?^uiO-v+cE~gndq!lPG>Fp?F?nRNu7Tf>)@oWeij(~F31rv ze<=c?PdaU)j6}EkU2gB2x;Cel$+IjkzsQ6MEiVdm)L6N$NPA7`GDxezJcOn)G5mJ1 zl5}fG-l910bPfo^a`!PfxLO_9Ytq>g3QejbHnRv1A~A>q=uc4Xi&>1}d*K&ti1FF% zJi5bw<07F59+tN%dDn|u9tOLBk#>Vd7h;fR%u#%BYnaPWuKsXg=reaYc z0A2rP66R-7U{cmkugS617e?`w)>PfNV+?6Jwjm8##1|OS^dPxt;YB;XTOBkH#Oe_K zS>vxY{33PRZXL;Kw7|M)1AiSzT|i8%Bw3|B0W!R|u4p-=iWS5lsvovljOv4sfA%p* zLI;Iv{6jHdrg0eE4dXMivk;AQY0;?c5W>Ke4WNW2?p+-OVtCd#x6{^?cHpF~4l(V} zg`>2mD(#aBoi1gb1L=6vN;4gYZVzBh1}4xiRY?LzrOCQFWO{#v(H#zKFqT6qxV3~^ z=iu091^*$>B}W5dmYcGH1LxHvf3k~`-v;_u6-32+*`O?^pW-4<&2u1zXv3(DFa#!0 z$VjZLt;3nP6PAx%@9H4poH=iz1NA0qMuBR+M~!A!b6*dw?z#|W2vD1RQ_a`*U}eR1 zm1rL_iX7OF@-62J^7MP4&Y|(zK*I+v@`GXn4Vf!#KddvNfP+ZjSvOd5e}!t_Ydd9) zDS!$rm_vlIQ{Z%vz2##5;g@fUwBcXi6jcCQt`6d0S9tC129;g0yY{lyCTn%*l{z$~ zysWj!BB!)=u2$F&B}lOU(pGRs>smro_2Z8p-+%Y&=Z|kby*vKl&4(EJSy>-cR)>}K zp=$)k3j4;?EwBvRRBcE+e`wb{4mx8Zu*=rl$BRXpbe2H7KxT1ASY|qk&k{J$_xBBv zzyamIt3&yXf0a!Y-C0~!I1+sz)dp~Y?S4svMf>3Ko;@2t6Jh}M!#}G-{B>AVEskUJ zg;!TwSxlGNfc9dkFS&OJ*I1|E8e@C&lO*j<$W+$3mpHlLW~!U3e@PWqwcD3d$Ge=m z1X+ANA;yXanRD3h5j?*uy1K+{%7Uw#gJ!}m-9^^ONVDHe|a+vbq?L={ z0mMOIibx|UR69l>O^hIvg`w3bLPY+A`1K=U7uQ-IVZBd?`a_AnLRT+=Y2G+fT5w$y zHTc(E35@SQf2IjLSn)Bw%Gk<{nDUQ7`U?qLjP@;OWZUq1w}A5R^6CN|-)MM;sw>x& z^9rzCS9wpc$yL#}wbk|y(Ibk54!eqkuJzE*Vb|yt*6dH2S&rtqWoWKzqq&FaRqsME z&S>;_dfs^0b<|m{OV)cm5j5Zrj7EMdQcmcl-hFY&f6vF2OL{`Xo2CEf-bIYt)P^cN zBwg>2C}8wc@>fw#U5j$+ZK0grOeV=?mOn@`{UO>(f<5LO^%=DI7(oa6asR<%)VGgO zx`Kpyx-vu+C$A}a?Ip`YXI+jfq^XKnZ3|{iFk6YL-gcsD)pVN_>ALAQu$^;~(}v7b zx^j6Pf2xjoopkMGtv`be+O>DPDBkUb3{%c@urFmaOhv3LyFuunZ8PYoDVmw%`e6OU zpa|Vzw97PIhSWhp zo+5SnrKAo)F{#tvLh8sS!yb@teWZ2V(fByI@8M)sy#K{0`5`$h%TM2vmM&^8&f&Ij zP%dUYAVo!x$4F6A@-ZZB(3^;a8i;oq#ST(>I>aGlesJaV;dXwtr^C!a;``P6b*N$n ze|Ysgq;Xj6ZUyG4+g^lcgzFKhovZ4xts-CN=}Kw&q$+lJDji#;E7yQGU2D*l0+qH2 z>6!yY<)xDRAR>WD;-X66M=y4Sk>VnDMURR?V;3ev$GG6}ysH`jc{@bz((?*K{bK1Y zUVFQ9(7VKY6 z9Xcgn1DE19)L*-->Q7NgK{X3K-apE-n}EsR1G@S+zbx9=J*fy!!MdymQI^bex~3(i zMm1ovje%S#Frr;C5AMtye*uKJ zyqpHweSz4lg0xRHtR3t*0(vCE*G`VUAux+5rmEWoN?&{FYfk5v0F}k&D3B~408~1E z{`qVKp1g^Q$%MZ0Q)*qYXvo3z zLSEM07sca_TEn;<4w=vx#4K_qf2G^PZ5Z~Bx_QTdFsdf9LqmF~*>a4rA*Ft~X<6g* z35T9TILIFL{xYh8yqDXa4VjEUt>{V7Q>@B(fRIpNk0B;5C2R@jhRfZHd!FQ*`EA3o zJw!i1e)n|(J1HaYY!SumwUY|bkyH-1LnXMS9OrObFsgjpQoEcWf(v*EcR4f+^p9?cNGP4fya>k3{&}-ifX4Z-_T&y~ z6*q$D?MrdHeoGw~+&-{z`zRh3Y3B4*vUW`%I$lzH1sB6GcQFhVe;PxcId?Ch9CX{Y zpoxK=rS+85S0UQ8|A>8IzD@TE`78dpM9m=?IdKjhGws?#T&7}mYm4Lt>ueUM;pfF zV2@h^+XHlZwmgqoZ{aN8CKRn353vMzD^8^0X$N+dxWs?*&f5`Jh_M-S5`GjP#E;^g z_^0?ud?S7k-$!@j*mpI}@6KoAbG>T#AU|Zz)?P)qXXgay`Q1z2j&<{BiHc zs2bkx-NNs8d+%r*Z!pgB8_SyP4RmKOe$#pf|InD;L+$%NQceFE|0;jIj>Foo(f&K> z3N386f7Qpg@%z0Ws{gt7z1%FX;p;?xy@kAwkoSQnp#zy8A(KD`hexjh$r`7mSdHT~b=hK&*4`Vp3S@|1w`^I~tpG-o%6HfQlzM?JAs5cr1QN+!D zXW#F?!Rh(!#jDnD>ewve>*{ZNr~9v@jrDak{H=NrQOb8`zn#ZtzleWfY;)TAzlwJI ze_Wz7+T`(fmYakDoZAde?1@;DmFer!^KogPk4tqv{sk+(rhfc0t}XXga(6Ff;w@ya z)uf+vV? z>^e@AUofkbO#3$erfSuHqMV;y)vP*Cf3!h5PD*_Cuf6Z8|J=J4$ME+S{{Cz4Tlh}l z`&;-<;rko-zJl*>;QQ)4+62ptuHpm;LK*a~?BTzk^J@ldhVRf!42y$nbmP*HP%Mr{ ziUj3^E^h&eTNw+y{Y|ipqS8`JDpRpi6!Dv5O~~CYc}Z@dm*n8vK<~IKxT3U&f8?_( zd6(1<&rRv6SNfL+OG6@$x+tbc&*yM35L+R8lc7)DG)^5UnF>X~-eI3)o=(}nvATa( z)ETpt$$-}79ogk`m^pE|=*~Nrp~NXX*wsanC%Ov#a!)>K><2?0e=0`f;f;chS1`7#<*wMgU|12+9Dt2{*7GZKf(rAH zr6vbH4W|NF45_t2-`0@1gG^HDho2``_xCu@LnbFI7@Kz_P&Gzo^iux2VZTK-%a_U@ zg%5_Wm684{AUTiWzbp9f4g7Zvh&1o`>?G&-%(ymyLN~Dyrs*tbA;gXVSos(Oo5?=n7yA3*b7Q3_DUZz$y% z*5OdCA?6>PQ+?P*^+a63f5#j6dkue=*vP9GeW5Mw#!k3v&$(;VkZh)~5!r;-K+z~N zHHxQd6wk2o!@XCvE2#Z&@3{6RSG}pwAB!FXPsD+m2$;-*QGLM1Wz(P4usgoo#9hU* zX=>PN@JjB8r*cQo)a721-P((0?LT=rp7L@$JNH^FsB_yIe55tNf9Y?z`|m2QT~!bF zuA$!A8~CyO+?v}#^CEn$vcwryPU8~Td4XLQxT^&2sp=~l^xw~`01NyU&D2+NrvC2C z%3BoKJl{hqO%8 zR9by2-DcRvnJ4Ybn1B5f`06+y2W~+tb(G+qWHLGjyS^`Qd!Iha?LEwUYU|EDCQ1bn zmtnwf??!Zn&+bvPa#taRie^PV&ZAnzuBfoahE65Dji9o@e+U<4VUVuk;dT*jTZIS0 zUmHtr&?1tq>Z>}63mRlpJ}tz|b|AgW&2 ztZYg|QjX3^UtG0PQerg>~q5tB4+50zFE?JDVO|p10t3*9QHtH4~U>ILeokHl*x_zxSfr z{!j$}aqzdl{jH{h1MdHx-HUrj+D9_t?AAC7F#Baee}wh5YJc(KxV6Cc*Rkc@;reWG z&h&qhy=%V<*AeYs+(^n2_@my?P>f=i@jeHSOpK{gyXp*2!7{^GgU^!6UbPqv59rKP`g?n00PK zqq|oz1{vJEj$a)eSEE24{y<7R-gUOe>KprnuNRMRymkCUOIYx5aOFH4Fkr~oSimMy zMRQL*y)6o3l$c@^&&NOeSY6D$`H+`2<=)YMqe(?^7o%2wTtEScA;wIM{^)B+xx{Q# ze=G|dxKguZc8%fw3WI&2*Nj3xD(Vh3@nyXr_eKzxi&JX^ZXBSzNNz?sTSaeH4aE{H z%(mrMHPR{$1gv+rkEH95K*ipq3A&#lBvT~bnusw*6wB#hJgjXjQ9oXMN`9X4o8){L!P{PTqU-;JF!@$XDcWg7*RWn7Y5Gf8Vx; ztVnViN%jE_7(2>}xJPG`^Z3G^PiLeY&UK98T&=N=&qcJwe6KYkPyKb8m8Z$S2XTtc!NzgxQBEk5CA z0T9~dgfq~)+i2%MRW}3(V(-a+f0}#pzhDwzickDBQgomu6Pc*ix6*}0T|bufWc*yn ze+I;VB0W(F4EGrbir=l%Y~It_)Fq2;uLlxewqrR@gHglP`*42N=DNJlTlT^(4<~KB zc{E>BHYxl0cD$uyw>5?swA^)(VlgYcG2%(QZp&;ghRRiFpy@{!ryTZ??EeO111^< zVQOFNg+$_5)!q%|5ig*wsCak*clVdlR+bi}rmcE5Z8ePh#qW%L|B08v7iBZ}x^HtzIQeZW^1v{T}h zl00pX)Gcz!wMm{*?#ldj8#B%z0UGL0%5RjiMXj-PX(?yyd$NnVf5@eOL>s4xPG<9| z3pD;3TSicm+DIno*&5pv1~Zx}^1)*eHf@z=8Ma0Y{4l1F8)PHeJ#zZ~GflUFRvYP) zBy?nTGTuSUu7fY3(P!@&2e(sKj6nf5|zLB&S4-7f5%?JUfmrfKe~bM(0ta<@_UyOr_r{)TncJsqrf5 z6;}gvs(+73Kt+*`3`MHTY<$PB6nh|Z=Br?<0$T0$S3e@6d0E?T{oUJjUB%8((aegAf7XSQ4%aE)(M-)=6hxdW zNQ-BXD!Cu%UJ=BUUOeUxy?Bft#S+2AJhnnZ`J6A1gp2;Pbb%deaCH7i(-w0md=ieX z!K50i12M8tq;ocoMjkDv<4Z72SA=r%!C~YADk)|GvZ8`TF=q&o&b z%r}-W(U7DUe|}ffQ|JrNxzi#s^V2_4b&1gc9YuTg-DnicOor^$JgyaFTBY3TxD?-v z-088^|Ef10@0OiZ=LP=8+>3WwO$z*pX&6~ZjNLl6RV(XoikudDE!%$M)2$>&?%Y#u zA!n=f`Y7rwJrKpWBS%syiPHSZ-V3=+)^cHBU-+BOf9>C>jd2CbLqs{PsQ^$`dlIYI z4LVTNBuC0FqY1YWe&mPDMoIoHkLv()c08FBP)?7jS*~QRW~W%QU&p0Mx*Sr>lE6A( zB1bwuf{}((i-NVIvF51tRo*<1CUxTnxoBO6g5xO4o-rL~L9#SjVq(hgT86JZSNPAR zn28H9e-cwMAvH35p(r9J@LFu8FBYw8HI443?gf~hx2DdqP?zW!HR+}%f{vudbPCcS zD+~pfPsYczOJF$xA78|6{4;~EE1(_W3;s;v@S=7}Mit9A9Mxv@(@2QoiDON*Y-vU$ z4lk<{X^){ek~o}Im(mtPlRIQS;zTF%kv*#qe`1W3k(Da72qSXZk-HhjWry^lHhGa? zprniHX^MsZSMvQhqsaC6u+@ml?LseYw;jdtx0xQ&O3W6JGg@0N;j|;} zn1Yl~FHCM;Ct1=-CPc*5?RUI%$7?lkbK*+6ufBaTAgUr?GT!_ql-g1ias4Ckky(RmcPZwPd zR>h4}P;ock<9x97AC=(8V=^s2hR!6&pi_i?n$q{9V6@ZhY9(UqATtTSSnHYVDUce_dBe zvm`&&^`Fmnc62G5bLu{dbAsBtuC7=qSKHaj)n;k8S+L15+^bJoamFXe5pusa?QOi> zW>@*T89vfy%*z*auq&%cGP`Jw(*D4ALz8ydxy)zysIl~qs-FH4dD!&zkE*DD^qD?$ z_Fv+&$}Sxt=;IbnR39B{vYlj{f9h?by;G1ODo8QDv zrt&=IwjuPT^iW`8F^IcINEL+g5;R%z7H&RJQ!*WD_L>kx|E~yh+(&PVf4o13{I{h% zOF)A3yJoi>28U2BVG@o>J!H?2&eG-ds!;a<=smue(EkWBD}#cl*CTVq4Ag>ZxPCm8 z5w8bcp9i@<<7KJTTKabMVL}S~6oc64*YzN`Njbk`R;$y_`d>X0`yvP^&_voL?@GLl zfGP+WAV8UKuEQ*KFr*R3D*4b*+{p3^5Mg$ljC>49Dh(fe_)Er-3~4hYAO6^ z!c)^lp_O7&KwVXT4*kkCR|j}!r|Y5NGJ3NH0_Q&h6W(Y*T5pQM6TUR@^eP>mJGd)eQ5it(=%QqH51M4vu9WRv~HK zqB@kfbE@PqUU5sde^@NnKz_6!I?46pkSS0~bo4-{`Mq!@?Rz2#WyEXPmg!tYrM<1hE3#B%tA{tk0VMVyR z`=lNlC}85-c?#5e8|S}2^RK$LC1vA~3&az)U)Bx}pYQCnU&OV8r_VJas2%*Hq2F5p z2=W-{nFaH;e*^N2AuIqpTjttrIK@>1&>Mq|oIa?2K0PoHhkv&r?3|}x0jj3|)1497 zL$kAGJ}t_CpLg26%zRZe`JL#l6L&~;SDswc@P>j1m~fK!_g&HE6bev@-z@QQiGzY5 znz^+#@iZSEn2D)Luy23+^!n%b#~;7@@m)b=O>z>ie# z=S^wjy+>>waX5;fD8!vvb6-f&Mrmi3TVN)rkI|m5e1Qw=vH`+7J#}ua^-d!F`ueXf z{>`f>raS*;kk^hDR+ox9rS_Eu420yO9KXuEFMByojl83(Nbksrgy`H~-lalcq`+vl z>&OMce_n0N%nAIGx~CVSBZgu?FCfFX(Hg$!vx`Yg7(l|{#f1G9Uc}*W?^(1rsfGji z+v>#O=GH=R{Mf(^ez~;z+a?CHJPt3<4~rV$*QRU< z%v2YWDvr&__VS^BS15@0tV=XX77s3`1zIe6f5y#-b{K}{U%-u(jph@y)6l=~@1M%| zo?gNll(>-c=l%U*W0T)5$_Z&a$Zr>9S##S(vfE;yx61|WD%vjc-AMOGxg=FxfQ@zd z{CRC6F17zA(H2uNH?L`NL(Jj}^|Uj7F>8&h@iQ2Hd~r5DZ%y$J?2*=-ejJ|jjW^oa zf0^PxbNuHrY}cmIiyr@)%U@Ia1$z>TJw1XKVnX55; z>}m}2t0D2ayB>hl>reM^F{+LF^RM@K8Q}N9!5%L_i3zzVOe-;W5 zCSb{d#FE{3gjn(d|KLHH&<|K1Ope3u9<1ZnPpcR3_wQeQU7f(+gMWM-?H|;iK0j!2 zAqn>EYXbY~A73%pSN}k;!^YDVSIJ<9e?KI!=TDz8*wce(|FC}WY}5OTE^eOeKeF0~ zrOW+_3{PkMEPH6l4di1l?2f6se{FqG$hv}S`OiGxgV^hVzHZ@|Tc_W{z}0vl&$9Y; zh`;{eF&3s9O|M(!i*Ba-OK(V1L-_^yZk}Wh(rN_s*hQaFjcxv0w$$6O#OQHYVhG5A zmbw$0b|ot3ZPXwK*m9k_u+CkH*+cY)Nz_={p7rL_FpBm%t>IahRvrGzfAz;-y#C(F z9)0HeQ{S4Vo8_xcQ~jk2PKC?Y`Wp<{*`F=wnfS5|%v^W<2(Bwv<`2^A|7$zKkf#H) z4<6hexadGEckue&3kS7swEu_Kzl?6)%B$t({Y$q+QC+l4J|o764g=y^Y4zfQh$t^sV znL<17V4~m8r|nrFaFf37cjr>_6mZIiQM)(4QD4WCWC&TTK1~gwY6a$^S0wrR0@R4G zyewg^|kIDqzqVj`wsHy_DAN)3Z6F#h+slR^Z zcjds_nDk;(WPBMGe~n5gUE9am-_d#B>Z=QfY}9w~v$`9Iial>8+azlJo}z#?#=z@j z2}N8*8L4%oPaWivY2}^0bACzMoQqq^Jj$9}s+eM83okJzwHn2gPGgg25|DK+jjmx1 z6K;$(TNDx87;K_t2<>JdcJMc>pYby%-vOVYR zDDL2@g*j`glPj`5+(u}56U@*6%tp1|`q)TWXYsd>gZ09jG#e@FZ2q<|w9cVV3sdU` z>C?vAJhA%Q!QgVc>jVd%TbY!QL+{KcxQU9c;^*K|-O@mjkH90P{lkm4m@nFs?{)WL zTzw}+!r|DCf3q&WM2_m_L*{m{1ML*i)~Ieil!^sSzx4ff%|f3J#3aBQZd-$C&p@ zFBa!(Z+vP;q4pgc3!rWkE57Ceb82YBGPnr+G&pj7e*iZv^`?ep@cmJ5YBM>ed+7Yc z>bN-pJ39m4fY2)TfxR?7Vnjxj)~~}HM0@5)-9>FCJHy|#jiR06l=cjAbKBN(FoeSP zp)G75w#LfH6U9x_emh&Hee8CK(s!x6(y~lMa5G@{(430*xtVX%DBst2BM)cc4J}wx zX234Oe-jN^a3t8wa$}V`H?OUdwlZp0-y0F`px~qe_9^CM11PNJyFU|Z2$MH8rF_}?^UDl zsCl`HjtUc;&%J#ge{li82tW6oEq1#w2F9!3%{3@(%!XQ_bF36M6`EnhOV>y|(%-y& ze=|Pt67&y+Ztz@)Qyb#Ig?KetrgrurXS0&h&Cg~vsu0qrAWso7k?DKwWx;LAlg6N6c$R^sL{dEvW%s3 zRCt@)yKdw-hVken%-%mVu8{`lOwabnaA5*KPF`FXw+mwrQ;*Qck+ove(iIzH(6Q1L zn~HE&4JQxn-&!KZ;vm{MGiS!H{bCS1m{I^-^pJs9w($YyE%QTFVJ$Tb^06F_9;yxF zd4E4tANjs3?pZ@^H19sobKqwl3zTEQ>|Rxa%T-{Kn1QogFe{-?0XON3e}-GcKbL7= zzQUJ5^pb131lyOFuzOEN$)p!bGPX=U6ua`FAA zv0~}i@F8a-ih$j2GB=1egGZXo^|zYL;anMhTWIO4OD1pO`5%xJd@kSq7l{yDm+pVL zbfCl&V^YcsE2DKSygJ&75StQ>TJnOLRMoeV_Mb<2ObU0hAIWC0we8wL(~EOc3x5-b zW6&tIR>(FAi@k?Q!E<^%>%AHRX*?83q)hl_Hm_txF=kr>bYSC+>gaI;Z8pBlo&1P7 zvf+C&^4H-|gBO^LZr#0IenbMz+JHXd--F#CC(#Uce+O*a#A-rk!j5*SEPB3*ZAmC$ zBJ_*tm%;t13OSadI=848pHx}y#(y>SH2Ho>_tYKj;&-j56JlGkYv4>Rf54qSKI=;_ z`lwCCzVl&ij8{*&On{na&LZt&>dT}ld47t49*~K|BpD^w0!MEW{)}td>zV&Vs z{_U-IVRg7d4~vArmP{g-9xrR|;5=%EqbfIdR0;%#I->1>yT=GYfVi}5F`Vf~*PO)O zM(AT!1tFLIyZc$UecAtQI)9;A=lz2-gpOok2T1G5YSk$H&-F&qXw3GIrZ>}&HWU6c zK@C&dPio=k_QKDL7XI;z-p&E4Wrt~kl^+(Y{FJA!cxjJC>=THQX zf0;W3VogNm139hni|~UjxzYyYE)35!Ku495kT)_VG~gUK9xn$dRJ9#Y4$fnW5IP{Y zm*zQE;+RY0m)}GUq97$E2uywNC<@R1`}h6xy(s*hsEFU|<9{sL$G9*-byyAl<7p7N zUM@HI9*t8{s68`qv}YJFWJ$Q_L2k6MOXtk>p!k>iMYiWuF|bdzxM%P*7c3_auYdgE zCzNZZWU{Hw|d(+Qy4Z$Ezg$)t@I3v@!rEODIk+#uL{Pl-nd zBi}&);1WYwTYOi~bB5)jq~n4UE$( z_@>2zzjgR;Hir#-na;bYnfd1A$9M1Ezj^!fhc~aanSbqMJ`4jpr&)muVb)iZGk|-o zS6R#}K~=VoJ*vVDsJ?Nm%8i1l6FV@4R?&L~8<){=>u5h_zM#he@aUKG8R~56QK%&8 zN^9N&L`aBLEfDT01|d6tnQF2(IvZPnHm%ArfGDqSh&8iKm<5emc@}tgw4AZn*EG3k zFP7QKynok^s@-Oz81ziHSm}LCe)7+H>~O za-X>=%0#GvLW?y zm3SEC+5hR?H*oa&?P-Da22nd!$Gj3~y=8%4S9m5pVCU@(c37 zpfX*Xvmc{7yD2N6P0Jr6ZyDYvHpTWCBh5Zp0RcagY8S14!G00j=$QNOwb&g^`A~%V1B&{jy!5#vgP-sxq%8$Rh#p80 z{NdmqCz6qYkq(p4e(3+fo>)eKD883sDfZk5@de-d*y`!Al;IDu&W*dNk>uWSrd0a@T?Q6ca zgtia)+{zU;j`sgMD}uTsSP2>;(2Wz3G{ z>@L5uv|C!P_zX(^4*!4SFBM1j?D98Y$esoJ9qbbF>hiMt3@n2a9ZR_Z;3?78t%J+7nHh4de91>~=+xm(?T`Z-{~+SC0?38zU}U-BllTMmmcjivUGNe2e`@>~(EL1tyd}&YhjocMc%^{9 zb#E7YEe{QU93Wv-|Gu5mJZX9n{=`CYdspbO?{=lwZEN8v zHA!j+b7t5O{wwQd|_Ir$5+LD?R>daPjF6uZfdoSdJPVT3z*fCar2M$5`_R( z{$9Mcbx5dWG@IDO(%<|X1bDkrJ{-sJ>$<@RZeAk zWk=_#!cK|e`q61b%oF;h(}Y}IetP!gR~hjEANjs09J@Z_T(B^k&E-Y2<27OBS_{ie z@dvzrMVc@I>kJ#b2>`1`0G7%!W?rYUG3`uO57GtRMob8YCkd=hNBQjh@%;M-uUk;S#|&6-%4wCGgRKiV+{(OXus(}OB8Idc(6kBbew)K%Vu%7xaRD*lOoRc;f|kwcY7PWXW(xb!S6TCW`q8G1;5`mliudy z+rd}#`*m+~yV)Ez=ud*bxBpEqx9R1ZCcS(EFG-x>Z<1gV{7L%fBNnfQ;SxC{?6lYO zdOPfDcaijV-zMkVLedhpA<-kKiQ9$DPu;{qQOdQ9+t zF{j6zOm@w3-}8)D8Q3cM@baWJgq!yOMV z=uAY55#_s3l@4=C)M2hf5!~!3;E3mDC}elH3sJ`|Kty0|Ixvrwbs$}M!3mfc4u^7r zLYlhSy-SlfIjb!>;bOr>0bv@pAllUh^cE$`bmUx%x0Z+dfF~*r1aW&U*$iZVs79Ph zqO_c$7Vgp#J{f|5Y8Ei_buQ4pEmr_7XQ22|Fc*aYQoJWx!x`&}PHx=I^YC3C=1uy6 zh{=}xD)M?MDnc%0LRv@X9@%F%?Q=wxRL(5A>=S%jE=y?V5)KDOx9_z8a(Dnbtm7C| zDdE%3WHM}`_=GrC_n?l~^~xoGk<03PZ79sKn2|Fg3mGppYDw&n^Qp&($noJ3PO%J( z&pKSE+%{L=(#WTB^dUW6`CV9zwD`!wj*4H!ua0NwMY%}LXJS6nkvvk8ST8(nh?y!y#Y^el7Yv=lns<6-K z*^0XtvVqX}(T(QKo7j$tu##8Paxz|1QRiFoOXuWztmJQhL-I?PEkI907IugIz-;W* zT>{5_qSr23{Pl}ddE(?9KnHBK&X!`-=*;q88S80SY<{fP7I<amCiBK55I~@Ff9foj`?!|T7PlY6fE&1*&+6Wod z;qY~{$*%aKzGNAk`YXuG7T=G<#V9@;?9G$Cg{*LpO%832+`hr^~ZZ{zTuVMDc=e)I!_RX1`NRA$dtTdFfLoDk3MTy>T$KWhLk zt^Bob<*_-FJ+Wm#mlB@5@2^!ZyIyO5t5d}k4hTOhr;-(+X~9t8e*R4}P~Hd? z7$y%dH{z}x+}UyK0(7PgQf~veppWL^2xoi_3xJ_|?QY;ADy0w^z}lX3T}X%s=Vz;Y z$QR;3vI{TlFi9yStSnJ1aNnh{0bTnDkOHP5Ox6r_$d!3ZvYEyJNI@Wimc13eg-wQk zyIYdZ*050+cHhW;{WS^sgR^k;ZZRxW{D`(N+r~qn4fV79J_h|U_cpc>XUkU9wrzOU z9P&jnaZ{pYRCOkBjtO2L8qjTB1^c(%O`l(3>3SV+_;YF;CTZorCHHVKrBuvqhGMzm zj*WL-isvG#SY{0{{XlJcra$^9eBkuvleV23#iKlqSI@JjVU&i86(2g;a!cp2lRApmPw7~Bv_SI*JB#+$ z2Xfqe=H!J$bTNa5U26ki-*d8PnL(| z*j{#Bk2p<2c!jb*k);TqX~Cz@hbGI=H`G=5yZVA zkf*Z5DGC+G(Dp>4%AGrOpMK6!b4Da~a`ag;qKRah2&E9+yE(IHWc^X-n(Q;)Ycd z^<~J!wUbLgHDuY)Ru0e0ajiD)CTO2LG8>e>LqqFD)oRJT;&`=WhFPsK8yW6CfvqYQ zOs6&NM=;Ui?8jnb9Z@Jv0Ffn31o$heVVa{Menp~zWx~b+F%#Qoaa0L^)ChnYNuWjs zsH8jUqgtM13IeiGpN$k`W&*1q1U5T=cMKyX|MMBE)oz}evJ!iy!{6z6Oh<<#+>_u!Gv@YYB*kP|nYzSiV0HS!kG`OTIibC!dIK#)RA~{~ zrFu6}ZI8tCi1<>+1gv7{6}AihR7Fo1@kmtH!(g`q=Fsez7H+Eem@&XHMmUo0xX+a% zMrR6d-HGzj$2UOPmP(~A@Fg&-NyEEW|MF)5SKM z#;pNrC|g4e-P{U`BZk7llp%}F&J!Wtp)#-=^?3|Gs;{BFnnOJa10U|N!@vPV$gTNa z#GnI6hO-Q#?h?Cv)E^>dVanhc%(1!Xv-Vm>7h znF@`%e@4Pu-KA|OoOF^iD}uQnU_`ONMjyLT6j>{AwN>5s#sINU?_r zHA|1ywxG3URvIeh9rax)&kSN};BqHr&efNA0P{B(hz+BK#W|Taw?B}_$MV}k6AF(* zM4!jm#>HtooD6Z-6iv%XX4NPgMJ z4d+WUZ6>mMJ&KXN0MjaOEz%j-(2SH4Gwk7l{rE8s=Mh6?Fby*en%@}4uXX^Y!=f+cC`q; zI1hyKcKgB0m*DP842JCNBcIsAuVTI3#E*V|C=0I2`-6!FzS4CH8L>edzg3og^G20F z9DMr~I}}fE-gxyK=BUt{V#0<;J9bW58D7yz-d**J_Rum?K(T4wUHAD)v}uV{bEYfq z$KfKH#d&MRu5vUkj((I0Gb&ct8WO9X8R$CLi)h6@dJwa9S(Ys$uiMd=S1dnn=Sm!Z z9x#qt4S&0NUkrM~<*UB6Y=M;4e50kWm+STx@oUrF%IgRb`qe2=#HwZ7A6La>w2^~( zKn1zD~@vc_7IvB9{V>Ju=>Fsf2B5< zQV2cd11hEkUZhZM6SQTz*n_v^P*nbQK+d*jF2=hf+A=^Og@7?M!gk~X0Q*+0hQ9=r z!pJpXWX@%>!pk-6duznYoyq}nBpk1D&NqY>ahFz6hUPN>NYsvA;w9i^M*bmSs23$aWjr0g@z@$yg*c)IkkiO z=-p`#H)!0{-nEvfOtf!jYX$ay$H?~BO9wxec{uD>^s&sxGMtP$&Cc*EqA%f`P{$Yg z1Ex^zC3!Z`spxfdVyhX{;YcxU9S*tm7BnDJ6jkAqEJkVhUmL~qY5$|FcN!O+A$Fp^gDP{-md)=)o!(goE#b}sROPfLniHPm zO-{sWnv=DoYH&}jb?1G5dCd`b15qeJBM$FypcjCVj5@raqXx4O;8QYpIJu4~-ttT# zFKEr%7=x5!kD8sFNd4AF9Ll0}>jiLv%HEZuwesRJ6UzqWGE%5+6$y{YPecWHk;Ydn z;i10kh9YQ#a8)KRZkKCi5kC)S%W;V2gg*R8fZ&PK_y7Lt1@ilUe-^Kp8o#4L3M}nh zlqaX90Z!VwhCb5=$JN9Nrsi9ospHIEtKD=H(5&@w_%7S5F(~@`ESvKSr1nT$0;Wn+ zf%cJ;JG^=J9sI-S(Y{B+_7!|y-JjgLXu`%qhLfryR}Wh76#7y?2iysEib5M4P5DsU@0V3>l37EHtr$ zWB+OGj~duwC<0r?hz{ZQj=V$aaBniA?}To_!t_pQ6aqFg+65uno}p-a(w+7B6n+fZ z*&-_ zGXMt502s``rddOTQDfL6HlT?~O%xI5Lj%T*RH1Xi>_Ah@qO(Fhbwc8hqCBoLXF__m z5vp46_}V}!f`vY?E)rXq;jFGa-W7WG0l2N`0paW-2V)4#HV*RS|P zm<(ZgwgpkydjSdt`K`~$Z+cJ0X zf2aJkb4eEUZxl09NTYQ|t)ZMLem66WDk)Gm8fK7waW;T)IF_fy-)Z%py*8s+Ao%tt zAf3Q}9-Ykogr=8=LF=I<04lKw%9<|jTe#IHWneV%5K4tR{2;F-z<_zsCS_DTeNUub zpKf|_wFWtEFo)?TB$kBCMjE6{za_0L)H2n1+U8!k%^KU2?dLO<(0jS$eCvz#pSEG+ z7By@TI&nGshT2OoG?s=-XG}9}KIZyocWIq}B&K=>TTFhK+KEKt)?H>uXr+k+Zella z3Tt#VKXUgNWbMLjRlH^ioT{}8^GX#~iOwc@NyCMXM)JamR_QjHcKTB&aakAACRhH? zi%+LtzFb?*W{YpdZ8>MFQCR+)+4Ar6#q_KQG@nm|My%~@^bvv9JF5g_nOMp zYS;6zwni!lIzR-56^J%n?uAGpzrMPE`2ssJ{{1@=BF7vHobw8KYB3@Q6k{oy)<5G?1Y`7cR%U& zFJspVUfs#mvM1(Qb{sCJ0PR|??3ln)4U8flLKVu+eo50PlruFVppZd~ZRc`-HGvMT zfEySOUnpj@px?GZ+BL6MsH1)(LPt?A-dI?(xV*HroLA-;qt&0kSlDQByIb2eQr=80 z))>P#mv~DPt3qeuTwA|V>}bIUueS4+w!Z(4lE2X2TiU#{tsT`P4=7ahk;kc-cf6%4 z1U&2CC$kzEAGQ$1k}A3)Uj~qW#C!B{JTJQQE;`i{R}i0!mv)(zipT?O(n#+1w%m2d zojry8cFw?%0~AO<#)^J~6*W^^>qIyg*VO{Fn{MuVFIRZUShYZoQPduhDAXLcQkePriBO zSsxK%&=!2VJ`+mc_-M-hSg0wbM5s!fwe=j7z|n)lu4mBBRmMP8IE(hw$NzWrj?@}E zYyH(4XFr-%ZvFi#LqGI?pc|!B+J;(ZO2YE;|4P-dBxc7i=Jzsxhy7_y`9>7L*1c$( zj%ci&snJ@Gyv?u6CYFTHXyrP^)dEOlap>pjk$$=SZiF7+&kpk+K8m|Wg-99aRQY0n}{;udf$T6BgDlJjKl4meVOV?~NJVegW2qqA?9 z3g!H-dycu}|C-pIZV}ZIQRsBk9mxz7T54ztA4t$K^n<{E4HPgB-x=UM<|wYdJCJ7x zgFNRr?1befZiv|gcHhZ6OR{Xd{lO*s7Ry2E;o{)-sl9S7JPNj$`e?6RYd)S>O#V(? zYufVriy7=F(ZFO*-W|H?7EvTj7a^LYBzGV9$t-T|GDoHn=_XLwuD6&nyAO2aCrsee z{>qAIFV6XYDVeyyl&9p4xw^-goAc9>J#bC;W#rB0nk~?G_(mApRR{CCyM?b^WlY*k zAF0@S$M`vdG0QlyPGC+ z&(w;r<9`&l4bX0=azxjhbi#~CEejU`1uLyQD0?~O4-|b?l8A6*d-q?SKcMQh`m5%Rkd@vav-84B2ZAEh;q}* zMPuH7NAj4P*(-J}JsDi%Ir4>PU+cFiWv6-#_+3n@Tp{U8_(5zM$2l(}k;NjK8$Xd! zil@|N%FjFnJI19+7LxWbsU(~{9(WCMSHYcDG|{X88p6qCo7G!k9_KcHOXhIU*t$w^ zs*c4z67cQqEXyErmU(9Q7ZMIB!JZ9+<)03J#@*i9_+wkyMb;8A4gfxCz`tGuJmY}V zF&?08frLa0L^ewV&2Oiw(R>p0(97BDSj?O!Jg0I&@qM{ZdF~NSQCqU6mHjQ>no5nR zSlQF8^=xHN=F*=vXGa3ImbFB=;mbkhEj{Zi6%C`0vR0KS{9vJ5&tUm~ z?sL$Er4t9|$_&@kh*aZE46qCDK)$r#x^0)RFkSBM?i}-p^U~2m*2U&h-SitKrasG| z8X?GC1%GxD765M4vBVADX;{0v@JmmmVHLdguFwPUZ{C%7(^GcvwXES2RXG^G7N!;z z(=8VV*l$k6FEDjU%bh1usF%THnM}ZcabdaVTND1W+=oO0?>Lrw;r%9FEo!gw7qMgU znNZEus~ESqy+q63)Bebo7RHzQqMMO+Pz6D_74ZTL>H-H`2-W(vR-fbwy~~6`FJH%& zsMc$^YhG|g!>5&NELtm=ok&s7j4CzJ9+i>cm<$-&%sX z=v|=EqNWm@i@rW{njW^9NRx&nl&eUxLl-GvW7&+~_9B600xd!sCglt%X(|i4fYttp z+!EwlbXjyJbWl*$ySgxaV>+&Xyw})K#yK{cziY)?x)b7W7}nT{xHAb9W~j9bUl-Hx z))p6POGkA$F_QP#QoZct?k@6O6hA@IIu1Is#;S=P->`EkydYuJ1qhkmkk`72oNUf8 zE7>A2&(9a^h#kxB!j)+jN||P*mEMiTn^=;|t@s<&IU4$HU;?i4ym_@_)5TBwVi}~HQLu2`HclXe&FTaVy1ZmJDk_?jZ zw!*2X8X74^@2J9Y*FMOPg4wKv z#+VM|%s_CarpsD&nw0B*d@*7{x`6@xSb6I-hQki}ueccl$#i9yBP`rz@TuxeGgH0I z+!nYYz{(@Q2<^(o*QaLY_DKP43SCTpq}4`?_^LGz)Htp@CZ~rQFV?YFllX0k*+Bu| z$!>hzG&2s6aX=6_#x?E$e#&xs02$;UZAOCGK2w4J1-?Kp8nq^WzRswT^0{oSBWSG? z?^L$d(f�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 ZaeH4rA)hxeBwwS}{|`Q|cK9A30swImT`vFt diff --git a/src/text.class.js b/src/text.class.js index 3db615b0..67e64b55 100644 --- a/src/text.class.js +++ b/src/text.class.js @@ -344,7 +344,7 @@ // "rgb(0, 100, 0) 0 0 5px" // "red 2px 2px 1px" // "#f55 123 345 567" - var reOffsetsAndBlur = /\s*(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/; + var reOffsetsAndBlur = /\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/; var shadowDeclaration = this.textShadow; var offsetsAndBlur = reOffsetsAndBlur.exec(this.textShadow);