@digital-blueprint/esign-app
Version:
[GitHub Repository](https://github.com/digital-blueprint/esign-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/esign-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/esign-app/) | [Esign Bundle](https://gitlab.tugraz.
31 lines • 287 kB
JavaScript
/*!
* License: LGPL-2.1-or-later
* Dependencies:
*
* @webcomponents/scoped-custom-element-registry: BSD-3-Clause
* @dbp-toolkit/app-shell: LGPL-2.1-or-later
* @dbp-toolkit/language-select: LGPL-2.1-or-later
* @dbp-toolkit/auth: LGPL-2.1-or-later
* lit-html: BSD-3-Clause
* @dbp-toolkit/notification: LGPL-2.1-or-later
* @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
* universal-router: MIT
* @dbp-toolkit/matomo: LGPL-2.1-or-later
* @tugraz/web-components: LGPL-2.1-or-later
* exceljs: MIT
* fabric: MIT
*/
function e(e,t,n){return(t=function(e){var t=function(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}(e,`string`);return typeof t==`symbol`?t:t+``}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var t=class{constructor(){e(this,`browserShadowBlurConstant`,1),e(this,`DPI`,96),e(this,`devicePixelRatio`,typeof window<`u`?window.devicePixelRatio:1),e(this,`perfLimitSizeTotal`,2097152),e(this,`maxCacheSideLimit`,4096),e(this,`minCacheSideLimit`,256),e(this,`disableStyleCopyPaste`,!1),e(this,`enableGLFiltering`,!0),e(this,`textureSize`,4096),e(this,`forceGLPutImageData`,!1),e(this,`cachesBoundsOfCurve`,!1),e(this,`fontPaths`,{}),e(this,`NUM_FRACTION_DIGITS`,4)}};const n=new class extends t{constructor(e){super(),this.configure(e)}configure(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(this,e)}addFonts(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.fontPaths={...this.fontPaths,...e}}removeFonts(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(e=>{delete this.fontPaths[e]})}clearFonts(){this.fontPaths={}}restoreDefaults(e){let n=new t,r=e?.reduce((e,t)=>(e[t]=n[t],e),{})||n;this.configure(r)}},r=function(e){var t=[...arguments].slice(1);return console[e](`fabric`,...t)};var i=class extends Error{constructor(e,t){super(`fabric: ${e}`,t)}},a=class extends i{constructor(e){super(`${e} 'options.signal' is in 'aborted' state`)}},o=class{},s=class extends o{testPrecision(e,t){let n=`precision ${t} float;\nvoid main(){}`,r=e.createShader(e.FRAGMENT_SHADER);return!!r&&(e.shaderSource(r,n),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS))}queryWebGL(e){let t=e.getContext(`webgl`);t&&(this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this.GLPrecision=[`highp`,`mediump`,`lowp`].find(e=>this.testPrecision(t,e)),t.getExtension(`WEBGL_lose_context`).loseContext(),r(`log`,`WebGL: max texture size ${this.maxTextureSize}`))}isSupported(e){return!!this.maxTextureSize&&this.maxTextureSize>=e}};const c={};let l;const u=()=>l||={document,window,isTouchSupported:`ontouchstart`in window||`ontouchstart`in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new s,dispose(){},copyPasteData:c},d=()=>u().document,f=()=>u().window,p=()=>Math.max(n.devicePixelRatio??f().devicePixelRatio,1),m=new class{constructor(){e(this,`boundsOfCurveCache`,{}),this.charWidthsCache=new Map}getFontCache(e){let{fontFamily:t,fontStyle:n,fontWeight:r}=e;t=t.toLowerCase();let i=this.charWidthsCache;i.has(t)||i.set(t,new Map);let a=i.get(t),o=`${n.toLowerCase()}_${(r+``).toLowerCase()}`;return a.has(o)||a.set(o,new Map),a.get(o)}clearFontCache(e){e?this.charWidthsCache.delete((e||``).toLowerCase()):this.charWidthsCache=new Map}limitDimsByArea(e){let{perfLimitSizeTotal:t}=n,r=Math.sqrt(t*e);return[Math.floor(r),Math.floor(t/r)]}},h=`7.2.0`;function g(){}const _=Math.PI/2,v=Math.PI/4,y=2*Math.PI,b=Math.PI/180,x=Object.freeze([1,0,0,1,0,0]),S=.4477152502,C=`center`,w=`left`,T=`bottom`,E=`right`,D=`none`,O=/\r?\n/,k=`moving`,ee=`scaling`,te=`rotating`,ne=`rotate`,re=`skewing`,ie=`resizing`,ae=`modifyPoly`,A=`changed`,oe=`scale`,j=`scaleX`,M=`scaleY`,se=`skewX`,ce=`skewY`,N=`fill`,P=`stroke`,le=`modified`,ue=`normal`,de=`json`,F=new class{constructor(){this[de]=new Map,this.svg=new Map}has(e){return this[de].has(e)}getClass(e){let t=this[de].get(e);if(!t)throw new i(`No class registered for ${e}`);return t}setClass(e,t){t?this[de].set(t,e):(this[de].set(e.type,e),this[de].set(e.type.toLowerCase(),e))}getSVGClass(e){return this.svg.get(e)}setSVGClass(e,t){this.svg.set(t??e.type.toLowerCase(),e)}},fe=new class extends Array{remove(e){let t=this.indexOf(e);t>-1&&this.splice(t,1)}cancelAll(){let e=this.splice(0);return e.forEach(e=>e.abort()),e}cancelByCanvas(e){if(!e)return[];let t=this.filter(t=>t.target===e||typeof t.target==`object`&&t.target?.canvas===e);return t.forEach(e=>e.abort()),t}cancelByTarget(e){if(!e)return[];let t=this.filter(t=>t.target===e);return t.forEach(e=>e.abort()),t}};var pe=class{constructor(){e(this,`__eventListeners`,{})}on(e,t){if(this.__eventListeners||={},typeof e==`object`)return Object.entries(e).forEach(e=>{let[t,n]=e;this.on(t,n)}),()=>this.off(e);if(t){let n=e;return this.__eventListeners[n]||(this.__eventListeners[n]=[]),this.__eventListeners[n].push(t),()=>this.off(n,t)}return()=>!1}once(e,t){if(typeof e==`object`){let t=[];return Object.entries(e).forEach(e=>{let[n,r]=e;t.push(this.once(n,r))}),()=>t.forEach(e=>e())}if(t){let n=this.on(e,function(){var e=[...arguments];t.call(this,...e),n()});return n}return()=>!1}_removeEventListener(e,t){if(this.__eventListeners[e])if(t){let n=this.__eventListeners[e],r=n.indexOf(t);r>-1&&n.splice(r,1)}else this.__eventListeners[e]=[]}off(e,t){if(this.__eventListeners)if(e===void 0)for(let e in this.__eventListeners)this._removeEventListener(e);else typeof e==`object`?Object.entries(e).forEach(e=>{let[t,n]=e;this._removeEventListener(t,n)}):this._removeEventListener(e,t)}fire(e,t){if(!this.__eventListeners)return;let n=this.__eventListeners[e]?.concat();if(n)for(let e=0;e<n.length;e++)n[e].call(this,t||{})}};const me=(e,t)=>{let n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},he=e=>{if(e===0)return 1;switch(Math.abs(e)/_){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},ge=e=>{if(e===0)return 0;let t=e/_,n=Math.sign(e);switch(t){case 1:return n;case 2:return 0;case 3:return-n}return Math.sin(e)};var I=class e{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;typeof e==`object`?(this.x=e.x,this.y=e.y):(this.x=e,this.y=t)}add(t){return new e(this.x+t.x,this.y+t.y)}addEquals(e){return this.x+=e.x,this.y+=e.y,this}scalarAdd(t){return new e(this.x+t,this.y+t)}scalarAddEquals(e){return this.x+=e,this.y+=e,this}subtract(t){return new e(this.x-t.x,this.y-t.y)}subtractEquals(e){return this.x-=e.x,this.y-=e.y,this}scalarSubtract(t){return new e(this.x-t,this.y-t)}scalarSubtractEquals(e){return this.x-=e,this.y-=e,this}multiply(t){return new e(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new e(this.x*t,this.y*t)}scalarMultiplyEquals(e){return this.x*=e,this.y*=e,this}divide(t){return new e(this.x/t.x,this.y/t.y)}scalarDivide(t){return new e(this.x/t,this.y/t)}scalarDivideEquals(e){return this.x/=e,this.y/=e,this}eq(e){return this.x===e.x&&this.y===e.y}lt(e){return this.x<e.x&&this.y<e.y}lte(e){return this.x<=e.x&&this.y<=e.y}gt(e){return this.x>e.x&&this.y>e.y}gte(e){return this.x>=e.x&&this.y>=e.y}lerp(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.5;return n=Math.max(Math.min(1,n),0),new e(this.x+(t.x-this.x)*n,this.y+(t.y-this.y)*n)}distanceFrom(e){let t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)}midPointFrom(e){return this.lerp(e)}min(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return`${this.x},${this.y}`}setXY(e,t){return this.x=e,this.y=t,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setFromPoint(e){return this.x=e.x,this.y=e.y,this}swap(e){let t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}clone(){return new e(this.x,this.y)}rotate(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:_e,r=ge(t),i=he(t),a=this.subtract(n);return new e(a.x*i-a.y*r,a.x*r+a.y*i).add(n)}transform(t){let n=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return new e(t[0]*this.x+t[2]*this.y+(n?0:t[4]),t[1]*this.x+t[3]*this.y+(n?0:t[5]))}};const _e=new I(0,0),ve=e=>!!e&&Array.isArray(e._objects);function ye(t){class n extends t{constructor(){super(...arguments),e(this,`_objects`,[])}_onObjectAdded(e){}_onObjectRemoved(e){}_onStackOrderChanged(e){}add(){var e=[...arguments];let t=this._objects.push(...e);return e.forEach(e=>this._onObjectAdded(e)),t}insertAt(e){var t=[...arguments].slice(1);return this._objects.splice(e,0,...t),t.forEach(e=>this._onObjectAdded(e)),this._objects.length}remove(){let e=this._objects,t=[];return[...arguments].forEach(n=>{let r=e.indexOf(n);r!==-1&&(e.splice(r,1),t.push(n),this._onObjectRemoved(n))}),t}forEachObject(e){this.getObjects().forEach((t,n,r)=>e(t,n,r))}getObjects(){var e=[...arguments];return e.length===0?[...this._objects]:this._objects.filter(t=>t.isType(...e))}item(e){return this._objects[e]}isEmpty(){return this._objects.length===0}size(){return this._objects.length}contains(e,t){return!!this._objects.includes(e)||!!t&&this._objects.some(t=>t instanceof n&&t.contains(e,!0))}complexity(){return this._objects.reduce((e,t)=>e+=t.complexity?t.complexity():0,0)}sendObjectToBack(e){return!(!e||e===this._objects[0])&&(me(this._objects,e),this._objects.unshift(e),this._onStackOrderChanged(e),!0)}bringObjectToFront(e){return!(!e||e===this._objects[this._objects.length-1])&&(me(this._objects,e),this._objects.push(e),this._onStackOrderChanged(e),!0)}sendObjectBackwards(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==0){let r=this.findNewLowerIndex(e,n,t);return me(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}bringObjectForward(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==this._objects.length-1){let r=this.findNewUpperIndex(e,n,t);return me(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}moveObjectTo(e,t){return e!==this._objects[t]&&(me(this._objects,e),this._objects.splice(t,0,e),this._onStackOrderChanged(e),!0)}findNewLowerIndex(e,t,n){let r;if(n){r=t;for(let n=t-1;n>=0;--n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t-1;return r}findNewUpperIndex(e,t,n){let r;if(n){r=t;for(let n=t+1;n<this._objects.length;++n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t+1;return r}collectObjects(e){let{left:t,top:n,width:r,height:i}=e,{includeIntersecting:a=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=[],s=new I(t,n),c=s.add(new I(r,i));for(let e=this._objects.length-1;e>=0;e--){let t=this._objects[e];t.selectable&&t.visible&&(a&&t.intersectsWithRect(s,c)||t.isContainedWithinRect(s,c)||a&&t.containsPoint(s)||a&&t.containsPoint(c))&&o.push(t)}return o}}return n}var be=class extends pe{_setOptions(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};for(let t in e)this.set(t,e[t])}_setObject(e){for(let t in e)this._set(t,e[t])}set(e,t){return typeof e==`object`?this._setObject(e):this._set(e,t),this}_set(e,t){this[e]=t}toggle(e){let t=this.get(e);return typeof t==`boolean`&&this.set(e,!t),this}get(e){return this[e]}};function xe(e){return f().requestAnimationFrame(e)}function Se(e){return f().cancelAnimationFrame(e)}let Ce=0;const we=()=>Ce++,Te=()=>{let e=d().createElement(`canvas`);if(!e||e.getContext===void 0)throw new i("Failed to create `canvas` element");return e},Ee=()=>d().createElement(`img`),L=e=>{let t=Te();return t.width=e.width,t.height=e.height,t},De=(e,t,n)=>e.toDataURL(`image/${t}`,n),Oe=(e,t,n)=>new Promise((r,i)=>{e.toBlob(r,`image/${t}`,n)}),R=e=>e*b,ke=e=>e/b,Ae=e=>e.every((e,t)=>e===x[t]),z=(e,t,n)=>new I(e).transform(t,n),B=e=>{let t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0],0,0],{x:r,y:i}=new I(e[4],e[5]).transform(n,!0);return n[4]=-r,n[5]=-i,n},V=(e,t,n)=>[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]],je=(e,t)=>e.reduceRight((e,n)=>n&&e?V(n,e,t):n||e,void 0)||x.concat(),Me=e=>{let[t,n]=e;return Math.atan2(n,t)},Ne=e=>{let t=Me(e),n=e[0]**2+e[1]**2,r=Math.sqrt(n),i=(e[0]*e[3]-e[2]*e[1])/r,a=Math.atan2(e[0]*e[2]+e[1]*e[3],n);return{angle:ke(t),scaleX:r,scaleY:i,skewX:ke(a),skewY:0,translateX:e[4]||0,translateY:e[5]||0}},Pe=function(e){return[1,0,0,1,e,arguments.length>1&&arguments[1]!==void 0?arguments[1]:0]};function Fe(){let{angle:e=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{x:t=0,y:n=0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=R(e),i=he(r),a=ge(r);return[i,a,-a,i,t?t-(i*t-a*n):0,n?n-(a*t+i*n):0]}const Ie=function(e){return[e,0,0,arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,0,0]},Le=e=>Math.tan(R(e)),Re=e=>[1,0,Le(e),1,0,0],ze=e=>[1,Le(e),0,1,0,0],Be=e=>{let{scaleX:t=1,scaleY:n=1,flipX:r=!1,flipY:i=!1,skewX:a=0,skewY:o=0}=e,s=Ie(r?-t:t,i?-n:n);return a&&(s=V(s,Re(a),!0)),o&&(s=V(s,ze(o),!0)),s},Ve=e=>{let{translateX:t=0,translateY:n=0,angle:r=0}=e,i=Pe(t,n);r&&(i=V(i,Fe({angle:r})));let a=Be(e);return Ae(a)||(i=V(i,a)),i},He=function(e){let{signal:t,crossOrigin:n=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise(function(r,o){if(t&&t.aborted)return o(new a(`loadImage`));let s=Ee(),c;t&&(c=function(e){s.src=``,o(e)},t.addEventListener(`abort`,c,{once:!0}));let l=function(){s.onload=s.onerror=null,c&&t?.removeEventListener(`abort`,c),r(s)};e?(s.onload=l,s.onerror=function(){c&&t?.removeEventListener(`abort`,c),o(new i(`Error loading ${s.src}`))},n&&(s.crossOrigin=n),s.src=e):l()})},Ue=function(e){let{signal:t,reviver:n=g}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((r,i)=>{let a=[];t&&t.addEventListener(`abort`,i,{once:!0}),Promise.all(e.map(e=>F.getClass(e.type).fromObject(e,{signal:t}).then(t=>(n(e,t),a.push(t),t)))).then(r).catch(e=>{a.forEach(e=>{e.dispose&&e.dispose()}),i(e)}).finally(()=>{t&&t.removeEventListener(`abort`,i)})})},We=function(e){let{signal:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((n,r)=>{let i=[];t&&t.addEventListener(`abort`,r,{once:!0});let a=Object.values(e).map(e=>e&&e.type&&F.has(e.type)?Ue([e],{signal:t}).then(e=>{let[t]=e;return i.push(t),t}):e),o=Object.keys(e);Promise.all(a).then(e=>e.reduce((e,t,n)=>(e[o[n]]=t,e),{})).then(n).catch(e=>{i.forEach(e=>{e.dispose&&e.dispose()}),r(e)}).finally(()=>{t&&t.removeEventListener(`abort`,r)})})},Ge=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:[]).reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})},Ke=(e,t)=>Object.keys(e).reduce((n,r)=>(t(e[r],r,e)&&(n[r]=e[r]),n),{}),H=(e,t)=>parseFloat(Number(e).toFixed(t)),qe=e=>`matrix(`+e.map(e=>H(e,n.NUM_FRACTION_DIGITS)).join(` `)+`)`,U=e=>!!e&&e.toLive!==void 0,Je=e=>!!e&&typeof e.toObject==`function`,Ye=e=>!!e&&e.offsetX!==void 0&&`source`in e,Xe=e=>!!e&&`multiSelectionStacking`in e;function Ze(e){let t=e&&Qe(e),n=0,r=0;if(!e||!t)return{left:n,top:r};let i=e,a=t.documentElement,o=t.body||{scrollLeft:0,scrollTop:0};for(;i&&(i.parentNode||i.host)&&(i=i.parentNode||i.host,i===t?(n=o.scrollLeft||a.scrollLeft||0,r=o.scrollTop||a.scrollTop||0):(n+=i.scrollLeft||0,r+=i.scrollTop||0),i.nodeType!==1||i.style.position!==`fixed`););return{left:n,top:r}}const Qe=e=>e.ownerDocument||null,$e=e=>e.ownerDocument?.defaultView||null,et=function(e,t,n){let{width:r,height:i}=n,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;e.width=r,e.height=i,a>1&&(e.setAttribute(`width`,(r*a).toString()),e.setAttribute(`height`,(i*a).toString()),t.scale(a,a))},tt=(e,t)=>{let{width:n,height:r}=t;n&&(e.style.width=typeof n==`number`?`${n}px`:n),r&&(e.style.height=typeof r==`number`?`${r}px`:r)};function nt(e){return e.onselectstart!==void 0&&(e.onselectstart=()=>!1),e.style.userSelect=D,e}var rt=class{constructor(t){e(this,`_originalCanvasStyle`,void 0),e(this,`lower`,void 0);let n=this.createLowerCanvas(t);this.lower={el:n,ctx:n.getContext(`2d`)}}createLowerCanvas(e){let t=(n=e)&&n.getContext!==void 0?e:e&&d().getElementById(e)||Te();var n;if(t.hasAttribute(`data-fabric`))throw new i(`Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?`);return this._originalCanvasStyle=t.style.cssText,t.setAttribute(`data-fabric`,`main`),t.classList.add(`lower-canvas`),t}cleanupDOM(e){let{width:t,height:n}=e,{el:r}=this.lower;r.classList.remove(`lower-canvas`),r.removeAttribute(`data-fabric`),r.setAttribute(`width`,`${t}`),r.setAttribute(`height`,`${n}`),r.style.cssText=this._originalCanvasStyle||``,this._originalCanvasStyle=void 0}setDimensions(e,t){let{el:n,ctx:r}=this.lower;et(n,r,e,t)}setCSSDimensions(e){tt(this.lower.el,e)}calcOffset(){return function(e){let t=e&&Qe(e),n={left:0,top:0};if(!t)return n;let r=$e(e)?.getComputedStyle(e,null)||{};n.left+=parseInt(r.borderLeftWidth,10)||0,n.top+=parseInt(r.borderTopWidth,10)||0,n.left+=parseInt(r.paddingLeft,10)||0,n.top+=parseInt(r.paddingTop,10)||0;let i={left:0,top:0},a=t.documentElement;e.getBoundingClientRect!==void 0&&(i=e.getBoundingClientRect());let o=Ze(e);return{left:i.left+o.left-(a.clientLeft||0)+n.left,top:i.top+o.top-(a.clientTop||0)+n.top}}(this.lower.el)}dispose(){u().dispose(this.lower.el),delete this.lower}};const it={backgroundVpt:!0,backgroundColor:``,overlayVpt:!0,overlayColor:``,includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...x],patternQuality:`best`},W=e=>e.toString().replace(/&/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`);let at;const ot=e=>{if(at||at||(at=`Intl`in f()&&`Segmenter`in Intl&&new Intl.Segmenter(void 0,{granularity:`grapheme`})),at){let t=at.segment(e);return Array.from(t).map(e=>{let{segment:t}=e;return t})}return st(e)},st=e=>{let t=[];for(let n,r=0;r<e.length;r++)!1!==(n=ct(e,r))&&t.push(n);return t},ct=(e,t)=>{let n=e.charCodeAt(t);if(isNaN(n))return``;if(n<55296||n>57343)return e.charAt(t);if(55296<=n&&n<=56319){if(e.length<=t+1)throw`High surrogate without following low surrogate`;let n=e.charCodeAt(t+1);if(56320>n||n>57343)throw`High surrogate without following low surrogate`;return e.charAt(t)+e.charAt(t+1)}if(t===0)throw`Low surrogate without preceding high surrogate`;let r=e.charCodeAt(t-1);if(55296>r||r>56319)throw`Low surrogate without preceding high surrogate`;return!1};var lt=Object.freeze({__proto__:null,capitalize:function(e){let t=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return`${e.charAt(0).toUpperCase()}${t?e.slice(1):e.slice(1).toLowerCase()}`},escapeXml:W,graphemeSplit:ot}),ut=class e extends ye(be){get lowerCanvasEl(){return this.elements.lower?.el}get contextContainer(){return this.elements.lower?.ctx}static getDefaults(){return e.ownDefaults}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(t),this.initElements(e),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(e){this.elements=new rt(e)}add(){let e=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),e}insertAt(e){var t=[...arguments].slice(1);let n=super.insertAt(e,...t);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),n}remove(){let e=super.remove(...arguments);return e.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),e}_onObjectAdded(e){e.canvas&&e.canvas!==this&&(r(`warn`,`Canvas is trying to add an object that belongs to a different canvas.
Resulting to default behavior: removing object from previous canvas and adding to new canvas`),e.canvas.remove(e)),e._set(`canvas`,this),e.setCoords(),this.fire(`object:added`,{target:e}),e.fire(`added`,{target:this})}_onObjectRemoved(e){e._set(`canvas`,void 0),this.fire(`object:removed`,{target:e}),e.fire(`removed`,{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?p():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}_setDimensionsImpl(e){let{cssOnly:t=!1,backstoreOnly:n=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!t){let t={width:this.width,height:this.height,...e};this.elements.setDimensions(t,this.getRetinaScaling()),this.hasLostContext=!0,this.width=t.width,this.height=t.height}n||this.elements.setCSSDimensions(e),this.calcOffset()}setDimensions(e,t){this._setDimensionsImpl(e,t),t&&t.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(e){this.viewportTransform=e,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(e,t){let n=e,r=[...this.viewportTransform],i=z(e,B(r));r[0]=t,r[3]=t;let a=z(i,r);r[4]+=n.x-a.x,r[5]+=n.y-a.y,this.setViewportTransform(r)}setZoom(e){this.zoomToPoint(new I(0,0),e)}absolutePan(e){let t=[...this.viewportTransform];return t[4]=-e.x,t[5]=-e.y,this.setViewportTransform(t)}relativePan(e){return this.absolutePan(new I(-e.x-this.viewportTransform[4],-e.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(e){e.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor=``,this.overlayColor=``,this.clearContext(this.getContext()),this.fire(`canvas:cleared`),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=xe(()=>this.renderAndReset()))}calcViewportBoundaries(){let e=this.width,t=this.height,n=B(this.viewportTransform),r=z({x:0,y:0},n),i=z({x:e,y:t},n),a=r.min(i),o=r.max(i);return this.vptCoords={tl:a,tr:new I(o.x,a.y),bl:new I(a.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&=(Se(this.nextRenderHandle),0)}drawControls(e){}renderCanvas(e,t){if(this.destroyed)return;let n=this.viewportTransform,r=this.clipPath;this.calcViewportBoundaries(),this.clearContext(e),e.imageSmoothingEnabled=this.imageSmoothingEnabled,e.patternQuality=this.patternQuality,this.fire(`before:render`,{ctx:e}),this._renderBackground(e),e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._renderObjects(e,t),e.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(e),r&&(r._set(`canvas`,this),r.shouldCache(),r._transformDone=!0,r.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(e,r)),this._renderOverlay(e),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(e),this.fire(`after:render`,{ctx:e}),this.__cleanupTask&&=(this.__cleanupTask(),void 0)}drawClipPathOnCanvas(e,t){let n=this.viewportTransform;e.save(),e.transform(...n),e.globalCompositeOperation=`destination-in`,t.transform(e),e.scale(1/t.zoomX,1/t.zoomY),e.drawImage(t._cacheCanvas,-t.cacheTranslationX,-t.cacheTranslationY),e.restore()}_renderObjects(e,t){for(let n=0,r=t.length;n<r;++n)t[n]&&t[n].render(e)}_renderBackgroundOrOverlay(e,t){let n=this[`${t}Color`],r=this[`${t}Image`],i=this.viewportTransform,a=this[`${t}Vpt`];if(!n&&!r)return;let o=U(n);if(n){if(e.save(),e.beginPath(),e.moveTo(0,0),e.lineTo(this.width,0),e.lineTo(this.width,this.height),e.lineTo(0,this.height),e.closePath(),e.fillStyle=o?n.toLive(e):n,a&&e.transform(...i),o){e.transform(1,0,0,1,n.offsetX||0,n.offsetY||0);let t=n.gradientTransform||n.patternTransform;t&&e.transform(...t)}e.fill(),e.restore()}if(r){e.save();let{skipOffscreen:t}=this;this.skipOffscreen=a,a&&e.transform(...i),r.render(e),this.skipOffscreen=t,e.restore()}}_renderBackground(e){this._renderBackgroundOrOverlay(e,`background`)}_renderOverlay(e){this._renderBackgroundOrOverlay(e,`overlay`)}getCenterPoint(){return new I(this.width/2,this.height/2)}centerObjectH(e){return this._centerObject(e,new I(this.getCenterPoint().x,e.getCenterPoint().y))}centerObjectV(e){return this._centerObject(e,new I(e.getCenterPoint().x,this.getCenterPoint().y))}centerObject(e){return this._centerObject(e,this.getCenterPoint())}viewportCenterObject(e){return this._centerObject(e,this.getVpCenter())}viewportCenterObjectH(e){return this._centerObject(e,new I(this.getVpCenter().x,e.getCenterPoint().y))}viewportCenterObjectV(e){return this._centerObject(e,new I(e.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return z(this.getCenterPoint(),B(this.viewportTransform))}_centerObject(e,t){e.setXY(t,C,C),e.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(e){return this.toDatalessObject(e)}toObject(e){return this._toObjectMethod(`toObject`,e)}toJSON(){return this.toObject()}toDatalessObject(e){return this._toObjectMethod(`toDatalessObject`,e)}_toObjectMethod(e,t){let n=this.clipPath,r=n&&!n.excludeFromExport?this._toObject(n,e,t):null;return{version:h,...Ge(this,t),objects:this._objects.filter(e=>!e.excludeFromExport).map(n=>this._toObject(n,e,t)),...this.__serializeBgOverlay(e,t),...r?{clipPath:r}:null}}_toObject(e,t,n){let r;this.includeDefaultValues||(r=e.includeDefaultValues,e.includeDefaultValues=!1);let i=e[t](n);return this.includeDefaultValues||(e.includeDefaultValues=!!r),i}__serializeBgOverlay(e,t){let n={},r=this.backgroundImage,i=this.overlayImage,a=this.backgroundColor,o=this.overlayColor;return U(a)?a.excludeFromExport||(n.background=a.toObject(t)):a&&(n.background=a),U(o)?o.excludeFromExport||(n.overlay=o.toObject(t)):o&&(n.overlay=o),r&&!r.excludeFromExport&&(n.backgroundImage=this._toObject(r,e,t)),i&&!i.excludeFromExport&&(n.overlayImage=this._toObject(i,e,t)),n}toSVG(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;e.reviver=t;let n=[];return(this._setSVGPreamble(n,e),this._setSVGHeader(n,e),this.clipPath)&&n.push(`<g clip-path="url(#${W(this.clipPath.clipPathId??``)})" >\n`),this._setSVGBgOverlayColor(n,`background`),this._setSVGBgOverlayImage(n,`backgroundImage`,t),this._setSVGObjects(n,t),this.clipPath&&n.push(`</g>
`),this._setSVGBgOverlayColor(n,`overlay`),this._setSVGBgOverlayImage(n,`overlayImage`,t),n.push(`</svg>`),n.join(``)}_setSVGPreamble(e,t){t.suppressPreamble||e.push(`<?xml version="1.0" encoding="`,t.encoding||`UTF-8`,`" standalone="no" ?>
`,`<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" `,`"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
`)}_setSVGHeader(e,t){let r=t.width||`${this.width}`,i=t.height||`${this.height}`,a=n.NUM_FRACTION_DIGITS,o=t.viewBox,s;if(o)s=`viewBox="${o.x} ${o.y} ${o.width} ${o.height}" `;else if(this.svgViewportTransformation){let e=this.viewportTransform;s=`viewBox="${H(-e[4]/e[0],a)} ${H(-e[5]/e[3],a)} ${H(this.width/e[0],a)} ${H(this.height/e[3],a)}" `}else s=`viewBox="0 0 ${this.width} ${this.height}" `;e.push(`<svg `,`xmlns="http://www.w3.org/2000/svg" `,`xmlns:xlink="http://www.w3.org/1999/xlink" `,`version="1.1" `,`width="`,r,`" `,`height="`,i,`" `,s,`xml:space="preserve">
`,`<desc>Created with Fabric.js `,h,`</desc>
`,`<defs>
`,this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),`</defs>
`)}createSVGClipPathMarkup(e){let t=this.clipPath;return t?(t.clipPathId=`CLIPPATH_${we()}`,`<clipPath id="${t.clipPathId}" >\n${t.toClipPathSVG(e.reviver)}</clipPath>\n`):``}createSVGRefElementsMarkup(){return[`background`,`overlay`].map(e=>{let t=this[`${e}Color`];if(U(t)){let n=this[`${e}Vpt`],r=this.viewportTransform,i={isType:()=>!1,width:this.width/(n?r[0]:1),height:this.height/(n?r[3]:1)};return t.toSVG(i,{additionalTransform:n?qe(r):``})}}).join(``)}createSVGFontFacesMarkup(){let e=[],t={},r=n.fontPaths;this._objects.forEach(function t(n){e.push(n),ve(n)&&n._objects.forEach(t)}),e.forEach(e=>{if(!(n=e)||typeof n._renderText!=`function`)return;var n;let{styles:i,fontFamily:a}=e;!t[a]&&r[a]&&(t[a]=!0,i&&Object.values(i).forEach(e=>{Object.values(e).forEach(e=>{let{fontFamily:n=``}=e;!t[n]&&r[n]&&(t[n]=!0)})}))});let i=Object.keys(t).map(e=>`\t\t@font-face {\n\t\t\tfont-family: '${e}';\n\t\t\tsrc: url('${r[e]}');\n\t\t}\n`).join(``);return i?`\t<style type="text/css"><![CDATA[\n${i}]]></style>\n`:``}_setSVGObjects(e,t){this.forEachObject(n=>{n.excludeFromExport||this._setSVGObject(e,n,t)})}_setSVGObject(e,t,n){e.push(t.toSVG(n))}_setSVGBgOverlayImage(e,t,n){let r=this[t];r&&!r.excludeFromExport&&r.toSVG&&e.push(r.toSVG(n))}_setSVGBgOverlayColor(e,t){let n=this[`${t}Color`];if(n)if(U(n)){let r=n.repeat||``,i=this.width,a=this.height,o=this[`${t}Vpt`]?qe(B(this.viewportTransform)):``;e.push(`<rect transform="${o} translate(${i/2},${a/2})" x="${n.offsetX-i/2}" y="${n.offsetY-a/2}" width="${r!==`repeat-y`&&r!==`no-repeat`||!Ye(n)?i:n.source.width}" height="${r!==`repeat-x`&&r!==`no-repeat`||!Ye(n)?a:n.source.height}" fill="url(#SVGID_${n.id})"></rect>\n`)}else e.push(`<rect x="0" y="0" width="100%" height="100%" `,`fill="`,n,`"`,`></rect>
`)}loadFromJSON(e,t){let{signal:n}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!e)return Promise.reject(new i("`json` is undefined"));let{objects:r=[],...a}=typeof e==`string`?JSON.parse(e):e,{backgroundImage:o,background:s,overlayImage:c,overlay:l,clipPath:u}=a,d=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([Ue(r,{reviver:t,signal:n}),We({backgroundImage:o,backgroundColor:s,overlayImage:c,overlayColor:l,clipPath:u},{signal:n})]).then(e=>{let[t,n]=e;return this.clear(),this.add(...t),this.set(a),this.set(n),this.renderOnAddRemove=d,this})}clone(e){let t=this.toObject(e);return this.cloneWithoutData().loadFromJSON(t)}cloneWithoutData(){let e=L(this);return new this.constructor(e)}toDataURL(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return De(this.toCanvasElement(a,e),t,n)}toBlob(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return Oe(this.toCanvasElement(a,e),t,n)}toCanvasElement(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1,{width:t,height:n,left:r,top:i,filter:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=(t||this.width)*e,s=(n||this.height)*e,c=this.getZoom(),l=this.width,u=this.height,d=this.skipControlsDrawing,f=c*e,p=this.viewportTransform,m=[f,0,0,f,(p[4]-(r||0))*e,(p[5]-(i||0))*e],h=this.enableRetinaScaling,g=L({width:o,height:s}),_=a?this._objects.filter(e=>a(e)):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=m,this.width=o,this.height=s,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(g.getContext(`2d`),_),this.viewportTransform=p,this.width=l,this.height=u,this.calcViewportBoundaries(),this.enableRetinaScaling=h,this.skipControlsDrawing=d,g}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),fe.cancelByCanvas(this),this.disposed=!0,new Promise((e,t)=>{let n=()=>{this.destroy(),e(!0)};n.kill=t,this.__cleanupTask&&this.__cleanupTask.kill(`aborted`),this.destroyed?e(!1):this.nextRenderHandle?this.__cleanupTask=n:n()})}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject(e=>e.dispose()),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}};e(ut,`ownDefaults`,it);const dt=[`touchstart`,`touchmove`,`touchend`],ft=e=>{let t=Ze(e.target),n=function(e){let t=e.changedTouches;return t&&t[0]?t[0]:e}(e);return new I(n.clientX+t.left,n.clientY+t.top)},pt=e=>dt.includes(e.type)||e.pointerType===`touch`,mt=e=>{e.preventDefault(),e.stopPropagation()},ht=e=>{let t=0,n=0,r=0,i=0;for(let a=0,o=e.length;a<o;a++){let{x:o,y:s}=e[a];(o>r||!a)&&(r=o),(o<t||!a)&&(t=o),(s>i||!a)&&(i=s),(s<n||!a)&&(n=s)}return{left:t,top:n,width:r-t,height:i-n}},gt=(e,t)=>_t(e,V(t,e.calcOwnMatrix())),_t=(e,t)=>{let{translateX:n,translateY:r,scaleX:i,scaleY:a,...o}=Ne(t),s=new I(n,r);e.flipX=!1,e.flipY=!1,Object.assign(e,o),e.set({scaleX:i,scaleY:a}),e.setPositionByOrigin(s,C,C)},vt=e=>{e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},yt=e=>({scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}),bt=(e,t,n)=>{let r=e/2,i=t/2,a=ht([new I(-r,-i),new I(r,-i),new I(-r,i),new I(r,i)].map(e=>e.transform(n)));return new I(a.width,a.height)},xt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;return V(B(arguments.length>1&&arguments[1]!==void 0?arguments[1]:x),e)},St=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:x,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:x;return e.transform(xt(t,n))},Ct=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:x,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:x;return e.transform(xt(t,n),!0)},wt=(e,t,n)=>{let r=xt(t,n);return _t(e,V(r,e.calcOwnMatrix())),r},Tt={left:-.5,top:-.5,center:0,bottom:.5,right:.5},G=e=>typeof e==`string`?Tt[e]:e-.5,Et=new I(1,0),Dt=new I,Ot=(e,t)=>e.rotate(t),kt=(e,t)=>new I(t).subtract(e),At=e=>e.distanceFrom(Dt),jt=(e,t)=>Math.atan2(Ft(e,t),It(e,t)),Mt=e=>jt(Et,e),Nt=e=>e.eq(Dt)?e:e.scalarDivide(At(e)),Pt=function(e){let t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return Nt(new I(-e.y,e.x).scalarMultiply(t?1:-1))},Ft=(e,t)=>e.x*t.y-e.y*t.x,It=(e,t)=>e.x*t.x+e.y*t.y,Lt=(e,t,n)=>{if(e.eq(t)||e.eq(n))return!0;let r=Ft(t,n),i=Ft(t,e),a=Ft(n,e);return r>=0?i>=0&&a<=0:!(i<=0&&a>=0)},Rt=`not-allowed`;function zt(e){return G(e.originX)===G(C)&&G(e.originY)===G(C)}function Bt(e){return .5-G(e)}const Vt=(e,t)=>e[t],Ht=(e,t,n,r)=>({e,transform:t,pointer:new I(n,r)});function Ut(e,t,n){let r=n,i=Mt(kt(St(e.getCenterPoint(),e.canvas.viewportTransform,void 0),r))+y;return Math.round(i%y/v)}function Wt(e,t,n,r,i){let{target:a,corner:o}=e,s=a.controls[o],c=a.canvas?.getZoom()||1,l=a.padding/c,u=function(e,t,n,r){let i=e.getRelativeCenterPoint(),a=n!==void 0&&r!==void 0?e.translateToGivenOrigin(i,C,C,n,r):new I(e.left,e.top);return(e.angle?t.rotate(-R(e.angle),i):t).subtract(a)}(a,new I(r,i),t,n);return u.x>=l&&(u.x-=l),u.x<=-l&&(u.x+=l),u.y>=l&&(u.y-=l),u.y<=l&&(u.y+=l),u.x-=s.offsetX,u.y-=s.offsetY,u}const Gt=e=>e.replace(/\s+/g,` `),Kt={aliceblue:`#F0F8FF`,antiquewhite:`#FAEBD7`,aqua:`#0FF`,aquamarine:`#7FFFD4`,azure:`#F0FFFF`,beige:`#F5F5DC`,bisque:`#FFE4C4`,black:`#000`,blanchedalmond:`#FFEBCD`,blue:`#00F`,blueviolet:`#8A2BE2`,brown:`#A52A2A`,burlywood:`#DEB887`,cadetblue:`#5F9EA0`,chartreuse:`#7FFF00`,chocolate:`#D2691E`,coral:`#FF7F50`,cornflowerblue:`#6495ED`,cornsilk:`#FFF8DC`,crimson:`#DC143C`,cyan:`#0FF`,darkblue:`#00008B`,darkcyan:`#008B8B`,darkgoldenrod:`#B8860B`,darkgray:`#A9A9A9`,darkgrey:`#A9A9A9`,darkgreen:`#006400`,darkkhaki:`#BDB76B`,darkmagenta:`#8B008B`,darkolivegreen:`#556B2F`,darkorange:`#FF8C00`,darkorchid:`#9932CC`,darkred:`#8B0000`,darksalmon:`#E9967A`,darkseagreen:`#8FBC8F`,darkslateblue:`#483D8B`,darkslategray:`#2F4F4F`,darkslategrey:`#2F4F4F`,darkturquoise:`#00CED1`,darkviolet:`#9400D3`,deeppink:`#FF1493`,deepskyblue:`#00BFFF`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1E90FF`,firebrick:`#B22222`,floralwhite:`#FFFAF0`,forestgreen:`#228B22`,fuchsia:`#F0F`,gainsboro:`#DCDCDC`,ghostwhite:`#F8F8FF`,gold:`#FFD700`,goldenrod:`#DAA520`,gray:`#808080`,grey:`#808080`,green:`#008000`,greenyellow:`#ADFF2F`,honeydew:`#F0FFF0`,hotpink:`#FF69B4`,indianred:`#CD5C5C`,indigo:`#4B0082`,ivory:`#FFFFF0`,khaki:`#F0E68C`,lavender:`#E6E6FA`,lavenderblush:`#FFF0F5`,lawngreen:`#7CFC00`,lemonchiffon:`#FFFACD`,lightblue:`#ADD8E6`,lightcoral:`#F08080`,lightcyan:`#E0FFFF`,lightgoldenrodyellow:`#FAFAD2`,lightgray:`#D3D3D3`,lightgrey:`#D3D3D3`,lightgreen:`#90EE90`,lightpink:`#FFB6C1`,lightsalmon:`#FFA07A`,lightseagreen:`#20B2AA`,lightskyblue:`#87CEFA`,lightslategray:`#789`,lightslategrey:`#789`,lightsteelblue:`#B0C4DE`,lightyellow:`#FFFFE0`,lime:`#0F0`,limegreen:`#32CD32`,linen:`#FAF0E6`,magenta:`#F0F`,maroon:`#800000`,mediumaquamarine:`#66CDAA`,mediumblue:`#0000CD`,mediumorchid:`#BA55D3`,mediumpurple:`#9370DB`,mediumseagreen:`#3CB371`,mediumslateblue:`#7B68EE`,mediumspringgreen:`#00FA9A`,mediumturquoise:`#48D1CC`,mediumvioletred:`#C71585`,midnightblue:`#191970`,mintcream:`#F5FFFA`,mistyrose:`#FFE4E1`,moccasin:`#FFE4B5`,navajowhite:`#FFDEAD`,navy:`#000080`,oldlace:`#FDF5E6`,olive:`#808000`,olivedrab:`#6B8E23`,orange:`#FFA500`,orangered:`#FF4500`,orchid:`#DA70D6`,palegoldenrod:`#EEE8AA`,palegreen:`#98FB98`,paleturquoise:`#AFEEEE`,palevioletred:`#DB7093`,papayawhip:`#FFEFD5`,peachpuff:`#FFDAB9`,peru:`#CD853F`,pink:`#FFC0CB`,plum:`#DDA0DD`,powderblue:`#B0E0E6`,purple:`#800080`,rebeccapurple:`#639`,red:`#F00`,rosybrown:`#BC8F8F`,royalblue:`#4169E1`,saddlebrown:`#8B4513`,salmon:`#FA8072`,sandybrown:`#F4A460`,seagreen:`#2E8B57`,seashell:`#FFF5EE`,sienna:`#A0522D`,silver:`#C0C0C0`,skyblue:`#87CEEB`,slateblue:`#6A5ACD`,slategray:`#708090`,slategrey:`#708090`,snow:`#FFFAFA`,springgreen:`#00FF7F`,steelblue:`#4682B4`,tan:`#D2B48C`,teal:`#008080`,thistle:`#D8BFD8`,tomato:`#FF6347`,turquoise:`#40E0D0`,violet:`#EE82EE`,wheat:`#F5DEB3`,white:`#FFF`,whitesmoke:`#F5F5F5`,yellow:`#FF0`,yellowgreen:`#9ACD32`},qt=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),Jt=(e,t,n,r)=>{e/=255,t/=255,n/=255;let i=Math.max(e,t,n),a=Math.min(e,t,n),o,s,c=(i+a)/2;if(i===a)o=s=0;else{let r=i-a;switch(s=c>.5?r/(2-i-a):r/(i+a),i){case e:o=(t-n)/r+(t<n?6:0);break;case t:o=(n-e)/r+2;break;case n:o=(e-t)/r+4}o/=6}return[Math.round(360*o),Math.round(100*s),Math.round(100*c),r]},Yt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`1`;return parseFloat(e)/(e.endsWith(`%`)?100:1)},Xt=e=>Math.min(Math.round(e),255).toString(16).toUpperCase().padStart(2,`0`),Zt=e=>{let[t,n,r,i=1]=e,a=Math.round(.3*t+.59*n+.11*r);return[a,a,a,i]};var Qt=class t{constructor(n){if(e(this,`isUnrecognised`,!1),n)if(n instanceof t)this.setSource([...n._source]);else if(Array.isArray(n)){let[e,t,r,i=1]=n;this.setSource([e,t,r,i])}else this.setSource(this._tryParsingColor(n));else this.setSource([0,0,0,1])}_tryParsingColor(e){return(e=e.toLowerCase())in Kt&&(e=Kt[e]),e===`transparent`?[255,255,255,0]:t.sourceFromHex(e)||t.sourceFromRgb(e)||t.sourceFromHsl(e)||(this.isUnrecognised=!0)&&[0,0,0,1]}getSource(){return this._source}setSource(e){this._source=e}toRgb(){let[e,t,n]=this.getSource();return`rgb(${e},${t},${n})`}toRgba(){return`rgba(${this.getSource().join(`,`)})`}toHsl(){let[e,t,n]=Jt(...this.getSource());return`hsl(${e},${t}%,${n}%)`}toHsla(){let[e,t,n,r]=Jt(...this.getSource());return`hsla(${e},${t}%,${n}%,${r})`}toHex(){return this.toHexa().slice(0,6)}toHexa(){let[e,t,n,r]=this.getSource();return`${Xt(e)}${Xt(t)}${Xt(n)}${Xt(Math.round(255*r))}`}getAlpha(){return this.getSource()[3]}setAlpha(e){return this._source[3]=e,this}toGrayscale(){return this.setSource(Zt(this.getSource())),this}toBlackWhite(e){let[t,,,n]=Zt(this.getSource()),r=t<(e||127)?0:255;return this.setSource([r,r,r,n]),this}overlayWith(e){e instanceof t||(e=new t(e));let n=this.getSource(),r=e.getSource(),[i,a,o]=n.map((e,t)=>Math.round(.5*e+.5*r[t]));return this.setSource([i,a,o,n[3]]),this}static fromRgb(e){return t.fromRgba(e)}static fromRgba(e){return new t(t.sourceFromRgb(e))}static sourceFromRgb(e){let t=Gt(e).match(/^rgba?\(\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d{0,3}(?:\.\d+)?%?)\s?)?\)$/i);if(t){let[e,n,r]=t.slice(1,4).map(e=>{let t=parseFloat(e);return e.endsWith(`%`)?Math.round(2.55*t):t});return[e,n,r,Yt(t[4])]}}static fromHsl(e){return t.fromHsla(e)}static fromHsla(e){return new t(t.sourceFromHsl(e))}static sourceFromHsl(e){let n=Gt(e).match(/^hsla?\(\s?([+-]?\d{0,3}(?:\.\d+)?(?:deg|turn|rad)?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d*(?:\.\d+)?%?)\s?)?\)$/i);if(!n)return;let r=(t.parseAngletoDegrees(n[1])%360+360)%360/360,i=parseFloat(n[2])/100,a=parseFloat(n[3])/100,o,s,c;if(i===0)o=s=c=a;else{let e=a<=.5?a*(i+1):a+i-a*i,t=2*a-e;o=qt(t,e,r+1/3),s=qt(t,e,r),c=qt(t,e,r-1/3)}return[Math.round(255*o),Math.round(255*s),Math.round(255*c),Yt(n[4])]}static fromHex(e){return new t(t.sourceFromHex(e))}static sourceFromHex(e){if(e.match(/^#?(([0-9a-f]){3,4}|([0-9a-f]{2}){3,4})$/i)){let t=e.slice(e.indexOf(`#`)+1),n;n=t.length<=4?t.split(``).map(e=>e+e):t.match(/.{2}/g);let[r,i,a,o=255]=n.map(e=>parseInt(e,16));return[r,i,a,o/255]}}static parseAngletoDegrees(e){let t=e.toLowerCase(),n=parseFloat(t);return t.includes(`rad`)?ke(n):t.includes(`turn`)?360*n:n}};const $t=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:16,r=/\D{0,2}$/.exec(e),i=parseFloat(e),a=n.DPI;switch(r?.[0]){case`mm`:return i*a/25.4;case`cm`:return i*a/2.54;case`in`:return i*a;case`pt`:return i*a/72;case`pc`:return i*a/72*12;case`em`:return i*t;default:return i}},en=e=>{let[t,n]=e.trim().split(` `),[r,i]=(a=t)&&a!==D?[a.slice(1,4),a.slice(5,8)]:a===D?[a,a]:[`Mid`,`Mid`];var a;return{meetOrSlice:n||`meet`,alignX:r,alignY:i}},tn=function(e,t){let n,r,i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];if(t)if(t.toLive)n=`url(#SVGID_${W(t.id)})`;else{let e=new Qt(t),i=e.getAlpha();n=e.toRgb(),i!==1&&(r=i.toString())}else n=`none`;return i?`${e}: ${n}; ${r?`${e}-opacity: ${r}; `:``}`:`${e}="${n}" ${r?`${e}-opacity="${r}" `:``}`};var nn=class{getSvgStyles(e){let t=this.fillRule?this.fillRule:`nonzero`,n=this.strokeWidth?this.strokeWidth:`0`,r=this.strokeDashArray?this.strokeDashArray.join(` `):D,i=this.strokeDashOffset?this.strokeDashOffset:`0`,a=this.strokeLineCap?this.strokeLineCap:`butt`,o=this.strokeLineJoin?this.strokeLineJoin:`miter`,s=this.strokeMiterLimit?this.strokeMiterLimit:`4`,c=this.opacity===void 0?`1`:this.opacity,l=this.visible?``:` visibility: hidden;`,u=e?``:this.getSvgFilter(),d=tn(N,this.fill);return[tn(P,this.stroke),`stroke-width: `,n,`; `,`stroke-dasharray: `,r,`; `,`stroke-linecap: `,a,`; `,`stroke-dashoffset: `,i,`; `,`stroke-linejoin: `,o,`; `,`stroke-miterlimit: `,s,`; `,d,`fill-rule: `,t,`; `,`opacity: `,c,`;`,u,l].map(e=>W(e)).join(``)}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${W(this.shadow.id)});`:``}getSvgCommons(){return[this.id?`id="${W(String(this.id))}" `:``,this.clipPath?`clip-path="url(#${this.clipPath.clipPathId})" `:``].join(``)}getSvgTransform(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:``;return`${`transform="${qe(e?this.calcTransformMatrix():this.calcOwnMatrix())}`}${t}" `}_toSVG(e){return[``]}toSVG(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})}toClipPathSVG(e){return` `+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})}_createBaseClipPathSVGMarkup(e){let{reviver:t,additionalTransform:n=``}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(``),i=e.indexOf(`COMMON_PARTS`);return e[i]=r,t?t(e.join(``)):e.join(``)}_createBaseSVGMarkup(e){let{noStyle:t,reviver:n,withShadow:r,additionalTransform:i}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=t?``:`style="${this.getSvgStyles()}" `,o=r?`style="${this.getSvgFilter()}" `:``,s=this.clipPath,c=this.strokeUniform?`vector-effect="non-scaling-stroke" `:``,l=s&&s.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,p=[],m=e.indexOf(`COMMON_PARTS`),h;return s&&(s.clipPathId=`CLIPPATH_${we()}`,h=`<clipPath id="${s.clipPathId}" >\n${s.toClipPathSVG(n)}</clipPath>\n`),l&&p.push(`<g `,o,this.getSvgCommons(),` >
`),p.push(`<g `,this.getSvgTransform(!1),l?``:o+this.getSvgCommons(),` >
`),e[m]=[a,c,t?``:this.addPaintOrder(),` `,i?`transform="${i}" `:``].join(``),U(d)&&p.push(d.toSVG(this)),U(u)&&p.push(u.toSVG(this)),f&&p.push(f.toSVG(this)),s&&p.push(h),p.push(e.join(``)),p.push(`</g>
`),l&&p.push(`</g>
`),n?n(p.join(``)):p.join(``)}addPaintOrder(){return this.paintFirst===N?``:` paint-order="${W(this.paintFirst)}" `}};function rn(e){return RegExp(`^(`+e.join(`|`)+`)\\b`,`i`)}const an=`textDecorationThickness`,on=[`fontSize`,`fontWeight`,`fontFamily`,`fontStyle`],sn=[`underline`,`overline`,`linethrough`],cn=[...on,`lineHeight`,`text`,`charSpacing`,`textAlign`,`styles`,`path`,`pathStartOffset`,`pathSide`,`pathAlign`],ln=[...cn,...sn,`textBackgroundColor`,`direction`,an],un=[...on,...sn,P,`strokeWidth`,N,`deltaY`,`textBackgroundColor`,an],dn={_reNewline:O,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,fontSize:40,fontWeight:ue,fontFamily:`Times New Roman`,underline:!1,overline:!1,linethrough:!1,textAlign:w,fontStyle:ue,lineHeight:1.16,textBackgroundColor:``,stroke:null,shadow:null,path:void 0,pathStartOffset:0,pathSide:w,pathAlign:`baseline`,charSpacing:0,deltaY:0,direction:`ltr`,CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.28167,overline:-.81333},_fontSizeMult:1.13,[an]:66.667},fn=`justify`,pn=`justify-left`,mn=`justify-right`,hn=`justify-center`,gn=String.raw`[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?`,_n=String.raw`(?:\s*,?\s+|\s*,\s*)`,vn=RegExp(`(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(`+gn+`(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|`+gn+`))?\\s+(.*)`),yn={cx:w,x:w,r:`radius`,cy:`top`,y:`top`,display:`visible`,visibility:`visible`,transform:`transformMatrix`,"fill-opacity":`fillOpacity`,"fill-rule":`fillRule`,"font-family":`fontFamily`,"font-size":`fontSize`,"font-style":`fontStyle`,"font-weight":`fontWeight`,"letter-spacing":`charSpacing`,"paint-order":`paintFirst`,"stroke-dasharray":`strokeDashArray`,"stroke-dashoffset":`strokeDashOffset`,"stroke-linecap":`strokeLineCap`,"stroke-linejoin":`strokeLineJoin`,"stroke-miterlimit":`strokeMiterLimit`,"stroke-opacity":`strokeOpacity`,"stroke-width":`strokeWidth`,"text-decoration":`textDecoration`,"text-anchor":`textAnchor`,opacity:`opacity`,"clip-path":`clipPath`,"clip-rule":`clipRule`,"vector-effect":`strokeUniform`,"image-rendering":`imageSmoothing`,"text-decoration-thickness":an},bn=`font-size`,xn=`clip-path`;rn([`path`,`circle`,`polygon`,`polyline`,`ellipse`,`rect`,`line`,`image`,`text`]),rn([`symbol`,`image`,`marker`,`pattern`,`view`,`svg`]);const Sn=rn([`symbol`,`g`,`a`,`svg`,`clipPath`,`defs`]);new RegExp(String.raw`^\s*(${gn})${_n}(${gn})${_n}(${gn})${_n}(${gn})\s*$`);const Cn=`(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?`,wn=RegExp(`(?:\\s|^)`+Cn+Cn+`(`+gn+`?(?:px)?)?(?:\\s?|$)(?:$|\\s)`);var Tn=class e{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=typeof t==`string`?e.parseShadow(t):t;Object.assign(this,e.ownDefaults,n),this.id=we()}static parseShadow(e){let t=e.trim(),[,n=0,r=0,i=0]=(wn.exec(t)||[]).map(e=>parseFloat(e)||0);return{color:(t.replace(wn,``)||`rgb(0,0,0)`).trim(),offsetX:n,offsetY:r,blur:i}}toString(){return[this.offsetX,this.offsetY,this.blur,this.color].join(`px `)}toSVG(e){let t=Ot(new I(this.offsetX,this.offsetY),R(-e.angle)),r=n.NUM_FRACTION_DIGITS,i=new Qt(this.color),a=40,o=40;return e.width&&e.height&&(a=100*H((Math.abs(t.x)+this.blur)/e.width,r)+20,o=100*H((Math.abs(t.y)+this.blur)/e.height,r)+20),e.flipX&&(t.x*=-1),e.flipY&&(t.y*=-1),`<filter id="SVGID_${W(this.id)}" y="-${o}%" height="${100+2*o}%" x="-${a}%" width="${100+2*a}%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="${H(this.blur?this.blur/2:0,r)}"></feGaussianBlur>\n\t<feOffset dx="${H(t.x,r)}" dy="${H(t.y,r)}" result="oBlur" ></feOffset>\n\t<feFlood flood-color="${i.toRgb()}" flood-opacity="${i.getAlpha()}"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n`}toObject(){let t={color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling,type:this.constructor.type},n=e.ownDefaults;return this.includeDefaultValues?t:Ke(t,(e,t)=>e!==n[t])}static async fromObject(e){return new this(e)}};e(Tn,`ownDefaults`,{color:`rgb(0,0,0)`,blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1}),e(Tn,`type`,`shadow`),F.setClass(Tn,`shadow`);const En=(e,t,n)=>Math.max(e,Math.min(t,n)),Dn=[`top`,w,j,M,`flipX`,`flipY`,`originX`,`originY`,`angle`,`opacity`,`globalCompositeOperation`,`shadow`,`visible`,se,ce],On=[N,P,`strokeWidth`,`strokeDashArray`,`width`,`height`,`paintFirst`,`strokeUniform`,`strokeLineCap`,`strokeDashOffset`,`strokeLineJoin`,`strokeMiterLimit`,`backgroundColor`,`clipPath`],kn={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:C,originY:C,strokeWidth:1,strokeUniform:!1,padding:0,opacity:1,paintFirst:N,fill:`rgb(0,0,0)`,fillRule:`nonzero`,stroke:null,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:`butt`,strokeLineJoin:`miter`,strokeMiterLimit:4,globalCompositeOperation:`source-over`,backgroundColor:``,shadow:null,visible:!0,includeDefaultValues:!0,excludeFromExport:!1,objectCaching:!0,clipPath:void 0,inverted:!1,absolutePositioned:!1,centeredRotation:!0,centeredScaling:!1,dirty:!0},An=(e,t,n,r)=>(e<Math.abs(t)?(e=t