@qr-platform/qr-code.js 0.8.23 → 0.8.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- const e={width:300,height:300,margin:0};class t{constructor(){this.buffer=[],this.length=0}getBuffer(){return this.buffer}getLengthInBits(){return this.length}toString(){let e="";for(let t=0;t<this.getLengthInBits();t+=1)e+=this.getBit(t)?"1":"0";return e}getBit(e){return 1==(this.buffer[~~(e/8)]>>>7-e%8&1)}put(e,t){for(let i=0;i<t;i+=1)this.putBit(1==(e>>>t-i-1&1))}putBit(e){this.length==8*this.buffer.length&&this.buffer.push(0),e&&(this.buffer[~~(this.length/8)]|=128>>>this.length%8),this.length+=1}}var i,n,r;!function(e){e[e.L=1]="L",e[e.M=0]="M",e[e.Q=3]="Q",e[e.H=2]="H"}(i||(i={}));class s{constructor(){throw new Error("error")}static glog(e){if(e<1)throw new Error("log("+e+")");return s.LOG_TABLE[e]}static gexp(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return s.EXP_TABLE[e]}}s.initialize=(()=>{s.EXP_TABLE=[],s.LOG_TABLE=[];for(let e=0;e<256;e+=1)s.EXP_TABLE.push(e<8?1<<e:s.EXP_TABLE[e-4]^s.EXP_TABLE[e-5]^s.EXP_TABLE[e-6]^s.EXP_TABLE[e-8]),s.LOG_TABLE.push(0);for(let e=0;e<255;e+=1)s.LOG_TABLE[s.EXP_TABLE[e]]=e})();class o{constructor(e,t=0){let i=0;for(;i<e.length&&0==e[i];)i+=1;this.num=[];const n=e.length-i;for(let t=0;t<n;t+=1)this.num.push(e[i+t]);for(let e=0;e<t;e+=1)this.num.push(0)}getAt(e){return this.num[e]}getLength(){return this.num.length}toString(){let e="";for(let t=0;t<this.getLength();t+=1)t>0&&(e+=","),e+=this.getAt(t);return e.toString()}toLogString(){let e="";for(let t=0;t<this.getLength();t+=1)t>0&&(e+=","),e+=s.glog(this.getAt(t));return e.toString()}multiply(e){const t=[],i=this.getLength()+e.getLength()-1;for(let e=0;e<i;e+=1)t.push(0);for(let i=0;i<this.getLength();i+=1)for(let n=0;n<e.getLength();n+=1)t[i+n]^=s.gexp(s.glog(this.getAt(i))+s.glog(e.getAt(n)));return new o(t)}mod(e){if(this.getLength()-e.getLength()<0)return this;const t=s.glog(this.getAt(0))-s.glog(e.getAt(0)),i=[];for(let e=0;e<this.getLength();e+=1)i.push(this.getAt(e));for(let n=0;n<e.getLength();n+=1)i[n]^=s.gexp(s.glog(e.getAt(n))+t);return new o(i).mod(e)}}!function(e){e[e.MODE_NUMBER=1]="MODE_NUMBER",e[e.MODE_ALPHA_NUM=2]="MODE_ALPHA_NUM",e[e.MODE_8BIT_BYTE=4]="MODE_8BIT_BYTE",e[e.MODE_KANJI=8]="MODE_KANJI"}(n||(n={}));class a{constructor(e,t){this.mode=e,this.data=t}getMode(){return this.mode}getData(){return this.data}getLengthInBits(e){if(1<=e&&e<10)switch(this.mode){case n.MODE_NUMBER:return 10;case n.MODE_ALPHA_NUM:return 9;case n.MODE_8BIT_BYTE:case n.MODE_KANJI:return 8;default:throw new Error("mode:"+this.mode)}else if(e<27)switch(this.mode){case n.MODE_NUMBER:return 12;case n.MODE_ALPHA_NUM:return 11;case n.MODE_8BIT_BYTE:return 16;case n.MODE_KANJI:return 10;default:throw new Error("mode:"+this.mode)}else{if(!(e<41))throw new Error("typeNumber:"+e);switch(this.mode){case n.MODE_NUMBER:return 14;case n.MODE_ALPHA_NUM:return 13;case n.MODE_8BIT_BYTE:return 16;case n.MODE_KANJI:return 12;default:throw new Error("mode:"+this.mode)}}}}class l extends a{constructor(e,t){super(n.MODE_8BIT_BYTE,e),this.stringToBytes=t}write(e){this.stringToBytes(this.getData()).forEach((t=>e.put(t,8)))}getLength(){return this.stringToBytes(this.getData()).length}}class h extends a{constructor(e){super(n.MODE_ALPHA_NUM,e)}write(e){const t=this.getData();let i=0;for(;i+1<t.length;)e.put(45*h.getCode(t.charAt(i))+h.getCode(t.charAt(i+1)),11),i+=2;i<t.length&&e.put(h.getCode(t.charAt(i)),6)}getLength(){return this.getData().length}static getCode(e){if("0"<=e&&e<="9")return e.charCodeAt(0)-"0".charCodeAt(0);if("A"<=e&&e<="Z")return e.charCodeAt(0)-"A".charCodeAt(0)+10;switch(e){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw new Error("illegal char :"+e)}}}class c extends a{constructor(e,t){super(n.MODE_KANJI,e),this.stringToBytes=t}write(e){const t=this.stringToBytes(this.getData());let i=0;for(;i+1<t.length;){let n=(255&t[i])<<8|255&t[i+1];if(33088<=n&&n<=40956)n-=33088;else{if(!(57408<=n&&n<=60351))throw new Error("illegal char at "+(i+1)+"/"+n);n-=49472}n=192*(n>>>8&255)+(255&n),e.put(n,13),i+=2}if(i<t.length)throw new Error("illegal char at "+(i+1))}getLength(){return this.stringToBytes(this.getData()).length/2}}class d extends a{constructor(e){super(n.MODE_NUMBER,e)}write(e){const t=this.getData();let i=0;for(;i+2<t.length;)e.put(d.strToNum(t.substring(i,i+3)),10),i+=3;i<t.length&&(t.length-i==1?e.put(d.strToNum(t.substring(i,i+1)),4):t.length-i==2&&e.put(d.strToNum(t.substring(i,i+2)),7))}getLength(){return this.getData().length}static strToNum(e){let t=0;for(let i=0;i<e.length;i+=1)t=10*t+d.chatToNum(e.charAt(i));return t}static chatToNum(e){if("0"<=e&&e<="9")return e.charCodeAt(0)-"0".charCodeAt(0);throw new Error("illegal char :"+e)}}!function(e){e[e.PATTERN000=0]="PATTERN000",e[e.PATTERN001=1]="PATTERN001",e[e.PATTERN010=2]="PATTERN010",e[e.PATTERN011=3]="PATTERN011",e[e.PATTERN100=4]="PATTERN100",e[e.PATTERN101=5]="PATTERN101",e[e.PATTERN110=6]="PATTERN110",e[e.PATTERN111=7]="PATTERN111"}(r||(r={}));class u{constructor(){throw new Error("error")}static getPatternPosition(e){return u.PATTERN_POSITION_TABLE[e-1]}static getMaxLength(e,t,r){const s=e-1;let o=0,a=0;switch(r){case i.L:o=0;break;case i.M:o=1;break;case i.Q:o=2;break;case i.H:o=3;break;default:throw new Error("e:"+r)}switch(t){case n.MODE_NUMBER:a=0;break;case n.MODE_ALPHA_NUM:a=1;break;case n.MODE_8BIT_BYTE:a=2;break;case n.MODE_KANJI:a=3;break;default:throw new Error("m:"+t)}return u.MAX_LENGTH[s][o][a]}static getErrorCorrectPolynomial(e){let t=new o([1]);for(let i=0;i<e;i+=1)t=t.multiply(new o([1,s.gexp(i)]));return t}static getMaskFunc(e){switch(e){case r.PATTERN000:return(e,t)=>(e+t)%2==0;case r.PATTERN001:return(e,t)=>e%2==0;case r.PATTERN010:return(e,t)=>t%3==0;case r.PATTERN011:return(e,t)=>(e+t)%3==0;case r.PATTERN100:return(e,t)=>(~~(e/2)+~~(t/3))%2==0;case r.PATTERN101:return(e,t)=>e*t%2+e*t%3==0;case r.PATTERN110:return(e,t)=>(e*t%2+e*t%3)%2==0;case r.PATTERN111:return(e,t)=>(e*t%3+(e+t)%2)%2==0;default:throw new Error("mask:"+e)}}static getLostPoint(e){const t=e.getModuleCount();let i=0;for(let n=0;n<t;n+=1)for(let r=0;r<t;r+=1){let s=0;const o=e.isDark(n,r);for(let i=-1;i<=1;i+=1)if(!(n+i<0||t<=n+i))for(let a=-1;a<=1;a+=1)r+a<0||t<=r+a||0==i&&0==a||o==e.isDark(n+i,r+a)&&(s+=1);s>5&&(i+=3+s-5)}for(let n=0;n<t-1;n+=1)for(let r=0;r<t-1;r+=1){let t=0;e.isDark(n,r)&&(t+=1),e.isDark(n+1,r)&&(t+=1),e.isDark(n,r+1)&&(t+=1),e.isDark(n+1,r+1)&&(t+=1),0!=t&&4!=t||(i+=3)}for(let n=0;n<t;n+=1)for(let r=0;r<t-6;r+=1)e.isDark(n,r)&&!e.isDark(n,r+1)&&e.isDark(n,r+2)&&e.isDark(n,r+3)&&e.isDark(n,r+4)&&!e.isDark(n,r+5)&&e.isDark(n,r+6)&&(i+=40);for(let n=0;n<t;n+=1)for(let r=0;r<t-6;r+=1)e.isDark(r,n)&&!e.isDark(r+1,n)&&e.isDark(r+2,n)&&e.isDark(r+3,n)&&e.isDark(r+4,n)&&!e.isDark(r+5,n)&&e.isDark(r+6,n)&&(i+=40);let n=0;for(let i=0;i<t;i+=1)for(let r=0;r<t;r+=1)e.isDark(r,i)&&(n+=1);return i+=10*(Math.abs(100*n/t/t-50)/5),i}static getBCHTypeInfo(e){let t=e<<10;for(;u.getBCHDigit(t)-u.getBCHDigit(u.G15)>=0;)t^=u.G15<<u.getBCHDigit(t)-u.getBCHDigit(u.G15);return(e<<10|t)^u.G15_MASK}static getBCHTypeNumber(e){let t=e<<12;for(;u.getBCHDigit(t)-u.getBCHDigit(u.G18)>=0;)t^=u.G18<<u.getBCHDigit(t)-u.getBCHDigit(u.G18);return e<<12|t}static getBCHDigit(e){let t=0;for(;0!=e;)t+=1,e>>>=1;return t}}u.PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],u.MAX_LENGTH=[[[41,25,17,10],[34,20,14,8],[27,16,11,7],[17,10,7,4]],[[77,47,32,20],[63,38,26,16],[48,29,20,12],[34,20,14,8]],[[127,77,53,32],[101,61,42,26],[77,47,32,20],[58,35,24,15]],[[187,114,78,48],[149,90,62,38],[111,67,46,28],[82,50,34,21]],[[255,154,106,65],[202,122,84,52],[144,87,60,37],[106,64,44,27]],[[322,195,134,82],[255,154,106,65],[178,108,74,45],[139,84,58,36]],[[370,224,154,95],[293,178,122,75],[207,125,86,53],[154,93,64,39]],[[461,279,192,118],[365,221,152,93],[259,157,108,66],[202,122,84,52]],[[552,335,230,141],[432,262,180,111],[312,189,130,80],[235,143,98,60]],[[652,395,271,167],[513,311,213,131],[364,221,151,93],[288,174,119,74]]],u.G15=1335,u.G18=7973,u.G15_MASK=21522;class p{constructor(e,t){this.totalCount=e,this.dataCount=t}getDataCount(){return this.dataCount}getTotalCount(){return this.totalCount}static getRSBlocks(e,t){const i=p.getRsBlockTable(e,t),n=i.length/3,r=[];for(let e=0;e<n;e+=1){const t=i[3*e+0],n=i[3*e+1],s=i[3*e+2];for(let e=0;e<t;e+=1)r.push(new p(n,s))}return r}static getRsBlockTable(e,t){switch(t){case i.L:return p.RS_BLOCK_TABLE[4*(e-1)+0];case i.M:return p.RS_BLOCK_TABLE[4*(e-1)+1];case i.Q:return p.RS_BLOCK_TABLE[4*(e-1)+2];case i.H:return p.RS_BLOCK_TABLE[4*(e-1)+3]}throw new Error("tn:"+e+"/ecl:"+t)}}p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];const m=Array(41).fill(0).map(((e,t)=>t));var g,f;!function(e){e.L="L",e.M="M",e.Q="Q",e.H="H"}(g||(g={})),function(e){e.numeric="numeric",e.alphanumeric="alphanumeric",e.byte="byte",e.kanji="kanji",e.unicode="unicode"}(f||(f={}));class b{constructor(e=0,t=g.L){this.modules=[],this.moduleCount=0,this.typeNumber=e,this.errorCorrectLevel=i[t],this.qrDataList=[]}getTypeNumber(){return this.typeNumber}setTypeNumber(e){this.typeNumber=e}getErrorCorrectLevel(){return this.errorCorrectLevel}setErrorCorrectLevel(e){this.errorCorrectLevel=e}clearData(){this.qrDataList=[]}addData(e,t=f.byte){if(e instanceof a)this.qrDataList.push(e);else{if("string"!=typeof e)throw new Error(typeof e);switch(t){case f.numeric:this.qrDataList.push(new d(e));break;case f.alphanumeric:this.qrDataList.push(new h(e));break;case f.byte:this.qrDataList.push(new l(e,b.stringToBytesFuncs.default));break;case f.unicode:this.qrDataList.push(new l(e,b.stringToBytesFuncs.UTF8));break;case f.kanji:this.qrDataList.push(new c(e,b.stringToBytesFuncs.SJIS));break;default:throw new Error("mode:"+t)}}}isDark(e,t){return!(!this.modules[e]||null==this.modules[e][t])&&this.modules[e][t]}getModuleCount(){return this.moduleCount}make(){if(this.typeNumber<1){let e=1;for(;e<40;e++){const i=p.getRSBlocks(e,this.errorCorrectLevel),n=new t;this.qrDataList.forEach((t=>{n.put(t.getMode(),4),n.put(t.getLength(),t.getLengthInBits(e)),t.write(n)}));const r=i.reduce(((e,t)=>e+t.getDataCount()),0);if(n.getLengthInBits()<=8*r)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())}getBestMaskPattern(){let e=0,t=0;for(let i=0;i<8;i+=1){this.makeImpl(!0,i);const n=u.getLostPoint(this);(0==i||e>n)&&(e=n,t=i)}return t}makeImpl(e,t){this.moduleCount=4*this.typeNumber+17,this.modules=[];for(let e=0;e<this.moduleCount;e+=1){this.modules.push([]);for(let t=0;t<this.moduleCount;t+=1)this.modules[e].push(null)}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e);const i=b.createData(this.typeNumber,this.errorCorrectLevel,this.qrDataList);this.mapData(i,t)}mapData(e,t){let i=-1,n=this.moduleCount-1,r=7,s=0;const o=u.getMaskFunc(t);for(let t=this.moduleCount-1;t>0;t-=2)for(6==t&&(t-=1);;){for(let i=0;i<2;i+=1)if(null==this.modules[n][t-i]){let a=!1;s<e.length&&(a=1==(e[s]>>>r&1));o(n,t-i)&&(a=!a),this.modules[n][t-i]=a,r-=1,-1==r&&(s+=1,r=7)}if(n+=i,n<0||this.moduleCount<=n){n-=i,i=-i;break}}}setupPositionAdjustPattern(){const e=u.getPatternPosition(this.typeNumber);e.forEach((t=>{e.forEach((e=>{if(null==this.modules[t][e])for(let i=-2;i<=2;i+=1)for(let n=-2;n<=2;n+=1)this.modules[t+i][e+n]=-2==i||2==i||-2==n||2==n||0==i&&0==n}))}))}setupPositionProbePattern(e,t){for(let i=-1;i<=7;i+=1)for(let n=-1;n<=7;n+=1)e+i<=-1||this.moduleCount<=e+i||t+n<=-1||this.moduleCount<=t+n||(this.modules[e+i][t+n]=0<=i&&i<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==i||6==i)||2<=i&&i<=4&&2<=n&&n<=4)}setupTimingPattern(){for(let e=8;e<this.moduleCount-8;e+=1)null==this.modules[e][6]&&(this.modules[e][6]=e%2==0);for(let e=8;e<this.moduleCount-8;e+=1)null==this.modules[6][e]&&(this.modules[6][e]=e%2==0)}setupTypeNumber(e){const t=u.getBCHTypeNumber(this.typeNumber);for(let i=0;i<18;i+=1)this.modules[~~(i/3)][i%3+this.moduleCount-8-3]=!e&&1==(t>>i&1);for(let i=0;i<18;i+=1)this.modules[i%3+this.moduleCount-8-3][~~(i/3)]=!e&&1==(t>>i&1)}setupTypeInfo(e,t){const i=this.errorCorrectLevel<<3|t,n=u.getBCHTypeInfo(i);for(let t=0;t<15;t+=1){const i=!e&&1==(n>>t&1);t<6?this.modules[t][8]=i:t<8?this.modules[t+1][8]=i:this.modules[this.moduleCount-15+t][8]=i}for(let t=0;t<15;t+=1){const i=!e&&1==(n>>t&1);t<8?this.modules[8][this.moduleCount-t-1]=i:t<9?this.modules[8][15-t-1+1]=i:this.modules[8][15-t-1]=i}this.modules[this.moduleCount-8][8]=!e}static createData(e,i,n){const r=p.getRSBlocks(e,i),s=new t;n.forEach((t=>{s.put(t.getMode(),4),s.put(t.getLength(),t.getLengthInBits(e)),t.write(s)}));const o=r.reduce(((e,t)=>e+t.getDataCount()),0);if(s.getLengthInBits()>8*o)throw new Error("code length overflow. ("+s.getLengthInBits()+">"+8*o+")");for(s.getLengthInBits()+4<=8*o&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(!1);for(;!(s.getLengthInBits()>=8*o||(s.put(b.PAD0,8),s.getLengthInBits()>=8*o));)s.put(b.PAD1,8);return b.createBytes(s,r)}static createBytes(e,t){let i=0,n=0,r=0;const s=new Array(t.length).map((e=>[])),a=new Array(t.length).map((e=>[]));function l(e){const t=[];for(let i=0;i<e;i+=1)t.push(0);return t}for(let h=0;h<t.length;h+=1){const c=t[h].getDataCount(),d=t[h].getTotalCount()-c;n=Math.max(n,c),r=Math.max(r,d),s[h]=l(c);for(let t=0;t<s[h].length;t+=1)s[h][t]=255&e.getBuffer()[t+i];i+=c;const p=u.getErrorCorrectPolynomial(d),m=new o(s[h],p.getLength()-1).mod(p);a[h]=l(p.getLength()-1);for(let e=0;e<a[h].length;e+=1){const t=e+m.getLength()-a[h].length;a[h][e]=t>=0?m.getAt(t):0}}const h=l(t.reduce(((e,t)=>e+t.getTotalCount()),0));let c=0;for(let e=0;e<n;e+=1)for(let i=0;i<t.length;i+=1)e<s[i].length&&(h[c]=s[i][e],c+=1);for(let e=0;e<r;e+=1)for(let i=0;i<t.length;i+=1)e<a[i].length&&(h[c]=a[i][e],c+=1);return h}}b.stringToBytesFuncs={default(e){const t=[];for(let i=0;i<e.length;i+=1){const n=e.charCodeAt(i);t.push(255&n)}return t}},b.PAD0=236,b.PAD1=17;const y=e=>!!e&&"object"==typeof e&&!Array.isArray(e);function w(e,t=!1){const i=e.split("").reverse().join("");return t?i.toLocaleUpperCase():i}function k(e,...t){if(!t.length)return e;const i=t.shift();return void 0!==i&&y(e)&&y(i)?(e={...e},Object.keys(i).forEach((t=>{const n=e[t],r=i[t];Array.isArray(n)&&Array.isArray(r)?e[t]=r:y(n)&&y(r)?e[t]=k({...n},r):e[t]=r})),k(e,...t)):e}const O=w("rq",!0)+w("-",!0)+w("talp",!0)+w("mrof",!0),A=w("a".repeat(6)+"#",!0),S="top",Z="bottom",I="left",W="right";const j=e=>"number"==typeof e?e:parseInt(e.replace("%",""),10),C=(e,t="0%")=>e?e.endsWith("%")?e:e+"%":t,v="text",J="image",E={disabled:!1,enableText:!0,type:"text",value:O},T=(e,t)=>!e?.decorations?.[t]?.disabled,Y=(e,t,i)=>!i||!e?.decorations?.[t]?.disabled,V=e=>{if("string"==typeof e)return e;if(!e)return"";const{fontFace:t="Helvetica",fontSize:i=20,fontColor:n="#000000",letterSpacing:r=0,fontWeight:s="normal"}=e;return`font-weight: ${s}; font-size: ${i}px; font-family: ${t}; fill: ${n}; letter-spacing: ${r}px;`};E.style={fontFace:"Helvetica",fontSize:20,fontColor:A,letterSpacing:2};const R={...E};const M=({document:e,position:t,rotate:i,flip:n,thickness:r,height:s,width:o,round:a,offset:l=0,curveAdjustment:h=0,curveRadius:c,outerBorderPadding:d=0,instanceId:u})=>{const p=Math.min(o,s),m=e.createElementNS("http://www.w3.org/2000/svg","path"),g=(e=>{if(e>=50)return 1;const t=[{R:0,P:0},{R:5,P:0},{R:10,P:.12},{R:15,P:.2},{R:20,P:.32},{R:25,P:.44},{R:30,P:.56},{R:35,P:.65},{R:40,P:.78},{R:45,P:.9},{R:50,P:1}],i=t.find((t=>e<=t.R))||t[0],n=t.find((t=>e>t.R))||t[t.length-1],{R:r,P:s}=i,{R:o,P:a}=n;return s+(e-r)/(o-r)*(a-s)})("string"==typeof a?j(a):a),f=void 0!==c?function(e){let t;return t="number"==typeof e?e:"string"==typeof e?(e.includes("%"),parseFloat(e)):0,t=Math.min(Math.max(t,0),50),.5+t/50*.5}(c):g,b=(p-r-2*d-10*h*2)/2*f,y=((e,t,i,n)=>{const r=i/2,s=n/2;let o="";return e&&(o+=`rotate(${e}, ${r}, ${s})`),t&&(o+=`translate(${r}, ${s}) scale(1, -1) translate(${-r}, ${-s})`),o.trim()})(i,n,o,s);m.setAttribute("id",`${t}-text-path-${u}`),m.setAttribute("transform",y);const{startX:w,startY:k,pathWidth:O}=((e,t,i,n,r={})=>{let s=t/2,o=t/2+n,a=e-t;return i&&(a-=2*i,s+=i,o+=i),s+=r.left||0,o+=r.top||0,{startX:s,startY:o,pathWidth:a}})(p,r,d,l);return m.setAttribute("d",((e,t,i,n)=>`M${e},${t+n} a${n},${n} 0 0 1 ${n},${-n} h${i-2*n} a${n},${n} 0 0 1 ${n},${n}`)(w,k,O,b)),m},P=({document:e,thickness:t,value:i,svg:n,position:r,height:s,width:o,round:a,style:l,offset:h=0,curveAdjustment:c=0,curveDisabled:d=!1,outerBorderPadding:u=0,curveRadius:p,instanceId:m,noBorderThickness:g,enabledBorders:f})=>{let b=0,y=!1;if(r===W?b=90:r===Z?y=!d:r===I&&(b=270),d){const a=e.createElementNS("http://www.w3.org/2000/svg","text");let c=o/2,d=(s-Math.min(o,s)+t)/2+2*u+h-(s-o>0?0:(o-s)/2);if(r===Z?d=s-2*u-t/2-h:r===S&&(d=2*u+t/2+h),r===S||r===Z){let e=0;!f[I]&&f[W]?e=-(t-g)/2:f[I]&&!f[W]&&(e=(t-g)/2),c+=e}else if(r===I||r===W){let e=0;!f[S]&&f[Z]?e=r===I?(t-g)/2:-(t-g)/2:f[S]&&!f[Z]&&(e=r===I?-(t-g)/2:(t-g)/2),c+=e}let p="";0!==b&&(p+=`rotate(${b}, ${o/2}, ${s/2})`),a.setAttribute("x",c.toString()),a.setAttribute("y",d.toString()),a.setAttribute("text-anchor","middle"),a.setAttribute("dominant-baseline","middle"),p&&a.setAttribute("transform",p.trim()),a.textContent=i;const m=V(l);a.setAttribute("style",m),n.appendChild(a)}else{let d=n.getElementsByTagName("defs")[0];d||(d=e.createElementNS("http://www.w3.org/2000/svg","defs"),n.appendChild(d));const w=M({document:e,position:r,rotate:b,flip:y,thickness:t,height:s,width:o,round:a,offset:h,curveAdjustment:c,enabledBorders:f,outerBorderPadding:u,curveRadius:p,noBorderThickness:g,instanceId:m}),{x:k,y:O}=function(e,t,i,n){let r=0,s=0;const o=(t-i)/2;return n.left&&n.right&&n.top&&n.bottom?(r=0,s=0):"top"===e||"bottom"===e?!n.left&&n.right?r=-o:(n.left&&!n.right||n.left&&n.right)&&(r=o):"left"!==e&&"right"!==e||(!n.top&&n.bottom?n.left&&n.right?(r="left"===e?2*+o:0,s=-o):r="left"===e?+o:-o:n.top&&!n.bottom?n.left&&n.right?(r="left"===e?0:2*o,s=-o):r=0:n.top&&n.bottom?s=n.left&&n.right?2*+o:+o:(r=n.left&&n.right?2*+o:+o,s=n.left&&n.right?2*-o:-o)),{x:r,y:s}}(r,t,g,f);if(0!==k||0!==O){const e=`${w.getAttribute("transform")||""} translate(${k}, ${O})`.trim();w.setAttribute("transform",e)}d.appendChild(w),n.appendChild((({document:e,value:t,position:i,style:n,instanceId:r})=>{const s=e.createElementNS("http://www.w3.org/2000/svg","text"),o=e.createElementNS("http://www.w3.org/2000/svg","textPath");o.setAttribute("href",`#${i}-text-path-${r}`),o.setAttribute("text-anchor","middle"),o.setAttribute("startOffset","50%"),o.textContent=t,o.setAttribute("alignment-baseline","middle");const a=V(n);return s.setAttribute("style",a),s.appendChild(o),s})({document:e,position:r,rotate:b,value:i,style:l,instanceId:m}))}},X=({document:e,thickness:t,value:i,svg:n,position:r,height:s,width:o,offset:a=0,style:l})=>{const h=e.createElementNS("http://www.w3.org/2000/svg","image"),c=Math.min(o,s);let d=(o-c+t)/2,u=(s-c+t)/2+a;r===S?d+=(c-t)/2:r===W?(d+=c-t,u+=(c-t)/2):r===Z?(d+=(c-t)/2,u+=c-t):r===I&&(u+=(c-t)/2),h.setAttribute("href",i||""),h.setAttribute("x",`${d}`),h.setAttribute("y",`${u}`),h.setAttribute("style",l?.toString()||""),n.appendChild(h)},D=e=>(t,i,n,r,s,o,a,l,h)=>{const{instanceId:c}=i,d=n,u=n,p=Math.min(d,u),m=C(e.radius),g=m&&j(m)>0?j(m)/100*p:0,f=C(e?.inner?.radius,g),b=Math.min(Math.max(e.inner?.scale??1,0),1.5),y=e.inner?.horizontalOffset??0,w=e.inner?.verticalOffset??0,k=e.thickness,O=e.color??"#000000",A=e.borderOuter?e.borderOuter.thickness/2:0,Z=e.borderInner?e.borderInner.thickness/2:0,E=i.document,V=s.left+s.right,M=s.top+s.bottom,D=r(k,g),B={top:T(e,"top"),right:T(e,"right"),bottom:Y(e,"bottom",h()),left:T(e,"left")},G=E.createElementNS("http://www.w3.org/2000/svg","rect"),q={x:o.left/2,y:o.top/2,width:p+V-o.left,height:p+M-o.top,fill:O,rx:m??g};Object.entries(q).forEach((([e,t])=>{G.setAttribute(e,t.toString())}));const L=E.createElementNS("http://www.w3.org/2000/svg","rect"),x=g>=200?"50%":g,K=d+V-(s.left+s.right+a.left+a.right+o.left+o.right),N=u+M-(s.top+s.bottom+a.top+a.bottom+o.top+o.bottom),U=K*b,F=N*b,z=(K-U)/2-y,H=(N-F)/2-w,Q={x:s.left+a.left+o.left+z,y:s.top+a.top+o.top+H,width:U,height:F,fill:D?.getAttribute("fill")||"#ffffff",rx:f??x};Object.entries(Q).forEach((([e,t])=>L.setAttribute(e,t.toString()))),D&&(({strokePath:e,backgroundMaskGroup:t,svgElement:i,color:n})=>{e.setAttribute("fill",t?.getAttribute("fill")||n),t.setAttribute("fill","none"),t.setAttribute("stroke-width","0"),i.insertBefore(t,i.firstChild)})({strokePath:L,backgroundMaskGroup:D,svgElement:t,color:O});let $=t.getElementsByTagName("defs")[0];$||($=E.createElementNS("http://www.w3.org/2000/svg","defs"),t.insertBefore($,t.firstChild));const _=E.createElementNS("http://www.w3.org/2000/svg","mask");_.setAttribute("id",`qr-mask-${c}`),_.setAttribute("maskUnits","userSpaceOnUse");const ee=E.createElementNS("http://www.w3.org/2000/svg","rect");if(ee.setAttribute("fill","white"),Object.entries(Q).forEach((([e,t])=>{"fill"!==e&&ee.setAttribute(e,t.toString())})),$.appendChild(_),_.appendChild(ee),t.insertBefore(L,t.firstChild?.nextSibling),t.insertBefore(G,t.firstChild),e.borderOuter&&e.borderOuter.thickness>0){const i=E.createElementNS("http://www.w3.org/2000/svg","rect"),n={x:o.left/2,y:o.top/2,width:d+V-o.left,height:u+M-o.top,fill:"none",rx:m??g,stroke:e.borderOuter.color,"stroke-width":e.borderOuter.thickness};Object.entries(n).forEach((([e,t])=>i.setAttribute(e,t.toString()))),t.insertBefore(i,t.firstChild?.nextSibling)}if(D){if(Array.from(t.getElementsByTagName("rect"))[0]){const e=t.firstChild;e?t.insertBefore(D,e):t.appendChild(D)}}if(e.borderInner&&e.borderInner.thickness>0){const i=E.createElementNS("http://www.w3.org/2000/svg","rect"),n={x:s.left+a.left+o.left+z,y:s.top+a.top+o.top+H,width:U,height:F,fill:"none",stroke:e.borderInner.color,"stroke-width":a.left,rx:f??x};Object.entries(n).forEach((([e,t])=>i.setAttribute(e,t.toString()))),t.appendChild(i)}let te={...R};if(!h()){const t=((e,t=[S,I,W])=>{for(const i of t){const t=e.decorations?.[i];if(t&&t.enableText&&!t.disabled&&t.type===v&&t.style)return t.style}})(e);t&&(te={...te,style:t})}const ie=h()?e:{...e,decorations:{...e.decorations,bottom:{...e.decorations?.bottom||{},...te,disabled:!1,enableText:!0}}};for(const e in ie.decorations){const i=ie.decorations[e];if(!i?.enableText||!B[e])continue;const n=i.type===J?X:i.type===v?P:void 0;n&&n({document:E,svg:t,position:e,thickness:ie.thickness,value:i.value,style:i.style,offset:i.offset,curveAdjustment:i.curveAdjustment,curveDisabled:i.curveDisabled,height:u+M,width:d+V,enabledBorders:B,outerBorderPadding:A,innerBorderPadding:Z,round:m,curveRadius:i.curveRadius,instanceId:c,noBorderThickness:l})}};var B,G,q,L,x,K;function N(e){const t={...e};if(!t.colorStops||!t.colorStops.length)throw new Error("Field 'colorStops' is required in gradient");return t.rotation?t.rotation=Number(t.rotation):t.rotation=0,t.colorStops=t.colorStops.map((e=>({...e,offset:Number(e.offset)}))),t}function U(e){const t={...e};return t.imageOptions={...t.imageOptions,imageSize:Math.min(1,Number(t.imageOptions?.imageSize))||1,margin:Number(t.imageOptions?.margin)||0},t.imageOptions.mode==K.overlay&&(t.imageOptions.margin=0),t.imageOptions?.fill?.gradient&&(t.imageOptions.fill.gradient=N(t.imageOptions.fill.gradient)),t.dotsOptions={...t.dotsOptions},t.dotsOptions.gradient&&(t.dotsOptions.gradient=N(t.dotsOptions.gradient)),t.dotsOptions.size=Math.round(Math.max(0,t.dotsOptions.size)||10),t.cornersSquareOptions&&(t.cornersSquareOptions={...t.cornersSquareOptions},t.cornersSquareOptions.gradient&&(t.cornersSquareOptions.gradient=N(t.cornersSquareOptions.gradient))),t.cornersDotOptions&&(t.cornersDotOptions={...t.cornersDotOptions},t.cornersDotOptions.gradient&&(t.cornersDotOptions.gradient=N(t.cornersDotOptions.gradient))),t.backgroundOptions&&(t.backgroundOptions={...t.backgroundOptions},t.backgroundOptions.gradient&&(t.backgroundOptions.gradient=N(t.backgroundOptions.gradient))),"undefined"==typeof document||t.document||(t.document=document),t}!function(e){e.radial="radial",e.linear="linear"}(B||(B={})),function(e){e.dot="dot",e.randomDot="random-dot",e.rounded="rounded",e.extraRounded="extra-rounded",e.verticalLine="vertical-line",e.horizontalLine="horizontal-line",e.classy="classy",e.classyRounded="classy-rounded",e.square="square",e.smallSquare="small-square",e.tinySquare="tiny-square",e.star="star",e.plus="plus",e.diamond="diamond"}(G||(G={})),function(e){e.dot="dot",e.square="square",e.heart="heart",e.rounded="rounded",e.classy="classy",e.outpoint="outpoint",e.inpoint="inpoint"}(q||(q={})),function(e){e.dot="dot",e.square="square",e.rounded="rounded",e.classy="classy",e.outpoint="outpoint",e.inpoint="inpoint"}(L||(L={})),function(e){e.square="square",e.circle="circle"}(x||(x={})),function(e){e.center="center",e.overlay="overlay",e.background="background"}(K||(K={}));const F={[g.L]:.07,[g.M]:.15,[g.Q]:.25,[g.H]:.3};class z{constructor(){}close(){}}class H extends z{constructor(e){super(),this.istream=e,this.buffer=0,this.buflen=0}readByte(){for(;this.buflen<8;){const e=this.istream.readByte();if(-1==e){if(0==this.buflen)return-1;throw new Error("unexpected end of file./"+this.buflen)}if(e=="=".charCodeAt(0))return this.buflen=0,-1;H.isWhitespace(e)||(this.buffer=this.buffer<<6|H.decode(e),this.buflen+=6)}const e=this.buffer>>>this.buflen-8&255;return this.buflen-=8,e}static isWhitespace(e){return e=="\v".charCodeAt(0)||e=="\t".charCodeAt(0)||e=="\r".charCodeAt(0)||e=="\n".charCodeAt(0)}static decode(e){if("A".charCodeAt(0)<=e&&e<="Z".charCodeAt(0))return e-"A".charCodeAt(0);if("a".charCodeAt(0)<=e&&e<="z".charCodeAt(0))return e-"a".charCodeAt(0)+26;if("0".charCodeAt(0)<=e&&e<="9".charCodeAt(0))return e-"0".charCodeAt(0)+52;if(e=="+".charCodeAt(0))return 62;if(e=="/".charCodeAt(0))return 63;throw new Error("c:"+e)}}class Q extends z{constructor(e){super(),this.bytes=e,this.pos=0}readByte(){if(this.pos<this.bytes.length){const e=this.bytes[this.pos];return this.pos+=1,e}return-1}}(function(e,t){const i=(()=>{const i=new H(new Q(function(e){const t=[];for(let i=0;i<e.length;i+=1)t.push(e.charCodeAt(i));return t}(e))),n=()=>{const e=i.readByte();if(-1==e)throw new Error("eof");return e};let r=0;const s={};for(;;){const e=i.readByte();if(-1==e)break;const t=n(),o=n()<<8|n();s[String.fromCharCode(e<<8|t)]=o,r+=1}if(r!=t)throw new Error(r+"!="+t);return s})(),n="?".charCodeAt(0)})("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MIWC4zCGguQwh4LlMIiC5jCJgucwioLoMIuC6TCMguowjYLrMI6C7DCPgu0wkILuMJGC7zCSgvAwk4LxMJuBSjCcgUswnYFUMJ6BVTChg0AwooNBMKODQjCkg0MwpYNEMKaDRTCng0YwqINHMKmDSDCqg0kwq4NKMKyDSzCtg0wwroNNMK+DTjCwg08wsYNQMLKDUTCzg1IwtINTMLWDVDC2g1Uwt4NWMLiDVzC5g1gwuoNZMLuDWjC8g1swvYNcML6DXTC/g14wwINfMMGDYDDCg2Eww4NiMMSDYzDFg2QwxoNlMMeDZjDIg2cwyYNoMMqDaTDLg2owzINrMM2DbDDOg20wz4NuMNCDbzDRg3Aw0oNxMNODcjDUg3Mw1YN0MNaDdTDXg3Yw2IN3MNmDeDDag3kw24N6MNyDezDdg3ww3oN9MN+DfjDgg4Aw4YOBMOKDgjDjg4Mw5IOEMOWDhTDmg4Yw54OHMOiDiDDpg4kw6oOKMOuDizDsg4ww7YONMO6DjjDvg48w8IOQMPGDkTDyg5Iw84OTMPSDlDD1g5Uw9oOWMPuBRTD8gVsw/YFSMP6BU04AiOpOAZKaTgOOtU4HlpxOCI/kTgmOT04Kj+NOC4m6Tg2Vc04Ol15OEJigThGJTk4Uio5OFZihThaQok4XmcBOGIt1ThmVuE4ej+VOIZe8TiaVwE4qmKJOLZKGTjGYo04yi/hONpikTjiK2045kk9OO47lTjyYpU4/mKZOQpinTkOUVE5Fi3ZOS5RWTk2T4U5OjMFOT5ZSTlXlaE5WmKhOV4/mTliYqU5ZibNOXYvjTl6M7k5fludOYpukTnGXkE5zk/tOfoqjToCLVE6CmKpOhZirToaXuU6Il1xOiZGIToqYrU6LjpZOjJPxTo6YsE6RiV1OkozdTpSM3E6ViOROmJhqTpmYaU6bjbFOnIifTp6YsU6fmLJOoJizTqGWU06imLROpIzwTqWI5U6mlpJOqIucTquLnU6si55OrZLgTq6Xuk6wmLVOs5i2TraYt066kGxOwI9ZTsGQbU7CmLxOxJi6TsaYu07Hi3dOyo2hTsuJ7k7NmLlOzpi4Ts+Vp07UjmVO1Y5kTtaRvE7XmL1O2JV0TtmQ5U7dgVdO3pi+Tt+YwE7jkeNO5JffTuWIyE7tmL9O7om8TvCLwk7ykodO9oyPTveYwU77lENPAYrpTwmYwk8KiMlPDYzeTw6K6k8PlZpPEJSwTxGLeE8aie9PHJjlTx2TYE8vlIxPMJjETzSUuk82l+BPOJBMTzqOZk88jpdPPYm+T0OSz09GkkFPR5jIT02Iyk9OkuFPT49aT1CNsk9Rl0NPU5HMT1WJvU9XmMdPWZddT1qYw09bmMVPXI3sT12Yxk9em0NPaZjOT2+Y0U9wmM9Pc4nAT3WVuU92mMlPe5jNT3yM8U9/jmdPg4qkT4aY0k+ImMpPi5fhT42OmE+PmMtPkZjQT5aY00+YmMxPm4ufT52Iy0+gi6BPoYm/T6ubRE+tlplPrpWOT6+M8k+1kE5Ptpe1T7+V1k/CjFdPw5GjT8SJ4k/Kj3JPzpjXT9CY3E/RmNpP1JjVT9eRrU/YmNhP2pjbT9uY2U/dldtP35jWT+GQTU/jlpNP5JjdT+WY3k/uj0NP75jrT/OUb0/1lVVP9pjmT/iV7k/6ibRP/pjqUAWY5FAGmO1QCZFxUAuMwlANlHtQD+DFUBGY7FASk3xQFJjhUBaM9FAZjPNQGpjfUB+O2FAhmOdQI5XtUCSSbFAlmONQJoyRUCiY4FApmOhQKpjiUCuXz1AsmOlQLZhgUDaL5FA5jJBQQ5juUEeY71BImPNQSYjMUE+VzlBQmPJQVZjxUFaY9VBamPRQXJLiUGWMklBsmPZQco7DUHSRpFB1kuNQdov0UHiY91B9i1VQgJj4UIWY+lCNllRQkYyGUJiOUFCZlPVQmpj5UKyNw1Ctl2JQspj8ULOZQlC0mPtQtY3CULePnVC+jFhQwplDUMWLzVDJmUBQyplBUM2TrVDPkZxQ0YuhUNWWbFDWmURQ2pe7UN6ZRVDjmUhQ5ZlGUOeRbVDtmUdQ7plJUPWZS1D5mUpQ+5XGUQCLVlEBmU1RAplOUQSJrVEJmUxREo7yURSZUVEVmVBRFplPURiY1FEamVJRH4+eUSGZU1Eql0RRMpbXUTeZVVE6mVRRO5lXUTyZVlE/mVhRQJlZUUGI8lFDjLNRRIxaUUWPW1FGkptRR4uiUUiQ5lFJjPVRS42OUUyZW1FNlsZRTpNlUVCOmVFSmVpRVJlcUVqTfVFcipVRYpldUWWT/FFokVNRaZlfUWqZYFFrlKpRbIz2UW2YWlFumWFRcYukUXWVulF2kbRRd4vvUXiTVFF8jJNRgJliUYKZY1GFk+BRhol+UYmZZlGKjftRjJllUY2NxFGPmWdRkOPsUZGZaFGSlmBRk5lpUZWZalGWmWtRl4/nUZmOylGgiqVRopluUaSZbFGllrtRppltUaiVeVGpmW9RqplwUauZcVGsk35RsJl1UbGZc1GymXRRs5lyUbSN4VG1mXZRtpboUbeX4lG9mXdRxJCmUcWZeFHGj3lRyZl5UcuSnFHMl71RzZOAUdaZw1HbmXpR3OqjUd2Lw1HgmXtR4ZZ9UeaPiFHnkfpR6Zl9UeqT4lHtmX5R8JmAUfGKTVH1mYFR9oulUfiTylH5iZpR+o9vUf2Un1H+mYJSAJOBUgOQblIEmYNSBpWqUgeQ2FIIiqBSCoqnUguZhFIOmYZSEYxZUhSZhVIXl/FSHY+JUiSUu1IllcpSJ5mHUimXmFIqmYhSLpmJUjCTnlIzmYpSNpCnUjeN/FI4jJRSOZmLUjqOaFI7jY9SQ5LkUkSZjVJHkaVSSo3tUkuZjlJMmY9STZFPUk+ZjFJUmZFSVpZVUluNhFJemZBSY4yVUmSN3FJllI1SaZmUUmqZklJvlZtScI/oUnGZm1JyioRSc5mVUnSZk1J1kW5SfZmXUn+ZllKDimNSh4yAUoiZnFKJl6tSjZmYUpGZnVKSmZpSlJmZUpuXzVKfjPdSoInBUqOX8lKpj5VSqpN3UquNhVKsmaBSrZmhUrGX41K0mEpStZmjUrmM+FK8maJSvopOUsGZpFLDlnVSxZK6UseXRVLJlddSzZmlUtLo01LVk65S15mmUtiKqFLZlrFS3Y+fUt6Zp1LfleVS4JmrUuKQqFLjmahS5IvOUuaZqVLniqlS8oxNUvOZrFL1ma1S+JmuUvmZr1L6jtlS/oz5Uv+W3FMBluZTApP1UwWV71MGmbBTCJmxUw2Zs1MPmbVTEJm0UxWZtlMWibtTF5ZrUxmN+lMambdTHZF4UyCPoFMhi6dTI5m4UyqU2VMvmblTMZm6UzOZu1M4mbxTOZVDUzqL5lM7iONTP5O9U0CZvVNBj1xTQ5DnU0WZv1NGmb5TR4+hU0iM31NJmcFTSpS8U02ZwlNRlNpTUpGyU1OR7FNUi6ZTV5PsU1iSUFNalI5TXJZtU16ZxFNgkOhTZoxUU2mZxVNumcZTb4lLU3CI81NxiutTc5GmU3SLcFN1l5FTd5nJU3iJtVN7mchTf4uoU4KZylOElu9TlpnLU5iX0FOajPpTn4y0U6CZzFOlmc5TppnNU6iQflOpiVhTrYl9U66Zz1OwmdBTs4y1U7aZ0VO7i45Two5RU8OZ0lPIlpRTyY2zU8qLeVPLl0ZTzJFvU82UvVPOjvtT1I9mU9aO5lPXjvNT2Y+WU9uUvlPfmdVT4YliU+KRcFPjjPtT5IzDU+WL5VPomdlT6ZJAU+qR/FPri6lT7I+iU+2Z2lPumdhT74nCU/CR5FPxjrZT8o5qU/OJRVP2ipBT942GU/iOaVP6mdtUAZncVAOLaFQEimVUCI2HVAmLZ1QKkt1UC4lEVAyTr1QNlrxUDo1AVA+XmVQQk2ZUEYz8VBuMTlQdmeVUH4vhVCCWaVQmlNtUKZnkVCuK3FQsmd9ULZngVC6Z4lQ2meNUOIt6VDmQgVQ7latUPJnhVD2Z3VQ+jOFUQJneVEKYQ1RGlfBUSJLmVEmM4FRKjZBUTpnmVFGT21RfmepUaI78VGqO9FRwme1UcZnrVHOWoVR1mehUdpnxVHeZ7FR7me9UfIzEVH2WvVSAmfBUhJnyVIaZ9FSLje5UjJhhVI6Z6VSPmedUkJnzVJKZ7lSimfZUpJpCVKWZ+FSomfxUq5pAVKyZ+VSvml1Uso3nVLOKUFS4mfdUvJpEVL2I9FS+mkNUwIijVMGVaVTCmkFUxJn6VMeZ9VTImftUyY3GVNiaRVThiPVU4ppOVOWaRlTmmkdU6I+jVOmWiVTtmkxU7ppLVPKTTlT6mk1U/ZpKVQSJU1UGjbRVB5BPVQ+aSFUQk4JVFJpJVRaIoFUumlNVL5dCVTGPpVUzmllVOJpYVTmaT1U+kcFVQJpQVUSR7VVFmlVVRo+kVUyaUlVPluJVU4xbVVaaVlVXmldVXJpUVV2aWlVjmlFVe5pgVXyaZVV+mmFVgJpcVYOaZlWEkVBVh5poVYmNQVWKml5Vi5KdVZiaYlWZmltVmoqrVZyK7FWdioVVnppjVZ+aX1WnjJZVqJppVamaZ1WqkXJVq4tpVayLqlWummRVsIvyVbaJY1XEmm1VxZprVceapVXUmnBV2ppqVdyablXfmmxV445rVeSab1X3mnJV+Zp3Vf2adVX+mnRWBpJRVgmJw1YUmnFWFppzVhePplYYiVJWG5p2VimJ3FYvmoJWMY/6VjKafVY0mntWNpp8VjiaflZCiVxWTJFYVk6aeFZQmnlWW4qaVmSagVZoiu1WapqEVmuagFZsmoNWdJWsVniT01Z6lLZWgJqGVoaahVaHimRWipqHVo+ailaUmolWoJqIVqKUWFalmotWrpqMVrSajla2mo1WvJqQVsCak1bBmpFWwpqPVsOaklbImpRWzpqVVtGallbTmpdW15qYVtiZZFbajvpW245sVt6J8VbgiPZW45JjVu6amVbwjaJW8ojNVvOQfVb5mppW+ozFVv2NkVb/mpxXAJqbVwOV3lcEmp1XCJqfVwmanlcLmqBXDZqhVw+Ml1cSiYBXE5qiVxaapFcYmqNXHJqmVx+TeVcmmqdXJ4izVyiN3VctjFxXMJJuVzeaqFc4mqlXO5qrV0CarFdCjeJXR4vPV0qWVldOmqpXT5qtV1CNv1dRjUJXYZqxV2SNo1dmklJXaZquV2qS2Fd/mrJXgpCCV4iasFeJmrNXi4xeV5OatFegmrVXoo1DV6OKX1ekmrdXqpq4V7CauVezmrZXwJqvV8OaulfGmrtXy5aEV86P6VfSmr1X05q+V9SavFfWmsBX3JRXV9+I5lfglXVX45rBV/SP+1f3jrdX+ZR8V/qK7lf8jelYAJZ4WAKTsFgFjJhYBpHNWAqav1gLmsJYFZHCWBmaw1gdmsRYIZrGWCSS51gqiqxYL+qfWDCJgVgxlfFYNI/qWDWTZ1g6jeRYPZrMWECVu1hBl9tYSonyWEuayFhRkVlYUprLWFSTg1hXk2hYWJOEWFmUt1hakstYXo3HWGKax1hpiZZYa5NVWHCayVhymsVYdZBvWHmazVh+j21Yg4urWIWazliTleZYl5GdWJySxFifmtBYqJZuWKua0ViumtZYs5WtWLia1Vi5ms9YuprSWLua1Fi+jaRYwZXHWMWa11jHkmRYyonzWMyP61jRmtlY05rYWNWNiFjXmtpY2JrcWNma21jcmt5Y3prTWN+a4Fjkmt9Y5ZrdWOuObVjskHBY7pFzWO+a4VjwkLpY8YjrWPKUhFj3ktlY+ZrjWPqa4lj7muRY/JrlWP2a5lkCmudZCZXPWQqa6FkPicRZEJrpWRWXW1kWik9ZGJnHWRmPZ1kakb1ZG5rqWRyW6VkilrJZJZrsWSeR5Vkpk1ZZKpG+WSuVdlksmu1ZLZruWS6Jm1kxjrhZMprvWTeIzlk4mvBZPprxWUSJgllHiu9ZSJPeWUmV8llOmvVZT5F0WVCa9FlRjF9ZVJZ6WVWa81lXk4VZWJr3WVqa9llgmvlZYpr4WWWJnFlnmvpZaI+nWWma/FlqkkRZbJr7WW6VsVlzj5dZdJN6WXibQFl9jURZgZtBWYKUQFmDlNxZhJbPWYqURFmNm0pZk4tXWZaXZFmZlq1Zm5uqWZ2bQlmjm0VZpZHDWaiWV1msk2lZsptGWbmWhVm7jchZvo+oWcabR1nJjm9Zy45uWdCIt1nRjMZZ05CpWdSIz1nZm0tZ2ptMWdybSVnliVdZ5oqtWeibSFnqlsNZ65VQWfaIpln7iPdZ/45wWgGI0FoDiKFaCZtRWhGbT1oYlrpaGptSWhybUFofm05aIJBQWiWbTVopldhaL4ziWjWbVlo2m1daPI+pWkCbU1pBmEtaRpRrWkmbVVpajaVaYptYWmaVd1pqm1labJtUWn+WuVqSlH1amptaWpuVUVq8m1tavZtfWr6bXFrBicVawpteWsmOuVrLm11azIyZWtCba1rWm2Ra15thWuGShFrjm2Ba5ptiWumbY1r6m2Va+5tmWwmK8FsLm2hbDJtnWxabaVsij+xbKptsWyyS2lswiWRbMptqWzabbVs+m25bQJtxW0Obb1tFm3BbUI5xW1GbcltUjUVbVZtzW1eOmltYkbZbWpt0W1ubdVtcjnlbXY1GW1+W0Ftji0dbZIzHW2WbdltmindbaZt3W2uRt1twm3hbcZuhW3ObeVt1m3pbeJt7W3qbfVuAm35bg5uAW4WR7luHiUZbiI7nW4mIwFuLkXZbjIquW42Os1uPjUdblZOGW5ePQFuYiq9bmZKIW5qS6FubiLZbnItYW52V81ufjsBbootxW6OQ6VukjrpbpZdHW6abgVuui3tbsI3JW7OKUVu0iYNbtY+qW7aJxlu4m4JbuZdlW7+PaFvCjuJbw5uDW8SK8VvFk9BbxpanW8ebhFvJm4VbzJV4W9Cbh1vSiqZb04v1W9SbhlvbirBb3ZBRW96bi1vfjkBb4YnHW+Kbilvkm4hb5ZuMW+abiVvnlEpb6J7LW+mQUlvrm41b7pe+W/Cbjlvzm5Bb9ZKeW/abj1v4kKFb+o6bW/6Rzlv/jvVcAZWVXAKQ6lwEjstcBZuRXAaPq1wHm5JcCJuTXAmI0VwKkbhcC5BxXA2blFwOk7FcD4+sXBGPrVwTm5VcFpDrXBqPrlwgm5ZcIpuXXCSW3lwom5hcLYvEXDGPQVw4m5lcOZuaXDqO2lw7kEtcPJPyXD2Qc1w+lPZcP5RBXECLx1xBm5tcRYuPXEabnFxIi/xcSpPNXEuJrlxNjnJcTpudXE+boFxQm59cUYv7XFObnlxVk1dcXpGuXGCTalxhjsZcZJF3XGWXmlxsm6JcbpujXG+T1FxxjlJcdpulXHmbplyMm6dckIryXJGbqFyUm6lcoYmqXKiRWlypiuJcq5urXKyWplyxkdBcs4p4XLabrVy3m69cuIrdXLubrFy8m65cvpuxXMWbsFzHm7Jc2ZuzXOCTu1zhi6xc6InjXOmbtFzqm7lc7Zu3XO+V9VzwlfRc9pOHXPqbtlz7j3Nc/Zu1XQeQkl0Lm7pdDo3oXRGbwF0Um8FdFZu7XRaKUl0Xm7xdGJvFXRmbxF0am8NdG5u/XR+bvl0im8JdKZX2XUubyV1Mm8ZdTpvIXVCXkl1Sm8ddXJu9XWmQk11sm8pdb421XXOby112m8xdgpvPXYSbzl2Hm81di5OIXYybuF2Qm9VdnZvRXaKb0F2sm9JdrpvTXbeb1l26l+RdvJvXXb2b1F3Jm9hdzIreXc2b2V3Sm9td05vaXdab3F3bm91d3ZDsXd6PQl3hj4Rd45GDXeWNSF3mjbZd541JXeiLkF3rm95d7o23XfGMyF3ym99d85akXfSUYl31m+Bd941KXfuKql39kkZd/ovQXgKOc14DlXpeBpS/Xgub4V4MivNeEZvkXhaSn14Zm+NeGpviXhub5V4dkuleJZCDXiuOdF4tkMheL5HRXjCLQV4zkqBeNpvmXjeb5144j+1ePZZYXkCb6l5Dm+leRJvoXkWVnV5Hm/FeTJZ5Xk6b615Um+1eVZaLXleb7F5fm+5eYZSmXmKb715jlbxeZJvwXnKKsV5zlb1edJROXnWb8l52m/NeeI1LXnmKsl56m/Ree4y2XnyXY159l0hefor0Xn+b9l6BkqFeg41MXoSPr16HlN1eio+wXo+PmF6VkupelpX3XpeTWF6ajU1enJV7XqCb916mk3hep43AXquMyV6tkutetYjBXraPjl63jU5euJdmXsGb+F7Cm/lew5RwXsib+l7Jl/VeyphMXs+b/F7Qm/te04pmXtacQF7anENe25xEXt2cQl7flV9e4I+xXuGcRl7inEVe45xBXuicR17pnEhe7JxJXvCcTF7xnEpe85xLXvScTV72iYRe95LsXvicTl76jJpe+4n0XvyUVV7+nE9e/5P5XwGV2V8DnFBfBJhNXwmcUV8Klb5fC5xUXwyYn18NmK9fD46uXxCT818RnFVfE4t8XxSSol8ViPhfFpxWXxeVpF8YjU9fG5JvXx+S7V8llu1fJoy3XyeMyl8pnFdfLZxYXy+cXl8xjuNfNZKjXzeLrV84nFlfPJVKXz6SZV9BnFpfSJxbX0qLrl9MnFxfTpxdX1GcX19Tk5ZfVpxgX1ecYV9ZnGJfXJxTX12cUl9hnGNfYoxgX2aVRl9pjcpfapVWX2uSpF9slWpfbZxkX3CPsl9xiWVfc5xlX3ecZl95lvBffJTeX3+caV+AiZ1fgZCqX4KcaF+DnGdfhIxhX4WR0l+HnG1fiJxrX4qcal+Ll6VfjIzjX5CPmV+RnGxfkpNrX5OPXV+Xk75fmJxwX5mcb1+enG5foJxxX6GM5F+onHJfqZWcX6qPel+tnHNfrpT3X7OTv1+0kqVfuZNPX7ycdF+9i0pfw5BTX8WVS1/MivVfzZRFX9acdV/XjnVf2JZZX9mWWl/ciZ5f3Zx6X+CSiV/knHdf64n1X/Ccq1/xnHlf9ZRPX/iceF/7nHZf/Y2aX/+cfGAOnINgD5yJYBCcgWASk3tgFZyGYBaVfGAZnIBgG5yFYByX5WAdjnZgIJHTYCGcfWAli31gJpyIYCeQq2AoiYVgKZyCYCqJ9mArnIdgL4uvYDGchGA6nIpgQZyMYEKclmBDnJRgRpyRYEqckGBLl/ZgTZySYFCLsGBSjVBgVY+aYFmcmWBanItgX5yPYGCcfmBiifhgY5yTYGSclWBlknBgaI2mYGmJtmBqnI1ga5yYYGycl2Bti7Fgb5GnYHCKhmB1jGJgd5yOYIGcmmCDnJ1ghJyfYImOu2CLnKVgjJLuYI2cm2CSnKNglIn3YJacoWCXnKJgmpyeYJucoGCfjOVgoJdJYKOKs2CmiXhgp5ykYKmUWWCqiKtgspTfYLOce2C0nKpgtZyuYLaW42C4nKdgvJOJYL2crGDFj+5gxpytYMeT1WDRmGZg05ypYNicr2DajZtg3JDJYN+I0mDgnKhg4ZymYOOReWDnnJxg6I5TYPCRxGDxnLtg85F6YPSctmD2nLNg95y0YPmO5GD6nLdg+5y6YQCctWEBj0RhA5y4YQacsmEIlvphCZb5YQ2cvGEOnL1hD4jTYRWcsWEai/BhG4ikYR+KtGEhnLlhJ5zBYSicwGEsnMVhNJzGYTycxGE9nMdhPpy/YT+cw2FCnMhhRJzJYUecvmFIjpxhSpzCYUuR1GFMjVFhTZywYU6QVGFTnNZhVZXnYViczGFZnM1hWpzOYV2c1WFfnNRhYpadYWOKtWFlnNJhZ4xkYWiKU2FrnM9hbpe2YW+c0WFwiNRhcZzTYXOcymF0nNBhdZzXYXaMY2F3nMthfpd8YYKXSmGHnNphipzeYY6RnmGQl/dhkZzfYZSc3GGWnNlhmZzYYZqc3WGkla5hp5OyYamMZWGrnOBhrJzbYa6c4WGyjJthtomvYbqc6WG+irZhw5znYcac6GHHjadhyJzmYcmc5GHKnONhy5zqYcyc4mHNnOxh0In5YeOc7mHmnO1h8pKmYfSc8WH2nO9h95zlYfiMnGH6nPBh/Jz0Yf2c82H+nPVh/5zyYgCc9mIInPdiCZz4YgqV6GIMnPpiDZz5Yg6PXmIQkKxiEYnkYhKJ+mIUnPtiFoi9YhqQymIbnPxiHebBYh6dQGIfjIFiIZ1BYiaQ7WIqnUJiLp1DYi+LWWIwnURiMp1FYjOdRmI0kdViOIzLYjuW32I/lltiQI+KYkGdR2JHkO5iSOe7YkmU4GJLjuhiTY3LYk6dSGJTkcViVZWlYliR72JbnUtiXp1JYmCdTGJjnUpiaJ1NYm6Vr2JxiLVidpV9YnmU4WJ8nU5ifp1RYn+Ps2KAi1pigp1PYoOdVmKEj7RiiZ1QYoqUY2KRl31ikp1SYpOdU2KUnVdilZOKYpadVGKXjVJimJDcYpudZWKclLJinpHwYquU4mKsnatisZX4YrWS72K5lpViu51aYryJn2K9kopiwp1jYsWSU2LGnV1ix51kYsidX2LJnWZiyp1iYsydYWLNlI9iz51bYtCJ+2LRnVli0ouRYtOR8WLUnVVi151YYtiNU2LZkNli24+1YtydYGLdlHFi4IuSYuGKZ2Lsiodi7ZBAYu6daGLvnW1i8Z1pYvOMnWL1nW5i9o5BYveNiWL+j0Vi/51cYwGOnWMCnWtjB453YwidbGMJiMJjDJ1nYxGSp2MZi5NjH4uyYyedamMoiKVjK43BYy+QVWM6kvBjPZTSYz6dcGM/kX1jSZGoY0yOSmNNnXFjT51zY1Cdb2NVld9jV5K7Y1yRe2NnlfljaI7MY2mdgGNrnX5jbpCYY3KMnmN2nXhjd4+3Y3qT5mN7lFBjgJ12Y4ORfGOIjvZjiZ17Y4yPtmOOnXVjj516Y5KUcmOWnXRjmIxAY5uKfGOfnXxjoJepY6GNzGOiklRjo515Y6WQ2mOnjVRjqJCEY6mJhmOqkVtjq513Y6yLZGOyjGZjtJLNY7WdfWO7kX5jvp2BY8Cdg2PDkbVjxJ2JY8adhGPJnYZjz5VgY9CS8WPSnYdj1pdLY9qXZ2Pbirdj4YisY+OdhWPpnYJj7or2Y/SJh2P2nYhj+pdoZAadjGQNkblkD52TZBOdjWQWnYpkF52RZBydcmQmnY5kKJ2SZCyUwGQtk4tkNJ2LZDadj2Q6jGdkPo3vZEKQ22ROnZdkWJNFZGedlGRploBkb52VZHadlmR4lsxkepCgZIOMgmSInZ1kko5UZJOdmmSVnZlkmpRRZJ6Ts2Skk1BkpZ2bZKmdnGSrlY9krZRkZK6OQmSwkO9kspZvZLmKaGS7naNkvJ2eZMGXaWTCnaVkxZ2hZMedomTNkYBk0p2gZNSdXmTYnaRk2p2fZOCdqWThnapk4pNGZOOdrGTmjkNk552nZOyLW2Tvna1k8Z2mZPKdsWT0nbBk9p2vZPqdsmT9nbRk/o/vZQCds2UFnbdlGJ21ZRydtmUdnZBlI525ZSSduGUqnZhlK526ZSydrmUvjnhlNJ27ZTWdvGU2nb5lN529ZTidv2U5ifxlO41VZT6V+mU/kK1lRYzMZUidwWVNncRlT5VxZVGLfmVVncNlVp3CZVeUc2VYncVlWYuzZV2dx2VencZlYoq4ZWOOVWVmk9ZlbIxoZXCQlGVynchldJCuZXWTR2V3lX5leJ3JZYKdymWDnctlh5W2ZYibfGWJkMRljJVrZY6N1mWQlONlkZTBZZeTbGWZl79lm53NZZyOzmWfnc5loYi0ZaSL0mWlkMtlp5WAZaudz2WsjmFlrZJmZa+OemWwkFZlt53QZbmV+2W8iZdlvY57ZcGd02XDndFlxJ3UZcWXt2XGndJly5D5Zcyd1WXPkbBl0p3WZdeK+GXZndhl253XZeCd2WXhndpl4or5ZeWT+mXmklVl54uMZeiOfGXpkYFl7I97Ze2IrmXxndtl+omgZfud32YCjVZmA53eZgaNqWYHj7hmCp3dZgyPuWYOlr5mD42oZhOI1WYUkMxmHJ3kZh+Qr2YgiWZmJY90ZieWhmYojfBmLY+6Zi+QpWY0neNmNZ3hZjad4mY8kotmP55FZkGd6GZCjp5mQ41XZkSd5mZJnedmS5BXZk+d5WZSjk5mXZ3qZl6d6WZfne5mYp3vZmSd62ZmikFmZ53sZmid7WZplNNmbpWBZm+MaWZwnfBmdJCwZnaPu2Z6knFmgYvFZoOd8WaEnfVmh4nJZoid8maJnfRmjp3zZpGPi2aWkmdml4jDZpid9madnfdmopKoZqaX72arjmJmrpXpZrSWXGa4nkFmuZ35Zryd/Ga+nftmwZ34ZsSeQGbHk9xmyZ36ZtaeQmbZj4xm2p5DZtyXambdlJhm4J5EZuaeRmbpnkdm8J5IZvKLyGbziWdm9I1YZvWeSWb3nkpm+I+RZvmRgmb8mdZm/ZFdZv6RXGb/kdZnAI3FZwOY8GcIjI5nCZdMZwuV/GcNlZ5nD55LZxSN8WcVkr1nFp5MZxeYTmcbll1nHZKpZx6eTWcfivpnJp5OZyeeT2colthnKpaiZyuWlmcslntnLY5EZy6eUWcxjulnNJZwZzaeU2c3nlZnOJ5VZzqK92c9i4BnP55SZ0GeVGdGnldnSZCZZ06Xm2dPiMdnUI3eZ1GRumdTjttnVo/xZ1meWmdck21nXp5YZ1+RqWdgnllnYY/wZ2KW22djnltnZJ5cZ2WXiGdqnmFnbY1ZZ2+UdGdwnl5ncZOMZ3Kd3GdzneBndYtuZ3eUZmd8nmBnfo+8Z3+UwmeFnmZnh5T4Z4meXWeLnmNnjJ5iZ5CQzWeVlo1nl5fRZ5qWh2ecicpnnY59Z6CYZ2ehnmVnopCVZ6aeZGepnl9nr4zNZ7Oea2e0nmlntonLZ7eeZ2e4nm1nuZ5zZ8GRxmfElb9nxp51Z8qVQWfOnnRnz5SQZ9CWXmfRirln05D1Z9SPX2fYktFn2pdNZ92ecGfenm9n4p5xZ+SebmfnnnZn6Z5sZ+yeamfunnJn755oZ/GSjGfzlvZn9I7EZ/WN8mf7jbhn/paPZ/+KYGgCksxoA5PIaASJaGgTkPBoFpCyaBeMSWgennhoIY1aaCKKnGgpnnpoKoqUaCuegWgynn1oNJDxaDiKamg5japoPIppaD2NzWhAnntoQYyFaEKMamhDk41oRp55aEiIxGhNnnxoTp5+aFCLy2hRjEtoU4q6aFSLamhZnoJoXI33aF2WkWhfjlZoY56DaGeVT2h0no9odomxaHeehGh+npVof56FaIGXwGiDnoxohZR+aI2elGiPnodok4iyaJSeiWiXjVtom56LaJ2eimifnoZooJ6RaKKPvWimmutop4zmaKiXnGitnohor5LyaLCKQmixjatos56AaLWekGi2ioFouZ6OaLqekmi8k45oxIr8aMaesGjJlsdoyp6XaMuK+2jNnp5o0pZfaNSen2jVnqFo156laNiemWjakklo35OPaOCeqWjhnpxo456maOeeoGjukFho756qaPKQsWj5nqho+oq7aQCYb2kBnpZpBJ6kaQWI1mkInphpC5a4aQyenWkNkEFpDpLFaQ+ek2kSnqNpGZCaaRqerWkbipFpHIyfaSGer2kinpppI56uaSWep2kmnptpKJ6raSqerGkwnr1pNJPMaTaeomk5nrlpPZ67aT+S1mlKl2tpU5WWaVSetmlVkchpWZ68aVqRXmlcnrNpXZ7AaV6ev2lgk+1pYZ6+aWKT6GlqnsJpa561aW2Lxmlunrhpb498aXOUgGl0nrppdYvJaXeesml4nrRpeZ6xaXyYT2l9inlpfp63aYGewWmCilRpio3laY6JfGmRntJplJhQaZWe1WmbkFlpnJ7UaaCe02mnntBprp7EabGe4WmynsNptJ7Wabuezmm+nslpv57GacGex2nDns9px+qgacqezGnLjVxpzJLGac2RhGnOnspp0J7FadOeyGnYl2xp2ZaKad2ezWnentdp557faeie2GnrnuVp7Z7jafKe3mn5nt1p+5LOaf2RhWn/nttqAp7ZagWe4GoKnuZqC5Tzagye7GoSnudqE57qahSe5GoXkpRqGZVXahue2moenuJqH4++aiGWzWoinvZqI57paimMoGoqiaFqK4p+ai6e0Wo1j79qNp7uajie9Wo5jvdqOoqSaj2STWpEnutqR57wakie9GpLi7RqWItralme8mpfi0BqYZPJamKe8WpmnvNqcp7tanie72p/ioBqgJJoaoSe+mqNnvhqjoznapCe92qXn0BqnJ53aqCe+Wqinvtqo578aqqfS2qsn0dqrp6NarOfRmq4n0Vqu59CasGe6GrCn0Rqw59DatGfSWrTmEVq2p9MatuL+Wren0hq359KauiUpWrqn01q+p9RavufTmsEl5NrBZ9Pawqe3GsSn1JrFp9Tax2JVGsfn1VrIIyHayGOn2sji9NrJ4miazKXfms3n1drOJ9WazmfWWs6i1xrPYvUaz6KvGtDn1xrR59ba0mfXWtMicxrTpJWa1CfXmtTir1rVJ9ga1mfX2tbn2FrX59ia2GfY2tijn5rY5Cza2SNn2tmlZBraZXga2qYY2tvjpVrc43Oa3SX8Gt4n2RreZ9la3uOgGt/n2ZrgJ9na4OfaWuEn2hrhpZ3a4mPfWuKjupri45ja42famuVn2xrlpBCa5ifa2uen21rpJ9ua6qfb2urn3Brr59xa7Gfc2uyn3Jrs590a7SJo2u1kmlrt591a7qORWu7imtrvJ92a7+TYWvAmsprxYtCa8afd2vLn3hrzZXqa86WiGvSk8Vr0595a9SU5GvYlPlr25bRa9+femvrn3xr7J97a++ffmvzn31sCJ+BbA+OgWwRlq9sE5+CbBSfg2wXi0NsG5+EbCOfhmwkn4VsNJCFbDeVWGw4iWlsPpTDbECS82xBj2BsQouBbE6UxGxQjqxsVZ+IbFeKvmxaiZhsXZPwbF6fh2xfjV1sYJJybGKfiWxon5Fsap+KbHCRv2xyi4Jsc5+SbHqMiGx9i0Rsfp+QbIGfjmyCn4tsg5eAbIiSvmyMk9dsjZ+MbJCflGySn5Nsk4xCbJaJq2yZjblsmp+NbJufj2yhlnZsopHybKuWl2yun5xssZ+dbLOJzWy4laZsuZb7bLqfn2y7jqFsvI/AbL2fmGy+n55sv4mIbMGLtWzEn5VsxZ+abMmQ8mzKlJFszJTlbNOfl2zVlkBs15+ZbNmfomzbn6Bs3Z+bbOGWQWzilGds44uDbOWTRGzoko1s6p+jbO+foWzwkdds8Z+WbPOJam0Ll21tDJ+ubRKfrW0XkPRtGZ+qbRuXjG0ek7RtH5+kbSWSw20piWttKo1ebSufp20yj0ZtM5+sbTWfq202n6ZtOJ+pbTuKiG09n6htPpRobUGXrG1Ej/JtRZDzbVmftG1an7JtXJVsbWOfr21kn7FtZolZbWmNX21qmFFtbIpcbW6Vgm10l4Ftd4pDbXiQWm15n7NthZ+4bYiPwW2Ml09tjp+1bZOfsG2Vn7ZtmZfcbZuTk22ck8Btr4pVbbKJdG21n7xtuJ+/bbyXwW3Al4RtxZ/GbcafwG3Hn71ty5fS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hWmToIVqlZOFbeVKhXflUIV+5VGFgOVEhYSUloWH5U6FiOVGhYrlSIWQ5VKFkeVHhZTlS4WXiZKFmZPjhZvlTIWc5U+FpOVFhaaRRYWo5UmFqY5GhaqQZIWrjE+FrJbyha6W94Wvj5KFueVWhbrlVIXBmG2FyeVThc2XlYXP5VWF0OVXhdXlWIXc5VuF3eVZheSToYXl5VqF6ZTLherlTYX3j5OF+eVchfrlYYX7kZSF/uVghgLlQYYG5WKGB5FohgrlXYYL5V+GE+VehhafUIYXn0GGGuVkhiLlY4Ytl5aGL+G6hjDlZYY/5WaGTeVnhk6M1YZQi3OGVOVphlWZfIZai5WGXJe4hl6L8YZf5WqGZ+VrhmuSjoZx5WyGeZP4hnuIuIaKieGGi+VxhozlcoaT5W2GlY5chqPlboaklGGGqeVvhqrlcIar5XqGr+V0hrDld4a25XOGxOV1hsbldobHjtaGyeV4hsuSYIbNjHWGzophhtTle4bZil6G2+WBht7lfIbf5YCG5JS4hunlfYbs5X6G7ZVnhu6U2Ibv5YKG+JH7hvnljIb75YiG/onphwDlhocClkmHA+WHhwblhIcI5YWHCeWKhwrljYcN5YuHEeWJhxLlg4cYkneHGuWUhxyWqIcl5ZKHKeWThzTljoc35ZCHO+WRhz/lj4dJkOSHS5hYh0zlmIdO5ZmHU+Wfh1WQSYdX5ZuHWeWeh1/llodg5ZWHY+Wgh2aJ2odo5ZyHauWhh27lnYd05ZqHdpKxh3jll4d/lIiHguWlh42XWoef5aSHouWjh6vlrIev5aaHs+Wuh7qXhoe75bGHveWoh8DlqYfE5a2HxuWwh8flr4fL5aeH0OWqh9Llu4fg5bSH7+Wyh/Lls4f25biH9+W5h/mKSYf7i2GH/uW3iAXloogN5baIDuW6iA/ltYgR5byIFeW+iBblvYgh5cCIIuW/iCPleYgn5cSIMeXBiDblwog55cOIO+XFiECMjIhC5ceIROXGiEaPT4hMjXOITZ+liFLlyIhTj3CIV4pYiFnlyYhbiXGIXY/ViF7lyohhjXSIYuXLiGOI34holVyIa+XMiHCQiohy5dOIdeXQiHeSj4h95dGIfuXOiH+L3IiB5c2IguXUiIiMVYiLkdyIjeXaiJLl1oiWkbOIl+XViJnl2Iie5c+IouXZiKTl24irlO2IruXX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ljKWaJY7kWqWP4iilkCRyZZC6JiWRJWNlkvom5ZM6JmWTY1+lk/ompZQjMCWW5XDllzonZZd6J+WXuiell/ooJZiiUCWY5B3lmSPnJZliteWZuihlmqUhpZs6KOWcIlBlnLoopZzksKWdZfLlnaTqZZ36JyWeJeklnqMr5Z9l3qWhYv3loaXspaIjEeWipHglovkQJaN6KSWjopLlo+Qj5aUinWWleimlpfop5aY6KWWmYyElpuN25acj+GWoIlClqOX15an6KmWqOeslqroqJaw6KyWseiqlrLoq5a06K2WtuiulreX6pa46K+WueiwlruQx5a8lLmWwJCdlsGK5ZbEl1mWxYnrlsaPV5bHjNmWyeizlsvospbMjpOWzei0ls7osZbRjkeW1ei4ltblq5bZmdSW25CXltzotpbil6OW45PvluiJSpbqkOGW6460lvCVtZbyiV+W9pfrlveXi5b56LmW+5NklwCO+ZcE6LqXBui7lweQa5cI6LyXCpfslw3ot5cO6L6XD+jAlxHov5cT6L2XFujBlxnowpcckZqXHonglyTow5cnlraXKujElzDoxZcymEmXOJ5Qlznoxpc96MeXPujIl0LozJdE6MmXRujKl0joy5dJ6M2XUpDCl1aW9ZdZkMOXXOjOl16U8Zdg6M+XYepyl2KWypdk6NCXZujRl2jo0pdpinaXa+jUl22QeJdx6NWXdIxDl3no1pd66NqXfOjYl4Ho2ZeEipOXhejXl4bo25eL6NyXjYjGl4/o3ZeQ6N6XmI/il5zo35egi2aXo+jil6bo4Zeo6OCXq+aRl62V2pez6OOXtOjkl8Po5ZfG6OaXyOjnl8vo6JfTitiX3Ojpl+3o6pfulEKX8ujsl/OJuZf16O+X9ujul/uJQ5f/i7+YAZXFmAKSuJgDjaCYBY2AmAaPh5gIkHuYDOjxmA/o8JgQl2GYEYrmmBKU0JgTk9qYF5CcmBiXzJgajHqYIej0mCTo85gslmqYLZOqmDSJb5g36PWYOOjymDuVcJg8l4qYPej2mEbo95hL6PmYTJHomE2KephOinuYT+j4mFSK55hVjLCYWIromFuTXphel96YZ4zamGvo+phv6PuYcOj8mHHpQJhz6UKYdOlBmKiVl5iq6UOYr+lEmLHpRZi26UaYw+lImMTpR5jG6UmY25TymNzjypjfkEiY4otRmOnpSpjr6UuY7ZmqmO6fWpjvlNGY8oj5mPSIuZj8jpSY/ZZPmP6P/JkD6UyZBZbdmQnpTZkKl3uZDIlhmRCOYJkS6U6ZE4nsmRTpT5kY6VCZHelSmR7pU5kg6VWZIelRmSTpVJkoitmZLOlWmS7pV5k96ViZPulZmULpWplF6VyZSelbmUvpXplM6WGZUOldmVHpX5lS6WCZVelimVeLwJmWjvGZl+ljmZjpZJmZjYGZpellmaiKXZmslG6Zrelmma7pZ5mzknmZtJPpmbzpaJnBlJ2ZxJHKmcWJd5nGi+yZyIvtmdCSk5nR6W2Z0ovumdWJ7ZnY6WyZ2+lqmd3pa5nf6WmZ4ul3me3pbpnu6W+Z8elwmfLpcZn46XOZ++lymf+PeJoB6XSaBel2mg6LUpoP6XWaEpGbmhOMsZoZ6XiaKJHLmivpeZowk6uaN+l6mj7pgJpA6X2aQul8mkPpfppF6XuaTemCmlXpgZpX6YSaWovBmlvpg5pf6YWaYumGmmTpiJpl6YeaaemJmmrpi5pr6YqaqI2cmq3pjJqw6Y2auIpbmrzpjprA6Y+axJCRms/pkJrR6ZGa0+mSmtTpk5rYjYKa3umUmt/plZri6Zaa4+mXmubpmJrqlK+a6+mamu2VRZru6Zua7+mZmvHpnZr06Zya9+memvvpn5sG6aCbGOmhmxrpopsf6aObIumkmyPppZsl6aabJ+mnmyjpqJsp6ambKumqmy7pq5sv6aybMZ9UmzLprZs74vabPItTm0GKQJtCjbCbQ+mvm0TprptFlqObTemxm07psptP6bCbUemzm1SWgptY6bSbWoubm2+YRJt06bWbg+m3m46IvJuR6bibkpWpm5PptpuW6bmbl+m6m5/pu5ug6bybqOm9m6qWjpurjkybrY34m66RTpu06b6buenBm8Dpv5vG6cKbyYzvm8rpwJvP6cOb0enEm9LpxZvU6cmb1o5Jm9uR4pvh6cqb4unHm+Ppxpvk6cib6Ix+m/Dpzpvx6c2b8unMm/WIsZwE6dicBunUnAjp1ZwJ6dGcCunXnAzp05wNioKcEJhrnBLp1pwT6dKcFOnQnBXpz5wb6dqcIendnCTp3Jwl6ducLZVonC7p2ZwviPGcMOnenDLp4Jw5io+cOunLnDuJVpw+6eKcRunhnEfp35xIkkycUpaQnFeX2Jxa6eOcYOnknGfp5Zx26eaceOnnnOWSuZzn6eic6ZS1nOvp7Zzs6emc8OnqnPOWUJz0lsKc9pPOnQPp7p0G6e+dB5O8nQjp7J0J6eudDomonRLp950V6fadG4mVnR/p9J0j6fOdJunxnSiKm50q6fCdK46wnSyJp507jYOdPun6nT/p+Z1B6fidROn1nUbp+51I6fydUOpEnVHqQ51Z6kWdXIlMnV3qQJ1e6kGdYI2UnWGWt51k6kKdbJZRnW/qSp1y6kadeupLnYfqSJ2J6kedj4x7nZrqTJ2k6k2dqepOnavqSZ2v6fKdsupPnbSS35246lOduupUnbvqUp3B6lGdwupXncTqUJ3G6lWdz+pWndPqWZ3Z6lid5upbne3qXJ3v6l2d8phonfjqWp35kemd+o3rnf3qXp4a6l+eG+pgnh7qYZ516mKeeIyynnnqY5596mSef46tnoHqZZ6I6maei+pnnozqaJ6R6muekuppnpOYW56V6mqel5ftnp3qbJ6fl9mepeptnqaUnp6p6m6equpwnq3qcZ646m+euY2NnrqWy567loOevJv1nr6fgJ6/lpuexImpnszqc57Ni2+ezup0ns/qdZ7Q6nae0o2VntTqd57Y4NKe2ZbZntuR4Z7c6nie3ep6nt7qeZ7g6nue5ep8nujqfZ7v6n6e9OqAnvbqgZ736oKe+eqDnvvqhJ786oWe/eqGnwfqh58I6oifDpNDnxOM258V6oqfIJFsnyHqi58s6oyfO5VAnz7qjZ9K6o6fS+JWn07m2J9P6OufUuqPn1TqkJ9f6pKfYOqTn2HqlJ9il+6fY+qRn2bqlZ9n6pafauqYn2zql59y6pqfduqbn3fqmZ+Nl7Sfleqcn5zqnZ+d4nOfoOqe/wGBSf8DgZT/BIGQ/wWBk/8GgZX/CIFp/wmBav8KgZb/C4F7/wyBQ/8OgUT/D4Fe/xCCT/8RglD/EoJR/xOCUv8UglP/FYJU/xaCVf8Xglb/GIJX/xmCWP8agUb/G4FH/xyBg/8dgYH/HoGE/x+BSP8ggZf/IYJg/yKCYf8jgmL/JIJj/yWCZP8mgmX/J4Jm/yiCZ/8pgmj/KoJp/yuCav8sgmv/LYJs/y6Cbf8vgm7/MIJv/zGCcP8ygnH/M4Jy/zSCc/81gnT/NoJ1/zeCdv84gnf/OYJ4/zqCef87gW3/PIFf/z2Bbv8+gU//P4FR/0CBTf9BgoH/QoKC/0OCg/9EgoT/RYKF/0aChv9Hgof/SIKI/0mCif9Kgor/S4KL/0yCjP9Ngo3/ToKO/0+Cj/9QgpD/UYKR/1KCkv9TgpP/VIKU/1WClf9Wgpb/V4KX/1iCmP9Zgpn/WoKa/1uBb/9cgWL/XYFw/2EAof9iAKL/YwCj/2QApP9lAKX/ZgCm/2cAp/9oAKj/aQCp/2oAqv9rAKv/bACs/20Arf9uAK7/bwCv/3AAsP9xALH/cgCy/3MAs/90ALT/dQC1/3YAtv93ALf/eAC4/3kAuf96ALr/ewC7/3wAvP99AL3/fgC+/38Av/+AAMD/gQDB/4IAwv+DAMP/hADE/4UAxf+GAMb/hwDH/4gAyP+JAMn/igDK/4sAy/+MAMz/jQDN/44Azv+PAM//kADQ/5EA0f+SANL/kwDT/5QA1P+VANX/lgDW/5cA1/+YANj/mQDZ/5oA2v+bANv/nADc/50A3f+eAN7/nwDf/+OBUP/lgY8=",7070);const $={shape:x.square,qrOptions:{typeNumber:m[0],errorCorrectionLevel:g.Q},cornersSquareOptions:{type:L.square},cornersDotOptions:{type:q.square},dotsOptions:{type:G.square}},_={shape:x.square,qrOptions:{typeNumber:m[0],mode:void 0,errorCorrectionLevel:g.Q},imageOptions:{mode:K.center,imageSize:.4,crossOrigin:void 0,margin:0,fill:{color:"rgba(255,255,255,1)"}},cornersSquareOptions:{type:L.dot,color:"#000000"},cornersDotOptions:{type:q.dot,color:"#000000"},dotsOptions:{type:G.verticalLine,color:"#000000",size:10},backgroundOptions:{color:"#FFFFFF"}},ee={..._,dotsOptions:{..._.dotsOptions,type:G.rounded},cornersSquareOptions:{type:L.dot,color:"#000000"},cornersDotOptions:{type:q.dot,color:"#000000"}},te={..._,dotsOptions:{..._.dotsOptions,type:G.dot},cornersSquareOptions:{type:L.dot,color:"#000000"},cornersDotOptions:{type:q.dot,color:"#000000"}},ie={..._,dotsOptions:{..._.dotsOptions,type:G.classy},cornersSquareOptions:{type:L.classy,color:"#000000"},cornersDotOptions:{type:q.classy,color:"#000000"}},ne={plain:$,basic:_,rounded:ee,dots:te,classy:ie},re=e=>"number"==typeof e&&!isNaN(e)&&isFinite(e),se=(e,t)=>{const i=[];return Object.values(B).includes(e.type)||i.push({path:`${t}.type`,message:`Invalid gradient type. Must be one of: ${Object.values(B).join(", ")}`,value:e.type}),void 0===e.rotation||re(e.rotation)||i.push({path:`${t}.rotation`,message:"Rotation must be a valid number",value:e.rotation}),!e.colorStops||!Array.isArray(e.colorStops)||e.colorStops.length<2?i.push({path:`${t}.colorStops`,message:"Gradient must have at least 2 color stops",value:e.colorStops}):e.colorStops.forEach(((e,n)=>{(!re(e.offset)||e.offset<0||e.offset>1)&&i.push({path:`${t}.colorStops[${n}].offset`,message:"Color stop offset must be between 0 and 1",value:e.offset}),(e=>{if(new Set(["black","white","red","green","blue","yellow","purple","gray","grey","cyan","magenta","lime","pink","teal","brown","orange"]).has(e.toLowerCase()))return!0;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(e))return!0;if(/^#([A-Fa-f0-9]{4}){1,2}$/.test(e))return!0;if(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/.test(e)||/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([01]?\.?\d*)\)$/.test(e))return(e.match(/\d+/g)?.map(Number)||[]).every((e=>e>=0&&e<=255));return!1})(e.color)||i.push({path:`${t}.colorStops[${n}].color`,message:"Invalid color format",value:e.color})})),i};function oe(e){const t=[];let i={..._};return e.data&&"string"==typeof e.data||t.push({path:"data",message:"QR data is required and must be a string",value:e.data}),e.shape&&!Object.values(x).includes(e.shape)&&(t.push({path:"shape",message:`Invalid shape type. Must be one of: ${Object.values(x).join(", ")}`,value:e.shape}),e.shape=_.shape),e.qrOptions&&(e.qrOptions.typeNumber&&!Object.values(m).includes(e.qrOptions.typeNumber)&&(t.push({path:"qrOptions.typeNumber",message:"Invalid type number",value:e.qrOptions.typeNumber}),e.qrOptions.typeNumber=_.qrOptions?.typeNumber),e.qrOptions.errorCorrectionLevel&&!Object.values(g).includes(e.qrOptions.errorCorrectionLevel)&&(t.push({path:"qrOptions.errorCorrectionLevel",message:"Invalid error correction level",value:e.qrOptions.errorCorrectionLevel}),e.qrOptions.errorCorrectionLevel=_.qrOptions?.errorCorrectionLevel),e.qrOptions.mode&&!Object.values(f).includes(e.qrOptions.mode)&&(t.push({path:"qrOptions.mode",message:"Invalid mode",value:e.qrOptions.mode}),e.qrOptions.mode=_.qrOptions?.mode)),e.imageOptions&&(e.imageOptions.imageSize&&(!re(e.imageOptions.imageSize)||e.imageOptions.imageSize<=0||e.imageOptions.imageSize>1)&&(t.push({path:"imageOptions.imageSize",message:"Image size must be between 0 and 1",value:e.imageOptions.imageSize}),e.imageOptions.imageSize=_.imageOptions?.imageSize),e.imageOptions.margin&&(!re(e.imageOptions.margin)||e.imageOptions.margin<0)&&(t.push({path:"imageOptions.margin",message:"Margin must be a non-negative number",value:e.imageOptions.margin}),e.imageOptions.margin=_.imageOptions?.margin),e.imageOptions.mode&&!Object.values(K).includes(e.imageOptions.mode)&&(t.push({path:"imageOptions.mode",message:`Invalid image mode. Must be one of: ${Object.values(K).join(", ")}`,value:e.imageOptions.mode}),e.imageOptions.mode=_.imageOptions?.mode)),e.dotsOptions&&(e.dotsOptions.type&&!Object.values(G).includes(e.dotsOptions.type)&&(t.push({path:"dotsOptions.type",message:`Invalid dot type. Must be one of: ${Object.values(G).join(", ")}`,value:e.dotsOptions.type}),e.dotsOptions.type=_.dotsOptions?.type),e.dotsOptions.size&&(!re(e.dotsOptions.size)||e.dotsOptions.size<=0)&&(t.push({path:"dotsOptions.size",message:"Dot size must be a positive number",value:e.dotsOptions.size}),e.dotsOptions.size=_.dotsOptions?.size),e.dotsOptions.gradient&&t.push(...se(e.dotsOptions.gradient,"dotsOptions.gradient"))),e.cornersSquareOptions&&(e.cornersSquareOptions.type&&!Object.values(L).includes(e.cornersSquareOptions.type)&&(t.push({path:"cornersSquareOptions.type",message:`Invalid corner square type. Must be one of: ${Object.values(L).join(", ")}`,value:e.cornersSquareOptions.type}),e.cornersSquareOptions.type=_.cornersSquareOptions?.type),e.cornersSquareOptions.gradient&&t.push(...se(e.cornersSquareOptions.gradient,"cornersSquareOptions.gradient"))),e.cornersDotOptions&&(e.cornersDotOptions.type&&!Object.values(q).includes(e.cornersDotOptions.type)&&(t.push({path:"cornersDotOptions.type",message:`Invalid corner dot type. Must be one of: ${Object.values(q).join(", ")}`,value:e.cornersDotOptions.type}),e.cornersDotOptions.type=_.cornersDotOptions?.type),e.cornersDotOptions.gradient&&t.push(...se(e.cornersDotOptions.gradient,"cornersDotOptions.gradient"))),i={...i,...e},{warnings:t,validatedOptions:i}}const ae=/\.?0+$/;function le(e){return e.toFixed(7).replace(ae,"")}function he(e,...t){return e.reduce(((e,i,n)=>{let r="";return n&&(r=t[n-1]),"number"==typeof r&&(r=le(r)),`${e}${r}${i}`}),"").trim().replace(/[\s\n\r]+/gim," ")}class ce{get element(){return this._element}constructor(e,t){this.type=e,this.document=t}draw(e){let t;switch(this.type){case q.square:t=this.drawSquare;break;case q.heart:t=this.drawHeart;break;case q.rounded:t=this.drawRounded;break;case q.classy:t=this.drawClassy;break;case q.inpoint:t=this.drawInpoint;break;case q.outpoint:t=this.drawOutpoint;break;case q.dot:default:t=this.drawDot}t.call(this,e)}rotateFigure({x:e,y:t,size:i,rotation:n=0,draw:r}){const s=e+i/2,o=t+i/2;r(),this._element?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`)}basicDot(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",le(i+t/2)),this._element.setAttribute("cy",le(n+t/2)),this._element.setAttribute("r",le(t/2.1))}})}basicSquare(e){const{size:t,x:i,y:n}=e,r=t/11;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",le(i+r)),this._element.setAttribute("y",le(n+r)),this._element.setAttribute("width",le(t-2*r)),this._element.setAttribute("height",le(t-2*r))}})}basicHeart(e){const{size:t,x:i,y:n}=e;this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");let r=!1,s=0;this._element.setAttribute("d",["M",1,.3262506,"c",0,.0383376,-.0064626,.0758377,-.0193751,.1125001,"s",-.0356247,.076875,-.0681248,.1206252,"c",-.0325,.0437499,-.0762503,.0931247,-.1312501,.1481249,"C",.7262502,.7625008,.6566626,.8279132,.5724999,.9037505,"L",.5,.9687506,"L",.4275001,.9037505,"C",.3433374,.8279132,.2737499,.7625005,.21875,.7075007,"C",.1637501,.6525008,.1199999,.6031258,.0874999,.5593758,"S",.0322876,.4754133,.0193751,.4387506,"S",0,.3645881,0,.3262506,"c",0,-.0783374,.0262499,-.1437498,.07875,-.1962499,"s",.1179124,-.07875,.1962499,-.07875,"c",.0433376,0,.0845875,.0091625,.12375,.0274999,"S",.4716623,.1229131,.5,.1562506,"c",.0283374,-.0333375,.0620874,-.0591625,.1012502,-.0775,"c",.0391627,-.0183375,.0804126,-.0274999,.12375,-.0274999,"c",.0783374,0,.1437497,.0262499,.1962501,.07875,"S",1,.2479131,1,.3262506,"z"].map((e=>"string"==typeof e?(s=0,r=e.toUpperCase()==e,e):(s++,e*=t,r&&(e+=s%2==1?i:n),le(e)))).join(" "))}basicRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",le(i)),this._element.setAttribute("y",le(n)),this._element.setAttribute("width",le(t)),this._element.setAttribute("height",le(t)),this._element.setAttribute("rx",le(t/4)),this._element.setAttribute("ry",le(t/4))}})}basicClassy(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${4.5*r} v ${-4.5*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} H ${i} z`)}})}basicInpoint(e){const{size:t,x:i,y:n}=e,r=t;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+r/2} v ${r/4} a ${r/4}, ${r/4} 0 0 0 ${r/4}, ${r/4} h ${r/4*3} v ${-r/4*3} a ${r/4}, ${r/4} 0 0 0 ${-r/4}, ${-r/4} h ${-r/2} a ${r/4}, ${r/4} 0 0 0 ${-r/4}, ${r/4} z`)}})}drawDot({x:e,y:t,size:i,rotation:n}){this.basicDot({x:e,y:t,size:i,rotation:n})}drawSquare({x:e,y:t,size:i,rotation:n}){this.basicSquare({x:e,y:t,size:i,rotation:n})}drawHeart({x:e,y:t,size:i,rotation:n}){this.basicHeart({x:e,y:t,size:i,rotation:n})}drawRounded({x:e,y:t,size:i,rotation:n}){this.basicRounded({x:e,y:t,size:i,rotation:n})}drawClassy({x:e,y:t,size:i,rotation:n}){this.basicClassy({x:e,y:t,size:i,rotation:n})}drawInpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:n})}drawOutpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:(n||0)+Math.PI})}}class de{get element(){return this._element}get fill(){return this._fill}constructor(e,t){this.type=e,this.document=t}draw(e){let t;switch(this.type){case L.square:t=this.drawSquare;break;case L.rounded:t=this.drawExtraRounded;break;case L.classy:t=this.drawClassy;break;case L.outpoint:t=this.drawOutpoint;break;case L.inpoint:t=this.drawInpoint;break;case L.dot:default:t=this.drawDot}t.call(this,e)}rotateFigure({x:e,y:t,size:i,rotation:n=0,draw:r}){const s=e+i/2,o=t+i/2;r(),this._element?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`),this._fill?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`)}basicDot(e){const{size:t,x:i,y:n}=e,r=t/8,s=.5*t,o=s-r;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i+t/2} ${n+(t/2-s)} a ${s} ${s} 0 1 0 0.1 0 z m 0 ${r} a ${o} ${o} 0 1 1 -0.1 0 Z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i+t/2} ${n+(t/2-(s+r))} a ${s+r} ${s+r} 0 1 0 0.1 0 z`)}})}basicSquare(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t} v ${-t} z M ${i+r} ${n+r} h ${t-2*r} v ${t-2*r} h ${2*r-t} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i-r} ${n-r} h ${t+2*r} v ${t+2*r} h ${-t-2*r} z`)}})}basicExtraRounded(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*-r} v ${-2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*r} z M ${i+2.5*r} ${n+r} h ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*r} v ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*r} h ${-2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*-r} v ${-2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*-r} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i-r} ${n+2.5*r} v ${2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*r} ${3.5*r} h ${2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*r} ${3.5*-r} v ${-2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*-r} ${3.5*-r} h ${-2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*-r} ${3.5*r} z`)}})}basicClassy(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${4.5*r} v ${-4.5*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} H ${i} z M ${i+2.5*r} ${n+r} h ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*r} v ${3.5*r} h ${-3.5*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*-r} v ${-3.5*r} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i+.5*r} ${n-r} h ${4*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*r} ${3.5*r} v ${5.5*r} h ${-5.5*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*-r} ${3.5*-r} v ${-5.5*r} z`)}})}basicInpoint(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${4.5*r} v ${-4.5*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*r} z M ${i+2.5*r} ${n+r} h ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*r} v ${3.5*r} h ${-3.5*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*-r} v ${-2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*-r} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i+.5*r} ${n-r} h ${4*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*r} ${3.5*r} v ${5.5*r} h ${-5.5*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*-r} ${3.5*-r} v ${-2*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*r} ${3.5*-r} z`)}})}drawDot({x:e,y:t,size:i,rotation:n}){this.basicDot({x:e,y:t,size:i,rotation:n})}drawSquare({x:e,y:t,size:i,rotation:n}){this.basicSquare({x:e,y:t,size:i,rotation:n})}drawExtraRounded({x:e,y:t,size:i,rotation:n}){this.basicExtraRounded({x:e,y:t,size:i,rotation:n})}drawClassy({x:e,y:t,size:i,rotation:n}){this.basicClassy({x:e,y:t,size:i,rotation:n})}drawInpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:n})}drawOutpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:(n||0)+Math.PI})}}class ue{get element(){return this._element}constructor(e,t){this.type=e,this.document=t}draw(e){let t;switch(this.type){case G.dot:t=this.drawDot;break;case G.randomDot:t=this.drawRandomDot;break;case G.classy:t=this.drawClassy;break;case G.classyRounded:t=this.drawClassyRounded;break;case G.rounded:t=this.drawRounded;break;case G.verticalLine:t=this.drawVerticalLine;break;case G.horizontalLine:t=this.drawHorizontalLine;break;case G.extraRounded:t=this.drawExtraRounded;break;case G.diamond:t=this.drawDiamond;break;case G.smallSquare:t=this.drawSmallSquare;break;case G.tinySquare:t=this.drawTinySquare;break;case G.star:t=this.drawStar;break;case G.plus:t=this.drawPlus;break;case G.square:default:t=this.drawSquare}t.call(this,e)}rotateFigure({x:e,y:t,size:i,rotation:n=0,draw:r}){const s=e+i/2,o=t+i/2;r(),this._element?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`)}basicDot(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",le(i+t/2)),this._element.setAttribute("cy",le(n+t/2)),this._element.setAttribute("r",le(t/2))}})}basicSquare(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",le(i)),this._element.setAttribute("y",le(n)),this._element.setAttribute("width",le(t)),this._element.setAttribute("height",le(t))}})}basicSideRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t/2} a ${t/2} ${t/2}, 0, 0, 0, 0 ${-t} z`)}})}basicCornerRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t} v ${-t/2} a ${t/2} ${t/2}, 0, 0, 0, ${-t/2} ${-t/2} z`)}})}basicCornerExtraRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t} a ${t} ${t}, 0, 0, 0, ${-t} ${-t} z`)}})}basicCornersRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t/2} a ${t/2} ${t/2}, 0, 0, 0, ${t/2} ${t/2} h ${t/2} v ${-t/2} a ${t/2} ${t/2}, 0, 0, 0, ${-t/2} ${-t/2} z`)}})}drawDot({x:e,y:t,size:i}){this.basicDot({x:e,y:t,size:i,rotation:0})}drawRandomDot({x:e,y:t,size:i}){const n=.25*Math.random()+.75;this.basicDot({x:e,y:t,size:i*n,rotation:0})}drawSquare({x:e,y:t,size:i}){this.basicSquare({x:e,y:t,size:i,rotation:0})}drawSmallSquare({x:e,y:t,size:i}){const n=i;i=.7*n,e+=.15*n,t+=.15*n,this.basicSquare({x:e,y:t,size:i,rotation:0})}drawTinySquare({x:e,y:t,size:i}){const n=i;i=.6*n,e+=.35*n,t+=.35*n,this.basicSquare({x:e,y:t,size:i,rotation:0})}drawDiamond({x:e,y:t,size:i}){this.basicSquare({x:e,y:t,size:i,rotation:Math.PI/4})}drawRounded({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0,l=r+s+o+a;if(0!==l)if(l>2||r&&s||o&&a)this.basicSquare({x:e,y:t,size:i,rotation:0});else{if(2===l){let n=0;return r&&o?n=Math.PI/2:o&&s?n=Math.PI:s&&a&&(n=-Math.PI/2),void this.basicCornerRounded({x:e,y:t,size:i,rotation:n})}if(1===l){let n=0;return o?n=Math.PI/2:s?n=Math.PI:a&&(n=-Math.PI/2),void this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}else this.basicDot({x:e,y:t,size:i,rotation:0})}drawVerticalLine({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;if(0===r+s+o+a||r&&!o&&!a||s&&!o&&!a)this.basicDot({x:e,y:t,size:i,rotation:0});else if(o&&a)this.basicSquare({x:e,y:t,size:i,rotation:0});else if(!o||a)if(!a||o);else{const n=-Math.PI/2;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}else{const n=Math.PI/2;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}drawHorizontalLine({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;if(0===r+s+o+a||o&&!r&&!s||a&&!r&&!s)this.basicDot({x:e,y:t,size:i,rotation:0});else if(r&&s)this.basicSquare({x:e,y:t,size:i,rotation:0});else if(!r||s)if(!s||r);else{const n=Math.PI;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}else{const n=0;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}drawExtraRounded({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0,l=r+s+o+a;if(0!==l)if(l>2||r&&s||o&&a)this.basicSquare({x:e,y:t,size:i,rotation:0});else{if(2===l){let n=0;return r&&o?n=Math.PI/2:o&&s?n=Math.PI:s&&a&&(n=-Math.PI/2),void this.basicCornerExtraRounded({x:e,y:t,size:i,rotation:n})}if(1===l){let n=0;return o?n=Math.PI/2:s?n=Math.PI:a&&(n=-Math.PI/2),void this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}else this.basicDot({x:e,y:t,size:i,rotation:0})}drawClassy({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;0!==r+s+o+a?r||o?s||a?this.basicSquare({x:e,y:t,size:i,rotation:0}):this.basicCornerRounded({x:e,y:t,size:i,rotation:Math.PI/2}):this.basicCornerRounded({x:e,y:t,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:e,y:t,size:i,rotation:Math.PI/2})}drawClassyRounded({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;0!==r+s+o+a?r||o?s||a?this.basicSquare({x:e,y:t,size:i,rotation:0}):this.basicCornerExtraRounded({x:e,y:t,size:i,rotation:Math.PI/2}):this.basicCornerExtraRounded({x:e,y:t,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:e,y:t,size:i,rotation:Math.PI/2})}drawStar({x:e,y:t,size:i}){this.rotateFigure({x:e,y:t,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const n=e+i/2,r=t+i/2,s=1.3*i/2,o=.5*s;let a="";for(let e=0;e<10;e++){const t=e*Math.PI/5-Math.PI/2,i=e%2==0?s:o;a+=(0===e?"M":"L")+`${n+i*Math.cos(t)},${r+i*Math.sin(t)}`}a+="Z",this._element?.setAttribute("d",a)}})}drawPlus({x:e,y:t,size:i}){this.rotateFigure({x:e,y:t,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const n=.35*i,r=.85*i,s=(i-r)/2,o=n/2,a=[`M ${e+i/2-o} ${t+s}`,`h ${n}`,`v ${r}`,"h "+-n,"z",`M ${e+s} ${t+i/2-o}`,`h ${r}`,`v ${n}`,"h "+-r,"z"].join(" ");this._element?.setAttribute("d",a)}})}}const pe={toDataURL:e=>"string"==typeof e&&e.startsWith("data:")?Promise.resolve(e):new Promise(((t,i)=>{if("string"==typeof e){const n=new XMLHttpRequest,r=()=>{n.abort()};n.onload=()=>{if(n.status<200||n.status>=300)return r(),void i(new Error(`Failed to load image: ${n.statusText}`));const e=new FileReader;e.onloadend=()=>{r(),t(e.result)},e.onerror=()=>{r(),i(new Error("Failed to read image blob"))},e.readAsDataURL(n.response)},n.onerror=n.ontimeout=n.onabort=()=>{r(),i(new Error("Image load aborted or failed"))};try{n.open("GET",e,!0),n.responseType="blob",n.timeout=1e4,n.send()}catch(e){r(),i(e)}}else{const n=new FileReader;n.onloadend=()=>{t(n.result)},n.onerror=()=>{i(new Error("Failed to read local image"))},n.readAsDataURL(e)}})).catch((e=>(console.error("Image loading error:",e),"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjY2NjIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDAiIGZvbnQtc2l6ZT0iMTYiPkxvZ28gbG9hZCBlcnJvcjwvdGV4dD48L3N2Zz4="))),getSize:(e,t)=>new Promise(((i,n)=>{const r=new Image,s=setTimeout((()=>{n(new Error("Image loading timed out"))}),15e3);"string"==typeof t&&(r.crossOrigin=t);const o=()=>{clearTimeout(s),r.onload=r.onerror=r.onabort=null,r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="};r.onload=()=>{o(),i({width:r.width,height:r.height})},r.onerror=r.onabort=()=>{o(),n(new Error("Failed to load image"))};try{"string"==typeof e?r.src=e:pe.toDataURL(e).then((e=>{e?r.src=e:n(new Error("Invalid image source"))})).catch(n)}catch(e){o(),n(e)}})).catch((e=>(console.error("Image size detection error:",e),{width:200,height:200})))};function me(e){let t,i=[],n=1;if("#"===(e=e.toLowerCase())[0]){const t=e.slice(1),r=t.length;r<=4?(i=[parseInt(t[0]+t[0],16),parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16)],4===r&&(n=parseInt(t[3]+t[3],16)/255)):(i=[parseInt(t[0]+t[1],16),parseInt(t[2]+t[3],16),parseInt(t[4]+t[5],16)],8===r&&(n=parseInt(t[6]+t[7],16)/255)),i[0]||(i[0]=0),i[1]||(i[1]=0),i[2]||(i[2]=0)}else{if(!(t=/^((?:rgba?))\s*\(([^)]*)\)/.exec(e)))return{value:e,alpha:n};{const e=3;i=t[2].trim().split(/\s*[,/]\s*|\s+/),i=i.map(((e,t)=>{if("%"===e[e.length-1]){const i=parseFloat(e)/100;return 3===t?i:255*i}return"none"===e?0:parseFloat(e)})),n=i.length>e?i.pop():1}}return{value:"#"+i.map((e=>Math.max(0,Math.min(255,e)).toString(16).padStart(2,"0"))).join(""),alpha:Math.max(0,Math.min(1,n))}}const ge=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],fe=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class be{constructor(e){this.roundValue=e=>"number"==typeof e?e:parseInt(e.replace("%",""),10)/100;const t=e.margin||0,i="circle"===e.shape?.1:.3,{bordersMain:n,bordersOuter:r,bordersInner:s}=e,o=Math.min(e.width,e.height),a=C(e.borderOptions?.radius),l=C(e.borderOptions?.inner?.radius,a),h=a&&j(a)>0?j(a)/100*o:0,c=(a&&j(l)>0?j(l)/100*o:0)??h,d=c>0&&e.borderOptions?.hasBorder?c*i:0;this._hls=e.hls,this.finalWidth=e.width+n.left+n.right+r.left+r.right+s.left+s.right,this.finalHeight=e.height+n.top+n.bottom+r.top+r.bottom+s.top+s.bottom;const u=n.left+n.right+r.left+r.right+s.left+s.right,p=n.top+n.bottom+r.top+r.bottom+s.top+s.bottom,m=e.borderOptions?.hasBorder?this.finalWidth-u-2*r.left-2*s.left-s.right-2*t-d:this.finalWidth-2*t,g=e.borderOptions?.hasBorder?this.finalHeight-p-2*r.top-2*s.top-s.top-2*t-d:this.finalHeight-2*t,f=m/e.width,b=g/e.height,y=Math.min(f,b),w=Math.min(Math.max(e.scale??1,0),1.5),k=Math.min(Math.max(e.borderOptions?.inner?.scale??1,0),1.5),O=e.borderOptions?.inner?.horizontalOffset||0,A=e.borderOptions?.inner?.verticalOffset||0;e.scale=y*w*k||1,this.options=e,this.document=e.document,this.imageTools=e.imageTools||pe,this._element=this.document.createElementNS("http://www.w3.org/2000/svg","svg");const S=le(e.width),Z=le(e.height);e.isResponsive||(this._element.setAttribute("width",S),this._element.setAttribute("height",Z)),this._element.setAttribute("viewBox",`0 0 ${S} ${Z}`),this.defs=this.document.createElementNS("http://www.w3.org/2000/svg","defs"),this._element.appendChild(this.defs),this._innerQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g");let I=(m-e.width*e.scale)/2+t-O+d/2,W=(g-e.height*e.scale)/2+t-A+d/2;if(e.borderOptions?.hasBorder){const t={top:T(e.borderOptions,"top"),right:T(e.borderOptions,"right"),bottom:Y(e.borderOptions,"bottom",this._hls),left:T(e.borderOptions,"left")},i=e.borderOptions.thickness||0,n=e.borderOptions.borderOuter?.thickness||0,r=e.borderOptions.borderInner?.thickness||0,s=e.borderOptions.noBorderThickness||i/4;W+=((t.top?i:s)-(t.bottom?i:s))/2+n+r+r/2,I+=((t.left?i:s)-(t.right?i:s))/2+n+r+r/2}e.verticalOffset&&(W-=e.verticalOffset),e.horizontalOffset&&(I-=e.horizontalOffset),this._instanceId=be.instanceCount++,1===e.scale&&0===I&&0===W||this._innerQrGroup.setAttribute("transform",`translate(${I}, ${W}) scale(${e.scale})`),this._maskedQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g"),this._maskedQrGroup.setAttribute("mask",`url(#qr-mask-${this._instanceId})`),this._maskedQrGroup.appendChild(this._innerQrGroup),this._element.appendChild(this._maskedQrGroup)}get element(){return this._element}get qrGroup(){return this._innerQrGroup||this._element}get width(){return this.finalWidth}get height(){return this.finalHeight}get svgSize(){return{width:this.options.width,height:this.options.height}}getElement(){return this._element}async drawQR(e){const t=e.getModuleCount(),i=parseInt(((t-17)/4).toFixed(0),10),n=this.options.dotsOptions.size;let r={hideXDots:0,hideYDots:0,width:0,height:0};if(this.qr=e,this.options.borderOptions?.hasBorder||this.drawBackground(),this.options.image){const e=await this.imageTools.getSize(this.options.image,this.options.imageOptions.crossOrigin),{imageOptions:s}=this.options;if(this.options.imageOptions.mode==K.background){const t=0,i=(this.finalWidth-2*t*n)*s.imageSize,o=(this.finalHeight-2*t*n)*s.imageSize;let{width:a,height:l}=e;l=l/a*i,a=i,l>o&&(a=a/l*o,l=o),r={hideXDots:0,hideYDots:0,width:a,height:l}}else{const s=this.options.imageOptions.imageSize*this.options.errorCorrectionPercent,o=u.getPatternPosition(i),a=Math.floor(s*(t*t-192-2*(t-16)-o.length**2*25));r=function({originalHeight:e,originalWidth:t,maxHiddenDots:i,maxHiddenAxisDots:n,dotSize:r,margin:s}){const o={x:0,y:0},a={x:0,y:0};if(e<=0||t<=0||i<=0||r<=0||4*s**2>i)return{height:0,width:0,hideYDots:0,hideXDots:0};n&&n%2==0&&(n=Math.max(1,n-1));const l=Math.max(t,e),h=Math.min(t,e);let c=0,d=(n||i)-2*s;do{const e=c+(d-c)/2;let t=Math.max(1,Math.ceil(e+2*s));t%2==0&&t++;let n=Math.max(1,Math.ceil(e*h/l+2*s));n%2==0&&n++,t*n>i?d=e:c=e}while(Math.abs(c-d)>.001);const u=c;let p=Math.max(1,Math.ceil(u+2*s));p%2==0&&p++;let m=Math.max(1,Math.ceil(u*h/l+2*s));m%2==0&&m++,t>e?(o.x=p,o.y=m):(o.x=m,o.y=p);const g=(o.x-2*s)*r,f=(o.y-2*s)*r;return a.x=g,a.y=g*e/t,a.y>f&&(a.y=f,a.x=f*t/e),{height:Math.round(a.y+2*s*r),width:Math.round(a.x+2*s*r),hideYDots:o.y,hideXDots:o.x}}({originalWidth:e.width,originalHeight:e.height,maxHiddenDots:a,maxHiddenAxisDots:t-14,dotSize:n,margin:this.options.imageOptions.margin})}}this.options.imageOptions.mode!=K.overlay&&this.options.image&&r.width>0&&r.height>0&&await this.drawImage({width:r.width,height:r.height,count:t,dotSize:n}),this.drawDots(((e,i)=>!(this.options.imageOptions.mode==K.center&&e>=(t-r.hideXDots)/2&&e<(t+r.hideXDots)/2&&i>=(t-r.hideYDots)/2&&i<(t+r.hideYDots)/2)&&!(e<8&&i<8||e>=t-8&&i<8||i>=t-8&&e<8))),this.options.imageOptions.mode==K.overlay&&this.options.image&&r.width>0&&r.height>0&&await this.drawImage({width:r.width,height:r.height,count:t,dotSize:n}),this.drawCorners()}drawBackground(){const e=this.options;if(this._element&&e.backgroundOptions){const t=e.backgroundOptions.gradient,i=e.backgroundOptions.color;this.createColor({options:t,color:i,additionalRotation:0,x:0,y:0,height:e.height,width:e.width,name:`background-color-${this._instanceId}`});const n=Math.min(e.width,e.height),r=this.document.createElementNS("http://www.w3.org/2000/svg","rect");[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask);const s=e.backgroundOptions?.round||0,o=this.roundValue(s);r.setAttribute("x",le((e.width-n)/2)),r.setAttribute("y",le((e.height-n)/2)),r.setAttribute("width",le(n)),r.setAttribute("height",le(n)),r.setAttribute("rx",le(n/2*o)),this.backgroundMaskGroup.appendChild(r)}}drawBackgroundForBorder(e,t){const i=this.options;if(i.backgroundOptions){const n=i.backgroundOptions.gradient,r=i.backgroundOptions.color||"#ffffff",s=Math.min(i.width,i.height)-2*e,o=(i.width-s)/2,a=(i.height-s)/2,l=t-e,h=this.createColor({options:n,borderOptions:i.borderOptions,color:r,additionalRotation:0,x:o,y:a,height:s,width:s,name:`background-color-${this._instanceId}`,returnSVGGroup:!0}),c=this.document.createElementNS("http://www.w3.org/2000/svg","rect");return[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask),c.setAttribute("x",le(o)),c.setAttribute("y",le(a)),c.setAttribute("width",le(s)),c.setAttribute("height",le(s)),c.setAttribute("rx",le(l)),this.backgroundMaskGroup.appendChild(c),h}}drawDots(e){if(!this.qr)throw new Error("QR code is not defined");const t=this.options,i=this.qr.getModuleCount();if(i>t.width||i>t.height)throw new Error("The canvas is too small");const n=t.dotsOptions.size;let r=Math.min(t.width,t.height);t.imageOptions.mode==K.background&&(r-=2*n*(t.imageOptions.margin||0));const s=Math.floor((t.width-i*n)/2);let o=Math.floor((t.height-i*n)/2);if(t.offset){const e=(t.height-i*n)/2;o+=Math.min(Math.abs(t.offset),e)*Math.sign(t.offset)}let a=new ue(t.dotsOptions.type,this.document);const l=new ue(G.tinySquare,this.document),h=new ue(G.square,this.document);[this.dotsMask,this.dotsMaskGroup]=this.createMask(`mask-dot-color-${this._instanceId}`),this.defs.appendChild(this.dotsMask),t.imageOptions.mode==K.background&&([this.lightDotsMask,this.lightDotsMaskGroup]=this.createMask(`mask-light-dot-color-${this._instanceId}`),this.defs.appendChild(this.lightDotsMask));let c=0,d=i;t.shape===x.circle?(c=Math.floor((r/n-i-2)/2),d=i+2*c):t.imageOptions.mode==K.background&&(c=1,d=i+2*c);const p=s-c*n,m=o-c*n,g=p,f=m,b=i+2*c,y=new Array(d),w=Math.floor(d/2);for(let n=0;n<d;n++){y[n]=new Array(d);for(let r=0;r<d;r++)if(n>c-1&&n<d-c&&r>c-1&&r<d-c){const t=n-c,i=r-c;e&&!e(t,i)?y[n][r]=void 0:y[n][r]=!!this.qr.isDark(i,t)}else t.shape===x.circle&&Math.sqrt((n-w)*(n-w)+(r-w)*(r-w))>w?y[n][r]=void 0:y[n][r]=n!=c-1&&n!=d-c&&r!=c-1&&r!=d-c?this.qr.isDark(r-2*c<0?r:r>=i?r-2*c:r-c,n-2*c<0?n:n>=i?n-2*c:n-c):(r==c-1&&(n<c+8||n>d-c-9)||r==d-c&&n<c+8||n==c-1&&(r<c+8||r>d-c-9)||n==d-c&&r<c+8)&&void 0}const k=(i-17)/4,O=u.getPatternPosition(k);for(let e=0;e<d;e++){const t=O.find((t=>e-c>t-3&&e-c<t+3));for(let i=0;i<d;i++){const r=O.find((e=>i-c>e-3&&i-c<e+3));null!=y[e][i]&&(this.lightDotsMask&&(a=t&&r&&(t!=O[0]&&r!=O[0]||r!=O[0]&&r!=O[O.length-1]||t!=O[0]&&t!=O[O.length-1])?h:l),y[e][i]?(a.draw({x:p+e*n,y:m+i*n,size:n,getNeighbor:(t,n)=>!0===y[e+t]?.[i+n]}),a.element&&this.dotsMaskGroup&&this.dotsMaskGroup.appendChild(a.element)):this.lightDotsMask&&(a.draw({x:p+e*n,y:m+i*n,size:n,getNeighbor:(t,n)=>!1===y[e+t]?.[i+n]}),a.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(a.element)))}}this.lightDotsMask&&this.createColor({options:t.imageOptions.fill?.gradient,color:t.imageOptions.fill?.color,additionalRotation:0,x:g,y:f,height:b*n,width:b*n,name:`light-dot-color-${this._instanceId}`}),this.createColor({options:t.dotsOptions?.gradient,color:t.dotsOptions.color,additionalRotation:0,x:g,y:f,height:b*n,width:b*n,name:`dot-color-${this._instanceId}`})}drawCorners(){if(!this.qr)throw new Error("QR code is not defined");const e=this.qrGroup,t=this.options;if(!e)throw new Error("Element code is not defined");const i=this.qr.getModuleCount(),n=t.dotsOptions.size,r=7*n,s=3*n,o=Math.floor((t.width-i*n)/2);let a=Math.floor((t.height-i*n)/2);if(t.offset){const e=(t.height-i*n)/2,r=Math.min(Math.abs(t.offset),e)*Math.sign(t.offset);a+=r}[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((([e,l,h])=>{const c=o+e*n*(i-7),d=a+l*n*(i-7);let u=this.dotsMask,p=this.dotsMaskGroup,m=this.dotsMask,g=this.dotsMaskGroup;if((t.cornersSquareOptions?.gradient||t.cornersSquareOptions?.color)&&([u,p]=this.createMask(`mask-corners-square-color-${e}-${l}-${this._instanceId}`),this.defs.appendChild(u),m=u,g=p,this.createColor({options:t.cornersSquareOptions?.gradient,color:t.cornersSquareOptions?.color,additionalRotation:h,x:c,y:d,height:r,width:r,name:`corners-square-color-${e}-${l}-${this._instanceId}`})),t.cornersSquareOptions?.type){const e=new de(t.cornersSquareOptions.type,this.document);e.draw({x:c,y:d,size:r,rotation:h}),e.element&&p&&p.appendChild(e.element),e.fill&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(e.fill)}else{const e=new ue(t.dotsOptions.type,this.document);for(let t=0;t<ge.length;t++)for(let i=0;i<ge[t].length;i++)ge[t]?.[i]?(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>!!ge[t+e]?.[i+n]}),e.element&&p&&p.appendChild(e.element)):this.lightDotsMask&&!fe[t]?.[i]&&(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>!ge[t+e]?.[i+n]&&!fe[t+e]?.[i+n]}),e.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(e.element));if(this.lightDotsMask)for(let t=-1;t<8;t++)for(let i=-1;i<8;i++)-1!=t&&7!=t&&-1!=i&&7!=i||(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>{const r=t+e,s=i+n;return r>=-1&&r<=7&&s>=-1&&s<=7&&(-1==r||7==r||-1==s||7==s)}}),e.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(e.element))}if((t.cornersDotOptions?.gradient||t.cornersDotOptions?.color)&&([m,g]=this.createMask(`mask-corners-dot-color-${e}-${l}-${this._instanceId}`),this.defs.appendChild(m),this.createColor({options:t.cornersDotOptions?.gradient,color:t.cornersDotOptions?.color,additionalRotation:h,x:c+2*n,y:d+2*n,height:s,width:s,name:`corners-dot-color-${e}-${l}-${this._instanceId}`})),t.cornersDotOptions?.type){const e=new ce(t.cornersDotOptions.type,this.document);e.draw({x:c+2*n,y:d+2*n,size:s,rotation:h}),e.element&&g&&g.appendChild(e.element)}else{const e=new ue(t.dotsOptions.type,this.document);for(let t=0;t<fe.length;t++)for(let i=0;i<fe[t].length;i++)fe[t]?.[i]&&(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>!!fe[t+e]?.[i+n]}),e.element&&g&&g.appendChild(e.element))}}))}async drawImage({width:e,height:t,count:i,dotSize:n}){const r=this.options,s=Math.floor((r.width-i*n)/2);let o=Math.floor((r.height-i*n)/2);if(r.offset){const e=(r.height-i*n)/2;o+=Math.min(Math.abs(r.offset),e)*Math.sign(r.offset)}let a=r.imageOptions.margin*n;r.imageOptions.mode==K.background&&(a=0);const l=s+a+(i*n-e)/2,h=o+a+(i*n-t)/2,c=e-2*a,d=t-2*a,u=await this.imageTools.toDataURL(r.image||"");let p=this.document.createElementNS("http://www.w3.org/2000/svg","image");if(p.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",u||""),u?.startsWith("data:image/svg+xml;")){let e=u.substring(19);const t=e.indexOf(","),i=e.substring(0,t);if(e=e.substring(t+1),"base64"===i)e="function"==typeof atob?atob(e):Buffer.from(e,"base64").toString("utf8");else e="";if(e){const t=(new DOMParser).parseFromString(e,"text/xml"),i=Array.from(t.getElementsByTagName("svg"));i.length&&(p=i[0],p.setAttribute("overflow","visible"))}}p&&u&&(p.setAttribute("x",le(l)),p.setAttribute("y",le(h)),p.setAttribute("width",`${le(c)}px`),p.setAttribute("height",`${le(d)}px`),this.qrGroup.appendChild(p))}createColor({options:e,borderOptions:t,color:i,additionalRotation:n,x:r,y:s,height:o,width:a,name:l,returnSVGGroup:h=!1}){const c=a>o?a:o,d=this.document.createElementNS("http://www.w3.org/2000/svg","rect");if(d.setAttribute("x",le(r)),d.setAttribute("y",le(s)),d.setAttribute("height",le(o)),d.setAttribute("width",le(a)),d.setAttribute("style",`mask:url(#mask-${l}-${this._instanceId})`),e){let i;if(e.type===B.radial){i=this.document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse");let e=r+a/2,n=s+o/2;if(t){const i=t.thickness/2,l=2;T(t,"top")&&!Y(t,"bottom",this._hls)?n=s+i*l+o/2:!T(t,"top")&&Y(t,"bottom",this._hls)&&(n=s-i*l+o/2),T(t,"right")&&!T(t,"left")?e=r-i*l+a/2:!T(t,"right")&&T(t,"left")&&(e=r+i*l+a/2)}i.setAttribute("fx",le(e)),i.setAttribute("fy",le(n)),i.setAttribute("cx",le(r+a/2)),i.setAttribute("cy",le(s+o/2)),i.setAttribute("r",le(c/2))}else{const t=((e.rotation||0)+n)%(2*Math.PI),h=(t+2*Math.PI)%(2*Math.PI);let c=r+a/2,d=s+o/2,u=r+a/2,p=s+o/2;h>=0&&h<=.25*Math.PI||h>1.75*Math.PI&&h<=2*Math.PI?(c-=a/2,d-=o/2*Math.tan(t),u+=a/2,p+=o/2*Math.tan(t)):h>.25*Math.PI&&h<=.75*Math.PI?(d-=o/2,c-=a/2/Math.tan(t),p+=o/2,u+=a/2/Math.tan(t)):h>.75*Math.PI&&h<=1.25*Math.PI?(c+=a/2,d+=o/2*Math.tan(t),u-=a/2,p-=o/2*Math.tan(t)):h>1.25*Math.PI&&h<=1.75*Math.PI&&(d+=o/2,c+=a/2/Math.tan(t),p-=o/2,u-=a/2/Math.tan(t)),i=this.document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse"),i.setAttribute("x1",le(c)),i.setAttribute("y1",le(d)),i.setAttribute("x2",le(u)),i.setAttribute("y2",le(p))}e.colorStops.forEach((e=>{const t=this.document.createElementNS("http://www.w3.org/2000/svg","stop");t.setAttribute("offset",`${le(100*e.offset)}%`);const n=me(e.color);t.setAttribute("stop-color",n.value),n.alpha<1&&t.setAttribute("stop-opacity",n.alpha.toFixed(7)),i.appendChild(t)})),d.setAttribute("fill",`url(#${l}-${this._instanceId})`),this.defs.appendChild(i)}else if(i){const e=me(i);d.setAttribute("fill",e.value),e.alpha<1&&d.setAttribute("opacity",e.alpha.toFixed(7))}if(h)return d;l.startsWith("background-color")?this._element.insertBefore(d,this._maskedQrGroup):this.qrGroup.appendChild(d)}createMask(e){const t=`${e}-${this._instanceId}`,i=this.options,n=this.document.createElementNS("http://www.w3.org/2000/svg","mask");n.setAttribute("id",t),n.setAttribute("maskUnits","userSpaceOnUse"),n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width",le(i.width)),n.setAttribute("height",le(i.height));const r=this.document.createElementNS("http://www.w3.org/2000/svg","g");return r.setAttribute("fill","#fff"),n.appendChild(r),[n,r]}}var ye;be.instanceCount=0,function(e){e.svg="svg",e.png="png",e.jpeg="jpeg",e.webp="webp"}(ye||(ye={})),Object.assign(b.stringToBytesFuncs,{UTF8:e=>function(e){const t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<128?t.push(n):n<2048?t.push(192|n>>6,128|63&n):n<55296||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(i++,n=65536+((1023&n)<<10|1023&e.charCodeAt(i)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}(e)});let we=class t{get size(){return this.qrSVG?{width:this.qrSVG.width,height:this.qrSVG.height}:void 0}constructor(e){const i=e;let n=_;if(t._selectedTemplate)if("string"==typeof t._selectedTemplate){const e=t._selectedTemplate;ne[e]?n=ne[e]:console.warn(`QR Code template "${e}" not found. Using default.`)}else n=t._selectedTemplate;const r=k(n,i),{warnings:s,validatedOptions:o}=oe(r);this.options=U(o),s.length>0&&this._logValidationWarnings("QR Code Options Validation Warnings:",s),this.update()}static setTemplate(e){return"string"==typeof e?ne[e]?t._selectedTemplate=e:(console.warn(`QR Code template "${e}" not found. Resetting to default template.`),t._selectedTemplate=_):t._selectedTemplate=e,t}async update(e){this.container&&(this.container.innerHTML="");const{warnings:t}=oe(e||this.options);if(t.length>0&&this._logValidationWarnings("QR Code JS Options Update Validation Warnings:",t),this.options=e?U(k(this.options,e)):this.options,!this.options.data)return;this.options.stringToBytesFuncs&&(Object.assign(b.stringToBytesFuncs,this.options.stringToBytesFuncs),delete this.options.stringToBytesFuncs),this.qr=new b(this.options.qrOptions.typeNumber,this.options.qrOptions.errorCorrectionLevel);const i=this.options.qrOptions.mode||function(e){switch(!0){case/^[0-9]*$/.test(e):return f.numeric;case/^[0-9A-Z $%*+\-./:]*$/.test(e):return f.alphanumeric;case/[^\u0000-\u00ff]/.test(e):return f.unicode;default:return f.byte}}(this.options.data);this.qr.addData(this.options.data,i),this.qr.make(),await this._setupSvgAsync(),this.append(this.container)}append(e){if(e)return this.qrSVG?.element&&e.appendChild(this.qrSVG.element),this.container=e,this}async applyExtension(e){if(!e)throw new Error("Extension function should be defined.");this.extension=e,await this.update()}async deleteExtension(){this.extension=void 0,await this.update()}async serialize(e=!1){if(!this.qr)throw new Error("QR code is empty");if(this.qrSVG?.element||await this._setupSvgAsync(),this.svgDrawingPromise&&await this.svgDrawingPromise,!this.qrSVG?.element)return;let t=this.qrSVG.element;if(e){const e=this.qrSVG.element.cloneNode(!0);e.style.filter="invert(1)",t=e}let i=(new XMLSerializer).serializeToString(t);return i='<?xml version="1.0" standalone="no"?>\r\n'+i,i}async _setupSvgAsync(){if(!this.qr)return;let e=this.qr.getModuleCount();this.options.imageOptions.mode===K.background&&this.options.shape!==x.circle&&(e+=2);let t=Math.ceil((this.options.shape===x.circle?Math.sqrt(1.8):1.1)*e);t%2==0&&(t-=1);let i=0;this.options.imageOptions.mode===K.background&&(i+=this.options.imageOptions.margin||0);const n=Math.ceil(this.options.dotsOptions.size*(t+2*i)),r=this.options.borderOptions;let s=0,o=0;const a={top:0,right:0,bottom:0,left:0},l={top:0,right:0,bottom:0,left:0},h={top:0,right:0,bottom:0,left:0},c=r?.noBorderThickness||r?.thickness?r.thickness/4:0;if(r?.hasBorder){const e=r.borderOuter?.thickness?2*r.borderOuter?.thickness:0,t=r.borderInner?.thickness?2*r.borderInner?.thickness:0;e>0&&(l.top=e/2,l.bottom=e/2,l.left=e/2,l.right=e/2),t>0&&(h.top=t/2,h.bottom=t/2,h.left=t/2,h.right=t/2),T(r,"left")?(a.left=r.thickness,s+=r.thickness):(a.left=c,s+=c),T(r,"right")?(a.right=r.thickness,s+=r.thickness):(a.right=c,s+=c),T(r,"top")?(a.top=r.thickness,o+=r.thickness):(a.top=c,o+=c),Y(r,"bottom",this._hls())?(a.bottom=r.thickness,o+=r.thickness):(a.bottom=c,o+=c)}const d=n+s,u=n+o;this.qrSVG=new be({...this.options,width:d,height:u,bordersMain:a,bordersOuter:l,bordersInner:h,errorCorrectionPercent:F[this.options.qrOptions.errorCorrectionLevel],hls:this._hls()}),this.svgDrawingPromise=this.qrSVG.drawQR(this.qr).then((()=>{this.qrSVG?.element&&(this.options.instanceId=this.qrSVG._instanceId,this.options.borderOptions?.hasBorder&&D(this.options.borderOptions)(this.qrSVG.element,this.options,n,this.qrSVG.drawBackgroundForBorder.bind(this.qrSVG),a,l,h,c,this._hls),this.extension?.(this.qrSVG.element,this.options))})).catch((e=>{console.error(e)}))}async _drawToCanvasForValidation(t){const{width:i=300,height:n=300}=this.qrSVG?.svgSize??t??e,r=i,s=n,o=document.createElement("canvas");o.width=r,o.height=s;const a=await this.serialize();if(!a)throw new Error("Failed to serialize SVG.");const l="data:image/svg+xml;base64,"+btoa(a);return new Promise(((e,t)=>{const i=new Image;i.width=r,i.height=s,i.crossOrigin="Anonymous",i.onload=()=>{const n=o.getContext("2d");if(!n)return t(new Error("Could not get canvas 2D context"));n.drawImage(i,0,0,r,s),e(o)},i.onerror=i.onabort=t,i.src=l}))}async drawToCanvas(t){const{width:i=300,height:n=300}=this.qrSVG?.svgSize??t??e,r=1*i,s=1*n,o=document.createElement("canvas");o.width=r,o.height=s;const a=(async()=>{try{const e=await this.serialize();if(!e)return void console.warn("SVG serialization returned empty.");const t="data:image/svg+xml;base64,"+btoa(e),a=new Image;a.width=r,a.height=s,await new Promise(((e,l)=>{a.onload=()=>{const t=Math.ceil(2*Math.max(i,n)/Math.max(a.width,a.height));let h;try{h=new OffscreenCanvas(a.width*t*2,a.height*t*2)}catch(e){h=document.createElement("canvas"),h.width=a.width*t*2,h.height=a.height*t*2}const c=h.getContext("2d");if(!c)return l(new Error("Could not get OffscreenCanvas 2D context"));c.drawImage(a,0,0,h.width,h.height);const d=o.getContext("2d");if(!d)return l(new Error("Could not get canvas 2D context"));d.drawImage(h,0,0,h.width,h.height,0,0,r,s),e()},a.onerror=e=>l(new Error(`Image load error: ${e}`)),a.onabort=()=>l(new Error("Image load aborted")),a.src=t}))}catch(e){throw console.error("Error drawing to canvas:",e),e}})();return{canvas:o,canvasDrawingPromise:a}}downloadURI(e,t){const i=document.createElement("a");i.download=t,i.href=e,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async download(e,t){if("undefined"==typeof Blob)throw new Error("Cannot download in Node.js environment");let i=ye.png,n="qr";if(e&&(e.name&&(n=e.name),e.extension&&(i=e.extension)),"svg"===i.toLowerCase()){const e=await this.serialize();if(!e)return;const t="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(e);this.downloadURI(t,`${n}.svg`)}else{const e=await this.drawToCanvas(t);if(!e)return;const{canvas:r,canvasDrawingPromise:s}=e;await s;const o=r.toDataURL(`image/${i}`);this.downloadURI(o,`${n}.${i}`)}}async createOptimizedQRCanvas(t){const{width:i=300,height:n=300}=this.qrSVG?.svgSize??t??e,r=document.createElement("canvas");r.width=i,r.height=n;const s=await this.serialize();if(!s)throw new Error("Failed to serialize SVG.");const o="data:image/svg+xml;base64,"+btoa(Array.from((new TextEncoder).encode(s)).map((e=>String.fromCharCode(e))).join(""));return new Promise(((e,t)=>{const s=new Image;s.width=i,s.height=n,s.crossOrigin="Anonymous",s.onload=()=>{const o=r.getContext("2d");if(!o)return t(new Error("Could not get canvas 2D context"));o.imageSmoothingEnabled=!1,o.drawImage(s,0,0,i,n),this.applyQRThreshold(r),e(r)},s.onerror=e=>t(new Error(`Image load error: ${e}`)),s.onabort=()=>t(new Error("Image load aborted")),s.src=o}))}applyQRThreshold(e){const t=e.getContext("2d");if(!t)return;const i=t.getImageData(0,0,e.width,e.height),n=i.data;for(let e=0;e<n.length;e+=4){const t=(n[e]+n[e+1]+n[e+2])/3<128?0:255;n[e]=n[e+1]=n[e+2]=t}t.putImageData(i,0,0)}_hls(){return!1}_logValidationWarnings(e,t){console.warn(e),t.forEach((e=>{console.warn(`option: ${e.path} - '${e.value}' : ${e.message}`)}))}};we._selectedTemplate=null;const ke=new TextEncoder,Oe=new TextDecoder;function Ae(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:Oe.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=Oe.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);const t=atob(e),i=new Uint8Array(t.length);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);return i}(t)}catch{throw new TypeError("The input to be decoded is not correctly encoded.")}}class Se extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class Ze extends Se{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,i="unspecified",n="unspecified"){super(e,{cause:{claim:i,reason:n,payload:t}}),this.claim=i,this.reason=n,this.payload=t}}class Ie extends Se{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,i="unspecified",n="unspecified"){super(e,{cause:{claim:i,reason:n,payload:t}}),this.claim=i,this.reason=n,this.payload=t}}class We extends Se{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class je extends Se{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class Ce extends Se{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class ve extends Se{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class Je extends Se{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}}function Ee(e,t="algorithm.name"){return new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`)}function Te(e,t){return e.name===t}function Ye(e){return parseInt(e.name.slice(4),10)}function Ve(e,t,i){switch(t){case"HS256":case"HS384":case"HS512":{if(!Te(e.algorithm,"HMAC"))throw Ee("HMAC");const i=parseInt(t.slice(2),10);if(Ye(e.algorithm.hash)!==i)throw Ee(`SHA-${i}`,"algorithm.hash");break}case"RS256":case"RS384":case"RS512":{if(!Te(e.algorithm,"RSASSA-PKCS1-v1_5"))throw Ee("RSASSA-PKCS1-v1_5");const i=parseInt(t.slice(2),10);if(Ye(e.algorithm.hash)!==i)throw Ee(`SHA-${i}`,"algorithm.hash");break}case"PS256":case"PS384":case"PS512":{if(!Te(e.algorithm,"RSA-PSS"))throw Ee("RSA-PSS");const i=parseInt(t.slice(2),10);if(Ye(e.algorithm.hash)!==i)throw Ee(`SHA-${i}`,"algorithm.hash");break}case"Ed25519":case"EdDSA":if(!Te(e.algorithm,"Ed25519"))throw Ee("Ed25519");break;case"ES256":case"ES384":case"ES512":{if(!Te(e.algorithm,"ECDSA"))throw Ee("ECDSA");const i=function(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}(t);if(e.algorithm.namedCurve!==i)throw Ee(i,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}!function(e,t){if(!e.usages.includes(t))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}(e,i)}function Re(e,t,...i){if((i=i.filter(Boolean)).length>2){const t=i.pop();e+=`one of type ${i.join(", ")}, or ${t}.`}else 2===i.length?e+=`one of type ${i[0]} or ${i[1]}.`:e+=`of type ${i[0]}.`;return null==t?e+=`Received ${t}`:"function"==typeof t&&t.name?e+=`Received function ${t.name}`:"object"==typeof t&&null!=t&&t.constructor?.name&&(e+=`Received an instance of ${t.constructor.name}`),e}function Me(e,t,...i){return Re(`Key for the ${e} algorithm must be`,t,...i)}function Pe(e){return"CryptoKey"===e?.[Symbol.toStringTag]}function Xe(e){return"KeyObject"===e?.[Symbol.toStringTag]}var De=e=>Pe(e)||Xe(e);var Be=e=>{if("object"!=typeof(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;let i=e;for(;null!==Object.getPrototypeOf(i);)i=Object.getPrototypeOf(i);return Object.getPrototypeOf(e)===i};const Ge=(e,t,i=0)=>{0===i&&(t.unshift(t.length),t.unshift(6));const n=e.indexOf(t[0],i);if(-1===n)return!1;const r=e.subarray(n,n+t.length);return r.length===t.length&&(r.every(((e,i)=>e===t[i]))||Ge(e,t,n+1))},qe=async(e,t,i,n,r)=>{let s,o;const a=new Uint8Array(atob(i.replace(e,"")).split("").map((e=>e.charCodeAt(0))));switch(n){case"PS256":case"PS384":case"PS512":s={name:"RSA-PSS",hash:`SHA-${n.slice(-3)}`},o=["verify"];break;case"RS256":case"RS384":case"RS512":s={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${n.slice(-3)}`},o=["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":s={name:"RSA-OAEP",hash:`SHA-${parseInt(n.slice(-3),10)||1}`},o=["encrypt","wrapKey"];break;case"ES256":s={name:"ECDSA",namedCurve:"P-256"},o=["verify"];break;case"ES384":s={name:"ECDSA",namedCurve:"P-384"},o=["verify"];break;case"ES512":s={name:"ECDSA",namedCurve:"P-521"},o=["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{const e=(e=>{switch(!0){case Ge(e,[42,134,72,206,61,3,1,7]):return"P-256";case Ge(e,[43,129,4,0,34]):return"P-384";case Ge(e,[43,129,4,0,35]):return"P-521";default:return}})(a);s=e?.startsWith("P-")?{name:"ECDH",namedCurve:e}:{name:"X25519"},o=[];break}case"Ed25519":case"EdDSA":s={name:"Ed25519"},o=["verify"];break;default:throw new je('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(t,a,s,!0,o)};var Le=async e=>{if(!e.alg)throw new TypeError('"alg" argument is required when "jwk.alg" is not present');const{algorithm:t,keyUsages:i}=function(e){let t,i;switch(e.kty){case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:`SHA-${e.alg.slice(-3)}`},i=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${e.alg.slice(-3)}`},i=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:`SHA-${parseInt(e.alg.slice(-3),10)||1}`},i=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new je('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},i=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},i=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},i=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},i=e.d?["deriveBits"]:[];break;default:throw new je('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"OKP":switch(e.alg){case"Ed25519":case"EdDSA":t={name:"Ed25519"},i=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:e.crv},i=e.d?["deriveBits"]:[];break;default:throw new je('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;default:throw new je('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:i}}(e),n={...e};return delete n.alg,delete n.use,crypto.subtle.importKey("jwk",n,t,e.ext??!e.d,e.key_ops??i)};async function xe(e,t,i){if(0!==e.indexOf("-----BEGIN PUBLIC KEY-----"))throw new TypeError('"spki" must be SPKI formatted string');return((e,t)=>qe(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g,"spki",e,t))(e,t)}function Ke(e){return Be(e)&&"string"==typeof e.kty}let Ne;const Ue=async(e,t,i,n=!1)=>{Ne||=new WeakMap;let r=Ne.get(e);if(r?.[i])return r[i];const s=await Le({...t,alg:i});return n&&Object.freeze(e),r?r[i]=s:Ne.set(e,{[i]:s}),s};var Fe=async(e,t)=>{if(e instanceof Uint8Array)return e;if(Pe(e))return e;if(Xe(e)){if("secret"===e.type)return e.export();if("toCryptoKey"in e&&"function"==typeof e.toCryptoKey)try{return((e,t)=>{Ne||=new WeakMap;let i=Ne.get(e);if(i?.[t])return i[t];const n="public"===e.type,r=!!n;let s;if("x25519"===e.asymmetricKeyType){switch(t){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}s=e.toCryptoKey(e.asymmetricKeyType,r,n?[]:["deriveBits"])}if("ed25519"===e.asymmetricKeyType){if("EdDSA"!==t&&"Ed25519"!==t)throw new TypeError("given KeyObject instance cannot be used for this algorithm");s=e.toCryptoKey(e.asymmetricKeyType,r,[n?"verify":"sign"])}if("rsa"===e.asymmetricKeyType){let i;switch(t){case"RSA-OAEP":i="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":i="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":i="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":i="SHA-512";break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}if(t.startsWith("RSA-OAEP"))return e.toCryptoKey({name:"RSA-OAEP",hash:i},r,n?["encrypt"]:["decrypt"]);s=e.toCryptoKey({name:t.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:i},r,[n?"verify":"sign"])}if("ec"===e.asymmetricKeyType){const i=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(e.asymmetricKeyDetails?.namedCurve);if(!i)throw new TypeError("given KeyObject instance cannot be used for this algorithm");"ES256"===t&&"P-256"===i&&(s=e.toCryptoKey({name:"ECDSA",namedCurve:i},r,[n?"verify":"sign"])),"ES384"===t&&"P-384"===i&&(s=e.toCryptoKey({name:"ECDSA",namedCurve:i},r,[n?"verify":"sign"])),"ES512"===t&&"P-521"===i&&(s=e.toCryptoKey({name:"ECDSA",namedCurve:i},r,[n?"verify":"sign"])),t.startsWith("ECDH-ES")&&(s=e.toCryptoKey({name:"ECDH",namedCurve:i},r,n?[]:["deriveBits"]))}if(!s)throw new TypeError("given KeyObject instance cannot be used for this algorithm");return i?i[t]=s:Ne.set(e,{[t]:s}),s})(e,t)}catch(e){if(e instanceof TypeError)throw e}let i=e.export({format:"jwk"});return Ue(e,i,t)}if(Ke(e))return e.k?Ae(e.k):Ue(e,e,t,!0);throw new Error("unreachable")};const ze=e=>e?.[Symbol.toStringTag],He=(e,t,i)=>{if(void 0!==t.use){let e;switch(i){case"sign":case"verify":e="sig";break;case"encrypt":case"decrypt":e="enc"}if(t.use!==e)throw new TypeError(`Invalid key for this operation, its "use" must be "${e}" when present`)}if(void 0!==t.alg&&t.alg!==e)throw new TypeError(`Invalid key for this operation, its "alg" must be "${e}" when present`);if(Array.isArray(t.key_ops)){let n;switch(!0){case"verify"===i:case"dir"===e:case e.includes("CBC-HS"):n=i;break;case e.startsWith("PBES2"):n="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(e):n=!e.includes("GCM")&&e.endsWith("KW")?"unwrapKey":i;break;case"encrypt"===i:n="wrapKey";break;case"decrypt"===i:n=e.startsWith("RSA")?"unwrapKey":"deriveBits"}if(n&&!1===t.key_ops?.includes?.(n))throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${n}" when present`)}return!0};var Qe=(e,t,i)=>{e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A(?:128|192|256)(?:GCM)?(?:KW)?$/.test(e)||/^A(?:128|192|256)CBC-HS(?:256|384|512)$/.test(e)?((e,t,i)=>{if(!(t instanceof Uint8Array)){if(Ke(t)){if(function(e){return"oct"===e.kty&&"string"==typeof e.k}(t)&&He(e,t,i))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!De(t))throw new TypeError(Me(e,t,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if("secret"!==t.type)throw new TypeError(`${ze(t)} instances for symmetric algorithms must be of type "secret"`)}})(e,t,i):((e,t,i)=>{if(Ke(t))switch(i){case"decrypt":case"sign":if(function(e){return"oct"!==e.kty&&"string"==typeof e.d}(t)&&He(e,t,i))return;throw new TypeError("JSON Web Key for this operation be a private JWK");case"encrypt":case"verify":if(function(e){return"oct"!==e.kty&&void 0===e.d}(t)&&He(e,t,i))return;throw new TypeError("JSON Web Key for this operation be a public JWK")}if(!De(t))throw new TypeError(Me(e,t,"CryptoKey","KeyObject","JSON Web Key"));if("secret"===t.type)throw new TypeError(`${ze(t)} instances for asymmetric algorithms must not be of type "secret"`);if("public"===t.type)switch(i){case"sign":throw new TypeError(`${ze(t)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw new TypeError(`${ze(t)} instances for asymmetric algorithm decryption must be of type "private"`)}if("private"===t.type)switch(i){case"verify":throw new TypeError(`${ze(t)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw new TypeError(`${ze(t)} instances for asymmetric algorithm encryption must be of type "public"`)}})(e,t,i)},$e=async(e,t,i)=>{if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(((e,...t)=>Re("Key must be ",e,...t))(t,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",t,{hash:`SHA-${e.slice(-3)}`,name:"HMAC"},!1,[i])}return Ve(t,e,i),t},_e=async(e,t,i,n)=>{const r=await $e(e,t,"verify");((e,t)=>{if(e.startsWith("RS")||e.startsWith("PS")){const{modulusLength:i}=t.algorithm;if("number"!=typeof i||i<2048)throw new TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}})(e,r);const s=((e,t)=>{const i=`SHA-${e.slice(-3)}`;switch(e){case"HS256":case"HS384":case"HS512":return{hash:i,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:i,name:"RSA-PSS",saltLength:parseInt(e.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:i,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:i,name:"ECDSA",namedCurve:t.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};default:throw new je(`alg ${e} is not supported either by JOSE or your javascript runtime`)}})(e,r.algorithm);try{return await crypto.subtle.verify(s,r,i,n)}catch{return!1}};async function et(e,t,i){if(!Be(e))throw new Ce("Flattened JWS must be an object");if(void 0===e.protected&&void 0===e.header)throw new Ce('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==e.protected&&"string"!=typeof e.protected)throw new Ce("JWS Protected Header incorrect type");if(void 0===e.payload)throw new Ce("JWS Payload missing");if("string"!=typeof e.signature)throw new Ce("JWS Signature missing or incorrect type");if(void 0!==e.header&&!Be(e.header))throw new Ce("JWS Unprotected Header incorrect type");let n={};if(e.protected)try{const t=Ae(e.protected);n=JSON.parse(Oe.decode(t))}catch{throw new Ce("JWS Protected Header is invalid")}if(!((...e)=>{const t=e.filter(Boolean);if(0===t.length||1===t.length)return!0;let i;for(const e of t){const t=Object.keys(e);if(i&&0!==i.size)for(const e of t){if(i.has(e))return!1;i.add(e)}else i=new Set(t)}return!0})(n,e.header))throw new Ce("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");const r={...n,...e.header},s=((e,t,i,n,r)=>{if(void 0!==r.crit&&void 0===n?.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||void 0===n.crit)return new Set;if(!Array.isArray(n.crit)||0===n.crit.length||n.crit.some((e=>"string"!=typeof e||0===e.length)))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let s;s=void 0!==i?new Map([...Object.entries(i),...t.entries()]):t;for(const t of n.crit){if(!s.has(t))throw new je(`Extension Header Parameter "${t}" is not recognized`);if(void 0===r[t])throw new e(`Extension Header Parameter "${t}" is missing`);if(s.get(t)&&void 0===n[t])throw new e(`Extension Header Parameter "${t}" MUST be integrity protected`)}return new Set(n.crit)})(Ce,new Map([["b64",!0]]),i?.crit,n,r);let o=!0;if(s.has("b64")&&(o=n.b64,"boolean"!=typeof o))throw new Ce('The "b64" (base64url-encode payload) Header Parameter must be a boolean');const{alg:a}=r;if("string"!=typeof a||!a)throw new Ce('JWS "alg" (Algorithm) Header Parameter missing or invalid');const l=((e,t)=>{if(void 0!==t&&(!Array.isArray(t)||t.some((e=>"string"!=typeof e))))throw new TypeError(`"${e}" option must be an array of strings`);if(t)return new Set(t)})("algorithms",i.algorithms);if(l&&!l.has(a))throw new We('"alg" (Algorithm) Header Parameter value not allowed');if(o){if("string"!=typeof e.payload)throw new Ce("JWS Payload must be a string")}else if("string"!=typeof e.payload&&!(e.payload instanceof Uint8Array))throw new Ce("JWS Payload must be a string or an Uint8Array instance");let h=!1;"function"==typeof t&&(t=await t(n,e),h=!0),Qe(a,t,"verify");const c=function(...e){const t=e.reduce(((e,{length:t})=>e+t),0),i=new Uint8Array(t);let n=0;for(const t of e)i.set(t,n),n+=t.length;return i}(ke.encode(e.protected??""),ke.encode("."),"string"==typeof e.payload?ke.encode(e.payload):e.payload);let d;try{d=Ae(e.signature)}catch{throw new Ce("Failed to base64url decode the signature")}const u=await Fe(t,a);if(!await _e(a,u,d,c))throw new Je;let p;if(o)try{p=Ae(e.payload)}catch{throw new Ce("Failed to base64url decode the payload")}else p="string"==typeof e.payload?ke.encode(e.payload):e.payload;const m={payload:p};return void 0!==e.protected&&(m.protectedHeader=n),void 0!==e.header&&(m.unprotectedHeader=e.header),h?{...m,key:u}:m}const tt=86400,it=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;var nt=e=>{const t=it.exec(e);if(!t||t[4]&&t[1])throw new TypeError("Invalid time period format");const i=parseFloat(t[2]);let n;switch(t[3].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":n=Math.round(i);break;case"minute":case"minutes":case"min":case"mins":case"m":n=Math.round(60*i);break;case"hour":case"hours":case"hr":case"hrs":case"h":n=Math.round(3600*i);break;case"day":case"days":case"d":n=Math.round(i*tt);break;case"week":case"weeks":case"w":n=Math.round(604800*i);break;default:n=Math.round(31557600*i)}return"-"===t[1]||"ago"===t[4]?-n:n};const rt=e=>e.toLowerCase().replace(/^application\//,"");function st(e,t,i={}){let n;try{n=JSON.parse(Oe.decode(t))}catch{}if(!Be(n))throw new ve("JWT Claims Set must be a top-level JSON object");const{typ:r}=i;if(r&&("string"!=typeof e.typ||rt(e.typ)!==rt(r)))throw new Ze('unexpected "typ" JWT header value',n,"typ","check_failed");const{requiredClaims:s=[],issuer:o,subject:a,audience:l,maxTokenAge:h}=i,c=[...s];void 0!==h&&c.push("iat"),void 0!==l&&c.push("aud"),void 0!==a&&c.push("sub"),void 0!==o&&c.push("iss");for(const e of new Set(c.reverse()))if(!(e in n))throw new Ze(`missing required "${e}" claim`,n,e,"missing");if(o&&!(Array.isArray(o)?o:[o]).includes(n.iss))throw new Ze('unexpected "iss" claim value',n,"iss","check_failed");if(a&&n.sub!==a)throw new Ze('unexpected "sub" claim value',n,"sub","check_failed");if(l&&(d=n.aud,u="string"==typeof l?[l]:l,!("string"==typeof d?u.includes(d):Array.isArray(d)&&u.some(Set.prototype.has.bind(new Set(d))))))throw new Ze('unexpected "aud" claim value',n,"aud","check_failed");var d,u;let p;switch(typeof i.clockTolerance){case"string":p=nt(i.clockTolerance);break;case"number":p=i.clockTolerance;break;case"undefined":p=0;break;default:throw new TypeError("Invalid clockTolerance option type")}const{currentDate:m}=i,g=(f=m||new Date,Math.floor(f.getTime()/1e3));var f;if((void 0!==n.iat||h)&&"number"!=typeof n.iat)throw new Ze('"iat" claim must be a number',n,"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new Ze('"nbf" claim must be a number',n,"nbf","invalid");if(n.nbf>g+p)throw new Ze('"nbf" claim timestamp check failed',n,"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new Ze('"exp" claim must be a number',n,"exp","invalid");if(n.exp<=g-p)throw new Ie('"exp" claim timestamp check failed',n,"exp","check_failed")}if(h){const e=g-n.iat;if(e-p>("number"==typeof h?h:nt(h)))throw new Ie('"iat" claim timestamp check failed (too far in the past)',n,"iat","check_failed");if(e<0-p)throw new Ze('"iat" claim timestamp check failed (it should be in the past)',n,"iat","check_failed")}return n}async function ot(e,t,i){const n=await async function(e,t,i){if(e instanceof Uint8Array&&(e=Oe.decode(e)),"string"!=typeof e)throw new Ce("Compact JWS must be a string or Uint8Array");const{0:n,1:r,2:s,length:o}=e.split(".");if(3!==o)throw new Ce("Invalid Compact JWS");const a=await et({payload:r,protected:n,signature:s},t,i),l={payload:a.payload,protectedHeader:a.protectedHeader};return"function"==typeof t?{...l,key:a.key}:l}(e,t,i);if(n.protectedHeader.crit?.includes("b64")&&!1===n.protectedHeader.b64)throw new ve("JWTs MUST NOT use unencoded payload");const r={payload:st(n.protectedHeader,n.payload,i),protectedHeader:n.protectedHeader};return"function"==typeof t?{...r,key:n.key}:r}const at="QRCodeJsLicense",lt=w(["ol","ac","hl","so","t"].reverse().join("")),ht=w(["ol","ac","it","no"].reverse().join("")),ct=w(["oh","ts","an","em"].reverse().join(""));class dt{constructor(){this._hls=!1,this._decodedToken=null,this._licenseKey=null,this._isInitialized=!1,this._initPromise=null,this._licenseFetcher=async e=>{const t=dt._defaultLicenseApiUrl;try{const i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({licenseKey:e})});if(!i.ok){let e={};try{e=await i.json()}catch(e){}throw new Error(`Failed to fetch token: ${i.status} ${e?.error||i.statusText}`)}const n=await i.text();if(!n)throw new Error("Fetched token is empty.");return n}catch(e){throw console.error(`LicenseManager: Default fetcher failed: ${e.message}`),new Error(`License fetcher failed: ${e.message}`)}}}static get instance(){return dt._instance||(dt._instance=new dt),dt._instance}static setDefaultLicenseApiUrl(e){"string"==typeof e&&e?dt._defaultLicenseApiUrl=e:console.warn("LicenseManager: Invalid URL provided to setDefaultLicenseApiUrl.")}get hls(){return this._hls}get isInitialized(){return this._isInitialized}getLicenseDetails(){return this._hls?this._decodedToken:null}get licenseKey(){return this._licenseKey}configureLicenseFetcher(e){if("function"!=typeof e)throw new Error("License fetcher must be a function that accepts a license key string and returns a Promise<string>.");this._licenseFetcher=e,this.resetInitialization(),this.resetLicenseState()}async initialize(){return this._isInitialized&&this._initPromise||this._initPromise||(this._initPromise=this._performInitialization()),this._initPromise}async _performInitialization(){if(this._hls)return this._isInitialized=!0,!0;this.resetLicenseState();const e=this._getStoredLicenseData(),t=e.token||null,i=e.key||null;if(this._licenseKey=i,!t)return this._isInitialized=!0,!1;const n=await this._validateAndStoreToken(t,i);if(n.isValid)return this._hls=!0,this._decodedToken=n.license,this._isInitialized=!0,!0;if(n.reason||console.warn("LicenseManager: Stored license token failed validation during initialization (unknown reason)."),!i)return console.warn("LicenseManager: Cannot refresh token: No license key found in storage."),this._isInitialized=!0,!1;console.warn("LicenseManager: Attempting to refresh token using stored license key...");try{const e=await this.activateWithKey(i);return this._isInitialized=!0,e.isValid}catch(e){return console.error(`LicenseManager: Auto-refresh attempt failed unexpectedly: ${e.message}`),this._licenseKey=i,this._isInitialized=!0,!1}}resetInitialization(){this._isInitialized=!1,this._initPromise=null}resetLicenseState(){this._hls=!1,this._decodedToken=null,this._licenseKey=null}async activateWithToken(e){let t;return this.resetInitialization(),null===e?(t=await this._validateAndStoreToken(null,this._licenseKey),this._hls=!1,this._decodedToken=null):"string"==typeof e&&e?(t=await this._validateAndStoreToken(e,null),this._hls=t.isValid,this._decodedToken=t.license,t.isValid?this._licenseKey=this._getStoredLicenseData().key||null:this._licenseKey=null):(console.warn("Invalid token string provided to activateWithToken()."),t=await this._validateAndStoreToken(null,null),t.reason="TOKEN_INVALID",this._hls=!1,this._decodedToken=null,this._licenseKey=null),this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),!t.isValid&&t.reason&&this._logValidationWarning(t.reason,{token:e,license:t.license}),t}async activateWithKey(e){this.resetInitialization();let t={isValid:!1,token:null,license:null};if(e&&"string"==typeof e){this._licenseKey=e;let i=null,n=null;const r=this._getStoredLicenseData();if(i=r.token||null,n=r.key||null,i&&n===e?(t=await this._validateAndStoreToken(i,e),t.isValid||(t.reason?this._logValidationWarning(t.reason,{licenseKey:e,license:t.license}):console.warn("LicenseManager: Cached token validation failed (unknown reason). Attempting to fetch a new token..."))):(t={isValid:!1,token:null,license:null},i&&n!==e&&console.warn("LicenseManager: Cached token belongs to a different license key. Fetching new token...")),!t.isValid)try{const i=await this._licenseFetcher(e);t=await this._validateAndStoreToken(i,e)}catch(i){let n="FETCH_FAILED";i?.message?.includes("Invalid license key")?n="KEY_INVALID":i?.message?.includes("License has expired")&&(n="TOKEN_EXPIRED"),await this._validateAndStoreToken(null,e),t={isValid:!1,token:null,license:null,reason:n}}this._hls=t.isValid,this._decodedToken=t.license}else console.warn("Invalid license key provided to activateWithKey()."),await this._validateAndStoreToken(null,null),t={isValid:!1,token:null,license:null,reason:"KEY_INVALID"},this._hls=!1,this._decodedToken=null,this._licenseKey=null;return this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),!t.isValid&&t.reason&&this._logValidationWarning(t.reason,{licenseKey:e,license:t.license}),t}_checkDomain(e){const t=window[ht],i=window[ht][ct];if(dt._currentHostname=i,!t||"string"!=typeof i||!i)return{domainValid:!0};const n=dt._currentHostname.toLowerCase();if(n===lt)return{domainValid:!0};const r=e.domains;if(!r||0===r.length)return{domainValid:!0};return r.map((e=>e.toLowerCase())).includes(n)?{domainValid:!0}:{domainValid:!1,reason:"DOMAIN_MISMATCH"}}_logValidationWarning(e,t){let i=`LicenseManager: Validation failed. Reason: ${e}`;try{switch(e){case"DOMAIN_MISMATCH":const e=dt._currentHostname??"N/A";i=`LicenseManager: Domain mismatch. License is restricted to [${t?.license?.domains?.join(", ")||"Not specified in token"}], but the current domain is "${e}".`;break;case"TOKEN_EXPIRED":i=`LicenseManager: License token expired on ${t?.license?.exp?new Date(1e3*t.license.exp).toISOString():"N/A"}.`;break;case"TOKEN_INVALID":i="LicenseManager: License token is invalid (e.g., signature mismatch, malformed).";break;case"FETCH_FAILED":i="LicenseManager: Failed to fetch license token from the server. Check network or API endpoint.",t?.licenseKey&&(i+=`(Key: ${t.licenseKey})`);break;case"KEY_INVALID":i="LicenseManager: The provided license key appears invalid or could not be found by the server.",t?.licenseKey&&(i+=`(Key: ${t.licenseKey})`)}}catch(e){console.error("LicenseManager: Error generating validation warning message:",e)}console.warn(i)}_getStoredLicenseData(){if("undefined"==typeof localStorage)return{};try{const e=localStorage.getItem(at);return e?JSON.parse(e):{}}catch(e){return console.warn("LicenseManager: Failed to parse license data from localStorage.",e),localStorage.removeItem(at),{}}}_setStoredLicenseData(e){if("undefined"!=typeof localStorage)try{const t={};void 0!==e.token&&(t.token=e.token),void 0!==e.key&&(t.key=e.key),Object.keys(t).length>0?localStorage.setItem(at,JSON.stringify(t)):localStorage.removeItem(at)}catch(e){console.warn("LicenseManager: Failed to store license data to localStorage.",e)}}async _validateAndStoreToken(e,t){const i=this._getStoredLicenseData(),n=t??i.key??void 0;if(!e)return this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:null};let r,s=null;try{s=await async function(e){try{const t=await xe("-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZCmxp1vq4LJLviS9d2u Y5V9IykLzCrNcj8fCenqEyir5b4+FGE3hvLqp9zT+IYRF2cV2K0aGe9G0COFZsX2 E5ye1DguyvPQgRMPO8y7bxXJ3da1IP7Gs+/3gy4iuzRV4Uhy73jUVpqE/zZ2JAv/ sY36Rxmq4h7YE/F6YQk3DeZvnHjS7spUlp/+d3W67G8v2jiYWy3pO08Sn0rF2cjg XrJA5jcNr7ksER7AQcwayaLT4rAV4+EOcDYXL2egnqoTEmRzQYD2ReHBsO6jB0Ud bmsNepxbBdq/fBr+5HNj2tUJItarfH3BUVRFu/L1xP8wOEQa8wmPRwrJdPsI3bdk 7QIDAQAB -----END PUBLIC KEY-----","RS256"),{payload:i}=await ot(e,t,{algorithms:["RS256"]});if(!i||"string"!=typeof i.sub)throw new Se("Decoded token payload structure is invalid.");return i}catch(e){throw e}}(e);try{const t=this._checkDomain(s);if(!t.domainValid)return r=t.reason,i.token===e&&this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:s,reason:r}}catch(t){return console.error("LicenseManager: Internal error during domain check.",t),r="TOKEN_INVALID",i.token===e&&this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:s,reason:r}}return this._setStoredLicenseData({token:e,key:n}),{isValid:!0,token:e,license:s}}catch(t){return t instanceof Ie?r="TOKEN_EXPIRED":(r="TOKEN_INVALID",console.error("LicenseManager: Token validation failed.",t)),i.token===e&&this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:s,reason:r}}}}var ut;dt._instance=null,dt._defaultLicenseApiUrl="/api/get-token",dt._currentHostname=null,function(e){e.svg="svg",e.png="png",e.jpeg="jpeg",e.webp="webp"}(ut||(ut={}));class pt extends we{constructor(e){super(e),dt.instance.isInitialized||dt.instance.hls?dt.instance.isInitialized&&!dt.instance.hls&&console.warn("QRCode.js: No valid license found. Some features may be limited."):console.warn("QRCode.js: License state not yet initialized. Call QRCodeJs.initializeIfNeeded() or activate a license.")}_hls(){return dt.instance.isInitialized?dt.instance.hls:(dt.instance.initialize().catch((e=>{console.error("QRCode.js: Background license initialization failed:",e)})),!1)}static async initializeIfNeeded(){return dt.instance.initialize()}static get hls(){return dt.instance.isInitialized?dt.instance.hls:(dt.instance.initialize().catch((e=>{console.error("QRCode.js: Background license initialization failed:",e)})),!1)}static getLicenseDetails(){return dt.instance.isInitialized?dt.instance.getLicenseDetails():(dt.instance.initialize().catch((e=>{console.error("QRCode.js: Background license initialization failed:",e)})),null)}static configureLicenseFetcher(e){dt.instance.configureLicenseFetcher(e)}static async token(e){return dt.instance.activateWithToken(e)}static setLicenseUrl(e){return dt.setDefaultLicenseApiUrl(e),this}static async license(e){return dt.instance.activateWithKey(e)}async validateScanning(e="zbar",t=!1){if(!this._hls())return console.warn("QRCode.js: Scanning validation requires a valid license."),Promise.reject({isValid:!1,message:"Valid license required for scanning validation."});try{const{default:e}=await import("./chunks/zbar-scan-validator-B3GQk_mt.js").then((function(e){return e.z})),i=await this.serialize(),n=this.size;if(!n)throw new Error("QR code dimensions not available for validation. Ensure the QR code has been generated.");const{width:r,height:s}=n,o=await(new e).validate(i,(async()=>this.serialize(!0)),r,s,t);if(o.isValid)return o;{console.debug("Zbar validation failed, trying Zxing...");const{default:e}=await import("./chunks/zxing-scan-validator-CYcyNnMt.js");return(new e).validate(i,(async()=>this.serialize(!0)),t)}}catch(e){const t=e instanceof Error?e.message:"Unknown validation error";return console.error(`Validation failed: ${t}`,e),Promise.reject({isValid:!1,message:t})}}static useTemplate(e){return new gt(e)}}class mt extends pt{_hls(){return!0}constructor(e){super(e)}}class gt{constructor(e){e&&ne[e]?this.config=k({},ne[e]):(this.config=k({},_),e&&console.warn(`QR Code template "${e}" not found. Using default basic template.`))}options(e){this.config=k(this.config,e);const t=U(this.config);return new pt(t)}}"undefined"!=typeof window&&(window.QRCodeJs=pt);export{q as CornerDotType,L as CornerSquareType,G as DotType,g as ErrorCorrectionLevel,ut as FileExtension,B as GradientType,K as ImageMode,f as Mode,pt as QRCodeJs,at as STORAGE_KEY,x as ShapeType,m as TypeNumber,mt as _};
1
+ const e={width:300,height:300,margin:0};class t{constructor(){this.buffer=[],this.length=0}getBuffer(){return this.buffer}getLengthInBits(){return this.length}toString(){let e="";for(let t=0;t<this.getLengthInBits();t+=1)e+=this.getBit(t)?"1":"0";return e}getBit(e){return 1==(this.buffer[~~(e/8)]>>>7-e%8&1)}put(e,t){for(let i=0;i<t;i+=1)this.putBit(1==(e>>>t-i-1&1))}putBit(e){this.length==8*this.buffer.length&&this.buffer.push(0),e&&(this.buffer[~~(this.length/8)]|=128>>>this.length%8),this.length+=1}}var i,n,r;!function(e){e[e.L=1]="L",e[e.M=0]="M",e[e.Q=3]="Q",e[e.H=2]="H"}(i||(i={}));class s{constructor(){throw new Error("error")}static glog(e){if(e<1)throw new Error("log("+e+")");return s.LOG_TABLE[e]}static gexp(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return s.EXP_TABLE[e]}}s.initialize=(()=>{s.EXP_TABLE=[],s.LOG_TABLE=[];for(let e=0;e<256;e+=1)s.EXP_TABLE.push(e<8?1<<e:s.EXP_TABLE[e-4]^s.EXP_TABLE[e-5]^s.EXP_TABLE[e-6]^s.EXP_TABLE[e-8]),s.LOG_TABLE.push(0);for(let e=0;e<255;e+=1)s.LOG_TABLE[s.EXP_TABLE[e]]=e})();class o{constructor(e,t=0){let i=0;for(;i<e.length&&0==e[i];)i+=1;this.num=[];const n=e.length-i;for(let t=0;t<n;t+=1)this.num.push(e[i+t]);for(let e=0;e<t;e+=1)this.num.push(0)}getAt(e){return this.num[e]}getLength(){return this.num.length}toString(){let e="";for(let t=0;t<this.getLength();t+=1)t>0&&(e+=","),e+=this.getAt(t);return e.toString()}toLogString(){let e="";for(let t=0;t<this.getLength();t+=1)t>0&&(e+=","),e+=s.glog(this.getAt(t));return e.toString()}multiply(e){const t=[],i=this.getLength()+e.getLength()-1;for(let e=0;e<i;e+=1)t.push(0);for(let i=0;i<this.getLength();i+=1)for(let n=0;n<e.getLength();n+=1)t[i+n]^=s.gexp(s.glog(this.getAt(i))+s.glog(e.getAt(n)));return new o(t)}mod(e){if(this.getLength()-e.getLength()<0)return this;const t=s.glog(this.getAt(0))-s.glog(e.getAt(0)),i=[];for(let e=0;e<this.getLength();e+=1)i.push(this.getAt(e));for(let n=0;n<e.getLength();n+=1)i[n]^=s.gexp(s.glog(e.getAt(n))+t);return new o(i).mod(e)}}!function(e){e[e.MODE_NUMBER=1]="MODE_NUMBER",e[e.MODE_ALPHA_NUM=2]="MODE_ALPHA_NUM",e[e.MODE_8BIT_BYTE=4]="MODE_8BIT_BYTE",e[e.MODE_KANJI=8]="MODE_KANJI"}(n||(n={}));class a{constructor(e,t){this.mode=e,this.data=t}getMode(){return this.mode}getData(){return this.data}getLengthInBits(e){if(1<=e&&e<10)switch(this.mode){case n.MODE_NUMBER:return 10;case n.MODE_ALPHA_NUM:return 9;case n.MODE_8BIT_BYTE:case n.MODE_KANJI:return 8;default:throw new Error("mode:"+this.mode)}else if(e<27)switch(this.mode){case n.MODE_NUMBER:return 12;case n.MODE_ALPHA_NUM:return 11;case n.MODE_8BIT_BYTE:return 16;case n.MODE_KANJI:return 10;default:throw new Error("mode:"+this.mode)}else{if(!(e<41))throw new Error("typeNumber:"+e);switch(this.mode){case n.MODE_NUMBER:return 14;case n.MODE_ALPHA_NUM:return 13;case n.MODE_8BIT_BYTE:return 16;case n.MODE_KANJI:return 12;default:throw new Error("mode:"+this.mode)}}}}class l extends a{constructor(e,t){super(n.MODE_8BIT_BYTE,e),this.stringToBytes=t}write(e){this.stringToBytes(this.getData()).forEach((t=>e.put(t,8)))}getLength(){return this.stringToBytes(this.getData()).length}}class h extends a{constructor(e){super(n.MODE_ALPHA_NUM,e)}write(e){const t=this.getData();let i=0;for(;i+1<t.length;)e.put(45*h.getCode(t.charAt(i))+h.getCode(t.charAt(i+1)),11),i+=2;i<t.length&&e.put(h.getCode(t.charAt(i)),6)}getLength(){return this.getData().length}static getCode(e){if("0"<=e&&e<="9")return e.charCodeAt(0)-"0".charCodeAt(0);if("A"<=e&&e<="Z")return e.charCodeAt(0)-"A".charCodeAt(0)+10;switch(e){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw new Error("illegal char :"+e)}}}class c extends a{constructor(e,t){super(n.MODE_KANJI,e),this.stringToBytes=t}write(e){const t=this.stringToBytes(this.getData());let i=0;for(;i+1<t.length;){let n=(255&t[i])<<8|255&t[i+1];if(33088<=n&&n<=40956)n-=33088;else{if(!(57408<=n&&n<=60351))throw new Error("illegal char at "+(i+1)+"/"+n);n-=49472}n=192*(n>>>8&255)+(255&n),e.put(n,13),i+=2}if(i<t.length)throw new Error("illegal char at "+(i+1))}getLength(){return this.stringToBytes(this.getData()).length/2}}class d extends a{constructor(e){super(n.MODE_NUMBER,e)}write(e){const t=this.getData();let i=0;for(;i+2<t.length;)e.put(d.strToNum(t.substring(i,i+3)),10),i+=3;i<t.length&&(t.length-i==1?e.put(d.strToNum(t.substring(i,i+1)),4):t.length-i==2&&e.put(d.strToNum(t.substring(i,i+2)),7))}getLength(){return this.getData().length}static strToNum(e){let t=0;for(let i=0;i<e.length;i+=1)t=10*t+d.chatToNum(e.charAt(i));return t}static chatToNum(e){if("0"<=e&&e<="9")return e.charCodeAt(0)-"0".charCodeAt(0);throw new Error("illegal char :"+e)}}!function(e){e[e.PATTERN000=0]="PATTERN000",e[e.PATTERN001=1]="PATTERN001",e[e.PATTERN010=2]="PATTERN010",e[e.PATTERN011=3]="PATTERN011",e[e.PATTERN100=4]="PATTERN100",e[e.PATTERN101=5]="PATTERN101",e[e.PATTERN110=6]="PATTERN110",e[e.PATTERN111=7]="PATTERN111"}(r||(r={}));class u{constructor(){throw new Error("error")}static getPatternPosition(e){return u.PATTERN_POSITION_TABLE[e-1]}static getMaxLength(e,t,r){const s=e-1;let o=0,a=0;switch(r){case i.L:o=0;break;case i.M:o=1;break;case i.Q:o=2;break;case i.H:o=3;break;default:throw new Error("e:"+r)}switch(t){case n.MODE_NUMBER:a=0;break;case n.MODE_ALPHA_NUM:a=1;break;case n.MODE_8BIT_BYTE:a=2;break;case n.MODE_KANJI:a=3;break;default:throw new Error("m:"+t)}return u.MAX_LENGTH[s][o][a]}static getErrorCorrectPolynomial(e){let t=new o([1]);for(let i=0;i<e;i+=1)t=t.multiply(new o([1,s.gexp(i)]));return t}static getMaskFunc(e){switch(e){case r.PATTERN000:return(e,t)=>(e+t)%2==0;case r.PATTERN001:return(e,t)=>e%2==0;case r.PATTERN010:return(e,t)=>t%3==0;case r.PATTERN011:return(e,t)=>(e+t)%3==0;case r.PATTERN100:return(e,t)=>(~~(e/2)+~~(t/3))%2==0;case r.PATTERN101:return(e,t)=>e*t%2+e*t%3==0;case r.PATTERN110:return(e,t)=>(e*t%2+e*t%3)%2==0;case r.PATTERN111:return(e,t)=>(e*t%3+(e+t)%2)%2==0;default:throw new Error("mask:"+e)}}static getLostPoint(e){const t=e.getModuleCount();let i=0;for(let n=0;n<t;n+=1)for(let r=0;r<t;r+=1){let s=0;const o=e.isDark(n,r);for(let i=-1;i<=1;i+=1)if(!(n+i<0||t<=n+i))for(let a=-1;a<=1;a+=1)r+a<0||t<=r+a||0==i&&0==a||o==e.isDark(n+i,r+a)&&(s+=1);s>5&&(i+=3+s-5)}for(let n=0;n<t-1;n+=1)for(let r=0;r<t-1;r+=1){let t=0;e.isDark(n,r)&&(t+=1),e.isDark(n+1,r)&&(t+=1),e.isDark(n,r+1)&&(t+=1),e.isDark(n+1,r+1)&&(t+=1),0!=t&&4!=t||(i+=3)}for(let n=0;n<t;n+=1)for(let r=0;r<t-6;r+=1)e.isDark(n,r)&&!e.isDark(n,r+1)&&e.isDark(n,r+2)&&e.isDark(n,r+3)&&e.isDark(n,r+4)&&!e.isDark(n,r+5)&&e.isDark(n,r+6)&&(i+=40);for(let n=0;n<t;n+=1)for(let r=0;r<t-6;r+=1)e.isDark(r,n)&&!e.isDark(r+1,n)&&e.isDark(r+2,n)&&e.isDark(r+3,n)&&e.isDark(r+4,n)&&!e.isDark(r+5,n)&&e.isDark(r+6,n)&&(i+=40);let n=0;for(let i=0;i<t;i+=1)for(let r=0;r<t;r+=1)e.isDark(r,i)&&(n+=1);return i+=10*(Math.abs(100*n/t/t-50)/5),i}static getBCHTypeInfo(e){let t=e<<10;for(;u.getBCHDigit(t)-u.getBCHDigit(u.G15)>=0;)t^=u.G15<<u.getBCHDigit(t)-u.getBCHDigit(u.G15);return(e<<10|t)^u.G15_MASK}static getBCHTypeNumber(e){let t=e<<12;for(;u.getBCHDigit(t)-u.getBCHDigit(u.G18)>=0;)t^=u.G18<<u.getBCHDigit(t)-u.getBCHDigit(u.G18);return e<<12|t}static getBCHDigit(e){let t=0;for(;0!=e;)t+=1,e>>>=1;return t}}u.PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],u.MAX_LENGTH=[[[41,25,17,10],[34,20,14,8],[27,16,11,7],[17,10,7,4]],[[77,47,32,20],[63,38,26,16],[48,29,20,12],[34,20,14,8]],[[127,77,53,32],[101,61,42,26],[77,47,32,20],[58,35,24,15]],[[187,114,78,48],[149,90,62,38],[111,67,46,28],[82,50,34,21]],[[255,154,106,65],[202,122,84,52],[144,87,60,37],[106,64,44,27]],[[322,195,134,82],[255,154,106,65],[178,108,74,45],[139,84,58,36]],[[370,224,154,95],[293,178,122,75],[207,125,86,53],[154,93,64,39]],[[461,279,192,118],[365,221,152,93],[259,157,108,66],[202,122,84,52]],[[552,335,230,141],[432,262,180,111],[312,189,130,80],[235,143,98,60]],[[652,395,271,167],[513,311,213,131],[364,221,151,93],[288,174,119,74]]],u.G15=1335,u.G18=7973,u.G15_MASK=21522;class p{constructor(e,t){this.totalCount=e,this.dataCount=t}getDataCount(){return this.dataCount}getTotalCount(){return this.totalCount}static getRSBlocks(e,t){const i=p.getRsBlockTable(e,t),n=i.length/3,r=[];for(let e=0;e<n;e+=1){const t=i[3*e+0],n=i[3*e+1],s=i[3*e+2];for(let e=0;e<t;e+=1)r.push(new p(n,s))}return r}static getRsBlockTable(e,t){switch(t){case i.L:return p.RS_BLOCK_TABLE[4*(e-1)+0];case i.M:return p.RS_BLOCK_TABLE[4*(e-1)+1];case i.Q:return p.RS_BLOCK_TABLE[4*(e-1)+2];case i.H:return p.RS_BLOCK_TABLE[4*(e-1)+3]}throw new Error("tn:"+e+"/ecl:"+t)}}p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];const m=Array(41).fill(0).map(((e,t)=>t));var g,f;!function(e){e.L="L",e.M="M",e.Q="Q",e.H="H"}(g||(g={})),function(e){e.numeric="numeric",e.alphanumeric="alphanumeric",e.byte="byte",e.kanji="kanji",e.unicode="unicode"}(f||(f={}));class b{constructor(e=0,t=g.L){this.modules=[],this.moduleCount=0,this.typeNumber=e,this.errorCorrectLevel=i[t],this.qrDataList=[]}getTypeNumber(){return this.typeNumber}setTypeNumber(e){this.typeNumber=e}getErrorCorrectLevel(){return this.errorCorrectLevel}setErrorCorrectLevel(e){this.errorCorrectLevel=e}clearData(){this.qrDataList=[]}addData(e,t=f.byte){if(e instanceof a)this.qrDataList.push(e);else{if("string"!=typeof e)throw new Error(typeof e);switch(t){case f.numeric:this.qrDataList.push(new d(e));break;case f.alphanumeric:this.qrDataList.push(new h(e));break;case f.byte:this.qrDataList.push(new l(e,b.stringToBytesFuncs.default));break;case f.unicode:this.qrDataList.push(new l(e,b.stringToBytesFuncs.UTF8));break;case f.kanji:this.qrDataList.push(new c(e,b.stringToBytesFuncs.SJIS));break;default:throw new Error("mode:"+t)}}}isDark(e,t){return!(!this.modules[e]||null==this.modules[e][t])&&this.modules[e][t]}getModuleCount(){return this.moduleCount}make(){if(this.typeNumber<1){let e=1;for(;e<40;e++){const i=p.getRSBlocks(e,this.errorCorrectLevel),n=new t;this.qrDataList.forEach((t=>{n.put(t.getMode(),4),n.put(t.getLength(),t.getLengthInBits(e)),t.write(n)}));const r=i.reduce(((e,t)=>e+t.getDataCount()),0);if(n.getLengthInBits()<=8*r)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())}getBestMaskPattern(){let e=0,t=0;for(let i=0;i<8;i+=1){this.makeImpl(!0,i);const n=u.getLostPoint(this);(0==i||e>n)&&(e=n,t=i)}return t}makeImpl(e,t){this.moduleCount=4*this.typeNumber+17,this.modules=[];for(let e=0;e<this.moduleCount;e+=1){this.modules.push([]);for(let t=0;t<this.moduleCount;t+=1)this.modules[e].push(null)}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e);const i=b.createData(this.typeNumber,this.errorCorrectLevel,this.qrDataList);this.mapData(i,t)}mapData(e,t){let i=-1,n=this.moduleCount-1,r=7,s=0;const o=u.getMaskFunc(t);for(let t=this.moduleCount-1;t>0;t-=2)for(6==t&&(t-=1);;){for(let i=0;i<2;i+=1)if(null==this.modules[n][t-i]){let a=!1;s<e.length&&(a=1==(e[s]>>>r&1));o(n,t-i)&&(a=!a),this.modules[n][t-i]=a,r-=1,-1==r&&(s+=1,r=7)}if(n+=i,n<0||this.moduleCount<=n){n-=i,i=-i;break}}}setupPositionAdjustPattern(){const e=u.getPatternPosition(this.typeNumber);e.forEach((t=>{e.forEach((e=>{if(null==this.modules[t][e])for(let i=-2;i<=2;i+=1)for(let n=-2;n<=2;n+=1)this.modules[t+i][e+n]=-2==i||2==i||-2==n||2==n||0==i&&0==n}))}))}setupPositionProbePattern(e,t){for(let i=-1;i<=7;i+=1)for(let n=-1;n<=7;n+=1)e+i<=-1||this.moduleCount<=e+i||t+n<=-1||this.moduleCount<=t+n||(this.modules[e+i][t+n]=0<=i&&i<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==i||6==i)||2<=i&&i<=4&&2<=n&&n<=4)}setupTimingPattern(){for(let e=8;e<this.moduleCount-8;e+=1)null==this.modules[e][6]&&(this.modules[e][6]=e%2==0);for(let e=8;e<this.moduleCount-8;e+=1)null==this.modules[6][e]&&(this.modules[6][e]=e%2==0)}setupTypeNumber(e){const t=u.getBCHTypeNumber(this.typeNumber);for(let i=0;i<18;i+=1)this.modules[~~(i/3)][i%3+this.moduleCount-8-3]=!e&&1==(t>>i&1);for(let i=0;i<18;i+=1)this.modules[i%3+this.moduleCount-8-3][~~(i/3)]=!e&&1==(t>>i&1)}setupTypeInfo(e,t){const i=this.errorCorrectLevel<<3|t,n=u.getBCHTypeInfo(i);for(let t=0;t<15;t+=1){const i=!e&&1==(n>>t&1);t<6?this.modules[t][8]=i:t<8?this.modules[t+1][8]=i:this.modules[this.moduleCount-15+t][8]=i}for(let t=0;t<15;t+=1){const i=!e&&1==(n>>t&1);t<8?this.modules[8][this.moduleCount-t-1]=i:t<9?this.modules[8][15-t-1+1]=i:this.modules[8][15-t-1]=i}this.modules[this.moduleCount-8][8]=!e}static createData(e,i,n){const r=p.getRSBlocks(e,i),s=new t;n.forEach((t=>{s.put(t.getMode(),4),s.put(t.getLength(),t.getLengthInBits(e)),t.write(s)}));const o=r.reduce(((e,t)=>e+t.getDataCount()),0);if(s.getLengthInBits()>8*o)throw new Error("code length overflow. ("+s.getLengthInBits()+">"+8*o+")");for(s.getLengthInBits()+4<=8*o&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(!1);for(;!(s.getLengthInBits()>=8*o||(s.put(b.PAD0,8),s.getLengthInBits()>=8*o));)s.put(b.PAD1,8);return b.createBytes(s,r)}static createBytes(e,t){let i=0,n=0,r=0;const s=new Array(t.length).map((e=>[])),a=new Array(t.length).map((e=>[]));function l(e){const t=[];for(let i=0;i<e;i+=1)t.push(0);return t}for(let h=0;h<t.length;h+=1){const c=t[h].getDataCount(),d=t[h].getTotalCount()-c;n=Math.max(n,c),r=Math.max(r,d),s[h]=l(c);for(let t=0;t<s[h].length;t+=1)s[h][t]=255&e.getBuffer()[t+i];i+=c;const p=u.getErrorCorrectPolynomial(d),m=new o(s[h],p.getLength()-1).mod(p);a[h]=l(p.getLength()-1);for(let e=0;e<a[h].length;e+=1){const t=e+m.getLength()-a[h].length;a[h][e]=t>=0?m.getAt(t):0}}const h=l(t.reduce(((e,t)=>e+t.getTotalCount()),0));let c=0;for(let e=0;e<n;e+=1)for(let i=0;i<t.length;i+=1)e<s[i].length&&(h[c]=s[i][e],c+=1);for(let e=0;e<r;e+=1)for(let i=0;i<t.length;i+=1)e<a[i].length&&(h[c]=a[i][e],c+=1);return h}}b.stringToBytesFuncs={default(e){const t=[];for(let i=0;i<e.length;i+=1){const n=e.charCodeAt(i);t.push(255&n)}return t}},b.PAD0=236,b.PAD1=17;const y=e=>!!e&&"object"==typeof e&&!Array.isArray(e);function w(e,t=!1){const i=e.split("").reverse().join("");return t?i.toLocaleUpperCase():i}function k(e,...t){if(!t.length)return e;const i=t.shift();return void 0!==i&&y(e)&&y(i)?(e={...e},Object.keys(i).forEach((t=>{const n=e[t],r=i[t];Array.isArray(n)&&Array.isArray(r)?e[t]=r:y(n)&&y(r)?e[t]=k({...n},r):e[t]=r})),k(e,...t)):e}const O=w("rq",!0)+w("-",!0)+w("talp",!0)+w("mrof",!0),A=w("a".repeat(6)+"#",!0),S="top",Z="bottom",I="left",W="right";const j=e=>"number"==typeof e?e:parseInt(e.replace("%",""),10),C=(e,t="0%")=>e?e.endsWith("%")?e:e+"%":t,v="text",J="image",E={disabled:!1,enableText:!0,type:"text",value:O},T=(e,t)=>!e?.decorations?.[t]?.disabled,Y=(e,t,i)=>!i||!e?.decorations?.[t]?.disabled,V=e=>{if("string"==typeof e)return e;if(!e)return"";const{fontFace:t="Helvetica",fontSize:i=20,fontColor:n="#000000",letterSpacing:r=0,fontWeight:s="normal"}=e;return`font-weight: ${s}; font-size: ${i}px; font-family: ${t}; fill: ${n}; letter-spacing: ${r}px;`};E.style={fontFace:"Helvetica",fontSize:20,fontColor:A,letterSpacing:2};const R={...E};const M=({document:e,position:t,rotate:i,flip:n,thickness:r,height:s,width:o,round:a,offset:l=0,curveAdjustment:h=0,curveRadius:c,outerBorderPadding:d=0,instanceId:u})=>{const p=Math.min(o,s),m=e.createElementNS("http://www.w3.org/2000/svg","path"),g=(e=>{if(e>=50)return 1;const t=[{R:0,P:0},{R:5,P:0},{R:10,P:.12},{R:15,P:.2},{R:20,P:.32},{R:25,P:.44},{R:30,P:.56},{R:35,P:.65},{R:40,P:.78},{R:45,P:.9},{R:50,P:1}],i=t.find((t=>e<=t.R))||t[0],n=t.find((t=>e>t.R))||t[t.length-1],{R:r,P:s}=i,{R:o,P:a}=n;return s+(e-r)/(o-r)*(a-s)})("string"==typeof a?j(a):a),f=void 0!==c?function(e){let t;return t="number"==typeof e?e:"string"==typeof e?(e.includes("%"),parseFloat(e)):0,t=Math.min(Math.max(t,0),50),.5+t/50*.5}(c):g,b=(p-r-2*d-10*h*2)/2*f,y=((e,t,i,n)=>{const r=i/2,s=n/2;let o="";return e&&(o+=`rotate(${e}, ${r}, ${s})`),t&&(o+=`translate(${r}, ${s}) scale(1, -1) translate(${-r}, ${-s})`),o.trim()})(i,n,o,s);m.setAttribute("id",`${t}-text-path-${u}`),m.setAttribute("transform",y);const{startX:w,startY:k,pathWidth:O}=((e,t,i,n,r={})=>{let s=t/2,o=t/2+n,a=e-t;return i&&(a-=2*i,s+=i,o+=i),s+=r.left||0,o+=r.top||0,{startX:s,startY:o,pathWidth:a}})(p,r,d,l);return m.setAttribute("d",((e,t,i,n)=>`M${e},${t+n} a${n},${n} 0 0 1 ${n},${-n} h${i-2*n} a${n},${n} 0 0 1 ${n},${n}`)(w,k,O,b)),m},P=({document:e,thickness:t,value:i,svg:n,position:r,height:s,width:o,round:a,style:l,offset:h=0,curveAdjustment:c=0,curveDisabled:d=!1,outerBorderPadding:u=0,curveRadius:p,instanceId:m,noBorderThickness:g,enabledBorders:f})=>{let b=0,y=!1;if(r===W?b=90:r===Z?y=!d:r===I&&(b=270),d){const a=e.createElementNS("http://www.w3.org/2000/svg","text");let c=o/2,d=(s-Math.min(o,s)+t)/2+2*u+h-(s-o>0?0:(o-s)/2);if(r===Z?d=s-2*u-t/2-h:r===S&&(d=2*u+t/2+h),r===S||r===Z){let e=0;!f[I]&&f[W]?e=-(t-g)/2:f[I]&&!f[W]&&(e=(t-g)/2),c+=e}else if(r===I||r===W){let e=0;!f[S]&&f[Z]?e=r===I?(t-g)/2:-(t-g)/2:f[S]&&!f[Z]&&(e=r===I?-(t-g)/2:(t-g)/2),c+=e}let p="";0!==b&&(p+=`rotate(${b}, ${o/2}, ${s/2})`),a.setAttribute("x",c.toString()),a.setAttribute("y",d.toString()),a.setAttribute("text-anchor","middle"),a.setAttribute("dominant-baseline","middle"),p&&a.setAttribute("transform",p.trim()),a.textContent=i;const m=V(l);a.setAttribute("style",m),n.appendChild(a)}else{let d=n.getElementsByTagName("defs")[0];d||(d=e.createElementNS("http://www.w3.org/2000/svg","defs"),n.appendChild(d));const w=M({document:e,position:r,rotate:b,flip:y,thickness:t,height:s,width:o,round:a,offset:h,curveAdjustment:c,enabledBorders:f,outerBorderPadding:u,curveRadius:p,noBorderThickness:g,instanceId:m}),{x:k,y:O}=function(e,t,i,n){let r=0,s=0;const o=(t-i)/2;return n.left&&n.right&&n.top&&n.bottom?(r=0,s=0):"top"===e||"bottom"===e?!n.left&&n.right?r=-o:(n.left&&!n.right||n.left&&n.right)&&(r=o):"left"!==e&&"right"!==e||(!n.top&&n.bottom?n.left&&n.right?(r="left"===e?2*+o:0,s=-o):r="left"===e?+o:-o:n.top&&!n.bottom?n.left&&n.right?(r="left"===e?0:2*o,s=-o):r=0:n.top&&n.bottom?s=n.left&&n.right?2*+o:+o:(r=n.left&&n.right?2*+o:+o,s=n.left&&n.right?2*-o:-o)),{x:r,y:s}}(r,t,g,f);if(0!==k||0!==O){const e=`${w.getAttribute("transform")||""} translate(${k}, ${O})`.trim();w.setAttribute("transform",e)}d.appendChild(w),n.appendChild((({document:e,value:t,position:i,style:n,instanceId:r})=>{const s=e.createElementNS("http://www.w3.org/2000/svg","text"),o=e.createElementNS("http://www.w3.org/2000/svg","textPath");o.setAttribute("href",`#${i}-text-path-${r}`),o.setAttribute("text-anchor","middle"),o.setAttribute("startOffset","50%"),o.textContent=t,o.setAttribute("alignment-baseline","middle");const a=V(n);return s.setAttribute("style",a),s.appendChild(o),s})({document:e,position:r,rotate:b,value:i,style:l,instanceId:m}))}},X=({document:e,thickness:t,value:i,svg:n,position:r,height:s,width:o,offset:a=0,style:l})=>{const h=e.createElementNS("http://www.w3.org/2000/svg","image"),c=Math.min(o,s);let d=(o-c+t)/2,u=(s-c+t)/2+a;r===S?d+=(c-t)/2:r===W?(d+=c-t,u+=(c-t)/2):r===Z?(d+=(c-t)/2,u+=c-t):r===I&&(u+=(c-t)/2),h.setAttribute("href",i||""),h.setAttribute("x",`${d}`),h.setAttribute("y",`${u}`),h.setAttribute("style",l?.toString()||""),n.appendChild(h)},D=e=>(t,i,n,r,s,o,a,l,h)=>{const{instanceId:c}=i,d=n,u=n,p=Math.min(d,u),m=C(e.radius),g=m&&j(m)>0?j(m)/100*p:0,f=C(e?.inner?.radius,g),b=Math.min(Math.max(e.inner?.scale??1,0),1.5),y=e.inner?.horizontalOffset??0,w=e.inner?.verticalOffset??0,k=e.thickness,O=e.color??"#000000",A=e.borderOuter?e.borderOuter.thickness/2:0,Z=e.borderInner?e.borderInner.thickness/2:0,E=i.document,V=s.left+s.right,M=s.top+s.bottom,D=r(k,g),B={top:T(e,"top"),right:T(e,"right"),bottom:Y(e,"bottom",h()),left:T(e,"left")},G=E.createElementNS("http://www.w3.org/2000/svg","rect"),q={x:o.left/2,y:o.top/2,width:p+V-o.left,height:p+M-o.top,fill:O,rx:m??g};Object.entries(q).forEach((([e,t])=>{G.setAttribute(e,t.toString())}));const L=E.createElementNS("http://www.w3.org/2000/svg","rect"),x=g>=200?"50%":g,K=d+V-(s.left+s.right+a.left+a.right+o.left+o.right),N=u+M-(s.top+s.bottom+a.top+a.bottom+o.top+o.bottom),U=K*b,F=N*b,z=(K-U)/2-y,H=(N-F)/2-w,Q={x:s.left+a.left+o.left+z,y:s.top+a.top+o.top+H,width:U,height:F,fill:D?.getAttribute("fill")||"#ffffff",rx:f??x};Object.entries(Q).forEach((([e,t])=>L.setAttribute(e,t.toString()))),D&&(({strokePath:e,backgroundMaskGroup:t,svgElement:i,color:n})=>{e.setAttribute("fill",t?.getAttribute("fill")||n),t.setAttribute("fill","none"),t.setAttribute("stroke-width","0"),i.insertBefore(t,i.firstChild)})({strokePath:L,backgroundMaskGroup:D,svgElement:t,color:O});let $=t.getElementsByTagName("defs")[0];$||($=E.createElementNS("http://www.w3.org/2000/svg","defs"),t.insertBefore($,t.firstChild));const _=E.createElementNS("http://www.w3.org/2000/svg","mask");_.setAttribute("id",`qr-mask-${c}`),_.setAttribute("maskUnits","userSpaceOnUse");const ee=E.createElementNS("http://www.w3.org/2000/svg","rect");if(ee.setAttribute("fill","white"),Object.entries(Q).forEach((([e,t])=>{"fill"!==e&&ee.setAttribute(e,t.toString())})),$.appendChild(_),_.appendChild(ee),t.insertBefore(L,t.firstChild?.nextSibling),t.insertBefore(G,t.firstChild),e.borderOuter&&e.borderOuter.thickness>0){const i=E.createElementNS("http://www.w3.org/2000/svg","rect"),n={x:o.left/2,y:o.top/2,width:d+V-o.left,height:u+M-o.top,fill:"none",rx:m??g,stroke:e.borderOuter.color,"stroke-width":e.borderOuter.thickness};Object.entries(n).forEach((([e,t])=>i.setAttribute(e,t.toString()))),t.insertBefore(i,t.firstChild?.nextSibling)}if(D){if(Array.from(t.getElementsByTagName("rect"))[0]){const e=t.firstChild;e?t.insertBefore(D,e):t.appendChild(D)}}if(e.borderInner&&e.borderInner.thickness>0){const i=E.createElementNS("http://www.w3.org/2000/svg","rect"),n={x:s.left+a.left+o.left+z,y:s.top+a.top+o.top+H,width:U,height:F,fill:"none",stroke:e.borderInner.color,"stroke-width":a.left,rx:f??x};Object.entries(n).forEach((([e,t])=>i.setAttribute(e,t.toString()))),t.appendChild(i)}let te={...R};if(!h()){const t=((e,t=[S,I,W])=>{for(const i of t){const t=e.decorations?.[i];if(t&&t.enableText&&!t.disabled&&t.type===v&&t.style)return t.style}})(e);t&&(te={...te,style:t})}const ie=h()?e:{...e,decorations:{...e.decorations,bottom:{...e.decorations?.bottom||{},...te,disabled:!1,enableText:!0}}};for(const e in ie.decorations){const i=ie.decorations[e];if(!i?.enableText||!B[e])continue;const n=i.type===J?X:i.type===v?P:void 0;n&&n({document:E,svg:t,position:e,thickness:ie.thickness,value:i.value,style:i.style,offset:i.offset,curveAdjustment:i.curveAdjustment,curveDisabled:i.curveDisabled,height:u+M,width:d+V,enabledBorders:B,outerBorderPadding:A,innerBorderPadding:Z,round:m,curveRadius:i.curveRadius,instanceId:c,noBorderThickness:l})}};var B,G,q,L,x,K;function N(e){const t={...e};if(!t.colorStops||!t.colorStops.length)throw new Error("Field 'colorStops' is required in gradient");return t.rotation?t.rotation=Number(t.rotation):t.rotation=0,t.colorStops=t.colorStops.map((e=>({...e,offset:Number(e.offset)}))),t}function U(e){const t={...e};return t.imageOptions={...t.imageOptions,imageSize:Math.min(1,Number(t.imageOptions?.imageSize))||1,margin:Number(t.imageOptions?.margin)||0},t.imageOptions.mode==K.overlay&&(t.imageOptions.margin=0),t.imageOptions?.fill?.gradient&&(t.imageOptions.fill.gradient=N(t.imageOptions.fill.gradient)),t.dotsOptions={...t.dotsOptions},t.dotsOptions.gradient&&(t.dotsOptions.gradient=N(t.dotsOptions.gradient)),t.dotsOptions.size=Math.round(Math.max(0,t.dotsOptions.size)||10),t.cornersSquareOptions&&(t.cornersSquareOptions={...t.cornersSquareOptions},t.cornersSquareOptions.gradient&&(t.cornersSquareOptions.gradient=N(t.cornersSquareOptions.gradient))),t.cornersDotOptions&&(t.cornersDotOptions={...t.cornersDotOptions},t.cornersDotOptions.gradient&&(t.cornersDotOptions.gradient=N(t.cornersDotOptions.gradient))),t.backgroundOptions&&(t.backgroundOptions={...t.backgroundOptions},t.backgroundOptions.gradient&&(t.backgroundOptions.gradient=N(t.backgroundOptions.gradient))),"undefined"==typeof document||t.document||(t.document=document),t}!function(e){e.radial="radial",e.linear="linear"}(B||(B={})),function(e){e.dot="dot",e.randomDot="random-dot",e.rounded="rounded",e.extraRounded="extra-rounded",e.verticalLine="vertical-line",e.horizontalLine="horizontal-line",e.classy="classy",e.classyRounded="classy-rounded",e.square="square",e.smallSquare="small-square",e.tinySquare="tiny-square",e.star="star",e.plus="plus",e.diamond="diamond"}(G||(G={})),function(e){e.dot="dot",e.square="square",e.heart="heart",e.rounded="rounded",e.classy="classy",e.outpoint="outpoint",e.inpoint="inpoint"}(q||(q={})),function(e){e.dot="dot",e.square="square",e.rounded="rounded",e.classy="classy",e.outpoint="outpoint",e.inpoint="inpoint"}(L||(L={})),function(e){e.square="square",e.circle="circle"}(x||(x={})),function(e){e.center="center",e.overlay="overlay",e.background="background"}(K||(K={}));const F={[g.L]:.07,[g.M]:.15,[g.Q]:.25,[g.H]:.3};class z{constructor(){}close(){}}class H extends z{constructor(e){super(),this.istream=e,this.buffer=0,this.buflen=0}readByte(){for(;this.buflen<8;){const e=this.istream.readByte();if(-1==e){if(0==this.buflen)return-1;throw new Error("unexpected end of file./"+this.buflen)}if(e=="=".charCodeAt(0))return this.buflen=0,-1;H.isWhitespace(e)||(this.buffer=this.buffer<<6|H.decode(e),this.buflen+=6)}const e=this.buffer>>>this.buflen-8&255;return this.buflen-=8,e}static isWhitespace(e){return e=="\v".charCodeAt(0)||e=="\t".charCodeAt(0)||e=="\r".charCodeAt(0)||e=="\n".charCodeAt(0)}static decode(e){if("A".charCodeAt(0)<=e&&e<="Z".charCodeAt(0))return e-"A".charCodeAt(0);if("a".charCodeAt(0)<=e&&e<="z".charCodeAt(0))return e-"a".charCodeAt(0)+26;if("0".charCodeAt(0)<=e&&e<="9".charCodeAt(0))return e-"0".charCodeAt(0)+52;if(e=="+".charCodeAt(0))return 62;if(e=="/".charCodeAt(0))return 63;throw new Error("c:"+e)}}class Q extends z{constructor(e){super(),this.bytes=e,this.pos=0}readByte(){if(this.pos<this.bytes.length){const e=this.bytes[this.pos];return this.pos+=1,e}return-1}}(function(e,t){const i=(()=>{const i=new H(new Q(function(e){const t=[];for(let i=0;i<e.length;i+=1)t.push(e.charCodeAt(i));return t}(e))),n=()=>{const e=i.readByte();if(-1==e)throw new Error("eof");return e};let r=0;const s={};for(;;){const e=i.readByte();if(-1==e)break;const t=n(),o=n()<<8|n();s[String.fromCharCode(e<<8|t)]=o,r+=1}if(r!=t)throw new Error(r+"!="+t);return s})(),n="?".charCodeAt(0)})("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MIWC4zCGguQwh4LlMIiC5jCJgucwioLoMIuC6TCMguowjYLrMI6C7DCPgu0wkILuMJGC7zCSgvAwk4LxMJuBSjCcgUswnYFUMJ6BVTChg0AwooNBMKODQjCkg0MwpYNEMKaDRTCng0YwqINHMKmDSDCqg0kwq4NKMKyDSzCtg0wwroNNMK+DTjCwg08wsYNQMLKDUTCzg1IwtINTMLWDVDC2g1Uwt4NWMLiDVzC5g1gwuoNZMLuDWjC8g1swvYNcML6DXTC/g14wwINfMMGDYDDCg2Eww4NiMMSDYzDFg2QwxoNlMMeDZjDIg2cwyYNoMMqDaTDLg2owzINrMM2DbDDOg20wz4NuMNCDbzDRg3Aw0oNxMNODcjDUg3Mw1YN0MNaDdTDXg3Yw2IN3MNmDeDDag3kw24N6MNyDezDdg3ww3oN9MN+DfjDgg4Aw4YOBMOKDgjDjg4Mw5IOEMOWDhTDmg4Yw54OHMOiDiDDpg4kw6oOKMOuDizDsg4ww7YONMO6DjjDvg48w8IOQMPGDkTDyg5Iw84OTMPSDlDD1g5Uw9oOWMPuBRTD8gVsw/YFSMP6BU04AiOpOAZKaTgOOtU4HlpxOCI/kTgmOT04Kj+NOC4m6Tg2Vc04Ol15OEJigThGJTk4Uio5OFZihThaQok4XmcBOGIt1ThmVuE4ej+VOIZe8TiaVwE4qmKJOLZKGTjGYo04yi/hONpikTjiK2045kk9OO47lTjyYpU4/mKZOQpinTkOUVE5Fi3ZOS5RWTk2T4U5OjMFOT5ZSTlXlaE5WmKhOV4/mTliYqU5ZibNOXYvjTl6M7k5fludOYpukTnGXkE5zk/tOfoqjToCLVE6CmKpOhZirToaXuU6Il1xOiZGIToqYrU6LjpZOjJPxTo6YsE6RiV1OkozdTpSM3E6ViOROmJhqTpmYaU6bjbFOnIifTp6YsU6fmLJOoJizTqGWU06imLROpIzwTqWI5U6mlpJOqIucTquLnU6si55OrZLgTq6Xuk6wmLVOs5i2TraYt066kGxOwI9ZTsGQbU7CmLxOxJi6TsaYu07Hi3dOyo2hTsuJ7k7NmLlOzpi4Ts+Vp07UjmVO1Y5kTtaRvE7XmL1O2JV0TtmQ5U7dgVdO3pi+Tt+YwE7jkeNO5JffTuWIyE7tmL9O7om8TvCLwk7ykodO9oyPTveYwU77lENPAYrpTwmYwk8KiMlPDYzeTw6K6k8PlZpPEJSwTxGLeE8aie9PHJjlTx2TYE8vlIxPMJjETzSUuk82l+BPOJBMTzqOZk88jpdPPYm+T0OSz09GkkFPR5jIT02Iyk9OkuFPT49aT1CNsk9Rl0NPU5HMT1WJvU9XmMdPWZddT1qYw09bmMVPXI3sT12Yxk9em0NPaZjOT2+Y0U9wmM9Pc4nAT3WVuU92mMlPe5jNT3yM8U9/jmdPg4qkT4aY0k+ImMpPi5fhT42OmE+PmMtPkZjQT5aY00+YmMxPm4ufT52Iy0+gi6BPoYm/T6ubRE+tlplPrpWOT6+M8k+1kE5Ptpe1T7+V1k/CjFdPw5GjT8SJ4k/Kj3JPzpjXT9CY3E/RmNpP1JjVT9eRrU/YmNhP2pjbT9uY2U/dldtP35jWT+GQTU/jlpNP5JjdT+WY3k/uj0NP75jrT/OUb0/1lVVP9pjmT/iV7k/6ibRP/pjqUAWY5FAGmO1QCZFxUAuMwlANlHtQD+DFUBGY7FASk3xQFJjhUBaM9FAZjPNQGpjfUB+O2FAhmOdQI5XtUCSSbFAlmONQJoyRUCiY4FApmOhQKpjiUCuXz1AsmOlQLZhgUDaL5FA5jJBQQ5juUEeY71BImPNQSYjMUE+VzlBQmPJQVZjxUFaY9VBamPRQXJLiUGWMklBsmPZQco7DUHSRpFB1kuNQdov0UHiY91B9i1VQgJj4UIWY+lCNllRQkYyGUJiOUFCZlPVQmpj5UKyNw1Ctl2JQspj8ULOZQlC0mPtQtY3CULePnVC+jFhQwplDUMWLzVDJmUBQyplBUM2TrVDPkZxQ0YuhUNWWbFDWmURQ2pe7UN6ZRVDjmUhQ5ZlGUOeRbVDtmUdQ7plJUPWZS1D5mUpQ+5XGUQCLVlEBmU1RAplOUQSJrVEJmUxREo7yURSZUVEVmVBRFplPURiY1FEamVJRH4+eUSGZU1Eql0RRMpbXUTeZVVE6mVRRO5lXUTyZVlE/mVhRQJlZUUGI8lFDjLNRRIxaUUWPW1FGkptRR4uiUUiQ5lFJjPVRS42OUUyZW1FNlsZRTpNlUVCOmVFSmVpRVJlcUVqTfVFcipVRYpldUWWT/FFokVNRaZlfUWqZYFFrlKpRbIz2UW2YWlFumWFRcYukUXWVulF2kbRRd4vvUXiTVFF8jJNRgJliUYKZY1GFk+BRhol+UYmZZlGKjftRjJllUY2NxFGPmWdRkOPsUZGZaFGSlmBRk5lpUZWZalGWmWtRl4/nUZmOylGgiqVRopluUaSZbFGllrtRppltUaiVeVGpmW9RqplwUauZcVGsk35RsJl1UbGZc1GymXRRs5lyUbSN4VG1mXZRtpboUbeX4lG9mXdRxJCmUcWZeFHGj3lRyZl5UcuSnFHMl71RzZOAUdaZw1HbmXpR3OqjUd2Lw1HgmXtR4ZZ9UeaPiFHnkfpR6Zl9UeqT4lHtmX5R8JmAUfGKTVH1mYFR9oulUfiTylH5iZpR+o9vUf2Un1H+mYJSAJOBUgOQblIEmYNSBpWqUgeQ2FIIiqBSCoqnUguZhFIOmYZSEYxZUhSZhVIXl/FSHY+JUiSUu1IllcpSJ5mHUimXmFIqmYhSLpmJUjCTnlIzmYpSNpCnUjeN/FI4jJRSOZmLUjqOaFI7jY9SQ5LkUkSZjVJHkaVSSo3tUkuZjlJMmY9STZFPUk+ZjFJUmZFSVpZVUluNhFJemZBSY4yVUmSN3FJllI1SaZmUUmqZklJvlZtScI/oUnGZm1JyioRSc5mVUnSZk1J1kW5SfZmXUn+ZllKDimNSh4yAUoiZnFKJl6tSjZmYUpGZnVKSmZpSlJmZUpuXzVKfjPdSoInBUqOX8lKpj5VSqpN3UquNhVKsmaBSrZmhUrGX41K0mEpStZmjUrmM+FK8maJSvopOUsGZpFLDlnVSxZK6UseXRVLJlddSzZmlUtLo01LVk65S15mmUtiKqFLZlrFS3Y+fUt6Zp1LfleVS4JmrUuKQqFLjmahS5IvOUuaZqVLniqlS8oxNUvOZrFL1ma1S+JmuUvmZr1L6jtlS/oz5Uv+W3FMBluZTApP1UwWV71MGmbBTCJmxUw2Zs1MPmbVTEJm0UxWZtlMWibtTF5ZrUxmN+lMambdTHZF4UyCPoFMhi6dTI5m4UyqU2VMvmblTMZm6UzOZu1M4mbxTOZVDUzqL5lM7iONTP5O9U0CZvVNBj1xTQ5DnU0WZv1NGmb5TR4+hU0iM31NJmcFTSpS8U02ZwlNRlNpTUpGyU1OR7FNUi6ZTV5PsU1iSUFNalI5TXJZtU16ZxFNgkOhTZoxUU2mZxVNumcZTb4lLU3CI81NxiutTc5GmU3SLcFN1l5FTd5nJU3iJtVN7mchTf4uoU4KZylOElu9TlpnLU5iX0FOajPpTn4y0U6CZzFOlmc5TppnNU6iQflOpiVhTrYl9U66Zz1OwmdBTs4y1U7aZ0VO7i45Two5RU8OZ0lPIlpRTyY2zU8qLeVPLl0ZTzJFvU82UvVPOjvtT1I9mU9aO5lPXjvNT2Y+WU9uUvlPfmdVT4YliU+KRcFPjjPtT5IzDU+WL5VPomdlT6ZJAU+qR/FPri6lT7I+iU+2Z2lPumdhT74nCU/CR5FPxjrZT8o5qU/OJRVP2ipBT942GU/iOaVP6mdtUAZncVAOLaFQEimVUCI2HVAmLZ1QKkt1UC4lEVAyTr1QNlrxUDo1AVA+XmVQQk2ZUEYz8VBuMTlQdmeVUH4vhVCCWaVQmlNtUKZnkVCuK3FQsmd9ULZngVC6Z4lQ2meNUOIt6VDmQgVQ7latUPJnhVD2Z3VQ+jOFUQJneVEKYQ1RGlfBUSJLmVEmM4FRKjZBUTpnmVFGT21RfmepUaI78VGqO9FRwme1UcZnrVHOWoVR1mehUdpnxVHeZ7FR7me9UfIzEVH2WvVSAmfBUhJnyVIaZ9FSLje5UjJhhVI6Z6VSPmedUkJnzVJKZ7lSimfZUpJpCVKWZ+FSomfxUq5pAVKyZ+VSvml1Uso3nVLOKUFS4mfdUvJpEVL2I9FS+mkNUwIijVMGVaVTCmkFUxJn6VMeZ9VTImftUyY3GVNiaRVThiPVU4ppOVOWaRlTmmkdU6I+jVOmWiVTtmkxU7ppLVPKTTlT6mk1U/ZpKVQSJU1UGjbRVB5BPVQ+aSFUQk4JVFJpJVRaIoFUumlNVL5dCVTGPpVUzmllVOJpYVTmaT1U+kcFVQJpQVUSR7VVFmlVVRo+kVUyaUlVPluJVU4xbVVaaVlVXmldVXJpUVV2aWlVjmlFVe5pgVXyaZVV+mmFVgJpcVYOaZlWEkVBVh5poVYmNQVWKml5Vi5KdVZiaYlWZmltVmoqrVZyK7FWdioVVnppjVZ+aX1WnjJZVqJppVamaZ1WqkXJVq4tpVayLqlWummRVsIvyVbaJY1XEmm1VxZprVceapVXUmnBV2ppqVdyablXfmmxV445rVeSab1X3mnJV+Zp3Vf2adVX+mnRWBpJRVgmJw1YUmnFWFppzVhePplYYiVJWG5p2VimJ3FYvmoJWMY/6VjKafVY0mntWNpp8VjiaflZCiVxWTJFYVk6aeFZQmnlWW4qaVmSagVZoiu1WapqEVmuagFZsmoNWdJWsVniT01Z6lLZWgJqGVoaahVaHimRWipqHVo+ailaUmolWoJqIVqKUWFalmotWrpqMVrSajla2mo1WvJqQVsCak1bBmpFWwpqPVsOaklbImpRWzpqVVtGallbTmpdW15qYVtiZZFbajvpW245sVt6J8VbgiPZW45JjVu6amVbwjaJW8ojNVvOQfVb5mppW+ozFVv2NkVb/mpxXAJqbVwOV3lcEmp1XCJqfVwmanlcLmqBXDZqhVw+Ml1cSiYBXE5qiVxaapFcYmqNXHJqmVx+TeVcmmqdXJ4izVyiN3VctjFxXMJJuVzeaqFc4mqlXO5qrV0CarFdCjeJXR4vPV0qWVldOmqpXT5qtV1CNv1dRjUJXYZqxV2SNo1dmklJXaZquV2qS2Fd/mrJXgpCCV4iasFeJmrNXi4xeV5OatFegmrVXoo1DV6OKX1ekmrdXqpq4V7CauVezmrZXwJqvV8OaulfGmrtXy5aEV86P6VfSmr1X05q+V9SavFfWmsBX3JRXV9+I5lfglXVX45rBV/SP+1f3jrdX+ZR8V/qK7lf8jelYAJZ4WAKTsFgFjJhYBpHNWAqav1gLmsJYFZHCWBmaw1gdmsRYIZrGWCSS51gqiqxYL+qfWDCJgVgxlfFYNI/qWDWTZ1g6jeRYPZrMWECVu1hBl9tYSonyWEuayFhRkVlYUprLWFSTg1hXk2hYWJOEWFmUt1hakstYXo3HWGKax1hpiZZYa5NVWHCayVhymsVYdZBvWHmazVh+j21Yg4urWIWazliTleZYl5GdWJySxFifmtBYqJZuWKua0ViumtZYs5WtWLia1Vi5ms9YuprSWLua1Fi+jaRYwZXHWMWa11jHkmRYyonzWMyP61jRmtlY05rYWNWNiFjXmtpY2JrcWNma21jcmt5Y3prTWN+a4Fjkmt9Y5ZrdWOuObVjskHBY7pFzWO+a4VjwkLpY8YjrWPKUhFj3ktlY+ZrjWPqa4lj7muRY/JrlWP2a5lkCmudZCZXPWQqa6FkPicRZEJrpWRWXW1kWik9ZGJnHWRmPZ1kakb1ZG5rqWRyW6VkilrJZJZrsWSeR5Vkpk1ZZKpG+WSuVdlksmu1ZLZruWS6Jm1kxjrhZMprvWTeIzlk4mvBZPprxWUSJgllHiu9ZSJPeWUmV8llOmvVZT5F0WVCa9FlRjF9ZVJZ6WVWa81lXk4VZWJr3WVqa9llgmvlZYpr4WWWJnFlnmvpZaI+nWWma/FlqkkRZbJr7WW6VsVlzj5dZdJN6WXibQFl9jURZgZtBWYKUQFmDlNxZhJbPWYqURFmNm0pZk4tXWZaXZFmZlq1Zm5uqWZ2bQlmjm0VZpZHDWaiWV1msk2lZsptGWbmWhVm7jchZvo+oWcabR1nJjm9Zy45uWdCIt1nRjMZZ05CpWdSIz1nZm0tZ2ptMWdybSVnliVdZ5oqtWeibSFnqlsNZ65VQWfaIpln7iPdZ/45wWgGI0FoDiKFaCZtRWhGbT1oYlrpaGptSWhybUFofm05aIJBQWiWbTVopldhaL4ziWjWbVlo2m1daPI+pWkCbU1pBmEtaRpRrWkmbVVpajaVaYptYWmaVd1pqm1labJtUWn+WuVqSlH1amptaWpuVUVq8m1tavZtfWr6bXFrBicVawpteWsmOuVrLm11azIyZWtCba1rWm2Ra15thWuGShFrjm2Ba5ptiWumbY1r6m2Va+5tmWwmK8FsLm2hbDJtnWxabaVsij+xbKptsWyyS2lswiWRbMptqWzabbVs+m25bQJtxW0Obb1tFm3BbUI5xW1GbcltUjUVbVZtzW1eOmltYkbZbWpt0W1ubdVtcjnlbXY1GW1+W0Ftji0dbZIzHW2WbdltmindbaZt3W2uRt1twm3hbcZuhW3ObeVt1m3pbeJt7W3qbfVuAm35bg5uAW4WR7luHiUZbiI7nW4mIwFuLkXZbjIquW42Os1uPjUdblZOGW5ePQFuYiq9bmZKIW5qS6FubiLZbnItYW52V81ufjsBbootxW6OQ6VukjrpbpZdHW6abgVuui3tbsI3JW7OKUVu0iYNbtY+qW7aJxlu4m4JbuZdlW7+PaFvCjuJbw5uDW8SK8VvFk9BbxpanW8ebhFvJm4VbzJV4W9Cbh1vSiqZb04v1W9SbhlvbirBb3ZBRW96bi1vfjkBb4YnHW+Kbilvkm4hb5ZuMW+abiVvnlEpb6J7LW+mQUlvrm41b7pe+W/Cbjlvzm5Bb9ZKeW/abj1v4kKFb+o6bW/6Rzlv/jvVcAZWVXAKQ6lwEjstcBZuRXAaPq1wHm5JcCJuTXAmI0VwKkbhcC5BxXA2blFwOk7FcD4+sXBGPrVwTm5VcFpDrXBqPrlwgm5ZcIpuXXCSW3lwom5hcLYvEXDGPQVw4m5lcOZuaXDqO2lw7kEtcPJPyXD2Qc1w+lPZcP5RBXECLx1xBm5tcRYuPXEabnFxIi/xcSpPNXEuJrlxNjnJcTpudXE+boFxQm59cUYv7XFObnlxVk1dcXpGuXGCTalxhjsZcZJF3XGWXmlxsm6JcbpujXG+T1FxxjlJcdpulXHmbplyMm6dckIryXJGbqFyUm6lcoYmqXKiRWlypiuJcq5urXKyWplyxkdBcs4p4XLabrVy3m69cuIrdXLubrFy8m65cvpuxXMWbsFzHm7Jc2ZuzXOCTu1zhi6xc6InjXOmbtFzqm7lc7Zu3XO+V9VzwlfRc9pOHXPqbtlz7j3Nc/Zu1XQeQkl0Lm7pdDo3oXRGbwF0Um8FdFZu7XRaKUl0Xm7xdGJvFXRmbxF0am8NdG5u/XR+bvl0im8JdKZX2XUubyV1Mm8ZdTpvIXVCXkl1Sm8ddXJu9XWmQk11sm8pdb421XXOby112m8xdgpvPXYSbzl2Hm81di5OIXYybuF2Qm9VdnZvRXaKb0F2sm9JdrpvTXbeb1l26l+RdvJvXXb2b1F3Jm9hdzIreXc2b2V3Sm9td05vaXdab3F3bm91d3ZDsXd6PQl3hj4Rd45GDXeWNSF3mjbZd541JXeiLkF3rm95d7o23XfGMyF3ym99d85akXfSUYl31m+Bd941KXfuKql39kkZd/ovQXgKOc14DlXpeBpS/Xgub4V4MivNeEZvkXhaSn14Zm+NeGpviXhub5V4dkuleJZCDXiuOdF4tkMheL5HRXjCLQV4zkqBeNpvmXjeb5144j+1ePZZYXkCb6l5Dm+leRJvoXkWVnV5Hm/FeTJZ5Xk6b615Um+1eVZaLXleb7F5fm+5eYZSmXmKb715jlbxeZJvwXnKKsV5zlb1edJROXnWb8l52m/NeeI1LXnmKsl56m/Ree4y2XnyXY159l0hefor0Xn+b9l6BkqFeg41MXoSPr16HlN1eio+wXo+PmF6VkupelpX3XpeTWF6ajU1enJV7XqCb916mk3hep43AXquMyV6tkutetYjBXraPjl63jU5euJdmXsGb+F7Cm/lew5RwXsib+l7Jl/VeyphMXs+b/F7Qm/te04pmXtacQF7anENe25xEXt2cQl7flV9e4I+xXuGcRl7inEVe45xBXuicR17pnEhe7JxJXvCcTF7xnEpe85xLXvScTV72iYRe95LsXvicTl76jJpe+4n0XvyUVV7+nE9e/5P5XwGV2V8DnFBfBJhNXwmcUV8Klb5fC5xUXwyYn18NmK9fD46uXxCT818RnFVfE4t8XxSSol8ViPhfFpxWXxeVpF8YjU9fG5JvXx+S7V8llu1fJoy3XyeMyl8pnFdfLZxYXy+cXl8xjuNfNZKjXzeLrV84nFlfPJVKXz6SZV9BnFpfSJxbX0qLrl9MnFxfTpxdX1GcX19Tk5ZfVpxgX1ecYV9ZnGJfXJxTX12cUl9hnGNfYoxgX2aVRl9pjcpfapVWX2uSpF9slWpfbZxkX3CPsl9xiWVfc5xlX3ecZl95lvBffJTeX3+caV+AiZ1fgZCqX4KcaF+DnGdfhIxhX4WR0l+HnG1fiJxrX4qcal+Ll6VfjIzjX5CPmV+RnGxfkpNrX5OPXV+Xk75fmJxwX5mcb1+enG5foJxxX6GM5F+onHJfqZWcX6qPel+tnHNfrpT3X7OTv1+0kqVfuZNPX7ycdF+9i0pfw5BTX8WVS1/MivVfzZRFX9acdV/XjnVf2JZZX9mWWl/ciZ5f3Zx6X+CSiV/knHdf64n1X/Ccq1/xnHlf9ZRPX/iceF/7nHZf/Y2aX/+cfGAOnINgD5yJYBCcgWASk3tgFZyGYBaVfGAZnIBgG5yFYByX5WAdjnZgIJHTYCGcfWAli31gJpyIYCeQq2AoiYVgKZyCYCqJ9mArnIdgL4uvYDGchGA6nIpgQZyMYEKclmBDnJRgRpyRYEqckGBLl/ZgTZySYFCLsGBSjVBgVY+aYFmcmWBanItgX5yPYGCcfmBiifhgY5yTYGSclWBlknBgaI2mYGmJtmBqnI1ga5yYYGycl2Bti7Fgb5GnYHCKhmB1jGJgd5yOYIGcmmCDnJ1ghJyfYImOu2CLnKVgjJLuYI2cm2CSnKNglIn3YJacoWCXnKJgmpyeYJucoGCfjOVgoJdJYKOKs2CmiXhgp5ykYKmUWWCqiKtgspTfYLOce2C0nKpgtZyuYLaW42C4nKdgvJOJYL2crGDFj+5gxpytYMeT1WDRmGZg05ypYNicr2DajZtg3JDJYN+I0mDgnKhg4ZymYOOReWDnnJxg6I5TYPCRxGDxnLtg85F6YPSctmD2nLNg95y0YPmO5GD6nLdg+5y6YQCctWEBj0RhA5y4YQacsmEIlvphCZb5YQ2cvGEOnL1hD4jTYRWcsWEai/BhG4ikYR+KtGEhnLlhJ5zBYSicwGEsnMVhNJzGYTycxGE9nMdhPpy/YT+cw2FCnMhhRJzJYUecvmFIjpxhSpzCYUuR1GFMjVFhTZywYU6QVGFTnNZhVZXnYViczGFZnM1hWpzOYV2c1WFfnNRhYpadYWOKtWFlnNJhZ4xkYWiKU2FrnM9hbpe2YW+c0WFwiNRhcZzTYXOcymF0nNBhdZzXYXaMY2F3nMthfpd8YYKXSmGHnNphipzeYY6RnmGQl/dhkZzfYZSc3GGWnNlhmZzYYZqc3WGkla5hp5OyYamMZWGrnOBhrJzbYa6c4WGyjJthtomvYbqc6WG+irZhw5znYcac6GHHjadhyJzmYcmc5GHKnONhy5zqYcyc4mHNnOxh0In5YeOc7mHmnO1h8pKmYfSc8WH2nO9h95zlYfiMnGH6nPBh/Jz0Yf2c82H+nPVh/5zyYgCc9mIInPdiCZz4YgqV6GIMnPpiDZz5Yg6PXmIQkKxiEYnkYhKJ+mIUnPtiFoi9YhqQymIbnPxiHebBYh6dQGIfjIFiIZ1BYiaQ7WIqnUJiLp1DYi+LWWIwnURiMp1FYjOdRmI0kdViOIzLYjuW32I/lltiQI+KYkGdR2JHkO5iSOe7YkmU4GJLjuhiTY3LYk6dSGJTkcViVZWlYliR72JbnUtiXp1JYmCdTGJjnUpiaJ1NYm6Vr2JxiLVidpV9YnmU4WJ8nU5ifp1RYn+Ps2KAi1pigp1PYoOdVmKEj7RiiZ1QYoqUY2KRl31ikp1SYpOdU2KUnVdilZOKYpadVGKXjVJimJDcYpudZWKclLJinpHwYquU4mKsnatisZX4YrWS72K5lpViu51aYryJn2K9kopiwp1jYsWSU2LGnV1ix51kYsidX2LJnWZiyp1iYsydYWLNlI9iz51bYtCJ+2LRnVli0ouRYtOR8WLUnVVi151YYtiNU2LZkNli24+1YtydYGLdlHFi4IuSYuGKZ2Lsiodi7ZBAYu6daGLvnW1i8Z1pYvOMnWL1nW5i9o5BYveNiWL+j0Vi/51cYwGOnWMCnWtjB453YwidbGMJiMJjDJ1nYxGSp2MZi5NjH4uyYyedamMoiKVjK43BYy+QVWM6kvBjPZTSYz6dcGM/kX1jSZGoY0yOSmNNnXFjT51zY1Cdb2NVld9jV5K7Y1yRe2NnlfljaI7MY2mdgGNrnX5jbpCYY3KMnmN2nXhjd4+3Y3qT5mN7lFBjgJ12Y4ORfGOIjvZjiZ17Y4yPtmOOnXVjj516Y5KUcmOWnXRjmIxAY5uKfGOfnXxjoJepY6GNzGOiklRjo515Y6WQ2mOnjVRjqJCEY6mJhmOqkVtjq513Y6yLZGOyjGZjtJLNY7WdfWO7kX5jvp2BY8Cdg2PDkbVjxJ2JY8adhGPJnYZjz5VgY9CS8WPSnYdj1pdLY9qXZ2Pbirdj4YisY+OdhWPpnYJj7or2Y/SJh2P2nYhj+pdoZAadjGQNkblkD52TZBOdjWQWnYpkF52RZBydcmQmnY5kKJ2SZCyUwGQtk4tkNJ2LZDadj2Q6jGdkPo3vZEKQ22ROnZdkWJNFZGedlGRploBkb52VZHadlmR4lsxkepCgZIOMgmSInZ1kko5UZJOdmmSVnZlkmpRRZJ6Ts2Skk1BkpZ2bZKmdnGSrlY9krZRkZK6OQmSwkO9kspZvZLmKaGS7naNkvJ2eZMGXaWTCnaVkxZ2hZMedomTNkYBk0p2gZNSdXmTYnaRk2p2fZOCdqWThnapk4pNGZOOdrGTmjkNk552nZOyLW2Tvna1k8Z2mZPKdsWT0nbBk9p2vZPqdsmT9nbRk/o/vZQCds2UFnbdlGJ21ZRydtmUdnZBlI525ZSSduGUqnZhlK526ZSydrmUvjnhlNJ27ZTWdvGU2nb5lN529ZTidv2U5ifxlO41VZT6V+mU/kK1lRYzMZUidwWVNncRlT5VxZVGLfmVVncNlVp3CZVeUc2VYncVlWYuzZV2dx2VencZlYoq4ZWOOVWVmk9ZlbIxoZXCQlGVynchldJCuZXWTR2V3lX5leJ3JZYKdymWDnctlh5W2ZYibfGWJkMRljJVrZY6N1mWQlONlkZTBZZeTbGWZl79lm53NZZyOzmWfnc5loYi0ZaSL0mWlkMtlp5WAZaudz2WsjmFlrZJmZa+OemWwkFZlt53QZbmV+2W8iZdlvY57ZcGd02XDndFlxJ3UZcWXt2XGndJly5D5Zcyd1WXPkbBl0p3WZdeK+GXZndhl253XZeCd2WXhndpl4or5ZeWT+mXmklVl54uMZeiOfGXpkYFl7I97Ze2IrmXxndtl+omgZfud32YCjVZmA53eZgaNqWYHj7hmCp3dZgyPuWYOlr5mD42oZhOI1WYUkMxmHJ3kZh+Qr2YgiWZmJY90ZieWhmYojfBmLY+6Zi+QpWY0neNmNZ3hZjad4mY8kotmP55FZkGd6GZCjp5mQ41XZkSd5mZJnedmS5BXZk+d5WZSjk5mXZ3qZl6d6WZfne5mYp3vZmSd62ZmikFmZ53sZmid7WZplNNmbpWBZm+MaWZwnfBmdJCwZnaPu2Z6knFmgYvFZoOd8WaEnfVmh4nJZoid8maJnfRmjp3zZpGPi2aWkmdml4jDZpid9madnfdmopKoZqaX72arjmJmrpXpZrSWXGa4nkFmuZ35Zryd/Ga+nftmwZ34ZsSeQGbHk9xmyZ36ZtaeQmbZj4xm2p5DZtyXambdlJhm4J5EZuaeRmbpnkdm8J5IZvKLyGbziWdm9I1YZvWeSWb3nkpm+I+RZvmRgmb8mdZm/ZFdZv6RXGb/kdZnAI3FZwOY8GcIjI5nCZdMZwuV/GcNlZ5nD55LZxSN8WcVkr1nFp5MZxeYTmcbll1nHZKpZx6eTWcfivpnJp5OZyeeT2colthnKpaiZyuWlmcslntnLY5EZy6eUWcxjulnNJZwZzaeU2c3nlZnOJ5VZzqK92c9i4BnP55SZ0GeVGdGnldnSZCZZ06Xm2dPiMdnUI3eZ1GRumdTjttnVo/xZ1meWmdck21nXp5YZ1+RqWdgnllnYY/wZ2KW22djnltnZJ5cZ2WXiGdqnmFnbY1ZZ2+UdGdwnl5ncZOMZ3Kd3GdzneBndYtuZ3eUZmd8nmBnfo+8Z3+UwmeFnmZnh5T4Z4meXWeLnmNnjJ5iZ5CQzWeVlo1nl5fRZ5qWh2ecicpnnY59Z6CYZ2ehnmVnopCVZ6aeZGepnl9nr4zNZ7Oea2e0nmlntonLZ7eeZ2e4nm1nuZ5zZ8GRxmfElb9nxp51Z8qVQWfOnnRnz5SQZ9CWXmfRirln05D1Z9SPX2fYktFn2pdNZ92ecGfenm9n4p5xZ+SebmfnnnZn6Z5sZ+yeamfunnJn755oZ/GSjGfzlvZn9I7EZ/WN8mf7jbhn/paPZ/+KYGgCksxoA5PIaASJaGgTkPBoFpCyaBeMSWgennhoIY1aaCKKnGgpnnpoKoqUaCuegWgynn1oNJDxaDiKamg5japoPIppaD2NzWhAnntoQYyFaEKMamhDk41oRp55aEiIxGhNnnxoTp5+aFCLy2hRjEtoU4q6aFSLamhZnoJoXI33aF2WkWhfjlZoY56DaGeVT2h0no9odomxaHeehGh+npVof56FaIGXwGiDnoxohZR+aI2elGiPnodok4iyaJSeiWiXjVtom56LaJ2eimifnoZooJ6RaKKPvWimmutop4zmaKiXnGitnohor5LyaLCKQmixjatos56AaLWekGi2ioFouZ6OaLqekmi8k45oxIr8aMaesGjJlsdoyp6XaMuK+2jNnp5o0pZfaNSen2jVnqFo156laNiemWjakklo35OPaOCeqWjhnpxo456maOeeoGjukFho756qaPKQsWj5nqho+oq7aQCYb2kBnpZpBJ6kaQWI1mkInphpC5a4aQyenWkNkEFpDpLFaQ+ek2kSnqNpGZCaaRqerWkbipFpHIyfaSGer2kinpppI56uaSWep2kmnptpKJ6raSqerGkwnr1pNJPMaTaeomk5nrlpPZ67aT+S1mlKl2tpU5WWaVSetmlVkchpWZ68aVqRXmlcnrNpXZ7AaV6ev2lgk+1pYZ6+aWKT6GlqnsJpa561aW2Lxmlunrhpb498aXOUgGl0nrppdYvJaXeesml4nrRpeZ6xaXyYT2l9inlpfp63aYGewWmCilRpio3laY6JfGmRntJplJhQaZWe1WmbkFlpnJ7UaaCe02mnntBprp7EabGe4WmynsNptJ7Wabuezmm+nslpv57GacGex2nDns9px+qgacqezGnLjVxpzJLGac2RhGnOnspp0J7FadOeyGnYl2xp2ZaKad2ezWnentdp557faeie2GnrnuVp7Z7jafKe3mn5nt1p+5LOaf2RhWn/nttqAp7ZagWe4GoKnuZqC5Tzagye7GoSnudqE57qahSe5GoXkpRqGZVXahue2moenuJqH4++aiGWzWoinvZqI57paimMoGoqiaFqK4p+ai6e0Wo1j79qNp7uajie9Wo5jvdqOoqSaj2STWpEnutqR57wakie9GpLi7RqWItralme8mpfi0BqYZPJamKe8WpmnvNqcp7tanie72p/ioBqgJJoaoSe+mqNnvhqjoznapCe92qXn0BqnJ53aqCe+Wqinvtqo578aqqfS2qsn0dqrp6NarOfRmq4n0Vqu59CasGe6GrCn0Rqw59DatGfSWrTmEVq2p9MatuL+Wren0hq359KauiUpWrqn01q+p9RavufTmsEl5NrBZ9Pawqe3GsSn1JrFp9Tax2JVGsfn1VrIIyHayGOn2sji9NrJ4miazKXfms3n1drOJ9WazmfWWs6i1xrPYvUaz6KvGtDn1xrR59ba0mfXWtMicxrTpJWa1CfXmtTir1rVJ9ga1mfX2tbn2FrX59ia2GfY2tijn5rY5Cza2SNn2tmlZBraZXga2qYY2tvjpVrc43Oa3SX8Gt4n2RreZ9la3uOgGt/n2ZrgJ9na4OfaWuEn2hrhpZ3a4mPfWuKjupri45ja42famuVn2xrlpBCa5ifa2uen21rpJ9ua6qfb2urn3Brr59xa7Gfc2uyn3Jrs590a7SJo2u1kmlrt591a7qORWu7imtrvJ92a7+TYWvAmsprxYtCa8afd2vLn3hrzZXqa86WiGvSk8Vr0595a9SU5GvYlPlr25bRa9+femvrn3xr7J97a++ffmvzn31sCJ+BbA+OgWwRlq9sE5+CbBSfg2wXi0NsG5+EbCOfhmwkn4VsNJCFbDeVWGw4iWlsPpTDbECS82xBj2BsQouBbE6UxGxQjqxsVZ+IbFeKvmxaiZhsXZPwbF6fh2xfjV1sYJJybGKfiWxon5Fsap+KbHCRv2xyi4Jsc5+SbHqMiGx9i0Rsfp+QbIGfjmyCn4tsg5eAbIiSvmyMk9dsjZ+MbJCflGySn5Nsk4xCbJaJq2yZjblsmp+NbJufj2yhlnZsopHybKuWl2yun5xssZ+dbLOJzWy4laZsuZb7bLqfn2y7jqFsvI/AbL2fmGy+n55sv4mIbMGLtWzEn5VsxZ+abMmQ8mzKlJFszJTlbNOfl2zVlkBs15+ZbNmfomzbn6Bs3Z+bbOGWQWzilGds44uDbOWTRGzoko1s6p+jbO+foWzwkdds8Z+WbPOJam0Ll21tDJ+ubRKfrW0XkPRtGZ+qbRuXjG0ek7RtH5+kbSWSw20piWttKo1ebSufp20yj0ZtM5+sbTWfq202n6ZtOJ+pbTuKiG09n6htPpRobUGXrG1Ej/JtRZDzbVmftG1an7JtXJVsbWOfr21kn7FtZolZbWmNX21qmFFtbIpcbW6Vgm10l4Ftd4pDbXiQWm15n7NthZ+4bYiPwW2Ml09tjp+1bZOfsG2Vn7ZtmZfcbZuTk22ck8Btr4pVbbKJdG21n7xtuJ+/bbyXwW3Al4RtxZ/GbcafwG3Hn71ty5fS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hWmToIVqlZOFbeVKhXflUIV+5VGFgOVEhYSUloWH5U6FiOVGhYrlSIWQ5VKFkeVHhZTlS4WXiZKFmZPjhZvlTIWc5U+FpOVFhaaRRYWo5UmFqY5GhaqQZIWrjE+FrJbyha6W94Wvj5KFueVWhbrlVIXBmG2FyeVThc2XlYXP5VWF0OVXhdXlWIXc5VuF3eVZheSToYXl5VqF6ZTLherlTYX3j5OF+eVchfrlYYX7kZSF/uVghgLlQYYG5WKGB5FohgrlXYYL5V+GE+VehhafUIYXn0GGGuVkhiLlY4Ytl5aGL+G6hjDlZYY/5WaGTeVnhk6M1YZQi3OGVOVphlWZfIZai5WGXJe4hl6L8YZf5WqGZ+VrhmuSjoZx5WyGeZP4hnuIuIaKieGGi+VxhozlcoaT5W2GlY5chqPlboaklGGGqeVvhqrlcIar5XqGr+V0hrDld4a25XOGxOV1hsbldobHjtaGyeV4hsuSYIbNjHWGzophhtTle4bZil6G2+WBht7lfIbf5YCG5JS4hunlfYbs5X6G7ZVnhu6U2Ibv5YKG+JH7hvnljIb75YiG/onphwDlhocClkmHA+WHhwblhIcI5YWHCeWKhwrljYcN5YuHEeWJhxLlg4cYkneHGuWUhxyWqIcl5ZKHKeWThzTljoc35ZCHO+WRhz/lj4dJkOSHS5hYh0zlmIdO5ZmHU+Wfh1WQSYdX5ZuHWeWeh1/llodg5ZWHY+Wgh2aJ2odo5ZyHauWhh27lnYd05ZqHdpKxh3jll4d/lIiHguWlh42XWoef5aSHouWjh6vlrIev5aaHs+Wuh7qXhoe75bGHveWoh8DlqYfE5a2HxuWwh8flr4fL5aeH0OWqh9Llu4fg5bSH7+Wyh/Lls4f25biH9+W5h/mKSYf7i2GH/uW3iAXloogN5baIDuW6iA/ltYgR5byIFeW+iBblvYgh5cCIIuW/iCPleYgn5cSIMeXBiDblwog55cOIO+XFiECMjIhC5ceIROXGiEaPT4hMjXOITZ+liFLlyIhTj3CIV4pYiFnlyYhbiXGIXY/ViF7lyohhjXSIYuXLiGOI34holVyIa+XMiHCQiohy5dOIdeXQiHeSj4h95dGIfuXOiH+L3IiB5c2IguXUiIiMVYiLkdyIjeXaiJLl1oiWkbOIl+XViJnl2Iie5c+IouXZiKTl24irlO2IruXX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ljKWaJY7kWqWP4iilkCRyZZC6JiWRJWNlkvom5ZM6JmWTY1+lk/ompZQjMCWW5XDllzonZZd6J+WXuiell/ooJZiiUCWY5B3lmSPnJZliteWZuihlmqUhpZs6KOWcIlBlnLoopZzksKWdZfLlnaTqZZ36JyWeJeklnqMr5Z9l3qWhYv3loaXspaIjEeWipHglovkQJaN6KSWjopLlo+Qj5aUinWWleimlpfop5aY6KWWmYyElpuN25acj+GWoIlClqOX15an6KmWqOeslqroqJaw6KyWseiqlrLoq5a06K2WtuiulreX6pa46K+WueiwlruQx5a8lLmWwJCdlsGK5ZbEl1mWxYnrlsaPV5bHjNmWyeizlsvospbMjpOWzei0ls7osZbRjkeW1ei4ltblq5bZmdSW25CXltzotpbil6OW45PvluiJSpbqkOGW6460lvCVtZbyiV+W9pfrlveXi5b56LmW+5NklwCO+ZcE6LqXBui7lweQa5cI6LyXCpfslw3ot5cO6L6XD+jAlxHov5cT6L2XFujBlxnowpcckZqXHonglyTow5cnlraXKujElzDoxZcymEmXOJ5Qlznoxpc96MeXPujIl0LozJdE6MmXRujKl0joy5dJ6M2XUpDCl1aW9ZdZkMOXXOjOl16U8Zdg6M+XYepyl2KWypdk6NCXZujRl2jo0pdpinaXa+jUl22QeJdx6NWXdIxDl3no1pd66NqXfOjYl4Ho2ZeEipOXhejXl4bo25eL6NyXjYjGl4/o3ZeQ6N6XmI/il5zo35egi2aXo+jil6bo4Zeo6OCXq+aRl62V2pez6OOXtOjkl8Po5ZfG6OaXyOjnl8vo6JfTitiX3Ojpl+3o6pfulEKX8ujsl/OJuZf16O+X9ujul/uJQ5f/i7+YAZXFmAKSuJgDjaCYBY2AmAaPh5gIkHuYDOjxmA/o8JgQl2GYEYrmmBKU0JgTk9qYF5CcmBiXzJgajHqYIej0mCTo85gslmqYLZOqmDSJb5g36PWYOOjymDuVcJg8l4qYPej2mEbo95hL6PmYTJHomE2KephOinuYT+j4mFSK55hVjLCYWIromFuTXphel96YZ4zamGvo+phv6PuYcOj8mHHpQJhz6UKYdOlBmKiVl5iq6UOYr+lEmLHpRZi26UaYw+lImMTpR5jG6UmY25TymNzjypjfkEiY4otRmOnpSpjr6UuY7ZmqmO6fWpjvlNGY8oj5mPSIuZj8jpSY/ZZPmP6P/JkD6UyZBZbdmQnpTZkKl3uZDIlhmRCOYJkS6U6ZE4nsmRTpT5kY6VCZHelSmR7pU5kg6VWZIelRmSTpVJkoitmZLOlWmS7pV5k96ViZPulZmULpWplF6VyZSelbmUvpXplM6WGZUOldmVHpX5lS6WCZVelimVeLwJmWjvGZl+ljmZjpZJmZjYGZpellmaiKXZmslG6Zrelmma7pZ5mzknmZtJPpmbzpaJnBlJ2ZxJHKmcWJd5nGi+yZyIvtmdCSk5nR6W2Z0ovumdWJ7ZnY6WyZ2+lqmd3pa5nf6WmZ4ul3me3pbpnu6W+Z8elwmfLpcZn46XOZ++lymf+PeJoB6XSaBel2mg6LUpoP6XWaEpGbmhOMsZoZ6XiaKJHLmivpeZowk6uaN+l6mj7pgJpA6X2aQul8mkPpfppF6XuaTemCmlXpgZpX6YSaWovBmlvpg5pf6YWaYumGmmTpiJpl6YeaaemJmmrpi5pr6YqaqI2cmq3pjJqw6Y2auIpbmrzpjprA6Y+axJCRms/pkJrR6ZGa0+mSmtTpk5rYjYKa3umUmt/plZri6Zaa4+mXmubpmJrqlK+a6+mamu2VRZru6Zua7+mZmvHpnZr06Zya9+memvvpn5sG6aCbGOmhmxrpopsf6aObIumkmyPppZsl6aabJ+mnmyjpqJsp6ambKumqmy7pq5sv6aybMZ9UmzLprZs74vabPItTm0GKQJtCjbCbQ+mvm0TprptFlqObTemxm07psptP6bCbUemzm1SWgptY6bSbWoubm2+YRJt06bWbg+m3m46IvJuR6bibkpWpm5PptpuW6bmbl+m6m5/pu5ug6bybqOm9m6qWjpurjkybrY34m66RTpu06b6buenBm8Dpv5vG6cKbyYzvm8rpwJvP6cOb0enEm9LpxZvU6cmb1o5Jm9uR4pvh6cqb4unHm+Ppxpvk6cib6Ix+m/Dpzpvx6c2b8unMm/WIsZwE6dicBunUnAjp1ZwJ6dGcCunXnAzp05wNioKcEJhrnBLp1pwT6dKcFOnQnBXpz5wb6dqcIendnCTp3Jwl6ducLZVonC7p2ZwviPGcMOnenDLp4Jw5io+cOunLnDuJVpw+6eKcRunhnEfp35xIkkycUpaQnFeX2Jxa6eOcYOnknGfp5Zx26eaceOnnnOWSuZzn6eic6ZS1nOvp7Zzs6emc8OnqnPOWUJz0lsKc9pPOnQPp7p0G6e+dB5O8nQjp7J0J6eudDomonRLp950V6fadG4mVnR/p9J0j6fOdJunxnSiKm50q6fCdK46wnSyJp507jYOdPun6nT/p+Z1B6fidROn1nUbp+51I6fydUOpEnVHqQ51Z6kWdXIlMnV3qQJ1e6kGdYI2UnWGWt51k6kKdbJZRnW/qSp1y6kadeupLnYfqSJ2J6kedj4x7nZrqTJ2k6k2dqepOnavqSZ2v6fKdsupPnbSS35246lOduupUnbvqUp3B6lGdwupXncTqUJ3G6lWdz+pWndPqWZ3Z6lid5upbne3qXJ3v6l2d8phonfjqWp35kemd+o3rnf3qXp4a6l+eG+pgnh7qYZ516mKeeIyynnnqY5596mSef46tnoHqZZ6I6maei+pnnozqaJ6R6muekuppnpOYW56V6mqel5ftnp3qbJ6fl9mepeptnqaUnp6p6m6equpwnq3qcZ646m+euY2NnrqWy567loOevJv1nr6fgJ6/lpuexImpnszqc57Ni2+ezup0ns/qdZ7Q6nae0o2VntTqd57Y4NKe2ZbZntuR4Z7c6nie3ep6nt7qeZ7g6nue5ep8nujqfZ7v6n6e9OqAnvbqgZ736oKe+eqDnvvqhJ786oWe/eqGnwfqh58I6oifDpNDnxOM258V6oqfIJFsnyHqi58s6oyfO5VAnz7qjZ9K6o6fS+JWn07m2J9P6OufUuqPn1TqkJ9f6pKfYOqTn2HqlJ9il+6fY+qRn2bqlZ9n6pafauqYn2zql59y6pqfduqbn3fqmZ+Nl7Sfleqcn5zqnZ+d4nOfoOqe/wGBSf8DgZT/BIGQ/wWBk/8GgZX/CIFp/wmBav8KgZb/C4F7/wyBQ/8OgUT/D4Fe/xCCT/8RglD/EoJR/xOCUv8UglP/FYJU/xaCVf8Xglb/GIJX/xmCWP8agUb/G4FH/xyBg/8dgYH/HoGE/x+BSP8ggZf/IYJg/yKCYf8jgmL/JIJj/yWCZP8mgmX/J4Jm/yiCZ/8pgmj/KoJp/yuCav8sgmv/LYJs/y6Cbf8vgm7/MIJv/zGCcP8ygnH/M4Jy/zSCc/81gnT/NoJ1/zeCdv84gnf/OYJ4/zqCef87gW3/PIFf/z2Bbv8+gU//P4FR/0CBTf9BgoH/QoKC/0OCg/9EgoT/RYKF/0aChv9Hgof/SIKI/0mCif9Kgor/S4KL/0yCjP9Ngo3/ToKO/0+Cj/9QgpD/UYKR/1KCkv9TgpP/VIKU/1WClf9Wgpb/V4KX/1iCmP9Zgpn/WoKa/1uBb/9cgWL/XYFw/2EAof9iAKL/YwCj/2QApP9lAKX/ZgCm/2cAp/9oAKj/aQCp/2oAqv9rAKv/bACs/20Arf9uAK7/bwCv/3AAsP9xALH/cgCy/3MAs/90ALT/dQC1/3YAtv93ALf/eAC4/3kAuf96ALr/ewC7/3wAvP99AL3/fgC+/38Av/+AAMD/gQDB/4IAwv+DAMP/hADE/4UAxf+GAMb/hwDH/4gAyP+JAMn/igDK/4sAy/+MAMz/jQDN/44Azv+PAM//kADQ/5EA0f+SANL/kwDT/5QA1P+VANX/lgDW/5cA1/+YANj/mQDZ/5oA2v+bANv/nADc/50A3f+eAN7/nwDf/+OBUP/lgY8=",7070);const $={shape:x.square,qrOptions:{typeNumber:m[0],errorCorrectionLevel:g.Q},cornersSquareOptions:{type:L.square},cornersDotOptions:{type:q.square},dotsOptions:{type:G.square}},_={shape:x.square,qrOptions:{typeNumber:m[0],mode:void 0,errorCorrectionLevel:g.Q},imageOptions:{mode:K.center,imageSize:.4,crossOrigin:void 0,margin:0,fill:{color:"rgba(255,255,255,1)"}},cornersSquareOptions:{type:L.dot,color:"#000000"},cornersDotOptions:{type:q.dot,color:"#000000"},dotsOptions:{type:G.verticalLine,color:"#000000",size:10},backgroundOptions:{color:"#FFFFFF"}},ee={..._,dotsOptions:{..._.dotsOptions,type:G.rounded},cornersSquareOptions:{type:L.dot,color:"#000000"},cornersDotOptions:{type:q.dot,color:"#000000"}},te={..._,dotsOptions:{..._.dotsOptions,type:G.dot},cornersSquareOptions:{type:L.dot,color:"#000000"},cornersDotOptions:{type:q.dot,color:"#000000"}},ie={..._,dotsOptions:{..._.dotsOptions,type:G.classy},cornersSquareOptions:{type:L.classy,color:"#000000"},cornersDotOptions:{type:q.classy,color:"#000000"}},ne={plain:$,basic:_,rounded:ee,dots:te,classy:ie},re=e=>"number"==typeof e&&!isNaN(e)&&isFinite(e),se=(e,t)=>{const i=[];return Object.values(B).includes(e.type)||i.push({path:`${t}.type`,message:`Invalid gradient type. Must be one of: ${Object.values(B).join(", ")}`,value:e.type}),void 0===e.rotation||re(e.rotation)||i.push({path:`${t}.rotation`,message:"Rotation must be a valid number",value:e.rotation}),!e.colorStops||!Array.isArray(e.colorStops)||e.colorStops.length<2?i.push({path:`${t}.colorStops`,message:"Gradient must have at least 2 color stops",value:e.colorStops}):e.colorStops.forEach(((e,n)=>{(!re(e.offset)||e.offset<0||e.offset>1)&&i.push({path:`${t}.colorStops[${n}].offset`,message:"Color stop offset must be between 0 and 1",value:e.offset}),(e=>{if(new Set(["black","white","red","green","blue","yellow","purple","gray","grey","cyan","magenta","lime","pink","teal","brown","orange"]).has(e.toLowerCase()))return!0;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(e))return!0;if(/^#([A-Fa-f0-9]{4}){1,2}$/.test(e))return!0;if(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/.test(e)||/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([01]?\.?\d*)\)$/.test(e))return(e.match(/\d+/g)?.map(Number)||[]).every((e=>e>=0&&e<=255));return!1})(e.color)||i.push({path:`${t}.colorStops[${n}].color`,message:"Invalid color format",value:e.color})})),i};function oe(e){const t=[];let i={..._};return e.data&&"string"==typeof e.data||t.push({path:"data",message:"QR data is required and must be a string",value:e.data}),e.shape&&!Object.values(x).includes(e.shape)&&(t.push({path:"shape",message:`Invalid shape type. Must be one of: ${Object.values(x).join(", ")}`,value:e.shape}),e.shape=_.shape),e.qrOptions&&(e.qrOptions.typeNumber&&!Object.values(m).includes(e.qrOptions.typeNumber)&&(t.push({path:"qrOptions.typeNumber",message:"Invalid type number",value:e.qrOptions.typeNumber}),e.qrOptions.typeNumber=_.qrOptions?.typeNumber),e.qrOptions.errorCorrectionLevel&&!Object.values(g).includes(e.qrOptions.errorCorrectionLevel)&&(t.push({path:"qrOptions.errorCorrectionLevel",message:"Invalid error correction level",value:e.qrOptions.errorCorrectionLevel}),e.qrOptions.errorCorrectionLevel=_.qrOptions?.errorCorrectionLevel),e.qrOptions.mode&&!Object.values(f).includes(e.qrOptions.mode)&&(t.push({path:"qrOptions.mode",message:"Invalid mode",value:e.qrOptions.mode}),e.qrOptions.mode=_.qrOptions?.mode)),e.imageOptions&&(e.imageOptions.imageSize&&(!re(e.imageOptions.imageSize)||e.imageOptions.imageSize<=0||e.imageOptions.imageSize>1)&&(t.push({path:"imageOptions.imageSize",message:"Image size must be between 0 and 1",value:e.imageOptions.imageSize}),e.imageOptions.imageSize=_.imageOptions?.imageSize),e.imageOptions.margin&&(!re(e.imageOptions.margin)||e.imageOptions.margin<0)&&(t.push({path:"imageOptions.margin",message:"Margin must be a non-negative number",value:e.imageOptions.margin}),e.imageOptions.margin=_.imageOptions?.margin),e.imageOptions.mode&&!Object.values(K).includes(e.imageOptions.mode)&&(t.push({path:"imageOptions.mode",message:`Invalid image mode. Must be one of: ${Object.values(K).join(", ")}`,value:e.imageOptions.mode}),e.imageOptions.mode=_.imageOptions?.mode)),e.dotsOptions&&(e.dotsOptions.type&&!Object.values(G).includes(e.dotsOptions.type)&&(t.push({path:"dotsOptions.type",message:`Invalid dot type. Must be one of: ${Object.values(G).join(", ")}`,value:e.dotsOptions.type}),e.dotsOptions.type=_.dotsOptions?.type),e.dotsOptions.size&&(!re(e.dotsOptions.size)||e.dotsOptions.size<=0)&&(t.push({path:"dotsOptions.size",message:"Dot size must be a positive number",value:e.dotsOptions.size}),e.dotsOptions.size=_.dotsOptions?.size),e.dotsOptions.gradient&&t.push(...se(e.dotsOptions.gradient,"dotsOptions.gradient"))),e.cornersSquareOptions&&(e.cornersSquareOptions.type&&!Object.values(L).includes(e.cornersSquareOptions.type)&&(t.push({path:"cornersSquareOptions.type",message:`Invalid corner square type. Must be one of: ${Object.values(L).join(", ")}`,value:e.cornersSquareOptions.type}),e.cornersSquareOptions.type=_.cornersSquareOptions?.type),e.cornersSquareOptions.gradient&&t.push(...se(e.cornersSquareOptions.gradient,"cornersSquareOptions.gradient"))),e.cornersDotOptions&&(e.cornersDotOptions.type&&!Object.values(q).includes(e.cornersDotOptions.type)&&(t.push({path:"cornersDotOptions.type",message:`Invalid corner dot type. Must be one of: ${Object.values(q).join(", ")}`,value:e.cornersDotOptions.type}),e.cornersDotOptions.type=_.cornersDotOptions?.type),e.cornersDotOptions.gradient&&t.push(...se(e.cornersDotOptions.gradient,"cornersDotOptions.gradient"))),i={...i,...e},{warnings:t,validatedOptions:i}}const ae=/\.?0+$/;function le(e){return e.toFixed(7).replace(ae,"")}function he(e,...t){return e.reduce(((e,i,n)=>{let r="";return n&&(r=t[n-1]),"number"==typeof r&&(r=le(r)),`${e}${r}${i}`}),"").trim().replace(/[\s\n\r]+/gim," ")}class ce{get element(){return this._element}constructor(e,t){this.type=e,this.document=t}draw(e){let t;switch(this.type){case q.square:t=this.drawSquare;break;case q.heart:t=this.drawHeart;break;case q.rounded:t=this.drawRounded;break;case q.classy:t=this.drawClassy;break;case q.inpoint:t=this.drawInpoint;break;case q.outpoint:t=this.drawOutpoint;break;case q.dot:default:t=this.drawDot}t.call(this,e)}rotateFigure({x:e,y:t,size:i,rotation:n=0,draw:r}){const s=e+i/2,o=t+i/2;r(),this._element?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`)}basicDot(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",le(i+t/2)),this._element.setAttribute("cy",le(n+t/2)),this._element.setAttribute("r",le(t/2.1))}})}basicSquare(e){const{size:t,x:i,y:n}=e,r=t/11;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",le(i+r)),this._element.setAttribute("y",le(n+r)),this._element.setAttribute("width",le(t-2*r)),this._element.setAttribute("height",le(t-2*r))}})}basicHeart(e){const{size:t,x:i,y:n}=e;this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");let r=!1,s=0;this._element.setAttribute("d",["M",1,.3262506,"c",0,.0383376,-.0064626,.0758377,-.0193751,.1125001,"s",-.0356247,.076875,-.0681248,.1206252,"c",-.0325,.0437499,-.0762503,.0931247,-.1312501,.1481249,"C",.7262502,.7625008,.6566626,.8279132,.5724999,.9037505,"L",.5,.9687506,"L",.4275001,.9037505,"C",.3433374,.8279132,.2737499,.7625005,.21875,.7075007,"C",.1637501,.6525008,.1199999,.6031258,.0874999,.5593758,"S",.0322876,.4754133,.0193751,.4387506,"S",0,.3645881,0,.3262506,"c",0,-.0783374,.0262499,-.1437498,.07875,-.1962499,"s",.1179124,-.07875,.1962499,-.07875,"c",.0433376,0,.0845875,.0091625,.12375,.0274999,"S",.4716623,.1229131,.5,.1562506,"c",.0283374,-.0333375,.0620874,-.0591625,.1012502,-.0775,"c",.0391627,-.0183375,.0804126,-.0274999,.12375,-.0274999,"c",.0783374,0,.1437497,.0262499,.1962501,.07875,"S",1,.2479131,1,.3262506,"z"].map((e=>"string"==typeof e?(s=0,r=e.toUpperCase()==e,e):(s++,e*=t,r&&(e+=s%2==1?i:n),le(e)))).join(" "))}basicRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",le(i)),this._element.setAttribute("y",le(n)),this._element.setAttribute("width",le(t)),this._element.setAttribute("height",le(t)),this._element.setAttribute("rx",le(t/4)),this._element.setAttribute("ry",le(t/4))}})}basicClassy(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${4.5*r} v ${-4.5*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} H ${i} z`)}})}basicInpoint(e){const{size:t,x:i,y:n}=e,r=t;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+r/2} v ${r/4} a ${r/4}, ${r/4} 0 0 0 ${r/4}, ${r/4} h ${r/4*3} v ${-r/4*3} a ${r/4}, ${r/4} 0 0 0 ${-r/4}, ${-r/4} h ${-r/2} a ${r/4}, ${r/4} 0 0 0 ${-r/4}, ${r/4} z`)}})}drawDot({x:e,y:t,size:i,rotation:n}){this.basicDot({x:e,y:t,size:i,rotation:n})}drawSquare({x:e,y:t,size:i,rotation:n}){this.basicSquare({x:e,y:t,size:i,rotation:n})}drawHeart({x:e,y:t,size:i,rotation:n}){this.basicHeart({x:e,y:t,size:i,rotation:n})}drawRounded({x:e,y:t,size:i,rotation:n}){this.basicRounded({x:e,y:t,size:i,rotation:n})}drawClassy({x:e,y:t,size:i,rotation:n}){this.basicClassy({x:e,y:t,size:i,rotation:n})}drawInpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:n})}drawOutpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:(n||0)+Math.PI})}}class de{get element(){return this._element}get fill(){return this._fill}constructor(e,t){this.type=e,this.document=t}draw(e){let t;switch(this.type){case L.square:t=this.drawSquare;break;case L.rounded:t=this.drawExtraRounded;break;case L.classy:t=this.drawClassy;break;case L.outpoint:t=this.drawOutpoint;break;case L.inpoint:t=this.drawInpoint;break;case L.dot:default:t=this.drawDot}t.call(this,e)}rotateFigure({x:e,y:t,size:i,rotation:n=0,draw:r}){const s=e+i/2,o=t+i/2;r(),this._element?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`),this._fill?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`)}basicDot(e){const{size:t,x:i,y:n}=e,r=t/8,s=.5*t,o=s-r;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i+t/2} ${n+(t/2-s)} a ${s} ${s} 0 1 0 0.1 0 z m 0 ${r} a ${o} ${o} 0 1 1 -0.1 0 Z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i+t/2} ${n+(t/2-(s+r))} a ${s+r} ${s+r} 0 1 0 0.1 0 z`)}})}basicSquare(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t} v ${-t} z M ${i+r} ${n+r} h ${t-2*r} v ${t-2*r} h ${2*r-t} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i-r} ${n-r} h ${t+2*r} v ${t+2*r} h ${-t-2*r} z`)}})}basicExtraRounded(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*-r} v ${-2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*r} z M ${i+2.5*r} ${n+r} h ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*r} v ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*r} h ${-2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*-r} v ${-2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*-r} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i-r} ${n+2.5*r} v ${2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*r} ${3.5*r} h ${2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*r} ${3.5*-r} v ${-2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*-r} ${3.5*-r} h ${-2*r} a ${3.5*r} ${3.5*r}, 0, 0, 0, ${3.5*-r} ${3.5*r} z`)}})}basicClassy(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${4.5*r} v ${-4.5*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} H ${i} z M ${i+2.5*r} ${n+r} h ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*r} v ${3.5*r} h ${-3.5*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*-r} v ${-3.5*r} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i+.5*r} ${n-r} h ${4*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*r} ${3.5*r} v ${5.5*r} h ${-5.5*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*-r} ${3.5*-r} v ${-5.5*r} z`)}})}basicInpoint(e){const{size:t,x:i,y:n}=e,r=t/7;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("clip-rule","evenodd"),this._element.setAttribute("d",he`M ${i} ${n+2.5*r} v ${2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*r} ${2.5*r} h ${4.5*r} v ${-4.5*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*-r} h ${-2*r} a ${2.5*r} ${2.5*r}, 0, 0, 0, ${2.5*-r} ${2.5*r} z M ${i+2.5*r} ${n+r} h ${2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*r} v ${3.5*r} h ${-3.5*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*-r} ${1.5*-r} v ${-2*r} a ${1.5*r} ${1.5*r}, 0, 0, 1, ${1.5*r} ${1.5*-r} z`),this._fill=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._fill.setAttribute("clip-rule","evenodd"),this._fill.setAttribute("d",he`M ${i+.5*r} ${n-r} h ${4*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*r} ${3.5*r} v ${5.5*r} h ${-5.5*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*-r} ${3.5*-r} v ${-2*r} a ${3.5*r} ${3.5*r}, 0, 0, 1, ${3.5*r} ${3.5*-r} z`)}})}drawDot({x:e,y:t,size:i,rotation:n}){this.basicDot({x:e,y:t,size:i,rotation:n})}drawSquare({x:e,y:t,size:i,rotation:n}){this.basicSquare({x:e,y:t,size:i,rotation:n})}drawExtraRounded({x:e,y:t,size:i,rotation:n}){this.basicExtraRounded({x:e,y:t,size:i,rotation:n})}drawClassy({x:e,y:t,size:i,rotation:n}){this.basicClassy({x:e,y:t,size:i,rotation:n})}drawInpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:n})}drawOutpoint({x:e,y:t,size:i,rotation:n}){this.basicInpoint({x:e,y:t,size:i,rotation:(n||0)+Math.PI})}}class ue{get element(){return this._element}constructor(e,t){this.type=e,this.document=t}draw(e){let t;switch(this.type){case G.dot:t=this.drawDot;break;case G.randomDot:t=this.drawRandomDot;break;case G.classy:t=this.drawClassy;break;case G.classyRounded:t=this.drawClassyRounded;break;case G.rounded:t=this.drawRounded;break;case G.verticalLine:t=this.drawVerticalLine;break;case G.horizontalLine:t=this.drawHorizontalLine;break;case G.extraRounded:t=this.drawExtraRounded;break;case G.diamond:t=this.drawDiamond;break;case G.smallSquare:t=this.drawSmallSquare;break;case G.tinySquare:t=this.drawTinySquare;break;case G.star:t=this.drawStar;break;case G.plus:t=this.drawPlus;break;case G.square:default:t=this.drawSquare}t.call(this,e)}rotateFigure({x:e,y:t,size:i,rotation:n=0,draw:r}){const s=e+i/2,o=t+i/2;r(),this._element?.setAttribute("transform",`rotate(${le(180*n/Math.PI)},${s},${o})`)}basicDot(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","circle"),this._element.setAttribute("cx",le(i+t/2)),this._element.setAttribute("cy",le(n+t/2)),this._element.setAttribute("r",le(t/2))}})}basicSquare(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","rect"),this._element.setAttribute("x",le(i)),this._element.setAttribute("y",le(n)),this._element.setAttribute("width",le(t)),this._element.setAttribute("height",le(t))}})}basicSideRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t/2} a ${t/2} ${t/2}, 0, 0, 0, 0 ${-t} z`)}})}basicCornerRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t} v ${-t/2} a ${t/2} ${t/2}, 0, 0, 0, ${-t/2} ${-t/2} z`)}})}basicCornerExtraRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t} h ${t} a ${t} ${t}, 0, 0, 0, ${-t} ${-t} z`)}})}basicCornersRounded(e){const{size:t,x:i,y:n}=e;this.rotateFigure({...e,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path"),this._element.setAttribute("d",he`M ${i} ${n} v ${t/2} a ${t/2} ${t/2}, 0, 0, 0, ${t/2} ${t/2} h ${t/2} v ${-t/2} a ${t/2} ${t/2}, 0, 0, 0, ${-t/2} ${-t/2} z`)}})}drawDot({x:e,y:t,size:i}){this.basicDot({x:e,y:t,size:i,rotation:0})}drawRandomDot({x:e,y:t,size:i}){const n=.25*Math.random()+.75;this.basicDot({x:e,y:t,size:i*n,rotation:0})}drawSquare({x:e,y:t,size:i}){this.basicSquare({x:e,y:t,size:i,rotation:0})}drawSmallSquare({x:e,y:t,size:i}){const n=i;i=.7*n,e+=.15*n,t+=.15*n,this.basicSquare({x:e,y:t,size:i,rotation:0})}drawTinySquare({x:e,y:t,size:i}){const n=i;i=.6*n,e+=.35*n,t+=.35*n,this.basicSquare({x:e,y:t,size:i,rotation:0})}drawDiamond({x:e,y:t,size:i}){this.basicSquare({x:e,y:t,size:i,rotation:Math.PI/4})}drawRounded({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0,l=r+s+o+a;if(0!==l)if(l>2||r&&s||o&&a)this.basicSquare({x:e,y:t,size:i,rotation:0});else{if(2===l){let n=0;return r&&o?n=Math.PI/2:o&&s?n=Math.PI:s&&a&&(n=-Math.PI/2),void this.basicCornerRounded({x:e,y:t,size:i,rotation:n})}if(1===l){let n=0;return o?n=Math.PI/2:s?n=Math.PI:a&&(n=-Math.PI/2),void this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}else this.basicDot({x:e,y:t,size:i,rotation:0})}drawVerticalLine({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;if(0===r+s+o+a||r&&!o&&!a||s&&!o&&!a)this.basicDot({x:e,y:t,size:i,rotation:0});else if(o&&a)this.basicSquare({x:e,y:t,size:i,rotation:0});else if(!o||a)if(!a||o);else{const n=-Math.PI/2;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}else{const n=Math.PI/2;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}drawHorizontalLine({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;if(0===r+s+o+a||o&&!r&&!s||a&&!r&&!s)this.basicDot({x:e,y:t,size:i,rotation:0});else if(r&&s)this.basicSquare({x:e,y:t,size:i,rotation:0});else if(!r||s)if(!s||r);else{const n=Math.PI;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}else{const n=0;this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}drawExtraRounded({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0,l=r+s+o+a;if(0!==l)if(l>2||r&&s||o&&a)this.basicSquare({x:e,y:t,size:i,rotation:0});else{if(2===l){let n=0;return r&&o?n=Math.PI/2:o&&s?n=Math.PI:s&&a&&(n=-Math.PI/2),void this.basicCornerExtraRounded({x:e,y:t,size:i,rotation:n})}if(1===l){let n=0;return o?n=Math.PI/2:s?n=Math.PI:a&&(n=-Math.PI/2),void this.basicSideRounded({x:e,y:t,size:i,rotation:n})}}else this.basicDot({x:e,y:t,size:i,rotation:0})}drawClassy({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;0!==r+s+o+a?r||o?s||a?this.basicSquare({x:e,y:t,size:i,rotation:0}):this.basicCornerRounded({x:e,y:t,size:i,rotation:Math.PI/2}):this.basicCornerRounded({x:e,y:t,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:e,y:t,size:i,rotation:Math.PI/2})}drawClassyRounded({x:e,y:t,size:i,getNeighbor:n}){const r=n?+n(-1,0):0,s=n?+n(1,0):0,o=n?+n(0,-1):0,a=n?+n(0,1):0;0!==r+s+o+a?r||o?s||a?this.basicSquare({x:e,y:t,size:i,rotation:0}):this.basicCornerExtraRounded({x:e,y:t,size:i,rotation:Math.PI/2}):this.basicCornerExtraRounded({x:e,y:t,size:i,rotation:-Math.PI/2}):this.basicCornersRounded({x:e,y:t,size:i,rotation:Math.PI/2})}drawStar({x:e,y:t,size:i}){this.rotateFigure({x:e,y:t,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const n=e+i/2,r=t+i/2,s=1.3*i/2,o=.5*s;let a="";for(let e=0;e<10;e++){const t=e*Math.PI/5-Math.PI/2,i=e%2==0?s:o;a+=(0===e?"M":"L")+`${n+i*Math.cos(t)},${r+i*Math.sin(t)}`}a+="Z",this._element?.setAttribute("d",a)}})}drawPlus({x:e,y:t,size:i}){this.rotateFigure({x:e,y:t,size:i,rotation:0,draw:()=>{this._element=this.document.createElementNS("http://www.w3.org/2000/svg","path");const n=.35*i,r=.85*i,s=(i-r)/2,o=n/2,a=[`M ${e+i/2-o} ${t+s}`,`h ${n}`,`v ${r}`,"h "+-n,"z",`M ${e+s} ${t+i/2-o}`,`h ${r}`,`v ${n}`,"h "+-r,"z"].join(" ");this._element?.setAttribute("d",a)}})}}const pe={toDataURL:e=>"string"==typeof e&&e.startsWith("data:")?Promise.resolve(e):new Promise(((t,i)=>{if("string"==typeof e){const n=new XMLHttpRequest,r=()=>{n.abort()};n.onload=()=>{if(n.status<200||n.status>=300)return r(),void i(new Error(`Failed to load image: ${n.statusText}`));const e=new FileReader;e.onloadend=()=>{r(),t(e.result)},e.onerror=()=>{r(),i(new Error("Failed to read image blob"))},e.readAsDataURL(n.response)},n.onerror=n.ontimeout=n.onabort=()=>{r(),i(new Error("Image load aborted or failed"))};try{n.open("GET",e,!0),n.responseType="blob",n.timeout=1e4,n.send()}catch(e){r(),i(e)}}else{const n=new FileReader;n.onloadend=()=>{t(n.result)},n.onerror=()=>{i(new Error("Failed to read local image"))},n.readAsDataURL(e)}})).catch((e=>(console.error("Image loading error:",e),"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjY2NjIi8+PHRleHQgeD0iNTAlIiB5PSI1MCUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDAiIGZvbnQtc2l6ZT0iMTYiPkxvZ28gbG9hZCBlcnJvcjwvdGV4dD48L3N2Zz4="))),getSize:(e,t)=>new Promise(((i,n)=>{const r=new Image,s=setTimeout((()=>{n(new Error("Image loading timed out"))}),15e3);"string"==typeof t&&(r.crossOrigin=t);const o=()=>{clearTimeout(s),r.onload=r.onerror=r.onabort=null,r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="};r.onload=()=>{o(),i({width:r.width,height:r.height})},r.onerror=r.onabort=()=>{o(),n(new Error("Failed to load image"))};try{"string"==typeof e?r.src=e:pe.toDataURL(e).then((e=>{e?r.src=e:n(new Error("Invalid image source"))})).catch(n)}catch(e){o(),n(e)}})).catch((e=>(console.error("Image size detection error:",e),{width:200,height:200})))};function me(e){let t,i=[],n=1;if("#"===(e=e.toLowerCase())[0]){const t=e.slice(1),r=t.length;r<=4?(i=[parseInt(t[0]+t[0],16),parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16)],4===r&&(n=parseInt(t[3]+t[3],16)/255)):(i=[parseInt(t[0]+t[1],16),parseInt(t[2]+t[3],16),parseInt(t[4]+t[5],16)],8===r&&(n=parseInt(t[6]+t[7],16)/255)),i[0]||(i[0]=0),i[1]||(i[1]=0),i[2]||(i[2]=0)}else{if(!(t=/^((?:rgba?))\s*\(([^)]*)\)/.exec(e)))return{value:e,alpha:n};{const e=3;i=t[2].trim().split(/\s*[,/]\s*|\s+/),i=i.map(((e,t)=>{if("%"===e[e.length-1]){const i=parseFloat(e)/100;return 3===t?i:255*i}return"none"===e?0:parseFloat(e)})),n=i.length>e?i.pop():1}}return{value:"#"+i.map((e=>Math.max(0,Math.min(255,e)).toString(16).padStart(2,"0"))).join(""),alpha:Math.max(0,Math.min(1,n))}}const ge=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],fe=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];class be{constructor(e){this.roundValue=e=>"number"==typeof e?e:parseInt(e.replace("%",""),10)/100;const t=e.margin||0,i="circle"===e.shape?.1:.3,{bordersMain:n,bordersOuter:r,bordersInner:s}=e,o=Math.min(e.width,e.height),a=C(e.borderOptions?.radius),l=C(e.borderOptions?.inner?.radius,a),h=a&&j(a)>0?j(a)/100*o:0,c=(a&&j(l)>0?j(l)/100*o:0)??h,d=c>0&&e.borderOptions?.hasBorder?c*i:0;this._hls=e.hls,this.finalWidth=e.width+n.left+n.right+r.left+r.right+s.left+s.right,this.finalHeight=e.height+n.top+n.bottom+r.top+r.bottom+s.top+s.bottom;const u=n.left+n.right+r.left+r.right+s.left+s.right,p=n.top+n.bottom+r.top+r.bottom+s.top+s.bottom,m=e.borderOptions?.hasBorder?this.finalWidth-u-2*r.left-2*s.left-s.right-2*t-d:this.finalWidth-2*t,g=e.borderOptions?.hasBorder?this.finalHeight-p-2*r.top-2*s.top-s.top-2*t-d:this.finalHeight-2*t,f=m/e.width,b=g/e.height,y=Math.min(f,b),w=Math.min(Math.max(e.scale??1,0),1.5),k=Math.min(Math.max(e.borderOptions?.inner?.scale??1,0),1.5),O=e.borderOptions?.inner?.horizontalOffset||0,A=e.borderOptions?.inner?.verticalOffset||0;e.scale=y*w*k||1,this.options=e,this.document=e.document,this.imageTools=e.imageTools||pe,this._element=this.document.createElementNS("http://www.w3.org/2000/svg","svg");const S=le(e.width),Z=le(e.height);e.isResponsive||(this._element.setAttribute("width",S),this._element.setAttribute("height",Z)),this._element.setAttribute("viewBox",`0 0 ${S} ${Z}`),this.defs=this.document.createElementNS("http://www.w3.org/2000/svg","defs"),this._element.appendChild(this.defs),this._innerQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g");let I=(m-e.width*e.scale)/2+t-O+d/2,W=(g-e.height*e.scale)/2+t-A+d/2;if(e.borderOptions?.hasBorder){const t={top:T(e.borderOptions,"top"),right:T(e.borderOptions,"right"),bottom:Y(e.borderOptions,"bottom",this._hls),left:T(e.borderOptions,"left")},i=e.borderOptions.thickness||0,n=e.borderOptions.borderOuter?.thickness||0,r=e.borderOptions.borderInner?.thickness||0,s=e.borderOptions.noBorderThickness||i/4;W+=((t.top?i:s)-(t.bottom?i:s))/2+n+r+r/2,I+=((t.left?i:s)-(t.right?i:s))/2+n+r+r/2}e.verticalOffset&&(W-=e.verticalOffset),e.horizontalOffset&&(I-=e.horizontalOffset),this._instanceId=be.instanceCount++,1===e.scale&&0===I&&0===W||this._innerQrGroup.setAttribute("transform",`translate(${I}, ${W}) scale(${e.scale})`),this._maskedQrGroup=this.document.createElementNS("http://www.w3.org/2000/svg","g"),this._maskedQrGroup.setAttribute("mask",`url(#qr-mask-${this._instanceId})`),this._maskedQrGroup.appendChild(this._innerQrGroup),this._element.appendChild(this._maskedQrGroup)}get element(){return this._element}get qrGroup(){return this._innerQrGroup||this._element}get width(){return this.finalWidth}get height(){return this.finalHeight}get svgSize(){return{width:this.options.width,height:this.options.height}}getElement(){return this._element}async drawQR(e){const t=e.getModuleCount(),i=parseInt(((t-17)/4).toFixed(0),10),n=this.options.dotsOptions.size;let r={hideXDots:0,hideYDots:0,width:0,height:0};if(this.qr=e,this.options.borderOptions?.hasBorder||this.drawBackground(),this.options.image){const e=await this.imageTools.getSize(this.options.image,this.options.imageOptions.crossOrigin),{imageOptions:s}=this.options;if(this.options.imageOptions.mode==K.background){const t=0,i=(this.finalWidth-2*t*n)*s.imageSize,o=(this.finalHeight-2*t*n)*s.imageSize;let{width:a,height:l}=e;l=l/a*i,a=i,l>o&&(a=a/l*o,l=o),r={hideXDots:0,hideYDots:0,width:a,height:l}}else{const s=this.options.imageOptions.imageSize*this.options.errorCorrectionPercent,o=u.getPatternPosition(i),a=Math.floor(s*(t*t-192-2*(t-16)-o.length**2*25));r=function({originalHeight:e,originalWidth:t,maxHiddenDots:i,maxHiddenAxisDots:n,dotSize:r,margin:s}){const o={x:0,y:0},a={x:0,y:0};if(e<=0||t<=0||i<=0||r<=0||4*s**2>i)return{height:0,width:0,hideYDots:0,hideXDots:0};n&&n%2==0&&(n=Math.max(1,n-1));const l=Math.max(t,e),h=Math.min(t,e);let c=0,d=(n||i)-2*s;do{const e=c+(d-c)/2;let t=Math.max(1,Math.ceil(e+2*s));t%2==0&&t++;let n=Math.max(1,Math.ceil(e*h/l+2*s));n%2==0&&n++,t*n>i?d=e:c=e}while(Math.abs(c-d)>.001);const u=c;let p=Math.max(1,Math.ceil(u+2*s));p%2==0&&p++;let m=Math.max(1,Math.ceil(u*h/l+2*s));m%2==0&&m++,t>e?(o.x=p,o.y=m):(o.x=m,o.y=p);const g=(o.x-2*s)*r,f=(o.y-2*s)*r;return a.x=g,a.y=g*e/t,a.y>f&&(a.y=f,a.x=f*t/e),{height:Math.round(a.y+2*s*r),width:Math.round(a.x+2*s*r),hideYDots:o.y,hideXDots:o.x}}({originalWidth:e.width,originalHeight:e.height,maxHiddenDots:a,maxHiddenAxisDots:t-14,dotSize:n,margin:this.options.imageOptions.margin})}}this.options.imageOptions.mode!=K.overlay&&this.options.image&&r.width>0&&r.height>0&&await this.drawImage({width:r.width,height:r.height,count:t,dotSize:n}),this.drawDots(((e,i)=>!(this.options.imageOptions.mode==K.center&&e>=(t-r.hideXDots)/2&&e<(t+r.hideXDots)/2&&i>=(t-r.hideYDots)/2&&i<(t+r.hideYDots)/2)&&!(e<8&&i<8||e>=t-8&&i<8||i>=t-8&&e<8))),this.options.imageOptions.mode==K.overlay&&this.options.image&&r.width>0&&r.height>0&&await this.drawImage({width:r.width,height:r.height,count:t,dotSize:n}),this.drawCorners()}drawBackground(){const e=this.options;if(this._element&&e.backgroundOptions){const t=e.backgroundOptions.gradient,i=e.backgroundOptions.color;this.createColor({options:t,color:i,additionalRotation:0,x:0,y:0,height:e.height,width:e.width,name:`background-color-${this._instanceId}`});const n=Math.min(e.width,e.height),r=this.document.createElementNS("http://www.w3.org/2000/svg","rect");[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask);const s=e.backgroundOptions?.round||0,o=this.roundValue(s);r.setAttribute("x",le((e.width-n)/2)),r.setAttribute("y",le((e.height-n)/2)),r.setAttribute("width",le(n)),r.setAttribute("height",le(n)),r.setAttribute("rx",le(n/2*o)),this.backgroundMaskGroup.appendChild(r)}}drawBackgroundForBorder(e,t){const i=this.options;if(i.backgroundOptions){const n=i.backgroundOptions.gradient,r=i.backgroundOptions.color||"#ffffff",s=Math.min(i.width,i.height)-2*e,o=(i.width-s)/2,a=(i.height-s)/2,l=t-e,h=this.createColor({options:n,borderOptions:i.borderOptions,color:r,additionalRotation:0,x:o,y:a,height:s,width:s,name:`background-color-${this._instanceId}`,returnSVGGroup:!0}),c=this.document.createElementNS("http://www.w3.org/2000/svg","rect");return[this.backgroundMask,this.backgroundMaskGroup]=this.createMask(`mask-background-color-${this._instanceId}`),this.defs.appendChild(this.backgroundMask),c.setAttribute("x",le(o)),c.setAttribute("y",le(a)),c.setAttribute("width",le(s)),c.setAttribute("height",le(s)),c.setAttribute("rx",le(l)),this.backgroundMaskGroup.appendChild(c),h}}drawDots(e){if(!this.qr)throw new Error("QR code is not defined");const t=this.options,i=this.qr.getModuleCount();if(i>t.width||i>t.height)throw new Error("The canvas is too small");const n=t.dotsOptions.size;let r=Math.min(t.width,t.height);t.imageOptions.mode==K.background&&(r-=2*n*(t.imageOptions.margin||0));const s=Math.floor((t.width-i*n)/2);let o=Math.floor((t.height-i*n)/2);if(t.offset){const e=(t.height-i*n)/2;o+=Math.min(Math.abs(t.offset),e)*Math.sign(t.offset)}let a=new ue(t.dotsOptions.type,this.document);const l=new ue(G.tinySquare,this.document),h=new ue(G.square,this.document);[this.dotsMask,this.dotsMaskGroup]=this.createMask(`mask-dot-color-${this._instanceId}`),this.defs.appendChild(this.dotsMask),t.imageOptions.mode==K.background&&([this.lightDotsMask,this.lightDotsMaskGroup]=this.createMask(`mask-light-dot-color-${this._instanceId}`),this.defs.appendChild(this.lightDotsMask));let c=0,d=i;t.shape===x.circle?(c=Math.floor((r/n-i-2)/2),d=i+2*c):t.imageOptions.mode==K.background&&(c=1,d=i+2*c);const p=s-c*n,m=o-c*n,g=p,f=m,b=i+2*c,y=new Array(d),w=Math.floor(d/2);for(let n=0;n<d;n++){y[n]=new Array(d);for(let r=0;r<d;r++)if(n>c-1&&n<d-c&&r>c-1&&r<d-c){const t=n-c,i=r-c;e&&!e(t,i)?y[n][r]=void 0:y[n][r]=!!this.qr.isDark(i,t)}else t.shape===x.circle&&Math.sqrt((n-w)*(n-w)+(r-w)*(r-w))>w?y[n][r]=void 0:y[n][r]=n!=c-1&&n!=d-c&&r!=c-1&&r!=d-c?this.qr.isDark(r-2*c<0?r:r>=i?r-2*c:r-c,n-2*c<0?n:n>=i?n-2*c:n-c):(r==c-1&&(n<c+8||n>d-c-9)||r==d-c&&n<c+8||n==c-1&&(r<c+8||r>d-c-9)||n==d-c&&r<c+8)&&void 0}const k=(i-17)/4,O=u.getPatternPosition(k);for(let e=0;e<d;e++){const t=O.find((t=>e-c>t-3&&e-c<t+3));for(let i=0;i<d;i++){const r=O.find((e=>i-c>e-3&&i-c<e+3));null!=y[e][i]&&(this.lightDotsMask&&(a=t&&r&&(t!=O[0]&&r!=O[0]||r!=O[0]&&r!=O[O.length-1]||t!=O[0]&&t!=O[O.length-1])?h:l),y[e][i]?(a.draw({x:p+e*n,y:m+i*n,size:n,getNeighbor:(t,n)=>!0===y[e+t]?.[i+n]}),a.element&&this.dotsMaskGroup&&this.dotsMaskGroup.appendChild(a.element)):this.lightDotsMask&&(a.draw({x:p+e*n,y:m+i*n,size:n,getNeighbor:(t,n)=>!1===y[e+t]?.[i+n]}),a.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(a.element)))}}this.lightDotsMask&&this.createColor({options:t.imageOptions.fill?.gradient,color:t.imageOptions.fill?.color,additionalRotation:0,x:g,y:f,height:b*n,width:b*n,name:`light-dot-color-${this._instanceId}`}),this.createColor({options:t.dotsOptions?.gradient,color:t.dotsOptions.color,additionalRotation:0,x:g,y:f,height:b*n,width:b*n,name:`dot-color-${this._instanceId}`})}drawCorners(){if(!this.qr)throw new Error("QR code is not defined");const e=this.qrGroup,t=this.options;if(!e)throw new Error("Element code is not defined");const i=this.qr.getModuleCount(),n=t.dotsOptions.size,r=7*n,s=3*n,o=Math.floor((t.width-i*n)/2);let a=Math.floor((t.height-i*n)/2);if(t.offset){const e=(t.height-i*n)/2,r=Math.min(Math.abs(t.offset),e)*Math.sign(t.offset);a+=r}[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((([e,l,h])=>{const c=o+e*n*(i-7),d=a+l*n*(i-7);let u=this.dotsMask,p=this.dotsMaskGroup,m=this.dotsMask,g=this.dotsMaskGroup;if((t.cornersSquareOptions?.gradient||t.cornersSquareOptions?.color)&&([u,p]=this.createMask(`mask-corners-square-color-${e}-${l}-${this._instanceId}`),this.defs.appendChild(u),m=u,g=p,this.createColor({options:t.cornersSquareOptions?.gradient,color:t.cornersSquareOptions?.color,additionalRotation:h,x:c,y:d,height:r,width:r,name:`corners-square-color-${e}-${l}-${this._instanceId}`})),t.cornersSquareOptions?.type){const e=new de(t.cornersSquareOptions.type,this.document);e.draw({x:c,y:d,size:r,rotation:h}),e.element&&p&&p.appendChild(e.element),e.fill&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(e.fill)}else{const e=new ue(t.dotsOptions.type,this.document);for(let t=0;t<ge.length;t++)for(let i=0;i<ge[t].length;i++)ge[t]?.[i]?(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>!!ge[t+e]?.[i+n]}),e.element&&p&&p.appendChild(e.element)):this.lightDotsMask&&!fe[t]?.[i]&&(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>!ge[t+e]?.[i+n]&&!fe[t+e]?.[i+n]}),e.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(e.element));if(this.lightDotsMask)for(let t=-1;t<8;t++)for(let i=-1;i<8;i++)-1!=t&&7!=t&&-1!=i&&7!=i||(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>{const r=t+e,s=i+n;return r>=-1&&r<=7&&s>=-1&&s<=7&&(-1==r||7==r||-1==s||7==s)}}),e.element&&this.lightDotsMaskGroup&&this.lightDotsMaskGroup.appendChild(e.element))}if((t.cornersDotOptions?.gradient||t.cornersDotOptions?.color)&&([m,g]=this.createMask(`mask-corners-dot-color-${e}-${l}-${this._instanceId}`),this.defs.appendChild(m),this.createColor({options:t.cornersDotOptions?.gradient,color:t.cornersDotOptions?.color,additionalRotation:h,x:c+2*n,y:d+2*n,height:s,width:s,name:`corners-dot-color-${e}-${l}-${this._instanceId}`})),t.cornersDotOptions?.type){const e=new ce(t.cornersDotOptions.type,this.document);e.draw({x:c+2*n,y:d+2*n,size:s,rotation:h}),e.element&&g&&g.appendChild(e.element)}else{const e=new ue(t.dotsOptions.type,this.document);for(let t=0;t<fe.length;t++)for(let i=0;i<fe[t].length;i++)fe[t]?.[i]&&(e.draw({x:c+t*n,y:d+i*n,size:n,getNeighbor:(e,n)=>!!fe[t+e]?.[i+n]}),e.element&&g&&g.appendChild(e.element))}}))}async drawImage({width:e,height:t,count:i,dotSize:n}){const r=this.options,s=Math.floor((r.width-i*n)/2);let o=Math.floor((r.height-i*n)/2);if(r.offset){const e=(r.height-i*n)/2;o+=Math.min(Math.abs(r.offset),e)*Math.sign(r.offset)}let a=r.imageOptions.margin*n;r.imageOptions.mode==K.background&&(a=0);const l=s+a+(i*n-e)/2,h=o+a+(i*n-t)/2,c=e-2*a,d=t-2*a,u=await this.imageTools.toDataURL(r.image||"");let p=this.document.createElementNS("http://www.w3.org/2000/svg","image");if(p.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",u||""),u?.startsWith("data:image/svg+xml;")){let e=u.substring(19);const t=e.indexOf(","),i=e.substring(0,t);if(e=e.substring(t+1),"base64"===i)e="function"==typeof atob?atob(e):Buffer.from(e,"base64").toString("utf8");else e="";if(e){const t=(new DOMParser).parseFromString(e,"text/xml"),i=Array.from(t.getElementsByTagName("svg"));i.length&&(p=i[0],p.setAttribute("overflow","visible"))}}p&&u&&(p.setAttribute("x",le(l)),p.setAttribute("y",le(h)),p.setAttribute("width",`${le(c)}px`),p.setAttribute("height",`${le(d)}px`),this.qrGroup.appendChild(p))}createColor({options:e,borderOptions:t,color:i,additionalRotation:n,x:r,y:s,height:o,width:a,name:l,returnSVGGroup:h=!1}){const c=a>o?a:o,d=this.document.createElementNS("http://www.w3.org/2000/svg","rect");if(d.setAttribute("x",le(r)),d.setAttribute("y",le(s)),d.setAttribute("height",le(o)),d.setAttribute("width",le(a)),d.setAttribute("style",`mask:url(#mask-${l}-${this._instanceId})`),e){let i;if(e.type===B.radial){i=this.document.createElementNS("http://www.w3.org/2000/svg","radialGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse");let e=r+a/2,n=s+o/2;if(t){const i=t.thickness/2,l=2;T(t,"top")&&!Y(t,"bottom",this._hls)?n=s+i*l+o/2:!T(t,"top")&&Y(t,"bottom",this._hls)&&(n=s-i*l+o/2),T(t,"right")&&!T(t,"left")?e=r-i*l+a/2:!T(t,"right")&&T(t,"left")&&(e=r+i*l+a/2)}i.setAttribute("fx",le(e)),i.setAttribute("fy",le(n)),i.setAttribute("cx",le(r+a/2)),i.setAttribute("cy",le(s+o/2)),i.setAttribute("r",le(c/2))}else{const t=((e.rotation||0)+n)%(2*Math.PI),h=(t+2*Math.PI)%(2*Math.PI);let c=r+a/2,d=s+o/2,u=r+a/2,p=s+o/2;h>=0&&h<=.25*Math.PI||h>1.75*Math.PI&&h<=2*Math.PI?(c-=a/2,d-=o/2*Math.tan(t),u+=a/2,p+=o/2*Math.tan(t)):h>.25*Math.PI&&h<=.75*Math.PI?(d-=o/2,c-=a/2/Math.tan(t),p+=o/2,u+=a/2/Math.tan(t)):h>.75*Math.PI&&h<=1.25*Math.PI?(c+=a/2,d+=o/2*Math.tan(t),u-=a/2,p-=o/2*Math.tan(t)):h>1.25*Math.PI&&h<=1.75*Math.PI&&(d+=o/2,c+=a/2/Math.tan(t),p-=o/2,u-=a/2/Math.tan(t)),i=this.document.createElementNS("http://www.w3.org/2000/svg","linearGradient"),i.setAttribute("id",l+"-"+this._instanceId),i.setAttribute("gradientUnits","userSpaceOnUse"),i.setAttribute("x1",le(c)),i.setAttribute("y1",le(d)),i.setAttribute("x2",le(u)),i.setAttribute("y2",le(p))}e.colorStops.forEach((e=>{const t=this.document.createElementNS("http://www.w3.org/2000/svg","stop");t.setAttribute("offset",`${le(100*e.offset)}%`);const n=me(e.color);t.setAttribute("stop-color",n.value),n.alpha<1&&t.setAttribute("stop-opacity",n.alpha.toFixed(7)),i.appendChild(t)})),d.setAttribute("fill",`url(#${l}-${this._instanceId})`),this.defs.appendChild(i)}else if(i){const e=me(i);d.setAttribute("fill",e.value),e.alpha<1&&d.setAttribute("opacity",e.alpha.toFixed(7))}if(h)return d;l.startsWith("background-color")?this._element.insertBefore(d,this._maskedQrGroup):this.qrGroup.appendChild(d)}createMask(e){const t=`${e}-${this._instanceId}`,i=this.options,n=this.document.createElementNS("http://www.w3.org/2000/svg","mask");n.setAttribute("id",t),n.setAttribute("maskUnits","userSpaceOnUse"),n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width",le(i.width)),n.setAttribute("height",le(i.height));const r=this.document.createElementNS("http://www.w3.org/2000/svg","g");return r.setAttribute("fill","#fff"),n.appendChild(r),[n,r]}}var ye;be.instanceCount=0,function(e){e.svg="svg",e.png="png",e.jpeg="jpeg",e.webp="webp"}(ye||(ye={})),Object.assign(b.stringToBytesFuncs,{UTF8:e=>function(e){const t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<128?t.push(n):n<2048?t.push(192|n>>6,128|63&n):n<55296||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(i++,n=65536+((1023&n)<<10|1023&e.charCodeAt(i)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}(e)});let we=class t{get size(){return this.qrSVG?{width:this.qrSVG.width,height:this.qrSVG.height}:void 0}constructor(e){const i=e;let n=_;if(t._selectedTemplate)if("string"==typeof t._selectedTemplate){const e=t._selectedTemplate;ne[e]?n=ne[e]:console.warn(`QR Code template "${e}" not found. Using default.`)}else n=t._selectedTemplate;const r=k(n,i),{warnings:s,validatedOptions:o}=oe(r);this.options=U(o),s.length>0&&this._logValidationWarnings("QR Code Options Validation Warnings:",s),this.update()}static setTemplate(e){return"string"==typeof e?ne[e]?t._selectedTemplate=e:(console.warn(`QR Code template "${e}" not found. Resetting to default template.`),t._selectedTemplate=_):t._selectedTemplate=e,t}async update(e){this.container&&(this.container.innerHTML="");const{warnings:t}=oe(e||this.options);if(t.length>0&&this._logValidationWarnings("QR Code JS Options Update Validation Warnings:",t),this.options=e?U(k(this.options,e)):this.options,!this.options.data)return;this.options.stringToBytesFuncs&&(Object.assign(b.stringToBytesFuncs,this.options.stringToBytesFuncs),delete this.options.stringToBytesFuncs),this.qr=new b(this.options.qrOptions.typeNumber,this.options.qrOptions.errorCorrectionLevel);const i=this.options.qrOptions.mode||function(e){switch(!0){case/^[0-9]*$/.test(e):return f.numeric;case/^[0-9A-Z $%*+\-./:]*$/.test(e):return f.alphanumeric;case/[^\u0000-\u00ff]/.test(e):return f.unicode;default:return f.byte}}(this.options.data);this.qr.addData(this.options.data,i),this.qr.make(),await this._setupSvgAsync(),this.append(this.container)}append(e){if(e)return this.qrSVG?.element&&e.appendChild(this.qrSVG.element),this.container=e,this}async applyExtension(e){if(!e)throw new Error("Extension function should be defined.");this.extension=e,await this.update()}async deleteExtension(){this.extension=void 0,await this.update()}async serialize(e=!1){if(!this.qr)throw new Error("QR code is empty");if(this.qrSVG?.element||await this._setupSvgAsync(),this.svgDrawingPromise&&await this.svgDrawingPromise,!this.qrSVG?.element)return;let t=this.qrSVG.element;if(e){const e=this.qrSVG.element.cloneNode(!0);e.style.filter="invert(1)",t=e}let i=(new XMLSerializer).serializeToString(t);return i='<?xml version="1.0" standalone="no"?>\r\n'+i,i}async _setupSvgAsync(){if(!this.qr)return;let e=this.qr.getModuleCount();this.options.imageOptions.mode===K.background&&this.options.shape!==x.circle&&(e+=2);let t=Math.ceil((this.options.shape===x.circle?Math.sqrt(1.8):1.1)*e);t%2==0&&(t-=1);let i=0;this.options.imageOptions.mode===K.background&&(i+=this.options.imageOptions.margin||0);const n=Math.ceil(this.options.dotsOptions.size*(t+2*i)),r=this.options.borderOptions;let s=0,o=0;const a={top:0,right:0,bottom:0,left:0},l={top:0,right:0,bottom:0,left:0},h={top:0,right:0,bottom:0,left:0},c=r?.noBorderThickness||r?.thickness?r.thickness/4:0;if(r?.hasBorder){const e=r.borderOuter?.thickness?2*r.borderOuter?.thickness:0,t=r.borderInner?.thickness?2*r.borderInner?.thickness:0;e>0&&(l.top=e/2,l.bottom=e/2,l.left=e/2,l.right=e/2),t>0&&(h.top=t/2,h.bottom=t/2,h.left=t/2,h.right=t/2),T(r,"left")?(a.left=r.thickness,s+=r.thickness):(a.left=c,s+=c),T(r,"right")?(a.right=r.thickness,s+=r.thickness):(a.right=c,s+=c),T(r,"top")?(a.top=r.thickness,o+=r.thickness):(a.top=c,o+=c),Y(r,"bottom",this._hls())?(a.bottom=r.thickness,o+=r.thickness):(a.bottom=c,o+=c)}const d=n+s,u=n+o;this.qrSVG=new be({...this.options,width:d,height:u,bordersMain:a,bordersOuter:l,bordersInner:h,errorCorrectionPercent:F[this.options.qrOptions.errorCorrectionLevel],hls:this._hls()}),this.svgDrawingPromise=this.qrSVG.drawQR(this.qr).then((()=>{this.qrSVG?.element&&(this.options.instanceId=this.qrSVG._instanceId,this.options.borderOptions?.hasBorder&&D(this.options.borderOptions)(this.qrSVG.element,this.options,n,this.qrSVG.drawBackgroundForBorder.bind(this.qrSVG),a,l,h,c,this._hls),this.extension?.(this.qrSVG.element,this.options))})).catch((e=>{console.error(e)}))}async _drawToCanvasForValidation(t){const{width:i=300,height:n=300}=this.qrSVG?.svgSize??t??e,r=i,s=n,o=document.createElement("canvas");o.width=r,o.height=s;const a=await this.serialize();if(!a)throw new Error("Failed to serialize SVG.");const l="data:image/svg+xml;base64,"+btoa(a);return new Promise(((e,t)=>{const i=new Image;i.width=r,i.height=s,i.crossOrigin="Anonymous",i.onload=()=>{const n=o.getContext("2d");if(!n)return t(new Error("Could not get canvas 2D context"));n.drawImage(i,0,0,r,s),e(o)},i.onerror=i.onabort=t,i.src=l}))}async drawToCanvas(t){const{width:i=300,height:n=300}=this.qrSVG?.svgSize??t??e,r=1*i,s=1*n,o=document.createElement("canvas");o.width=r,o.height=s;const a=(async()=>{try{const e=await this.serialize();if(!e)return void console.warn("SVG serialization returned empty.");const t="data:image/svg+xml;base64,"+btoa(e),a=new Image;a.width=r,a.height=s,await new Promise(((e,l)=>{a.onload=()=>{const t=Math.ceil(2*Math.max(i,n)/Math.max(a.width,a.height));let h;try{h=new OffscreenCanvas(a.width*t*2,a.height*t*2)}catch(e){h=document.createElement("canvas"),h.width=a.width*t*2,h.height=a.height*t*2}const c=h.getContext("2d");if(!c)return l(new Error("Could not get OffscreenCanvas 2D context"));c.drawImage(a,0,0,h.width,h.height);const d=o.getContext("2d");if(!d)return l(new Error("Could not get canvas 2D context"));d.drawImage(h,0,0,h.width,h.height,0,0,r,s),e()},a.onerror=e=>l(new Error(`Image load error: ${e}`)),a.onabort=()=>l(new Error("Image load aborted")),a.src=t}))}catch(e){throw console.error("Error drawing to canvas:",e),e}})();return{canvas:o,canvasDrawingPromise:a}}downloadURI(e,t){const i=document.createElement("a");i.download=t,i.href=e,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async download(e,t){if("undefined"==typeof Blob)throw new Error("Cannot download in Node.js environment");let i=ye.png,n="qr";if(e&&(e.name&&(n=e.name),e.extension&&(i=e.extension)),"svg"===i.toLowerCase()){const e=await this.serialize();if(!e)return;const t="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(e);this.downloadURI(t,`${n}.svg`)}else{const e=await this.drawToCanvas(t);if(!e)return;const{canvas:r,canvasDrawingPromise:s}=e;await s;const o=r.toDataURL(`image/${i}`);this.downloadURI(o,`${n}.${i}`)}}async createOptimizedQRCanvas(t){const{width:i=300,height:n=300}=this.qrSVG?.svgSize??t??e,r=document.createElement("canvas");r.width=i,r.height=n;const s=await this.serialize();if(!s)throw new Error("Failed to serialize SVG.");const o="data:image/svg+xml;base64,"+btoa(Array.from((new TextEncoder).encode(s)).map((e=>String.fromCharCode(e))).join(""));return new Promise(((e,t)=>{const s=new Image;s.width=i,s.height=n,s.crossOrigin="Anonymous",s.onload=()=>{const o=r.getContext("2d");if(!o)return t(new Error("Could not get canvas 2D context"));o.imageSmoothingEnabled=!1,o.drawImage(s,0,0,i,n),this.applyQRThreshold(r),e(r)},s.onerror=e=>t(new Error(`Image load error: ${e}`)),s.onabort=()=>t(new Error("Image load aborted")),s.src=o}))}applyQRThreshold(e){const t=e.getContext("2d");if(!t)return;const i=t.getImageData(0,0,e.width,e.height),n=i.data;for(let e=0;e<n.length;e+=4){const t=(n[e]+n[e+1]+n[e+2])/3<128?0:255;n[e]=n[e+1]=n[e+2]=t}t.putImageData(i,0,0)}_hls(){return!1}_logValidationWarnings(e,t){console.warn(e),t.forEach((e=>{console.warn(`option: ${e.path} - '${e.value}' : ${e.message}`)}))}};we.version="0.8.24",we._selectedTemplate=null;const ke=new TextEncoder,Oe=new TextDecoder;function Ae(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:Oe.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=Oe.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);const t=atob(e),i=new Uint8Array(t.length);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);return i}(t)}catch{throw new TypeError("The input to be decoded is not correctly encoded.")}}class Se extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class Ze extends Se{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,i="unspecified",n="unspecified"){super(e,{cause:{claim:i,reason:n,payload:t}}),this.claim=i,this.reason=n,this.payload=t}}class Ie extends Se{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,i="unspecified",n="unspecified"){super(e,{cause:{claim:i,reason:n,payload:t}}),this.claim=i,this.reason=n,this.payload=t}}class We extends Se{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class je extends Se{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class Ce extends Se{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class ve extends Se{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class Je extends Se{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}}function Ee(e,t="algorithm.name"){return new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`)}function Te(e,t){return e.name===t}function Ye(e){return parseInt(e.name.slice(4),10)}function Ve(e,t,i){switch(t){case"HS256":case"HS384":case"HS512":{if(!Te(e.algorithm,"HMAC"))throw Ee("HMAC");const i=parseInt(t.slice(2),10);if(Ye(e.algorithm.hash)!==i)throw Ee(`SHA-${i}`,"algorithm.hash");break}case"RS256":case"RS384":case"RS512":{if(!Te(e.algorithm,"RSASSA-PKCS1-v1_5"))throw Ee("RSASSA-PKCS1-v1_5");const i=parseInt(t.slice(2),10);if(Ye(e.algorithm.hash)!==i)throw Ee(`SHA-${i}`,"algorithm.hash");break}case"PS256":case"PS384":case"PS512":{if(!Te(e.algorithm,"RSA-PSS"))throw Ee("RSA-PSS");const i=parseInt(t.slice(2),10);if(Ye(e.algorithm.hash)!==i)throw Ee(`SHA-${i}`,"algorithm.hash");break}case"Ed25519":case"EdDSA":if(!Te(e.algorithm,"Ed25519"))throw Ee("Ed25519");break;case"ES256":case"ES384":case"ES512":{if(!Te(e.algorithm,"ECDSA"))throw Ee("ECDSA");const i=function(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}(t);if(e.algorithm.namedCurve!==i)throw Ee(i,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}!function(e,t){if(!e.usages.includes(t))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${t}.`)}(e,i)}function Re(e,t,...i){if((i=i.filter(Boolean)).length>2){const t=i.pop();e+=`one of type ${i.join(", ")}, or ${t}.`}else 2===i.length?e+=`one of type ${i[0]} or ${i[1]}.`:e+=`of type ${i[0]}.`;return null==t?e+=`Received ${t}`:"function"==typeof t&&t.name?e+=`Received function ${t.name}`:"object"==typeof t&&null!=t&&t.constructor?.name&&(e+=`Received an instance of ${t.constructor.name}`),e}function Me(e,t,...i){return Re(`Key for the ${e} algorithm must be`,t,...i)}function Pe(e){return"CryptoKey"===e?.[Symbol.toStringTag]}function Xe(e){return"KeyObject"===e?.[Symbol.toStringTag]}var De=e=>Pe(e)||Xe(e);var Be=e=>{if("object"!=typeof(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;let i=e;for(;null!==Object.getPrototypeOf(i);)i=Object.getPrototypeOf(i);return Object.getPrototypeOf(e)===i};const Ge=(e,t,i=0)=>{0===i&&(t.unshift(t.length),t.unshift(6));const n=e.indexOf(t[0],i);if(-1===n)return!1;const r=e.subarray(n,n+t.length);return r.length===t.length&&(r.every(((e,i)=>e===t[i]))||Ge(e,t,n+1))},qe=async(e,t,i,n,r)=>{let s,o;const a=new Uint8Array(atob(i.replace(e,"")).split("").map((e=>e.charCodeAt(0))));switch(n){case"PS256":case"PS384":case"PS512":s={name:"RSA-PSS",hash:`SHA-${n.slice(-3)}`},o=["verify"];break;case"RS256":case"RS384":case"RS512":s={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${n.slice(-3)}`},o=["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":s={name:"RSA-OAEP",hash:`SHA-${parseInt(n.slice(-3),10)||1}`},o=["encrypt","wrapKey"];break;case"ES256":s={name:"ECDSA",namedCurve:"P-256"},o=["verify"];break;case"ES384":s={name:"ECDSA",namedCurve:"P-384"},o=["verify"];break;case"ES512":s={name:"ECDSA",namedCurve:"P-521"},o=["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{const e=(e=>{switch(!0){case Ge(e,[42,134,72,206,61,3,1,7]):return"P-256";case Ge(e,[43,129,4,0,34]):return"P-384";case Ge(e,[43,129,4,0,35]):return"P-521";default:return}})(a);s=e?.startsWith("P-")?{name:"ECDH",namedCurve:e}:{name:"X25519"},o=[];break}case"Ed25519":case"EdDSA":s={name:"Ed25519"},o=["verify"];break;default:throw new je('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(t,a,s,!0,o)};var Le=async e=>{if(!e.alg)throw new TypeError('"alg" argument is required when "jwk.alg" is not present');const{algorithm:t,keyUsages:i}=function(e){let t,i;switch(e.kty){case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:`SHA-${e.alg.slice(-3)}`},i=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${e.alg.slice(-3)}`},i=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:`SHA-${parseInt(e.alg.slice(-3),10)||1}`},i=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new je('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},i=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},i=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},i=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},i=e.d?["deriveBits"]:[];break;default:throw new je('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"OKP":switch(e.alg){case"Ed25519":case"EdDSA":t={name:"Ed25519"},i=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:e.crv},i=e.d?["deriveBits"]:[];break;default:throw new je('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;default:throw new je('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:i}}(e),n={...e};return delete n.alg,delete n.use,crypto.subtle.importKey("jwk",n,t,e.ext??!e.d,e.key_ops??i)};async function xe(e,t,i){if(0!==e.indexOf("-----BEGIN PUBLIC KEY-----"))throw new TypeError('"spki" must be SPKI formatted string');return((e,t)=>qe(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g,"spki",e,t))(e,t)}function Ke(e){return Be(e)&&"string"==typeof e.kty}let Ne;const Ue=async(e,t,i,n=!1)=>{Ne||=new WeakMap;let r=Ne.get(e);if(r?.[i])return r[i];const s=await Le({...t,alg:i});return n&&Object.freeze(e),r?r[i]=s:Ne.set(e,{[i]:s}),s};var Fe=async(e,t)=>{if(e instanceof Uint8Array)return e;if(Pe(e))return e;if(Xe(e)){if("secret"===e.type)return e.export();if("toCryptoKey"in e&&"function"==typeof e.toCryptoKey)try{return((e,t)=>{Ne||=new WeakMap;let i=Ne.get(e);if(i?.[t])return i[t];const n="public"===e.type,r=!!n;let s;if("x25519"===e.asymmetricKeyType){switch(t){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}s=e.toCryptoKey(e.asymmetricKeyType,r,n?[]:["deriveBits"])}if("ed25519"===e.asymmetricKeyType){if("EdDSA"!==t&&"Ed25519"!==t)throw new TypeError("given KeyObject instance cannot be used for this algorithm");s=e.toCryptoKey(e.asymmetricKeyType,r,[n?"verify":"sign"])}if("rsa"===e.asymmetricKeyType){let i;switch(t){case"RSA-OAEP":i="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":i="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":i="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":i="SHA-512";break;default:throw new TypeError("given KeyObject instance cannot be used for this algorithm")}if(t.startsWith("RSA-OAEP"))return e.toCryptoKey({name:"RSA-OAEP",hash:i},r,n?["encrypt"]:["decrypt"]);s=e.toCryptoKey({name:t.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:i},r,[n?"verify":"sign"])}if("ec"===e.asymmetricKeyType){const i=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(e.asymmetricKeyDetails?.namedCurve);if(!i)throw new TypeError("given KeyObject instance cannot be used for this algorithm");"ES256"===t&&"P-256"===i&&(s=e.toCryptoKey({name:"ECDSA",namedCurve:i},r,[n?"verify":"sign"])),"ES384"===t&&"P-384"===i&&(s=e.toCryptoKey({name:"ECDSA",namedCurve:i},r,[n?"verify":"sign"])),"ES512"===t&&"P-521"===i&&(s=e.toCryptoKey({name:"ECDSA",namedCurve:i},r,[n?"verify":"sign"])),t.startsWith("ECDH-ES")&&(s=e.toCryptoKey({name:"ECDH",namedCurve:i},r,n?[]:["deriveBits"]))}if(!s)throw new TypeError("given KeyObject instance cannot be used for this algorithm");return i?i[t]=s:Ne.set(e,{[t]:s}),s})(e,t)}catch(e){if(e instanceof TypeError)throw e}let i=e.export({format:"jwk"});return Ue(e,i,t)}if(Ke(e))return e.k?Ae(e.k):Ue(e,e,t,!0);throw new Error("unreachable")};const ze=e=>e?.[Symbol.toStringTag],He=(e,t,i)=>{if(void 0!==t.use){let e;switch(i){case"sign":case"verify":e="sig";break;case"encrypt":case"decrypt":e="enc"}if(t.use!==e)throw new TypeError(`Invalid key for this operation, its "use" must be "${e}" when present`)}if(void 0!==t.alg&&t.alg!==e)throw new TypeError(`Invalid key for this operation, its "alg" must be "${e}" when present`);if(Array.isArray(t.key_ops)){let n;switch(!0){case"verify"===i:case"dir"===e:case e.includes("CBC-HS"):n=i;break;case e.startsWith("PBES2"):n="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(e):n=!e.includes("GCM")&&e.endsWith("KW")?"unwrapKey":i;break;case"encrypt"===i:n="wrapKey";break;case"decrypt"===i:n=e.startsWith("RSA")?"unwrapKey":"deriveBits"}if(n&&!1===t.key_ops?.includes?.(n))throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${n}" when present`)}return!0};var Qe=(e,t,i)=>{e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A(?:128|192|256)(?:GCM)?(?:KW)?$/.test(e)||/^A(?:128|192|256)CBC-HS(?:256|384|512)$/.test(e)?((e,t,i)=>{if(!(t instanceof Uint8Array)){if(Ke(t)){if(function(e){return"oct"===e.kty&&"string"==typeof e.k}(t)&&He(e,t,i))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!De(t))throw new TypeError(Me(e,t,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if("secret"!==t.type)throw new TypeError(`${ze(t)} instances for symmetric algorithms must be of type "secret"`)}})(e,t,i):((e,t,i)=>{if(Ke(t))switch(i){case"decrypt":case"sign":if(function(e){return"oct"!==e.kty&&"string"==typeof e.d}(t)&&He(e,t,i))return;throw new TypeError("JSON Web Key for this operation be a private JWK");case"encrypt":case"verify":if(function(e){return"oct"!==e.kty&&void 0===e.d}(t)&&He(e,t,i))return;throw new TypeError("JSON Web Key for this operation be a public JWK")}if(!De(t))throw new TypeError(Me(e,t,"CryptoKey","KeyObject","JSON Web Key"));if("secret"===t.type)throw new TypeError(`${ze(t)} instances for asymmetric algorithms must not be of type "secret"`);if("public"===t.type)switch(i){case"sign":throw new TypeError(`${ze(t)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw new TypeError(`${ze(t)} instances for asymmetric algorithm decryption must be of type "private"`)}if("private"===t.type)switch(i){case"verify":throw new TypeError(`${ze(t)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw new TypeError(`${ze(t)} instances for asymmetric algorithm encryption must be of type "public"`)}})(e,t,i)},$e=async(e,t,i)=>{if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(((e,...t)=>Re("Key must be ",e,...t))(t,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",t,{hash:`SHA-${e.slice(-3)}`,name:"HMAC"},!1,[i])}return Ve(t,e,i),t},_e=async(e,t,i,n)=>{const r=await $e(e,t,"verify");((e,t)=>{if(e.startsWith("RS")||e.startsWith("PS")){const{modulusLength:i}=t.algorithm;if("number"!=typeof i||i<2048)throw new TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}})(e,r);const s=((e,t)=>{const i=`SHA-${e.slice(-3)}`;switch(e){case"HS256":case"HS384":case"HS512":return{hash:i,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:i,name:"RSA-PSS",saltLength:parseInt(e.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:i,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:i,name:"ECDSA",namedCurve:t.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};default:throw new je(`alg ${e} is not supported either by JOSE or your javascript runtime`)}})(e,r.algorithm);try{return await crypto.subtle.verify(s,r,i,n)}catch{return!1}};async function et(e,t,i){if(!Be(e))throw new Ce("Flattened JWS must be an object");if(void 0===e.protected&&void 0===e.header)throw new Ce('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==e.protected&&"string"!=typeof e.protected)throw new Ce("JWS Protected Header incorrect type");if(void 0===e.payload)throw new Ce("JWS Payload missing");if("string"!=typeof e.signature)throw new Ce("JWS Signature missing or incorrect type");if(void 0!==e.header&&!Be(e.header))throw new Ce("JWS Unprotected Header incorrect type");let n={};if(e.protected)try{const t=Ae(e.protected);n=JSON.parse(Oe.decode(t))}catch{throw new Ce("JWS Protected Header is invalid")}if(!((...e)=>{const t=e.filter(Boolean);if(0===t.length||1===t.length)return!0;let i;for(const e of t){const t=Object.keys(e);if(i&&0!==i.size)for(const e of t){if(i.has(e))return!1;i.add(e)}else i=new Set(t)}return!0})(n,e.header))throw new Ce("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");const r={...n,...e.header},s=((e,t,i,n,r)=>{if(void 0!==r.crit&&void 0===n?.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||void 0===n.crit)return new Set;if(!Array.isArray(n.crit)||0===n.crit.length||n.crit.some((e=>"string"!=typeof e||0===e.length)))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let s;s=void 0!==i?new Map([...Object.entries(i),...t.entries()]):t;for(const t of n.crit){if(!s.has(t))throw new je(`Extension Header Parameter "${t}" is not recognized`);if(void 0===r[t])throw new e(`Extension Header Parameter "${t}" is missing`);if(s.get(t)&&void 0===n[t])throw new e(`Extension Header Parameter "${t}" MUST be integrity protected`)}return new Set(n.crit)})(Ce,new Map([["b64",!0]]),i?.crit,n,r);let o=!0;if(s.has("b64")&&(o=n.b64,"boolean"!=typeof o))throw new Ce('The "b64" (base64url-encode payload) Header Parameter must be a boolean');const{alg:a}=r;if("string"!=typeof a||!a)throw new Ce('JWS "alg" (Algorithm) Header Parameter missing or invalid');const l=((e,t)=>{if(void 0!==t&&(!Array.isArray(t)||t.some((e=>"string"!=typeof e))))throw new TypeError(`"${e}" option must be an array of strings`);if(t)return new Set(t)})("algorithms",i.algorithms);if(l&&!l.has(a))throw new We('"alg" (Algorithm) Header Parameter value not allowed');if(o){if("string"!=typeof e.payload)throw new Ce("JWS Payload must be a string")}else if("string"!=typeof e.payload&&!(e.payload instanceof Uint8Array))throw new Ce("JWS Payload must be a string or an Uint8Array instance");let h=!1;"function"==typeof t&&(t=await t(n,e),h=!0),Qe(a,t,"verify");const c=function(...e){const t=e.reduce(((e,{length:t})=>e+t),0),i=new Uint8Array(t);let n=0;for(const t of e)i.set(t,n),n+=t.length;return i}(ke.encode(e.protected??""),ke.encode("."),"string"==typeof e.payload?ke.encode(e.payload):e.payload);let d;try{d=Ae(e.signature)}catch{throw new Ce("Failed to base64url decode the signature")}const u=await Fe(t,a);if(!await _e(a,u,d,c))throw new Je;let p;if(o)try{p=Ae(e.payload)}catch{throw new Ce("Failed to base64url decode the payload")}else p="string"==typeof e.payload?ke.encode(e.payload):e.payload;const m={payload:p};return void 0!==e.protected&&(m.protectedHeader=n),void 0!==e.header&&(m.unprotectedHeader=e.header),h?{...m,key:u}:m}const tt=86400,it=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;var nt=e=>{const t=it.exec(e);if(!t||t[4]&&t[1])throw new TypeError("Invalid time period format");const i=parseFloat(t[2]);let n;switch(t[3].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":n=Math.round(i);break;case"minute":case"minutes":case"min":case"mins":case"m":n=Math.round(60*i);break;case"hour":case"hours":case"hr":case"hrs":case"h":n=Math.round(3600*i);break;case"day":case"days":case"d":n=Math.round(i*tt);break;case"week":case"weeks":case"w":n=Math.round(604800*i);break;default:n=Math.round(31557600*i)}return"-"===t[1]||"ago"===t[4]?-n:n};const rt=e=>e.toLowerCase().replace(/^application\//,"");function st(e,t,i={}){let n;try{n=JSON.parse(Oe.decode(t))}catch{}if(!Be(n))throw new ve("JWT Claims Set must be a top-level JSON object");const{typ:r}=i;if(r&&("string"!=typeof e.typ||rt(e.typ)!==rt(r)))throw new Ze('unexpected "typ" JWT header value',n,"typ","check_failed");const{requiredClaims:s=[],issuer:o,subject:a,audience:l,maxTokenAge:h}=i,c=[...s];void 0!==h&&c.push("iat"),void 0!==l&&c.push("aud"),void 0!==a&&c.push("sub"),void 0!==o&&c.push("iss");for(const e of new Set(c.reverse()))if(!(e in n))throw new Ze(`missing required "${e}" claim`,n,e,"missing");if(o&&!(Array.isArray(o)?o:[o]).includes(n.iss))throw new Ze('unexpected "iss" claim value',n,"iss","check_failed");if(a&&n.sub!==a)throw new Ze('unexpected "sub" claim value',n,"sub","check_failed");if(l&&(d=n.aud,u="string"==typeof l?[l]:l,!("string"==typeof d?u.includes(d):Array.isArray(d)&&u.some(Set.prototype.has.bind(new Set(d))))))throw new Ze('unexpected "aud" claim value',n,"aud","check_failed");var d,u;let p;switch(typeof i.clockTolerance){case"string":p=nt(i.clockTolerance);break;case"number":p=i.clockTolerance;break;case"undefined":p=0;break;default:throw new TypeError("Invalid clockTolerance option type")}const{currentDate:m}=i,g=(f=m||new Date,Math.floor(f.getTime()/1e3));var f;if((void 0!==n.iat||h)&&"number"!=typeof n.iat)throw new Ze('"iat" claim must be a number',n,"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new Ze('"nbf" claim must be a number',n,"nbf","invalid");if(n.nbf>g+p)throw new Ze('"nbf" claim timestamp check failed',n,"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new Ze('"exp" claim must be a number',n,"exp","invalid");if(n.exp<=g-p)throw new Ie('"exp" claim timestamp check failed',n,"exp","check_failed")}if(h){const e=g-n.iat;if(e-p>("number"==typeof h?h:nt(h)))throw new Ie('"iat" claim timestamp check failed (too far in the past)',n,"iat","check_failed");if(e<0-p)throw new Ze('"iat" claim timestamp check failed (it should be in the past)',n,"iat","check_failed")}return n}async function ot(e,t,i){const n=await async function(e,t,i){if(e instanceof Uint8Array&&(e=Oe.decode(e)),"string"!=typeof e)throw new Ce("Compact JWS must be a string or Uint8Array");const{0:n,1:r,2:s,length:o}=e.split(".");if(3!==o)throw new Ce("Invalid Compact JWS");const a=await et({payload:r,protected:n,signature:s},t,i),l={payload:a.payload,protectedHeader:a.protectedHeader};return"function"==typeof t?{...l,key:a.key}:l}(e,t,i);if(n.protectedHeader.crit?.includes("b64")&&!1===n.protectedHeader.b64)throw new ve("JWTs MUST NOT use unencoded payload");const r={payload:st(n.protectedHeader,n.payload,i),protectedHeader:n.protectedHeader};return"function"==typeof t?{...r,key:n.key}:r}const at="QRCodeJsLicense",lt=w(["ol","ac","hl","so","t"].reverse().join("")),ht=w(["ol","ac","it","no"].reverse().join("")),ct=w(["oh","ts","an","em"].reverse().join(""));class dt{constructor(){this._hls=!1,this._decodedToken=null,this._licenseKey=null,this._isInitialized=!1,this._initPromise=null,this._licenseFetcher=async e=>{const t=dt._defaultLicenseApiUrl;try{const i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({licenseKey:e})});if(!i.ok){let e={};try{e=await i.json()}catch(e){}throw new Error(`Failed to fetch token: ${i.status} ${e?.error||i.statusText}`)}const n=await i.text();if(!n)throw new Error("Fetched token is empty.");return n}catch(e){throw console.error(`LicenseManager: Default fetcher failed: ${e.message}`),new Error(`License fetcher failed: ${e.message}`)}}}static get instance(){return dt._instance||(dt._instance=new dt),dt._instance}static setDefaultLicenseApiUrl(e){"string"==typeof e&&e?dt._defaultLicenseApiUrl=e:console.warn("LicenseManager: Invalid URL provided to setDefaultLicenseApiUrl.")}get hls(){return this._hls}get isInitialized(){return this._isInitialized}getLicenseDetails(){return this._hls?this._decodedToken:null}get licenseKey(){return this._licenseKey}configureLicenseFetcher(e){if("function"!=typeof e)throw new Error("License fetcher must be a function that accepts a license key string and returns a Promise<string>.");this._licenseFetcher=e,this.resetInitialization(),this.resetLicenseState()}async initialize(){return this._isInitialized&&this._initPromise||this._initPromise||(this._initPromise=this._performInitialization()),this._initPromise}async _performInitialization(){if(this._hls)return this._isInitialized=!0,!0;this.resetLicenseState();const e=this._getStoredLicenseData(),t=e.token||null,i=e.key||null;if(this._licenseKey=i,!t)return this._isInitialized=!0,!1;const n=await this._validateAndStoreToken(t,i);if(n.isValid)return this._hls=!0,this._decodedToken=n.license,this._isInitialized=!0,!0;if(n.reason||console.warn("LicenseManager: Stored license token failed validation during initialization (unknown reason)."),!i)return console.warn("LicenseManager: Cannot refresh token: No license key found in storage."),this._isInitialized=!0,!1;console.warn("LicenseManager: Attempting to refresh token using stored license key...");try{const e=await this.activateWithKey(i);return this._isInitialized=!0,e.isValid}catch(e){return console.error(`LicenseManager: Auto-refresh attempt failed unexpectedly: ${e.message}`),this._licenseKey=i,this._isInitialized=!0,!1}}resetInitialization(){this._isInitialized=!1,this._initPromise=null}resetLicenseState(){this._hls=!1,this._decodedToken=null,this._licenseKey=null}async activateWithToken(e){let t;return this.resetInitialization(),null===e?(t=await this._validateAndStoreToken(null,this._licenseKey),this._hls=!1,this._decodedToken=null):"string"==typeof e&&e?(t=await this._validateAndStoreToken(e,null),this._hls=t.isValid,this._decodedToken=t.license,t.isValid?this._licenseKey=this._getStoredLicenseData().key||null:this._licenseKey=null):(console.warn("Invalid token string provided to activateWithToken()."),t=await this._validateAndStoreToken(null,null),t.reason="TOKEN_INVALID",this._hls=!1,this._decodedToken=null,this._licenseKey=null),this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),!t.isValid&&t.reason&&this._logValidationWarning(t.reason,{token:e,license:t.license}),t}async activateWithKey(e){this.resetInitialization();let t={isValid:!1,token:null,license:null};if(e&&"string"==typeof e){this._licenseKey=e;let i=null,n=null;const r=this._getStoredLicenseData();if(i=r.token||null,n=r.key||null,i&&n===e?(t=await this._validateAndStoreToken(i,e),t.isValid||(t.reason?this._logValidationWarning(t.reason,{licenseKey:e,license:t.license}):console.warn("LicenseManager: Cached token validation failed (unknown reason). Attempting to fetch a new token..."))):(t={isValid:!1,token:null,license:null},i&&n!==e&&console.warn("LicenseManager: Cached token belongs to a different license key. Fetching new token...")),!t.isValid)try{const i=await this._licenseFetcher(e);t=await this._validateAndStoreToken(i,e)}catch(i){let n="FETCH_FAILED";i?.message?.includes("Invalid license key")?n="KEY_INVALID":i?.message?.includes("License has expired")&&(n="TOKEN_EXPIRED"),await this._validateAndStoreToken(null,e),t={isValid:!1,token:null,license:null,reason:n}}this._hls=t.isValid,this._decodedToken=t.license}else console.warn("Invalid license key provided to activateWithKey()."),await this._validateAndStoreToken(null,null),t={isValid:!1,token:null,license:null,reason:"KEY_INVALID"},this._hls=!1,this._decodedToken=null,this._licenseKey=null;return this._isInitialized=!0,this._initPromise=Promise.resolve(this._hls),!t.isValid&&t.reason&&this._logValidationWarning(t.reason,{licenseKey:e,license:t.license}),t}_checkDomain(e){const t=window[ht],i=window[ht][ct];if(dt._currentHostname=i,!t||"string"!=typeof i||!i)return{domainValid:!0};const n=dt._currentHostname.toLowerCase();if(n===lt)return{domainValid:!0};const r=e.domains;if(!r||0===r.length)return{domainValid:!0};return r.map((e=>e.toLowerCase())).includes(n)?{domainValid:!0}:{domainValid:!1,reason:"DOMAIN_MISMATCH"}}_logValidationWarning(e,t){let i=`LicenseManager: Validation failed. Reason: ${e}`;try{switch(e){case"DOMAIN_MISMATCH":const e=dt._currentHostname??"N/A";i=`LicenseManager: Domain mismatch. License is restricted to [${t?.license?.domains?.join(", ")||"Not specified in token"}], but the current domain is "${e}".`;break;case"TOKEN_EXPIRED":i=`LicenseManager: License token expired on ${t?.license?.exp?new Date(1e3*t.license.exp).toISOString():"N/A"}.`;break;case"TOKEN_INVALID":i="LicenseManager: License token is invalid (e.g., signature mismatch, malformed).";break;case"FETCH_FAILED":i="LicenseManager: Failed to fetch license token from the server. Check network or API endpoint.",t?.licenseKey&&(i+=`(Key: ${t.licenseKey})`);break;case"KEY_INVALID":i="LicenseManager: The provided license key appears invalid or could not be found by the server.",t?.licenseKey&&(i+=`(Key: ${t.licenseKey})`)}}catch(e){console.error("LicenseManager: Error generating validation warning message:",e)}console.warn(i)}_getStoredLicenseData(){if("undefined"==typeof localStorage)return{};try{const e=localStorage.getItem(at);return e?JSON.parse(e):{}}catch(e){return console.warn("LicenseManager: Failed to parse license data from localStorage.",e),localStorage.removeItem(at),{}}}_setStoredLicenseData(e){if("undefined"!=typeof localStorage)try{const t={};void 0!==e.token&&(t.token=e.token),void 0!==e.key&&(t.key=e.key),Object.keys(t).length>0?localStorage.setItem(at,JSON.stringify(t)):localStorage.removeItem(at)}catch(e){console.warn("LicenseManager: Failed to store license data to localStorage.",e)}}async _validateAndStoreToken(e,t){const i=this._getStoredLicenseData(),n=t??i.key??void 0;if(!e)return this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:null};let r,s=null;try{s=await async function(e){try{const t=await xe("-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZCmxp1vq4LJLviS9d2u Y5V9IykLzCrNcj8fCenqEyir5b4+FGE3hvLqp9zT+IYRF2cV2K0aGe9G0COFZsX2 E5ye1DguyvPQgRMPO8y7bxXJ3da1IP7Gs+/3gy4iuzRV4Uhy73jUVpqE/zZ2JAv/ sY36Rxmq4h7YE/F6YQk3DeZvnHjS7spUlp/+d3W67G8v2jiYWy3pO08Sn0rF2cjg XrJA5jcNr7ksER7AQcwayaLT4rAV4+EOcDYXL2egnqoTEmRzQYD2ReHBsO6jB0Ud bmsNepxbBdq/fBr+5HNj2tUJItarfH3BUVRFu/L1xP8wOEQa8wmPRwrJdPsI3bdk 7QIDAQAB -----END PUBLIC KEY-----","RS256"),{payload:i}=await ot(e,t,{algorithms:["RS256"]});if(!i||"string"!=typeof i.sub)throw new Se("Decoded token payload structure is invalid.");return i}catch(e){throw e}}(e);try{const t=this._checkDomain(s);if(!t.domainValid)return r=t.reason,i.token===e&&this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:s,reason:r}}catch(t){return console.error("LicenseManager: Internal error during domain check.",t),r="TOKEN_INVALID",i.token===e&&this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:s,reason:r}}return this._setStoredLicenseData({token:e,key:n}),{isValid:!0,token:e,license:s}}catch(t){return t instanceof Ie?r="TOKEN_EXPIRED":(r="TOKEN_INVALID",console.error("LicenseManager: Token validation failed.",t)),i.token===e&&this._setStoredLicenseData({key:n}),{isValid:!1,token:null,license:s,reason:r}}}}var ut;dt._instance=null,dt._defaultLicenseApiUrl="/api/get-token",dt._currentHostname=null,function(e){e.svg="svg",e.png="png",e.jpeg="jpeg",e.webp="webp"}(ut||(ut={}));class pt extends we{constructor(e){super(e),dt.instance.isInitialized||dt.instance.hls?dt.instance.isInitialized&&!dt.instance.hls&&console.warn("QRCode.js: No valid license found. Some features may be limited."):console.warn("QRCode.js: License state not yet initialized. Call QRCodeJs.initializeIfNeeded() or activate a license.")}_hls(){return dt.instance.isInitialized?dt.instance.hls:(dt.instance.initialize().catch((e=>{console.error("QRCode.js: Background license initialization failed:",e)})),!1)}static async initializeIfNeeded(){return dt.instance.initialize()}static get hls(){return dt.instance.isInitialized?dt.instance.hls:(dt.instance.initialize().catch((e=>{console.error("QRCode.js: Background license initialization failed:",e)})),!1)}static getLicenseDetails(){return dt.instance.isInitialized?dt.instance.getLicenseDetails():(dt.instance.initialize().catch((e=>{console.error("QRCode.js: Background license initialization failed:",e)})),null)}static configureLicenseFetcher(e){dt.instance.configureLicenseFetcher(e)}static async token(e){return dt.instance.activateWithToken(e)}static setLicenseUrl(e){return dt.setDefaultLicenseApiUrl(e),this}static async license(e){return dt.instance.activateWithKey(e)}async validateScanning(e="zbar",t=!1){if(!this._hls())return console.warn("QRCode.js: Scanning validation requires a valid license."),Promise.reject({isValid:!1,message:"Valid license required for scanning validation."});try{const{default:e}=await import("./chunks/zbar-scan-validator-B3GQk_mt.js").then((function(e){return e.z})),i=await this.serialize(),n=this.size;if(!n)throw new Error("QR code dimensions not available for validation. Ensure the QR code has been generated.");const{width:r,height:s}=n,o=await(new e).validate(i,(async()=>this.serialize(!0)),r,s,t);if(o.isValid)return o;{console.debug("Zbar validation failed, trying Zxing...");const{default:e}=await import("./chunks/zxing-scan-validator-CYcyNnMt.js");return(new e).validate(i,(async()=>this.serialize(!0)),t)}}catch(e){const t=e instanceof Error?e.message:"Unknown validation error";return console.error(`Validation failed: ${t}`,e),Promise.reject({isValid:!1,message:t})}}static useTemplate(e){return new gt(e)}}class mt extends pt{_hls(){return!0}constructor(e){super(e)}}class gt{constructor(e){e&&ne[e]?this.config=k({},ne[e]):(this.config=k({},_),e&&console.warn(`QR Code template "${e}" not found. Using default basic template.`))}options(e){this.config=k(this.config,e);const t=U(this.config);return new pt(t)}}"undefined"!=typeof window&&(window.QRCodeJs=pt);export{q as CornerDotType,L as CornerSquareType,G as DotType,g as ErrorCorrectionLevel,ut as FileExtension,B as GradientType,K as ImageMode,f as Mode,pt as QRCodeJs,at as STORAGE_KEY,x as ShapeType,m as TypeNumber,mt as _};