From 1f4d400ba1d60ee77721d39738868252eba1bf02 Mon Sep 17 00:00:00 2001 From: kangax Date: Tue, 29 Oct 2013 21:14:42 +0100 Subject: [PATCH] Build distribution --- dist/all.js | 9 +++++++-- dist/all.min.js | 14 +++++++------- dist/all.min.js.gz | Bin 57143 -> 57148 bytes dist/all.require.js | 9 +++++++-- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/dist/all.js b/dist/all.js index a3cc39df..764a7650 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1830,7 +1830,8 @@ if (typeof console !== 'undefined') { } /** - * Stops event observing for a particular event handler + * Stops event observing for a particular event handler. Calling this method + * without arguments removes all handlers for all events * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead) * @memberOf fabric.Observable * @alias off @@ -1842,8 +1843,12 @@ if (typeof console !== 'undefined') { function stopObserving(eventName, handler) { if (!this.__eventListeners) return; + // remove all key/value pairs (event name -> event handler) + if (arguments.length === 0) { + this.__eventListeners = { }; + } // one object with key/value pairs was passed - if (arguments.length === 1 && typeof arguments[0] === 'object') { + else if (arguments.length === 1 && typeof arguments[0] === 'object') { for (var prop in eventName) { _removeEventListener.call(this, prop, eventName[prop]); } diff --git a/dist/all.min.js b/dist/all.min.js index 1e1407a9..1cf1b711 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ -/* build: `node build.js modules=ALL exclude=gestures minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.9"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.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(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=A(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;if(u()){e.onComplete&&e.onComplete();return}o(a(l,f,c,r));if(s>i){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this.overlayImage&&t.drawImage(this.overlayImage,this.overlayImageLeft,this.overlayImageTop),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGBackgroundColor:function(e){this.backgroundColor&&this.backgroundColor.source&&e.push('")},_setSVGBackgroundImage:function(e){this.backgroundImage&&e.push('')},_setSVGOverlayImage:function(e){this.overlayImage&&e.push('')},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;r0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;an.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){if(!this.selection)return;var t=this._collectObjects();t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var e=[],t,n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a=new fabric.Point(s(n,i),s(r,u)),f=new fabric.Point(o(n,i),o(r,u)),l=n===i&&r===u;for(var c=this._objects.length;c--;){t=this._objects[c];if(!t||!t.selectable||!t.visible)continue;if(t.intersectsWithRect(a,f)||t.isContainedWithinRect(a,f)||t.containsPoint(a)||t.containsPoint(f)){t.set("active",!0),e.push(t);if(l)break}}return e},findTarget:function(e,t){if(this.skipTargetFind)return;var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this._objects[o].evented&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center"),i.add(this);var o=i.toDataURL(e);return this.set(s).setCoords(),i.dispose(),i=null,o},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this -.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject -(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})})},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(/\r?\n/);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(/\r?\n/),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._setSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_setSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){var e=fabric.util.object.clone;fabric.ITextBehavior={initBehavior:function(){this.initKeyHandlers(),this.initCursorSelectionHandlers(),this.initDblClickSimulation(),this.initHiddenTextarea()},initKeyHandlers:function(){fabric.util.addListener(document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){if(!/(iPad|iPhone|iPod)/g.test(navigator.userAgent))return;this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},initDblClickSimulation:function(){var e=+(new Date),t;this.on("mousedown",function(n){t=+(new Date);if(t-e<500){this.fire("dblclick",n);var r=n.e;r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()}e=t})},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&this.setCursorByClick(e.e)})},initMousemoveHandler:function(){this.on("mousemove",function(){this.__isMousedown&&this.isEditing&&console.log("mousemove: need to select text")})},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;var t=this.canvas.getPointer(e.e),n=this.__mousedownX!==t.x||this.__mousedownY!==t.y;if(n)return;this.selected&&this.enterEditing()})},initSelectedHandler:function(){this.on("selected",function(){var e=this;setTimeout(function(){e.selected=!0},100),this._hasClearSelectionListener||(this.canvas.on("selection:cleared",function(t){if(t.e&&e.canvas.findTarget(t.e))return;e.exitEditing()}),this._hasClearSelectionListener=!0)})},_tick:function(){var e=this;if(this._abortCursorAnimation)return;this.animate("_currentCursorOpacity",1,{duration:this.cursorDuration,onComplete:function(){e._onTickComplete()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},_onTickComplete:function(){if(this._abortCursorAnimation)return;var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout(function(){e.animate("_currentCursorOpacity",0,{duration:this.cursorDuration/2,onComplete:function(){e._tick()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},100)},initDelayedCursor:function(){var e=this;this._cursorTimeout2&&clearTimeout(this._cursorTimeout2),this._cursorTimeout2=setTimeout(function(){e._abortCursorAnimation=!1,e._tick()},this.cursorDelay)},abortCursorAnimation:function(){this._abortCursorAnimation=!0,clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,this.canvas.renderAll();var e=this;setTimeout(function(){e._abortCursorAnimation=!1},10)},onKeyDown:function(e){if(!this.isEditing||e.ctrlKey)return;if(e.keyCode===39)this.moveCursorRight(e);else if(e.keyCode===37)this.moveCursorLeft(e);else if(e.keyCode===38)this.moveCursorUp(e);else if(e.keyCode===40)this.moveCursorDown(e);else if(e.keyCode===8)this.removeChars(e);else if(e.keyCode===46)this.moveCursorRight(e),this.removeChars(e);else{if(e.keyCode!==13)return;this.insertNewline()}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13||e.keyCode===37||e.keyCode===38||e.keyCode===39||e.keyCode===40)return;this.insertChar(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getSelectionStartOffset:function(){var e=this.text.slice(0,this.selectionStart),t=this.text.slice(this.selectionStart),n=e.slice(e.lastIndexOf("\n")+1),r=t.match(/(.*)\n?/)[1],i=(t.match(/.*\n(.*)\n?/)||{})[1]||"";return n.length>i.length?(i+r).length+1:(n+r).length+1},moveCursorDown:function(e){this.abortCursorAnimation(),this._currentCursorOpacity=1;var t=this.getSelectionStartOffset();e.metaKey&&(t=this.text.length-this.selectionStart),e.shiftKey?this.moveCursorDownWithShift(t):this.moveCursorDownWithoutShift(t),this.initDelayedCursor()},moveCursorDownWithoutShift:function(e){this._selectionDirection="right",this.selectionStart+=e,this.selectionStart>this.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?(this.selectionStart=this.selectionEnd,this._selectionDirection="right"):(this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorUp:function(e){var t=this.text.slice(0,this.selectionStart);this.abortCursorAnimation(),this._currentCursorOpacity=1;var n=t.slice(t.lastIndexOf("\n")+1),r=(t.match(/\n?(.*)\n.*$/)||{})[1]||"",i;n.length>r.length?i=n.length+1:i=r.length+1,e.metaKey&&(i=this.selectionStart),e.shiftKey?this.moveCursorUpWithShift(i):this.moveCursorUpWithoutShift(i),this.initDelayedCursor()},moveCursorUpWithShift:function(e){this.selectionStart===this.selectionEnd?this.selectionStart-=e:this._selectionDirection==="right"?this.selectionEnd=this.selectionStart:this.selectionStart-=e,this.selectionStart<0&&(this.selectionStart=0),this._selectionDirection="left"},moveCursorUpWithoutShift:function(e){this.selectionStart===this.selectionEnd&&(this.selectionStart-=e),this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd=this.selectionStart,this._selectionDirection="left"},moveCursorLeft:function(e){if(this.selectionStart===0&&this.selectionEnd===0)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorLeftWithShift(e):this.moveCursorLeftWithoutShift(e),this.initDelayedCursor()},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n--;while(/\S/.test(this.text.charAt(n))&&n>-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},getNumNewLinesInSelectedText:function(){var e=this.text.slice(this.selectionStart,this.selectionEnd),t=0;for(var n=0,r=e.split(""),i=r.length;n0&&nr&&o>n){var g=n-s,y=o-n;return y>g?f=a+l:f=a+l+1,f>this.text.length&&(f=this.text.length),f}a++}}if(typeof f=="undefined")return this.text.length},enterEditing:function(){if(this.isEditing||!this.editable)return;return this.isEditing=!0,this.hiddenTextarea&&(this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.focus()),this._saveProps(),this.hoverCursor="text",this.canvas.defaultCursor="text",this.canvas.moveCursor="text",this.hasControls=!1,this.borderColor=this.editingBorderColor,this.selectable=!1,this.lockMovementX=!0,this.lockMovementY=!0,this._tick(),this.canvas.renderAll(),this},_saveProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas.defaultCursor,moveCursor:this.canvas.moveCursor}},_restoreProps:function(){if(!this._savedProps)return;this.hoverCursor=this._savedProps.overCursor,this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY},exitEditing:function(){return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.hiddenTextarea&&this.hiddenTextarea.blur(),this.abortCursorAnimation(),this._restoreProps(),this._currentCursorOpacity=0,this},removeChars:function(e){if(this.selectionStart===this.selectionEnd){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}else this._removeCharsFromTo(this.selectionStart,this.selectionEnd);this.selectionEnd=this.selectionStart;var i=this.text.split(this._reNewline);for(var s in this.styles)i[s]||delete this.styles[s];this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsFromTo:function(e,t){var n=t;while(n!==e)n--,this.removeStyleObject(!1,n);this.text=this.text.slice(0,e)+this.text.slice(t)},insertChar:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObject(e,t):this.selectionEnd-this.selectionStart>1,this.selectionStart++,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n){var r=this.styles[t],i=e(r);n===0&&(n=1);for(var s in i){var o=parseInt(s,10);o>=n&&(r[o+1]=i[o])}this.styles[t][n]=e(r[n-1])},insertStyleObject:function(e,t){if(this.isEmptyStyles())return;var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex;this.styles[r]||(this.styles[r]={}),e==="\n"?this.insertNewlineStyleObject(r,i,t):this.insertCharStyleObject(r,i)},shiftLineStyles:function(t,n){var r=e(this.styles);for(var i in this.styles){var s=parseInt(i,10);s>t&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChar("\n")}}}(),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,fabric.ITextBehavior,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,skipFillStrokeCheck:!0,_reNewline:/\r?\n/,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,initialize:function(e,t){this.styles=t.styles||{},this.callSuper("initialize",e,t),this.initBehavior()},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(){var e=this.get2DCursorLocation();return this.styles[e.lineIndex]?this.styles[e.lineIndex][e.charIndex]||{}:{}},setSelectionStyles:function(e){if(this.selectionStart===this.selectionEnd)this._extendStyles(this.selectionStart,e);else for(var t=this.selectionStart;t-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0),o.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,s/this._fontSizeFraction),o.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction)},_renderCharDecorationAtOffset:function(e,t,n,r,i){e.fillRect(t,n-i,r,1)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.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(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=A(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;if(u()){e.onComplete&&e.onComplete();return}o(a(l,f,c,r));if(s>i){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this.overlayImage&&t.drawImage(this.overlayImage,this.overlayImageLeft,this.overlayImageTop),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGBackgroundColor:function(e){this.backgroundColor&&this.backgroundColor.source&&e.push('")},_setSVGBackgroundImage:function(e){this.backgroundImage&&e.push('')},_setSVGOverlayImage:function(e){this.overlayImage&&e.push('')},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;r0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;an.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){if(!this.selection)return;var t=this._collectObjects();t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var e=[],t,n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a=new fabric.Point(s(n,i),s(r,u)),f=new fabric.Point(o(n,i),o(r,u)),l=n===i&&r===u;for(var c=this._objects.length;c--;){t=this._objects[c];if(!t||!t.selectable||!t.visible)continue;if(t.intersectsWithRect(a,f)||t.isContainedWithinRect(a,f)||t.containsPoint(a)||t.containsPoint(f)){t.set("active",!0),e.push(t);if(l)break}}return e},findTarget:function(e,t){if(this.skipTargetFind)return;var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this._objects[o].evented&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center"),i.add(this);var o=i.toDataURL(e);return this.set(s).setCoords(),i.dispose(),i=null,o},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect +(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject +(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})})},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(/\r?\n/);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(/\r?\n/),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._setSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_setSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){var e=fabric.util.object.clone;fabric.ITextBehavior={initBehavior:function(){this.initKeyHandlers(),this.initCursorSelectionHandlers(),this.initDblClickSimulation(),this.initHiddenTextarea()},initKeyHandlers:function(){fabric.util.addListener(document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){if(!/(iPad|iPhone|iPod)/g.test(navigator.userAgent))return;this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},initDblClickSimulation:function(){var e=+(new Date),t;this.on("mousedown",function(n){t=+(new Date);if(t-e<500){this.fire("dblclick",n);var r=n.e;r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()}e=t})},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&this.setCursorByClick(e.e)})},initMousemoveHandler:function(){this.on("mousemove",function(){this.__isMousedown&&this.isEditing&&console.log("mousemove: need to select text")})},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;var t=this.canvas.getPointer(e.e),n=this.__mousedownX!==t.x||this.__mousedownY!==t.y;if(n)return;this.selected&&this.enterEditing()})},initSelectedHandler:function(){this.on("selected",function(){var e=this;setTimeout(function(){e.selected=!0},100),this._hasClearSelectionListener||(this.canvas.on("selection:cleared",function(t){if(t.e&&e.canvas.findTarget(t.e))return;e.exitEditing()}),this._hasClearSelectionListener=!0)})},_tick:function(){var e=this;if(this._abortCursorAnimation)return;this.animate("_currentCursorOpacity",1,{duration:this.cursorDuration,onComplete:function(){e._onTickComplete()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},_onTickComplete:function(){if(this._abortCursorAnimation)return;var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout(function(){e.animate("_currentCursorOpacity",0,{duration:this.cursorDuration/2,onComplete:function(){e._tick()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},100)},initDelayedCursor:function(){var e=this;this._cursorTimeout2&&clearTimeout(this._cursorTimeout2),this._cursorTimeout2=setTimeout(function(){e._abortCursorAnimation=!1,e._tick()},this.cursorDelay)},abortCursorAnimation:function(){this._abortCursorAnimation=!0,clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,this.canvas.renderAll();var e=this;setTimeout(function(){e._abortCursorAnimation=!1},10)},onKeyDown:function(e){if(!this.isEditing||e.ctrlKey)return;if(e.keyCode===39)this.moveCursorRight(e);else if(e.keyCode===37)this.moveCursorLeft(e);else if(e.keyCode===38)this.moveCursorUp(e);else if(e.keyCode===40)this.moveCursorDown(e);else if(e.keyCode===8)this.removeChars(e);else if(e.keyCode===46)this.moveCursorRight(e),this.removeChars(e);else{if(e.keyCode!==13)return;this.insertNewline()}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13||e.keyCode===37||e.keyCode===38||e.keyCode===39||e.keyCode===40)return;this.insertChar(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getSelectionStartOffset:function(){var e=this.text.slice(0,this.selectionStart),t=this.text.slice(this.selectionStart),n=e.slice(e.lastIndexOf("\n")+1),r=t.match(/(.*)\n?/)[1],i=(t.match(/.*\n(.*)\n?/)||{})[1]||"";return n.length>i.length?(i+r).length+1:(n+r).length+1},moveCursorDown:function(e){this.abortCursorAnimation(),this._currentCursorOpacity=1;var t=this.getSelectionStartOffset();e.metaKey&&(t=this.text.length-this.selectionStart),e.shiftKey?this.moveCursorDownWithShift(t):this.moveCursorDownWithoutShift(t),this.initDelayedCursor()},moveCursorDownWithoutShift:function(e){this._selectionDirection="right",this.selectionStart+=e,this.selectionStart>this.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?(this.selectionStart=this.selectionEnd,this._selectionDirection="right"):(this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorUp:function(e){var t=this.text.slice(0,this.selectionStart);this.abortCursorAnimation(),this._currentCursorOpacity=1;var n=t.slice(t.lastIndexOf("\n")+1),r=(t.match(/\n?(.*)\n.*$/)||{})[1]||"",i;n.length>r.length?i=n.length+1:i=r.length+1,e.metaKey&&(i=this.selectionStart),e.shiftKey?this.moveCursorUpWithShift(i):this.moveCursorUpWithoutShift(i),this.initDelayedCursor()},moveCursorUpWithShift:function(e){this.selectionStart===this.selectionEnd?this.selectionStart-=e:this._selectionDirection==="right"?this.selectionEnd=this.selectionStart:this.selectionStart-=e,this.selectionStart<0&&(this.selectionStart=0),this._selectionDirection="left"},moveCursorUpWithoutShift:function(e){this.selectionStart===this.selectionEnd&&(this.selectionStart-=e),this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd=this.selectionStart,this._selectionDirection="left"},moveCursorLeft:function(e){if(this.selectionStart===0&&this.selectionEnd===0)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorLeftWithShift(e):this.moveCursorLeftWithoutShift(e),this.initDelayedCursor()},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n--;while(/\S/.test(this.text.charAt(n))&&n>-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},getNumNewLinesInSelectedText:function(){var e=this.text.slice(this.selectionStart,this.selectionEnd),t=0;for(var n=0,r=e.split(""),i=r.length;n0&&nr&&o>n){var g=n-s,y=o-n;return y>g?f=a+l:f=a+l+1,f>this.text.length&&(f=this.text.length),f}a++}}if(typeof f=="undefined")return this.text.length},enterEditing:function(){if(this.isEditing||!this.editable)return;return this.isEditing=!0,this.hiddenTextarea&&(this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.focus()),this._saveProps(),this.hoverCursor="text",this.canvas.defaultCursor="text",this.canvas.moveCursor="text",this.hasControls=!1,this.borderColor=this.editingBorderColor,this.selectable=!1,this.lockMovementX=!0,this.lockMovementY=!0,this._tick(),this.canvas.renderAll(),this},_saveProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas.defaultCursor,moveCursor:this.canvas.moveCursor}},_restoreProps:function(){if(!this._savedProps)return;this.hoverCursor=this._savedProps.overCursor,this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY},exitEditing:function(){return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.hiddenTextarea&&this.hiddenTextarea.blur(),this.abortCursorAnimation(),this._restoreProps(),this._currentCursorOpacity=0,this},removeChars:function(e){if(this.selectionStart===this.selectionEnd){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}else this._removeCharsFromTo(this.selectionStart,this.selectionEnd);this.selectionEnd=this.selectionStart;var i=this.text.split(this._reNewline);for(var s in this.styles)i[s]||delete this.styles[s];this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsFromTo:function(e,t){var n=t;while(n!==e)n--,this.removeStyleObject(!1,n);this.text=this.text.slice(0,e)+this.text.slice(t)},insertChar:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObject(e,t):this.selectionEnd-this.selectionStart>1,this.selectionStart++,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n){var r=this.styles[t],i=e(r);n===0&&(n=1);for(var s in i){var o=parseInt(s,10);o>=n&&(r[o+1]=i[o])}this.styles[t][n]=e(r[n-1])},insertStyleObject:function(e,t){if(this.isEmptyStyles())return;var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex;this.styles[r]||(this.styles[r]={}),e==="\n"?this.insertNewlineStyleObject(r,i,t):this.insertCharStyleObject(r,i)},shiftLineStyles:function(t,n){var r=e(this.styles);for(var i in this.styles){var s=parseInt(i,10);s>t&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChar("\n")}}}(),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,fabric.ITextBehavior,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,skipFillStrokeCheck:!0,_reNewline:/\r?\n/,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,initialize:function(e,t){this.styles=t.styles||{},this.callSuper("initialize",e,t),this.initBehavior()},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(){var e=this.get2DCursorLocation();return this.styles[e.lineIndex]?this.styles[e.lineIndex][e.charIndex]||{}:{}},setSelectionStyles:function(e){if(this.selectionStart===this.selectionEnd)this._extendStyles(this.selectionStart,e);else for(var t=this.selectionStart;t-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0),o.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,s/this._fontSizeFraction),o.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction)},_renderCharDecorationAtOffset:function(e,t,n,r,i){e.fillRect(t,n-i,r,1)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r{3>AZ}?+<*G|^-g#_ zi_3ZFpNDx-W+5a-NwkQ<%rDR5XmRsf{$D$te!sK3^D;Qgq8XMyN>?{obbe9nf9wwi z-*xu~!^dpreHJA}l|7Mf`0zmd4TJgNL7)GerSlsIh#$&eIkk3c&Glwk7!=_zlxRCDca)!` z!tRM_uIv8;~$@Xc=7!6)02}Aub%yM^5WQ^SVa~j`6A7h7PA&n9E+cBx(a4daU+8nKq-7z zv3ZfDUqbcKod@|vkYz!Y){UX@S+FuAeoLdIidjZQn8gwNRB`n-x>wP>xUi-p1lFT+ zktY74OlAP!iS69V&z;N;f1O**QuxJ1gzz{E{g8e}6mcHktS)kh;vbA6uONKIKhJ_Z zJdXYd{Z)|V;j5&uiwR6(ROH=Nn03RYHD$wr!$j@ND8BI_2lS`t@}M>C73u5rD$I_c zE?Z>13UPm`tUL&HQDR=)#Gy)~kTqSetprvifW@Fpmr;22EWOr;e~kl$a=o*&^tzX? z;;69ur@7mASmNIT-uURLQG}BL?>Iz%(xZnWI=D7+@2hAd_hX9QjIt1rQ?irvXj%NE zhvmEQ1C6qzcfm(X(VuwqCx|Z6;{veKxjqJ7(}addrRCQrF>%-c|Kzn!dk8(YwPQIO zmTcq%2l)*5eYaXSe-TwJ*F0?I5ph)}(e4S7e9I&eDI6+1iwUIM$y9FjU2g*WgL$(|CSfJ({*%D~ zVlp4YBfvv89Z5TYA0yb@)m~i4=6B2WdT~%XrN5wH0Kvn+2_TsER%L!+FPx3&UUpDY z_nf3UQd14_2lM24)8z-Z^=@Gt{hdYFyFgTf0B;okv996$sG3TNDfp>7-& zO;Xre(@g~zxsH$uz2cp)H-jA>L=5Q1~5VMkgV4L)c_?dam4bBB8qS}CX#H#e?|z4d03o8%P=jqnQ?BhrBw_# z)GpXL!XISqr7KL$*)HG%LJAzXiz1j^RPY&M=`>lUWgfz?fQ-?gU~C64Jr*UVKyg^m zYo}OSaW2MP9a92W$Ds!}{{mqRb~FD7&VcluAhw)`Z-ZrMp5D{Fy&KV0oJduZU$9VX zKGxS;Hruw)y^A1!ca^-)QXnUa8%Tns<5S)XR;w6d02wpb(S!zapd~R?oBtUfX@TY7 ze}qNQz~cfs;EV)__I@u@zzetrFkGAqqAXr=`ou9u2q;XU+}s}k!p?een4A|Eqx>Kp zxo!@~!p|o86fw+;Nu=;TesgS4wLyIWa#@S|h0{8YLdZD6YCIR(-mFu@P=_Fd^Jh0F z!8xvvtuKKa6(NFwv$q%b$|S#t7O*a`e?mYh zeq|)mu?Z>F348(5xbkB;eHRBSn7#{V;cMf8*_e%iv;)NQG>*;_JDyxjVR|mu%JIZE zO%;RU-63>+Z!f?}05o)T0Sqvl)N+=CYL+jn{Vd9>Ucs49iM>UX%u$(34*BF$4wkLoRrCo<^iOxfasI6n=yiv z2tcj`j8nD60jBKDgCda3`468jm+?`MTn71@APLSJ+@T%#fjZ0kr&<4;e_5xA#XAzf z(G1J4I)g35{v5gxRPD#(vWIj^QXnfT>*5O;v(oWu$xA@7Jhg=Lk#E%|npYLI?+!ea z!`}0EZ+s{a%x}B~541Z(3Or7Oc{m3O6p5)gEJC2rfE5A)G}9Y}v4)a3f}#TjS;Yu3 zD&Hc`2>v;v3YpioX8oXpf62Wsi*3OWj$nE*j=Bm&3m%TO)2&%<1#6jKq*o%p!*sM$y%8neVKgb$(}e|561eoBnPF|53o zaC``~IW`N`AtZ&pqvK=$7U?U`q{TRk9>k@P9K3|KIO&B6C_wNz?~CYQNrUK5g6GuDs`r}> zlL*agX#(j^pm{mxe+pAo5g=Y{>-jm21UoYE;Q;E`_QZNLb?nJ$etJCZj3>XIo=%<9 z{q^KmHgz4y0VpaPT>%COZKQ0%>u`poPQjNan>>b@%O=CAIz$R!%C=*PCN{Vi1F*<{ zclKL2gC?`IND@%OS2ZU{p<$ht#}a52VVA#dP$I7@-% zLpga38xV1>ST}<{PyAc#e1>vRj}AKILaGqLO4uzfva~$EuqbY$fFko@BD52BZ%+^D zRL)3>g*52Sk>*Y408D_Mua0_cDylKT%mdyGuiq`~f85#iX#%jAFLKY)IL$2NA7Eo` zP$uM@!TNm})kmKBdM7J3fKTG_MF7aTh9>Zct`pHDrPA;RGS<-c0Crg4{u?0E#i0BB z)LkQ5ow}!XuQNV%M95j&-SOmf-kZ7t>pE-JkIofl$rWbF02xEm%o^JQ$s`VM4cda! z0B{Y^f4ekz9|K-8nONy!@ew8Ci^V7SIg888noc6uolYUoe#J_w3K2_D9j*AW;voys zQYC`v|C*hj1*bNS&tZr|`M8`@r_VGnG(la+)Ahp%⩔RvMo1pEyvpMPT`WA$m@U_ zSSzu|Eo|yAn*pZrtRnph1BiAk79$3d@d_PTf18O0VXAh^!BbBjMAj6~S+>L-W(czd zM)F~$&q=_MvK#u%*%?B@6|T(-`~ycbr`A91)|o3X$BXBlQU8U<4wf;8h*y2VB#-L}K2zVne6McUwSP;A9xWc5T|kLh5oWn( zSqiEVQ(d)D9^zmm42vMY$lwI4UwIV%8371vh59w7z_1M=VnWcHK@d<^B5sjJN~n^f zG!K6$TjVhOMy3GqhG8aJJqIv+C3{Jlf7Ft` z)RDf_5iRvCmu2DN%7Nuo?c)lUW<9z0;fO=t3K0CIox?P3HVOtQtDs5RC9nm}ZK3YF zi!HNQn6p@HoyEeOMJ^1%-tcA1{VVuJ7|8t>@CB&#oe)bl_Y`!EisptmTZ86f0m_gG z2(}SjuGY2z9QGttuyhfvcHyCse{{I_a8Up;LnvX+ zV3by;FDzflYYO}n4o-0pz?tfd@~a5hrWA?&TRdZ|OUsKU<Z^7L3AyBC{g>PJ|Z9 zM3iA2QEJzTBdFb|8tWBO91bVI5BDUAZ(G2Uz;3}?`zRqY_AE|kUr-$E?}jZB61wy% z-k?&0Z#@fUUydlkTCe+ye=Jyr0JCe-O`yB5Anr$8D%YYl!P&C%4333Ya|bE5`clufU;CQr$zA`T#o)q6h4)I~*{( zTPS4?smbAVUSnpUFyZ{?7h%;khF{47Y`vj3D1JmWXjG#s;d zf4^Ble;=x-e_g|!G_TCbRt@#A8CKG02onuvDbyO zaN)~E7zIL$C+vJ=fmDELpRtb*nWOGoRywS0))o($vRY+f7qUZ-VcJ@1<&(Ln&7^16 zfCV$D7Qz4y&1)3AO5^Ha6P#Wkzl+{7%5%UUKVUSGf6TFYF*5Vtmdmp+v*X?s=D%`W z$VcOO_E3Os$^1~Do*_`Tt&j=OdTleDsL=IiK$rO`NplQ{(15^SBiFR(S?$3-3N!hH~j@k*ee=7BOC_OP{xzk2x#Wrf`nU9C_z$S#la5?z?m6c6+9Cg~86C4_E%V z#9(I!SAfCJIFt9nKcAdU*|Fa;EG{E{f6+t9Hmt(+J$XLC@Nb|pe{#&Or+ht5G#=3q z{Mw6g*#mmoLm9PX@qrM23w=G}3-|>-U;9J$6z9tv%SmG_gpJQCZ2a1F+1tY}0HI&} zw+?&CkN&sRfQjJV=?Ly@3xa!BA-K1$e!enl5mx;KJ?bY>)*RV9ERh8o8%JQ2?vd`H<&aak!^s?;HrgejH;5V;&0t~cj;nE#Cohq9~f8ID9`!yuC zpfx@hzqepBG5()AuiZadl4Fu`zHUh=(jtgot4{fUuyAbuC|df!epEHn$Q%#Sge>4S zP8jA8;b&=4q)Y#&?vQ7t>H5WQBSRAmuGi1;kT~KY+u8?Sn|*{;mtfH{0eIXz<*yFp zd;xuZCzVVaULuR1Te@SMe--S^zcJ9s&xC{#6$66_ZPC{dzNRCc0GkDIXn$lM%>%W& z><;@MI|7LN`>xHKCsFgH5LXpbMEKA+PUw0KM{sx5-L}I0kN4GblCH24lWb^`X2nG` z`vO3bTT^C;75*Wn2$tr=xWBd|ARgfKRcfhtK8Uv&)m;3i?eNp|f8ht_s7`a?+zA=! zFErr}`vHzcVpt4nMv8NOFo~S4-=9&1LUL7gk^JQ{ZkNZ`)Wadvx5r+%T!+`|ubr=? z5Vdf|)-YUJUSYlsz_KtS{nfRWRUSv$xnD?DOsM@3Mk0Z7R>E<)tb2Rwy%{VcKk=J-b6PgM{9} zy7VyJ5jqn0jRf*~fJ#;<0~fkLz$07)mrFI34~1wIy7B-y`Ym?(^ptm+RRKVTx3c42qu)w+ z&85}>00>}!Aoq$4=((nNx!I*go)LADOWzU5v@*B}g$BJuvlZ2UbWrZMV zM+?04^i!lG9U(3WH8w4x`yd$L{H5U1P?fq7N!Q{PXF+^jVwb?3R<96{!;_>^STTCY z=~WfJ7JMFXdB)2$%+tmVvSv}g&LIBtpC+G_LB}o}f5{uNIj7ZEehN%t+Mv}}52V#s z+h}z{5Gx|o3uxhCwauH9bp`%ZoklOu3HRl7D*p0;RQ%-@D*p1%Q1PfoZ}#fa*#ztL z>H(FsB0&E9Yw5293vlkw#n(*>`R@SHRT0%U4v-6H{Tuc|uw}qcbBca+E{V}IcD|js zKkkN#f4FDochL1OAblyTtfE8Nt%~Ts-bxeY4m*+HEd;8-vTozkVKeLe`4NytoG~X{ z|CGIBZ~R;nZz#I;Gvs;>|K9s=B_Z|s;5`shpPi@b@%7~Goa8FestkDb>+IU zSL}D+$}IP#YbANIuxL0i6xH|J`#MjDBSI!?DFr{u@++_yc~1K+bFMN7dOsN!s}%`}v_00N@As z<>y|S0EJ<(pM~P&FZ>t6oZaw$eu#@BdNN{RfwdVWLpI{6&7P*B|%xK31V2Or^eVKRcT*ZVmdG>pqvQ){BQh8d~14li7=&*<1I)JoEJ+k|avvE*0(4(Hf3TvB=lQCS%Ypi!D;KrW(I`N)hXpgy%+OPGa5K8WKFe1Y==dQs_k$@+z! zmzV-iOb%a-z~Q=32}xsBVwAs(l8DmBVnPDPv+$s>c!9GtjYA-RMm$j*5@cajfaetB z^~l12IC4ZyFiWn_`4m>7co*_CUWv#h5wd~6K~SIYT6dnJos_ACj}`-YM&fycmvG5J zK1y7F=#=;}7#Avm=|PJi)VLg~Un<>bAE0(JwLIt-e4Hkhi#;rbtqdk20D0qA>ROQ1 znpjl^#OqUwK^`D~O^IcOwNVSr*G^0a_81p#Tc4{k*m+I;5g!6jB#UTF8H|ZVdwV4p zp7UkR9M`5ncstNV5Be1Wd4|;S4z`rhvt6e#)#kHm4pafl9BB2=HnwegZ#QCkZ||R8 z)MvV_P4A|f-i?@}=O{SR;RQF%uDMHE^RzwlQjlN0-+H%y0MtL0uQ7f)IeH23^C=86 z8~W3=+=Z>By#b=-0uqKTY1j!H8LE?7!jCDin3Uqxs{;ZE@L+4&F(ChB&eQ&{c;mvv zUTF-KU$->lpYeVCpt&)pWW!I3*|p!FoR)}A@ozAPzuyi9UHbV3{{DTiI4y^NKl_IM zJ~=J-2ZLFEmwp!bcmF#I>{H;|0R_H=z#?4W-^Bu>;Ab)IpI4^?HhOw$onB*8*Tco> z_1_op@%`d|p%aMQ1=hk7$G^2s&n!Gx&HzUL4}GB#CV*o6L>o<~3;JB(XGWhHshoR{ zU<{8S@{}UsXTxB3OMPoxh#ueh(c-2C(q^KeQ_X~b{%M97*0(ItTlgZiab9_XEH_8{ zB(}`}{bUEpC`0ta3(!L?VybtvLKP|!)h4*xS3WnMQW(1Es>4QX{Rk`+icmcgAcsf? z`hRNy#RC9`#LX4GlYEh7&}Yk>1PkBN>2pVd*0y=01Wl70XepTZ%LvFVO$K}w#9wNs zyN?Ec4(JL_^*++DI^l6{a_2$VHG-ugoK8()h-JI_!@LO5f9B0Ye2Kji=`Srrf2DB` zWHX5a|BXaz@}(?(J8X7s5Lpo9B56!Sc@h>NiK`^DX4kBV0sbQGL`-M@*U9OWdAFO> z9AE2J?Q2izPwlZc!F|v_TO?UAU6+$V_xqrKyLj4tIlcX6gL?1QzgtdK#G3qy`IFOZ z+OgIsja)ARfY&u*!*zFjI(MPY)86U4*s7GxYkd%N(I{Yx7~SlE zQ|lJ>drQlhRByUI%v#%3k=DkY*2|qxUC`{(q4xQ6sM`w2fohkM`C=^kQIjzr6Mr|T zxQIe~|6VVFuVCBaku4*O6Sb%JK3eCfn>jAnFUb;r+ca_$WPj??OTAgf_dto{7qWv04rT$Vdrwix@QcNyn{}MK=_l|dB&P59k?O+H;Pnx|5W*5AYR%-;! zZe|tOiihIeuG(r0As9AWZGTTOV8NDcHZmI30|Y?s{Kaxr7{)5L<=1e^hUJD0l6wnn zm^3%|pss0)bJ!hjgh8F_=z$&0!g&d+*Zz9k_4&guUf);`*p4^AwHn|{aKlDj4N*zO z1KG`@0YjkyLYgcuGI~Rz(?y)ZPUe>bL4tOIosL~}Ltup+H#FYQRe!_iXy~&vtgUDX zfw?oOi9AA!aDWoI*fz}}G=lDyX9Yf$e(`$=WT4cpKvT8Xov0i3ZaRS7D3rMvio}R* zB*z4Hdyf~rHrgd~$cm7xs$nOusm&pj8bc(8Uq;s@)*da7sX+ZDN;+PiuE zb=kc(n}9Q5Pu#Dg_M;=>%VaZ+;0| zpr$KBLl`0xeuPLp`&{@@g>|A&QLwf}r1lP$g<0LPTtML&T7TGv7Wh;4-N8K#Kz={u zk~FS1pEJrl9CPz=u6kiJDU(O#hXM1~yDKLcZ zx=`ff@iemr$A8F)84atFm!?QUsT~PxIm2=0>$?y3^AA~C65u#q=9AH7DSoK&4fyoD zI8MuK#`WiseXbf_YOt5=?QNGV^F?eGEI)w$LJAv?+X)89>L>nc6L1dwkoNo3!|c49 zv4x*@BUH1ugHGTsIt#QwnAi)HvR){`DdXDky92~;Tz_RQ)YJ{pFaboU7ZLbCsRv`E z=Sm38199xehnbVPemPmW?$>Bi@GvIPLktBb^RaxHt)5z=-8`raTArionNq(~{*Wxk>lMnkZ5^s zX%lf(QGaQglv%T-fvRCpUdVo;urj8J6t1K=>zTNaKii7(GllY5?pv@EEH?sNVx801 zsFmeE_U=w@- zIGmytfytyGB!jsNp1Z)@1?Dcy+>!nafuDkpM>(K^+X&}IOH9!!10<%HD9tozZ{kJ) zBnFUJx;`GClVIA(;18_V2vf4dJ;hov6B&WjQgeKNrc9;EiCg*aG%k|OCKt$<_Y7+l zB16blIzT;@9o7}H1 z;fxX<3eIvmimFh?3DFCG*0IZO=yZBd+_+;0-2y)W!_QQp8>=jUdoMZ{eLLwSj=Sot z`gYcVn&yYd-pxfne$NVf4$NT3pR)}9@Rlz9SwCS*KZd{OemCxCsD%Z8&-}|y>3=Re z0qSSN*A0BVfVdFi3U&-}A;cBz+P7bH&wzx-zpj1Uy@GH2%TD}Z|GL}Te=<5bKm%_l z{(!f6r1j{;AzSqksv-H^Bc9=@-+R)r&)gSI_efOsj-syIW5+$>ZLv3E+KM3Ax39YI z*je|f!#?Y=#}NAhW1styj!L4?!4C&(9}vj z@5|-JHR=rpKu|mEM}1>I12BDd@P716!sl=P8~0h~dH+2=XL0Rk!17>d^yB0iUCZv~GpfBMnxMB&-I0*@6{$QgK%Z6?DED(cH-vBe zrK{DKp-SL+SF0ma3@MJ$p9GybP)V08hTj?d2AvxSpF#Kr!eKea`dwrGJ@BgebApeqf{s z4%uI@8r$-LqzA8{Kx8D*#f~I0{J36>xE+6HwjSnbd`TAR=?Q>;VI(7uM+Be0GUCG| zjxIwXD$4<{8ciW{a{TiT(sYP_X(X@GRT+~TqvE0><@}{Nr&)0IJjgH5x@!{p=d8&Q zb1GL_%(`jG!Fztzl7I4aHVgAS&CtY^kqRV}pt=1QM#{2`iwMq7rL_v+1c}h`s53aXcBzMU`mmvqi#T3V-HEFvd*2U9w1rez9r3 z5_&+v1EXA|v9%}<2=!|cQAEw>NY0WpMS-T?#^`JVcy$kdNhQFkB(sSvQh~1|#UBwA zS0VL`dM<5xxJ18>e28Be)nkSH5!j0@DF(+8aU~cS?PVIxcLwXV2$D*3b-9Xm@krhy zp7IE31qZ7{0e{5d;o$(MAkn6;I~3CfG!;QT$(;B!t+iYrESf%8}w`(YxJ2OYib@8Mbr| zqyHQFc7I>j2C{3d5EjKnn6&{IC2Uz+met6ydQT-)7HO-?#{=NcRF9Dkr@rp(347ex z-RsP+Y+Aa@6AV12-Rf06upF2N6nj^>O7@C`@D^Ym7qZZuKK=h=0q+}I(ip}KAY zhff=F+;DupD^WsnP}Db}tqxfdk!OvCR0>HOhkrHbX8$%yF4He~+YA)6m!UU2FX6Yz z+ch%`{e{9otp#q0wCPF)-_WX)(nc*9XQTIm3v~Tk?mol|*(^>I=+0eTX!_K!`(4-W zk;YKF_0n-+O6Sm0ucPF^8%0gmPX|-CkBU)Mf{Oo&5^6xjZ^Zmt zc_oGm8m#C=`X2~nq#+u9T*gfxyMrcSg)iw^Es3Z>W-3{YTJoI%odWZ)C8a8^#AYPM z%A2(7&|#?rapg)QZME?%)CaL9*dsYGhJQ1hc4}*?51gPTiS| zHcF1fRFI`w68TbNsZeNZ*==|;rn~(!6$wzKtH??;E{qmZ!;Bt2R`qKZj++Q`oaj=+ zmdQpp3rcxL+hm5@yHaYk;7vnBV5V2A&51BeP2LEaYYP}wustbPLeiB|6F-#>Gk+Xb zYD4uC3Z79Qq}##->1}*-#>l4{p;*FxAvDN`owy zGXYTFo&cwf-Wh!%{nAW}dhQABWy zwoubiCEve@~cl~u&3c`X2 zlWjezsh>Ev#_hC`Sy^8x$bbJUUUAB8oo6#4ej@=DtpM7+uj1*=jV3KNTyL${w>i1q zdQBE$84sMKEA(d+HHy@ImLulpdLaWAh#UNb_z=x+&2Hc%z8=L;bE{UhGKnH3c%ljJ zS0-VWGT2BO5DS#b@|T6^v!$)R93ua0wbJf}HMYgD;Pmwym18QP9e*`(>vd#=2JGKT zm4U1tMS1`#wNn?pPZ?#(DoSJ%$p7}*LnTNzWjEd>ev}&UDE$#dZzF8%(qU50E`Xar zaNys>=!#D`-p6_XAiHbVBaCn|bGlnd{6K5=YKLmZ`iM%9h+7YwbMO-Q*P0 zjea_Fueqe4wAnbqd{ya(ZRYHa4Q16m0$R-CHy>s!F#BQM=iNh#vfx1-shsvgMf0!< zwYI%IH`<@xFuVj}Gj=g5$M&r84s5$O;SIZJ$=xz8RlxCrT7MG>%lQhXKKB)Dr>F|O z;HoG1!(WfX2RT-^#TPy#5Gxl!5mW=`36ex*ExwJB6gJPW`WQ6L1kwh|$x;lQ8i1_e zFT%T~odHNl#L9yvJt#?CBbN!#DF)jw?}<|s5LQOyg|-f|b9udUtg3_yr%``yc1M3l zF%*DF!XNp(V}Cam9lsSHD7zF&trOnzbd=+X8ddX`qe_=Z^iz6QwlOl?H*+I8siUc? zSGt1{!I3$Qd1C@`%rsZIR3T2uqhw7&G@nZ#Yuwx+7^=hz8uGl2K33=TERJ9`KAMNM zh{QAZ@&TnkwUz#a_T7~V8KKW(?yZ9?9kuof&kpi9ihmx>L?bNu9hNmRc}AGa^az=5zg(8=nqkLLhb3O?q#TEMNW8LaD8ip&d93= z3YM_c!Py=nHKh)cNWlkp_UU|l+8g6@y*{cQ0ZUN{>IEaVuro4^A?u^M)LR{?m_(!u zDrH;iHGc)5XQZTUjioXv?=nUD#ua3h*R!fTmY0nZ&emi~i6fMU=G_W|^XSr|TPOM8 zmCu&6YNDnSrRruDA?U7hM1DVrR~G?3Pqg8Wr~|%y@?-bwsU!T@%@iTOl+bMxUIh8;;D0793zT>C{z%iMKjiKrkfRX;b;juP z@zC#m5C4%b78c?2^eczWh)!#E6`T$!L7WyuFsNE?^WM7yWSCW+__m zhh}4ByPJ_`H?NS|)QzGTZlCT3qR^>t1rFE9w_4~;QP~7T0QL9|NHa{jD3xSRwf{svVAjFq59+VL#P!rT*<%n$5!u z`3$nT>Tx&Aj7I~nA!4C`#WWMTGM|V-u78m7YzXN_0;`(MRleJC^;0}!C*^eN`pSYj zzDohpX*d9?UJ>nuA2mo&b?O0ZK0`}h(1#;BchEUT{oyd)|FmW#cQ3ob?q-DQeu8Qp zCw>InU8MO^^}i>vrLZdba}-`7>&BPw7b@g1KHiM1x4Aa*wQzoN8@*^GyyEGcu76#K z!&%zTb#rd~6z3{KJ8`mtPxT65vbFMpA9T?u@=9a=#2cSbTCtXXnI&D;pz^DMHEob; ziCpiU8$cvHW4_3FSQ#YPkf21FiGhnNdH8NZT%&=J?WATemfmY5cM4tGxiWb}IslR; zBi~IKK3u5dFJ-aK(XJDyoyxV-27j-2O%q!DNJaTIe`PJTR~+&lZoDN-x?Kk^2Dzs- z3G$nE#NA5xr3rUm2>r_%pkGTi)B+8CG{7z6Y7KjBo`VTzh8X4=caQ+yw-(~Pc9@!%f(hT*p_OD@pY%G`B2BCt0i9*h3b}uB zOKrSWBOjmiiiFF0>WWhlSDz9`EWeJ0631A=@Udwop~wr{AOLGg<8Mz3bsaE5XVwfT zmUaPc{e@kl*Ywyi}1#+rJkT+4Oq3j2ATM-^8CMl|yJ zvOrmHRwVF~r>6H>la%_4d!R_Y__h0|_v<)Qp~n-9~8tmrgCt z!AHGiSX`v@vHYm(E&TA}!~)VLf|WTE3k&P0-@KJR9Q`b)t_JUdJb&l5G@#7?29QgN zBA(WA37jaX%}3qfQfTrqENtx{#Q+-yeIeJZqR~q@E!m-))D!>*ebLg(PMa!z|L*t% zm_q*j(+LXQN+gLtgujMC*0K_UYJEQvbEU1?p|G8bx}>WTV`+^ zp}QaSV}R8F3m!P)B7d_*mO5$PyVE&0LyOiQg^r^2Mj9mVeSGu!$CH!yC^~pp$^3d5 z@BfR%dXIa9?L{$DQLMytZ7Nw%Q60_&S#AKbKu{-e>TnkUl{^6jyPOEf0H)Ast||Ya z+V8}%@?J;6cHz79jvMW)Ib=hBUUKW0>-CcXY5BPsnP|fI@F*Zj) zJqY1wY}qo{J?fdC+A;5YGp7@pr&ecs=Q+cvQ+le_xU2wN4Mw{%~< zUuzWA3SKtb#D1z~<GqYkah=IF_kDh!pky-Kg_eKs86wBsxqrO#VSXXC<6puFAH zYUn~0*nVyHZ??8y)nwNeq~0&yE50`MCSjL4w0}aHQ1Gk`rmM%L!>)v|`ea>gT_9Ob zftpe7#a$q#t(B-Ilr4LWBnf);X*`y0qvcK7u=n@D@X2>V$%Ayh3;hXCGAjChB%_Ba z+Ra92qXP)^PVccJ9)5;)33by&s+cf4=mqt4D7sLO_T1AhI#D<1D$q^2BaNCaXF>~0B3}8O`(-rDCURLTx^-c2S&(+&< z4A@Y42XZ{wf8ta2LxgkM~*Qg11x#JysQqh- z(Dk|ZRu-VpQI(s*Uu4!4RzCDztAETq{8Y=%W8Rq$C&CB0e84-Ya$HWrseZi~8>%HE zk`|)F6ASpmT`s^$zl7F$je3S$Xg&^ok?BJjLogwS#1@JU(>Y$w&w1-II( zo=#U+s|j90`}d`zeeUf_(RUc9k^;SPg6|wPZ^DkJ*`!k{{JYWKUX;HL-rBh{PQ2Wp z%4<)q0`a<-l(v+Xasa`pp(;^1=|SaiR4-EZ!stYfE`dkyFmBZlZOTDE(e4t= zOoTVrOtb8o`iY&g#6F`-ZQdu6CRa6vDF2+<2{&YDa6jgpaQ9E4&wrn7*;15NnT15h z3y0kyWzqM}sCsV6IJt+f4^hk(>MHM*zPr>~%cj!aAVXssTqEuFS_fLxPIcIg88w`u zT{$wocSl2T#J5&S57f;nA1Izr(>`y$}B$!@qCf-xK)vE&TgC{QD06eLooRI?!hM z>KaXxtClCH^V8ncbufc#_fT!hG$1Ut9GQrMpT}sfDM8Cj07Gb*sf3?zr=yHsX;fZb zGY*g<3Lo@v)S=B@1dT?X8G*`@dLe!NP#&*RUy}P;zjRniaWj>NWFM_0DrbO0FEvdG z%G+Uj094yWTv-e4w{U>0wAYH7;{&O^rkxKX{@hT4Ccc7fnv*p=Ap*v8lUO_+e^2jd zRb89wLI?e|x7ugAy*fho+*>4`=)%fBp#4)@TvGu$lFB*RVg61A4C>1IVmqe8zs46bK~vDInf@7MJvfC92~dZZYfMcrQ|&lRm6-X zmPZNKY}q($X{W%%*r{-Fn6|1Wf0QOR;>N=UXz@u)IGBwVhzetvy~R}61cOzu<6gn9 zf*pDWbg{R0p%0kuQZSyI@N|qs6velx^XV^dP>Gq2AeKsnTw-M$22%p`-h#ydESd`C z%CENpsZ>kMR$46!sAVN;;nz8Hd@qFNR_DUy5T)tzq{>)g`(?P?#tH87f5uz>`l}$R ze@;6vye`DW-3V8=@-5Ln?Fid;2Wzo|yrstr8EZU*?s zwqlAxJ1b<(4r*@R+LK>5!p`0ZHTH&6fvV98p{SayKW;%#a0Yiq@DGY7+-N`k&|R2m z`6jAcz7e(v(EyHCmq&H6f50zM31I<0&?BsJ5={NYMmr-7Fq7DL_K08|8v<}JfCpaeF)Eiy|S%ePfvT6n;}7nm?m}B>!_aPZx(u@ zsxp|VmYY%l~n}Wo;>0c#+iqIg{e+t!eKE8Q9+Rf{V zGiXp)Tpbzrvp~12k|$&^6-d$hu8p6+dxLY!5eDFW)K;<}jA|ET`3GfQt z{u(zU0XeNAeJA`kf3S3g#d8l%PR45igaK&B*K8yFdYT|?)7}yL>I#*Sb<@Wv0~wQ^ zo!#bG@EDbEfrRf#{{`^HTgEpXoS)I};BXLJxxyoBtgN~U#jb8lv!&G@lGWoz5e+E4 zTtC@{iSYaoHle4cVP=>WHJOPvS%z^?4zD!^AkqjXfTZ`hf0m{-UJ2B6qbzgK3Bgw$ z?a8Tky^-ID#WxS+#QYllt&5{#8~j5B4}(!04xe~Zw;)S8~Pi~eXCaLJ)W{xLJAcCW?p=9>?_!$(_I z?&y9h4q3V&ljOVQNPev)D;bfDwX9?T70H6y`}t9X3`oW;3*?img`Ak;-A-kxT`!f~ zT}qwia$H=zO@F%I{F5FtqC~Ix@Csk<)O_80+Vq| zj8Rv5v(w<3_yukiSZB>@_6L zs9AQ)8))}i>#kE6T1PiLtDxz0ziY-kHp(|h zW>8is_kYL8-gs5R39n0Y)gWwPQlpr!Va$U1XQt#ba4iwkznyVa&4p-h7Q_#zMK8JH zC6$MXKUaFrOD_qoTZ(S$`@_Dis-a72$a3edwYJ<9{k@>SGy1!rzcIb>TZ+7wt|ht- zUrxuO#B(3HN$4P^EM03%z5WXJt*nxQ|$zW6};`FQ{Ckx5^>Wu3pFs+z!~x;RXe{TW=1ZmKQcs2;?j;X(r$%vAnD`;gjV>jRX!w zmKXT5&4LT{12wNGtf*#rBQ;tVh-UcXpnpYWJ8>b+YoWW9drn!Dr{VpBT-=!MLz}EX zE3Oq-iFW`ARAj8GDgE=V?N}cm%G) zIF43%xX#c_5XBG$w&mxwIwNSZu(*770;bwd|OL8-KcQ zTv`Oa)KzASic;cI*JKMF*|E4-Vo{w016Uh0{zA`o=q;LU_4}Pkf(3fcuKy^%JbyH` zB=~5SVQ0XfUHG!D(d+>J0e==xW>bK&8D#Y14VRTJ8hcTHEXRG_DhV&30F=d&r6)mW zuYs%1VZ9t-^kKDLuOOTB53kS5+<#AM^y_65UOh|EZvAB=jT0|ui@%=2c?1j1^3w~8 zGyZeMUW~X^gSn7gW)9wcURBRb=ZHv#1BboP-@1#ol5PvRYk3`~IR-1b72n{~|1uO4cbxq`i;^VVxKjcm;Z~WqJ zUX6rU+@T+?F8T_#E#1xEPL%HiF+D=sQGzY`RzZ{ma#c5Wd8^sS^AcwGKQ$d9CEV%h zwHx-XMTgPpAOM7NE4bB<JPQ-hkqjX9n~M|)gOx9huNxzq1!eNppfe>|8_cs+zk+W!((qCmgb#5 zX-5RQ&0jCy62fLDZ3;>MR665Dr*P536F^QhCydjm@xEU6_uG2e-={j0?NxFA0FkVd zL6r_OBX1b)WUMH-zOSO-x}_o+sVY*|SzDe#@u6AFa(Nj#Dt|wIsvoP3QvkE!tkLut z-IRG1df}juUj?hJi>4NA)LI%xhqiGblx#Nt?dP26Gd_wfb2-Qr_nk7CKIFiAg;t_+ z?xDMJ?&*p59DjONI0elJ{Yd2Rv$sq>?>gt+5MODT^KH3(y`(f`jsA>leTZZL#ed{W zM}w4%D}RvihkpSVjoUH8Jx!Y=0%+{ox%lePcEVKPD(#GKTq9>D4mB<3!q>{nGF`15 zS%!F$U1CN!mr?c?z={X`#b|Kg$9sG60XnOP@7dno48G9}Cf`|>K3=@>H0G0EJ#vr5 z&^Y>(ll?&WVE|u&T`UIJi}C&BCkcGcnhFCT3`Z54{Q6sXKJO&QUp`W#Op-bniEcdOCywFUTiM zU1ddb1~rc^k=$5jG!Qw*_fq*6tSk27j&264xcQKgTO`XM?UD&fb@ahwqjx_we@ z^kaz5x_`}q2K9kvEd$NA4K%xVplI9+MZr866stgN`5x?MJ8-r9)^6XcP}7 z78ucpaZ`+LEUX+bdW#HEbh9PBWMp=7wtd0^OuyKc9HCo_}=Q$~`RG*|5zp15a=e5!3!U9&{0ntCmhAL z9Bn=QY@ty(hVH`P!7+Kz=?dsXG(Q&;g{WDl>6x+tni|5?{^{W zc<_YM0wIJw;gpJe>)JgD38g}^q&!vQp}VDHGFEf(WamIvJkyl&nYPwk;e~_)P-f$ z>*7LP%BI><#t|%7O51Yrii}8Lyz>$t`%}EC5ETZ0s>a}sD(T~~s@s5~ZB;WtC4Vcx zvxTeWA@{ee+P;7!pyOrJ1vULOePP>Qt2Q4no;jkLY>?1@rIP}u0Lw8({)$ zdQ7touC>9!2V7JqI z@;$+Br#B=gNu)Vp56I{tDwsegM*6_C(+fCxJgTNukDkTB?8`3~QB97}K2E6JE<{%f z*_EQLE2y4QbpsH=dOh6#JCqk*0~6;!e1*<<;30Od_cdXOK*hYT_|7d3Zhz3JsL|EX z@Y6%qa5%*tI`SdUWGY>?RWGW5B<($se$n(Xrd&lwt*tUS3HZG{csweBUM)E5p<~oZ zIqld(d}@m(DLav4LPfR>DmLo)&B6~qJPZ8(uZXe6WZ2d|o!<`Gp}3l z0sfD{FifbxcT_%(mZ7K~gUcXG(}eQ#`jg=DM%0hRQ}m82s>9?oLw`$3)ZEi27_lm| zRUC>6utXNlMQ<=Uk7594h&USH{}wC4AQs)h+*h~E=KzkjMD*XwxPQpe*hbv#yeh#fmo6=j4|RWLGxIR%T!H&gw_4#SQ& zoNgLxgv_k?G?L&f|5M8+sNuHdt5?-rKHTv9g0(PSg!;BI23VZ0fogP-a>S25{F75G z^T6b9TP47vM%Ksmtkq(m#DXozf)?FXmww1Xzg#Vm4%{l`eSiy$)7;EtGNDfrU5d;Ghw+;4xd5xxSQgmEqG&0^Ikf zR+-qO_EoM`h1$~k5{K7Lwe(!oMSIKoHw!I3nEGjt@tw`MsJt?|+P7Dr12wMGX%Eo5 zbgpL}YMF;-=6`+m4aq{P%==pAeKYen?AzuJge~{2x#jd=O2Nin8eYowSP6v{DoIVO2txoy|8dLN-PIt zTJw#RR*$n@6DvsK76*lpWWuwxgz|!bFiqlMT?k@l^2NN3FF|Owy@XLSz(z>N3$0Ik zhvw7Xx?#8Kd8jZ(uUnSIXQi5T&i=1J6>0bn=vpZWHjqk22iHh?c(@))-woIM@+;f7 z9ID3_;;Z=odLiTY?GabG;9mDSy->Td3?gsYgSS~dx}0uJ>lP!4m1u^`^pLiE)^ z-ao3Mp+Q?;6xsK`KB<_{mov*}1lVZnFU_r}OH6Q8 z*+yEDkxC>+Y0W>MeOoynG#R0qCD7Xqzq^a(vVSUJVdL}XGMc+C=SWE2$DdBYp5qS| zfE@L2uZQS_D^0U`-n$;63$Yt5=7wUf_q9Cxlt+uX!I+KK49+t>b0CKXy=>^KycyL8 zar;^vmgj7ei1Ni%wA6ayPfS8H48!1$45YPwR1A}~z^*?Aq(P2nRY07PTr1^BMjMl> z41c_m4@{}(-9R>EPJUEtOPFF1xTg@fCs9~Q;-ExhPpikKl2hl4*OXq|;?#O-k{O>V zPn$JnOpn)`L00wEtMz?Dm(@T2P`iFM?0Preb=X?tfVvy=k;6f1n-wZWK|V{}LVRp0 zp|82UGw6}-YCUH#Y7TaeW z`4j8FeEhRxu}AnG3+D3G^Usf%*qZo2$!yMg)B@x5j%kQ#I7STJh|mp%uJ=XSKBbA! z4TcUMO}#B!kh*C;Jo?wWIlI=oGP}{b0=yyxG72oN_3npZc({mEw3Yvs0fk&@+S z&ugQ3eTU-$>cJZ`c)f3?%1zdCB7dmHJ{aTr6OCo}v~6bI*W5t!m#AByOub9x6kB~+ z6A2u7Tas9DeB0KNNYE(VV&`>F7Eud9ix2uMGf|Z}D023ronJaNo1$fl%E(F0-&3pm zG&%e1RoKqzh7k1)^t>l1w4N0!U8w4E9!>v2NH<5Ya4jM5A?Rf#p98ZSkw&(ir# zRhMb8fZsy!Dsg6H8T&zXX~uE*?a)ZCuQ_|K@F7mkB?;=>^LSZp?SBD+x;vHz5ws>` zkrA0PfF|(Rz;qt+Wi+aOi8YcrM9^0WRh~~~o=+;zC#RkArYk!I+?p>LwOBGU+Hw?k znpy_OYZf9;FNXIazn1E-TORO2CIC_!yMjr5vc;Qxv1swO)Q#awh%dr9 zRZTJ)dLnFdA)_F!DSw{ZH>2CP%GyDJgB#-uaWu(*7rW1cBKYaUYdQe6FrIOhr2~yj zb;Z_lkrW2H&(-GuBX4SvpDm?w<+LeE>fUwiv7kJtrQ0pQ01bB^7!M#Lnq`UDk+KiJ3y| zCW;Rh3%~@&{E_uX))}x^5DYM$M31a8^%aOLfp#9 zn>(v&|<=Fed4{B3Olr~QNsCaQP2TT7s&7*k*? z=3Y#1BwLkpT3xV-8$%?wYCnMpXTHBR}Oq`i?3p}c=-5geVRM{zkhg7XB;_|`%?7D7R`==0{F?h0)}zoB@nGxOPM-P}WsKh$ENYm& zOPA80)=au!FclhmW9{rZ6M(gpgPYQ zc#JxNAIQ9f`D$95+_nc{pM|A66ol{yA%DE%_Hc3P>8e|;(>rbtkF?Qx`W#e>*6*}f z+sq^>Je-85aojtLk~v{ll10_lqpI=v4ur8d1J!9T4m@NbZ^h9!!!EJOB7FAOMgVn zUW;-XwZInGS_!1p>OgnWbWMY^#__Hidu_4*<>A*rMa)1uQZRXK+qAl$p|mWk6VrsOe{b9!9lP^mXIaE-8xD0n4G z7aYP}g@lPjUaGnjGBf3xgZ9z3bkW1Avo7#Z;?BJ-yXc(OQ7WJyMLVyWkAF*y3hM+F zdOL=k>$QITnd_#Xe`ZP>5^wW^+>()56zobU6~bP8yvAuAaZG(CCzrew_hY~91rgBfFr_=_8Y z{cWl%=b$rwN}0U=_l76RAnA0uBAbDwHd76>j4lMUHzMFUKgv z5e(r1zEF!OLp4%9#R1lCvD+fZ(Be|K!6G~dPtv=>S(cX07*%pcb4#T%kt3dW!p`CJ=oNj1+0fds~Vuq|c7s+JEze0P;&#Ra%ufrxN z*4!P4=C$K)Y*j5=o>d=!HI)WN%*}67j?Dpb8+Oo*y**B>e1Asjb9GG7iWj_l8bU!F zn7NGUIU_FI-o&fRz$sBOA&j8J0#H)^x3EqW#focau{hS zfu+W@_Yg@6wz{6&EP%{kGqwVjHcZ-FYYEZNvc!S4`3x42*_=*%wyjS@4Y9YV<WsA1jhNS7e>Smsnt^zKIT9HA+ys)^7VGx4t>v^&rdQV}5{wKf%Nm{vIu zslw3TXMbqmUBwHPhyFfn)EQO8QNWMw1P*O?ZXsUQz?-+7UQ9B%El09m_s@6K&F!t% zt1i@3++FilmdzL%BpMMv(_Z8H8gZEC|2Tg4c56*lw#r#c%avW7Wt2JIkaHQka)rap zw*P!RW=UROEnBM^d^?CIcMyld=0WAaT>y3K{J8K*q zZ5hb}NF%G16W?_XGzv)}@Er$4E4G848shy%7SYFsOurowW(~Q0J8IM^+EuzL(cn4S zS$}w+rK>P2qL7nMEMxqtK&Y~r5O3&NQiK7~aFQo?&_)7jae~rfy91z#xJ9m(*C*yn zCnCM-QY9$#J`028SsdC4Q+HlG<;O6<6Q>bhzd%a1CG+#BmTX*<)zic@Bs7DXj()AL z^-H~8UanSf%I7iz>XQ)J_~>AKy^MFD&3~NKI)=T0wG$?@6xE^W=|fM3)@$phlb7A^ z#AAmbnFshv2R)2hJ7aRlBfUZGD4V_qoNhx&%Y-n^Jwho{M-YQTI6>VNC1 z9&$i0ptmr zWZEMtQ~4iiDaFdVh2M-`1P< zT|x?UJ`JZx}I~jKwFd`TC^J4 zmgdnGUQg(DxAJ^U)A4R**nhe>My73U zrR}_~W+l~u0_aC13avZ5E{i!y%&#hw`ALchsMR{SDSE7EPASeT6MycPC#*B(0thrl zeZ$UB(fK5OnWag)FM#`66EepKG=;;$L0tv-FsseBuUWG+Fe5B2RJNWYVX`FhGwo4t z)*X)WLw_*pcBO@CKdfxi=E#7El`=)M`P4xwILf8yYK~c>WP9d%)Yh`R>nV0M=VmrH z8-AG=QGf59UEvWtVt)hnkU2IksA*|mrWwxnUz%<+UHO>5YYp6?d|F+XuDkC4AFJa2 z53dUD_mgys%Y+9uTs*L0^rx^&^R1>=2{lQ)rC+w$nbc{jGA9#er?kzgcg7d1}a|k`4P@3TjQsLiHmVH-6 z9$la%zz0;6Uj$#YZXaV14b*R0i6zb;EN${97J|xbU5Go%TwR1=Tr2bo#tB7PE{417 z<&E{X19^IKy?=RISwp}#XV*X{+Ky{EXeGhA-I0P&X*0o)g>sAptmx*@!WRc&o9ce` zszSo}yECMagR?k%aFObye{d1;H1P$!I>4Lx)^hCsQTOisZ5v72=>PjEB<#C3A%YYs z$8#YK>*qMhBxiHm*vVK&(d&gsNWz2y7yxv{m9?M!)PJS#-5@F1$;{c=SVZ5i)z#Hi zPu+h0&G)ZQ-jYE4@vVC2o9vyQC40v89zr4le~j)PCk=1UCh+*aO*v6O{Jnp_-x^9{ zv7t~il?pMg4%yW7L&r%4UUe?KB0>)0d9m-RK^UQxwb8(erg%n5fMJ>L3xjmSV& zWeDnKG=FSFH)X?9<-b|PD z_{=*6csFmBz}8I~R69{ztEC44g-Ck>kelElVx zCJY&9(HWuWKv)OE{lzyWw7`Ygw9>dTC=*8c%zux%&DeN)f^NE=CwUn3E9F$$%^5G( zGx6w*$PRyZG)_e@bV`^_oBb4#*f%#8!^BO^>8a2z)4eqDGB-7w62H`@TO6QT&!3+v zi!BjNmSr;bJJUo5rB&04D;%NJI3ZoWGdQsYaAkc>N5V zIi|UQbhkqut){YmLx1#bHfL8KN)^a!_kWOi>t2hlrN~#F$`qOj$A=PE=XcO@CL&e$ z93s>+UuT$JVTt~1JYW=zek-+;d+fmT{IV!{T1*WJ(Je&$FYS=A&^vNEP7c6Za$;AK z7dY}@R}R+%y>~M}^z#yZ9S)zObjFzqL&!9iLMFR{Y5lAq*^)vcHC?y$O0?7Xb$^x3 zYdYjswOM@9NG~`}?`p4iaKAgdW9n@*FOi1>P1_|up~0BpA>MU)Ia8{;dxxv}EbR@|DEWt}z{$V&3QPv-aVPm`87?-l$R zqkp7E%}xfhbD_K{OtWVf(@ajuB7be{DXGw15^bLq`o`l73*+b?R<*M6Hw zfkOd!Y@>U8PHFrWdbJU+jsoq#VAy1s$Fj9Hmlk5&T8C8&v2TgN0V$C-^FtW8LO6)`p#wy;NV1BQCJ2K4`zjolRfDeNGqJ50e{fZ{Dd2h&j|Ec z+&O4rFUb-8eYsO{8S4gz@!3>^OGPcn&#E@CFDa#BI`UYap#B;yO-*3>4IF^MZ@?E$ ztURRKA;P7t8h4H%nX%RrF4f>V!<=-GExZ53debTfhFHRlymlbrkDbc0=2|h#`==XY z)BUk>I1|E^wE3qHrhlYhdP?V{;|15d<@uNta$;yR6*yh6oeG#ToC)}Wf9?c7D#>Eg zLHQEl%chC%SlaKs{!~l=4d?Gt|v$Evl3>ZWA*c=tS%7E1A=PmfQ05iV2fp2Tm!{pC4l9U z@GkB{3L9+r%d1uS%MQ18Bk{*4IIy5zsq&qd)U6l(9W(#IgvlSTAayd5Aqbg)&kQWL z(m80JRobWP%75HsWG5n4Q-KeD%moUC7bAq}8h+pO$4uPtV+|if;q)eQsoZJ{m0Q74 zPT_$CNswHMXZubhnE$|LTEdxFwiA8KcBPNmKb=1MeGO1b#IJJnPI6ZcfS%{-GqPRi zN9bXYbWMPRhqZzTK@47p?lXDOh^1Jvmj+3$(C|tUIDch-cn>bzv2{{1S2FEUU1*^T zrMsxVw~pubSvhUxGWPZfrzL;}eu1bZ%(IK&Y+DnlWU*;GRl~Vc4^fYt*T481-&qzu z7VX$X^uCvDBX4@VLrWQs0KN}ls|(`Jd)EW1(nk`x{zm`r{bJ)mNp8c*19u@=HRqr> zu6Hn2doyX1HC#%VGS$LuhINMFbz4qdccYEd+C8_deq|Tk(5%RCVD8*ivzMi6O7l& z6Dyp{NH-AGBp(|v{(bn2&B{7eHM~2sgN{m5O`5Pm6UJ%`^hsh(#~Yu}L}f6vt0k}y zk&`s)l)Zb8Yr1~IzS<-Tax2w|(P+wm^<}xs2AH8O!=TWq$wqeT`x54@NH4~DV4COX z?|-p*U6EsfvT>32IP`V(8K;BgP0KE8v+@W?Cx4tba4TcFRFuH+ND`H-(&1D2aLfhYx!CX7n3Vg*?qaH8_dg^G5D_?A|Cf;p!kfE3s@WCZAiw=>Z$=2vj9R-i*X1< z&7_SjErN+4qXQKjC9sXYFK+V1Ytmc&qA2G$oUQtLT`gc>@p1(N`Af01)45B)e}5F4 zt!iMUS~aIaSj)_=Y0PUzV5xtX5HdD)60fZvwd#)EJgUeD$^2z*W(hjS-xI`iFkV6vsbK*su2-9C3ydcA4 zG!xcg@TsmcXvtAaIV`JlO_X#@N9L}Ls`++z8M85EH>}hs3tVz>0!Qmd}Dnc!eVOS8F$5^K=B7dEraykT~#!zw5 z{%5|Xl>6;4$CDzT({DboQD0NH$flQ@z`u<4dDK3s_1#1hS)$|-y3%pN-h={A(6=cM zpv?;*WpLS}(x>IPN$vcSaWV^#VL%OzVYspd4%S5e5YieVfcVbLdn7nfu=#UEN7w52 z$(?$2yk1CWo2~kFzJG|~a(E+84BI>Bb*(a}U+1;RKu8vl3HN(2`?0`7#cZiy57W6-3w1 zw*=bO&5w{C11{Lw_PSjMPLBYC21Y5==W- zL}^4-C%l*^RU-JL+F_4s$rVXp{APGFsQEmSu=owCB9K5(tjfs>PCKzG;rBYpZ!lj1 z>m79xh{38gU&VRbtGvxnlVq5cm#Ek+WH!P#t7@2LY=G(4oXKQ-mxOz(_>1&5T=Ukh zhkJErN^9Nafq#CeB&qu{E9VQQs9#r?9=vym{7O4E<$^+ySE&WzQfi=Uf*Qvzpc*vf zYI76BRt*-65<_P8)nbNB`y-`>-lE9~a5Fu@%fzwt&Jrq4FutoL9B;V|h$f+^#1+Ji zl*)%XSOKr9C8^#q1eGWg;HvIW9l$gH zO#HbDEG=V_Bv4|mjM~g_cRsY`D?{M0SzI9Bv(hk{6CM++mz?_eG*A4DXOmMuFv+E( zU&ng3h<^h`q{`x==~zd*jdH`Id>1gXP2LjsjMy!{e>{88eCo%=Pf4iTix$=F7kt0O zEB_nzHfX?A<%2E~DqV>Lia9ZgVPvY!rJN9DMA91QjB{P_`8}zz%4NX;T8kbg==okX zPOxjxMbxVF!cSO7t9tZkWgglYBvnKGy5cjH?|+E~))oh#j9PMGwYs_{s4&=8Usq5M zr}I@228B3*;0ImjLIq8gfPl)Px8vSLQX7xgJbWb4!RtPRg%l7-KDM+HW=1%mo zU@gqu7zKGMn!rUUHDF_)#ZkGEKTmKt3uL77Usu^;v5xSr0RIUcPt>nm_fZSuBJC+; z@PEcsAB+z?Sxmnt)h@QAd;_;6FYF*Yyg(MoEtSF>Ua*2cOsd!lIf;^$0K+eisaxn5 zdf!+`Ke8;9+%_Kf(31A%u%opJ+ylJo;t3VI-cT$Y^(!2$2KYP(=+bv)V9nk{99 z8XK-?T0I-N@+hJs$A*ZAuN#wq(8|in8GmDFomD0YrjV!{8zLrg%b0|uS5{ui8H+`( zw^5jSNsLK6SuOps_aBn zwl*s}u_`+el@-{|_<1>80+#>_?3kK}|MpWAIKeky`xA8nuvRmk$9qg7OX;fy20hgsqh- zcavmk*;@^&J|w~mN<7VIq_gzNpGN%*by`K6=+=^Eyx7D`f%lRhK!zXAC~cZc$+yF& zxk#q8DbsNxexC48;5o4V9&rm6Tz}_Q&`@QmVZ9cRS2H@MYVy;$MDP*hXDj$q$G$#> z{Rm{?$KuHM%IBlw(PV(=X*e~#n!n*dYmmZtrhon;PZF>j3_Tqww0QruNl4qCkL9U^ zZR@XO>(Hwh2CXrO8(77*<&K4@M~bIVc0R{O!kW&KizMqe@NY*0w&(9xgMTrXLBAec z4wv=N{QU;%zL0-6m1C*Lo7OvYddhFL5Ujy=hnkiGYwOQ>A?9-*V#l=JlnpYszj_&B zlW%p2n6}!2YJ42LS+!`5gZEIiP)K#mR}6!TAR?UQz1Y2@NzE}dNHFfA9f&mUEufXp zN`@vEU9+sd_FcHN6^{ z12kT8Q&gOy5-AobN>PhPk81d{Qqu8R7!!PkPROM!LSc){&J1gKEoP?AcSTbmL;#Yy zqFk}#TnF%k)+OwenB^D_N{JO~zZ+$Nu#1>*9i8i&1W0P>%CQjQdw=Cy_b$Qf>?xn@|uYc=no+qXHj1I(l9h6&IqY##G#`!b`uxrLP1ja_LuRE--#|<_x_Vquyh>C&fq} z8${OEU{Ed^jPm_d@qcZZy2&JQ!wa^UqO=sqKh3G^@tK$JP8;iu61=9n#(Kehz!rQI z5qKxp-1 zrdq(fOO%+_>Uzmv3wDl+uV5qc`Xv1PCCY_gxl_+`=6_C?9eov0*L=}!n%C$Vqt1oW+$raS$3>~G7*patA_eQEL^!PMOWkms<`1+t zCSAVhynhOu5%KaFM{buJ6!vqH<0W|QJ?9AsRu}{X2+XNwd`vTaa=EqWC$WEHQx|2e zgB+5wZ9y-I{==i$(R+C|Q;tNeRw9@DSpnP>I^*7LT(l~9$3wSROZSI?H5-P42&uzyL^BJ|?W#fs%wE4Li~uolfdyk%*Q z-SBmVH(@78D2MBNvD*`|gS)%p6zHL2VkNtG^u9O3)U6Bg*|c&UTAc-y@#75DEmfaT zly0fapJrzv_%;ZR<(cb3Yq~`kBc_GGsFFik)2XpTG+QAKuGA`s5D7dHPgD*h_GeV) z`hU0avoU`gKY!D|ji06Z4fmb&_L>-i8r5p*$x(7%Po5;#=aWy8^Tp(8a=n=RDQOpz zKi@ef7Qp#`T{LYDTv}qAeX+8HiYz)TIxLokXLSf?JgkMT;Z1H0WprO99-Y4{MfLK7 z@l(r(;HPfL^dS6H7-b(k6%A5D)oepf?SIPG4V&7P<9?W_U8QsariMpxGhph5Je?!I zAVZYM((EQBkw38Eg|1N zMC|XE;zx%AYr~N-cDR793I5l2fQ>+1NqT>;6)?!*%xaO>+m!`F25>`eA;B~PCZk(`aGMpeWqZ#kb`^ImMbl@VgK>uO$H6yCGDNTgz8{gA3gnYAh3xHI{k(5KX@ zl3^{<*4H8pmLCj7rBH2C8Gp{E%_>6$B>cpbHiQG$R?8IaF@i;z*1}FHDPy9u%6aJ7 zP0A_EeP}p5-_7T6KnFxV=~W$KnToJHlnPa&)=8x{t+rKE7xbQx9~qY6QmLccfV#u# znii~4SDe(oGZ41{N0uz zNzOtu+%85UN<&dL!)ERCz=`gY3IgN2>XIV{P#PD-@-$MMMN?zkcfAu?%;4UJ8)vB7l4wE{e5gOZ?I2rmM^TYPA{-Eye*j8^AAk?QOj}At(?aEBg&l3$2O`=NN3C9Z*B4VO6YJR1Xd8 zJFzp35OrWxjK?d`n+fBPoWb=7=ZNjc;{SN^r_tdjPva>YVy^n>U(h{C+M@FI>Oa!I zB!8-2bYDUz4c>^WeF35ZeX3Co_k*A*#NF&TigvUOyC*&Ljckt%-AV%;&K+-+LqOZI z?*02-j)07c;Y2!;!Lb}IaUr6j)vxSe5RsnHXWBKiy;v@ayvC41z>DM>UW6Dcp@f;+ zkl0eo@=hu~p_gA_l=Swk<<{^URSh9f6@RdDCvG~9p-XhAdu&(lY>|Bdc2x&&f<{!&TGE&7~IZ%DEF+x)!U10XYUL4`TDBi!XW8Z;e z)JGm?vLV{mbko8LDZTKaxLwJTdAlm0Lj|$Aa313jyZsNnF%U2_TQ%dZgJp!q$baG| z>u`$?p`49hve^aU8Eth08pP^NBuH<|f5lV^&0?wC+ln8OT+j#b!lj2REc5PYt38D=3DIYGFawIDe4XeVhvVagb72i_54-e?Wt=!$xn$DmVOb)Cq!YigQ4Fu9g zjmG$}PT)T+xZuGn%)x7P--JZa>DYIr*DXf`(jhxii2EP7jc4f8c$ZacD}My*al7Rc zVUj1B^223GoC=eYZ$(=t)-mYDJHeNkO2&|k@=ILf4dZ5rKi6N0l^P}QR&>fBx}${t z7o#);`tW%+laAi~rfjNeL&HoMcZU2 z;?4wQzdvKKsIocEGOm|J-hVXY5qi_ok{K|eh`&qBKrc6Pez_@QhQphc26JTf2>?Ah z#;n6-hUUq6Jdqwm*u%VGzi3f_w|TjMJy*)7wp#SPF%?k@_O^K`6mbA@K#jlYpup1~ zU!F?KE3loU^AR3TNi_O4bz^}J!1)JPKYTg^Mjq|&l@o0$PuXsNYKQl{lxBb9OE*$D z07$)DA|ml}ylP>{W>%_5}&(2-ORPlYV7I zBD+drSAr1?v-DE;Wl@#6t_}Ho;!f0QAIEoAAzRMAP@%xa!9T;UYY8@nDxqw_%}ykV z=~HpB?unC?2p{_2(UoG+)v6`HUDKqtwW(!kE;lr?!PisW2BVaKTylR$R~XY)a?%d- z+A1#E;bFzIpXnNmFGz4{FU1S0U{vWhGbt{0>y;te7D_s7>RI=`qhTpyLhkDzeW60P zQom3p5eKJ@sMK`m00SSbntTuEf7V9&hD~FH7jN;C93r4}*gt$pTui}j^+j=$&k0VO ztsrSx4QJW1XbGSjZx??Z-XRbstm77n7*TLVKxh-;!BZH*$n#cy%fe0X54U&>PlR+U zQjnqQ8A{@YYRGisomGekMp8I1l8~fhiA4$&2o}s6^ay}IPT27p`(PU<1U&?~W+X0p zg&K0>qr^wtMqdr4n*^dT60T{KoO|9E#-pQT{PanJz86NrKRt(Kvt6&ptRy0;~al3PcB*JI(5gPr+)7FH7WxVYL~+3X+pgMjb9GigLDC z&2yoK`BS!75kJW!`c$3KC5E3I854^m<#YC!XDuf1C z=R>_O0he?GJPIL@@hfOgfR8YKcq|d}gmw@^f(mV5q!!16@kE-X3t&(kd&05UxvJxR z8)s8k%6|LfH*dfA;l<0>Uw!xO+t0rG+gGn&;d=n_1kCE9fIu<@JP<-pLoxWnacwv zwx99gl;Z@-k~r8pv+JG_^LN<~_Z&CUs6gjjHl2|N2Yr{L9RT`%()t{RLznzg}4m30m!!{HW{{Jdj%n-65(7{%N1^Z zyx(aSfmMVHG(#_>kQW7TfsJcRc9lvDgNeMm^u6#ISO&NWtUdB|@h(4(R`sIy@2`J; z`rB8Zy^Z=hx|sK)IMUl^5|wZ@sC<-l8cMBc60h4GHDX+lx zHaZRk4*vn0gE$i8w~N%-I6x5O23rrVp zIGV00R3ZJ8oC=0xvIol`iKcsKnol7ErsWV&+TnAUj*RFZ1lD#O0;a;H7h?)P2B#0B z8as-HdqIN;p_PcF1qwfM@h!&;ey<=XLMYHPu_7Y1TLKuh9{7hOcq+u!c`Sc6AEFI9 zmyrj4)UWB#FXBEdOZr&TM~uq{r)G2C7b5t$ zqjo_%>G<r~+{5j3fh-VLge(EP3Ay9vc6%35Q#N$H? zs*RIlZPxe{1Q9aILL>II5%Gy__#MRB6kpOKxCJZDdLZUk9kZpSeA&+}P0QR+IkUAH zxbPX=PGCn1@kb98+RXwUJu07#jtwR~-8VR-5^>SviCKr6;l#*rVr5{R3(-QMbHSrw z31iZ_Cmq4|hT~*>sN8>58*H}0T0;kpWRqw~N9-q!yq_D_Pj=@X(@^krQ#g1p#V zke1>Jt*tIEH$ui4J_3z7Kd-7qo|Tbt#m$rbRzA!jS{z-HJ>S13xoA`p;alE!)t-x| zNIfF>#$u_GaKOHK+RB@-LL1^0(OUKmTGQ{9hWc*w-LpY?mB4=;SN4E{t8wH!Q)zm4 z$-aVm=H+pqW2EQw#0=wJ93I7qfqvAh5gxie9pgVo_|Fsk=M((r>6vN0A?8*#TiH%^ zShpFDddR#-kA%$W!6gYo=~TqXPHcoMY)>p0rbLAqSWFfeld0Ifa~fb_MI>^f zA&wQIuNBi7W>ABm^cFww2laC6GA#P4*R|hMKErz+=)QRoaRXE>Br_A^$rr~kmO4`? zy-VqvbtududnWWR`18}n%8ovV02RwJ=QmaY;Y-L#a}s|@bE5cxK)dY*Mv>hjw*hWt z58Bz#%)k^nswkVJ$nJYHizPF>Vemko=W7 zkHhTZ0yu|PCi~{n3^fLvs$*I38VwR}_a50BKMIA5hxkX~NaP8J1ee+i#RqGOlj^uf zL`FW@1@nI@ifoO7@KB&F5_u5V0fIYVZVY4BNhb%2XEJW{y8MYw*g>={!t1@Bmmc;h z6t^M_{)@W0Hf22FI4Lfay7)2rHel|fBY|wji-w+cL##LFkm?17V`Vzq@Rgn)tc@r7 zQoPY~)gl^I1{A-uT_wA8o?SgvSjiiGijpT_)qj6r^bV;GTe~W-wG@uFK0I;BXv9)q zgxf9N@=J1lLaKnK#v3{(gx^QW8vm}3?$|k`EGw27AtZmr;6w);VZf2Xy)5u%SQ^iK(hyNBUQ*aH z<4+5?Hr7S}-_CFO7@8Cb#Y}L-ez-hG1#KY|V!;l+>7Y*6ojcpWE2@`5+ye%sL9;Fz zbn&L-oxN^Z;a5OWNPsEu@{2oJVqLjp0W7oLq5fPFD&7NMcA`_WP6?;tet&5|)yaSS zKiwn$Pl5cM*|~MSSp514PZd6Lw$#XpBuHM9qwjK5K@X&(kYH<+16*TZ zR1WK+C`RXts>Zm7w#Y1Frv{lBoc4d<@_Ai7v?ZK-r#5g>yY@TvJ|w--&hn0EPynctuI!3_(`E`1vqu;(=6?3?EDCyn}>7CgR79w!M ztIw0{T0XlR)wb;@x?V?a4Qv8KEN{3nu}pY|H>6m%R{q+x!$*qkD{-Q9x!`}^#Sb`u zWPR}=oOqTuNGfD--$Ib}lTIS3dAb?OyTgVePOu%d?Lm@?8Qi-V+jM|eSBDSSB0=Jk zS^_C*PJyVgNfSzO&Sjia8C5U^mvK&ItmM#qB|8DF z)-E@{uNLdeiri|_uI!zn{a=+dXNmdZyrP%;RfB8AEGW8j1}A@@;3a?WwfYWn+b$+v z%X1!|T#Qd!2b0vCggSQ~EajX_;So9ymU7Oe&=B3-iRtT^6G-F-oQ;^8V$LCk85|vTE}|B9B#<^DL}`DEyF1~(*=TkbK1L#xoYGNp zq2!ngfl_mkwxtQ5{$orLBhBjOah;n@f#Oa$0lJz#bWMA&$4IM)XIMT~oMs3-3b z@85r-Hh11ORwpl-sy=0i+*zS`*=ywsh|4=0l^GY;=VM==d?ZgPVL^(RSmupO7ZnE>4#RLL6tt_Q2Tl7kCKH5;x2F>szOG2fNM zUbQ-PkU_>PC!>hExJ%}u#;%-hl{)9U?wp558}dRVeA^IpU0xrTq&w!w`!xl+6Y&G4FYg}0O?-e%_L)bCw#-A=C2<=-WG z`&+|jJvqNKAQy$jHwfYDjk|lp~>M+%HMSY1dS+zRSuxU;@sdTMF*X@ zNP!O>@U;&Jd5zpYnOwqM#r864-PvvhS5F|AQWwv|!8ETe`=a4NxZL;eGe&>ZgtGWo zt$v-WUyCT#MXt79EKjquApJ${iB2KGgu!4r5uJaAEGrtI!dk7P`i+jN?vSqPTso?cQD!b(U>|lE3z@u{ zYh82g)LiSDYf-ZqrE~QgqfxbPR85V#W7(Bk^SSQxx#;t`8P%vLvt#GFW9Qs4)!uVG zQs+EUcPtW9HOqv$W9PL!r02Tz=e1L_?(@0mb8F_(Q3D?BYroIey3c>t&OBf1)?YjG ze65G$+8K^(Jsj71p08WK=2q9-IyJYt=GLjX)it+H&8@Dv)iwJo>{<`bwX?#m^+a4d z6LGC4;@X*rYdsOywXXTxulZcpeD2hIu4_JbYChLBpF1_5>zdDv(GGN)_f>zz*NFg1 ziWoT>kwMm(%$z0~t=)f$tTq;TZnbi^BKup4v|71a$NL*Qe#f5ECH_oMb6n%on5V|n zxM9khBOC#6m#fqN{a+6X;P5CuIGP%|_8z2!bPB*Xr!I7!amY}^Ks*wc!0};F_F&vp z@p88{6*=h8HYp;#2M?qmDp3Exac!nw9KFlE>soSN*bITN(Rf3|~3nClIck;xMNQl($Y zZC!H=-Wdw0scV00sDbF%8wOtk+vBi%djNMdFa#?Y(#R04$IXIvAxjWe%@@}9i4+Nl zU1=qqbw!;dS7~W|FRkx4aFy?sgEqFp-g#jsaP>BtoCw#_{2sJ6^a(6Pv*SqbglIzA zy7Uun#2q=3-z03n-`>8vUNGDLO;!TGTwA($Q#HMc^q7Ae+BORn-7Gss4(hrXY%LfmP%={6021Q*xcwFz5S&WKLo2>ycXd-s6i~5=S zb8vBZgrk2jX*!9eoBUp5ZW%+}OPth&$Na^cx1as^!wb~Moje_ll8c*{reeMerkb|z z-{0N|TO;GjdPmTcRr!+aPTKta`;uTQq=$6;ZY)4$>jkJRu2Gb7+q7BDfCiIXELv1H zfo_*`4z}g7y_h8s^Ht4YdK7K+De?Wh6XuqoJk>73QD7qyqeX!3ig`27trrle{!W=^ z*#q~}KYid(32f82p|Iv*!$#_5A8piraFcMCT>(~;&X-UD-IE`fI{~q?TbPdl0W*{9 znXmyflbo6>e}4?4dI|0BUzlx;fvR=fB5RtA76j|_S+ZVeEtd# z-!EVM@cCzNRm3aA6PabyN$4MR1zK%_l&i9keG;GtTAEE#_6i0Te=yo4JT>?`>@>%-CdZQ^N8APY zbrdQV-Lc<2$XM59m6Sz7q4xkmM64P*$OzDfKA(^7w((VT+pTwzl;gn{SvV&KGGcnDHQ_?56=yf7Hj8I1#`KEm9xozgelo45yFsPuY zPQ&5-e?S2}g^0I_O4VDa6c=vL98udxqdPphNO@*AX*7!VW^4NMIC)$vGQpMZKt8k= z1SgF~Y1@g)_{T0n^TK$uK}%lG?|}{yf2fsa87B`a<0N8zTrR`Mf8%_HsU_SJmGiw>2E@H;_s(<3e3>z((o|ha8Wdg# ze@jFKgG9thUN<-enI~#=BupWM90FvA+TW}3P>R)#u7q~;hjC^fz!@9(L}pG)`_<9km3{QbzQLTmU{-th%J|OnQWJ1s1<2Ny zjTbb%?zk~@<)bW^_kP(h$Dli#cR#uJ0iA3f6*Mp!lnfJ|L?igKhyCCH3F4hZ{yD#7 zBThW%m!yJ;2XyfV9_hOr6>>lBL~dl_KZfA!%oTsWSQN{~CrKiF8(%Dv?Lv`qe@+@D z^$jp9^&0;9Sfr`GA@=!3v(6m6rr@;`EC`vwfWTREa1@f~8EMv(<^$Q|n~7a34uf6C z$6}PlXyXQ|Z|u7@RSY|&UOVCIo$lNpYlj7SW~oM1-x%oG&`|i0^7@W@4i^^*;FjGu z@^1aP`?2O>QKc#BG{u(Oa$(gue_PvV+G7%(i*6r^u^>-?yIufp6!X9H0q8)k?m+s) zzJCatd;<&5WtC-dyYk9iGL(*Hp%|r*NHU1axzucKK@g;y*j!H0#pbRAn=7gYKDRLW z+!gY(1%&wzET){d-DZ_V@`R{YL)=07n)oVim{VEaln7^!IL`X*=f1HtPl7G$Y+^WvZ z36-CyzW=VbLVLB>?rJyRqwJ@r9j}Zy0A;_p|J{%B(7*kz2da&EAy@g3yfWu*m(I5( zB7!676VO!#>Gcmp{bX*sEam6)T;Syhj#MFFIe#16g%<%;(m3*tM#$GL*wfk|(Kcu#QO zr}53t3|IRFFDCcAu<%>2jN+XJ!Qz2ehKnQSUrU65?8yDz9`^(bZ8?5+`DrS)`x%nl z^hz5GvXrGr+o_U;S0<^Hr70GR(lm>?MKS9w z#Lqq}U;#A+y4Ehq+nyB`#0MA(2sVRPcd}_zYkJMxBvT2MCewSxgo)PanUqU*P%h;z zARWmgnukhif21SaYg5E2)hM)#QxlNi zfl}25rK&f+Uy7mYlEs^y9GyvySO={2m@;@+U`)$r^|T}{U^8=hX2|pffa~;Q^K40N zcWn0sP^R|$+Fd&>`r|WHN$=#1*gbcGpk4|_%jJ-^f1Dip{1e+b7LDW+MUs*GoGMnn zZW)Y!Y`6|V!~w#n3Hp)FeY2AdXIH18GpDN;u4f%}f(W378lQor0~am=p>;!A@+hWB z_D7^5V|Bh$O(qx9Y-`4-dJr@k%ljiwAXk^Tb{aRH-j`oeXc=zq0oIk zL=TZGo0t_#BC_e};`B_xcWyp{*;FJzftAq+f1jU?bq3YO5$wfyM{v3EmGO5yflK2A zF8}|10xOeusQ?^2%({gy|6+%>J$@f{f=?Y8$M*BwYPdegk?noJIgZ)xbNj2|e5w7% zmEDi=uB&55AGV$1sJd#L;)v!9r*#iqWtk_o?B=$sp)5n5-ye8RtJjmvd_5sMxitC` ze{!CV&nEe)Guo!zM{7lAB4`B}zi;<4rSdUBL3;J>TMIC%&E%_e_Jn#m{0ukc?B z;o0QRcTNZ6&wbsw|HcykTNyN(N^_C)xhR}6BoX3ei{c6R!IjgN!F%fc{A!6KA- z8_c3Emx(CvP$DqqgAoq{g_DCP?YUaZIJLv;o|zyPPf5Cnz(FpwC!~%xeeJWqf5K9^ z5D&%Hsg~Wsl2f8rSX8z3qz&wq@u)rBhZ)>2kHvwX7@aq`JRAb~e8udTs2s?M3>Qq9 zR8oTjxL3$=#fMId$AXO_31amM#yn$qq%#teyIi>G(4)MO1 zE|!Xy$lyQbQ20ANMDlc=KYKUr_vf@pW!&lfY}))*;6`cD81QxmY+|&CCUrk;(df6p zzei{0OVSktF5@Y|hEFN|*N|Q$-y!vtE`4LVFIA}3#V*DD1nG82e|8<{`{_Oq z1au!xaEH;ONAmYK(Q(B5q42W_KhA>1e&Y?%M<{d_O|rD^x2I3f;LcLOk3S(SIEFkq zBm9pR{hK2f_di8m>nB5O2$hFT=`WK8J}UT|!QYEMc}K|5`-558OYXr_?g3RKstHyi zs&Fa@^`eozcp`i82^QWQe;*yx15^j7(h7bTgKAQE)#!rVKB>O&fQ;pU9G!)F_X-;! znjjiL)k7w#y0c=tpY8zCAdPvDj?T;qe+~EAZEE1Xb(hKdFSk2^avs|9RYLdf*Y9Nz|d_E5AZ?^@JvVk%HGzjf8j@@=q8z^)qMuU zA5OCyuX%{ZJVZyK8Gq2wXVGMZd_S-BUy#|QcSTd6>q*BYyOc{_`I;Hi zS}A7GJ-xgAzg`OQj848!O@qX%lM)Yj5W)Zdnw| z*A?OoFvkm@2!#f0w{q&~C<_=DX;&J)S=G;~&qWvVow4t?f^TG;6Uj^&IESiG6X6Zr z3ENtQ@}l71fTMqZW?l?>kwElTm*!sFe;iNtZuf|3oa{YTe`ehM$H^YEl`52U0HVFS z=h4RJ_-31&3)x@Amn53AnK+z|^W1Lo+ZK17I?-{5`VnMu!h)+;ywanCaadbTXFtVA zDfix+8oLZObDksm#h%%hO&S6ZlJpsDp(E$htf8_O*po0SD0NUlj&Sesv&)cdj?{Xi zNNG%XlDg-Qf0O7L)`vpDIcB`CA)!|FdYst&Iy5tJw1c8J;^J|84v@Q=Wy>_G(Vqoc zHAaWeBWTd!<@0E>0C5KqlOANa9jNQ04@6Bfh;OE7-<}@!2FE`Sf1dZ__xNkx@A21h ze0XW2f1}4D4VS2AG<&v~W-z0-wZZ6TXK>N0hs~mxf91V#49mN?CioT3l#ZsqT@{PG zSEbD`zsYC4RUC_{t?*_ry+}{%;p{4_U$nhZe5RT)gJz)UKvX_^2LD0jg=s@pp3Z=x z7tOcXx4j~M|NeptE_hij(+lJt(D&zWh=JZ9b)3U-wG^J0q>$$MJeIY-OUKD|Dx;?F zo?TDhfA!P3#6mj763?WV?m~3?UGfg@Kd_hy$4Df-&={I>nnF((CK40R*zKK`J@}6S zFquLr^zEgDyZNH7u3uKy*I79ytvP;t5zho-htcU$;X4RFeB_7@UJ#5BzHh*MXTY1x zQsJ>jQDERrE=XMpF7b+5_p1H^1KFX^g>>k%e^AaDX6&)cYn}(yln6MECfy%Tb8%Do zk{t97fncJ&z%h#FCYeD&+QIk?k0p`(Cr-W=$x$>nxdyE{8XL>a!tO ze}u3Jh9RYek9GgTOzOx$l5|aoPx;_T5q1=TCZSB& zWpkkUIDAIHc%BIUok+An}$A?f)Adwf<|ejM?^{EYpQwl!*y3M8E^q3r`S%W)kfx5XPJh zYUH1u8INT;O1+Z}2GdvvpO$CLNHFf8FI!gPX6*>(o^sfL>~5!aC4jGi z&-F+&ag8B-hM32qd6iw~gge}eElXjmpUlm`N^%y`TZw0PXYy)6{EjW^#f7B}$2XW} zQY){%oE2B2b=CQR`^)cg0ckoaf7+mrY;_J;*9drjV5_(B?2nVjyS?5cAO1W#bJwza zV-W{>iwl_Ai_6N>IoQt1?|M^aIvTt#M|53A-fJ(?m*ptgBQ8ybnO9|F8F#p*F-IAB zAyPr3&0x=|nQoZB%j>n~LJgQ2Ge5FdcROEV5EFI2nwd_n4E&qC-@~nGe~ia*YYol> zACN~3Pa+z+u{QAf1~2!ERHLcQC+i2 z3#Pn~--NzBEd|oE7_6_!ED2Rv?C{rUVN|GKwqB|Sxe6f@q+-yD00W%%?OQD5OYJEG zO_KFjVtu9Pc#JmSZifo3%}LjZf~UlGk|`I_U6Reo-}sL-ADw;#-wLKn6l=QJ(@T|( zPLhG^b(w6MuH1*`e;(P{O|O9WS*nzkS$l{ zUw>!$k@!NlFzPq*c|?TaIQmj0!>h?>`K+oH5yy}hi{g?#f6lYnFP9{HWkzU!)Oiz7 zt_}mOw{8J0y~RMn)pf4~iu}T@KwSzH!Z~I6Fx6dA{zN=|$okytK*gJ*kMbDj$tOr#$fHKvNW2m<2k03UU=Smy!6Su%>zs7XKnLZU z2suD2=ma5iILLC)JY~9aD>6=^8O274$fg760))!DcsZ(vYl-?z?$TjEQIvIwFijDK zL~&v{4;ff)N<`!f!gb;({vF3gu_s=!C%RZV>IbF|e~(RtPUS5@dYAol{T=m?@XrkI zOy*#;Y7|QDej&PFsP4N9!1w)YU$+$lR2o6-fuvR;qSXgIfkbsU{>wX=!CPRFUL%je$nk zSx)RMe<#6CiY)4A&n^Bi_xZ_09oT-9e|S5kJBK~5ta*;Fo1HiM4r=023yWV1@=olw z+GqLg+6>;@U(R-#*HSCgSl-+x7{qUER%b&s(%ZICkyH>hYO+#MT?BsGd66-z+rlp@ zGOsqfd%fC0#W%wL%O6WhGdKf|q zf4ZB9^ZDbmkiC#Qp2}j#P|h&r&&p|w8UPngd)qTz;QnZ;e09rJyNSg=wu>UiNlu9H<1-OWWijG55n_kzPO|Dj z>79%$QH;VOJWqW0yNT{Py--azK;g>oe<8VKk8j17^-@Sto8c$TlvYDbxtiq+OUly< z%(6+IhRXliB@A3ffq86*{&dT|wDbxCg>+V5zcCPw(u?AfEi*)+k_gH=RD^iQLVs3Y za7ZuaZ6b>9JbZGFr}M*0>tV&qY-7F@8e&6zo4pHa#lS^#E!Z~-#=E?8x*KJy05nk|yJrk+iLv~~zF?%hB}y@j|$ zP~3?{ey_7-knJWqB46H-5!h&;KW#T^&W3emA3vj`bnj+Sl)p@_>ioiee{ip7z55!{ z8yd9zJ!_#8aQL3R*84(-_MRwU&z~Jq)1N=y(URR1>Y{Xds(!IO-G}3zePkRn0v#|K zdG{cm942rB2#q?ajg@N!e&9^WN|Cg!qh zwA-o@rfh|RRfEC)H)-H0f3^YAUg(&~pt!e=0Bb||)3-Le6x^i=Zn~a@UE7ti46&@_ z>QRjzka0f^jZ-fcR9)+r@ak#Bx{*l55Fi!|y;REcJvy34G0{UVu4UM1c~q%$${LFx z!Uz%>8qL=gf~`QCotD&IOGKZF=Ii2@e6jwvn&-#88dp$S!c2X-e*#vb?x`C|VlI&3 zvb;o(oIr_DBN~-K)r{0)^y3MXR+Xr9Vfqpdq)b#g*x0mf0wqoIW@Rtd7tG&Vv7tt zjgGp^1tIVolH3xgs98&EQk)Tb-T7~OW|8Csk2Sap!Bctd2cltXiI<(tw--~-s}03M zekHCRyNKKj8)^cE8Vs9_9qRQZ1O=zH-bHd>^?g%w<7sHbdc|pEv&xUHYX314BWy;Qc=i+qc@+hKWGZorL2rsul*DoUaXJr2};W?fzY2@Fl} zrn1a*y<0VOcB#Yj0@_Yn$M2kjWJfB(;`@4oHYImTW3W4nQe%eT|l8b`SVaurq&uM~a^)tj zORuXgjScHoK|O>(Y9X@FJ-k{-*{xzZ35jYB(Na96D^;&L3{6wZmz?HVHEsIoCvkn+ zob}TpfxrE+`gMfANQz<9U6Svdkho?Sy{S04f7Q*JIL*A{UEDcwJ7JS`W&Wd~tT(Sl znBaHS0*>~FEk>1nx3yR;vtL&^o)+{&fM&8Sd@ga>+n%&b ze<4^t3cgst0o5z;Z2@-^Z8|i*<^r>{Ru}Vhg$BLJ%rfBD?YKx5adMT;xCo&f!IN}6 zo{UVyr|JCJVmj~l4GZbf^xdNcb(3Y%k*8cPJ8o%i~hU#;FIJWHvDh!-{4eKfBQFsCV81&_FoSOU-jGP_$2l1v+U8Mm-O@H zvlS=)CGCBCuF4z0$yxfUzdYz2J$*WW3vOu>rrC!QCLZ^RF$W1Rf2xVG zz``_2?Z*d@D3$kLi$eVky#d1xCkZuNNAhyEei*R|m9!h(YT@G2TvdxXI?a;5|G*Pe z)rndsrV0!z!;Wavi{R?nYFhDGTH#79`mjt7dd;AU51WsEh^m%N?1qMyXJ`fx$=RdddmRZefAWD89|LtHCQK-+H_wW=N_)hA3FeDAulVo@@?d9a zC73et;|PBs&(^V|!n4nv4Nm#C8RxA3j5+?Qe3#c9zU8(}Fz5ZUM) z%~Pj%RN)UfiQ>CIK9jR4LypdNpHc4J{il=j{RAvmsos^PBHbjY`DD&j;gU^)=}@Zj?R@mTg);ei#!f7|JG9W!n<} zY9l``UH*x-qe`dbOb=>Bgr=1ck1Mxu`7{h?M9JgvA znnHG}%96B`z?>GVv2{`9ke8RKjp*0iQ;La!cKy>0jJW2v^RXp78bx!&8zEP93PWRdb>1scw4HMvUp9;8hG z(p54~SADy*>GIipf4a1!8d-9kW^OXZf9nIUyrjC{LETt$dLgz+x)8f0oh9N1c6ImB zMVGQY6T5lgT_YFE12&G#`meQj*c|!qSH(lOk5Rw}2>_mmclvqJv{^aB{Uv|Ce}D8( z5Dr+aL4aXk>IScqA_*uih7UI{1_|?Nqu>QyKA0~E4WZx&&NQC!=u?ilrHH_T5;zQ>{`Eiz9fsra0pCJ})S(aDl9D|1pN^F90mWLo-&Co?_rIu8 zwtw2(9(};%e;)mzvx|p%XogATuu6rbAxq7v?NtZECx3m?UmXnp{HMRdDLx$k<*)JK zc=+V$Sk5@5`Q)#d=1+h56Q%jnUog$l=!skjnC9ruN0{d6lTRqklW}}_G#uYUHpOH1 zzy)&jFLXA(Mx=oUEgQ_a+i5sM3=L=~{eAyF`u7q2e_x~?`Pk@FqGpKzXG~=9MBF7A zXit|P(_Q_=VtJMIHoUrhBoRj;7qi8mCd*_#ou?aH$XJgg@0g#C&JN5mfE7PK9Xnwc z5O(B*Ez|M944}OP*EP7KHGD@~qy;j#GyH>l>56{9Ucz8tXBP*{grk6Iorw?F9T)wp zgXKpTe^pTbCweFpnv2;cCuX8Wgdp&FdbR94gYWWwhrp_5s9J#rS+T3cz_=~%@c?_}yq zuzKBgu5GnsrT9PvTa9Uh<;IDi^)FX2e;BDr>4im-TIFd93-8#R$DfLfqok?65kckk z3nMyMEvwh0HZXR6M(89#m1K3nc<*YIsy17Et!QzIIC8;}^UXl+ z+nt^ocysUAIS{s50AL;KWp#Ko(I3F*2_qHVqmY%|+jAA2o_d%eE>4KB5>RUsheWR5 z_Ov{U6^@&TM7$i~D6x0iCd5+LO zW!fmv^HP!6msgo%uqEAnw5R!5kAJJwSTru1K!&7&BY%)ugL3$ZGW8AaCbi&{?mMr^DV=!7&-oMf~l-+~F3rla{ zkQTjd^EsMWc9CLbR?DvZj*rvCIZ?XcKhXMFfmOh^@KpCi^IY186#yf8)0fC^urn>@C#ae*O*rTb=9CL_(e`iEntUGHcJje)Z zFd6~Sv2{3P*X?uNF^Y$6Jbo045F_*`9EoI{jfQ)n_zo}zvez^&$HBa@17ESz)Ky!j zuIiXNuKj~1Zxa-V)1Yqrx9}lotqaZ115BGhYq^r+}< zUQo%#(l8+~4zR~AuXZbNVDpSeTPlFt={;I&7cMq{!|?lL{?y@|R3U$NuR=&(lCIP& zCUi2}+qEApe{UkUfX6{$)8mN~W;p14AS9cIH}(;@b@b*aE)WQZ2bhT-wq zpv#a=s7%4`c1e5HG#y*()oanfZM7HRcLQ=VPR6XecsxIFj>#XHnarpzG%gX6UqGuSq7bVW#K7Ne9 z2N(2_`V>@O_9MLNKaL3F>M_0Xn1dn8A;nCy6r$FC4x}D3i@*o#+p&Horc)xIRI7y*qOa^t@Ta}|)9&lftKD&wBs*-WR(MSsuOw6NsRt+EWmO$tGeW1KMU zR87p?t0k0T&fFn}Y7fh5Yl)rjxWM3RBv2$$Wl6_VeXFMQ@89pcLIjCdTuZeV;Ok14 zuY+Pr;NT3dULsZNf+VD-4uKrUfiQZ1nT)2jT;Xj4z1|}*x}ul$g-WYH?W~A+yumSR z5ai5#Fn>8lyt>B|_;6$(AoBS&oJ{h5k7_s$MUG;cHJo)tfKe`CK+2fe zSg!(|@+IOygI%o+^JbPU^EcNE8c?2L>^|b$!Gy6GYt`>7Dz0X{i&z-5UeMITw40`)V%~slI(igNLW7?YKYw z;#&U=_Qx1baYXxs<2R=}+GD9`2O(x!Jb#I0O7b$t;p2GNRzF;xQ-a4q_gCx%SL-5( ziCYRUuJX5bf~z^5-tgc!?w$VMpAXLt;@;21T>L!zM-v|=(f=7o{k9+dpC=MzG3*65 z(YX9wYCp0S+Z9H(`5YayY8vim4|A>E0=H&xe|wr8+cS8qJ;m7VIoy+t$tD`mg@4Az z*J^o}-a`c);d-kL0JDXA6HmkHY`yY0pw0$YE5u%_r9UEGuXKv>J16NDl%`K2hQPWN z{)dDJ3KkjtW;qthhuAFizqk7bY~p7s`VTJF+CdAbe;56O2A@OR0b* zRB_dzX36PjldP_<*J5pbQPr&Y;;XL22{%UUXQ>%gCbz)v;QNF?g^ZFWU!pK8M>V%H zkG6?GIs_*>N;;TZpBNmXe0O4YQEFu&0q7EpJVX#9wBxuc`fVu$8sQY+xqlZ7om%%2 z$=sO_8VYdNIF&T!ZtzB(;-axa68F-N{wUN(;-1hDt3QB0V<2pY$V#oez#8+h5XIJ+ zSF;tNp7TDHD=k{qg1#^ZFGY z*X3oZ^h0wCY|a@ck2EW2O?rpRud;Uq?EG7t0QqGOx{%lv?SJO$FSByKAU7k43Vyk& zfjqv-g+Jm@lF!Z;FBiq^msiF0Y9SO>bnKVKe4dxsm<*-}7lTuq*?$@bL-^~W0dfk* zzntbI`Xyh(jxMDQK?wzY2Hytcpoc^pE`^Xl&0@aC0J9u!soj1@pLGAQSA3t%-xuFs z!O+8>Y91e6!is2sD8g7@W(Yk9$=gnuZp1w5*zfXzgBh-Vn^wl- zwbKICi9z+3j86#qWKQuJi~%%UIH4|k(RBsG$xFZl{cX+kq~tTmpFJH((DsX>hGChX zFJ@S6gnWr~=bYn>v(De;_yj|8=|_*;5CRHsU>uOW%r2?Ln19L%g4La)XEW|($JPn% zK2DX-MIv(peIq;E6^9b_uDI3GiNPV%!w|sv#&-N2=(d9HRvjQzQ}kd@jweY2TA((%9yq8p~6H_;znD26BQZ_KtBi-9w*hM zQOpE5;(QK!d5`CqZXA)_Cbe3+TZCTdeZ5J0u*cJ_6RLc*8B>Z55QjJNrO237idf^O zE-eDuh)pAgfD{76DD+gvoShZynJg&sk6BDJMYU15MSoT+!?z;4R^)t$Rg#QH(jom@ zbg{X}Grjla5rkgFj6u z{xcEQ0e`NX58qbhYiOU06gbQdUNa_?n^=vLfpL77Q2PVd`#jvWI~o|f>Yydbrg1UG zkrQ*5#X=gxKE-*F>nfB)`E9pC)2`LHZ4O48=KwC>owI;ze*8 zMSm_zxOKGO=D(r50vS`ErOkc*)m#lWM`Z13ePP;RYOnJ)gXG36<4h!``YS;R|i&F0TwXt zDT7BdGs-gDgu!HJl)=%!*=0@pl~h0bxqpn}{+JXm5c79-MN;E}u(7_v2pCuVeAiA5VIv`FWSv8^M3$2~mjNMv7!{j~#>E zLzPCcu29%-456@&2#z6);8k&f!iVF)F8+JbUcJJ2;JYRr@jwD)5<>uDo>90&x_|Qp zZH`1EKPzhfAvIP*>!mO4Y3<h98$*I$B$)#PowU6F%(-($YmcG>rh- zz$9XL@PBL~krY!!A0(>FaiO#wfPXq@w3j~eMS6!8p;fhML;kqb+p+MrBgd-ESnReL zjWRAbogl9aPPnOHY{&!oL=C$x4>n*T7TmCrX`Lt z0hHMZ%iXotbtW|BUabky449)AXwVqPjQYK6>bBoc%E3Tjg&+R> z>aaWUqetcQ!B}OHm%>5ocjpJsU!KvQ-?=ya{;s`w<`I8cfb3ge^o=xwcAF}$dmo7M z!-vwWZu3y?TH9`2eM@3TSAUx>A7%@+BTm~h+UBQ`JLgfqJnM-h@kAXZfm~+y>|EkU zKP6I(BOM(N#*?vVnltp;5)LD&xtu2!>D{plW%z;F4wnu+fCXf1mk?bF5HYDbCA$TU ziR={712{d4NbSt&@sYPXtGA)$5WSg&GX`mgzMBg<#ExL=fg=hweSa{x=YeLe0e{lGXqpV4L7vss=`}fv!0%pA}>wT%VR_dY$Pb87O;`XZ7sL zJY~b+AJT@$KKP-s!_&Q=%b$nIbpPk$p9g1$l3^&ATd0W>83h@H5+*TRu2v9Kh1C19 z13k<~TCJlA+*3>JgnXgyx=j1sgx(Ft>di42Kh}=3ZGn@L^naK!pQBQ zn_Vpmyn(9LD8rW5)pz6|o|357_m}jl$zgFK4!o$XmP)F3w!g7U3fgqfX~%(&6Z*G5PA)>k^CCbjFMsZ`exJ<3g;L#xr9&rmlHH7V ziTPR|dRsM~5co|YhtJF~8MaJLW#UdvkC5)h@EsbU>Q4QCyW=zkT4b06~dPulGY75d`sAEPw^D z_`U(hs((Ebff%;E&o=e?uGIv}FvsRU6R@IjoV&(b_rg%c@Y7>;14c;_u1 z_p2+=1~&1M?n%G09>4|5>Ps6gXC9QX`4$-izJaXJ!RsGJxH9yE300?{LkEf!j`s<) zDEghRkN&VJJoTf`;n>_wJs7}iZ0`_flXR~vir z-Bu20>fSFtz?fuRXokttwad@k^ZYU)vK#I5JM%`2%k7=<(%ZX+lRC41VK-BKPMjW( z+kX-58=?bopWrqr9Ym`Q8fQ`uZFU7$-UeCKloL&c_jTmk#QMxMWTNlv!8&g-Imn!$ zJ<`XOr5azBiprvHj*hVWkLJO&l^xF|QaG6CuB!;YnqcO7r=oKm)c2h(O-B@Qis&y6 z3S6(PMy+TTy`a#Xx)9JtdyGCy6mIT>k$*pP8<)#=_3&_2pfi(v0l^C~v<><=^ky!3 zp+Q}oC!b=v6R;+)D5j6@2`0G6>eSi^;RlPj(v8+{WEfQ{eGw8py3vI&;n|!~Q3OTMjqJMg} z9o0=@P87FwzSc2Yc&8l)mBvG>t+eB*2%=kLqMPYgt7UaG$9wMgJ6t?8al4$Yvcep) z$|PF$L^8MEy4qLvE58i&DhYI6dZC99S&p65_aTwR zazHjI!rHQcS}rO+35+TvB67x+Qh$R4no_q|>P5}9QG{Mdun_NjQKIA;lBj9eVDU6M zlC~*sZoB_zG>iba7AycyUaMVtST-yB0IxHk&d~Wj@v7l23q3h9YkYlZNE?zub#B?c z`f3;<+^6nmL8(WK(dubtuq_H%4lDQ4AI}xSrfGqaTA+Q=nN2-4yiY;o$bTDypqRbU zbXXli0Z?)TT|&M;<4Pb2-OAI9I^_|s;5~PcSt8{r9~F;7^YJo|=6_D+^S>r1 z&z>c-%YL22>?D~#J5_0%JcC5ogP5}3=CdztA=Ka$>g+12@vpEmfC5|!yjT`?W>}$~r1v{t&^^%kN36ejLSc9TZRiE; zQte)DR3*5$>Yn#9Sab#_+|2}&6heUoj(i_p+YE`fa7{O1tbh1(pL|88$yfDh&yF+}CG`T*7fChGN6NE2!|)c__0NwahvCy8AUNG@fQJTG#=f(K4ms z*!64_JV2}#BNgy0vhAwQl_c>+mrQsD(C56ew1iO-rw3Co`MHS*iI58scXD63+%~X~ zI`%9AsWO5`&VPORn3XjhLJjOasN*-IAE|bPJ(?#*Pts~>gY_BDj%x5q&0!GrLPLrU zqY&#cXJsJO)$@{E7|&*D2N~>rXq3{rQH}vXwms{h zJyv@%##TpWKjy+^d~=TB!6wJaHuJ!vm?xLvskt|tnSW0`RApH7iq7EcL4rkU|I>r2;udWA<8WC$6>~Ers zK~^pMPa{Fi~yMC0?il*J>&&H{EjOrlN|; zCK;|HOlI=)Y=a$m7a~3w;@}}loxOWheTtZiyzK;wkFqx;ITD_dHAhz3BN(fkXgzrU zlowBoTkN342I@ZL&_b z$bYwvEs-Mv*g(sn$ioau0ol)a*UwPUsA-!ya|Uc#%7s?DDrHVXaG^N7FXPj3>Jd~x z1m0B;xyi=({5Z&h6;GKV3cw2)mV|LaXlc6HOp_CJjoI{U z-)ICoMDNCe=5ew{u01W)sAQEvksezy>3?9qxdjVd2et@SdIQx?I!Qn$$lf-{(n}-P zp>{wDEtToMW*5;$R{20BcoWFhLlD(D%D9h|LY9ffmcpBJW`9XWx(W*#($J! zsCi%ZNnq^wCGDf6Iw~P_KAsD1>SC{b@wB&<=OrXYCZ;zV!RIn&dJN|%DU^GJN}o_M*qP5&SF~!&jtD?V0xNJ<#m-fQME#hT*1s-Y&|+Y+QKmM1%gaB!h1f-y=8I zLStUAbSvxR!c?arpCTWdTpbkh~0X8c<7OT(dtcdD3t?{s&b+7JO4+e$OihuGBO!lu4 zoLv7v$N^9QGf_v{OyKzTh5n@z@SZUp9fb4jR+B`TB)(_SHH3@u$mB<#=oehhTczns$yci5Ywh^SX*9a6R;2EV?KNLh}=as}A5(6bsljlNE#Vy+B74wLMH|<__YJdG`6{2)<3s_CA z1_TFdh{bFJI2oA=U=Iy3>OIyll1Z^arsG@MFSRaT8u zkEUr_gGq5}sPu;Z;c&@Mhj`8&*)u2sJWbr$Lriij2?FAG4j{ga9`RB+L7O4=9b)v)&zj=j zcZJ@;(?>5qeE&5Q3*d=vbBvhyFv0PUtl<_~*IT=qyzaW&Hh-PObOQAB>1q0xnHeql zt1N@yv%kH6|Mp#qe@XRq=J(fi+g15Zkv7NrXM&%l{57-MHB4!DQ*_t$RXTZd{(iFS z!OS+WXjpWLNcg;3*H?&_Ns~3AaYDm7AfQ#$AeJV-yvn=WMdw6-u)Mo#74+E24E>ZE z(0XiY7)&_Lrhlm$7d5pwhQO+ZPe4}4KyZBi>bq~h{r>#ohj-_%&r~xJfUA6weg+Gj zs?aU7L4Z_5be&ACT&9y0A5koEDiT5u{kF|NA`ESUV5wJN8T-xruT3jEIEIpk>ZXO^ z2Vwv7s|)m6E<|k<|3nevu7y!C$`S;(KywX*VK0bjynpB??%Aw*`wQqy{mYZU9Wv6F z*WZ2f78S3_2<_Pv@YkE|ReghO=_W=3T54->*K8+of|_N+P%Bm7J2w=nn=mlE4Oh$t zaq`s-NUoCwaYqF!iyxVLFJYkw#mKB0pz;poSGrWb5 zaRZS?x_^qcOPP9ubH-%@a-)DsR%?_cCxqyDrX!LHQ#XvyBF=Ik?KmaWS*Ht6Vsynj zbCji_h<2FJg+^xU#3)041%np4!(*fL4xzHb;^+VKr|PHnk6$D(;R#UvGX$feFj#xs z(0SFtlF1I&FNk7<;3DkeRMcSdxKBgXa)*^ZXNxoKn2F6(3 zea;ye-s_0ihV*Mk|D-aaW7N7SZ^h&Qog%>oM+yp@Cs+a)DrJDU?$Ag-=Ue`1KKcA} z{VS4UAZ-k@vk>EPsDr@p1WM>2x+{EkF>6soyfDt3C9mpgQ_?7-0$^zBh!ECkzXsRc z7=NC@ie$MWHK$Qs6j}LkQcu398|1vrLKe>fjD9mjaJf0X2(m?Y$d3NQVU(E<@1cnl zaYv&zy(`Vy(WoD4j#SxldJhkJp$$_{x#mEaE-}Ya+^26f0Sw-_%S(iOZs_!xL!-$F z;#RcB6;xJ_b?}Ib>5QN0chVXu$qa=V#(6?``|TT0-y*-s#Plgm7@Lp(MHG+A;_q+I zdwCQGGO^!4RNkYhoATp3W&CIR^KDhM#kgppV#(aBjcT01M1ffs3Uz1CX>;^`me0Yw uM-?%aB2XkS2ftMGt0Uv>kpf59F9y{GK0ywTt4<6i@8Z9NGccW7Km!1nz@kY2 delta 56583 zcmV((K;XZ;z5}Z~bQnEOYsU+;vs zlXy7|{mU>fmRSgiQ4-CfF!Ps}aWuR8E&s2bR=3;Q-FX>YWYGl6AE%4EEV{fZe|GkJ zz3i=cBW;53ip8bary;kE|jKl6;nCbBkHCD2~NXJ6!~msJN5C44@Rg z%h0tRb{6M2D>0I&AQuHSt{RyIr^t1r1bg7Sl*EFIbQfc}1NlY9zz(0Ad;|@ZPZS7dj zh9w(0!9hO3ecvwEe@#S{%QX$_c|=^9Np!ufRqE=cHwxAwwF0XREBsY@5l6o-L(hte zAdV&$t+l(@(OHEjY z6NQB%h?m9joAzbyulin}egD0O<-YFs0OnGEG-gW{407N16*ht+BlojIXvtxj??3DH zASUxMJODgo(~-0T_%VXbUGBx1Y<_pSUe6Ae&eESzFo57;-~ z;843@mk585wUaI|HD|kk4+tr6;4X?_a#g}-h^5nHo-Xqch6QAd1_eVqfa$R)F$Idl zf?hK%YFS_mobF{D)nNh9Yx&|ZxDGMS(N-bVSAqIbuEBB^O>wL7FW+?wXQS=p-k`qE z3O?(Ze~+IM{e`qSZ2ZB^s&mpK1w$`Sh&P4SIx9qMqFBtZ4KbKpc4y7h&-N{CT zIPk|$!W%%!nAesCp(l{p5jBOkMVL&D^^yB6!TlCG*f!x3IZ7<24GrhLfMtPo1x$8w z4J-0G%AwW}Hb*TAASPkEeS~lh8kD-XX9R5^e~T;^h@I-O0Ara1aSSaQ(^|AGNUl?bw8b<=-04y&jQI01$f5>1wiG$e+gm#q!rr3d#bL{Ie5LP?AY;sEQ zpRtJLEaj~){iu_NfW846<0LJC@J`YM=0Oy{8AToF0_^Q^^D5KI1zXq(c_zHff=m1b zl4r(Zp!+zO7_uKVkG-t812f`PNQ7k8FPeihANe_ddO zfKvR*NTg#EQpywf3Z`-4$8!3v4i+$dSI*4W#sjl483Jhsh~+4bE)zQ*U5#OSuGqry z#5YY9gW~NzbbW6xz)1i!bbJL2Fr3tKmVka#LH;I4g3B6rXa|0v&hqYgf7ZQZ)_G#_ zjs$Qt!}6=nU<P*quPSQZ z9e5~*ofq%k_)s92-gz}1Xt$3Pc$@~)a0(PC5>s(lgg~JID+B~+rZ);>4JB~|MSBXe ziUDF&zD1k?{Bs5+GOujSf9gR8llxE>+kzn+!}MYtbrpyfJRB>hTfN)@)-u0JZ$y5F z?V2U|y zcdKdvl)XUcbdsfT`de{0gY$zy&o+~wpp$rYZx;d7Y@`s4Sz;E#e+SWyI$2jeC5GV; zR^CfEJ_Onvn}zBSlETjM>8Za$`pPqDG0vg~@lr?*UP4=(^uh!bAo!g3MRYKyL3Bq! z`;V{3t*^Qca1g-mFKz{^4_gojlft0V_UJr6KOMJ*qhHU@ z$Ikiwdh{zByAI?46qOBb0E2`!Qa0gjI6+dU;LDSZp2Ey!qyAVOA_XvI+p$C)8$5^s zSmeLE_${13lUZ7%h->kS=(kt-NdnMAMC1@oPcFN0ycLHff8c{z?n6ABMqjM5i+s1( zwGQ?wG)(F%+NJQ3Bw-1WWQns|bf!^`%}$Y$1y0bU>Hw8fUvk`UfcafF98`B%t~R7> z`LImbks_Y!vggKXe=9T@zN7#%g1jz@pxd`BJ;{8;#JhC}D54qd-Y>EU< zgQpdEU`Tqze`uGHxJ0c2k*F%Cg_A~NbZeL#qCg__tsTn^VMqsAyN?kr#yBkG4ZH{^ zDbRcrU8A!2^2HiQ*ya^qE3DEQ9QLjx!IVPBSz?WXT5bNj$v@06ACC1Rl{@+z)MCWE1k_gqGWtF`vgB1@iMcGp#6U7$f1x95GtwYT)owX>>dAx18sj<3=D5QQ zVYa|XKCJX52{=-AN546{KuEa3wK>5*a5QteneQZG?>#{JC7MJIBTu<6f z<(_3Js76e6(?ofQgOM;Sg8VFl6RdjWQTP`GAg~#F>_UKtQ(^v#D%0P{W1wuM6zB0a zFOlrdP6&`R0U#@-ILXkyL194x`Evwoe-3pP%Go@lmY0BGYeK|?pf`gcpsqyRA`O&K zB}Zu<{!q5aVfc+q0pbnOpeD{?Ppl_y?!sS(w@ic7I}TV9y6!LRQ$Puv-7c4d77*PdQhmNYP}Xs7iD`6VE9t@F_P4& zC4H$QeW@c_>J^t|;o{1Ht5Wt!04Dy=@ z*`^eU{S}@u*0tqDqvhCN%{}WP{3CyY(`K1nhi9q90&kSK|NLiw*Pa=D^nqrek9`^Q z6k~k+`Ua!u>)Cj`8E`U&n#i;!kT6qq`>JxE*KU@ZYvoV|BFm{_jiqk2Qj<8%!}mdP zMFq`#q2*BsP*yR*5}mmeEEbHyfg-aa{Z51y%0!f56;W!}i36zJs2b}PQXGE{C%_MP zB#CcZz>>gj!CU(%Au{$NPA6Yb9PICg4H6Q%^eWzyR$5qhXAu{ z(oLYdupsV6Tq@U~HNn}k2 zk1qS7>u`Xqegr&NJ0SjM9!;k(5Z5k-mgQLku0wzlivHquKsE6@Z46tEYi*29?1)eh z7pgz)dHP3N_9DG)?igLnd%c0E9JVoZYz73NcLhBPlMQq!9GcU#BL;t78`K7Ret*v3 zB2VLG0XcC9mTQSQCQ5DvVRLF1a9#q^^?EzI(Hx;ONQzB0*G^>}kc6pcYM3BC5ttRa zGe8MeVu-XeDX4;jH$lvMRKOW<0o?}@7@!R{hypjfR4O^~4n!f00n3Dv-OUyXt?^>S zLj5HRg-J$d5}ip$wt#;{cpjZBDs53j3vV0jEHMI0z`RUpgF*0nHU+ zh+{+hEf4XMwstl1pElJPTtn&u=9c+Zt3*>jv znMZjJ_~QqRCXzWeFGeQ*+vWTs%2O)F#qv|if; zCn|LP3D9MJO41wyA~YZ{qI8lHD69j4J0>^(AWDyXpS&1BeK<-nY4d4Un zWl8k0UT229X&^}#BpsWf(FBqug5K8cSm80k%9VJ1fdey-MbB?N>BTJ>XB>`cL-Oe-Z+*&-G85@$a zS+gCr6Dn2e@lbkX%5ulG&Wdf+&@(MXKVHr4{U7G6DlJ~S4=AGD>+C;c_|>B-^a%t? z0*X#xgH6L>Dn8gRj>o@zAm!(l3%MXp;vO5%M{R%MsBOih@MV=fQ48nGB61n^l{c!p zZ;(2M(V=#MC=FP#1?Nd-K5hw;>mW)O3bSnDXHtPm=%~P#1#2aBeI0h?3mg-N1#G8N z6qceKVsPbOkrx9ubN!Pbri2phK^Q`e9A z`P@Eca}1!WG}Zl?y})8K=d-_LFMM6CWe~=BxcdCKTQ>H&)O3Mk1s85dXM-%r084-7 zC(y_P6^a5_rOt=E;EKZ?C41*U`2KPI8@#Xe4_Pvcy*HJK?&sPQr`oIcLZI=Z|CzI4 z?79Dff34T64g0MGe4zC>E!1AP*A9EhS9%ggvHhFFUimM(zYSgpGOA1}i@$ZJ?YYx> z<**l$sCvm3Vl_Xp=ba*5@Pb4TY9)UcikNVK`$av0=YryG$~_mE2tIyq?h5q6VITb8 zd2K&wgDgbf9QKEA>x4_Y@3hKn8hPWi?AMUkfY$h2{N8}g#Q1+|y>|a-NRCO$`MM#c zNQ)qTtvcoZ!NQ^aqiE>^`%%?QBXc}R6S9EUIANGWgrBEHk0X7NZ(Ei9ing?oo-tKolwgeD&_g$MePom~gA+9RMi149t zoY3_ej^Os9y={fNA0MjaEM0$KB_`QWC(VkhXz~SsBDcoO5G(vcOc5;2nQ?z@M?gHl z>8sRI@q7?(Gs?O6PutEjQ~L6zphxf3$dUueP|_5&P?#IP9Dj1=emU=lf7zdxf2 zh2*NLBKhli+$@i;sE0$SYY)9}z7B8KUprq(A!^|at$sMSyuy4NfMtJSM!JhzEvr0^ zv~$0Zte8;yA&f)<yTu4y53}jxIOHDwboA|h+4M8SEE%p*2m>~`hvhMAzcP6lm{KT*8 z&1u>2`p=rsl3P%tmrsAL!g-Ll=g}lf^K@3UC+Xb7bVuk&JTwx>>j5fRpbT8-0s)V3 z6noF$%01&_cLGFJQ8PIce@p8ROwLAmr zB$vJ;kZEOB|B4J>t49|)*V`w-UAy0d|Dwbc_-}$8tv9g2a+s7w8ljY6voU1mT5By+ z1m4__itu}L(4|E^eBv-e$BJuvlZ2UbWrZMV2Q$3%^i!lG9U(3WH8w4x`yd$L^rhg^ zP?fqCN!Q{fXF-2_U1BeRJ1t)!AcrSOrLbi5kkczGd@cAq;PQ-@X_%*p8)WsOew9J| z=RZw8DT9t(Ig&SIQ%k|B_I*neQ z67I{ZRQ&ZLsrc(HRQ&ayq2f`G-t5)2vkBJg#UmKmTbTA&(srk4|6W9J$7x$ zCck!ok1OZs$JUJlteiHj&yj)q(S_sGmFvo0vEO|wv)q@imE_6HqT#?$RNq$*b)F8% zqf%Zl8`|#xmL>?02)g;`#hAU*_Wj=8JL8pvo`#c284`b~Z_O+SspA`1PZ3J92nb65 zm4DLyLi2G7DGQh>AEtjgL`fk0y4G!Ic^2NjLc}ZgcN#_;$ zu@7nw;M~07*y1Pu4JtwW0Y7~p=Qa4F>g=B+?fjAb{MZQq@B{qvb0@4|54Wc2bYRr zqENm3MSiWxOn+J{7UZIvW zAiFY_n5NJfqH12LZKl#$UE_Bi7QrYi6@_a$al^v1&d-;YYgnrJT&M)5 z2Q7k7<8r9}Qt3wf0JWpBsAo!8VK@gV?3vWUi%!I)UIx3}cNbH1#ZQ zLBAp(&yYIa!Im<5w(HcU+I&{cfhu5`1Finq#)AY)n40Q2$WA#`x*%_$9#4r!dHD=ug{nXSSC128fm` zNa#1DVJB>4sLm=0Kc>K9Qi@lt4hSH?gNa=w|;kYzC?72e}gIf{kGR@)6X~X_wT*g`Lh4_i*M-fv-9PCuQz{b)6We5 z?te#teF}WrqrkTin1wU^JDXt?{LIGP%kp%0X_$%xD!oq{)0$}w2&=(qE0w~5$w9#}vqt6+BX7rhn%DMLh#_$9p&nXgqHVk&R z)VIck=RNq%jfYNmzg+u9D1}+_E|b_=~g?F`eCCN9SYatv2U5zSb?<*Pha!+e2@J z`=EO6y!vK?dhgc1TTWTT8vTm-lk;rcveqb#T+af4*EM3p zb$fU|b)nAl&iSDT2*%p$@HjQz7jM)< z_aIBm1knvR7IMJqRf6A4#cC@#v=mNkmCELoK8U%f6|hB&Zg#+_bc_1ErDaU2HeDTN zrR}mvW8+Ta8GkmoL^CVwF7L4@rn>s3^AKxvGE4;dxqShe>Fr=P|YZkYF5+D`h zLiR6V{c7)cC#GCT@YoK9aEPSYNiezMl{DHFsCP3f!B#x^ZnxD|V+g^p*(!UA0W&pk zvUX9ce;yzJa_1-WMPZno*p^@8D>p1Rtcg5WXv3u8z(;jWTb#poeboJzT3EzUels%~cSUR3VVvENU$suu60RIZOGBSa!)}U}e-M~ElbXmQwCx5ckqcnc96|%=?((9* zN6#m}FM*(wdJ<@K_O=zZ!_Hj`up5Ok7ekR4v5kb4z;5sH%GO2;V-DE^l2z3#-qrOo zgnD9#WbMo7HYB@Kx~V!@Xt!UpDkn$o>y!g$Qedyl!x%4HIrS_lXZ8Buh8Y&LGny#E zfAbXgg=XkYo=cJ-<&DUrNM1B`EPcBo-%@!2ufLNSe9m@q2o}sO5Xn{XU-|aone*on7LoO53`=uMko0jHI41=|1rU_bwmrAq=F$IE;&pDYCl6%GI&kr$`wGMjKscw~gjhUXgWC3}0@WyE|D z8%4yApudn-#^ZK`0kYqTzuE*`LO-M>KJ~;pZ)a@gr|k$8=Ix*rxU<#_Z3!m!4CSR) zN(9QdUi)qj@f%lu3pK?-G%)}Xf9h=mJ~isV80p~=LUT_XyYXS>WUjv)EnN3&G!A$e zlMo?>0;B0rzOh!1rqKc(R0b_iQHe|`(y4LX=?EK*u|8IX%VE2w`qpEO=+!fHQ0^)l z2#qu9!me7`&`r4y0p@IFs$TZ2Lx{-n9vDb8zqGW8xGAYLOOHTwI@RMfsUR`7HM>*a?;!0WPsF>1$AoQsTURnNdWfn<$EoM}jmzA;|${_3346L3Aj#k2XVLY9I!!M2&0OV-yfxdNU zJk^Ps(TLCn8B-5O-;Bp>e?<1y$&7l4rUuvuAM^FcXb)gCDhSD7?tovf-aNU+0 zaq~QipoiGW2s*}pd#GH@!+jCn7vcS}cKF|x>txpq;mKU1UsvPSfB8yUgLBR|U5A)S zsIIK)tUTJdekeYr1>i$tOlZ9pJFxW8G8{d6{RZEI+!Sq>h`|_d>EGmDB){GfX0D z&NDY|*+IL&Pr&dK6==sQ3*g?X)>YR|T8ZN>T8plowVi~#5z|%#$-aHle#b7_M-Ka}$DTs$3C6zgKeyiuUSL14 zx&H8l>+iS3e|mW@4n;h6^F_N%;oW(!sgkLcdeN23jce5D^?;yu*pK?gehy&z{NVlI zxrEQ({5S6N){E|Ye3;_e&w=H^(BQ|>bHE6wtMwauNl+NG$#|o|nExaDv4qxlRcPG` ztH&Cw9!ppa{ADYG9oJ4Bvra&cK zvlxCS@Ef%5AbbJgI|yGucn;x92+tvWIc8X_oZdGL_790xCci1DH;8uaZ;1!mntX?L zOZ?=Ze>Y4#G^l`InO7oqZWT|_^3g#)hyYGPG}wLHhC^Py??~2bVAC=B4x`1JjeR$R z_zfo})OKQt2K@uAZ)mQLA4D3CVyJw>j`7bIp9oov=*3%c_IhxSc-qgHo;nRLvoOrh z(htBj0nzEFMsmhu&(aq>pT9Jdi4Y~0+7FBrf59R9Gge_+K9Ka_6%>e!B)X!JM1~(% zixIcuPt4ZCJdLl(wmd2G`&ULX@_0n>`3oaHOycM|6r!>m@T$=iGAE}${~(Qk_}51A zB3&$Fa!6EMm86_MH|I19Ze9fW720V{LjRK0Ibu%bO50a=4LNwvFB(#gCX+DF(+rJO ze;KJjG6|a7KQU6~%eaW({8aj<08Wqy9Y3wkvs{7a>GaOOtqto4800e}mTPE7e{d)O zNZrUwr6wJ-p@^i5kmh@s!q%igVFf+1eWymF0coNPm7zrsB-e;qleQLyNY?_nEvXC$ z0gdCyST3qWvz-kR4pT5kf-z?D?UF@0fAot@{k_j43LY5cB8{y@c|fR%H07C~=5rut zNg9El~icN&JJO8`1Z3ZVC5vG!|%wmLq9P)4s`jUkH?ZyQ%%}hIca4B4yS|;Csa(J z8!+I+;Xs0!Q057xfV7PccdE-Hf5cP`3nx-4Hv1}OB9SfB76FZ*B`8y&u0SHnpT#W! z2FV69=NBwP?t*Cc|+&IYqC6A z>mJ4brAb1FExWe6ZK510ZWg`U?KSi+Pv>Dn=P>%ep>Gd$ttY$I2w_oNe}q{RfKkGh zwPjg_9IN(JQe~00x_mqU{!H~4>2T`n-kz|mo!!6A{K}@GyF9_bW7@4=*)wjXtLZxX zuN{+BmF6H~Xt7xlX^}e{C~R&|Zdq?YxBFCU4iVFf(@PD&f~ zS)7gD3og+0SKJYZ7qUs5CeWSxx={CyVRzfE-67qdW;>+A!j#UT&0R#gt(HX8AT!ma1`YWxfKGvV*pgBfS7I{~W94<)wePT0g1B;ukv3Xu7K(sa6YP;3 z7{dwOkdVqTY%{W*e=tEu7*+X!<7~XYR;TV3MjItZVk*c|Es4CMu~ew0HS9LL8Pgs3 znTiCcoK<8?G!u-rPQ#3zFqZXewuy* zR+|%HV4D02)Yld;tYCXmu7sqkmnMEHU0*nCsSVXnD0o4Ee~@kq6QsBGDb}WbS(*9> zEnKS7{0v(PuZe$H5()e^X9R*`eEn{hr<#Hwf>YEebw9z}GFQmUTQ(&4-alC%c zmiO@utS~mBxi6I#5diK=UhJWlNbb(SFKyj7kVK@UVyFRSWsRIh;G}|fyQ40xv^b)j zjdewG+O;%ye-4%!u7ye=!%FFftCb1@yLV#@?n(1A!5iS~qGkxbw>T-;g}Z3TL#?vX zxQ+nVM(AnK7!8h|z_n0!tx$gJJuE&iYl!yC(s=J9o)R=wB$6uih*)101q3)~5V+7N z(|f4`PO~*aX9Ftds^3cTP^!yw)?$@NchcxMHXC!zf4}ap_E4z@tvT_sUM63X^d@nn z26R#q_8SGo&B{5et00-iVFpLzO@>b$r$34aZaduYo~lzc`l%)L9O$mU>J&kEgsj=R zuGYgP7BN8I-X8u%nSv1Fh+u_k&#FSy45g)|wqvrbCl&P*XJy<@8<~|Im4ZCE;uWXd z)_FD&f8sY1P|*sY1^Y6dUe9RKV#A5ndcDfYiPmef^~!kQEM1^yqNrA+>U|tBKi3QC zu|VA5C&Y(n9%yz0C-La1SvFvy|yY(twzuRF=OHMDHt2_2m%x zXRDPKG_0X5h6SguU#lEb0qv-XTdyM{ge7GYH^~a#`vaavt4oPP@|Y7hhA=FjqmAv{=7`kul1`JxOuc7 ze{LH7_4%{qhOmE$AP1~CsJq_+!dg4eb%!^_c%z@r-2W{pC~Y>5FhsTV!zRP@#)h)0 zzWpp_@tY4b7MT68>b>r*zsf=Uw!%lQhXKKJ@-f2XJlJ>#k;_`~0U!w0!Yx5XDe2@oq6K@n5~ z=LwQTWer}6krX!1u<95z%>>d0%E{&noEm_v;4i|vrkw$(M8wL2COue^x<)P&pi>OC zU)~X?C?Kqi$O~;9Wasi~=U7<@7fz%8+~l7A4q_+(lY~F=p~h}3I=&JgD7zF&f2||l z@_3Nri5ivjm!nFTNc2;BA+|9xJT!9yI;o?vs#iL85y62ujd^VXam+MVxl|!e$v0$0 zLNuL9AgkTnAsDK}D;n~&i9S~6^(2m9H9ne$wTQ$s_xcf~KQ)#9gqGTs3K^l#Q|@LEP;h-~fNsUh2MU(3xxv{UA~mHBl1Ra)bN2akc-|S} z!@Dl39sx^H3hD(THnTG_a+8oS7k>?mnE^|bFH;5Nk0X{Ue;g6^TzI^gX_v^VMJksS& zuol8WJIoEluMs$Aw+a?+Jj8d^{3e`~VolAcAitE*tqfiT`Rm{=T^1XAUlz^BxZ+WgA6GgAwt=R-Zhv)-hC{8Y_g z#(CB+;l-DzsDEXvMSIqN;2~GbSdE4A$B_NbgD>)c{Yf8g!nWi(E%RiLqNe|(|F8yW zV%41IB#Rcv{gZ=f!epCT-H-noQk;mlsIDfbu5%P#S(_MOfv~ZUf2c!SVJ0r zds?XLfC0LtW}tKH$9C$q9jiHbtFT3DSti78zdeF9DxD7HM^$g(hm$i4NSg>&=2$E&tfPMOw)ElXXF+*2cpv0B ztEB;D{(m=sTv8PAG?q)?L_uvn>IRoWleb`DH3umM*f8kTxMJUoUcza~4&9`t066GX zmR@$+RPp!yO85~FGxCcEFU^T#k2adSNY>=gn>VNm{bk0rCHuXoLqiDU6ro}rS-@N|u z?Cd>?4jxxBzn#bX|6;Mu(@t-DQOr~n3o%`rQWjK{hjT%e8-Oej)CrtA+}M99Pe8#g zCjv5nDRh5p%73W#dvUD1*O9PY_%6NUMvG|({M?KTE#et@Oz>8N z?0>Km0P$WJ@#?M(<-46QK%28#2K6RNs7fZ~3x=?pmCuLv9mh>zzp@!ZE}YFj(>pmj zsPJ@_F+lOhz6FqEq|2}ej4K1Q*txi)@OmA$X9FD3Db_%23;)z+Zs*EI+kx8r2qWP6 zVKmIVyiI1fmO#+2LT%sk%4Dc~Zk*bI9e=YKo3M=Qph7i|D~XRvU`b7>i8vj^nja<6 zoL226ZsqC`aziKohsR`{r++*uU;4P(@@?6)GuAAEE;gchm@e^|bw7OC{TAuvCc8w! zX+cHyuj!T;n+-3bqresJLoZFE5j1bz1#e1M&F?SJy& z6#u{-U>9B3Wvc)cu)KmTyoBXwCPo*NR9Z<|up#`+X@%ygRo_4&pB=XMjT0`b_Z%{I z_gQ$*A12-XR)}?bZTz&`?U2{d?i-av_jJtcTHcfsW(T%4s%2wtv+DE_{i7aI2cdKR zKCi|c=JMVintcqKrqAeOE38bw?0-?c)Mm2mXsfy+@dI5oJ3D!BLK`Oa>XF@Tn%IWP zUHoZ;t%^-TWlaTblz zmyM;fVc{lF-fn9(w4n-YzcTxGTiY*dvMUQx?HBJAUz=)^uuC0UAx$WF(SHQf<>S(R zTS8cMvTn96kSwP_%_w(rABbsdC8`N!%U&%>f?jnRPo)EBd6U-f{JqzI_MK4jAf4|* zf5MXtimo5Y=)Q_}vjN)Z00O<$dFqIVpP{{ky6GZSOqd;Xg6cXHZKy|k?r9gTs2y~2 zr=<{lH|Q)7>hTNg%Y^b~iIiBr5bIP7qPK8<~?1_0uysjgX_K}^nLx0wzSUvAiH7}pO zgMN3v^Y>@Nr1kgCvv2pGi32J;*q8CPNWhLkZzvjjgFif{h^*w@@9b-tzkkZJSMz*p zWcuzKo~_}vxkd%TbPi$Yt$i^}1g63}!kBiZ#U+$r2x5RO0#*$FzDoXc8B9?Z9|G@| z1%(pElVms(;p62+G=K3TnU@FiGBb}znW{J|yrot%1OuaLh?uF|QBrtunHz%>JvT;N ziHK8lr?8NjDKstfQutbgPi_~fH5zut@u)sg{83(<9n1^nSI7vQ8{LTkN7Jwq-uABMij^kEr8Fd^5%7K#qjDPGP` zfys#y;=tPI>B907B1J@H_^z5Hd{nf2R>JTl3*KCETW8(#-0eENU}3y^z9o4Q8kefX zLw%`Ti)973zkjQqPM24!30^|`52d4}?d?j@_ZX*=0=;2^?;JJ1z>cTcq*E&VyV2fW zl)nw$+PO1KyxgG5D^IQh@w%9lwv?7~0Ku`LDp9)ILFI5%FH-ly=njr9g?pxxa&GOb zKqI2iqOdGW_NwV#n(payo18-P0N^j)G6SL-=HL*rdf7P{lrdLVqeguHt!Qjlgk=Ilz&d_gc~w6xF2&)xFe^~ z=g+omDSt{U%|fCJg~N8AvgmtfP(HV0oZQ3LhbU$Xb(Qy0-(700Wn*b?kfAXRu93F7 z)qxhZQyq3^M)k*NSB{MD-O~^p@r_l|19h`Xh;n(Qaw~69n9d`9aNh#4G4=ZM<$}+=P8dFB*RVg61A4C>1IVmqeYbCjfa^vmCCD9&;MN7#i92~25 zdnrsprQ`<^Rm6-XmPZNKY}q($Zl}P+*r{+Za;prHOD2i`V=hI)_pb|43K`fODxx~si z45kF=y%~!ESTq&Ng&#)mK4M|D1MUcw2~zy8*6l=_R6j-V(O$hUcyGF89v>TOyUXTv)(UnKs=^ zep8LKRTFrK-3;)NZN(IYc2>xm9n{=h*`r@K!p`0RHTL>rfvV98p{SayKW;%#a0a&q z@DGY7-26WN&|R2m`6jAbz7e(v(EyHCmq&H6f52a&62c6AphsBcC>Z;*jdn&FV!9F` zN>GnG7FWjMA}_<1`pi5Fw`|HwB4R)4xgt6`?_@ ze+8=Ne0=kIu$xyEXV9RqxH>ZKXMt{4CC|uUDv+WNT^ql6_Xg*dBMiX%sI6o{7}YKy z**2@x%mD1Zcz1mE>HUd>SNnVixPn?6Pv$dL5x>?Rk1r>J}jBz#BuFMu!JGQR2H{EU7FhlAkC6&_h*W#v^Uc6DQ# zEiLzutR6RtXh7-Z`pGs-gy)B_2|YFqGsCQ?$xO7#GK_AP} zN}#42WtoFc2)^=YPfoq-jr>|HzIh;b)eY$%$qaQ%_>@8pJj z21DCf0ZS!9NMCz977<1o$<3?*e?(e&Ht}|lMSmi4V7<(G;y~KQ8Vl!nmcsf4Xjmp(g34T&vJf!hUPai#k{@g2|Ul@)ZC>K)k<9LITt! zs6=&gGWsn$1)T>X4xrh$de+Vz{f(x+RVnqJXR~&muqWJ)tM!C!tD75YWKXOe;eSQ< zzP!SVF=Q59`6-EtTqr=I<-vE!PXLZEPfrdawA*KN^?$HCx4>9^@vgFPc5eXy2grSR z(5247uNcPRlPxQE{4f=VEM1UE^4)SIzt)hIj7Y{>RE-v0C-G6WXNsk#(qE~--g)et1J{zP}8ZrW)mmmv7M9S)x zFv&{c{ni+P$ygC%)RwQGJPN)OA;uFk6r6gc4AsC1n4qwMOhQK}A_4h!6-|V=h^KFn za6$xfB^_lB98(GAZkXgb|* zn=wy~GBp#JW&N}nlvT?8A%C(rUfFQM>(X2`2wRxcDCVmfv!MQ&DY;DfhNm#SNmO7T zJsT5aCAs!dpOF=J{ELDw3tjuQ-SO~TIQ%>BoRfn;_zqQqGlVlSpv>pzxyv9jZ><^r zg@hR;*!h?6=A(mg=jS&5*p|C=EfM2D#<E4VJo{<~QZO93UmVX<#mI&(K&akZJ zO0+i#;z!h?mt63Y%EQE;D?R0<=LFXcMYr|+ao<+i&^0w=xl`9#TkeAXUeVtP{hiU@ znBMr!Mc!-I5?zNcr)5#%rH|YsbP!YKt~I1ye+B#2*BHi2v`(#subFjeDS^D&b;`d- zD(!FKD}C;ydUv^AFMs#;cJDaXxm4aEgTYb}rxztTSxDwrXI!s=X$^0~38daHy8?=e zF4=?(D<+N}4T1|%+`d!2HIgpCW8wQ-L4f7ucEBbMHz>#*baVK$ys(x+AZK|=Jpng~ zL6zT4x0sajn2gyaPy}B4brv5jpsNxsdlv>T;>U7$(;j@BV5dWxk$7*(46v zi!{EwOcVOWBXAwYakR+8b%thwD26DwHTh`$std%*pTKgNUlFm;u1#Far7gjRVgvrQ zNQnBXVaFug(0_gH(jxGst}>gIloFS^CR^ypmc_*qv+^Y9!P=lf7<#rtZ_#Y4+ii^! zEYNXw{U`bL<&&``!AG+UI|2Ue%9nKwCI|2j__KI483U9}Afq2|xU6(m+l%^RIqtPq zNq7MTpe&XwJqbE{4P12&>*WZe4~zAB0okOdcYR)_et%M-U$3L^=6Q;C>#u8RoOnT7 z{M8iBBUosbpI%s8@ShuYGT>GXrb2R=Ie7PZQ$91DA|mPc9Co6|?en-xJ?<%wyU^pl zp*YNVJ=Cs;t{v|ZGS2n5x#L~Xm{0u`4Ft0AZhIG-%I$$qFROmgVvuGjC3gND4^#CL zbnJy8?0+d=vY|8s-{nU0P=R4Pz`H8c@I3|gKC(|8fLnUFfL*-tS64w^afw*iWM>6B zrhEL`u)GqnLE#cxRqmF(D`xZ-M&EGL>s|9$Ze6{MUSPAwr>8V}?~b7y1dtaBV1D}W z+B?xBgt@$1#-EyDEU^fH4BrIVm*v7cE0aEiGk@75k@%KXrrtY7gO7i~%KKJb6FH&y z`0UmXxzox!zqp@QBOw-d=!dI|UVm*%ck{OsN4Kw9cdBI{(Sx#m(YmA%9%{EGi?*;` zS?Zw{TdKvDYH=D}N7L}3_PVlQ7u(}y9%`+tTI;IT!r!;&MEh-qgY2yG2xoz`rr&Y+^ z0I_#G_6}lc-uaVuM4;RJ_3|wtYScGosh8b- zsx#SM755Ji$vPQS=`b_$j^R$mih|pRDhh5JDw2_^B4wSm;TaSkn#C-am!YHb zv06I?FdNPqO`p+CnOC6~4hs2Au-Lk2YQYALrEzp<8wWzkX7k^E&WS$bqu6CG2f5(B zQ%2**9C)wLN>t80bl1*3J@J9#PtOXcpc$bbiTr)`mdWQ`=iD3OD=l-rEw`_il!mO) zpK+xRkqn^tk9_H9kdkrb4-)<`;D4fVJ4U#tX_G_%jcq#@UoF~BmCx0l0_f#y< z!$BN}aml}>_pil!&ZyR`Dsw#!ZWUa!@M`)@%yplM8QS1OZ-RE}_MNYDR8DAEcxnLM z`wgOw4q?Cx@(EK{S&^JU&7(^sw_A0(qwT{KLu?wURFUH2jOv;}+;L=7>SLsSh)#!= z@MGsV&IkwHJgGMNF+^wG=6^tg>OixGfo9tVnmssBwD=PwmvMEE$&28O4vok`N05Z} zBUFmgAv6UviU$)5jA+ETDMr^8Rt^}wMTRK4*^<6wWOj10eZm4vzuJ}_upHADe8D7$ zFSY;@t0ctR5+>UcuC#>u8ZEZ1(c*vNunEb!f9G?N-3hK&Xl6T}bbs8+JuKVg0~NiX zR-IUBn#~EhgiKsC?Us@CP+q^&YNICqCPWf6pkHM zp!A6*5DAnY!&}nXMt@tmM#6_n)TU}m`7w`qilAo81wktGb9Q-gmO>t#M&cSBU4Q@C zGnVk5jDDm7Jj&dBL%jw!?1)N^aeta=u&-s>AocB~8#w%-9G)S86ZweGlkQsyO>GVg?5 z$S@%UaDjwxHc{9ARyxZi%9C!n?Wpzi+n%6Bc}$L`|BRTFV#Xw>;ZwVfHvP<(h3L&{ zPD#OtJbs9zE-b5F7Z>VMHr19gj$px3+Lnt~WJChvotOC7ALCVps4)0bH3s)oNgq#D z-3AnGtC|TaS$_eZEnF@4xxZ!A_7x-n9WR?MsOhii3)}u$wfTtg{Fz3Bdt0pzIlO&T z>mg~E3eLsuf9nhi{fe_cw0h8lS4eYgr0uO|Pn1f6$__YCy5}REPd&Rl!WD_6N@ZTg zD!zu?q~;mi2oqq_W14Mntqm3?hrqj%-(->Mptgg~vVSGFqN6AwYbeqm0F}_)(4!_? zNsMWwTb-u_yRFW%?+JEWojy59BFzcAM@A1(!2~)n&;C@Vp}g=Km^cUGD|CiE53zH#uL(;8D&~E~ zcW!ZThks5*jjo1!BW9h1`d{G4?Y3G^ri>8k;j1D zx;g)vRHoUZqVR%CCD3(Ohu?1Db^Y)huf)nGe}6oEjZGrXFq^Db-W>DiS_^NXvA+$0 zj%t4&v}fbhx0|*4hDN{YMk>2bMgV{P`!evXzx8@A;XjLAAly%|Xn4b^#E{x;! zMnpgbCDhC~;nZa3IH5!VZw-W2S&5OjQ0Djfaizp#@~Uj{Sx@_P5lrUw_t->vcSBsN?CDI-aUJ#Eu=QiZa5fDj1o; zoPx#Zo3ValhhfL-k2ke7LS|Nc8cA@L|Ec8@)Ns@CRjaBmA8vSl!CDwELVep911!$h zKsCBZIpRkb{>dqpd0_IltrB2SBkR*@)^agWV!>u)L5uFHmww>S{IsN{V?R9rTz@@G zTO=0nQa2~}?h`+4?YHB>($DM(i&^CMyHAmD7eQpE#b+B+8Ytss3l`p>gM(VkjK^$U z=IT<)RfbP932@(^T4iFBnpe3}6>3ZCOB~)h<EFVCttm#dkKtqV&q> zYTsUg4%E0#r`<#E(z%|wuVwC=nSb}$HzW%wGw*Ae_sz`Tuy5--5VqX6=9bfgDFthL zjnC#5d%8-tQD~Dl%kO1>N6&!XfziGUj&NEdB7t$(dy=Fhw` zQYx0x>xG%KQDQkD)9P=ew0fNNnpi;+w>T(-Bom&EC6pHgglQ57>p~DalP~6NdwA&qIYVdfl=tJ}cF%b9R3Psz}3sK-Wr1uz^%EI=BYX z!^3S~`fj-0mtWbwz9e zfpVB5j0N$&7NV~X8nrM?B0Df@cvO1H4WP8qR77g^-0BquAEsu zBfv&me`#(-U1EaE$~MxHj8q~qN^Ac4>{aP}&}4)vmOxhp5Wq(z|!p7&%%V_Gl zoFgH5AAdRpdyYR?0CLn{-S*K5SDI$iymQ+}A7Xb}%pJwt?rVAWDUTL&hcO$i8JuT& z=0FY&I$7UWc{8dH;`X&TEYH~_5#@`kXsPwYpO}PZ7>2sADB|nyM}DYocy5DmN3O2a8Ds{Pol7r#6gM1o|cbIC8y38 zuP(h<;naF+k{O>VPn$JnOpjNeL00zFtMq+Cm(@T2P`Q3K?0VPUb=X?tfVyk*k;6f1 zn-wZWK|V|ELVRpWp|82b0=yyxG78LY_3_N^wDCZn zoytXF6^7)CZj;qe4}Vz--+S{!?)&Cz3!COnEj04OYb;2i#v1wl9a;mO9`SaB21jFN z&l+Ic-NPqJP9%oW2vF8R*950S%Y!&`?GEYjr+T&s8}~IzDe6}@#Qn);)NAFYc9D|h zXU}V+d3}fD0_wp#GkCjirpis$a3ZM2J{aTr6OCmLv~6bI*MHnV^OvYwpiI3>DaeUj>kVw!d-D2lePZm)FL5mOiOEXcWIVf`Wqn%$mHJhSki_*wR#otq- z`!qTGY^B-2D1k}ymbXn69d`rSHb|6~e+gUarQ=Wnn4#)#g$6Y=Bj?#M@FE>HExev2j%w3J0 zP^|TgnrJ9=*I4MTER^-V#?BiRHzey-)RQxns@d0=m9{lz$Ve`Qj*}gYW@AkRZf7h2 z?zaSGwYNF>l1s8Bs1PfuPMa(@Xpuk7s-#e;-@cP89e;eJTJQt9snG=8FlxRs#H;A- zBzG1rAOsLfzW|}MZ9l?1^RG|v^$=Mu&(daUoUF$Q8IM!)kupj%*ih)ukE7;kQEry}tVFy~2k$6_+HabI;>twUq}5>h4$?M9`X$ zMFwQb0DqdmV*}H9$d}Qm`X$y#<`6+&C6swSnRz~`JfECq%A2n26mV<4WYl8G%xKF| z+-YhV9Isx8JiQp+hx|&a!&W@tg-igXHg*M*`e+q+>ceZG>D7(j{bSMMZK)f>mk?is zbE=wTH1tH+=0Zk6TvI%^Z$`IorL}_s2RFnQ;(ut80WWr61V!-Ehu3rfYGFL%N=pYC znd*wIJ$I`?{YB)B2~GlY#?VsED}!t01kGGOGt*=p=V_0@gq^&F0& z%$h{ye8G37jo5YCgkGs8UX0M)EPNAYfcmWR8{eW*wlZW+^iL{>p*RZSiHS77rg^tAlD} zWV9UjA2ocnx3bpE6zW&Kbi=-`HUHPm6XmJTImF2#q5<(-151MyJDEh zvn(x&ScZluVGzdaR}_CBJOQH+sRYkY#HNs28$YI z?~tpK`rqSy4azR-w>%H|7k`3Ys--~z| zRED5DcxL}1)@e#rUX=MuKFOQY1WX>w7ZU_DPQgUrl!jMS`gOsRjRL6C( zOtr>PWEvQkmjVmPol%h_OAY7;eE#y|3r?-A{>XQcOUjTPG=B&yLUcykhyz1`Ot*BZ zbY!TXgq2DLx}1(2lqYC(#;-`+s7s$4%!FX(nSx;&bq)ui97eE?4om8N2!2<6z#mKKQ1vUtP)h{ z?HF>d*ZT2iu78_;{+TIFNW94pazjRDQLrtcR0wiaXlLO!U zN?YCmfRdo^&FL(G&bIca7JueIf}3qe7A+5D`S`LBW~$T|R^J1K#fu2$FULe- zZHJNdiFzCNmlgJSWMP%^;C880R4}fGVImP!CKglCcG zgAu9KXT(?QQ}oE>Dy&v$L{brv8~t%Zon=lH(OkXO8J+N{P)W8tqe^yV8_XC}#9!PH z>~B+DA-^kHz8~NuS!~Vrd71?`^<%NrW0tIa6Va^>O*DJ`Jk4NiIhRfc`LW19&=buh za^^1Pgnv7n(Q+ot%$rF=&MH52K27*60ILvA>qt#<6=>)eR$;jySK&6^QRKMC@p6np z9KjGS;0ra2GE^hwQygIJ7F!iTh8CB?4Hn@!c#_@~&ayOg#;B4rnp-NBi5&5~6Lz+@ zQp-FYDC;;3GJ&|7kOK@8bKrApk|>s#OF!H+z<;dOWwu;JrJ@H9byVs{iw;bqd=g|+ z4ORtGuP4Y|WTZ$--rG`SA$@l2#{Qcp1d!jN(yb*qgCg}?HP0-#OVz&SuwllEX+t z2`m++y@NaiuTG-1;ET1$wAmL(3X%x5rz%;t3Bvu%AMDu}&7EvK?8 zNh!y569-NJSW!t|iAM}k-v zeo(}gHm|l-Z_ol_qU^!odGeV&{)pzS5-4Qv(DF+SsOqS@CL9r$65OR#QYFhCC%xdRC*o7!!&3&pjGByYGzt;Ez1eg6F9WpxrKOH18?4TIx)%Qwj9ZN-9O(`H@CN5 zt-4TCaevKQSvF&6kZ45wOnZ&%Ys6um|Ks%C+pRT~*-B?E4OezmmQm(-L(XOF(iILf z+y3+Qm?e3Am28b_@Xa8e+(R4+n+K(rA5nuO3LMkVO(I^}ihKWtiwSy9m47rQvF2#t zXoQ;^A6;D8g-LmBX=F=X8MhL3g#yhIRW+U&Vpi%04IlfqV@OiSjdgB}uGj7z?5uWh zG-V_YAhoPgPJG`vP%9*b!1o*wjo1!)YKZr1SwtUeGW}*mnAPO=&8ShQXcy^Xi3ZQn z&cgdFU4&T?g`9k18RJ(4LVuObgm^>Gk|GRIG7=Et#K3m1N_htePgKA)y)6bo48I ztzPPN^5tRyr+h9mpgswajZY4SxAS-h+RRC>qu=RSJ7F?OQ5~9|K7Vv%XuY<6I(ymv zPCRx9l4*dibkM`7wKF7#JklG~PJVs4^ZuvjuU{SSSnY22m#4?w?u)Y*JJ83Sey88< zp1dVzJ=RrGEWB>_=H{kz^R$y@mtCQtk#`|)7xO~7F4WiWcc#VEIy_IFlmq5VP+eE` zkOO)Fy@dfLx!=&#et)mm!>Xw(l*=P!yQaMT@4x@POR1Dwo3Os=cBtqGE8;`-#c4B7 zBh#KxnbQAIQz2oWTchZBv1W9*+lcY_HO%mdc$-otix(<8Lf@uR4z+Qf@T=#tXHUcj z*H4taymc*np`yZfm9UWG8*!y>qi6&t-^=k0mTw`PhS_zB8`c4RuWA~h@B{H~X`hK-cqxc%~N8(($L zsv*@X_9*%!*y`u1u?nHcjIRgit9@q)f_;0=By9`D^ycGJcb`=OW(|@b)tlS@w%#=F z5>lWe$LW7-_J3UFKvz)*3}?1^1?#L`Gg+V(>3(ly_c3|pTvq84ep){~&GqW^d8yW? z`B)R1?I>TMBo~$Y9;zJ{CP7bD0Q3YuP0&P)(XwYhC zTAC+Ycs-%p-N^GXO~<>QVe8@;nYOu+Yo^S$jJ#38^?#Rn2lc+4{J+=mAj``)IoUx@ ze&@w}M(B5*2r3}=sg?gVN=_Z^cx=XnoS3ZNg6D75bIx-8}-F~6!zre`T4phoN9rs%PxIi)yrnQ*^6VU;l#K%g<| z8+L(;&VOg=%PdWreE~ewnvgj@qA45}4(cYrhgnUwea)Jsff-?Gp|tfJ36mv}pJ|VJ zvvz-wANsvPyDcqL`(bIDHb(|TtduF5&BqQ>!BH+nS5wRyCEGJsqqdgiT~D#AIXAPp z+3?G}i2D2B>B`6aeQV(M<hW_{R*_(*w|&5!vtwf{lFs}_F&Oz7F?F)UO?y(h0+XPkP82nvh2Gu z^7slZ0Y0Ll{3`gOb^8>9XrO+}O3ZNvVQG^;u@F>d>q6X9=H@C4<4U1lFit4SaxvU} zFK?{B9mvy@>&@HB8UnsKy9GMYc3jIrD}M>rYDWq}rOgCG7RoUau%eqo3tt?BO{)9l zs|pF@?=Fx+4ld&G(M8IW{?SFm)5H^cb$~bXjpf+t})Ke@7L<;>Z+$6->P@M$=>N%vS(cHAtWO3$LQ{H((v|d0*~+8loJKS-~0Fbt)V0q z8wxd3sSxApkWEcLbevS+Rp-JhBIF>R7yBMfY%^Hm6;-UY!G)*8oN(vS%z-wHV&GrzX2J*DtvDI>$J05B zzbD2Z-5IC~;UxpL;QXiC67kA6%+o)EUVK&qoXStet@H%+ue0%>Swr#T6vIidINV3+RE_9(I&>$c5p$H=nrb+o!|D1FBeO2O|- zb@m_fa#k!hFL`%wBwe^@Mt^4|IQLuaODHkU(EyPBvd+0=#nhk>-9p6w(heC5y(6dN zsa4Vi#6}n5J?XyDPSmO5re}5M;e64;j@Hf_+am`tu z>RuS0l`vUjWTzRu#j%*=z%HTRy*2zQVsxB$GifOd`afYX)g(N`j)j#%Ae_AN0uASKdfe#ivuNcRz7 zR8xGDvqSjjBycv~gK*ClRg(t@w@sbkIx8RlrxNz|+kd?g{O`Z$U;N)U_-|w}E~c2s zG&UFGA!$&*XAz-+6^R;awUvHtr(av?(Rt>y1QZPNGbJFpG>)rBvObR(Mw11fjoG#c-1xy*v1pL51cY+_4WU=X> ze2MU7)5Lcy?e|{)+IZ@2(`whfQ{DY;Ti6`Kpa59UuNaJx<)%% z<!#&{P776ET~tieCH)~>xF;E%zrRp^2aMkos47%LT2DI1Iw*+ z4w|Qx_UXDZHyPQ9h}Bf!gCBE&LgB>-VSl=Y-#7g+6F2-=!v|3~y@^~Zx7tGGR&bP4 zcwj*iB$wjZz84ARFWF2>I1|fuqL10G^fCLV(?`Fr0ZNJZRgT_C?#cns^IUyKwhR3T zJq(hr32^YRRuCbG!Ryd{CNCPX6ifEfAjuUPUP%I{><{n3g*&!RO6E$YJ*o>Wbbq0A z7xfR;@!UQwr>$JZ-ag^91kk`Q5VeGPb`hLyYa*2_Hf^VBICttH>XGyM7k}eB%fiQ^ z9h->W50Y)%K_aSU`LEL%odO%hBNFvwY=>NT6Y&@g%c<*bv~gOyr`8X~ znOwzp9@*8A+sU)3{zJHdh8rl0EB+=juD)Qr$=zZ)u# zR;+Xfgn28{i*X*9<~jO% zY+hI7SfFfNq&*IOU472!V1Iejvdh}6JOa|mALk9+%9t({C2%~FL?x?q_^Euk+Jd4N zR1J7AvYrn8S}Oyow+*QlpwL1L3C0E#zExQe{M>6GfDN1z*T}!KkzYQ?7=cwMg9xS$ z_Zs2hs%8*Wo>HnbKVGP(>a2(UkM`&vbOF0J8a|05of6dm2>Wn?vVUJ0%CH+|DU?_L z8*ZQlye-;R(-v$7BH}Qxq^ZGrC8eO+$G>Yip^Fv zuu`p>Qz5KnX4f?4HGdWvL|jWPUSghgDr%q7Zn8}o6kl`_! z3F|QUR9m;XLQGCJ!&R-oT`bxWAGfp}tCEZ@2>MajPasMEo`1@GT?sp0m21+I^&!k_ z#CwvxYl&bgj$oCb22$>N^QyQk)4_OReUAwNlJcB{i#oxg&a1Yqu2oqlPFW{zS#MNH zx_A|2Ha|56P6Qb_yhudmmuL#Ee8<aMhCaHivU@eEtJ2%~ zoOj-fsxI?dqkl%wy2NGa7Q4IBKcNxbAft{Cq-lv(5O}%3$)GJ7A!LMsAfc{FXg4~b zS3p>U1^yx{Z{TZd;A@M!yQFBi*|hTTo!=R+q_pli5*h%H4!Y_Ym`M#`h^u0FAeyO} zCYXW{lxVOB(E=UvB~~W9D+IEMSJnV2d^WEdZhAbu4h z@{D8FlNL*4Wsr4C#DK4*$X_yb!Wf0%a1V18p%%w5EC|hGtkV{ePEa`=f>C3rxM=?~ zUsKBcc7K@TNs-U#Hy_xjuc=#P)5}fZUq<^pYM<2lZlZ}SQSt~~={R9;LV+jf+mr{; z=7o?lxa?8s({kLTc7Dk?nFYu&pa#b%!o5}eMS2^qd283h zy}C1{weIpjKU9*`eU+8-1yj^-s!I>vJAXuer5&4cL7~X2)Pis+HPAIdjbj&34H|N_ zxd~#c1`9@sAv61GF+-;Pky1l%(c}cUnV#Tf;#hiT2^A+8-_;V1x7-FqlTcLR3gSje z=xfYo;_$j_2c5FB-HIii)!`@zF*>% z{|$Q^G~lZ8K^F;?u0#UGoEXJ0GS%i%PKYuhX$^G7xvu#9p43?7vfu!%MGq77e6JcO z*fr=PYE^pSC#<7YJ$ke<5A6(+s-b>e@tMl^L<4J!15idSxv*MYT@zFoY=5h7DyWCk z`KkzmLYzSGgRXO-f~HD9KxNU}aql9jjmK*qK9cBROj0E)1Q(=b`$N?fBvD&)Cwf`1 z7Uph@f;<&X;3AY7urbi$s9edPCper1GE(`kt8B4YM|f9&|AdYw>Q}D&sD*Kn_7pOB zW2z6v2c9gZ-;-(=TT;G(TYr)lc90!jAdBRdO5qJJSiv7ARcwWvM9E5k;TOl$E%Xb$ zZ!DxAS(Zv}8;^TvNqckH(b@#=0bX_Sgo<5nC>DajY&XgWo6}zF|^JqlLS*pRE`Z1lelF}LVwaLD=+1Y#Uj_+ zC`>&ip$v)FU^ow06lTO}F&agiBDaGhd_@&KF(q^6S8RyoO!*tkj#b%-TiIGwcA_d< zo0Xkdm7R#n3T$WmtQ;6_?;2W_0i8=vTtDSXCS=V;fwVidHj!>LS zcdE{VtLUQijYa8+zJEx`uG%j0QmvRyA-<_0ZN6suI%tT?hkzSFc?XTaVO&AN)=HJT zNwT!;tp-&e65$0Uo@O-CS^DHpqke`ut)fkIYe_R+Y~rQBd&v(V!w+YaHqE8v+u_q( zBvaay={ONTPxvSB99VykxCINYb1P`5ved9%3&^V(9aA;=>3>`z_z3c|75u4VUmwGM z1hVjBapZgDv(fQrGC=e+oSI(E-*BKcNMStFKmU;@3D^yWo{kh+y#LxHq;1c}@>IgM z^;fcW=v54Z))>SMtYX`8$3oO2#ZxFdpJO9oO=rnPlJy(-x1#~u^Y^R4n9HDF4=#tx zdT9QB19e}>zki#`vDD*D>m52h<+oZ0)?m9sO-q5b_2;}0^SKYPV_I*@2ASJmy$rF* zx4J}3TWvu#J`UcjTC~Q&d#G9{q&ns+hQUP;5zg{n?B3C&<`^0z7l)N(8^~e zLz9cHSyo^CJ&j($l!2ACkzvf$%ZL-P#+y<<6h#{!sDEQH5{W_PtJoq0BHWOgUX9EF z8ZWsiDo#;}6pIw4sKuj4HT+pA>G&*+2|hz7HSJ4UV{(gOmtTC0407NlWWO~=;ugMpY4QE*-};)T5D?OP z7M)1pZl}bkzz2_xo)<>Ng(#{q6?d!f(ywsoD?y4}`qh~Wj9;BOLvO~Y_n7WUF_Omy zk@Yngl#2$Vd_PruTc&O@N!;*)Ev6_f1@cdGDt~)?=HFO*I8k#K5yudb7@P>BY>Gujs)EU9sb-Lm_DuG^AH_9PyN=)qcrGjtJ{H=gFHi@ zqJOfzs4wM`+KCbVE$1(;ip4xofKpAVmRtO5g~nUT?1J98LP<4ioCcV7-!GT1julYj zGaNf@98*6zu@-Gx7w4-sS6;Yy0Qt(kHIMYZMF~w0JC;5`8Ym~wTVHp`>#mwuOIr>@ zyZx~x(Y$yEj8H`DHJYgAY4xf*d&!}aynmiaRj0ISk@P^I_p>uE6N1w~{O8D}5SmRQ z+W2^YJ5^q1zettYA4|<{I4vN!182E)=`ZO9BE}jkiE9D4Y#+vP)2G1^$dg;$`0Tu? z7BKG;C8o8yUh>z1o#Wyw*oeG72|s^{a^Y9*)bpIV(`83r1=KZPberZi`cTa6Z-1hq zuk`J47k5vvH|=a&+?QEfm^{#h-IsYT&b!FnkX4lDaoHyo$=1MQ7T zmoGZ60%t_Le8!R6;nJ1_1#AbE+91(@dXSZY}yrj4fT1u?{jw z)As4Vv26=_N%S8c&5qv7vzc-vVzm;vrqCJpZsVd=!8;zh#ag;Q46NBO6hv4B z1u$S`hYZ(N8)&r0=eM!)Dr8CqOtdfc?!}n0^n^{K7NHl1E>(J^fpo|}9sBWqH zgramyW&Sif3&FQRa4gSU7h2OT!Wc0v1V)t{(wa_<9irI^ad4$pL4-))iFl%NAhAEA zGS|P2pN;w3`1zauZTu|NZ-2P&q_@|^5Y(tvQ%{bP^Lp|mxjvtKlAJFlpC;Ff$)A#T zG5PbIV`2fE|2IX`=D?*Tw%HdeOQ^`A!=l4tX?RwLaK^)0=o;SS)=)st42Bls|XYwDHsq-C5%4P(FxO4{su!WNrgd?7T4%-R~+8 zfF7=MN6KwXqKQe7o_35|liI9)zXURRkEX_Q0XPB%Mn7|m$p4E8%u zTSdyH5v$mut7YVFicWGKEQQE&jYaTM9A8n=|a?IVcupMXG!$aX42Y=iYs^7Sx8L;pR!r{n) ziKCYY;bqVdQRaqb@zT*cA6y|TY14p^)vjMU02ABveYadq_xF1&Z73RO5m|?z5^D+h z_90?_zZ5?@99SEUjIqN7bWQNTz5{Fo>QV}_PU_(eK0K~Fqu0cjbnHTf8lj#Di$)l5 zep}5I0WTV%&wsvHi&%%J`EmJmY2?!;Yj^6I%GKxDtnD*xQ>jTq9+O!Ijz&U$q$EW0 zA>_b0wtrftXpa#r%Cr`CN=X?LomI|5 z&u&sqVeUi2;rVVphXXnw@=34i5X)4A<)Kul8nsR;wQ04jqPn2>g#5^`43|nB-3HVh zR@by(jk@Bb_ML&a4NwvSB2iO*<-{~oNb_WGJ{?(dWI7HecxtMZ zp5!bv!+-5!B%(AFWixEnJ`bGeKB*uu&Z{mtVgRLaQ7m7>)LFm^5N2W}xes$4_UA*B zmGl>8U}*Rj>2@5CobHY*q7WjJw%E|v6dM~%XIv}5V>T!Wx`pr}@Vmu_w%aX-YVSCk zV|$vMnQ+B;T|NA9+3Q-FvX!0p1Rhg#o-w;ZA%94IoDb;(6}cvGBV4sDS!9k`83+#G z4o*kv&IC`tz`gzcr<`xIYT8Z3L4BR1NE(UsZJ*|8t<+#GVpZ8>?lFX zqtGF0xB1PaX5%~rs-g!$@j4ikt(!vs9{CI|4aF% zX;9N@z`C*2`;f}jfK+6S%?8Jve3sKsZQ*-P6H*E4NfSY+#|PrULVZjf6b7JCVbD%!6)@H>4 zx`$FH=o-m4YVy3QZ=&C+&Xevs*B`0Qo7 z`oz%z?JxvVAwq3pdh8Y5v^WtM%pLaMNfm+u0kX2+0JYGn*l>=)_Spe7gc?@GszvqC zz`heZ(+E)qR>gR{0==0q4#^o@k8qCIek}fvCx03pe)4HNWkbwWKm7~3CrMjW-d_Dj z`jVNNxVHyd)!4{FMXM7aJoqCDH|EFYLt;4vgac`#Sa= zI7WTsaV8t0ZA~{VtdPs|)8b4zb(+&>I5*GqY7Q?mAdTXpAg= zvJSWS5X#y3C7WFko`2C+N1#Eh-b8}*w)|I2rO+&v%Dt`lA;|@O056PcT7-B8T^TT& z{Qmt2e?s%&SIm$|T`RQH!;_?pLf1Lbv{I@#qhaYmjfev9Z`N_6PA)oV?83Eb6&;iM z?NX0i;d*dGD)Q7Iny`Xm*r*m3bd3Xv-N&h*9|tLgwYZFW^nX``(9lvCLlto-4=Dxn zPYS;fTfEJ$myF;pbmXL>8=h6%sf&1$i3Mv35JF)+Z`sP-Ev@McTEXPN+9JGS3e!L! zZPaLt59#Pa9-%iaEtvrmiuk+441e@;Bj=Z!GG;iuS!pmwR-XXS zqhriETxMvVoW~RCL4-Zb8}^G91$dj63)pj|d}^yj-y2gAwP0_XmqHPj4hlT|@#U$s zyaL-vIv?TjltiO%Q#Tgq0Gxkt^~0w#VC2#MUOCaG@|5lNXLfkcOKCQ~bR&fWfYi$+ zA`&mhtA7@TYxnk1G^2q!b!+UT}QI-;-?Sx$HSTw=eD8?KS=@De9XD@&GdI&eXyl$V9fR0eTP&nyV zRwS~kBz7ej!7xiNbzc@$nd{n+&nNCgo%V5jXBD#L>icnGA87{4$>DY zbSw1>WfF04+K5U`hYm3C(W=S!aQ1cZM!5gt5+A&fk4<+m){^!{**$M8f* zw;}}@s-B@FZm5P#H{Mx=h+rgz10xAZI+j?ZK!ISvyg`ou_~V2fudxrdaYE2TkZVTb zqF1OPH$F;y#BKD|V7f^l3M1i~M#;J7ePKL0O2(f)NznJgX!z$(<4Dxeoru!x=2C(j zeqnzZJ;|ODWY7xw60zfu0X8;D&h2Ao5=9B4%5V=1_%a+Z`qKU-j3mPI>?A^kfhe(E z%}%20f@X$;zr~Ml3J62@c`YyX5azdC6}Qli?>KibUdHX81e>?NQGp-)68* zZ@7%>qNG$@!EiKA^s^7nk^pPKp90Z==1zaJ`r=ct+TzO+xnWps2C#zU9`x_Yp4fci@5!Ds1A9Edd&aWaa~92>wO;n@g|g=^kUf9e ze|us-?%^WdlPh_TSI!;};+~kyJ!eHn!v;=LIC{uibJ%mDp<01X-712l73TPVLpL|M z;|Y@yxKP0s|FV;#S1^{qS?~8aaIX*!V&DSN4rM7CKp0wt$)W^LG@U@?j%D?p!z90U z-p^e%ivl_;mcE5#y$WUu%jaKK4Pt+Wx7NYw{8~6%_3s5t9{II&F{pBJj=z5|Z($-} zUtPu=g&<}7CjB3MR?XKvnJtz+=StVtoWV2@d!gJXMYHxMLd6g=p%yE{YN+yzhvNS{ zR=r0@;;lrwwU&_v4mM`j4wOSeYp@Mq)gkL=JIG`88r~#wIE2Iq#se=ea4~<8Dw_(S z!PWUt?@PcX-2jh52xR;U+7sX-j2|9Lggl`g#E_su8yKm@@nAfWX6XVLRL7ohEOxHy zc;Cj^6qd5z{rK(MFJC@?@%roUzkB=n*MIx^^(%Z2AfA9(T@(;Vrho@R=xIpCzz7sB zXv8ZQy(Zx08u7{{15tHJF?4!43dT;aK*ivR?3LupW66$iWx{_ys`25@gdM16 zf`S!)L1E%Up7{pVdGyG1uP4Zr$C)`-1D2{;a;6ZM0XG2ow!|jGR&1{zq*NlD%WAp8 z&5!px%_6XhaDis%g%t9l04}g`ZON`uiD592cbC2wJ_E}DH-WWBzA4`2$I+@@^#1+T zPk;OR^S4o7M;G&c6i0u0`%Iz|E~b%0+vL^dY?ZD8MFO)(u^C07W$JFBV>e(DjUwe0 z*xp9Rp}^rkU~>>hg8X)oI$H-e*Rda@SZg;q?ld>O#dTL^4!!A)gQ1h?lL%FY_^>p0 zhjnfqn=zAU9LaYjvCNO7Xc93`R*(pP@2Z&3^Ku%=cP49dNtb_3_{0z$BZGoEl6!&a z;tfaBHH9jqpORC-a7^}K86?qk4^8taWWcl>0!ll44%3kl{e!^Tjzhpyxb$L7;m6?g zVN_#B(Qq$l5FxY@k+eYJM=rkQn8EKA1Vso1dL~vxq;^XHqt*lekOWVK*gB8J=0mhW z=Q8rZkNPzo`bB@-hh<40Yx; zLA7ymtj&KKpMoGlMp4<;*q>=Y?f}mIKxMvG3V!1waBwFGOoCJvfs*wIYf)2OS0$t*CZE>N+NvA`>xt^ z@f4{?1m9RJRT2)^H&0u66IN(Lydql5zCmmHz0y$MjlO#}D6bN@67bI5E(VdNsmB*QaCr=Lr9Kg8zJi|9pC8T5pKCmCaVR zQytcAhNB)b@6jV6b9!(|f>1gYF|rdIAq(3R3x+9CVFnhH1;%75c6ZxOyF;yPp2b)b z3Y+0-2*<6&aVv4$N*uQm$F0P1OQaT(u@rxV{-(JId}|bWHuZe)c;ha~k-(e=SXdE> zoM?z+h3IR=bcPw!ASk`X&-+2W+`0^lzUp=D_mt1@o(H;bUPRmgRSU_?#CY<>F^r|o z6iV+>`eq#p^T?hF{R{s5Y_YPV&mlm?vdsC7l|c9sa?+dx(wr!MAkc2Rfl*|)$Zdas zTNyc~pv{KE9v%=HH~IGCu}?ik$9%dXD2j0#6rE;WI!z`6X--(nj;C7Nc3F&@LklE- zWzOR;ySM<(;g!k0ximwK0jKI%7Q9A-#M`|`_QsDw;o>3wQ8*HL!Xd$>_CoQ&n&PB7 z?h%oZPjWgr@#an(!&QC}c(A0RAK|=94vD4&~sBmRtY4q-6{3f0Q73eE0}orU`J(&5h@M#M?F|8i>0JcIBpV-p|JE#tlKBHrHL)n zjslSZmK8eBNLa5LJr%PP$!>pP9Yn%V=I9&zdb!ANP(0ydxQ=i!IjVCTq<+w>z}p#a zyb=~)sTNoK~)tB;N&EHPWaZ60}x42P_S4T`-_Z*Rs3 z`#w(A_;)={ZjSK#C|Tp*_0b(Whm>W-G9!ef7@X*UBMdlFxR(Xq3`>9GnNJ!bip5I` zTW0)e0oTUb2;kfKEgwUZBB7WGj@Zk~b5zh4LLnCH;F}KWblthL4ZNayDa1WsP#QGr zqCppLO5WM)mKA;l6omws0x!R~lO@)bOBTQ~>mBOPC86Ry@Kq-|HS3gcD(?4J22`EQ z|I$njsH|fY9FSk9M>_iL+f^}#dxw(l-H_gy{a_&i zC%pPR$*$$I%TaCHj-u;z_OvaMVE_$DR*v%n;dg@FJu&57hWQB#nl^DyK#YKm*g;8`u-{$ zjN_o)CE0)cAFD<+I_!T-4}>8g5K9Fvx&>Ro&nmptA0XBieK&YB#_!6_ldP;9Rgzgb zs;SvC3;d&1i(d%41OAX(Bge6(B?D=giI_C0WLjOP%XW6Z61yd06X{C&MkW1il>~CH zjNF-@+v=hy%Ix9F=wYTO+(!CTh(~vcr!v@eMd*J5;tY~9vF4PhLqZMw-h5ak`arS} z-$7+J!510vwcFj-<*;3lh9vx1lb|J#qUIEc8k;ns6z5#VIh9cbQ*asQRK`jU&DXLM z&}!{+^M`7&zO2ZtChf}JDcb*4NpqH%FU~7^xnDK7R?LE;J7;hL3SRQ}UaRjQx9wu$ zwLE|4@yW&bv~@5^%}JsZ4N_eKp)R!@Z%nwg4etsPRkA?JPwy8!`ig&~oHG@j|f#sJSddz90PQTRRU)_JvL~L9L zzq!{O%CdRd1tN)Y9U(7{rfyb9mZ#dE$4@D*r8;$-KOG$p{P0O2D8FN!`A{u+SXT_6 zO9_*TVtwr}_0!e?%Si{!F!OjL^qQpVXCCG@MFU?~&ft5xSl*6>tA%rIuwTTuH-~!i z4)OjiYIEmpV|DVPsp?aP$en)`ikH1szJR#Avr(CGaeX%S^~p!_loA%Ch>2z1xP(zR zBk-|qj-fHuZ)0=K0-Zcc%naO<)U;x;vz&NYs1ChCteQ0~aHC@R$jcYGU+b0?0GHKo zeqy*Y9>x7&{8!@16cWVpBAEf3+bfzc(PAnOrS@BMyi2Od2nmh4i8g=zIzA{QeZjk^ z2r+J_h&`lp)Cw`ly93SA+nWi{-9eSC;qQ8|x=XGwY&N{LIuHZr*%I?z zN$gdtQwJGjymB&%sEfN~E^6$`=~k(8zU$6;c(freL_+TC&Yog?S6{JUpt{|?6*Y(Z z%Qdet_k2Um^X{6@G4FphoStj=cWoQoh?6VDOVA9jIahc~S>kPGj!ymFCD-lb8eRTf zqPM>_eAbimI|Fi2SbSqCN`=M_?x}~Eosjwb3$Ww2qwCmm6uO5^b)EM*-<(KIR)TZ0 z>>yiEHKclt!AJ!qRCxD8uv4p#@F7_urw&tHSJamXlU1w4K+u1ORU*zWL=ktoX7|i0 zE4>wyZi1(aY27RW(O~utul6xyBOV;4C7d=C)eP%+sd+3MoeJd0u~6jzN-WL|eo}PM ziHj8Y&;eijfRNY7?UTtR+*NEZqt>16R&ezMf+=&5akI~y{9Lo8*R-W3xlNda^O*3XIokolTf@ij9xm(Sa`Tv(bV znS|#Y3*c3QI&@eEN!gW>g=j%-?~_jlW{`O}A00TyuL8ZmlNZk4CM^!kgRYX_;uu_+ zB3pSxvOsrA(jd_(B$zN5EGMGVkYz;!R9LHZRKL+t)g6D*Rh>&m^)brKr3>uC4r3vc zS97gvuAQ1|U2`pJHluW|eq%JM){UyEQFko6a%(=)!>(|`snp>ylR@dA*HMhFv)~UJGHMhEEe}!G^!MS!;*tMRB zYiA;^^+a4d6LGC4;=0x~pZhhR>zdDI%ulPC< zKuHlJMZrA zm>M@sd2@s#0Pb>i`oI6{K>-{d#Ro@IL)YGel#osV_~z7w&NB`fY8Z$|;u1JM49Xsi zn<`%Jwx%Kn9oi;Er1#)~6hsB;A2_bf^oyf+xtBd5i5-mDpjW{#4cb8s*8xoZZ?dg} z;irEIC0N-BWGh8{)i3+C^-|s+WBAGmKY?)V6whUDlns#NXCw|#BtcgU7L8efEHxoF zR(555SQL}NYG4HpAP`P@1cl7;H7}z`E)?tSjmyxk^jxdue^YfvbG49JH|&_Rb4CfvdOC{Z?h8k<=WE4o2uzmq{rOQwppm?mbp_t9;tuw ztiB8kHso#x%RxO@AaeHL3VzL!-`>AJfB!yb$X6l~!j>Ewb-F&&Uy!+fIav1V{zJ3t zy8GAtcTmuMYwyox?e{NW)9tB8r5_#*mJc2nnfW9142rsX@VMS9vltbhHd_N?&_wKB z7xgpu=iuV-2uESkbP`K9`Mt*6GKPP;mpG{lkNL|tZ$JO><#W`>oqRePB^Ng@OvQW` zOf_xazrVc`wnoO4^^Tw?tMUceowWJ;_a(trNDt}w-B^Ii)(cQsT%#!EwrR7P0SzX( zShT2Y0^Kg>9Bj*DdofEO=Bt{)^eEcsQ{wx1C(JEFd8&n@z(yoSivZmf^JXHRTQ49` z{hcz;vIp*`fBL|o64<73Lt)LshK)B?)0a>I{gWh^I{~?~V3>~q z0aKIknXmyMe<7_#RrkhJqvo0AH2uo)<|JS|}HBSuaEi=F@8 z9EorItAGvJoS&9vla#%Jfdz~<2~Q3F4m-{9tjY1D$Psq|ejSC1MR$MfcMmewby+24 zkx=M8KoAkDh7K|U^r6pZqq}W<6&-g!d`+(82M5@sp~)w4s$Dpx z8KvytmEcTFbK;cr2`+k_$POda(MG;0-+FGFIWc8KmLv=+D5}$NcrPiSrx5WrQK@oaXmp217b$?Vyy(cWxLe;y}~Yegow(jCZ$_JZJ~(I{;@Q5m24VWfBa zHO7;CGXQ`U!N-sU6)``cfUKVN1hkRxks`j>Z;ILX5!`1HudF^^@08R-jyE;kIQBF_-~xgP*qlJdwzd#6x)nBhU|74@J_$i zc`&1HlV2fT8$L&>J{YGT^i@L60Prk#;`W{f||E~Xg zFO#JqiL3KpS4ExA_p)-nH_L#ySMA<;4w)}A##EZBOG$&m3t@?crUv|VyKa9B1GMpirq>-ehOT^+1@qo7 z8|D~vXY=kS_dcML&7*<_MuU=J!jotOfA+8+93VlwlgK~kmu$p|2mO*%F!6vc{=g%B zm!m@N$DPQHO#H_XoSnJiFBXep+4v+$gm2@EMY3HeQqD=Eq`m=WrC!57AB!~AH^e^Q zXx5p7*A#!ec7g>VGZ+v!YYvV=@;oEWn$mnAdwesoYsF!(>-boVvKVdLK=qA%x2B3= zr_^gFe7)11`(y2}AkQq-sOlR7JsTPdA5vc5anIr6A_3g88%N%)KX*UYJS?g-MV+SD zl3OmUI%jJeO?ynDbJ6WXF&5+raMugKjbi?HJ^+6m$kiQ4pV;>gVUurQ;km4`EN)j` zxl4x9(JU0B6cR}WaXFWo%`FImbQ7D)DZ1F)m0)v4)xhT#CZD@PJ{Rxw$qE_SihkWW zUEX$f$g+P=>B}BJL8SZ#n@Mj8Dg8^ITjem_rwppN#J8v!TETH?9W)rVk?$1%I{`pC z$2xyVtTV*#WFm;i0v!So{y^%+E!lipxvmz0d7|^HCNi!MFZ_XjU7uV6ujGSIHgYNV z^5*4Qva&a5FOM_9@@_P_hcDrd4-!QPN@7u_5F9f722!4c2|G9 z`5t9IJ?(g9!~rP##r^Mol!yN9cRf&T%nP~7hvbzxce`}HEfEnMNuPkOGDxp~AnGS` z(`6|?r{@AMM{uMH(acgGkjbnQ-YSe<)N=;g5k)CT0jsRFNT#kA8~kFn>9z+x?`}Y} z)V&^HpqUU^c{2^&Aa?LAC|A7iSP*~T0Y1(Z1P@GlBgA`x`#z0terCAZFL*Jz=Y@se zdSw*vGzb|_p zy4To}UIv}&)yHi>L#~b|!1y$#1bD;NhoV`at9r7HM}8^b>;Dkhis)cleOZ6p=xVSzC%pVrfow1Cab<(VPV7XYr)kIl0swcWAZ7eJZX^J{nQwCIn| zP$j*SH)8kP34(el7%i7W+H!K}^G|H&STvGP6iG(zbE;VRx@9o_vEhF@1Q7=aqbBG_ zI`_>^Hk@6ZhR&R>Ubvoh)CnSh8ftt7k`7$B2!z%RY00CQCfOg6ij39yPBocaOtY;S zqv}D>Xe{rKJb_$Y;?_Z5qXD*2*9adye0%|w4W3^360`mAf>gVnU66G5qe~FS{C7FC zOv7uc2h90Pb{jS9L(jNVfHK1mxK zcI84$T;V-A0A`a;a_xIR7BV#{RR|m>AKnbo4E4DN>4ie~`4Bxsu54mfEQ!dbr;F1w z1>d>(2xe1}00mY?BYb`~))`bAN3a*;9l_fhV!NNA6Iri#=EYL9evn#ilgeP zaf&0FGo02vbd_bE*s`13u7?BvquE68~|KAYsH(%fxubatn* zTm-WG0 z$0C$Ii%^F6iz@XVVWfc^oQkF1GSBN7`)tD<5Z{&#O96o!`3cS^3pAOD(q$$xe9GTy zmn5&i-!EI@3fO#XKlgR#{u@jDZ)MPED$PaG=b~`Rl*fNKd#5}^d$jYB^N-Qm z^g3&2S172aAHBoV>;G9?y_+?^w%OU~|1~}i4lfJCECq{D=4~*Gx?CoryhDk=m=8ug z3=~cdp0wv`E#uSKSUe@^A_51w(4LSw+Vr*0{t8RwLOc{(r&@LkOHPSiVNuoA zlQytd#-o4sbRTALzdRNPeqwaq;PP+?cWZUbwBMi8CY5og^RsF5TY(#;MPtC*8L)}bBAV3wv_+%e0{Aq5>ZcO$rniRVf_Y)L` zVne7rY)XHbH1JWu-wgg<^vOFyhTb2{%3g2}KII-zMWUKuC87$af>19S*^4K#7oT9^ z&GFGeJwSDUDy`smF{mbmSB);%?UU*Y56FL54#?42sCTch5uypA0aQI?qN+P9w)^Q0 zAPv%(2kGd{tnk-xuid5w-dlH>tp9Sm6Da4QEpKJZ$Fk+nPF%d|#Qm>dU$Uj zgQFxRh#=4BN>5Iy3aWtSgJy%a5pJS>O*8Q4vp%FfgYx>kw}|xo*=q0edzC9nr7}g4 zUWxw`P3Z6c8%^x{6WrhKy7dK_U3ynE1-hPeT(V2KSGMek=G!#yOG9l!0@o3N;bl(4DZYRVXhC{tY<#_owE? zpce^5Z*^(z#r?Y={V2rCckZQ*Qpa7cc>phCMPVodc`X}Iv9tw)pYh#jFfWky{WOwU^C}AqF?Np zec7ZT@E}Q_!4^7lKFt~`dx1R(qk>Wg732u_9zVSd$>vC{H;R~HgiX$!_x90%4t68>8qZ<8LpjBgZ_$-139bP_*HVY7U z5HaaNhTDOwi`vif=38^vd;88c`GiVj5Ov#0PMR9=`iWaa4$D0c}WUsp3P%f>$`NET&FT>`tIrV^j$xlODv>QEb&Z= z=`KXK-zD$h{sW7daEyOM(hH5DDW@s)bYUVf@r>QxY1xDS7yy$gltSNLO1PUZ>+1SN zb$y+cbJCjQ#~1NTAa)p?E)~9m@WV%r=->sx2;ut%%y$O7$t)EfdlUr*-sFPRrQi~; zsCBREFEEfD`dmndJ`3fXVa6W2yykgOO^JZxXwv=hG#59OugHHv?+^$k+6x?`cy5vz z6r>%D&+u3h$$#SHYmpp9bCZj3a!8PSYl7Iq{gH)Hi>-fi0H(b_*nNZ%miOy z0w5UrT)4e~3(kLfQrw{on#FKo5i3d8g!q&Xjuc@>5oi+1gk3fVnvXO1#FS}*wr_nq* zv&JAGO>Z@*Lm3c&hii=y-o|QaF`OqX^)}j?HS2N)>+64C<~g}2-@ze8FUkQiFb9dZ zWN822@Tm1)lV!}d_hgwa{Gv=uh#>+VuwHnA2sD#uSAj6*Y)~Wr^vrlH(^2Z3Y%rL{ zI{36aV@85;2YuPH5;to{F!z+h24r_T-E_+EO{cVPI(V~%8!}?(@m=`|{__d`^XZw( zm+o?HX*++fEnVE6^{m_P*XHm7qbDym_)asu=Z)o~+*Shk8u(m~L=)E-!e@wiESgu@ zbxyd$z1Xr8w))B346Gz)A-$D&c6TPP7R2w^qF!8B+Hib>X(qMu>dRSiHCk7l54gYl zE*FrdqoNJ^$X4fob&Y`c2ex_}&;B@hyxZ$N^5K8aqBD0byEhhbptrbyslB+YJe`B> zto*JwWu~LS>vBZbW#ql~B7Iqol0D+mWSDtXHkNURYZ`NukryHrG};XIoSNx|`MbPc zYcAA)sWI~-dv&+-B?d83=c}3Nx7OfH@Bw+m@Fb$48*3A<@p8aB z*r9*YVTT%nA8Nz=P!nK?M2yV}HR`s@o~5uEP@3RJQ0Wa$<#<{GBZNE<}Htw%h^a3 zXc4QZmtt;Y4AL)`zX>}<3+v*Unt0@xQ~9cYyIRg6zgUx+J9_k}6tBAmuOWN@e0_n0 zspm0O`^u&t*dJLG9Nd8_ItUuO-UI8Pzqbv|!2$`Az8C(^4Qki@|^T zhRl*smBkK!jTT0Q3TEr2dXTFSGC?W^tq3r{Y2UuZLcY?TGSDPheF6XGxL%jZrs>LkcDoiUUn34x|#l1pgD+_3z+rJEcOQE9jfKQCZef0=W_R5HApe4fv$S`l#!dA=wv>Ek?`{c=gNS7wCvN1ZnT^M zrOM~6DU*`}TcFIj3V58#Ak=jZLYi2W>aB7p8OV>%$zFaSz7VQk=tB8cp?uk0=Y@B_ z{3wrco_vC|g*wKrK5ge`taCP=v3Ykq<7iR*56YP3IELS&SVZot44pJ_ zf%Kcpw%gHJwl%ceF>_}6PM@7s)Ak#C!pnZ40z?%_Zr2!Sgq`KY&Tbtx^sWn^U9j%_`2D7qwk<59<{LewIJ`rZmWHk->%Kz&Hd$Ur+F>4 zLXG9keS$&!)@F4!R3p7@8x=_fQKKd+71c%Hr=1rWv$`$(q9XHZv%A-;9Yj7!OHW|O zxsv@T7dn$M(P>B4V;Q5M z^aR}R&*Iz6;Rj}CNoJ0ZVlbBE(?)r*7B90Z;BXMq4_?D_tqq1^?52=Ly)2W9cq@cTrIG;T}3)u^~AZWAGP$nGSo9+ck6$P&dUEW-1|cfXtH zuG0(EbORKw{2r1^_V`wOSuceYwHbcWOldX5l&e|Ju%v%Ht-vgss8guv1kz=Q{5?EnG*mOv> z5oyWsLArmT;TKcI#cl&4tM3QywF9abS*+aWwKk-eYG2AXyxdy5CZKgH*)2=Yw4t&j za2$UPvx^J5IG`e%B!@!N) zLkqyH4=zAv-vz78)o0#-S+hkF*VMB~kk$?%#=RTJsJ9T82#Pzg$nSNw46@xsN94;p zG6EY7^r!7c&DpT7?Bl0&lcV9z#LxZ-zXDxIB4&SradSB?! z-V=WX?Ag;pYWlOsJ6f`vLS2+jPt`BBr~7c+vyY5pMxX;mBkvx>lfwjV0HIMQwXt%o zU|hAEUY{PT*C%4*P;CKs$6oYU$y8_w^&g|6!sEMy(8OGJjdojA!j!F0uxc>a(!P_w z{tcNCL>w>~6!+EgWPf~sr% z5?(#6ST_=>7y`tCp_fW|zDGy%C?NILL!Kc4qI9#F=bwgen@ONkosJT{>hwun2 zlkIR@+08LC?eZOVgy8LSqb}pl;=9_>7m1#^Afe*V)?d$w$+Eo4&gVj@!EK&BmoHwu zdi&z}cRxLUC0oGvi!JUsrKY8+nP`9dq|9Y${sw0hcy;y4oqc|6_QJb`%Zr&cJgCZx z6(Vwirv|qy@3VYJY>}a-(NUMVAOwCxl3RZQ6*X&V zO^P!@uRH&3&n%Lh;IRgGA$TgU{XjHqE%CCm`SxP!d9|Tf$gjlJV;7N|VM9&8P=jH! zu|vJSgrMNG*1JgVtG;h)ZafW*Sg$yZj8>tPx9!!|jtl^b7O^`vQpmOG*ht6s5`o>{ z)B0Qa7DTAJUsibC&2ZrJvYUU1i^rq?c=D%_dT)9*I;M9j(n{#{^1(Ph{Oc$_`0Hq5 zgy$mc4$6#nAZ3bqW zS91M0!hWq{!$JAhj%X+4l=jOvZ$JO><@48HfB#*;@i=mU#xox<2^)VLiQD>FobVO4 z+Dm0?y~wwiyB(I7nSyspdxd;gr;Gv@b%m`$iTQ#6zwYp!^8dX0{=2T7W89@b zwi|f3d^>%uag<9SS7Co;(XNq^5^kM;HxF>EJ3!_YLfe938^R@0`ReiGNG%~?M!68PI6t6xX>i=-Gv z-6i?X35jcV(VL2sTivXQ)66^G#hnwk6E;~_=06(Bdh=?834VW9E#PQ>*kV-KcUz0q zGW&Iv<7q)Z1ZXDP!sp@#aA>21|2GzYM`u!^zu`*F_oMcD`J%l^{VOp(K{G# zP2WAen7)(RdDrPYxlG?B>$EpNxahx&4?aoGVZ;9h|9t`fy-Ia~H}L!BX)(Pq3VaP= zuOaNUEbzPZx_>ihk{9V^|Mh_IRlj?NPg37K%^p2^K|g^;Of5E?x@b@eJ{RDpB-Cdoo&(iY*{y@U?H~MjO zmVQA$o}8tx`pbjf(Wjpd;DTG)glYDngo(#}V$4Cpi)vylurQ5M`|$xJO6C36qELTB zZ@{p_NkV@O*O9!Otsh3LLM81+w_3QkG*{JPj!v`W??3PaRdu4)iKzm^%CIBa^dh)= zx|&vemR7h@i#{yVgI+VJ;=|^nAEK&d6T6||%)$3Pv42@}fd&C?>T(jM_&g85?3D?WdGf;`w+S_!61{5ZlN$g_1UsqpM` zXMuX}wVGU|d=Jtl0O=~3r>nkQ+I0DJK3!T; zjV!rNGdCIIzx9DvUQ*rfpl+-=y%2xfBwdJIlFkxw1G~EW=%P#6o{8PO@UD@I(+!^gkUb;RA}bcE71ohwpz;rELGSxjp)T$vyf*XBQ9k z&xwE!}0LRr(-$el;)GaVwykw zH=1$j3&X5;aQ%IAbD%C*m&2Kzq9UnC^e-&lk(9theFS z?IVde3b~jq{xn%8^XWX@*h0p7BzedDbaZxLjsdLr`RUjRyMVAGCv2IH2W9~6CAhA^ z9j)Oz+9EBG!JXkB+)G#V1NIUI13SAoSSB0=OzTX1!0x!{UmYwzx~PKsKhZ;>&|J(; zgil>uW)C=SG21_t3)O$%WTvv3#wQa#Hwm50((7qfOKMavYVsD%Q_%7tV%vn_Ybe~q zQpLcHFscFr#Ybyx&|qF0vnuy-(@K~IXsDeii8RuV_;^LujuGx8@ke9ohya4rk;%~{ z0e)*J9+BuX8*T?eVf4StSV@Xqd*Q;ser|Rw`gSf6vY(R`8e)H`K<^Mn$iW4&5rZ_E zkPi&B0Yykykf~p!)+$w2JV2@mpIA+Z*y&wlHUx<4b>8fK2MhaUb)CTgI_-)g z1F%SdOX!9|tkF<7A(Ox;V=8iPKt?NSz_~ZpvY1q|r<9cK{P_27Ky+BUvL1cg{8B6x zk~!*Uy6W7@eAa(WIyMYYO{ZTW92+~0rGzK#zwP2pLAZNQ45^MNV@U5j*%4)pw(UkI z7r1P+1q^=nA4kcaxhr+F4pb&Govy!jG-_?7X{Tcqd%TmWE5Yh@+qt&Yl9l2E6>K%8 z4VD`xg4VxS!C<5&r56@SYL%xcEWBfL9)Bt_j*_POMg)JA*E1ZHs>A{QLd}&>r#}3- zKK{8plnO`MIu|IKY58K;1XYsN1>?P|QL5T(@r|OzDdNZlN6t3`xo>xRYT(ViW9LBFY5{MJAS_aQ&b+_6D6qJsx5%+=0<$G23DnCGSet zdDg7z{525>xUazV?R_NdjtoTEaR>)nIOcE*sn2Bo<{3i&lxd?t&r3yOUtDF5!IpIQ z(VlbUj~n!HU=AWnn2 z@!!ISptUYEKNmdLjfB;W$@}?S5;mo=*u&N)$yNzr9V7>8*F%#fkq)24X()q8@KTxh z?=<2Y@K}5VmOxj#c2(e>y}d_)Oxu6>DLlP^ZNf7v`cUR-+W_{PjzxR0nei%;jq$kP zoh5F!trJW;$j%zBst0*2Sz0S8+0>Yf?;uANIcvx^S$UXcNlw8iZQ?LG;?T5~ks-oy zjGD#QUI9~bYui1ww%wDURj8Tc&vtVblOac7s#n%j*Zw?b$^ZUuujn@ib%=igA}Id= znABB*R*Tk(*S)e2jqp{pjTJ7@G*E=nYNYFXjSD71y~an6ir(f0m24~x69VG^d+hRR zw*m(?&v>+@0=S*tqqTP7Vgon~zfa~*9nMJ=@^|+tgybdZO3h+IC$qg>`_b|yatnAI z6gEAcIAMl^&IdxWd3a+V(fxny2G>b^&F?~MBB`!g0$QGHjaw3$4Kcumgx49dBrq#H zg@z#4C9sZ6IIuVkA+b%u634A=NIu+kHW{*FN}@g;4^l-rTdd~!=lMmpTCnkUBQdR5 zm}5ne*moCqvH{tef+@uZwx9lnR85^!O|O&~IWnH^ZdoVw=?9!tk=z~QGZ6_|_+(Sq49JU$zA8L|nLDcIdEX|I~5 zV{5&7EgHD3_5%EFAnu%T03)faH`Y2BPpmuKAh)CxDj8SpNYNx1q@1t`uk+UkLIfTe6YS9>t|v*C35{H;l}z-yq(XcILD9idoWi4 zsrh`N)2TA<>7C7Vs$BGpO$$p7-73p4+@uinIK~OnPSwQRy;^@lDdx-_VyO18thSce z`Hl+=zD5E?B2@uO9JS+?bUf9!YD)k9{k|(ika)$lRC@uwu5|f2D5eAs&fw}LQnfBf zLTc&|$Z;G9qxYA|Xj;n^-Zs$dJp!XEdRbqnv9J2;N&fEu+W5la_Jb{1b zYnTx(#7UALG!7!4U&G0NB=7gAhT~A=D5hD%Syu!Ylu1{l22&YR0>Wg)!>|O+8GzNxFe%7qO!{U)rkkz_^#E z6;H3YuNV{x=^IP`P;sM5(3x9CQvpI0& zhLh%?+HJMrrD^jj%dI8m4cMlmN8vT0Vf4QK%?;d02ij?#?+3_L_F66d5%GGZQ;gp^Nw=UheG)MQ)~)bABt%fK$mloAu~0t5 zZi!gp*oz1BQ%H~?8YZK-GlyfFa-h+qq$Z=o#M1D2KAYuDQz1w_>)3r%SU75?2?}Rx zmIQ8W6i&?*N>T6M_q;Hn3BFJsY}k<{`32!a1DIfc^m$uK1uUV8s}40wPDh($b$z`S zYwOFZX2lm@btO)?F=9VU&8RZD1%3zLCj=^Flr;Ggg;_bOxs`deO$5>*IN4Fs!QA@9 z;1K1z6SIp_D+>ugmtf=}f*7G4$5qj9OCit*rvT5rVCdAkmq_N$e9%yUyT+-cF?WME z>J%4$jTMr(mwxm|p*|A#goarC0sI*QVLL=tYUKsin2&`hw$8kotqAp;_o-ZI(XuB0 zvfGl)i+6@sYJ6&ho%iCZSnzumZ}GpqeRsWJ9lvk0GP}&{)X_aJ$}+FNdj0J;S^_l@ zp{$gum#s#uvMm6j|e!h6I zC}zLBDy~-xp|GN3zbfYQyu`+2Fh#f+oZ8IRI2gj;6b+D5IR51{C($qY8g_IkZ3s$# zDCl$eHXsK*B;s%>gam39^8*H$<#0>w_B;Bd`-i>ahiv}7_~8nM9{yDG`0x@|L<2+- z#`-ctFmkwy)Xy)W;@DC(xUx##wxU~+PC6;Ga})n2Px)Syt=bB%C`BtA(?oF3?#f6@ zZ`L%lprd8g6hv$Hvh#*uo~Go)kjny;;$7N|}Ps=s7>LeM93 ziqByTpy9#^b=ixqD;Q2*0w(BhYo;e9pF#fg(~$&izbI-LmihT&hSf&Mmq>TcIo>$y z{9TSuFeI0L^vDe%pzsF90olv!l3I+ZoFG`;IeIqZPIhda;O^s8`CKG2H_*3#vcp|* zC{gcX!96~(|0i17a$KQc&E9h?30YWuJ5BB7Ek~E+NibJTGUN^fY&z4p*|DfDk ziduv$mDk9OcW(JgHYjdQe7IwOn@WK=dhRec#i4D z5!r20tEIa|=!M?bo3saeJl#5>%2%5)rRV^0cq3nmj9I0KHE!zCBA|`fG-3!yAwY~m zPj$@MS;3ykf+GKz#WYh?8--hBwK9AwvTH@ohgc=acqARtzeN|Di#*eRdtV+w=vB-Z z6kRt`z!_$-8o>{yaH~K;h{yxH$^3OzBM@?n`%gWf;uY5D{kEn+n`w;Rwy-?Ikkm?7 z@@;kw*B)Nb&k35@c=D$d60kXXJ6qLo%Mpo%kI5(*C$}~N^Niv@7hxUX%K7kZRlbJy z$w-02?BF$HLb-|6I2jm!$9D;}KXARz!(F?hfw8L&T9RxU7h@bbF?U%kq%rJMoEN#S zLP?b0b}KaPT8-Q0V6=G-;PTx$3%Ex9$g#)0Bshh9k*)JNC+b+Hfl)fzKD?JxX?1Blqd2w<^+6ViF`{;-)))(7&!B!3m_*BDnLg z2B12!-oJ;H)7A?}EjJJOhy*VEMKwohiVxoNR~U8zOEtn?rhraQ|0Q&$I*t|D&DBH)M|Kd~rsQNpdG{Vx9v+|ESA{URyVvlu+j>!fO$_DJerwNmfdh9 zJ^6C^Od7f$_lkZUi;wUbF!hT~2g>^)5 z3}FPXiVGAz90zvs-;4I@6~+VKHR*^45-5`x0ub|z!X?t3FKBZl8u@uq^AD-98d@)X zX-{hhKXV6vKt6%k$-Hrjox;8-=V>5cs7v?gk7LMYmo5FCn{7DmZoHW+**1dlq<7Cj zhEn|@hQRFutcK1UUTZP@xa`u=+Dav+AGDe9X-ANjF501K1keU15yON3V-ty_m@4`p zQC*G;rR@OJL8HC&kuTCavI?EqL04{(yATrtM=AZU(g4B`mu&d)pA*r*ots z=x`_DUX5J3gteo?N9%@r|Gl?id1K@B0?)k#F5}e_&o?b`lnJ2BPFU`)y{3{eDso1_CSm@aI>D-H9JPDxVF;DvP`n z4qCrEFFk*GMt^?i-t_ys_U5Ta{AB^MZ++1>(hS;ds<`fbAj%IPO0&AnL%C~hyLI&~ zi5*>Sx_p=|)Q&i9&uE*UM(&(P{qn3QlEf2#b(92hnccH-)J$1arNC9@qa9eMx@$k;9+x)dN{Qgupp3mOyIDWV5(dKQt|nbYGV zZ+BL2L(3t0GYe-7(hhw$7jlRl!PWyu6m0rnaL)tHS_A&J3m-<$JPtB&H2H~s$AgN0 zTE6L|QVDiDs=7-4y)F`ZZ3uyizc_ZiBXpEPi*(xpgG4}~I~Ew;Ir_iPmBX8z559l~ zIpf|A!@L{)k+Wf6$fPXbyVdn~`EO*C`*kT_c1Xu7Q2YbOFW6}>9}9vy+p}F7)XCji zwIrE;_9oBj*_C<9hQU9i4Uc{BLuH4j zdq0;y50mNs&&NLx&JHERP%yVp6DKkXG6*G1Vz^wbAgBtd_hkoqn2)qtM-#ZGme>jT zLfv(l_PYta8;sSPV=#WK9cSADCnf1IW4=JeNL~WpRI_X$o;JH$6nFzwtx<-5Ew8KZ z$w53NQLpbW=v9-$;zS&HQClsQdeiOAq#fQ2%Hd72hF@#=wZ6k~vR|M(!N4}Y@ZWn> z+K`0QC~`wH%#joW1bwRMO}{Yr4=sPm#R~~{%x;Rv{9=@3@ZW{nHw*ZhDd^6Bn=YQt zrVF&nkWliT)icjpdy_0;HcTUbr$Q$rOfk^7NUP7wk`%FYjTf-SzKW++x^xg*iqplJ z3)&)lb{2B=Vp`NFaS;c=u!1dn6g}^<)BH{X*DS2)>}Wj zJibV?{$fJ^_Q%OZhpy*6)*9xKOIQuyp98PO_WvE-_#0LvO2p#uEa+Ddg~( z879M)$*D}-sp%2Y-59<@1619q4#lbs2Z2GhooxSKZ`c0ZwvB}Ul}0zyAy2d`*~vYq zFrGBAbG_*!)1=eOsJa_kree;>q>rTA-q`xzZy$IpKv1I7>-`W%1VKC&3t#~(zHd{n z?^;cu40CM$GXX0a$GK~Nyfw}pG*dW{a;UiCGl<~`c8Yi2;&H#a0&QRuFX^82E9(JV zu&lnc;d16d8JlmBG2k1>3LU)uVT3C~KbTN;3OaP4Na1*&K#QV(3W~3;=v{U%YLfa@ zOGK4YzmADh=Cof8C&Gt*gb#^moYZfv#A%vzu+fAOmWCUSQG4irf_hIL<|IwX#C0AN z`r}7D7Ns3ls@_*_@duQx_mzFu*T7z6*@j`=l(8>;1$DKt7vF8=fTr&K;scCH)`e!6 zJYBo|%stO96C%6OKEE?>#JJqv885xPYdEPh`xkaI)#t?N@wgq)z9Bjg_X%#3(m}M^ zpm8Sk&}LU~gMPO z%l~K|Ok3IUTq1>oiSD|J@T&=Cu6HUr*Fk;X>C$vW5vPd$;-J9w+G^B_X3+}@&8Z6k zZM4Vevqa(MP8j(!w{f{_R}T+Y1v)dy7ZAJGLi>ywqoe+Moh%4P_{YHjSrP3F1!Yx_^+K;@awBy5wQ^&(?r zxjSw+;%yzSp%fMhIPJv_IRm^1_PEeC%&^J#d#RA)x+AJ*+fm&l=0tH@=W89ag?HL< zP-#50+Dbcro{Av4MJBqLezjUwM{~UAe!s)TLld{l*(xi{A*)QHWltn?``zn>xC>7g z5Wj-eYmH7}FET{_Y?p56QMK~RP_L3e=cN~V2$AL3Nqrv@Su6)+lOn7w3#jFy;*-Fr zLLwq(Tq!k3pec2WrC!ur8%5}a1Pk%b7bQxrA&HuQh7A@^qa$gX;^wydk4D1?fNQ}5 z@Z`1HrH5s+vJdb&1L_Q&?-Q>Y?y}I6BeTZWhlaEvDOBf{-K(#L5yE}yeioE^#2Brf zW(M1$kmay)Fa7acA#9o!D5(Y77oFMEQ^WfdM2@^M2#VPoO^4MXB+yE2uo;OWtG1OW zww42bAGvRL;x4O~lM-@>-?hqB>_=X@`Z>+rURAElB>V*2`NnHb4+Iv^Qi1ZrB)qA3$<>fiI#@y;A4Il57;>&ab{2_1z`p z`!lWtlF+R@&8Slz@e1B^2bm>Op7K%gI5ZzG^JxC(WIq3Ea`Nn1GCMwvCy7~*r0AQh zHcgP-p}*|cNz6`?`Lk1%#>q2CgguD)8taLAQlI?c^z>9mpyQo%UYzP@?O*<<8L~-# zP_Jk1h(69N7RmOIR9&1*^uas?v=0=ZFH2rDIn_RWngo|SAfdon2In92R7L>}6Is|E zfZkK|Lr@!8WCELl!Y5EFXYX6mrAIlW2Uq%Ppi@8(GvR-&UYS1AVV@}s1!YB#IM*7e zTOEQRpen(+hLD)i-mtqtd(ic#c*L%Mn*V9+W_a!)!uAcWPs)rw>}@{#(iTDuPNB}O zq8k4SI|C@drNE12VP}RF>PdRP^99`loqxponvN=FM~yA zaKhb8Fi9a4Sm4O_;kC_>cnjBb6UK@^_sLgenhd>MR*u{U6LI2Eio@s)qtcLnkjH&} zmdGU>XJRNe{JVk*Po0M{dr`}rqp!PPvqIx(_M(Ly@EI*r8jfAhM!^HbYB5p)&m!Bd z>Rd?@Uv$ZYX8?W9D@#ilC2@K%1(Tnfh>!@m5OF8>mCJ1d3#ntzB9JO0c;wudk6BsM zA=JR$gF1dQ`jKi!*rR!3^dzl+mNr*$UhOjPlNgU-E0A$;<4%%b2Cu3}NWcFh&T*f!& z7#?hLoNO}>Jc@a88J?PZ!xcw}hOfY8tXk7lIytVxYk>JqMAUKz*kCAJ?7{ex~$ShuHqZ2s5pRdhCs$0dLG9 zaC&#KvH0ElTvi$_&x1xw9xz&R4T+y?#g8i?F?4IS(%RD*jOLrmdAar`lc(KsaUALx zx#}3(L9O4@S7Ok0=qWZYrvnY?9%BI>KZoKhHMUfp;O| zgCPzcqSV>DN7bi@xyaj2u=pr@Ly{xmDOq!5r9FbN%8Ay4_fL88G)n7&4bl;+r5wCm z?+|{y*)z6*3RKq2S~MVSXkO^SYJhT?)weFQdY`a|1lT6)WQ%<3*b+G+fDN=9iagAq z6p;O#cl`_njheQ9nKNg=mZe;1wX0I*Gz1rl!}~Hm9j6{a1w`Oo1(BO}`6g6wUBEWI>;avf?1q|j2C?rU}tZDf@X zRDw5wY&`@~okN~c#)gf~(S-s23_C2T4u95p_;9Kj4+F^&&Tg$&O!Y7u#c(}e>i$p2 zxGqrl7yOyOmj#7~fxh0$R`I{iupM~il*1#n7+VHR{%A}&hMM+80lITX|kWVq{`^vk`nQW2VP&j*>#TN2v7aG(?8!OKvZEd>g^fqA`3$ z+SHzD-`)ewZVz~9Wn&m_%IEE(Jj}+0=T0=}FH17`Ch4HI zO5-3W)ik&EnM0{GZD7?2HlR17;VF-n*ajp9h9v}lX`yYNZxW}!eg=etj>z4j?)?s%USp8p7mf*D6J^(z-0d#!O8Uxgd6|`FcWp8%><5b zU+7jJ9@foc4UYHH~H#HT7I#tSiR>V~!Dbv6MD0WwPjtoG54Rs5_eSb1|S8iMQ8 z(HNc9MEp?@FxzL7CYH=5YP*toR9N9cr-P_}@nUbIJYbaRugrZ+VK|m9t>8d*f&IQ} zgFZ)wIlpMH zWOiOj+#xYg5;b`)1XbLkeO@t-NO;rkWvAAURv}6!w}92;YCv$XhFHutfRmA_0QS&- z5To8>4I`Np8$>?2oIAPCFvd7y;(-*1>N8ADJV?W-WL0I=NcCv?wvEyP6y|caf&^!{ zn}&~IA(dhm!IF&3le?_#k&H;#`c!o=K`wH<4-z$5ZtBNCv zBy3m0LE>M>GXu+G@zh-lf#(X$E*3X`;76FGA!;~#;BnxTFvuAPL;t;UesJBJc5#U3 z?2$c#62Q~Mojt@Pw~`I9Xx&X^27IEGqC`k z=r+fQi4PMT|Hv9{p>@5rtI6xGyKU1+Oea83pPr_FnVHd&zsfQQKKtAI_ix{SrTCXr zUuS-QUAJA8-xO(ctbZo>S;}8Ct6jsCb~iH|OssyB^GJ1B-@5r-+2lt95;a zc$qX=BN`_(tOEjCMGazU^2@8d%UyI%1PIH!yH-Juoy^crsR6CWriQ_U(`=f$aZyu? zV+gEj_ylBy3UZ7vV&tNd8lq$7=94;Kfk&_ujNA2M)6M+ zG45Iz6{9Rca0@ioKp6Idn8u5K;-1Z_x4(eS)W19l+#w@fo zAU6uAWVJ?FazcoXXF4K(sW5fJ_$=Zq2hxsHLY;NG@FYf8yfa5x8j5I#30-JpwoZ&P z1-aCXf3xR85XD(CiFUuJttLp;RUuYb~NTkmPICXJCxg-RGQtf#JQ5h;2x}cJxmw zBRWQ{oAOpn4$vtQY;dHYz;MZ^o^%vtiPt~Mo&GAaOurj7_4MgQVnz|`J zzEj43wm;uiMO%!E7Als^&DyBO8B7$Ib)isq_MA3H?`QcO%zIQ3V<`ef0(0<7MZY>S g-X1A%g#BVrUEmYs@VM&4VDc{h3#>vf6eU0d07L;z(f|Me diff --git a/dist/all.require.js b/dist/all.require.js index b9665fc2..ad7d5cce 100644 --- a/dist/all.require.js +++ b/dist/all.require.js @@ -1830,7 +1830,8 @@ if (typeof console !== 'undefined') { } /** - * Stops event observing for a particular event handler + * Stops event observing for a particular event handler. Calling this method + * without arguments removes all handlers for all events * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead) * @memberOf fabric.Observable * @alias off @@ -1842,8 +1843,12 @@ if (typeof console !== 'undefined') { function stopObserving(eventName, handler) { if (!this.__eventListeners) return; + // remove all key/value pairs (event name -> event handler) + if (arguments.length === 0) { + this.__eventListeners = { }; + } // one object with key/value pairs was passed - if (arguments.length === 1 && typeof arguments[0] === 'object') { + else if (arguments.length === 1 && typeof arguments[0] === 'object') { for (var prop in eventName) { _removeEventListener.call(this, prop, eventName[prop]); }