@private-captcha/private-captcha-js-core 0.0.19 → 0.0.20

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/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",S=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(k=0;k<m.length;k++)S[m.charCodeAt(k)]=k;var k,$=function(A){var e=new Uint8Array(A),t,i=e.length,r="";for(t=0;t<i;t+=3)r+=m[e[t]>>2],r+=m[(e[t]&3)<<4|e[t+1]>>4],r+=m[(e[t+1]&15)<<2|e[t+2]>>6],r+=m[e[t+2]&63];return i%3===2?r=r.substring(0,r.length-1)+"=":i%3===1&&(r=r.substring(0,r.length-2)+"=="),r},j=function(A){var e=A.length*.75,t=A.length,i,r=0,o,n,s,u;A[A.length-1]==="="&&(e--,A[A.length-2]==="="&&e--);var a=new ArrayBuffer(e),y=new Uint8Array(a);for(i=0;i<t;i+=4)o=S[A.charCodeAt(i)],n=S[A.charCodeAt(i+1)],s=S[A.charCodeAt(i+2)],u=S[A.charCodeAt(i+3)],y[r++]=o<<2|n>>4,y[r++]=(n&15)<<4|s>>2,y[r++]=(s&3)<<6|u&63;return a};var W=128,Ie=[408,409,429];async function Z(A,e){try{let t=await he(`${A}?sitekey=${e}`,{headers:[["x-pc-captcha-version","1"]],mode:"cors"},5);if(t.ok)return await t.text();{let i=await t.json();if(i&&i.error)throw Error(i.error)}}catch(t){throw console.error("[privatecaptcha]",t),t}throw Error("Internal error")}function ae(A){return new Promise(e=>setTimeout(e,A))}async function he(A,e,t,i=800,r=6e3){for(let o=0;o<t;o++){if(o>0){let n=Math.min(i*Math.pow(2,o),r);await ae(n)}try{let n=await fetch(A,e);if(n.ok)return n;if(console.warn("[privatecaptcha]",`HTTP request failed. url=${A} status=${n.status}`),n.status>=400&&n.status<500&&!Ie.includes(n.status))break;continue}catch(n){console.error("[privatecaptcha]",n)}}throw new Error("Captcha puzzle load failed after maximum retry attempts")}function Y(A,e){return(A[e]|A[e+1]<<8|A[e+2]<<16|A[e+3]<<24)>>>0}function ge(A,e){return BigInt(Y(A,e))+(BigInt(Y(A,e+4))<<32n)}var x=class{constructor(e){this.puzzleBuffer=null,this.ID=null,this.difficulty=null,this.solutionsCount=null,this.expirationTimestamp=null,this.userData=null,this.signature=null,this.parse(e),this.rawData=e}parse(e){let t=e.split(".");if(t.length!==2)throw Error(`Invalid amount of parts: ${t.length}`);let i=t[0];this.signature=t[1];let r=new Uint8Array(j(i)),o=0;o+=1,o+=16,this.ID=ge(r,o),o+=8,this.difficulty=r[o],o+=1,this.solutionsCount=r[o],o+=1,this.expirationTimestamp=Y(r,o),o+=4,o+=4;let n=16;this.userData=r.slice(o,o+n),o+=n;let s=r;if(s.length<W){let u=new Uint8Array(W);u.set(s),this.puzzleBuffer=u}else this.puzzleBuffer=s}isZero(){return this.ID===0n&&this.difficulty===0&&this.expirationTimestamp===0}expirationMillis(){return this.expirationTimestamp?new Date(this.expirationTimestamp*1e3)-new Date:0}};function N(A){let e=new Blob([A],{type:"text/javascript"}),t=URL.createObjectURL(e),i=new Worker(t);return URL.revokeObjectURL(t),i}function G(){return N('var gI=Object.create;var iA=Object.defineProperty;var CI=Object.getOwnPropertyDescriptor;var oI=Object.getOwnPropertyNames;var hI=Object.getPrototypeOf,rI=Object.prototype.hasOwnProperty;var l=(A,i)=>()=>(i||A((i={exports:{}}).exports,i),i.exports);var EI=(A,i,I,e)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of oI(i))!rI.call(A,t)&&t!==I&&iA(A,t,{get:()=>i[t],enumerable:!(e=CI(i,t))||e.enumerable});return A};var eA=(A,i,I)=>(I=A!=null?gI(hI(A)):{},EI(i||!A||!A.__esModule?iA(I,"default",{value:A,enumerable:!0}):I,A));var gA=l((Ui,nA)=>{nA.exports=tA;var G=class extends Error{};G.prototype.name="AssertionError";function tA(A,i){if(!A){var I=new G(i);throw Error.captureStackTrace&&Error.captureStackTrace(I,tA),I}}});var hA=l((Si,oA)=>{function CA(A){return A.length}function QI(A){let i=A.byteLength,I="";for(let e=0;e<i;e++)I+=String.fromCharCode(A[e]);return I}function fI(A,i,I=0,e=CA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++)A[I+n]=i.charCodeAt(n);return t}oA.exports={byteLength:CA,toString:QI,write:fI}});var QA=l((Fi,EA)=>{var H="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=new Uint8Array(256);for(let A=0;A<H.length;A++)p[H.charCodeAt(A)]=A;p[45]=62;p[95]=63;function rA(A){let i=A.length;return A.charCodeAt(i-1)===61&&i--,i>1&&A.charCodeAt(i-1)===61&&i--,i*3>>>2}function BI(A){let i=A.byteLength,I="";for(let e=0;e<i;e+=3)I+=H[A[e]>>2]+H[(A[e]&3)<<4|A[e+1]>>4]+H[(A[e+1]&15)<<2|A[e+2]>>6]+H[A[e+2]&63];return i%3===2?I=I.substring(0,I.length-1)+"=":i%3===1&&(I=I.substring(0,I.length-2)+"=="),I}function sI(A,i,I=0,e=rA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0,g=0;g<t;n+=4){let o=p[i.charCodeAt(n)],r=p[i.charCodeAt(n+1)],E=p[i.charCodeAt(n+2)],Q=p[i.charCodeAt(n+3)];A[g++]=o<<2|r>>4,A[g++]=(r&15)<<4|E>>2,A[g++]=(E&3)<<6|Q&63}return t}EA.exports={byteLength:rA,toString:BI,write:sI}});var yA=l((Ki,sA)=>{function BA(A){return A.length>>>1}function yI(A){let i=A.byteLength;A=new DataView(A.buffer,A.byteOffset,i);let I="",e=0;for(let t=i-i%4;e<t;e+=4)I+=A.getUint32(e).toString(16).padStart(8,"0");for(;e<i;e++)I+=A.getUint8(e).toString(16).padStart(2,"0");return I}function lI(A,i,I=0,e=BA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++){let g=fA(i.charCodeAt(n*2)),o=fA(i.charCodeAt(n*2+1));if(g===void 0||o===void 0)return A.subarray(0,n);A[I+n]=g<<4|o}return t}sA.exports={byteLength:BA,toString:yI,write:lI};function fA(A){if(A>=48&&A<=57)return A-48;if(A>=65&&A<=70)return A-65+10;if(A>=97&&A<=102)return A-97+10}});var aA=l((pi,lA)=>{function _(A){let i=0;for(let I=0,e=A.length;I<e;I++){let t=A.charCodeAt(I);if(t>=55296&&t<=56319&&I+1<e){let n=A.charCodeAt(I+1);if(n>=56320&&n<=57343){i+=4,I++;continue}}t<=127?i+=1:t<=2047?i+=2:i+=3}return i}var X;if(typeof TextDecoder!="undefined"){let A=new TextDecoder;X=function(I){return A.decode(I)}}else X=function(i){let I=i.byteLength,e="",t=0;for(;t<I;){let n=i[t];if(n<=127){e+=String.fromCharCode(n),t++;continue}let g=0,o=0;if(n<=223?(g=1,o=n&31):n<=239?(g=2,o=n&15):n<=244&&(g=3,o=n&7),I-t-g>0){let r=0;for(;r<g;)n=i[t+r+1],o=o<<6|n&63,r+=1}else o=65533,g=I-t;e+=String.fromCodePoint(o),t+=g+1}return e};var q;if(typeof TextEncoder!="undefined"){let A=new TextEncoder;q=function(I,e,t=0,n=_(e)){let g=Math.min(n,I.byteLength-t);return A.encodeInto(e,I.subarray(t,t+g)),g}}else q=function(i,I,e=0,t=_(I)){let n=Math.min(t,i.byteLength-e);i=i.subarray(e,e+n);let g=0,o=0;for(;g<I.length;){let r=I.codePointAt(g);if(r<=127){i[o++]=r,g++;continue}let E=0,Q=0;for(r<=2047?(E=6,Q=192):r<=65535?(E=12,Q=224):r<=2097151&&(E=18,Q=240),i[o++]=Q|r>>E,E-=6;E>=0;)i[o++]=128|r>>E&63,E-=6;g+=r>=65536?2:1}return n};lA.exports={byteLength:_,toString:X,write:q}});var uA=l((bi,cA)=>{function wA(A){return A.length*2}function aI(A){let i=A.byteLength,I="";for(let e=0;e<i-1;e+=2)I+=String.fromCharCode(A[e]+A[e+1]*256);return I}function wI(A,i,I=0,e=wA(i)){let t=Math.min(e,A.byteLength-I),n=t;for(let g=0;g<i.length&&!((n-=2)<0);++g){let o=i.charCodeAt(g),r=o>>8,E=o%256;A[I+g*2]=E,A[I+g*2+1]=r}return t}cA.exports={byteLength:wA,toString:aI,write:wI}});var KA=l((W,FA)=>{var cI=hA(),uI=QA(),DI=yA(),UI=aA(),SI=uA(),k=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function V(A){switch(A){case"ascii":return cI;case"base64":return uI;case"hex":return DI;case"utf8":case"utf-8":case void 0:return UI;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return SI;default:throw new Error(`Unknown encoding: ${A}`)}}function DA(A){return A instanceof Uint8Array}function FI(A){try{return V(A),!0}catch(i){return!1}}function KI(A,i,I){let e=new Uint8Array(A);return i!==void 0&&W.fill(e,i,0,e.byteLength,I),e}function pI(A){return new Uint8Array(A)}function bI(A){return new Uint8Array(A)}function xI(A,i){return V(i).byteLength(A)}function HI(A,i){if(A===i)return 0;let I=Math.min(A.byteLength,i.byteLength);A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4){let n=A.getUint32(e,k),g=i.getUint32(e,k);if(n!==g)break}for(;e<I;e++){let t=A.getUint8(e),n=i.getUint8(e);if(t<n)return-1;if(t>n)return 1}return A.byteLength>i.byteLength?1:A.byteLength<i.byteLength?-1:0}function dI(A,i){i===void 0&&(i=A.reduce((t,n)=>t+n.byteLength,0));let I=new Uint8Array(i),e=0;for(let t of A){if(e+t.byteLength>I.byteLength){let n=t.subarray(0,I.byteLength-e);return I.set(n,e),I}I.set(t,e),e+=t.byteLength}return I}function mI(A,i,I=0,e=0,t=A.byteLength){if(t>0&&t<e||t===e||A.byteLength===0||i.byteLength===0)return 0;if(I<0)throw new RangeError("targetStart is out of range");if(e<0||e>=A.byteLength)throw new RangeError("sourceStart is out of range");if(t<0)throw new RangeError("sourceEnd is out of range");I>=i.byteLength&&(I=i.byteLength),t>A.byteLength&&(t=A.byteLength),i.byteLength-I<t-e&&(t=i.length-I+e);let n=t-e;return A===i?i.copyWithin(I,e,t):i.set(A.subarray(e,t),I),n}function VI(A,i){if(A===i)return!0;if(A.byteLength!==i.byteLength)return!1;let I=A.byteLength;A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4)if(A.getUint32(e,k)!==i.getUint32(e,k))return!1;for(;e<I;e++)if(A.getUint8(e)!==i.getUint8(e))return!1;return!0}function LI(A,i,I,e,t){if(typeof i=="string"?typeof I=="string"?(t=I,I=0,e=A.byteLength):typeof e=="string"&&(t=e,e=A.byteLength):typeof i=="number"?i=i&255:typeof i=="boolean"&&(i=+i),I<0||A.byteLength<I||A.byteLength<e)throw new RangeError("Out of range index");if(I===void 0&&(I=0),e===void 0&&(e=A.byteLength),e<=I)return A;if(i||(i=0),typeof i=="number")for(let n=I;n<e;++n)A[n]=i;else{i=DA(i)?i:j(i,t);let n=i.byteLength;for(let g=0;g<e-I;++g)A[g+I]=i[g%n]}return A}function j(A,i,I){return typeof A=="string"?YI(A,i):Array.isArray(A)?MI(A):ArrayBuffer.isView(A)?GI(A):kI(A,i,I)}function YI(A,i){let I=V(i),e=new Uint8Array(I.byteLength(A));return I.write(e,A,0,e.byteLength),e}function MI(A){let i=new Uint8Array(A.length);return i.set(A),i}function GI(A){let i=new Uint8Array(A.byteLength);return i.set(A),i}function kI(A,i,I){return new Uint8Array(A,i,I)}function PI(A,i,I,e){return SA(A,i,I,e)!==-1}function UA(A,i,I,e,t){if(A.byteLength===0)return-1;if(typeof I=="string"?(e=I,I=0):I===void 0?I=t?0:A.length-1:I<0&&(I+=A.byteLength),I>=A.byteLength){if(t)return-1;I=A.byteLength-1}else if(I<0)if(t)I=0;else return-1;if(typeof i=="string")i=j(i,e);else if(typeof i=="number")return i=i&255,t?A.indexOf(i,I):A.lastIndexOf(i,I);if(i.byteLength===0)return-1;if(t){let n=-1;for(let g=I;g<A.byteLength;g++)if(A[g]===i[n===-1?0:g-n]){if(n===-1&&(n=g),g-n+1===i.byteLength)return n}else n!==-1&&(g-=g-n),n=-1}else{I+i.byteLength>A.byteLength&&(I=A.byteLength-i.byteLength);for(let n=I;n>=0;n--){let g=!0;for(let o=0;o<i.byteLength;o++)if(A[n+o]!==i[o]){g=!1;break}if(g)return n}}return-1}function SA(A,i,I,e){return UA(A,i,I,e,!0)}function NI(A,i,I,e){return UA(A,i,I,e,!1)}function b(A,i,I){let e=A[i];A[i]=A[I],A[I]=e}function OI(A){let i=A.byteLength;if(i%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let I=0;I<i;I+=2)b(A,I,I+1);return A}function JI(A){let i=A.byteLength;if(i%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let I=0;I<i;I+=4)b(A,I,I+3),b(A,I+1,I+2);return A}function RI(A){let i=A.byteLength;if(i%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let I=0;I<i;I+=8)b(A,I,I+7),b(A,I+1,I+6),b(A,I+2,I+5),b(A,I+3,I+4);return A}function TI(A){return A}function _I(A,i,I=0,e=A.byteLength){let t=A.byteLength;return I>=t||e<=I?"":(I<0&&(I=0),e>t&&(e=t),(I!==0||e<t)&&(A=A.subarray(I,e)),V(i).toString(A))}function XI(A,i,I,e,t){return I===void 0?t="utf8":e===void 0&&typeof I=="string"?(t=I,I=void 0):t===void 0&&typeof e=="string"&&(t=e,e=void 0),V(t).write(A,i,I,e)}function qI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat64(I,i,!0),I+8}function jI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat32(I,i,!0),I+4}function WI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setUint32(I,i,!0),I+4}function zI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setInt32(I,i,!0),I+4}function ZI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat64(i,!0)}function vI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat32(i,!0)}function $I(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getUint32(i,!0)}function Ai(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getInt32(i,!0)}FA.exports=W={isBuffer:DA,isEncoding:FI,alloc:KI,allocUnsafe:pI,allocUnsafeSlow:bI,byteLength:xI,compare:HI,concat:dI,copy:mI,equals:VI,fill:LI,from:j,includes:PI,indexOf:SA,lastIndexOf:NI,swap16:OI,swap32:JI,swap64:RI,toBuffer:TI,toString:_I,write:XI,writeDoubleLE:qI,writeFloatLE:jI,writeUInt32LE:WI,writeInt32LE:zI,readDoubleLE:ZI,readFloatLE:vI,readUInt32LE:$I,readInt32LE:Ai}});var bA=l((xi,pA)=>{var Ii=(A,i)=>function(){return i||(0,A[Object.keys(A)[0]])((i={exports:{}}).exports,i),i.exports},ii=(()=>{for(var A=new Uint8Array(128),i=0;i<64;i++)A[i<26?i+65:i<52?i+71:i<62?i-4:i*4-205]=i;return I=>{for(var e=I.length,t=new Uint8Array((e-(I[e-1]=="=")-(I[e-2]=="="))*3/4|0),n=0,g=0;n<e;){var o=A[I.charCodeAt(n++)],r=A[I.charCodeAt(n++)],E=A[I.charCodeAt(n++)],Q=A[I.charCodeAt(n++)];t[g++]=o<<2|r>>4,t[g++]=r<<4|E>>2,t[g++]=E<<6|Q}return t}})(),ei=Ii({"wasm-binary:./blake2b.wat"(A,i){i.exports=ii("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")}}),ti=ei(),ni=WebAssembly.compile(ti);pA.exports=async A=>(await WebAssembly.instantiate(await ni,A)).exports});var MA=l((mi,c)=>{var a=gA(),gi=KA(),U=null,xA=typeof WebAssembly!="undefined"&&bA()().then(A=>{U=A}),D=64,P=[];c.exports=y;var HA=c.exports.BYTES_MIN=16,dA=c.exports.BYTES_MAX=64,Hi=c.exports.BYTES=32,mA=c.exports.KEYBYTES_MIN=16,VA=c.exports.KEYBYTES_MAX=64,di=c.exports.KEYBYTES=32,LA=c.exports.SALTBYTES=16,YA=c.exports.PERSONALBYTES=16;function y(A,i,I,e,t){if(!(this instanceof y))return new y(A,i,I,e,t);if(!U)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");A||(A=32),t!==!0&&(a(A>=HA,"digestLength must be at least "+HA+", was given "+A),a(A<=dA,"digestLength must be at most "+dA+", was given "+A),i!=null&&(a(i instanceof Uint8Array,"key must be Uint8Array or Buffer"),a(i.length>=mA,"key must be at least "+mA+", was given "+i.length),a(i.length<=VA,"key must be at least "+VA+", was given "+i.length)),I!=null&&(a(I instanceof Uint8Array,"salt must be Uint8Array or Buffer"),a(I.length===LA,"salt must be exactly "+LA+", was given "+I.length)),e!=null&&(a(e instanceof Uint8Array,"personal must be Uint8Array or Buffer"),a(e.length===YA,"personal must be exactly "+YA+", was given "+e.length))),P.length||(P.push(D),D+=216),this.digestLength=A,this.finalized=!1,this.pointer=P.pop(),this._memory=new Uint8Array(U.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=i?i.length:0,this._memory[2]=1,this._memory[3]=1,I&&this._memory.set(I,32),e&&this._memory.set(e,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),U.blake2b_init(this.pointer,this.digestLength),i&&(this.update(i),this._memory.fill(0,D,D+i.length),this._memory[this.pointer+200]=128)}y.prototype._realloc=function(A){U.memory.grow(Math.max(0,Math.ceil(Math.abs(A-this._memory.length)/65536))),this._memory=new Uint8Array(U.memory.buffer)};y.prototype.update=function(A){return a(this.finalized===!1,"Hash instance finalized"),a(A instanceof Uint8Array,"input must be Uint8Array or Buffer"),D+A.length>this._memory.length&&this._realloc(D+A.length),this._memory.set(A,D),U.blake2b_update(this.pointer,D,D+A.length),this};y.prototype.digest=function(A){if(a(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,P.push(this.pointer),U.blake2b_final(this.pointer),!A||A==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof A=="string")return gi.toString(this._memory,A,this.pointer+128,this.pointer+128+this.digestLength);a(A instanceof Uint8Array&&A.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var i=0;i<this.digestLength;i++)A[i]=this._memory[this.pointer+128+i];return A};y.prototype.final=y.prototype.digest;y.WASM=U;y.SUPPORTED=typeof WebAssembly!="undefined";y.ready=function(A){return A||(A=Ci),xA?xA.then(()=>A(),A):A(new Error("WebAssembly not supported"))};y.prototype.ready=y.ready;y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};y.prototype.setPartialHash=function(A){this._memory.set(A,this.pointer)};function Ci(){}});var z=l((Vi,GA)=>{var oi="Input must be an string, Buffer or Uint8Array";function hi(A){let i;if(A instanceof Uint8Array)i=A;else if(typeof A=="string")i=new TextEncoder().encode(A);else throw new Error(oi);return i}function ri(A){return Array.prototype.map.call(A,function(i){return(i<16?"0":"")+i.toString(16)}).join("")}function N(A){return(4294967296+A).toString(16).substring(1)}function Ei(A,i,I){let e=`\n`+A+" = ";for(let t=0;t<i.length;t+=2){if(I===32)e+=N(i[t]).toUpperCase(),e+=" ",e+=N(i[t+1]).toUpperCase();else if(I===64)e+=N(i[t+1]).toUpperCase(),e+=N(i[t]).toUpperCase();else throw new Error("Invalid size "+I);t%6===4?e+=`\n`+new Array(A.length+4).join(" "):t<i.length-2&&(e+=" ")}console.log(e)}function Qi(A,i,I){let e=new Date().getTime(),t=new Uint8Array(i);for(let g=0;g<i;g++)t[g]=g%256;let n=new Date().getTime();console.log("Generated random input in "+(n-e)+"ms"),e=n;for(let g=0;g<I;g++){let o=A(t),r=new Date().getTime(),E=r-e;e=r,console.log("Hashed in "+E+"ms: "+o.substring(0,20)+"..."),console.log(Math.round(i/(1<<20)/(E/1e3)*100)/100+" MB PER SECOND")}}GA.exports={normalizeInput:hi,toHex:ri,debugPrint:Ei,testSpeed:Qi}});var XA=l((Li,_A)=>{var J=z();function O(A,i,I){let e=A[i]+A[I],t=A[i+1]+A[I+1];e>=4294967296&&t++,A[i]=e,A[i+1]=t}function kA(A,i,I,e){let t=A[i]+I;I<0&&(t+=4294967296);let n=A[i+1]+e;t>=4294967296&&n++,A[i]=t,A[i+1]=n}function PA(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function S(A,i,I,e,t,n){let g=L[t],o=L[t+1],r=L[n],E=L[n+1];O(C,A,i),kA(C,A,g,o);let Q=C[e]^C[A],w=C[e+1]^C[A+1];C[e]=w,C[e+1]=Q,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=Q>>>24^w<<8,C[i+1]=w>>>24^Q<<8,O(C,A,i),kA(C,A,r,E),Q=C[e]^C[A],w=C[e+1]^C[A+1],C[e]=Q>>>16^w<<16,C[e+1]=w>>>16^Q<<16,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=w>>>31^Q<<1,C[i+1]=Q>>>31^w<<1}var NA=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),fi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],B=new Uint8Array(fi.map(function(A){return A*2})),C=new Uint32Array(32),L=new Uint32Array(32);function OA(A,i){let I=0;for(I=0;I<16;I++)C[I]=A.h[I],C[I+16]=NA[I];for(C[24]=C[24]^A.t,C[25]=C[25]^A.t/4294967296,i&&(C[28]=~C[28],C[29]=~C[29]),I=0;I<32;I++)L[I]=PA(A.b,4*I);for(I=0;I<12;I++)S(0,8,16,24,B[I*16+0],B[I*16+1]),S(2,10,18,26,B[I*16+2],B[I*16+3]),S(4,12,20,28,B[I*16+4],B[I*16+5]),S(6,14,22,30,B[I*16+6],B[I*16+7]),S(0,10,20,30,B[I*16+8],B[I*16+9]),S(2,12,22,24,B[I*16+10],B[I*16+11]),S(4,14,16,26,B[I*16+12],B[I*16+13]),S(6,8,18,28,B[I*16+14],B[I*16+15]);for(I=0;I<16;I++)A.h[I]=A.h[I]^C[I]^C[I+16]}var F=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function JA(A,i,I,e){if(A===0||A>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(i&&i.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");if(I&&I.length!==16)throw new Error("Illegal salt, expected Uint8Array with length is 16");if(e&&e.length!==16)throw new Error("Illegal personal, expected Uint8Array with length is 16");let t={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:A};F.fill(0),F[0]=A,i&&(F[1]=i.length),F[2]=1,F[3]=1,I&&F.set(I,32),e&&F.set(e,48);for(let n=0;n<16;n++)t.h[n]=NA[n]^PA(F,n*4);return i&&(Z(t,i),t.c=128),t}function Z(A,i){for(let I=0;I<i.length;I++)A.c===128&&(A.t+=A.c,OA(A,!1),A.c=0),A.b[A.c++]=i[I]}function RA(A){for(A.t+=A.c;A.c<128;)A.b[A.c++]=0;OA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3);return i}function TA(A,i,I,e,t){I=I||64,A=J.normalizeInput(A),e&&(e=J.normalizeInput(e)),t&&(t=J.normalizeInput(t));let n=JA(I,i,e,t);return Z(n,A),RA(n)}function Bi(A,i,I,e,t){let n=TA(A,i,I,e,t);return J.toHex(n)}_A.exports={blake2b:TA,blake2bHex:Bi,blake2bInit:JA,blake2bUpdate:Z,blake2bFinal:RA}});var AI=l((Yi,$A)=>{var qA=z();function si(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function K(A,i,I,e,t,n){h[A]=h[A]+h[i]+t,h[e]=R(h[e]^h[A],16),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],12),h[A]=h[A]+h[i]+n,h[e]=R(h[e]^h[A],8),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],7)}function R(A,i){return A>>>i^A<<32-i}var jA=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),h=new Uint32Array(16),f=new Uint32Array(16);function WA(A,i){let I=0;for(I=0;I<8;I++)h[I]=A.h[I],h[I+8]=jA[I];for(h[12]^=A.t,h[13]^=A.t/4294967296,i&&(h[14]=~h[14]),I=0;I<16;I++)f[I]=si(A.b,4*I);for(I=0;I<10;I++)K(0,4,8,12,f[s[I*16+0]],f[s[I*16+1]]),K(1,5,9,13,f[s[I*16+2]],f[s[I*16+3]]),K(2,6,10,14,f[s[I*16+4]],f[s[I*16+5]]),K(3,7,11,15,f[s[I*16+6]],f[s[I*16+7]]),K(0,5,10,15,f[s[I*16+8]],f[s[I*16+9]]),K(1,6,11,12,f[s[I*16+10]],f[s[I*16+11]]),K(2,7,8,13,f[s[I*16+12]],f[s[I*16+13]]),K(3,4,9,14,f[s[I*16+14]],f[s[I*16+15]]);for(I=0;I<8;I++)A.h[I]^=h[I]^h[I+8]}function zA(A,i){if(!(A>0&&A<=32))throw new Error("Incorrect output length, should be in [1, 32]");let I=i?i.length:0;if(i&&!(I>0&&I<=32))throw new Error("Incorrect key length, should be in [1, 32]");let e={h:new Uint32Array(jA),b:new Uint8Array(64),c:0,t:0,outlen:A};return e.h[0]^=16842752^I<<8^A,I>0&&(v(e,i),e.c=64),e}function v(A,i){for(let I=0;I<i.length;I++)A.c===64&&(A.t+=A.c,WA(A,!1),A.c=0),A.b[A.c++]=i[I]}function ZA(A){for(A.t+=A.c;A.c<64;)A.b[A.c++]=0;WA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3)&255;return i}function vA(A,i,I){I=I||32,A=qA.normalizeInput(A);let e=zA(I,i);return v(e,A),ZA(e)}function yi(A,i,I){let e=vA(A,i,I);return qA.toHex(e)}$A.exports={blake2s:vA,blake2sHex:yi,blake2sInit:zA,blake2sUpdate:v,blake2sFinal:ZA}});var iI=l((Mi,II)=>{var Y=XA(),M=AI();II.exports={blake2b:Y.blake2b,blake2bHex:Y.blake2bHex,blake2bInit:Y.blake2bInit,blake2bUpdate:Y.blake2bUpdate,blake2bFinal:Y.blake2bFinal,blake2s:M.blake2s,blake2sHex:M.blake2sHex,blake2sInit:M.blake2sInit,blake2sUpdate:M.blake2sUpdate,blake2sFinal:M.blake2sFinal}});var x=eA(MA(),1),m=eA(iI(),1);function d(A,i,I,e){return(0,m.blake2bInit)(A,i)}d.prototype.update=function(A){return(0,m.blake2bUpdate)(this,A),this};d.prototype.digest=function(A){var i=A||new Uint8Array(this.outlen);return(0,m.blake2bFinal)(this,i),i};d.prototype.final=d.prototype.digest;d.ready=function(A){x.ready(function(){A()})};function li(A,i,I,e){return new d(A,i)}function $(A){x.ready(function(){A()})}var AA=!1,T=li;x.ready(function(A){A||(AA=!0,T=x.default)});var tI=T,nI=!1,u=null,eI=null,IA=!1;$?$(()=>{IA=AA,console.debug("[privatecaptcha][worker] Hasher loaded. wasm="+IA),tI=T,nI=!0,u&&self.postMessage({command:"init"})}):console.warn("[privatecaptcha][worker] Blake2b ready() is not defined");function wi(A,i){return(A[i]|A[i+1]<<8|A[i+2]<<16|A[i+3]<<24)>>>0}function ci(A){return Math.pow(2,Math.floor((255.999-A)/8))>>>0}function ui(A,i,I){let e=u.length;I&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${A} puzzleID=${i} length=${e}`),u[e-8]=i;let t=new Uint8Array(32);for(let n=0;n<256;n++){u[e-1-3]=n;for(let g=0;g<256;g++){u[e-1-2]=g;for(let o=0;o<256;o++){u[e-1-1]=g;for(let r=0;r<256;r++){u[e-1-0]=r,t.fill(0),tI(t.length).update(u).digest(t);let E=wi(t,0);if(E<=A)return I&&console.debug(`[privatecaptcha][worker] found solution. prefix=${E} threshold=${A}`),u.subarray(e-8)}}}}return new Uint8Array(0)}self.onmessage=A=>{let{command:i,argument:I}=A.data;switch(i){case"init":let{id:e,buffer:t}=I;eI=e,u=t,nI&&self.postMessage({command:"init"});break;case"solve":let{difficulty:n,puzzleIndex:g,debug:o}=I,r=ci(n),E=ui(r,g,o);self.postMessage({command:i,argument:{id:eI,solution:E,wasm:IA}});break;default:break}};\n')}var ce=1,F=class{constructor(e={},t=!1){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._workers=[],this._debug=t,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1,this._callbacks=Object.assign({workersReady:()=>0,workerError:()=>0,workStarted:()=>0,workCompleted:()=>0,progress:()=>0},e)}init(e,t){if(!e)return;if(e.isZero()){this._debug&&console.debug("[privatecaptcha][pool] skipping initializing workers"),setTimeout(()=>this._callbacks.workersReady(t),0);return}let i=4,r=0,o=[],n=this,s=e.ID,u=e.puzzleBuffer;for(let a=0;a<i;a++){let y=new G;y.onerror=w=>this._callbacks.workerError(w),y.onmessage=function(w){if(!w.data)return;switch(w.data.command){case"init":r++,r===i&&n._callbacks.workersReady(t);break;case"solve":let{id:oe,solution:ne,wasm:se}=w.data.argument;n.onSolutionFound(oe,ne,se);break;case"error":w.data.error&&n._callbacks.workerError(w.data.error);break;default:break}},o.push(y)}this._workers=o,this._debug&&console.debug(`[privatecaptcha][pool] initializing workers. count=${this._workers.length}`);for(let a=0;a<this._workers.length;a++)this._workers[a].postMessage({command:"init",argument:{id:s,buffer:u}})}solve(e){if(!e)return;this._debug&&console.debug("[privatecaptcha][pool] starting solving"),this._solutions=[],this._solutionsCount=e.solutionsCount,this._puzzleID=e.ID,this._timeStarted=Date.now(),this._timeFinished=null;let t=e.isZero()||e.solutionsCount===0,i=null;for(let r=0;r<e.solutionsCount;r++)t?(i||(i=new Uint8Array(8)),this._solutions.push(i)):this._workers[r%this._workers.length].postMessage({command:"solve",argument:{difficulty:e.difficulty,puzzleIndex:r,debug:this._debug}});this._callbacks.workStarted(),t&&setTimeout(()=>this.onWorkCompleted(),0)}stop(){let e=this._workers.length;for(let t=0;t<e;t++)this._workers[t].terminate();this._workers=[],this._debug&&console.debug("[privatecaptcha][pool] terminated the workers. count="+e)}reset(){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1}onSolutionFound(e,t,i){if(this._debug&&console.debug("[privatecaptcha][pool] solution found. length="+t.length),e!=this._puzzleID){console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${e} expected=${this._puzzleID}`);return}this._solutions.push(t),i&&(this._anyWasm=!0);let r=this._solutions.length;this._callbacks.progress(r*100/this._solutionsCount),r==this._solutionsCount&&this.onWorkCompleted()}onWorkCompleted(){this._timeFinished=Date.now(),this._callbacks.workCompleted()}serializeSolutions(e){this._debug&&console.debug("[privatecaptcha][pool] serializing solutions. count="+this._solutions.length);let t=this._solutions.reduce((s,u)=>s+u.length,0),i=this.writeMetadata(e),r=i.length,o=new Uint8Array(r+t),n=0;o.set(i,n),n+=i.length;for(let s=0;s<this._solutions.length;s++)o.set(this._solutions[s],n),n+=this._solutions[s].length;return $(o)}writeMetadata(e){let i=new Uint8Array(7),r=0;i[r++]=ce&255,i[r++]=e&255;let o=this._anyWasm?1:0;i[r++]=o&255;let n=this.elapsedMillis();return i[r++]=n&255,i[r++]=n>>8&255,i[r++]=n>>16&255,i[r++]=n>>24&255,i}elapsedMillis(){return this._timeStarted&&this._timeFinished?this._timeFinished-this._timeStarted:0}};var K=typeof HTMLElement<"u"?HTMLElement:Object;var L=class extends K{constructor(){super();let e=this.getAttribute("stroke"),t=100,i=t/2,r=i-e/2;this._circumference=r*2*Math.PI,this._root=this.attachShadow({mode:"open"}),this._root.innerHTML=`
1
+ var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",S=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(k=0;k<m.length;k++)S[m.charCodeAt(k)]=k;var k,$=function(A){var e=new Uint8Array(A),t,i=e.length,r="";for(t=0;t<i;t+=3)r+=m[e[t]>>2],r+=m[(e[t]&3)<<4|e[t+1]>>4],r+=m[(e[t+1]&15)<<2|e[t+2]>>6],r+=m[e[t+2]&63];return i%3===2?r=r.substring(0,r.length-1)+"=":i%3===1&&(r=r.substring(0,r.length-2)+"=="),r},j=function(A){var e=A.length*.75,t=A.length,i,r=0,o,n,s,u;A[A.length-1]==="="&&(e--,A[A.length-2]==="="&&e--);var a=new ArrayBuffer(e),y=new Uint8Array(a);for(i=0;i<t;i+=4)o=S[A.charCodeAt(i)],n=S[A.charCodeAt(i+1)],s=S[A.charCodeAt(i+2)],u=S[A.charCodeAt(i+3)],y[r++]=o<<2|n>>4,y[r++]=(n&15)<<4|s>>2,y[r++]=(s&3)<<6|u&63;return a};var W=128,Ie=[408,409,429];async function Z(A,e){try{let t=await he(`${A}?sitekey=${e}`,{headers:[["x-pc-captcha-version","1"]],mode:"cors"},5);if(t.ok)return await t.text();{let i=await t.json();if(i&&i.error)throw Error(i.error)}}catch(t){throw console.error("[privatecaptcha]",t),t}throw Error("Internal error")}function ae(A){return new Promise(e=>setTimeout(e,A))}async function he(A,e,t,i=800,r=6e3){for(let o=0;o<t;o++){if(o>0){let n=Math.min(i*Math.pow(2,o),r);await ae(n)}try{let n=await fetch(A,e);if(n.ok)return n;if(console.warn("[privatecaptcha]",`HTTP request failed. url=${A} status=${n.status}`),n.status>=400&&n.status<500&&!Ie.includes(n.status))break;continue}catch(n){console.error("[privatecaptcha]",n)}}throw new Error("Captcha puzzle load failed after maximum retry attempts")}function Y(A,e){return(A[e]|A[e+1]<<8|A[e+2]<<16|A[e+3]<<24)>>>0}function ge(A,e){return BigInt(Y(A,e))+(BigInt(Y(A,e+4))<<32n)}var x=class{constructor(e){this.puzzleBuffer=null,this.ID=null,this.difficulty=null,this.solutionsCount=null,this.expirationTimestamp=null,this.userData=null,this.signature=null,this.parse(e),this.rawData=e}parse(e){let t=e.split(".");if(t.length!==2)throw Error(`Invalid amount of parts: ${t.length}`);let i=t[0];this.signature=t[1];let r=new Uint8Array(j(i)),o=0;o+=1,o+=16,this.ID=ge(r,o),o+=8,this.difficulty=r[o],o+=1,this.solutionsCount=r[o],o+=1,this.expirationTimestamp=Y(r,o),o+=4,o+=4;let n=16;this.userData=r.slice(o,o+n),o+=n;let s=r;if(s.length<W){let u=new Uint8Array(W);u.set(s),this.puzzleBuffer=u}else this.puzzleBuffer=s}isZero(){return this.ID===0n&&this.difficulty===0&&this.expirationTimestamp===0}expirationMillis(){return this.expirationTimestamp?new Date(this.expirationTimestamp*1e3)-new Date:0}};function N(A){let e=new Blob([A],{type:"text/javascript"}),t=URL.createObjectURL(e),i=new Worker(t);return URL.revokeObjectURL(t),i}function G(){return N('var gI=Object.create;var iA=Object.defineProperty;var CI=Object.getOwnPropertyDescriptor;var oI=Object.getOwnPropertyNames;var hI=Object.getPrototypeOf,rI=Object.prototype.hasOwnProperty;var l=(A,i)=>()=>(i||A((i={exports:{}}).exports,i),i.exports);var EI=(A,i,I,e)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of oI(i))!rI.call(A,t)&&t!==I&&iA(A,t,{get:()=>i[t],enumerable:!(e=CI(i,t))||e.enumerable});return A};var eA=(A,i,I)=>(I=A!=null?gI(hI(A)):{},EI(i||!A||!A.__esModule?iA(I,"default",{value:A,enumerable:!0}):I,A));var gA=l((Ui,nA)=>{nA.exports=tA;var G=class extends Error{};G.prototype.name="AssertionError";function tA(A,i){if(!A){var I=new G(i);throw Error.captureStackTrace&&Error.captureStackTrace(I,tA),I}}});var hA=l((Si,oA)=>{function CA(A){return A.length}function QI(A){let i=A.byteLength,I="";for(let e=0;e<i;e++)I+=String.fromCharCode(A[e]);return I}function fI(A,i,I=0,e=CA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++)A[I+n]=i.charCodeAt(n);return t}oA.exports={byteLength:CA,toString:QI,write:fI}});var QA=l((Fi,EA)=>{var H="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=new Uint8Array(256);for(let A=0;A<H.length;A++)p[H.charCodeAt(A)]=A;p[45]=62;p[95]=63;function rA(A){let i=A.length;return A.charCodeAt(i-1)===61&&i--,i>1&&A.charCodeAt(i-1)===61&&i--,i*3>>>2}function BI(A){let i=A.byteLength,I="";for(let e=0;e<i;e+=3)I+=H[A[e]>>2]+H[(A[e]&3)<<4|A[e+1]>>4]+H[(A[e+1]&15)<<2|A[e+2]>>6]+H[A[e+2]&63];return i%3===2?I=I.substring(0,I.length-1)+"=":i%3===1&&(I=I.substring(0,I.length-2)+"=="),I}function sI(A,i,I=0,e=rA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0,g=0;g<t;n+=4){let o=p[i.charCodeAt(n)],r=p[i.charCodeAt(n+1)],E=p[i.charCodeAt(n+2)],Q=p[i.charCodeAt(n+3)];A[g++]=o<<2|r>>4,A[g++]=(r&15)<<4|E>>2,A[g++]=(E&3)<<6|Q&63}return t}EA.exports={byteLength:rA,toString:BI,write:sI}});var yA=l((Ki,sA)=>{function BA(A){return A.length>>>1}function yI(A){let i=A.byteLength;A=new DataView(A.buffer,A.byteOffset,i);let I="",e=0;for(let t=i-i%4;e<t;e+=4)I+=A.getUint32(e).toString(16).padStart(8,"0");for(;e<i;e++)I+=A.getUint8(e).toString(16).padStart(2,"0");return I}function lI(A,i,I=0,e=BA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++){let g=fA(i.charCodeAt(n*2)),o=fA(i.charCodeAt(n*2+1));if(g===void 0||o===void 0)return A.subarray(0,n);A[I+n]=g<<4|o}return t}sA.exports={byteLength:BA,toString:yI,write:lI};function fA(A){if(A>=48&&A<=57)return A-48;if(A>=65&&A<=70)return A-65+10;if(A>=97&&A<=102)return A-97+10}});var aA=l((pi,lA)=>{function _(A){let i=0;for(let I=0,e=A.length;I<e;I++){let t=A.charCodeAt(I);if(t>=55296&&t<=56319&&I+1<e){let n=A.charCodeAt(I+1);if(n>=56320&&n<=57343){i+=4,I++;continue}}t<=127?i+=1:t<=2047?i+=2:i+=3}return i}var X;if(typeof TextDecoder!="undefined"){let A=new TextDecoder;X=function(I){return A.decode(I)}}else X=function(i){let I=i.byteLength,e="",t=0;for(;t<I;){let n=i[t];if(n<=127){e+=String.fromCharCode(n),t++;continue}let g=0,o=0;if(n<=223?(g=1,o=n&31):n<=239?(g=2,o=n&15):n<=244&&(g=3,o=n&7),I-t-g>0){let r=0;for(;r<g;)n=i[t+r+1],o=o<<6|n&63,r+=1}else o=65533,g=I-t;e+=String.fromCodePoint(o),t+=g+1}return e};var q;if(typeof TextEncoder!="undefined"){let A=new TextEncoder;q=function(I,e,t=0,n=_(e)){let g=Math.min(n,I.byteLength-t);return A.encodeInto(e,I.subarray(t,t+g)),g}}else q=function(i,I,e=0,t=_(I)){let n=Math.min(t,i.byteLength-e);i=i.subarray(e,e+n);let g=0,o=0;for(;g<I.length;){let r=I.codePointAt(g);if(r<=127){i[o++]=r,g++;continue}let E=0,Q=0;for(r<=2047?(E=6,Q=192):r<=65535?(E=12,Q=224):r<=2097151&&(E=18,Q=240),i[o++]=Q|r>>E,E-=6;E>=0;)i[o++]=128|r>>E&63,E-=6;g+=r>=65536?2:1}return n};lA.exports={byteLength:_,toString:X,write:q}});var uA=l((bi,cA)=>{function wA(A){return A.length*2}function aI(A){let i=A.byteLength,I="";for(let e=0;e<i-1;e+=2)I+=String.fromCharCode(A[e]+A[e+1]*256);return I}function wI(A,i,I=0,e=wA(i)){let t=Math.min(e,A.byteLength-I),n=t;for(let g=0;g<i.length&&!((n-=2)<0);++g){let o=i.charCodeAt(g),r=o>>8,E=o%256;A[I+g*2]=E,A[I+g*2+1]=r}return t}cA.exports={byteLength:wA,toString:aI,write:wI}});var KA=l((W,FA)=>{var cI=hA(),uI=QA(),DI=yA(),UI=aA(),SI=uA(),k=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function V(A){switch(A){case"ascii":return cI;case"base64":return uI;case"hex":return DI;case"utf8":case"utf-8":case void 0:return UI;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return SI;default:throw new Error(`Unknown encoding: ${A}`)}}function DA(A){return A instanceof Uint8Array}function FI(A){try{return V(A),!0}catch(i){return!1}}function KI(A,i,I){let e=new Uint8Array(A);return i!==void 0&&W.fill(e,i,0,e.byteLength,I),e}function pI(A){return new Uint8Array(A)}function bI(A){return new Uint8Array(A)}function xI(A,i){return V(i).byteLength(A)}function HI(A,i){if(A===i)return 0;let I=Math.min(A.byteLength,i.byteLength);A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4){let n=A.getUint32(e,k),g=i.getUint32(e,k);if(n!==g)break}for(;e<I;e++){let t=A.getUint8(e),n=i.getUint8(e);if(t<n)return-1;if(t>n)return 1}return A.byteLength>i.byteLength?1:A.byteLength<i.byteLength?-1:0}function dI(A,i){i===void 0&&(i=A.reduce((t,n)=>t+n.byteLength,0));let I=new Uint8Array(i),e=0;for(let t of A){if(e+t.byteLength>I.byteLength){let n=t.subarray(0,I.byteLength-e);return I.set(n,e),I}I.set(t,e),e+=t.byteLength}return I}function mI(A,i,I=0,e=0,t=A.byteLength){if(t>0&&t<e||t===e||A.byteLength===0||i.byteLength===0)return 0;if(I<0)throw new RangeError("targetStart is out of range");if(e<0||e>=A.byteLength)throw new RangeError("sourceStart is out of range");if(t<0)throw new RangeError("sourceEnd is out of range");I>=i.byteLength&&(I=i.byteLength),t>A.byteLength&&(t=A.byteLength),i.byteLength-I<t-e&&(t=i.length-I+e);let n=t-e;return A===i?i.copyWithin(I,e,t):i.set(A.subarray(e,t),I),n}function VI(A,i){if(A===i)return!0;if(A.byteLength!==i.byteLength)return!1;let I=A.byteLength;A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4)if(A.getUint32(e,k)!==i.getUint32(e,k))return!1;for(;e<I;e++)if(A.getUint8(e)!==i.getUint8(e))return!1;return!0}function LI(A,i,I,e,t){if(typeof i=="string"?typeof I=="string"?(t=I,I=0,e=A.byteLength):typeof e=="string"&&(t=e,e=A.byteLength):typeof i=="number"?i=i&255:typeof i=="boolean"&&(i=+i),I<0||A.byteLength<I||A.byteLength<e)throw new RangeError("Out of range index");if(I===void 0&&(I=0),e===void 0&&(e=A.byteLength),e<=I)return A;if(i||(i=0),typeof i=="number")for(let n=I;n<e;++n)A[n]=i;else{i=DA(i)?i:j(i,t);let n=i.byteLength;for(let g=0;g<e-I;++g)A[g+I]=i[g%n]}return A}function j(A,i,I){return typeof A=="string"?YI(A,i):Array.isArray(A)?MI(A):ArrayBuffer.isView(A)?GI(A):kI(A,i,I)}function YI(A,i){let I=V(i),e=new Uint8Array(I.byteLength(A));return I.write(e,A,0,e.byteLength),e}function MI(A){let i=new Uint8Array(A.length);return i.set(A),i}function GI(A){let i=new Uint8Array(A.byteLength);return i.set(A),i}function kI(A,i,I){return new Uint8Array(A,i,I)}function PI(A,i,I,e){return SA(A,i,I,e)!==-1}function UA(A,i,I,e,t){if(A.byteLength===0)return-1;if(typeof I=="string"?(e=I,I=0):I===void 0?I=t?0:A.length-1:I<0&&(I+=A.byteLength),I>=A.byteLength){if(t)return-1;I=A.byteLength-1}else if(I<0)if(t)I=0;else return-1;if(typeof i=="string")i=j(i,e);else if(typeof i=="number")return i=i&255,t?A.indexOf(i,I):A.lastIndexOf(i,I);if(i.byteLength===0)return-1;if(t){let n=-1;for(let g=I;g<A.byteLength;g++)if(A[g]===i[n===-1?0:g-n]){if(n===-1&&(n=g),g-n+1===i.byteLength)return n}else n!==-1&&(g-=g-n),n=-1}else{I+i.byteLength>A.byteLength&&(I=A.byteLength-i.byteLength);for(let n=I;n>=0;n--){let g=!0;for(let o=0;o<i.byteLength;o++)if(A[n+o]!==i[o]){g=!1;break}if(g)return n}}return-1}function SA(A,i,I,e){return UA(A,i,I,e,!0)}function NI(A,i,I,e){return UA(A,i,I,e,!1)}function b(A,i,I){let e=A[i];A[i]=A[I],A[I]=e}function OI(A){let i=A.byteLength;if(i%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let I=0;I<i;I+=2)b(A,I,I+1);return A}function JI(A){let i=A.byteLength;if(i%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let I=0;I<i;I+=4)b(A,I,I+3),b(A,I+1,I+2);return A}function RI(A){let i=A.byteLength;if(i%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let I=0;I<i;I+=8)b(A,I,I+7),b(A,I+1,I+6),b(A,I+2,I+5),b(A,I+3,I+4);return A}function TI(A){return A}function _I(A,i,I=0,e=A.byteLength){let t=A.byteLength;return I>=t||e<=I?"":(I<0&&(I=0),e>t&&(e=t),(I!==0||e<t)&&(A=A.subarray(I,e)),V(i).toString(A))}function XI(A,i,I,e,t){return I===void 0?t="utf8":e===void 0&&typeof I=="string"?(t=I,I=void 0):t===void 0&&typeof e=="string"&&(t=e,e=void 0),V(t).write(A,i,I,e)}function qI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat64(I,i,!0),I+8}function jI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat32(I,i,!0),I+4}function WI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setUint32(I,i,!0),I+4}function zI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setInt32(I,i,!0),I+4}function ZI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat64(i,!0)}function vI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat32(i,!0)}function $I(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getUint32(i,!0)}function Ai(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getInt32(i,!0)}FA.exports=W={isBuffer:DA,isEncoding:FI,alloc:KI,allocUnsafe:pI,allocUnsafeSlow:bI,byteLength:xI,compare:HI,concat:dI,copy:mI,equals:VI,fill:LI,from:j,includes:PI,indexOf:SA,lastIndexOf:NI,swap16:OI,swap32:JI,swap64:RI,toBuffer:TI,toString:_I,write:XI,writeDoubleLE:qI,writeFloatLE:jI,writeUInt32LE:WI,writeInt32LE:zI,readDoubleLE:ZI,readFloatLE:vI,readUInt32LE:$I,readInt32LE:Ai}});var bA=l((xi,pA)=>{var Ii=(A,i)=>function(){return i||(0,A[Object.keys(A)[0]])((i={exports:{}}).exports,i),i.exports},ii=(()=>{for(var A=new Uint8Array(128),i=0;i<64;i++)A[i<26?i+65:i<52?i+71:i<62?i-4:i*4-205]=i;return I=>{for(var e=I.length,t=new Uint8Array((e-(I[e-1]=="=")-(I[e-2]=="="))*3/4|0),n=0,g=0;n<e;){var o=A[I.charCodeAt(n++)],r=A[I.charCodeAt(n++)],E=A[I.charCodeAt(n++)],Q=A[I.charCodeAt(n++)];t[g++]=o<<2|r>>4,t[g++]=r<<4|E>>2,t[g++]=E<<6|Q}return t}})(),ei=Ii({"wasm-binary:./blake2b.wat"(A,i){i.exports=ii("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")}}),ti=ei(),ni=WebAssembly.compile(ti);pA.exports=async A=>(await WebAssembly.instantiate(await ni,A)).exports});var MA=l((mi,c)=>{var a=gA(),gi=KA(),U=null,xA=typeof WebAssembly!="undefined"&&bA()().then(A=>{U=A}),D=64,P=[];c.exports=y;var HA=c.exports.BYTES_MIN=16,dA=c.exports.BYTES_MAX=64,Hi=c.exports.BYTES=32,mA=c.exports.KEYBYTES_MIN=16,VA=c.exports.KEYBYTES_MAX=64,di=c.exports.KEYBYTES=32,LA=c.exports.SALTBYTES=16,YA=c.exports.PERSONALBYTES=16;function y(A,i,I,e,t){if(!(this instanceof y))return new y(A,i,I,e,t);if(!U)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");A||(A=32),t!==!0&&(a(A>=HA,"digestLength must be at least "+HA+", was given "+A),a(A<=dA,"digestLength must be at most "+dA+", was given "+A),i!=null&&(a(i instanceof Uint8Array,"key must be Uint8Array or Buffer"),a(i.length>=mA,"key must be at least "+mA+", was given "+i.length),a(i.length<=VA,"key must be at least "+VA+", was given "+i.length)),I!=null&&(a(I instanceof Uint8Array,"salt must be Uint8Array or Buffer"),a(I.length===LA,"salt must be exactly "+LA+", was given "+I.length)),e!=null&&(a(e instanceof Uint8Array,"personal must be Uint8Array or Buffer"),a(e.length===YA,"personal must be exactly "+YA+", was given "+e.length))),P.length||(P.push(D),D+=216),this.digestLength=A,this.finalized=!1,this.pointer=P.pop(),this._memory=new Uint8Array(U.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=i?i.length:0,this._memory[2]=1,this._memory[3]=1,I&&this._memory.set(I,32),e&&this._memory.set(e,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),U.blake2b_init(this.pointer,this.digestLength),i&&(this.update(i),this._memory.fill(0,D,D+i.length),this._memory[this.pointer+200]=128)}y.prototype._realloc=function(A){U.memory.grow(Math.max(0,Math.ceil(Math.abs(A-this._memory.length)/65536))),this._memory=new Uint8Array(U.memory.buffer)};y.prototype.update=function(A){return a(this.finalized===!1,"Hash instance finalized"),a(A instanceof Uint8Array,"input must be Uint8Array or Buffer"),D+A.length>this._memory.length&&this._realloc(D+A.length),this._memory.set(A,D),U.blake2b_update(this.pointer,D,D+A.length),this};y.prototype.digest=function(A){if(a(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,P.push(this.pointer),U.blake2b_final(this.pointer),!A||A==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof A=="string")return gi.toString(this._memory,A,this.pointer+128,this.pointer+128+this.digestLength);a(A instanceof Uint8Array&&A.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var i=0;i<this.digestLength;i++)A[i]=this._memory[this.pointer+128+i];return A};y.prototype.final=y.prototype.digest;y.WASM=U;y.SUPPORTED=typeof WebAssembly!="undefined";y.ready=function(A){return A||(A=Ci),xA?xA.then(()=>A(),A):A(new Error("WebAssembly not supported"))};y.prototype.ready=y.ready;y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};y.prototype.setPartialHash=function(A){this._memory.set(A,this.pointer)};function Ci(){}});var z=l((Vi,GA)=>{var oi="Input must be an string, Buffer or Uint8Array";function hi(A){let i;if(A instanceof Uint8Array)i=A;else if(typeof A=="string")i=new TextEncoder().encode(A);else throw new Error(oi);return i}function ri(A){return Array.prototype.map.call(A,function(i){return(i<16?"0":"")+i.toString(16)}).join("")}function N(A){return(4294967296+A).toString(16).substring(1)}function Ei(A,i,I){let e=`\n`+A+" = ";for(let t=0;t<i.length;t+=2){if(I===32)e+=N(i[t]).toUpperCase(),e+=" ",e+=N(i[t+1]).toUpperCase();else if(I===64)e+=N(i[t+1]).toUpperCase(),e+=N(i[t]).toUpperCase();else throw new Error("Invalid size "+I);t%6===4?e+=`\n`+new Array(A.length+4).join(" "):t<i.length-2&&(e+=" ")}console.log(e)}function Qi(A,i,I){let e=new Date().getTime(),t=new Uint8Array(i);for(let g=0;g<i;g++)t[g]=g%256;let n=new Date().getTime();console.log("Generated random input in "+(n-e)+"ms"),e=n;for(let g=0;g<I;g++){let o=A(t),r=new Date().getTime(),E=r-e;e=r,console.log("Hashed in "+E+"ms: "+o.substring(0,20)+"..."),console.log(Math.round(i/(1<<20)/(E/1e3)*100)/100+" MB PER SECOND")}}GA.exports={normalizeInput:hi,toHex:ri,debugPrint:Ei,testSpeed:Qi}});var XA=l((Li,_A)=>{var J=z();function O(A,i,I){let e=A[i]+A[I],t=A[i+1]+A[I+1];e>=4294967296&&t++,A[i]=e,A[i+1]=t}function kA(A,i,I,e){let t=A[i]+I;I<0&&(t+=4294967296);let n=A[i+1]+e;t>=4294967296&&n++,A[i]=t,A[i+1]=n}function PA(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function S(A,i,I,e,t,n){let g=L[t],o=L[t+1],r=L[n],E=L[n+1];O(C,A,i),kA(C,A,g,o);let Q=C[e]^C[A],w=C[e+1]^C[A+1];C[e]=w,C[e+1]=Q,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=Q>>>24^w<<8,C[i+1]=w>>>24^Q<<8,O(C,A,i),kA(C,A,r,E),Q=C[e]^C[A],w=C[e+1]^C[A+1],C[e]=Q>>>16^w<<16,C[e+1]=w>>>16^Q<<16,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=w>>>31^Q<<1,C[i+1]=Q>>>31^w<<1}var NA=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),fi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],B=new Uint8Array(fi.map(function(A){return A*2})),C=new Uint32Array(32),L=new Uint32Array(32);function OA(A,i){let I=0;for(I=0;I<16;I++)C[I]=A.h[I],C[I+16]=NA[I];for(C[24]=C[24]^A.t,C[25]=C[25]^A.t/4294967296,i&&(C[28]=~C[28],C[29]=~C[29]),I=0;I<32;I++)L[I]=PA(A.b,4*I);for(I=0;I<12;I++)S(0,8,16,24,B[I*16+0],B[I*16+1]),S(2,10,18,26,B[I*16+2],B[I*16+3]),S(4,12,20,28,B[I*16+4],B[I*16+5]),S(6,14,22,30,B[I*16+6],B[I*16+7]),S(0,10,20,30,B[I*16+8],B[I*16+9]),S(2,12,22,24,B[I*16+10],B[I*16+11]),S(4,14,16,26,B[I*16+12],B[I*16+13]),S(6,8,18,28,B[I*16+14],B[I*16+15]);for(I=0;I<16;I++)A.h[I]=A.h[I]^C[I]^C[I+16]}var F=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function JA(A,i,I,e){if(A===0||A>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(i&&i.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");if(I&&I.length!==16)throw new Error("Illegal salt, expected Uint8Array with length is 16");if(e&&e.length!==16)throw new Error("Illegal personal, expected Uint8Array with length is 16");let t={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:A};F.fill(0),F[0]=A,i&&(F[1]=i.length),F[2]=1,F[3]=1,I&&F.set(I,32),e&&F.set(e,48);for(let n=0;n<16;n++)t.h[n]=NA[n]^PA(F,n*4);return i&&(Z(t,i),t.c=128),t}function Z(A,i){for(let I=0;I<i.length;I++)A.c===128&&(A.t+=A.c,OA(A,!1),A.c=0),A.b[A.c++]=i[I]}function RA(A){for(A.t+=A.c;A.c<128;)A.b[A.c++]=0;OA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3);return i}function TA(A,i,I,e,t){I=I||64,A=J.normalizeInput(A),e&&(e=J.normalizeInput(e)),t&&(t=J.normalizeInput(t));let n=JA(I,i,e,t);return Z(n,A),RA(n)}function Bi(A,i,I,e,t){let n=TA(A,i,I,e,t);return J.toHex(n)}_A.exports={blake2b:TA,blake2bHex:Bi,blake2bInit:JA,blake2bUpdate:Z,blake2bFinal:RA}});var AI=l((Yi,$A)=>{var qA=z();function si(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function K(A,i,I,e,t,n){h[A]=h[A]+h[i]+t,h[e]=R(h[e]^h[A],16),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],12),h[A]=h[A]+h[i]+n,h[e]=R(h[e]^h[A],8),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],7)}function R(A,i){return A>>>i^A<<32-i}var jA=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),h=new Uint32Array(16),f=new Uint32Array(16);function WA(A,i){let I=0;for(I=0;I<8;I++)h[I]=A.h[I],h[I+8]=jA[I];for(h[12]^=A.t,h[13]^=A.t/4294967296,i&&(h[14]=~h[14]),I=0;I<16;I++)f[I]=si(A.b,4*I);for(I=0;I<10;I++)K(0,4,8,12,f[s[I*16+0]],f[s[I*16+1]]),K(1,5,9,13,f[s[I*16+2]],f[s[I*16+3]]),K(2,6,10,14,f[s[I*16+4]],f[s[I*16+5]]),K(3,7,11,15,f[s[I*16+6]],f[s[I*16+7]]),K(0,5,10,15,f[s[I*16+8]],f[s[I*16+9]]),K(1,6,11,12,f[s[I*16+10]],f[s[I*16+11]]),K(2,7,8,13,f[s[I*16+12]],f[s[I*16+13]]),K(3,4,9,14,f[s[I*16+14]],f[s[I*16+15]]);for(I=0;I<8;I++)A.h[I]^=h[I]^h[I+8]}function zA(A,i){if(!(A>0&&A<=32))throw new Error("Incorrect output length, should be in [1, 32]");let I=i?i.length:0;if(i&&!(I>0&&I<=32))throw new Error("Incorrect key length, should be in [1, 32]");let e={h:new Uint32Array(jA),b:new Uint8Array(64),c:0,t:0,outlen:A};return e.h[0]^=16842752^I<<8^A,I>0&&(v(e,i),e.c=64),e}function v(A,i){for(let I=0;I<i.length;I++)A.c===64&&(A.t+=A.c,WA(A,!1),A.c=0),A.b[A.c++]=i[I]}function ZA(A){for(A.t+=A.c;A.c<64;)A.b[A.c++]=0;WA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3)&255;return i}function vA(A,i,I){I=I||32,A=qA.normalizeInput(A);let e=zA(I,i);return v(e,A),ZA(e)}function yi(A,i,I){let e=vA(A,i,I);return qA.toHex(e)}$A.exports={blake2s:vA,blake2sHex:yi,blake2sInit:zA,blake2sUpdate:v,blake2sFinal:ZA}});var iI=l((Mi,II)=>{var Y=XA(),M=AI();II.exports={blake2b:Y.blake2b,blake2bHex:Y.blake2bHex,blake2bInit:Y.blake2bInit,blake2bUpdate:Y.blake2bUpdate,blake2bFinal:Y.blake2bFinal,blake2s:M.blake2s,blake2sHex:M.blake2sHex,blake2sInit:M.blake2sInit,blake2sUpdate:M.blake2sUpdate,blake2sFinal:M.blake2sFinal}});var x=eA(MA(),1),m=eA(iI(),1);function d(A,i,I,e){return(0,m.blake2bInit)(A,i)}d.prototype.update=function(A){return(0,m.blake2bUpdate)(this,A),this};d.prototype.digest=function(A){var i=A||new Uint8Array(this.outlen);return(0,m.blake2bFinal)(this,i),i};d.prototype.final=d.prototype.digest;d.ready=function(A){x.ready(function(){A()})};function li(A,i,I,e){return new d(A,i)}function $(A){x.ready(function(){A()})}var AA=!1,T=li;x.ready(function(A){A||(AA=!0,T=x.default)});var tI=T,nI=!1,u=null,eI=null,IA=!1;$?$(()=>{IA=AA,console.debug("[privatecaptcha][worker] Hasher loaded. wasm="+IA),tI=T,nI=!0,u&&self.postMessage({command:"init"})}):console.warn("[privatecaptcha][worker] Blake2b ready() is not defined");function wi(A,i){return(A[i]|A[i+1]<<8|A[i+2]<<16|A[i+3]<<24)>>>0}function ci(A){return Math.pow(2,Math.floor((255.999-A)/8))>>>0}function ui(A,i,I){let e=u.length;I&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${A} puzzleID=${i} length=${e}`),u[e-8]=i;let t=new Uint8Array(32);for(let n=0;n<256;n++){u[e-1-3]=n;for(let g=0;g<256;g++){u[e-1-2]=g;for(let o=0;o<256;o++){u[e-1-1]=g;for(let r=0;r<256;r++){u[e-1-0]=r,t.fill(0),tI(t.length).update(u).digest(t);let E=wi(t,0);if(E<=A)return I&&console.debug(`[privatecaptcha][worker] found solution. prefix=${E} threshold=${A}`),u.subarray(e-8)}}}}return new Uint8Array(0)}self.onmessage=A=>{let{command:i,argument:I}=A.data;switch(i){case"init":let{id:e,buffer:t}=I;eI=e,u=t,nI&&self.postMessage({command:"init"});break;case"solve":let{difficulty:n,puzzleIndex:g,debug:o}=I,r=ci(n),E=ui(r,g,o);self.postMessage({command:i,argument:{id:eI,solution:E,wasm:IA}});break;default:break}};\n')}var ce=1,F=class{constructor(e={},t=!1){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._workers=[],this._debug=t,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1,this._callbacks=Object.assign({workersReady:()=>0,workerError:()=>0,workStarted:()=>0,workCompleted:()=>0,progress:()=>0},e)}init(e,t){if(!e)return;if(e.isZero()){this._debug&&console.debug("[privatecaptcha][pool] skipping initializing workers"),setTimeout(()=>this._callbacks.workersReady(t),0);return}let i=4,r=0,o=[],n=this,s=e.ID,u=e.puzzleBuffer;for(let a=0;a<i;a++){let y=new G;y.onerror=w=>this._callbacks.workerError(w),y.onmessage=function(w){if(!w.data)return;switch(w.data.command){case"init":r++,r===i&&n._callbacks.workersReady(t);break;case"solve":let{id:oe,solution:ne,wasm:se}=w.data.argument;n.onSolutionFound(oe,ne,se);break;case"error":w.data.error&&n._callbacks.workerError(w.data.error);break;default:break}},o.push(y)}this._workers=o,this._debug&&console.debug(`[privatecaptcha][pool] initializing workers. count=${this._workers.length}`);for(let a=0;a<this._workers.length;a++)this._workers[a].postMessage({command:"init",argument:{id:s,buffer:u}})}solve(e){if(!e)return;this._debug&&console.debug("[privatecaptcha][pool] starting solving"),this._solutions=[],this._solutionsCount=e.solutionsCount,this._puzzleID=e.ID,this._timeStarted=Date.now(),this._timeFinished=null;let t=e.isZero()||e.solutionsCount===0,i=null;for(let r=0;r<e.solutionsCount;r++)t?(i||(i=new Uint8Array(8)),this._solutions.push(i)):this._workers[r%this._workers.length].postMessage({command:"solve",argument:{difficulty:e.difficulty,puzzleIndex:r,debug:this._debug}});this._callbacks.workStarted(),t&&setTimeout(()=>this.onWorkCompleted(),0)}stop(){let e=this._workers.length;for(let t=0;t<e;t++)this._workers[t].terminate();this._workers=[],this._debug&&console.debug("[privatecaptcha][pool] terminated the workers. count="+e)}reset(){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1}onSolutionFound(e,t,i){if(this._debug&&console.debug("[privatecaptcha][pool] solution found. length="+t.length),e!=this._puzzleID){console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${e} expected=${this._puzzleID}`);return}this._solutions.push(t),i&&(this._anyWasm=!0);let r=this._solutions.length;this._callbacks.progress(r*100/this._solutionsCount),r==this._solutionsCount&&this.onWorkCompleted()}onWorkCompleted(){this._timeFinished=Date.now(),this._callbacks.workCompleted()}serializeSolutions(e){this._debug&&console.debug("[privatecaptcha][pool] serializing solutions. count="+this._solutions.length);let t=this._solutions.reduce((s,u)=>s+u.length,0),i=this.writeMetadata(e),r=i.length,o=new Uint8Array(r+t),n=0;o.set(i,n),n+=i.length;for(let s=0;s<this._solutions.length;s++)o.set(this._solutions[s],n),n+=this._solutions[s].length;return $(o)}writeMetadata(e){let i=new Uint8Array(7),r=0;i[r++]=ce&255,i[r++]=e&255;let o=this._anyWasm?1:0;i[r++]=o&255;let n=this.elapsedMillis();return i[r++]=n&255,i[r++]=n>>8&255,i[r++]=n>>16&255,i[r++]=n>>24&255,i}elapsedMillis(){return this._timeStarted&&this._timeFinished?this._timeFinished-this._timeStarted:0}};var K=typeof HTMLElement<"u"?HTMLElement:Object;var L=class extends K{constructor(){super(),this._circumference=0,this._root=this.attachShadow({mode:"open"})}connectedCallback(){let e=this.getAttribute("stroke"),t=100,i=t/2,r=i-e/2;this._circumference=r*2*Math.PI,this._root.innerHTML=`
2
2
  <svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 ${t} ${t}">
3
3
  <circle
4
4
  id="pie"
package/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/src/index.ts", "../js/puzzle.js", "inline-worker:__inline-worker", "../js/puzzle.worker.js", "../js/workerspool.js", "../js/utils.js", "../js/progress.js", "../js/styles.css", "../js/strings.js", "../js/html.js", "../js/widget.js"],
4
- "sourcesContent": ["const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n", "'use strict';\n\nimport { decode } from 'base64-arraybuffer';\n\nconst PUZZLE_BUFFER_LENGTH = 128;\n// RequestTimeout, Conflict, TooManyRequests\nconst ACCEPTABLE_CLIENT_ERRORS = [408, 409, 429];\n\nexport async function getPuzzle(endpoint, sitekey) {\n try {\n const response = await fetchWithBackoff(`${endpoint}?sitekey=${sitekey}`,\n { headers: [[\"x-pc-captcha-version\", \"1\"]], mode: \"cors\" },\n 5 /*max attempts*/\n );\n\n if (response.ok) {\n const data = await response.text();\n return data;\n } else {\n let json = await response.json();\n if (json && json.error) {\n throw Error(json.error);\n }\n }\n } catch (err) {\n console.error('[privatecaptcha]', err);\n throw err;\n }\n\n throw Error('Internal error');\n};\n\nfunction wait(delay) {\n return new Promise((resolve) => setTimeout(resolve, delay));\n}\n\nasync function fetchWithBackoff(url, options, maxAttempts, initialDelay = 800, maxDelay = 6000) {\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(initialDelay * Math.pow(2, attempt), maxDelay);\n await wait(delay);\n }\n\n try {\n const response = await fetch(url, options);\n if (response.ok) {\n return response;\n } else {\n console.warn('[privatecaptcha]', `HTTP request failed. url=${url} status=${response.status}`);\n }\n\n if ((response.status >= 400) && (response.status < 500) &&\n !ACCEPTABLE_CLIENT_ERRORS.includes(response.status)) {\n // we don't retry on most client errors\n break;\n } else {\n continue;\n }\n } catch (err) {\n console.error('[privatecaptcha]', err);\n }\n }\n\n throw new Error('Captcha puzzle load failed after maximum retry attempts');\n}\n\nfunction readUInt32LE(binaryData, offset) {\n return (\n binaryData[offset] |\n (binaryData[offset + 1] << 8) |\n (binaryData[offset + 2] << 16) |\n (binaryData[offset + 3] << 24)\n ) >>> 0;\n}\n\nfunction readUInt64LE(binaryData, offset) {\n return (\n BigInt(readUInt32LE(binaryData, offset)) +\n (BigInt(readUInt32LE(binaryData, offset + 4)) << 32n)\n );\n}\n\nexport class Puzzle {\n constructor(rawData) {\n this.puzzleBuffer = null;\n\n this.ID = null;\n this.difficulty = null;\n this.solutionsCount = null;\n this.expirationTimestamp = null;\n this.userData = null;\n\n this.signature = null;\n\n this.parse(rawData);\n this.rawData = rawData;\n }\n\n parse(rawData) {\n const parts = rawData.split('.');\n if (parts.length !== 2) {\n throw Error(`Invalid amount of parts: ${parts.length}`);\n }\n\n const buffer = parts[0];\n this.signature = parts[1];\n\n const data = new Uint8Array(decode(buffer));\n let offset = 0;\n\n offset += 1; // version\n offset += 16; // propertyID\n\n this.ID = readUInt64LE(data, offset);\n offset += 8;\n\n this.difficulty = data[offset];\n offset += 1;\n\n this.solutionsCount = data[offset];\n offset += 1;\n\n this.expirationTimestamp = readUInt32LE(data, offset);\n offset += 4;\n\n offset += 4; // AccountID\n\n const userDataSize = 16;\n this.userData = data.slice(offset, offset + userDataSize);\n offset += userDataSize;\n\n let sourceBuffer = data;\n if (sourceBuffer.length < PUZZLE_BUFFER_LENGTH) {\n const enlargedBuffer = new Uint8Array(PUZZLE_BUFFER_LENGTH);\n enlargedBuffer.set(sourceBuffer);\n this.puzzleBuffer = enlargedBuffer;\n } else {\n this.puzzleBuffer = sourceBuffer;\n }\n }\n\n isZero() {\n return (this.ID === 0n) && (this.difficulty === 0) && (this.expirationTimestamp === 0);\n }\n\n expirationMillis() {\n if (!this.expirationTimestamp) { return 0; }\n\n const expiration = new Date(this.expirationTimestamp * 1000);\n const currentDate = new Date();\n const diff = expiration - currentDate;\n return diff;\n }\n};\n", "\nexport default function inlineWorker(scriptText) {\n let blob = new Blob([scriptText], {type: 'text/javascript'});\n let url = URL.createObjectURL(blob);\n let worker = new Worker(url);\n URL.revokeObjectURL(url);\n return worker;\n}\n", "import inlineWorker from '__inline-worker'\nexport default function Worker() {\n return inlineWorker(\"var gI=Object.create;var iA=Object.defineProperty;var CI=Object.getOwnPropertyDescriptor;var oI=Object.getOwnPropertyNames;var hI=Object.getPrototypeOf,rI=Object.prototype.hasOwnProperty;var l=(A,i)=>()=>(i||A((i={exports:{}}).exports,i),i.exports);var EI=(A,i,I,e)=>{if(i&&typeof i==\\\"object\\\"||typeof i==\\\"function\\\")for(let t of oI(i))!rI.call(A,t)&&t!==I&&iA(A,t,{get:()=>i[t],enumerable:!(e=CI(i,t))||e.enumerable});return A};var eA=(A,i,I)=>(I=A!=null?gI(hI(A)):{},EI(i||!A||!A.__esModule?iA(I,\\\"default\\\",{value:A,enumerable:!0}):I,A));var gA=l((Ui,nA)=>{nA.exports=tA;var G=class extends Error{};G.prototype.name=\\\"AssertionError\\\";function tA(A,i){if(!A){var I=new G(i);throw Error.captureStackTrace&&Error.captureStackTrace(I,tA),I}}});var hA=l((Si,oA)=>{function CA(A){return A.length}function QI(A){let i=A.byteLength,I=\\\"\\\";for(let e=0;e<i;e++)I+=String.fromCharCode(A[e]);return I}function fI(A,i,I=0,e=CA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++)A[I+n]=i.charCodeAt(n);return t}oA.exports={byteLength:CA,toString:QI,write:fI}});var QA=l((Fi,EA)=>{var H=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\",p=new Uint8Array(256);for(let A=0;A<H.length;A++)p[H.charCodeAt(A)]=A;p[45]=62;p[95]=63;function rA(A){let i=A.length;return A.charCodeAt(i-1)===61&&i--,i>1&&A.charCodeAt(i-1)===61&&i--,i*3>>>2}function BI(A){let i=A.byteLength,I=\\\"\\\";for(let e=0;e<i;e+=3)I+=H[A[e]>>2]+H[(A[e]&3)<<4|A[e+1]>>4]+H[(A[e+1]&15)<<2|A[e+2]>>6]+H[A[e+2]&63];return i%3===2?I=I.substring(0,I.length-1)+\\\"=\\\":i%3===1&&(I=I.substring(0,I.length-2)+\\\"==\\\"),I}function sI(A,i,I=0,e=rA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0,g=0;g<t;n+=4){let o=p[i.charCodeAt(n)],r=p[i.charCodeAt(n+1)],E=p[i.charCodeAt(n+2)],Q=p[i.charCodeAt(n+3)];A[g++]=o<<2|r>>4,A[g++]=(r&15)<<4|E>>2,A[g++]=(E&3)<<6|Q&63}return t}EA.exports={byteLength:rA,toString:BI,write:sI}});var yA=l((Ki,sA)=>{function BA(A){return A.length>>>1}function yI(A){let i=A.byteLength;A=new DataView(A.buffer,A.byteOffset,i);let I=\\\"\\\",e=0;for(let t=i-i%4;e<t;e+=4)I+=A.getUint32(e).toString(16).padStart(8,\\\"0\\\");for(;e<i;e++)I+=A.getUint8(e).toString(16).padStart(2,\\\"0\\\");return I}function lI(A,i,I=0,e=BA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++){let g=fA(i.charCodeAt(n*2)),o=fA(i.charCodeAt(n*2+1));if(g===void 0||o===void 0)return A.subarray(0,n);A[I+n]=g<<4|o}return t}sA.exports={byteLength:BA,toString:yI,write:lI};function fA(A){if(A>=48&&A<=57)return A-48;if(A>=65&&A<=70)return A-65+10;if(A>=97&&A<=102)return A-97+10}});var aA=l((pi,lA)=>{function _(A){let i=0;for(let I=0,e=A.length;I<e;I++){let t=A.charCodeAt(I);if(t>=55296&&t<=56319&&I+1<e){let n=A.charCodeAt(I+1);if(n>=56320&&n<=57343){i+=4,I++;continue}}t<=127?i+=1:t<=2047?i+=2:i+=3}return i}var X;if(typeof TextDecoder!=\\\"undefined\\\"){let A=new TextDecoder;X=function(I){return A.decode(I)}}else X=function(i){let I=i.byteLength,e=\\\"\\\",t=0;for(;t<I;){let n=i[t];if(n<=127){e+=String.fromCharCode(n),t++;continue}let g=0,o=0;if(n<=223?(g=1,o=n&31):n<=239?(g=2,o=n&15):n<=244&&(g=3,o=n&7),I-t-g>0){let r=0;for(;r<g;)n=i[t+r+1],o=o<<6|n&63,r+=1}else o=65533,g=I-t;e+=String.fromCodePoint(o),t+=g+1}return e};var q;if(typeof TextEncoder!=\\\"undefined\\\"){let A=new TextEncoder;q=function(I,e,t=0,n=_(e)){let g=Math.min(n,I.byteLength-t);return A.encodeInto(e,I.subarray(t,t+g)),g}}else q=function(i,I,e=0,t=_(I)){let n=Math.min(t,i.byteLength-e);i=i.subarray(e,e+n);let g=0,o=0;for(;g<I.length;){let r=I.codePointAt(g);if(r<=127){i[o++]=r,g++;continue}let E=0,Q=0;for(r<=2047?(E=6,Q=192):r<=65535?(E=12,Q=224):r<=2097151&&(E=18,Q=240),i[o++]=Q|r>>E,E-=6;E>=0;)i[o++]=128|r>>E&63,E-=6;g+=r>=65536?2:1}return n};lA.exports={byteLength:_,toString:X,write:q}});var uA=l((bi,cA)=>{function wA(A){return A.length*2}function aI(A){let i=A.byteLength,I=\\\"\\\";for(let e=0;e<i-1;e+=2)I+=String.fromCharCode(A[e]+A[e+1]*256);return I}function wI(A,i,I=0,e=wA(i)){let t=Math.min(e,A.byteLength-I),n=t;for(let g=0;g<i.length&&!((n-=2)<0);++g){let o=i.charCodeAt(g),r=o>>8,E=o%256;A[I+g*2]=E,A[I+g*2+1]=r}return t}cA.exports={byteLength:wA,toString:aI,write:wI}});var KA=l((W,FA)=>{var cI=hA(),uI=QA(),DI=yA(),UI=aA(),SI=uA(),k=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function V(A){switch(A){case\\\"ascii\\\":return cI;case\\\"base64\\\":return uI;case\\\"hex\\\":return DI;case\\\"utf8\\\":case\\\"utf-8\\\":case void 0:return UI;case\\\"ucs2\\\":case\\\"ucs-2\\\":case\\\"utf16le\\\":case\\\"utf-16le\\\":return SI;default:throw new Error(`Unknown encoding: ${A}`)}}function DA(A){return A instanceof Uint8Array}function FI(A){try{return V(A),!0}catch(i){return!1}}function KI(A,i,I){let e=new Uint8Array(A);return i!==void 0&&W.fill(e,i,0,e.byteLength,I),e}function pI(A){return new Uint8Array(A)}function bI(A){return new Uint8Array(A)}function xI(A,i){return V(i).byteLength(A)}function HI(A,i){if(A===i)return 0;let I=Math.min(A.byteLength,i.byteLength);A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4){let n=A.getUint32(e,k),g=i.getUint32(e,k);if(n!==g)break}for(;e<I;e++){let t=A.getUint8(e),n=i.getUint8(e);if(t<n)return-1;if(t>n)return 1}return A.byteLength>i.byteLength?1:A.byteLength<i.byteLength?-1:0}function dI(A,i){i===void 0&&(i=A.reduce((t,n)=>t+n.byteLength,0));let I=new Uint8Array(i),e=0;for(let t of A){if(e+t.byteLength>I.byteLength){let n=t.subarray(0,I.byteLength-e);return I.set(n,e),I}I.set(t,e),e+=t.byteLength}return I}function mI(A,i,I=0,e=0,t=A.byteLength){if(t>0&&t<e||t===e||A.byteLength===0||i.byteLength===0)return 0;if(I<0)throw new RangeError(\\\"targetStart is out of range\\\");if(e<0||e>=A.byteLength)throw new RangeError(\\\"sourceStart is out of range\\\");if(t<0)throw new RangeError(\\\"sourceEnd is out of range\\\");I>=i.byteLength&&(I=i.byteLength),t>A.byteLength&&(t=A.byteLength),i.byteLength-I<t-e&&(t=i.length-I+e);let n=t-e;return A===i?i.copyWithin(I,e,t):i.set(A.subarray(e,t),I),n}function VI(A,i){if(A===i)return!0;if(A.byteLength!==i.byteLength)return!1;let I=A.byteLength;A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4)if(A.getUint32(e,k)!==i.getUint32(e,k))return!1;for(;e<I;e++)if(A.getUint8(e)!==i.getUint8(e))return!1;return!0}function LI(A,i,I,e,t){if(typeof i==\\\"string\\\"?typeof I==\\\"string\\\"?(t=I,I=0,e=A.byteLength):typeof e==\\\"string\\\"&&(t=e,e=A.byteLength):typeof i==\\\"number\\\"?i=i&255:typeof i==\\\"boolean\\\"&&(i=+i),I<0||A.byteLength<I||A.byteLength<e)throw new RangeError(\\\"Out of range index\\\");if(I===void 0&&(I=0),e===void 0&&(e=A.byteLength),e<=I)return A;if(i||(i=0),typeof i==\\\"number\\\")for(let n=I;n<e;++n)A[n]=i;else{i=DA(i)?i:j(i,t);let n=i.byteLength;for(let g=0;g<e-I;++g)A[g+I]=i[g%n]}return A}function j(A,i,I){return typeof A==\\\"string\\\"?YI(A,i):Array.isArray(A)?MI(A):ArrayBuffer.isView(A)?GI(A):kI(A,i,I)}function YI(A,i){let I=V(i),e=new Uint8Array(I.byteLength(A));return I.write(e,A,0,e.byteLength),e}function MI(A){let i=new Uint8Array(A.length);return i.set(A),i}function GI(A){let i=new Uint8Array(A.byteLength);return i.set(A),i}function kI(A,i,I){return new Uint8Array(A,i,I)}function PI(A,i,I,e){return SA(A,i,I,e)!==-1}function UA(A,i,I,e,t){if(A.byteLength===0)return-1;if(typeof I==\\\"string\\\"?(e=I,I=0):I===void 0?I=t?0:A.length-1:I<0&&(I+=A.byteLength),I>=A.byteLength){if(t)return-1;I=A.byteLength-1}else if(I<0)if(t)I=0;else return-1;if(typeof i==\\\"string\\\")i=j(i,e);else if(typeof i==\\\"number\\\")return i=i&255,t?A.indexOf(i,I):A.lastIndexOf(i,I);if(i.byteLength===0)return-1;if(t){let n=-1;for(let g=I;g<A.byteLength;g++)if(A[g]===i[n===-1?0:g-n]){if(n===-1&&(n=g),g-n+1===i.byteLength)return n}else n!==-1&&(g-=g-n),n=-1}else{I+i.byteLength>A.byteLength&&(I=A.byteLength-i.byteLength);for(let n=I;n>=0;n--){let g=!0;for(let o=0;o<i.byteLength;o++)if(A[n+o]!==i[o]){g=!1;break}if(g)return n}}return-1}function SA(A,i,I,e){return UA(A,i,I,e,!0)}function NI(A,i,I,e){return UA(A,i,I,e,!1)}function b(A,i,I){let e=A[i];A[i]=A[I],A[I]=e}function OI(A){let i=A.byteLength;if(i%2!==0)throw new RangeError(\\\"Buffer size must be a multiple of 16-bits\\\");for(let I=0;I<i;I+=2)b(A,I,I+1);return A}function JI(A){let i=A.byteLength;if(i%4!==0)throw new RangeError(\\\"Buffer size must be a multiple of 32-bits\\\");for(let I=0;I<i;I+=4)b(A,I,I+3),b(A,I+1,I+2);return A}function RI(A){let i=A.byteLength;if(i%8!==0)throw new RangeError(\\\"Buffer size must be a multiple of 64-bits\\\");for(let I=0;I<i;I+=8)b(A,I,I+7),b(A,I+1,I+6),b(A,I+2,I+5),b(A,I+3,I+4);return A}function TI(A){return A}function _I(A,i,I=0,e=A.byteLength){let t=A.byteLength;return I>=t||e<=I?\\\"\\\":(I<0&&(I=0),e>t&&(e=t),(I!==0||e<t)&&(A=A.subarray(I,e)),V(i).toString(A))}function XI(A,i,I,e,t){return I===void 0?t=\\\"utf8\\\":e===void 0&&typeof I==\\\"string\\\"?(t=I,I=void 0):t===void 0&&typeof e==\\\"string\\\"&&(t=e,e=void 0),V(t).write(A,i,I,e)}function qI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat64(I,i,!0),I+8}function jI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat32(I,i,!0),I+4}function WI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setUint32(I,i,!0),I+4}function zI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setInt32(I,i,!0),I+4}function ZI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat64(i,!0)}function vI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat32(i,!0)}function $I(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getUint32(i,!0)}function Ai(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getInt32(i,!0)}FA.exports=W={isBuffer:DA,isEncoding:FI,alloc:KI,allocUnsafe:pI,allocUnsafeSlow:bI,byteLength:xI,compare:HI,concat:dI,copy:mI,equals:VI,fill:LI,from:j,includes:PI,indexOf:SA,lastIndexOf:NI,swap16:OI,swap32:JI,swap64:RI,toBuffer:TI,toString:_I,write:XI,writeDoubleLE:qI,writeFloatLE:jI,writeUInt32LE:WI,writeInt32LE:zI,readDoubleLE:ZI,readFloatLE:vI,readUInt32LE:$I,readInt32LE:Ai}});var bA=l((xi,pA)=>{var Ii=(A,i)=>function(){return i||(0,A[Object.keys(A)[0]])((i={exports:{}}).exports,i),i.exports},ii=(()=>{for(var A=new Uint8Array(128),i=0;i<64;i++)A[i<26?i+65:i<52?i+71:i<62?i-4:i*4-205]=i;return I=>{for(var e=I.length,t=new Uint8Array((e-(I[e-1]==\\\"=\\\")-(I[e-2]==\\\"=\\\"))*3/4|0),n=0,g=0;n<e;){var o=A[I.charCodeAt(n++)],r=A[I.charCodeAt(n++)],E=A[I.charCodeAt(n++)],Q=A[I.charCodeAt(n++)];t[g++]=o<<2|r>>4,t[g++]=r<<4|E>>2,t[g++]=E<<6|Q}return t}})(),ei=Ii({\\\"wasm-binary:./blake2b.wat\\\"(A,i){i.exports=ii(\\\"AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMKvz8EwAIAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAAQoiS853/zPmE6gBBACkDAIU3A4ABIABCu86qptjQ67O7f0EIKQMAhTcDiAEgAEKr8NP0r+68tzxBECkDAIU3A5ABIABC8e30+KWn/aelf0EYKQMAhTcDmAEgAELRhZrv+s+Uh9EAQSApAwCFNwOgASAAQp/Y+dnCkdqCm39BKCkDAIU3A6gBIABC6/qG2r+19sEfQTApAwCFNwOwASAAQvnC+JuRo7Pw2wBBOCkDAIU3A7gBIABCADcDwAEgAEIANwPIASAAQgA3A9ABC20BA38gAEHAAWohAyAAQcgBaiEEIAQpAwCnIQUCQANAIAEgAkYNASAFQYABRgRAIAMgAykDACAFrXw3AwBBACEFIAAQAwsgACAFaiABLQAAOgAAIAVBAWohBSABQQFqIQEMAAsLIAQgBa03AwALYQEDfyAAQcABaiEBIABByAFqIQIgASABKQMAIAIpAwB8NwMAIABCfzcD0AEgAikDAKchAwJAA0AgA0GAAUYNASAAIANqQQA6AAAgA0EBaiEDDAALCyACIAOtNwMAIAAQAwuqOwIgfgl/IABBgAFqISEgAEGIAWohIiAAQZABaiEjIABBmAFqISQgAEGgAWohJSAAQagBaiEmIABBsAFqIScgAEG4AWohKCAhKQMAIQEgIikDACECICMpAwAhAyAkKQMAIQQgJSkDACEFICYpAwAhBiAnKQMAIQcgKCkDACEIQoiS853/zPmE6gAhCUK7zqqm2NDrs7t/IQpCq/DT9K/uvLc8IQtC8e30+KWn/aelfyEMQtGFmu/6z5SH0QAhDUKf2PnZwpHagpt/IQ5C6/qG2r+19sEfIQ9C+cL4m5Gjs/DbACEQIAApAwAhESAAKQMIIRIgACkDECETIAApAxghFCAAKQMgIRUgACkDKCEWIAApAzAhFyAAKQM4IRggACkDQCEZIAApA0ghGiAAKQNQIRsgACkDWCEcIAApA2AhHSAAKQNoIR4gACkDcCEfIAApA3ghICANIAApA8ABhSENIA8gACkD0AGFIQ8gASAFIBF8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSASfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgE3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBR8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAVfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBd8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAYfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgGXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBp8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAbfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgHHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIB18fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAefHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgH3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFICB8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAffHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgG3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBV8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAZfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHICB8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAefHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggF3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBJ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAdfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgEXx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBN8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAcfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGHx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBZ8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAUfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHHx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBl8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAdfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgEXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBZ8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByATfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggIHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIB58fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAbfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgH3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBR8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAXfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBJ8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAafHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFXx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBh8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAafHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFHx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBJ8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAefHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHXx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBx8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAffHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgE3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBd8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAWfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgG3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBV8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCARfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgIHx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBl8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAafHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEXx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBZ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAYfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgE3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBV8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAbfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggIHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIB98fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiASfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgHHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB18fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAXfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBR8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAefHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgE3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIB18fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAXfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgG3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBF8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAcfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggGXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBR8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAVfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBh8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAWfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggIHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB98fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSASfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgGnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB18fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAWfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgEnx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGICB8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAffHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBV8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAbfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBh8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAXfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBp8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCATfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGXx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBx8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAefHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgHHx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBh8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAffHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBJ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAUfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBZ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiARfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgIHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBV8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAZfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggF3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBN8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAbfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgF3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFICB8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAffHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGnx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBx8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAUfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggEXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBl8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAdfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgE3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIB58fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAYfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggEnx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBV8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAbfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBt8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSATfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgGXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBV8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAYfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgF3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBJ8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAWfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgIHx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBx8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAafHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgH3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBR8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAdfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgHnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBF8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgISAhKQMAIAEgCYWFNwMAICIgIikDACACIAqFhTcDACAjICMpAwAgAyALhYU3AwAgJCAkKQMAIAQgDIWFNwMAICUgJSkDACAFIA2FhTcDACAmICYpAwAgBiAOhYU3AwAgJyAnKQMAIAcgD4WFNwMAICggKCkDACAIIBCFhTcDAAs=\\\")}}),ti=ei(),ni=WebAssembly.compile(ti);pA.exports=async A=>(await WebAssembly.instantiate(await ni,A)).exports});var MA=l((mi,c)=>{var a=gA(),gi=KA(),U=null,xA=typeof WebAssembly!=\\\"undefined\\\"&&bA()().then(A=>{U=A}),D=64,P=[];c.exports=y;var HA=c.exports.BYTES_MIN=16,dA=c.exports.BYTES_MAX=64,Hi=c.exports.BYTES=32,mA=c.exports.KEYBYTES_MIN=16,VA=c.exports.KEYBYTES_MAX=64,di=c.exports.KEYBYTES=32,LA=c.exports.SALTBYTES=16,YA=c.exports.PERSONALBYTES=16;function y(A,i,I,e,t){if(!(this instanceof y))return new y(A,i,I,e,t);if(!U)throw new Error(\\\"WASM not loaded. Wait for Blake2b.ready(cb)\\\");A||(A=32),t!==!0&&(a(A>=HA,\\\"digestLength must be at least \\\"+HA+\\\", was given \\\"+A),a(A<=dA,\\\"digestLength must be at most \\\"+dA+\\\", was given \\\"+A),i!=null&&(a(i instanceof Uint8Array,\\\"key must be Uint8Array or Buffer\\\"),a(i.length>=mA,\\\"key must be at least \\\"+mA+\\\", was given \\\"+i.length),a(i.length<=VA,\\\"key must be at least \\\"+VA+\\\", was given \\\"+i.length)),I!=null&&(a(I instanceof Uint8Array,\\\"salt must be Uint8Array or Buffer\\\"),a(I.length===LA,\\\"salt must be exactly \\\"+LA+\\\", was given \\\"+I.length)),e!=null&&(a(e instanceof Uint8Array,\\\"personal must be Uint8Array or Buffer\\\"),a(e.length===YA,\\\"personal must be exactly \\\"+YA+\\\", was given \\\"+e.length))),P.length||(P.push(D),D+=216),this.digestLength=A,this.finalized=!1,this.pointer=P.pop(),this._memory=new Uint8Array(U.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=i?i.length:0,this._memory[2]=1,this._memory[3]=1,I&&this._memory.set(I,32),e&&this._memory.set(e,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),U.blake2b_init(this.pointer,this.digestLength),i&&(this.update(i),this._memory.fill(0,D,D+i.length),this._memory[this.pointer+200]=128)}y.prototype._realloc=function(A){U.memory.grow(Math.max(0,Math.ceil(Math.abs(A-this._memory.length)/65536))),this._memory=new Uint8Array(U.memory.buffer)};y.prototype.update=function(A){return a(this.finalized===!1,\\\"Hash instance finalized\\\"),a(A instanceof Uint8Array,\\\"input must be Uint8Array or Buffer\\\"),D+A.length>this._memory.length&&this._realloc(D+A.length),this._memory.set(A,D),U.blake2b_update(this.pointer,D,D+A.length),this};y.prototype.digest=function(A){if(a(this.finalized===!1,\\\"Hash instance finalized\\\"),this.finalized=!0,P.push(this.pointer),U.blake2b_final(this.pointer),!A||A===\\\"binary\\\")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof A==\\\"string\\\")return gi.toString(this._memory,A,this.pointer+128,this.pointer+128+this.digestLength);a(A instanceof Uint8Array&&A.length>=this.digestLength,\\\"input must be Uint8Array or Buffer\\\");for(var i=0;i<this.digestLength;i++)A[i]=this._memory[this.pointer+128+i];return A};y.prototype.final=y.prototype.digest;y.WASM=U;y.SUPPORTED=typeof WebAssembly!=\\\"undefined\\\";y.ready=function(A){return A||(A=Ci),xA?xA.then(()=>A(),A):A(new Error(\\\"WebAssembly not supported\\\"))};y.prototype.ready=y.ready;y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};y.prototype.setPartialHash=function(A){this._memory.set(A,this.pointer)};function Ci(){}});var z=l((Vi,GA)=>{var oi=\\\"Input must be an string, Buffer or Uint8Array\\\";function hi(A){let i;if(A instanceof Uint8Array)i=A;else if(typeof A==\\\"string\\\")i=new TextEncoder().encode(A);else throw new Error(oi);return i}function ri(A){return Array.prototype.map.call(A,function(i){return(i<16?\\\"0\\\":\\\"\\\")+i.toString(16)}).join(\\\"\\\")}function N(A){return(4294967296+A).toString(16).substring(1)}function Ei(A,i,I){let e=`\\n`+A+\\\" = \\\";for(let t=0;t<i.length;t+=2){if(I===32)e+=N(i[t]).toUpperCase(),e+=\\\" \\\",e+=N(i[t+1]).toUpperCase();else if(I===64)e+=N(i[t+1]).toUpperCase(),e+=N(i[t]).toUpperCase();else throw new Error(\\\"Invalid size \\\"+I);t%6===4?e+=`\\n`+new Array(A.length+4).join(\\\" \\\"):t<i.length-2&&(e+=\\\" \\\")}console.log(e)}function Qi(A,i,I){let e=new Date().getTime(),t=new Uint8Array(i);for(let g=0;g<i;g++)t[g]=g%256;let n=new Date().getTime();console.log(\\\"Generated random input in \\\"+(n-e)+\\\"ms\\\"),e=n;for(let g=0;g<I;g++){let o=A(t),r=new Date().getTime(),E=r-e;e=r,console.log(\\\"Hashed in \\\"+E+\\\"ms: \\\"+o.substring(0,20)+\\\"...\\\"),console.log(Math.round(i/(1<<20)/(E/1e3)*100)/100+\\\" MB PER SECOND\\\")}}GA.exports={normalizeInput:hi,toHex:ri,debugPrint:Ei,testSpeed:Qi}});var XA=l((Li,_A)=>{var J=z();function O(A,i,I){let e=A[i]+A[I],t=A[i+1]+A[I+1];e>=4294967296&&t++,A[i]=e,A[i+1]=t}function kA(A,i,I,e){let t=A[i]+I;I<0&&(t+=4294967296);let n=A[i+1]+e;t>=4294967296&&n++,A[i]=t,A[i+1]=n}function PA(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function S(A,i,I,e,t,n){let g=L[t],o=L[t+1],r=L[n],E=L[n+1];O(C,A,i),kA(C,A,g,o);let Q=C[e]^C[A],w=C[e+1]^C[A+1];C[e]=w,C[e+1]=Q,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=Q>>>24^w<<8,C[i+1]=w>>>24^Q<<8,O(C,A,i),kA(C,A,r,E),Q=C[e]^C[A],w=C[e+1]^C[A+1],C[e]=Q>>>16^w<<16,C[e+1]=w>>>16^Q<<16,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=w>>>31^Q<<1,C[i+1]=Q>>>31^w<<1}var NA=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),fi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],B=new Uint8Array(fi.map(function(A){return A*2})),C=new Uint32Array(32),L=new Uint32Array(32);function OA(A,i){let I=0;for(I=0;I<16;I++)C[I]=A.h[I],C[I+16]=NA[I];for(C[24]=C[24]^A.t,C[25]=C[25]^A.t/4294967296,i&&(C[28]=~C[28],C[29]=~C[29]),I=0;I<32;I++)L[I]=PA(A.b,4*I);for(I=0;I<12;I++)S(0,8,16,24,B[I*16+0],B[I*16+1]),S(2,10,18,26,B[I*16+2],B[I*16+3]),S(4,12,20,28,B[I*16+4],B[I*16+5]),S(6,14,22,30,B[I*16+6],B[I*16+7]),S(0,10,20,30,B[I*16+8],B[I*16+9]),S(2,12,22,24,B[I*16+10],B[I*16+11]),S(4,14,16,26,B[I*16+12],B[I*16+13]),S(6,8,18,28,B[I*16+14],B[I*16+15]);for(I=0;I<16;I++)A.h[I]=A.h[I]^C[I]^C[I+16]}var F=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function JA(A,i,I,e){if(A===0||A>64)throw new Error(\\\"Illegal output length, expected 0 < length <= 64\\\");if(i&&i.length>64)throw new Error(\\\"Illegal key, expected Uint8Array with 0 < length <= 64\\\");if(I&&I.length!==16)throw new Error(\\\"Illegal salt, expected Uint8Array with length is 16\\\");if(e&&e.length!==16)throw new Error(\\\"Illegal personal, expected Uint8Array with length is 16\\\");let t={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:A};F.fill(0),F[0]=A,i&&(F[1]=i.length),F[2]=1,F[3]=1,I&&F.set(I,32),e&&F.set(e,48);for(let n=0;n<16;n++)t.h[n]=NA[n]^PA(F,n*4);return i&&(Z(t,i),t.c=128),t}function Z(A,i){for(let I=0;I<i.length;I++)A.c===128&&(A.t+=A.c,OA(A,!1),A.c=0),A.b[A.c++]=i[I]}function RA(A){for(A.t+=A.c;A.c<128;)A.b[A.c++]=0;OA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3);return i}function TA(A,i,I,e,t){I=I||64,A=J.normalizeInput(A),e&&(e=J.normalizeInput(e)),t&&(t=J.normalizeInput(t));let n=JA(I,i,e,t);return Z(n,A),RA(n)}function Bi(A,i,I,e,t){let n=TA(A,i,I,e,t);return J.toHex(n)}_A.exports={blake2b:TA,blake2bHex:Bi,blake2bInit:JA,blake2bUpdate:Z,blake2bFinal:RA}});var AI=l((Yi,$A)=>{var qA=z();function si(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function K(A,i,I,e,t,n){h[A]=h[A]+h[i]+t,h[e]=R(h[e]^h[A],16),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],12),h[A]=h[A]+h[i]+n,h[e]=R(h[e]^h[A],8),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],7)}function R(A,i){return A>>>i^A<<32-i}var jA=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),h=new Uint32Array(16),f=new Uint32Array(16);function WA(A,i){let I=0;for(I=0;I<8;I++)h[I]=A.h[I],h[I+8]=jA[I];for(h[12]^=A.t,h[13]^=A.t/4294967296,i&&(h[14]=~h[14]),I=0;I<16;I++)f[I]=si(A.b,4*I);for(I=0;I<10;I++)K(0,4,8,12,f[s[I*16+0]],f[s[I*16+1]]),K(1,5,9,13,f[s[I*16+2]],f[s[I*16+3]]),K(2,6,10,14,f[s[I*16+4]],f[s[I*16+5]]),K(3,7,11,15,f[s[I*16+6]],f[s[I*16+7]]),K(0,5,10,15,f[s[I*16+8]],f[s[I*16+9]]),K(1,6,11,12,f[s[I*16+10]],f[s[I*16+11]]),K(2,7,8,13,f[s[I*16+12]],f[s[I*16+13]]),K(3,4,9,14,f[s[I*16+14]],f[s[I*16+15]]);for(I=0;I<8;I++)A.h[I]^=h[I]^h[I+8]}function zA(A,i){if(!(A>0&&A<=32))throw new Error(\\\"Incorrect output length, should be in [1, 32]\\\");let I=i?i.length:0;if(i&&!(I>0&&I<=32))throw new Error(\\\"Incorrect key length, should be in [1, 32]\\\");let e={h:new Uint32Array(jA),b:new Uint8Array(64),c:0,t:0,outlen:A};return e.h[0]^=16842752^I<<8^A,I>0&&(v(e,i),e.c=64),e}function v(A,i){for(let I=0;I<i.length;I++)A.c===64&&(A.t+=A.c,WA(A,!1),A.c=0),A.b[A.c++]=i[I]}function ZA(A){for(A.t+=A.c;A.c<64;)A.b[A.c++]=0;WA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3)&255;return i}function vA(A,i,I){I=I||32,A=qA.normalizeInput(A);let e=zA(I,i);return v(e,A),ZA(e)}function yi(A,i,I){let e=vA(A,i,I);return qA.toHex(e)}$A.exports={blake2s:vA,blake2sHex:yi,blake2sInit:zA,blake2sUpdate:v,blake2sFinal:ZA}});var iI=l((Mi,II)=>{var Y=XA(),M=AI();II.exports={blake2b:Y.blake2b,blake2bHex:Y.blake2bHex,blake2bInit:Y.blake2bInit,blake2bUpdate:Y.blake2bUpdate,blake2bFinal:Y.blake2bFinal,blake2s:M.blake2s,blake2sHex:M.blake2sHex,blake2sInit:M.blake2sInit,blake2sUpdate:M.blake2sUpdate,blake2sFinal:M.blake2sFinal}});var x=eA(MA(),1),m=eA(iI(),1);function d(A,i,I,e){return(0,m.blake2bInit)(A,i)}d.prototype.update=function(A){return(0,m.blake2bUpdate)(this,A),this};d.prototype.digest=function(A){var i=A||new Uint8Array(this.outlen);return(0,m.blake2bFinal)(this,i),i};d.prototype.final=d.prototype.digest;d.ready=function(A){x.ready(function(){A()})};function li(A,i,I,e){return new d(A,i)}function $(A){x.ready(function(){A()})}var AA=!1,T=li;x.ready(function(A){A||(AA=!0,T=x.default)});var tI=T,nI=!1,u=null,eI=null,IA=!1;$?$(()=>{IA=AA,console.debug(\\\"[privatecaptcha][worker] Hasher loaded. wasm=\\\"+IA),tI=T,nI=!0,u&&self.postMessage({command:\\\"init\\\"})}):console.warn(\\\"[privatecaptcha][worker] Blake2b ready() is not defined\\\");function wi(A,i){return(A[i]|A[i+1]<<8|A[i+2]<<16|A[i+3]<<24)>>>0}function ci(A){return Math.pow(2,Math.floor((255.999-A)/8))>>>0}function ui(A,i,I){let e=u.length;I&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${A} puzzleID=${i} length=${e}`),u[e-8]=i;let t=new Uint8Array(32);for(let n=0;n<256;n++){u[e-1-3]=n;for(let g=0;g<256;g++){u[e-1-2]=g;for(let o=0;o<256;o++){u[e-1-1]=g;for(let r=0;r<256;r++){u[e-1-0]=r,t.fill(0),tI(t.length).update(u).digest(t);let E=wi(t,0);if(E<=A)return I&&console.debug(`[privatecaptcha][worker] found solution. prefix=${E} threshold=${A}`),u.subarray(e-8)}}}}return new Uint8Array(0)}self.onmessage=A=>{let{command:i,argument:I}=A.data;switch(i){case\\\"init\\\":let{id:e,buffer:t}=I;eI=e,u=t,nI&&self.postMessage({command:\\\"init\\\"});break;case\\\"solve\\\":let{difficulty:n,puzzleIndex:g,debug:o}=I,r=ci(n),E=ui(r,g,o);self.postMessage({command:i,argument:{id:eI,solution:E,wasm:IA}});break;default:break}};\\n\");\n}\n", "import { encode } from 'base64-arraybuffer';\nimport PuzzleWorker from './puzzle.worker.js';\n\nconst METADATA_VERSION = 1;\n\nexport class WorkersPool {\n constructor(callbacks = {}, debug = false) {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._workers = [];\n this._debug = debug;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n\n this._callbacks = Object.assign({\n workersReady: () => 0,\n workerError: () => 0,\n workStarted: () => 0,\n workCompleted: () => 0,\n progress: () => 0,\n }, callbacks);\n }\n\n init(puzzle, autoStart) {\n if (!puzzle) { return; }\n if (puzzle.isZero()) {\n if (this._debug) { console.debug('[privatecaptcha][pool] skipping initializing workers'); }\n setTimeout(() => this._callbacks.workersReady(autoStart), 0);\n return;\n }\n\n const workersCount = 4;\n let readyWorkers = 0;\n const workers = [];\n const pool = this;\n const puzzleID = puzzle.ID;\n const puzzleData = puzzle.puzzleBuffer;\n\n for (let i = 0; i < workersCount; i++) {\n const worker = new PuzzleWorker();\n\n worker.onerror = (e) => this._callbacks.workerError(e);\n worker.onmessage = function(event) {\n if (!event.data) { return; }\n const command = event.data.command;\n switch (command) {\n case \"init\":\n readyWorkers++;\n if (readyWorkers === workersCount) {\n pool._callbacks.workersReady(autoStart);\n }\n break;\n case \"solve\":\n const { id, solution, wasm } = event.data.argument;\n pool.onSolutionFound(id, solution, wasm);\n break;\n case \"error\":\n if (event.data.error) {\n pool._callbacks.workerError(event.data.error);\n }\n break;\n default:\n break;\n };\n };\n workers.push(worker);\n }\n\n this._workers = workers;\n\n if (this._debug) { console.debug(`[privatecaptcha][pool] initializing workers. count=${this._workers.length}`); }\n for (let i = 0; i < this._workers.length; i++) {\n this._workers[i].postMessage({\n command: \"init\",\n argument: {\n id: puzzleID,\n buffer: puzzleData,\n },\n });\n };\n }\n\n solve(puzzle) {\n if (!puzzle) { return; }\n\n if (this._debug) { console.debug('[privatecaptcha][pool] starting solving'); }\n this._solutions = [];\n this._solutionsCount = puzzle.solutionsCount;\n this._puzzleID = puzzle.ID;\n this._timeStarted = Date.now();\n this._timeFinished = null;\n\n const skipSolving = puzzle.isZero() || (puzzle.solutionsCount === 0);\n let stubSolution = null;\n\n for (let i = 0; i < puzzle.solutionsCount; i++) {\n if (!skipSolving) {\n this._workers[i % this._workers.length].postMessage({\n command: \"solve\",\n argument: {\n difficulty: puzzle.difficulty,\n puzzleIndex: i,\n debug: this._debug,\n },\n });\n } else {\n if (!stubSolution) { stubSolution = new Uint8Array(8); }\n this._solutions.push(stubSolution);\n }\n }\n\n this._callbacks.workStarted();\n\n if (skipSolving) {\n setTimeout(() => this.onWorkCompleted(), 0);\n }\n }\n\n stop() {\n const count = this._workers.length;\n for (let i = 0; i < count; i++) {\n this._workers[i].terminate();\n }\n this._workers = [];\n if (this._debug) { console.debug('[privatecaptcha][pool] terminated the workers. count=' + count); }\n }\n\n reset() {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n }\n\n onSolutionFound(id, solution, wasm) {\n if (this._debug) { console.debug('[privatecaptcha][pool] solution found. length=' + solution.length); }\n if (id != this._puzzleID) {\n console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${id} expected=${this._puzzleID}`);\n return;\n }\n this._solutions.push(solution);\n\n if (wasm) { this._anyWasm = true; }\n\n const count = this._solutions.length;\n\n this._callbacks.progress(count * 100.0 / this._solutionsCount);\n\n if (count == this._solutionsCount) {\n this.onWorkCompleted();\n }\n }\n\n onWorkCompleted() {\n this._timeFinished = Date.now();\n this._callbacks.workCompleted();\n }\n\n serializeSolutions(errorCode) {\n if (this._debug) { console.debug('[privatecaptcha][pool] serializing solutions. count=' + this._solutions.length); }\n const solutionsLength = this._solutions.reduce((total, arr) => total + arr.length, 0);\n\n const metadataArray = this.writeMetadata(errorCode);\n const metadataSize = metadataArray.length;\n\n const resultArray = new Uint8Array(metadataSize + solutionsLength);\n let offset = 0;\n\n resultArray.set(metadataArray, offset);\n offset += metadataArray.length;\n\n for (let i = 0; i < this._solutions.length; i++) {\n resultArray.set(this._solutions[i], offset);\n offset += this._solutions[i].length;\n }\n\n return encode(resultArray);\n }\n\n writeMetadata(errorCode) {\n const metadataSize = 1 + 1 + 1 + 4;\n const binaryData = new Uint8Array(metadataSize);\n let currentIndex = 0;\n\n binaryData[currentIndex++] = METADATA_VERSION & 0xFF;\n binaryData[currentIndex++] = errorCode & 0xFF;\n\n const wasmFlag = this._anyWasm ? 1 : 0;\n binaryData[currentIndex++] = wasmFlag & 0xFF;\n\n const elapsedMillis = this.elapsedMillis();\n // Little-Endian\n binaryData[currentIndex++] = elapsedMillis & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 8) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 16) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 24) & 0xFF;\n\n return binaryData;\n }\n\n elapsedMillis() {\n if (this._timeStarted && this._timeFinished) {\n return this._timeFinished - this._timeStarted;\n }\n\n return 0;\n }\n}\n", "'use strict';\n\nexport const SafeHTMLElement = typeof HTMLElement !== 'undefined' ? HTMLElement : Object;\n", "'use strict';\n\nimport { SafeHTMLElement } from \"./utils.js\";\n\nexport class ProgressRing extends SafeHTMLElement {\n constructor() {\n super();\n\n // NOTE: stroke is sized with regards to {size} variable below\n // not to the scaled (external) size of SVG (yes, it's a bit confusing)\n const stroke = this.getAttribute('stroke');\n const size = 100;\n const radius = size / 2;\n const normalizedRadius = radius - stroke / 2;\n this._circumference = normalizedRadius * 2 * Math.PI;\n\n // create shadow dom root\n this._root = this.attachShadow({ mode: 'open' });\n this._root.innerHTML = `\n <svg preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 ${size} ${size}\">\n <circle\n id=\"pie\"\n style=\"stroke-dasharray: 0 ${this._circumference}\"\n stroke-width=\"${normalizedRadius}\"\n fill=\"transparent\"\n r=\"${normalizedRadius / 2}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"track\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"progress\"\n stroke-dasharray=\"${this._circumference} ${this._circumference}\"\n style=\"stroke-dashoffset: ${this._circumference}\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n </svg>\n\n <style>\n svg {\n width: 2.25em;\n height: 2.25em;\n }\n #pie {\n stroke: var(--pie-color);\n transition: stroke-dasharray 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #progress {\n stroke: var(--accent-color);\n transition: stroke-dashoffset 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #track {\n stroke: var(--gray-color);\n }\n </style>\n `;\n }\n\n setProgress(percent) {\n const progress = (percent / 100 * this._circumference)\n const offset = this._circumference - progress;\n const circle = this._root.getElementById('progress');\n circle.style.strokeDashoffset = offset;\n\n const pie = this._root.getElementById('pie');\n pie.style.strokeDasharray = progress / 2 + ' ' + this._circumference;\n }\n\n static get observedAttributes() {\n return ['progress'];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) return;\n\n if (name === 'progress') {\n this.setProgress(newValue);\n }\n }\n}\n", "@layer base,theme,custom;@layer base{:host,*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0 solid}:host{--extra-spacing: 0px;--label-spacing: .625rem;--border-radius: .125rem;--warn-color: #A70B0B;--accent-color: #009400;min-width:0;font-size:1rem;display:inline-block;max-width:100%;border-radius:var(--border-radius)}:host(.hidden){display:none}:host(.floating){display:block;position:absolute;left:0;top:0;transform:translateY(-100%);z-index:1000}@media(min-width:30em){:host{min-width:20em}}}@layer theme{:host([theme=\"light\"]){--dark-color: #070113;--gray-color: #E0E0E0;--pie-color: #D8E9E9;--background-color: #fff;--checkbox-background-color: #FFF;--checkbox-hover-color: #EBF4F4}:host([theme=\"dark\"]){--dark-color: #EBF4F4;--gray-color: #656C7B;--pie-color: #376262;--background-color: #041616;--checkbox-background-color: #223C3C;--checkbox-hover-color: #1C3232}:host{--border: 1px solid var(--gray-color)}}.pc-captcha-widget{display:flex;align-items:center;flex-direction:row;padding:.75em 1em;border:var(--border);border-radius:var(--border-radius);background-color:var(--background-color);box-sizing:border-box;width:100%;height:100%}.pc-interactive-area{display:flex;flex:0 1 auto;align-items:center;position:relative;min-width:0}.pc-interactive-area label{padding-left:var(--label-spacing);color:var(--dark-color);flex:0 1 auto;min-width:1em;white-space:normal}.pc-interactive-area input[type=checkbox]{font-size:1em;width:2em;height:2em;margin:0 0 0 calc(.125em + var(--extra-spacing));appearance:none;background-color:var(--checkbox-background-color);border:.125em solid var(--dark-color);border-radius:.25em;cursor:pointer;flex-shrink:0}.pc-interactive-area input[type=checkbox]+label{padding:0 0 0 calc(.125em + var(--extra-spacing) + var(--label-spacing))}@keyframes colorChange{0%,to{border-color:var(--dark-color)}50%{border-color:var(--gray-color)}}.pc-interactive-area input[type=checkbox].loading{animation:colorChange 2s infinite;animation-timing-function:ease-in-out;background-color:var(--checkbox-hover-color);cursor:default}.pc-interactive-area input[type=checkbox].ready{background-color:var(--checkbox-background-color);border-color:var(--dark-color);cursor:pointer}.pc-interactive-area input[type=checkbox].invalid{background-color:var(--checkbox-hover-color);border-color:var(--gray-color);cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover{background-color:var(--checkbox-hover-color);border-color:var(--accent-color)}.pc-interactive-area input[type=checkbox].invalid:hover+label{cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover+label{cursor:pointer}@keyframes dots-1{0%{opacity:0}25%{opacity:1}}@keyframes dots-2{0%{opacity:0}50%{opacity:1}}@keyframes dots-3{0%{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{0%{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{0%{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{0%{opacity:0}75%{opacity:1}}.pc-interactive-area .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.pc-interactive-area .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.pc-interactive-area .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}#pc-progress{display:flex;justify-content:center;margin:0 0 0 var(--extra-spacing);flex-shrink:0}#pc-progress+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}.pc-spacer{flex-basis:0;flex-shrink:1;flex-grow:1;width:4em;min-width:0}.pc-info{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;margin-right:calc(.125em + var(--extra-spacing));color:var(--dark-color)}.pc-info svg{width:auto;height:3.125em;max-width:100%;max-height:100%}a.pc-link{margin-top:5px;text-decoration:none;color:currentcolor;text-align:center;font-size:.55em;text-transform:uppercase;font-weight:700;line-height:1.1em}a.pc-link:hover{text-decoration:underline}@keyframes checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0px}}svg.verified{margin:0 0 0 var(--extra-spacing);flex-shrink:0;width:2.25em;height:2.25em}svg.verified+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}svg.verified polyline{animation:checkmark .35s ease-in-out .1s backwards;stroke:#f2f2f2}svg.verified circle{fill:var(--accent-color)}#pc-debug{font-size:.75em;color:var(--gray-color);position:absolute;top:100%;left:calc(2em + 1em + 2*.125em + 2*var(--extra-spacing) + var(--label-spacing));cursor:default}#pc-debug.warn{color:var(--warn-color)}\n", "'use strict;'\n\nexport const CLICK_TO_VERIFY = 'click_to_verify';\nexport const VERIFYING = 'verifying';\nexport const SUCCESS = 'success';\nexport const UNAVAILABLE = 'unavailable';\nexport const INCOMPLETE = 'incomplete';\nexport const ERROR = 'error';\nexport const TESTING = 'testing';\n\nexport const STRINGS = {\n 'en': {\n [CLICK_TO_VERIFY]: 'Click to verify',\n [VERIFYING]: 'Verifying',\n [SUCCESS]: 'Verified',\n [UNAVAILABLE]: 'Not available',\n [INCOMPLETE]: 'incomplete',\n [ERROR]: 'error',\n [TESTING]: 'testing',\n },\n 'de': {\n [CLICK_TO_VERIFY]: 'Zum Best\u00E4tigen klicken',\n [VERIFYING]: 'Wird \u00FCberpr\u00FCft',\n [SUCCESS]: 'Verifiziert',\n [UNAVAILABLE]: 'Nicht verf\u00FCgbar',\n [INCOMPLETE]: 'unvollst\u00E4ndig',\n [ERROR]: 'fehler',\n [TESTING]: 'testmodus',\n },\n 'es': {\n [CLICK_TO_VERIFY]: 'Haz clic para verificar',\n [VERIFYING]: 'Verificando',\n [SUCCESS]: 'Verificado',\n [UNAVAILABLE]: 'No disponible',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'error',\n [TESTING]: 'prueba',\n },\n 'fr': {\n [CLICK_TO_VERIFY]: 'Cliquez pour v\u00E9rifier',\n [VERIFYING]: 'V\u00E9rification en cours',\n [SUCCESS]: 'V\u00E9rifi\u00E9',\n [UNAVAILABLE]: 'Non disponible',\n [INCOMPLETE]: 'incomplet',\n [ERROR]: 'erreur',\n [TESTING]: 'test',\n },\n 'it': {\n [CLICK_TO_VERIFY]: 'Clicca per verificare',\n [VERIFYING]: 'Verifica in corso',\n [SUCCESS]: 'Verificato',\n [UNAVAILABLE]: 'Non disponibile',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'errore',\n [TESTING]: 'test',\n },\n 'nl': {\n [CLICK_TO_VERIFY]: 'Klik om te verifi\u00EBren',\n [VERIFYING]: 'Bezig met verifi\u00EBren',\n [SUCCESS]: 'Geverifieerd',\n [UNAVAILABLE]: 'Niet beschikbaar',\n [INCOMPLETE]: 'onvolledig',\n [ERROR]: 'fout',\n [TESTING]: 'testen',\n },\n 'sv': {\n [CLICK_TO_VERIFY]: 'Klicka f\u00F6r att verifiera',\n [VERIFYING]: 'Verifierar',\n [SUCCESS]: 'Verifierad',\n [UNAVAILABLE]: 'Inte tillg\u00E4nglig',\n [INCOMPLETE]: 'ofullst\u00E4ndig',\n [ERROR]: 'fel',\n [TESTING]: 'test',\n },\n 'no': {\n [CLICK_TO_VERIFY]: 'Klikk for \u00E5 bekrefte',\n [VERIFYING]: 'Bekrefter',\n [SUCCESS]: 'Bekreftet',\n [UNAVAILABLE]: 'Ikke tilgjengelig',\n [INCOMPLETE]: 'ufullstendig',\n [ERROR]: 'feil',\n [TESTING]: 'test',\n },\n 'pl': {\n [CLICK_TO_VERIFY]: 'Kliknij, aby zweryfikowa\u0107',\n [VERIFYING]: 'Weryfikowanie',\n [SUCCESS]: 'Zweryfikowano',\n [UNAVAILABLE]: 'Niedost\u0119pne',\n [INCOMPLETE]: 'niekompletne',\n [ERROR]: 'b\u0142\u0105d',\n [TESTING]: 'test',\n },\n 'fi': {\n [CLICK_TO_VERIFY]: 'Napsauta vahvistaaksesi',\n [VERIFYING]: 'Vahvistetaan',\n [SUCCESS]: 'Vahvistettu',\n [UNAVAILABLE]: 'Ei saatavilla',\n [INCOMPLETE]: 'ep\u00E4t\u00E4ydellinen',\n [ERROR]: 'virhe',\n [TESTING]: 'testi',\n },\n 'et': {\n [CLICK_TO_VERIFY]: 'Kl\u00F5psa kinnitamiseks',\n [VERIFYING]: 'Kinnitamine',\n [SUCCESS]: 'Kinnitatud',\n [UNAVAILABLE]: 'Pole saadaval',\n [INCOMPLETE]: 'puudulik',\n [ERROR]: 'viga',\n [TESTING]: 'test',\n }\n};\n", "'use strict';\n\nimport { ProgressRing } from './progress.js';\nimport { SafeHTMLElement } from \"./utils.js\";\nimport styles from \"./styles.css\" with { type: 'css' };\nimport * as i18n from './strings.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('progress-ring')) {\n window.customElements.define('progress-ring', ProgressRing);\n}\n\nexport const STATE_EMPTY = 'empty';\nexport const STATE_ERROR = 'error';\nexport const STATE_LOADING = 'loading';\nexport const STATE_READY = 'ready';\nexport const STATE_IN_PROGRESS = 'inprogress';\nexport const STATE_VERIFIED = 'verified';\nexport const STATE_INVALID = 'invalid';\n\nexport const DISPLAY_POPUP = 'popup';\nconst DISPLAY_HIDDEN = 'hidden';\nexport const DISPLAY_WIDGET = 'widget';\n\nconst CHECKBOX_ID = 'pc-checkbox';\nconst PROGRESS_ID = 'pc-progress';\nconst DEBUG_ID = 'pc-debug';\nconst DEBUG_ERROR_CLASS = 'warn';\n\nconst privateCaptchaSVG = `<svg viewBox=\"0 0 39.4 41.99\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pc-logo\" preserveAspectRatio=\"xMidYMid meet\">\n<path d=\"M0 0v30.62l4.29 2.48V4.85h30.83v23.29l-15.41 8.9-6.83-3.94v-4.95l6.83 3.94 11.12-6.42V9.91H8.58v25.66l11.12 6.42 19.7-11.37V0Zm12.87 14.86h13.66v8.32l-6.83 3.94-6.83-3.94z\" fill=\"currentColor\"/>\n</svg>`;\n\nconst verifiedSVG = `<svg class=\"verified\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 154 154\">\n<g fill=\"none\"><circle cx=\"77\" cy=\"77\" r=\"76\"></circle>\n<polyline class=\"st0\" stroke-width=\"12\" points=\"43.5,77.8 63.7,97.9 112.2,49.4\" style=\"stroke-dasharray:100px, 100px; stroke-dashoffset: 200px;\"/></g>\n</svg>`;\n\nfunction htmlToElement(html) {\n const template = document.createElement('template');\n template.innerHTML = html.trim();\n return template.content.firstChild;\n}\n\nfunction checkbox(cls) {\n const el = document.createElement('input');\n el.type = 'checkbox';\n el.id = CHECKBOX_ID;\n el.className = cls;\n el.required = true;\n return el;\n}\n\nfunction label(text, forElement) {\n const el = document.createElement('label');\n el.htmlFor = forElement;\n el.textContent = text;\n return el;\n}\n\nfunction progressRing() {\n const el = document.createElement('progress-ring');\n el.id = PROGRESS_ID;\n el.setAttribute('stroke', '12');\n el.setAttribute('progress', '0');\n return el;\n}\n\nfunction progressLabel(text) {\n const el = label(text, PROGRESS_ID);\n const dots = document.createElement('span');\n dots.className = 'dots';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('span');\n dot.textContent = '.';\n dots.appendChild(dot);\n }\n el.appendChild(dots);\n return el;\n}\n\nfunction debugSpan(text, isError) {\n const el = document.createElement('span');\n el.id = DEBUG_ID;\n if (isError) { el.className = DEBUG_ERROR_CLASS; }\n el.textContent = text;\n return el;\n}\n\nfunction infoSection() {\n const info = document.createElement('div');\n info.className = 'pc-info';\n info.appendChild(htmlToElement(privateCaptchaSVG));\n const link = document.createElement('a');\n link.href = 'https://privatecaptcha.com';\n link.className = 'pc-link';\n link.rel = 'noopener nofollow';\n link.target = '_blank';\n link.appendChild(document.createTextNode('Private'));\n link.appendChild(document.createElement('br'));\n link.appendChild(document.createTextNode('Captcha'));\n info.appendChild(link);\n return info;\n}\n\n/**\n * @param {number} code\n * @param {Object<string, string>} strings\n * @returns {string} error message\n */\nfunction errorDescription(code, strings) {\n switch (code) {\n case errors.ERROR_NO_ERROR:\n return '';\n case errors.ERROR_NOT_CONFIGURED:\n return strings[i18n.INCOMPLETE];\n case errors.ERROR_ZERO_PUZZLE:\n return strings[i18n.TESTING];\n default:\n return strings[i18n.ERROR];\n }\n}\n\nexport class CaptchaElement extends SafeHTMLElement {\n constructor() {\n super();\n\n this._state = '';\n this._root = this.attachShadow({ mode: 'open' });\n\n this._debug = false;\n this._error = null;\n this._displayMode = DISPLAY_HIDDEN;\n this._lang = 'en';\n\n // Add CSS\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(styles);\n this._root.adoptedStyleSheets = [sheet];\n this._overridesSheet = null;\n }\n\n connectedCallback() {\n this._debug = this.getAttribute('debug');\n this._error = null;\n this._displayMode = this.getAttribute('display-mode');\n this._lang = this.getAttribute('lang');\n if (!(this._lang in i18n.STRINGS)) {\n console.warn(`[privatecaptcha][progress] Localization not found. lang=${this._lang}`);\n this._lang = 'en';\n }\n\n // add CSS overrides\n const extraStyles = this.getAttribute('extra-styles');\n this.updateStyles(extraStyles);\n\n // init\n const canShow = (this._displayMode == DISPLAY_WIDGET);\n this.setState(STATE_EMPTY, canShow);\n }\n\n /**\n * @param {string} state\n * @param {boolean} canShow\n */\n setState(state, canShow) {\n if (state == this._state) {\n console.debug('[privatecaptcha][progress] already in this state: ' + state);\n if (DISPLAY_POPUP === this._displayMode) {\n this._syncHostClass(canShow);\n }\n return;\n }\n\n if (this._debug) { console.debug(`[privatecaptcha][progress] change state. old=${this._state} new=${state}`); }\n\n const activeArea = document.createElement('div');\n activeArea.className = 'pc-interactive-area';\n let bindCheckEvent = false;\n let showPopupIfNeeded = false;\n const strings = i18n.STRINGS[this._lang];\n\n switch (state) {\n case STATE_EMPTY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox(''));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_LOADING:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('loading'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_READY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('ready'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_IN_PROGRESS:\n activeArea.appendChild(progressRing());\n activeArea.appendChild(progressLabel(strings[i18n.VERIFYING]));\n showPopupIfNeeded = canShow;\n break;\n case STATE_VERIFIED:\n activeArea.appendChild(htmlToElement(verifiedSVG));\n activeArea.appendChild(label(strings[i18n.SUCCESS], PROGRESS_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_INVALID:\n activeArea.appendChild(checkbox('invalid'));\n activeArea.appendChild(label(strings[i18n.UNAVAILABLE], CHECKBOX_ID));\n break;\n default:\n console.error(`[privatecaptcha][progress] unknown state: ${state}`);\n break;\n }\n\n if (this._debug || this._error) {\n const text = this._error ? errorDescription(this._error, strings) : `[${state}]`;\n activeArea.appendChild(debugSpan(text, this._error));\n }\n\n this._syncHostClass(showPopupIfNeeded);\n\n this._state = state;\n\n const widget = document.createElement('div');\n widget.className = 'pc-captcha-widget';\n widget.appendChild(activeArea);\n const spacer = document.createElement('div');\n spacer.className = 'pc-spacer';\n widget.appendChild(spacer);\n widget.appendChild(infoSection());\n\n this._root.replaceChildren(widget);\n\n if (bindCheckEvent) {\n const checkboxEl = this._root.getElementById(CHECKBOX_ID);\n if (checkboxEl) {\n checkboxEl.addEventListener('change', this.onCheckboxClicked.bind(this));\n } else {\n console.warn('[privatecaptcha][progress] checkbox not found in the Shadow DOM');\n }\n }\n }\n\n _syncHostClass(showPopupIfNeeded) {\n let hostClass = '';\n switch (this._displayMode) {\n case DISPLAY_HIDDEN:\n hostClass = 'hidden';\n break;\n case DISPLAY_POPUP:\n hostClass = showPopupIfNeeded ? 'floating' : 'hidden';\n break;\n case DISPLAY_WIDGET:\n break;\n }\n\n this.classList.remove('hidden', 'floating');\n if (hostClass) { this.classList.add(hostClass); }\n }\n\n /**\n * @param {Event} event\n */\n onCheckboxClicked(event) {\n event.preventDefault();\n if (this._debug) {\n console.debug(\"[privatecaptcha][progress] checkbox was clicked\");\n }\n if (event.target.checked) {\n const checkEvent = new CustomEvent(\"privatecaptcha:checked\", {\n bubbles: true,\n composed: true\n });\n\n this.dispatchEvent(checkEvent);\n } else {\n console.warn('[privatecaptcha][progress] checkbox was unchecked');\n }\n }\n\n /**\n * @param {number} percent\n */\n setProgress(percent) {\n if (STATE_IN_PROGRESS == this._state) {\n const progressBar = this._root.getElementById(PROGRESS_ID);\n if (progressBar) {\n progressBar.setProgress(percent);\n } else {\n console.warn('[privatecaptcha][progress] progress element not found');\n }\n } else {\n if (this._debug) {\n console.debug(`[privatecaptcha][progress] skipping updating progress when not in progress. state=${this._state}`);\n }\n }\n }\n\n /**\n * @param {number} value\n */\n setError(value) {\n this._error = value;\n }\n\n /**\n * @param {string} text\n * @param {boolean} error\n */\n setDebugText(text, error) {\n const debugElement = this._root.getElementById(DEBUG_ID);\n if (debugElement) {\n let debugText = '';\n if (this._error) {\n const strings = i18n.STRINGS[this._lang];\n debugText = errorDescription(this._error, strings);\n } else {\n debugText = `[${text}]`;\n }\n debugElement.textContent = debugText;\n if (error || this._error) {\n debugElement.classList.add(DEBUG_ERROR_CLASS);\n } else {\n debugElement.classList.remove(DEBUG_ERROR_CLASS);\n }\n }\n }\n\n static get observedAttributes() {\n return ['state', 'progress', 'extra-styles'];\n }\n\n updateStyles(newStyles) {\n const baseSheets = this._root.adoptedStyleSheets.filter(\n sheet => sheet !== this._overridesSheet\n );\n\n if (newStyles) {\n const cssText = `@layer custom { :host { ${newStyles} } }`;\n if (!this._overridesSheet) {\n this._overridesSheet = new CSSStyleSheet();\n }\n this._overridesSheet.replaceSync(cssText);\n this._root.adoptedStyleSheets = [...baseSheets, this._overridesSheet];\n } else {\n this._overridesSheet = null;\n this._root.adoptedStyleSheets = baseSheets;\n }\n }\n\n /**\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) { return; }\n\n switch (name) {\n case 'progress':\n const progressValue = newValue !== null ? parseFloat(newValue) : NaN;\n if (!Number.isNaN(progressValue)) {\n this.setProgress(progressValue);\n }\n break;\n case 'extra-styles':\n this.updateStyles(newValue);\n break;\n };\n }\n}\n", "'use strict';\n\nimport { getPuzzle, Puzzle } from './puzzle.js'\nimport { WorkersPool } from './workerspool.js'\nimport { CaptchaElement, STATE_EMPTY, STATE_ERROR, STATE_READY, STATE_IN_PROGRESS, STATE_VERIFIED, STATE_LOADING, STATE_INVALID, DISPLAY_POPUP, DISPLAY_WIDGET } from './html.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('private-captcha')) {\n window.customElements.define('private-captcha', CaptchaElement);\n}\n\nconst PUZZLE_ENDPOINT_URL = 'https://api.privatecaptcha.com/puzzle';\nconst PUZZLE_EU_ENDPOINT_URL = 'https://api.eu.privatecaptcha.com/puzzle';\nexport const RECAPTCHA_COMPAT = 'recaptcha';\n\n\n/**\n * @param {HTMLElement} element\n * @returns {HTMLFormElement | null}\n */\nfunction findParentFormElement(element) {\n while (element && element.tagName !== 'FORM') {\n element = element.parentElement;\n }\n return element;\n}\n\nexport class CaptchaWidget {\n /**\n * @param {HTMLElement} element\n * @param {Object} options\n */\n constructor(element, options = {}) {\n this._element = element;\n this._puzzle = null;\n this._expiryTimeout = null;\n this._state = STATE_EMPTY;\n this._lastProgress = null;\n this._solution = null;\n this._userStarted = false; // aka 'user started while we were initializing'\n this._apiTriggered = false; // aka execute() for programmatic triggering\n this._options = {};\n this._errorCode = errors.ERROR_NO_ERROR;\n\n this.setOptions(options);\n\n this._workersPool = new WorkersPool({\n workersReady: this.onWorkersReady.bind(this),\n workerError: this.onWorkerError.bind(this),\n workStarted: this.onWorkStarted.bind(this),\n workCompleted: this.onWorkCompleted.bind(this),\n progress: this.onWorkProgress.bind(this),\n }, this._options.debug);\n\n const form = findParentFormElement(this._element);\n if (form) {\n // NOTE: this does not work on Safari by (Apple) design if we click a button\n // \"passive\" - cannot use preventDefault()\n form.addEventListener('focusin', this.onFocusIn.bind(this), { passive: true });\n this._element.replaceChildren(this._createCaptchaElement());\n this._element.addEventListener('privatecaptcha:checked', this.onChecked.bind(this));\n\n if (this._options.storeVariable) {\n this._element[this._options.storeVariable] = this;\n }\n\n if (DISPLAY_POPUP === this._options.displayMode) {\n const anchor = form.querySelector(\".private-captcha-anchor\");\n if (anchor) {\n anchor.style.position = \"relative\";\n } else {\n console.warn('[privatecaptcha] cannot find anchor for popup');\n }\n }\n\n this.checkConfigured();\n } else {\n console.warn('[privatecaptcha] cannot find form element');\n }\n }\n\n _createCaptchaElement() {\n const captchaEl = document.createElement('private-captcha');\n\n captchaEl.setAttribute('lang', this._options.lang);\n captchaEl.setAttribute('theme', this._options.theme);\n captchaEl.setAttribute('extra-styles', this._options.styles);\n\n if (this._options.debug) {\n captchaEl.setAttribute('debug', 'true');\n }\n\n captchaEl.setAttribute('display-mode', this._options.displayMode);\n\n return captchaEl;\n }\n\n /**\n * @param {Object} options\n */\n setOptions(options) {\n const euOnly = this._element.dataset[\"eu\"] || null;\n const defaultEndpoint = euOnly ? PUZZLE_EU_ENDPOINT_URL : PUZZLE_ENDPOINT_URL;\n\n let defaultField = \"private-captcha-solution\";\n if (options.hasOwnProperty('compat') && options.compat === RECAPTCHA_COMPAT) {\n defaultField = \"g-recaptcha-response\";\n }\n\n let sitekey = \"\";\n if (options.hasOwnProperty('sitekey')) {\n sitekey = options.sitekey;\n }\n\n this._options = Object.assign({\n startMode: this._element.dataset[\"startMode\"] || \"auto\",\n debug: this._element.dataset[\"debug\"],\n fieldName: this._element.dataset[\"solutionField\"] || defaultField,\n puzzleEndpoint: this._element.dataset[\"puzzleEndpoint\"] || defaultEndpoint,\n sitekey: sitekey || this._element.dataset[\"sitekey\"] || \"\",\n displayMode: this._element.dataset[\"displayMode\"] || \"widget\",\n lang: this._element.dataset[\"lang\"] || \"auto\",\n theme: this._element.dataset[\"theme\"] || \"light\",\n styles: this._element.dataset[\"styles\"] || \"\",\n storeVariable: this._element.dataset[\"storeVariable\"] || null,\n }, options);\n\n if ('auto' === this._options.lang) {\n let lang = '';\n if (typeof document !== 'undefined' && document.documentElement) {\n lang = document.documentElement.lang;\n }\n if (!lang && typeof navigator !== 'undefined') {\n lang = navigator.language || navigator.userLanguage || '';\n }\n if (typeof lang === 'string' && lang.length >= 2) {\n this._options.lang = lang.split('-')[0].toLowerCase();\n }\n }\n }\n\n /**\n * Fetches puzzle from the server and sets up workers.\n * @param {boolean} autoStart\n */\n async init(autoStart) {\n this.trace(`init() was called. state=${this._state}`);\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n\n const sitekey = this.checkConfigured();\n if (!sitekey) { return; }\n\n if ((STATE_EMPTY !== this._state) && (STATE_ERROR !== this._state)) {\n console.warn(`[privatecaptcha] captcha has already been initialized. state=${this._state}`);\n return;\n }\n\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n const startWorkers = ('auto' === this._options.startMode) || autoStart;\n\n try {\n this.setState(STATE_LOADING);\n this.setProgressState(STATE_LOADING);\n this.trace(`fetching puzzle. sitekey=${sitekey}`);\n const puzzleData = await getPuzzle(this._options.puzzleEndpoint, sitekey);\n this._puzzle = new Puzzle(puzzleData);\n if (this._puzzle && this._puzzle.isZero()) { this._errorCode = errors.ERROR_ZERO_PUZZLE; }\n const expirationMillis = this._puzzle.expirationMillis();\n this.trace(`parsed puzzle buffer. isZero=${this._puzzle.isZero()} ttl=${expirationMillis / 1000}`);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (expirationMillis) { this._expiryTimeout = setTimeout(() => this.expire(), expirationMillis); }\n this._workersPool.init(this._puzzle, startWorkers);\n this.signalInit();\n } catch (e) {\n console.error('[privatecaptcha]', e);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n this._errorCode = errors.ERROR_FETCH_PUZZLE;\n this.setState(STATE_ERROR);\n this.setProgressState((this._userStarted || this._apiTriggered) ? STATE_VERIFIED : STATE_EMPTY);\n if (this._userStarted || this._apiTriggered) {\n this.saveSolutions();\n this.signalErrored();\n }\n }\n }\n\n /**\n * Ensures that we have a sitekey available (defined or passed through options)\n * @returns {string | null}\n */\n checkConfigured() {\n const sitekey = this._options.sitekey || this._element.dataset[\"sitekey\"];\n if (!sitekey) {\n console.error(\"[privatecaptcha] sitekey not set on captcha element\");\n this._errorCode = errors.ERROR_NOT_CONFIGURED;\n this.setState(STATE_INVALID);\n this.setProgressState(STATE_INVALID);\n return null;\n }\n\n return sitekey;\n }\n\n start() {\n if (STATE_READY !== this._state) {\n console.warn(`[privatecaptcha] solving has already been started. state=${this._state}`);\n return;\n }\n\n this.trace('starting solving captcha');\n\n try {\n this.setState(STATE_IN_PROGRESS);\n this._workersPool.solve(this._puzzle);\n } catch (e) {\n console.error('[privatecaptcha]', e);\n }\n }\n\n dispatchEvent(eventName, detail = {}) {\n const event = new CustomEvent(`privatecaptcha:${eventName}`, {\n bubbles: false,\n detail: { widget: this, element: this._element, ...detail }\n });\n this._element.dispatchEvent(event);\n }\n\n signalInit() {\n this.dispatchEvent(\"init\");\n\n const callback = this._element.dataset['initCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in init callback:', e);\n }\n }\n }\n\n signalStarted() {\n this.dispatchEvent(\"start\");\n\n const callback = this._element.dataset['startedCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in started callback:', e);\n }\n }\n }\n\n signalFinished() {\n this.dispatchEvent(\"finish\");\n\n const callback = this._element.dataset['finishedCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in finished callback:', e);\n }\n }\n }\n\n signalErrored() {\n this.dispatchEvent(\"error\");\n\n const callback = this._element.dataset['erroredCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in errored callback:', e);\n }\n }\n }\n\n ensureNoSolutionField() {\n const solutionField = this._element.querySelector(`input[name=\"${this._options.fieldName}\"]`);\n if (solutionField) {\n try {\n this._element.removeChild(solutionField);\n } catch (e) {\n console.warn('[privatecaptcha]', e);\n }\n }\n }\n\n /**\n * Resets widget to a state when `start()` or `execute()` can be called again\n * @param {Object} options\n */\n reset(options = {}) {\n this.trace('reset captcha');\n\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n this.setState(STATE_EMPTY);\n this.setProgressState(STATE_EMPTY);\n this.ensureNoSolutionField();\n this._userStarted = false;\n this._apiTriggered = false;\n this.setOptions(options);\n }\n\n updateStyles() {\n const newStyles = this._element.dataset[\"styles\"] || \"\";\n if (newStyles !== this._options.styles) {\n this._options.styles = newStyles;\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setAttribute('extra-styles', newStyles);\n }\n }\n }\n\n expire() {\n this.trace('expire captcha');\n\n // we immediately call init so reset() will be called there for workers pool\n if (this._workersPool) { this._workersPool.stop(); }\n\n this.setState(STATE_EMPTY);\n this.setProgressState(STATE_EMPTY);\n this.ensureNoSolutionField();\n this.init(this._userStarted);\n }\n\n /**\n * @returns {string} value of the puzzle solution that needs to be sent for verification\n */\n solution() {\n return this._solution;\n }\n\n /**\n * @param {FocusEvent} event\n */\n onFocusIn(event) {\n this.trace('onFocusIn event handler');\n\n if (STATE_EMPTY !== this._state) {\n this.trace(`skipping focusin event with non-empty state. state=${this._state}`)\n return;\n }\n\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement && (event.target == pcElement)) {\n this.trace('skipping focusin event on captcha element')\n return;\n }\n\n this.init(false /*start*/);\n }\n\n /**\n * A programmatic way of starting solving the puzzle (as opposed to user input way)\n * @returns {Promise<never>} promise intentionally does not resolve so that the form can be submitted via the callbacks\n */\n execute() {\n if (this._apiTriggered && (STATE_ERROR !== this._state)) {\n this.trace(`skipping duplicate execute event handler`);\n return new Promise(() => { });\n }\n\n this.trace(`execute event handler. state=${this._state}`);\n this._apiTriggered = true;\n\n // show spinner when in auto mode\n let progressState = ('auto' === this._options.startMode) ? STATE_IN_PROGRESS : this._state;\n this._triggerSolving(progressState);\n\n return new Promise(() => { });\n }\n\n onChecked(event) {\n if (event) {\n event.stopPropagation();\n }\n\n if (this._userStarted && (STATE_ERROR !== this._state)) {\n this.trace('skipping duplicate onChecked handler')\n return;\n }\n\n this.trace(`onChecked event handler. state=${this._state}`);\n this._userStarted = true;\n\n // always show spinner when user clicked\n this._triggerSolving(STATE_IN_PROGRESS);\n }\n\n _triggerSolving(progressState) {\n let finished = false;\n\n switch (this._state) {\n case STATE_READY:\n // NOTE: in case of short-circuit (zero/test puzzle), start() can call all callbacks before exit\n this.start();\n break;\n case STATE_EMPTY:\n case STATE_ERROR:\n const autoStart = this._userStarted || this._apiTriggered;\n this.init(autoStart);\n break;\n case STATE_LOADING:\n // this will be handled in onWorkersReady()\n break;\n case STATE_IN_PROGRESS:\n setTimeout(() => this.setProgress(this._lastProgress), 500);\n break;\n case STATE_VERIFIED:\n // happens when we finished verification fully in the background, still should animate \"the end\"\n progressState = STATE_VERIFIED;\n finished = true;\n break;\n default:\n console.warn(`[privatecaptcha] triggerSolving: unexpected state. state=${this._state}`);\n return;\n }\n\n this.setProgressState(progressState);\n if (finished) {\n this.saveSolutions();\n this.signalFinished();\n }\n }\n\n /**\n * @param {boolean} autoStart\n */\n onWorkersReady(autoStart) {\n this.trace(`workers are ready. autostart=${autoStart}`);\n\n this.setState(STATE_READY);\n // if user started we always show \"in progress\"\n if (!this._userStarted && !(this._apiTriggered && autoStart)) {\n this.setProgressState(STATE_READY);\n }\n\n if (autoStart || this._userStarted) {\n this.start();\n }\n }\n\n /**\n * @param {Error} error\n */\n onWorkerError(error) {\n console.error('[privatecaptcha] error in worker:', error)\n this._errorCode = errors.ERROR_SOLVE_PUZZLE;\n }\n\n onWorkStarted() {\n this.signalStarted();\n }\n\n onWorkCompleted() {\n this.trace('[privatecaptcha] work completed');\n\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] solving has not been started. state=${this._state}`);\n return;\n }\n\n this.setState(STATE_VERIFIED);\n if (this._userStarted || this._apiTriggered) {\n this.setProgressState(STATE_VERIFIED);\n }\n\n if (this._userStarted || this._apiTriggered) {\n this.saveSolutions();\n\n // give time for checkbox animation to complete\n setTimeout(() => this.signalFinished(), 500);\n }\n }\n\n /**\n * @param {number} percent\n */\n onWorkProgress(percent) {\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] skipping progress update. state=${this._state}`);\n return;\n }\n\n this.trace(`progress changed. percent=${percent}`);\n this.setProgress(percent);\n }\n\n saveSolutions() {\n const solutions = this._workersPool.serializeSolutions(this._errorCode);\n const payload = `${solutions}.${this._puzzle ? this._puzzle.rawData : ''}`;\n\n this.ensureNoSolutionField();\n this._element.insertAdjacentHTML('beforeend', `<input name=\"${this._options.fieldName}\" type=\"hidden\" value=\"${payload}\">`);\n\n this._solution = payload;\n\n this.trace(`saved solutions. field=${this._options.fieldName} payload=${payload}`);\n }\n\n /**\n * Updates the \"UI\" state of the widget.\n * @param {string} state\n */\n setProgressState(state) {\n // NOTE: hidden display mode is taken care of inside setState() even when (_userStarted == true)\n const canShow = this._userStarted ||\n (DISPLAY_WIDGET === this._options.displayMode) ||\n (this._apiTriggered && (DISPLAY_POPUP === this._options.displayMode));\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setError(this._errorCode);\n pcElement.setState(state, canShow);\n }\n else {\n console.error('[privatecaptcha] component not found when changing state');\n }\n }\n\n /**\n * Updates the \"internal\" (actual) state.\n * @param {string} state\n */\n setState(state) {\n this.trace(`change state. old=${this._state} new=${state}`);\n this._state = state;\n\n if (this._options.debug) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setDebugText(state, (STATE_ERROR == state));\n }\n }\n }\n\n /**\n * @param {number} progress\n */\n setProgress(progress) {\n this._lastProgress = progress;\n if ((STATE_IN_PROGRESS === this._state) || (STATE_VERIFIED === this._state)) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) { pcElement.setProgress(progress); }\n else { console.error('[privatecaptcha] component not found when updating progress'); }\n }\n }\n\n /**\n * @param {string} str\n */\n trace(str) {\n if (this._options.debug) {\n console.debug('[privatecaptcha]', str)\n }\n }\n}\n"],
5
- "mappings": "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ACRC,EAAU,UAEVC,EAAU,CACnB,GAAM,CACF,CAACP,CAAe,EAAG,kBACnB,CAACC,CAAS,EAAG,YACb,CAACC,CAAO,EAAG,WACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,SACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,4BACnB,CAACC,CAAS,EAAG,uBACb,CAACC,CAAO,EAAG,cACX,CAACC,CAAW,EAAG,qBACf,CAACC,CAAU,EAAG,mBACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,WACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,0BACnB,CAACC,CAAS,EAAG,cACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,QACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,2BACb,CAACC,CAAO,EAAG,gBACX,CAACC,CAAW,EAAG,iBACf,CAACC,CAAU,EAAG,YACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,MACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,wBACnB,CAACC,CAAS,EAAG,oBACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,kBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,MACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,0BACb,CAACC,CAAO,EAAG,eACX,CAACC,CAAW,EAAG,mBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,QACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,8BACnB,CAACC,CAAS,EAAG,aACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,sBACf,CAACC,CAAU,EAAG,kBACd,CAACC,CAAK,EAAG,MACT,CAACC,CAAO,EAAG,MACf,EACA,GAAM,CACF,C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",
4
+ "sourcesContent": ["const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n", "'use strict';\n\nimport { decode } from 'base64-arraybuffer';\n\nconst PUZZLE_BUFFER_LENGTH = 128;\n// RequestTimeout, Conflict, TooManyRequests\nconst ACCEPTABLE_CLIENT_ERRORS = [408, 409, 429];\n\nexport async function getPuzzle(endpoint, sitekey) {\n try {\n const response = await fetchWithBackoff(`${endpoint}?sitekey=${sitekey}`,\n { headers: [[\"x-pc-captcha-version\", \"1\"]], mode: \"cors\" },\n 5 /*max attempts*/\n );\n\n if (response.ok) {\n const data = await response.text();\n return data;\n } else {\n let json = await response.json();\n if (json && json.error) {\n throw Error(json.error);\n }\n }\n } catch (err) {\n console.error('[privatecaptcha]', err);\n throw err;\n }\n\n throw Error('Internal error');\n};\n\nfunction wait(delay) {\n return new Promise((resolve) => setTimeout(resolve, delay));\n}\n\nasync function fetchWithBackoff(url, options, maxAttempts, initialDelay = 800, maxDelay = 6000) {\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(initialDelay * Math.pow(2, attempt), maxDelay);\n await wait(delay);\n }\n\n try {\n const response = await fetch(url, options);\n if (response.ok) {\n return response;\n } else {\n console.warn('[privatecaptcha]', `HTTP request failed. url=${url} status=${response.status}`);\n }\n\n if ((response.status >= 400) && (response.status < 500) &&\n !ACCEPTABLE_CLIENT_ERRORS.includes(response.status)) {\n // we don't retry on most client errors\n break;\n } else {\n continue;\n }\n } catch (err) {\n console.error('[privatecaptcha]', err);\n }\n }\n\n throw new Error('Captcha puzzle load failed after maximum retry attempts');\n}\n\nfunction readUInt32LE(binaryData, offset) {\n return (\n binaryData[offset] |\n (binaryData[offset + 1] << 8) |\n (binaryData[offset + 2] << 16) |\n (binaryData[offset + 3] << 24)\n ) >>> 0;\n}\n\nfunction readUInt64LE(binaryData, offset) {\n return (\n BigInt(readUInt32LE(binaryData, offset)) +\n (BigInt(readUInt32LE(binaryData, offset + 4)) << 32n)\n );\n}\n\nexport class Puzzle {\n constructor(rawData) {\n this.puzzleBuffer = null;\n\n this.ID = null;\n this.difficulty = null;\n this.solutionsCount = null;\n this.expirationTimestamp = null;\n this.userData = null;\n\n this.signature = null;\n\n this.parse(rawData);\n this.rawData = rawData;\n }\n\n parse(rawData) {\n const parts = rawData.split('.');\n if (parts.length !== 2) {\n throw Error(`Invalid amount of parts: ${parts.length}`);\n }\n\n const buffer = parts[0];\n this.signature = parts[1];\n\n const data = new Uint8Array(decode(buffer));\n let offset = 0;\n\n offset += 1; // version\n offset += 16; // propertyID\n\n this.ID = readUInt64LE(data, offset);\n offset += 8;\n\n this.difficulty = data[offset];\n offset += 1;\n\n this.solutionsCount = data[offset];\n offset += 1;\n\n this.expirationTimestamp = readUInt32LE(data, offset);\n offset += 4;\n\n offset += 4; // AccountID\n\n const userDataSize = 16;\n this.userData = data.slice(offset, offset + userDataSize);\n offset += userDataSize;\n\n let sourceBuffer = data;\n if (sourceBuffer.length < PUZZLE_BUFFER_LENGTH) {\n const enlargedBuffer = new Uint8Array(PUZZLE_BUFFER_LENGTH);\n enlargedBuffer.set(sourceBuffer);\n this.puzzleBuffer = enlargedBuffer;\n } else {\n this.puzzleBuffer = sourceBuffer;\n }\n }\n\n isZero() {\n return (this.ID === 0n) && (this.difficulty === 0) && (this.expirationTimestamp === 0);\n }\n\n expirationMillis() {\n if (!this.expirationTimestamp) { return 0; }\n\n const expiration = new Date(this.expirationTimestamp * 1000);\n const currentDate = new Date();\n const diff = expiration - currentDate;\n return diff;\n }\n};\n", "\nexport default function inlineWorker(scriptText) {\n let blob = new Blob([scriptText], {type: 'text/javascript'});\n let url = URL.createObjectURL(blob);\n let worker = new Worker(url);\n URL.revokeObjectURL(url);\n return worker;\n}\n", "import inlineWorker from '__inline-worker'\nexport default function Worker() {\n return inlineWorker(\"var gI=Object.create;var iA=Object.defineProperty;var CI=Object.getOwnPropertyDescriptor;var oI=Object.getOwnPropertyNames;var hI=Object.getPrototypeOf,rI=Object.prototype.hasOwnProperty;var l=(A,i)=>()=>(i||A((i={exports:{}}).exports,i),i.exports);var EI=(A,i,I,e)=>{if(i&&typeof i==\\\"object\\\"||typeof i==\\\"function\\\")for(let t of oI(i))!rI.call(A,t)&&t!==I&&iA(A,t,{get:()=>i[t],enumerable:!(e=CI(i,t))||e.enumerable});return A};var eA=(A,i,I)=>(I=A!=null?gI(hI(A)):{},EI(i||!A||!A.__esModule?iA(I,\\\"default\\\",{value:A,enumerable:!0}):I,A));var gA=l((Ui,nA)=>{nA.exports=tA;var G=class extends Error{};G.prototype.name=\\\"AssertionError\\\";function tA(A,i){if(!A){var I=new G(i);throw Error.captureStackTrace&&Error.captureStackTrace(I,tA),I}}});var hA=l((Si,oA)=>{function CA(A){return A.length}function QI(A){let i=A.byteLength,I=\\\"\\\";for(let e=0;e<i;e++)I+=String.fromCharCode(A[e]);return I}function fI(A,i,I=0,e=CA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++)A[I+n]=i.charCodeAt(n);return t}oA.exports={byteLength:CA,toString:QI,write:fI}});var QA=l((Fi,EA)=>{var H=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\",p=new Uint8Array(256);for(let A=0;A<H.length;A++)p[H.charCodeAt(A)]=A;p[45]=62;p[95]=63;function rA(A){let i=A.length;return A.charCodeAt(i-1)===61&&i--,i>1&&A.charCodeAt(i-1)===61&&i--,i*3>>>2}function BI(A){let i=A.byteLength,I=\\\"\\\";for(let e=0;e<i;e+=3)I+=H[A[e]>>2]+H[(A[e]&3)<<4|A[e+1]>>4]+H[(A[e+1]&15)<<2|A[e+2]>>6]+H[A[e+2]&63];return i%3===2?I=I.substring(0,I.length-1)+\\\"=\\\":i%3===1&&(I=I.substring(0,I.length-2)+\\\"==\\\"),I}function sI(A,i,I=0,e=rA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0,g=0;g<t;n+=4){let o=p[i.charCodeAt(n)],r=p[i.charCodeAt(n+1)],E=p[i.charCodeAt(n+2)],Q=p[i.charCodeAt(n+3)];A[g++]=o<<2|r>>4,A[g++]=(r&15)<<4|E>>2,A[g++]=(E&3)<<6|Q&63}return t}EA.exports={byteLength:rA,toString:BI,write:sI}});var yA=l((Ki,sA)=>{function BA(A){return A.length>>>1}function yI(A){let i=A.byteLength;A=new DataView(A.buffer,A.byteOffset,i);let I=\\\"\\\",e=0;for(let t=i-i%4;e<t;e+=4)I+=A.getUint32(e).toString(16).padStart(8,\\\"0\\\");for(;e<i;e++)I+=A.getUint8(e).toString(16).padStart(2,\\\"0\\\");return I}function lI(A,i,I=0,e=BA(i)){let t=Math.min(e,A.byteLength-I);for(let n=0;n<t;n++){let g=fA(i.charCodeAt(n*2)),o=fA(i.charCodeAt(n*2+1));if(g===void 0||o===void 0)return A.subarray(0,n);A[I+n]=g<<4|o}return t}sA.exports={byteLength:BA,toString:yI,write:lI};function fA(A){if(A>=48&&A<=57)return A-48;if(A>=65&&A<=70)return A-65+10;if(A>=97&&A<=102)return A-97+10}});var aA=l((pi,lA)=>{function _(A){let i=0;for(let I=0,e=A.length;I<e;I++){let t=A.charCodeAt(I);if(t>=55296&&t<=56319&&I+1<e){let n=A.charCodeAt(I+1);if(n>=56320&&n<=57343){i+=4,I++;continue}}t<=127?i+=1:t<=2047?i+=2:i+=3}return i}var X;if(typeof TextDecoder!=\\\"undefined\\\"){let A=new TextDecoder;X=function(I){return A.decode(I)}}else X=function(i){let I=i.byteLength,e=\\\"\\\",t=0;for(;t<I;){let n=i[t];if(n<=127){e+=String.fromCharCode(n),t++;continue}let g=0,o=0;if(n<=223?(g=1,o=n&31):n<=239?(g=2,o=n&15):n<=244&&(g=3,o=n&7),I-t-g>0){let r=0;for(;r<g;)n=i[t+r+1],o=o<<6|n&63,r+=1}else o=65533,g=I-t;e+=String.fromCodePoint(o),t+=g+1}return e};var q;if(typeof TextEncoder!=\\\"undefined\\\"){let A=new TextEncoder;q=function(I,e,t=0,n=_(e)){let g=Math.min(n,I.byteLength-t);return A.encodeInto(e,I.subarray(t,t+g)),g}}else q=function(i,I,e=0,t=_(I)){let n=Math.min(t,i.byteLength-e);i=i.subarray(e,e+n);let g=0,o=0;for(;g<I.length;){let r=I.codePointAt(g);if(r<=127){i[o++]=r,g++;continue}let E=0,Q=0;for(r<=2047?(E=6,Q=192):r<=65535?(E=12,Q=224):r<=2097151&&(E=18,Q=240),i[o++]=Q|r>>E,E-=6;E>=0;)i[o++]=128|r>>E&63,E-=6;g+=r>=65536?2:1}return n};lA.exports={byteLength:_,toString:X,write:q}});var uA=l((bi,cA)=>{function wA(A){return A.length*2}function aI(A){let i=A.byteLength,I=\\\"\\\";for(let e=0;e<i-1;e+=2)I+=String.fromCharCode(A[e]+A[e+1]*256);return I}function wI(A,i,I=0,e=wA(i)){let t=Math.min(e,A.byteLength-I),n=t;for(let g=0;g<i.length&&!((n-=2)<0);++g){let o=i.charCodeAt(g),r=o>>8,E=o%256;A[I+g*2]=E,A[I+g*2+1]=r}return t}cA.exports={byteLength:wA,toString:aI,write:wI}});var KA=l((W,FA)=>{var cI=hA(),uI=QA(),DI=yA(),UI=aA(),SI=uA(),k=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function V(A){switch(A){case\\\"ascii\\\":return cI;case\\\"base64\\\":return uI;case\\\"hex\\\":return DI;case\\\"utf8\\\":case\\\"utf-8\\\":case void 0:return UI;case\\\"ucs2\\\":case\\\"ucs-2\\\":case\\\"utf16le\\\":case\\\"utf-16le\\\":return SI;default:throw new Error(`Unknown encoding: ${A}`)}}function DA(A){return A instanceof Uint8Array}function FI(A){try{return V(A),!0}catch(i){return!1}}function KI(A,i,I){let e=new Uint8Array(A);return i!==void 0&&W.fill(e,i,0,e.byteLength,I),e}function pI(A){return new Uint8Array(A)}function bI(A){return new Uint8Array(A)}function xI(A,i){return V(i).byteLength(A)}function HI(A,i){if(A===i)return 0;let I=Math.min(A.byteLength,i.byteLength);A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4){let n=A.getUint32(e,k),g=i.getUint32(e,k);if(n!==g)break}for(;e<I;e++){let t=A.getUint8(e),n=i.getUint8(e);if(t<n)return-1;if(t>n)return 1}return A.byteLength>i.byteLength?1:A.byteLength<i.byteLength?-1:0}function dI(A,i){i===void 0&&(i=A.reduce((t,n)=>t+n.byteLength,0));let I=new Uint8Array(i),e=0;for(let t of A){if(e+t.byteLength>I.byteLength){let n=t.subarray(0,I.byteLength-e);return I.set(n,e),I}I.set(t,e),e+=t.byteLength}return I}function mI(A,i,I=0,e=0,t=A.byteLength){if(t>0&&t<e||t===e||A.byteLength===0||i.byteLength===0)return 0;if(I<0)throw new RangeError(\\\"targetStart is out of range\\\");if(e<0||e>=A.byteLength)throw new RangeError(\\\"sourceStart is out of range\\\");if(t<0)throw new RangeError(\\\"sourceEnd is out of range\\\");I>=i.byteLength&&(I=i.byteLength),t>A.byteLength&&(t=A.byteLength),i.byteLength-I<t-e&&(t=i.length-I+e);let n=t-e;return A===i?i.copyWithin(I,e,t):i.set(A.subarray(e,t),I),n}function VI(A,i){if(A===i)return!0;if(A.byteLength!==i.byteLength)return!1;let I=A.byteLength;A=new DataView(A.buffer,A.byteOffset,A.byteLength),i=new DataView(i.buffer,i.byteOffset,i.byteLength);let e=0;for(let t=I-I%4;e<t;e+=4)if(A.getUint32(e,k)!==i.getUint32(e,k))return!1;for(;e<I;e++)if(A.getUint8(e)!==i.getUint8(e))return!1;return!0}function LI(A,i,I,e,t){if(typeof i==\\\"string\\\"?typeof I==\\\"string\\\"?(t=I,I=0,e=A.byteLength):typeof e==\\\"string\\\"&&(t=e,e=A.byteLength):typeof i==\\\"number\\\"?i=i&255:typeof i==\\\"boolean\\\"&&(i=+i),I<0||A.byteLength<I||A.byteLength<e)throw new RangeError(\\\"Out of range index\\\");if(I===void 0&&(I=0),e===void 0&&(e=A.byteLength),e<=I)return A;if(i||(i=0),typeof i==\\\"number\\\")for(let n=I;n<e;++n)A[n]=i;else{i=DA(i)?i:j(i,t);let n=i.byteLength;for(let g=0;g<e-I;++g)A[g+I]=i[g%n]}return A}function j(A,i,I){return typeof A==\\\"string\\\"?YI(A,i):Array.isArray(A)?MI(A):ArrayBuffer.isView(A)?GI(A):kI(A,i,I)}function YI(A,i){let I=V(i),e=new Uint8Array(I.byteLength(A));return I.write(e,A,0,e.byteLength),e}function MI(A){let i=new Uint8Array(A.length);return i.set(A),i}function GI(A){let i=new Uint8Array(A.byteLength);return i.set(A),i}function kI(A,i,I){return new Uint8Array(A,i,I)}function PI(A,i,I,e){return SA(A,i,I,e)!==-1}function UA(A,i,I,e,t){if(A.byteLength===0)return-1;if(typeof I==\\\"string\\\"?(e=I,I=0):I===void 0?I=t?0:A.length-1:I<0&&(I+=A.byteLength),I>=A.byteLength){if(t)return-1;I=A.byteLength-1}else if(I<0)if(t)I=0;else return-1;if(typeof i==\\\"string\\\")i=j(i,e);else if(typeof i==\\\"number\\\")return i=i&255,t?A.indexOf(i,I):A.lastIndexOf(i,I);if(i.byteLength===0)return-1;if(t){let n=-1;for(let g=I;g<A.byteLength;g++)if(A[g]===i[n===-1?0:g-n]){if(n===-1&&(n=g),g-n+1===i.byteLength)return n}else n!==-1&&(g-=g-n),n=-1}else{I+i.byteLength>A.byteLength&&(I=A.byteLength-i.byteLength);for(let n=I;n>=0;n--){let g=!0;for(let o=0;o<i.byteLength;o++)if(A[n+o]!==i[o]){g=!1;break}if(g)return n}}return-1}function SA(A,i,I,e){return UA(A,i,I,e,!0)}function NI(A,i,I,e){return UA(A,i,I,e,!1)}function b(A,i,I){let e=A[i];A[i]=A[I],A[I]=e}function OI(A){let i=A.byteLength;if(i%2!==0)throw new RangeError(\\\"Buffer size must be a multiple of 16-bits\\\");for(let I=0;I<i;I+=2)b(A,I,I+1);return A}function JI(A){let i=A.byteLength;if(i%4!==0)throw new RangeError(\\\"Buffer size must be a multiple of 32-bits\\\");for(let I=0;I<i;I+=4)b(A,I,I+3),b(A,I+1,I+2);return A}function RI(A){let i=A.byteLength;if(i%8!==0)throw new RangeError(\\\"Buffer size must be a multiple of 64-bits\\\");for(let I=0;I<i;I+=8)b(A,I,I+7),b(A,I+1,I+6),b(A,I+2,I+5),b(A,I+3,I+4);return A}function TI(A){return A}function _I(A,i,I=0,e=A.byteLength){let t=A.byteLength;return I>=t||e<=I?\\\"\\\":(I<0&&(I=0),e>t&&(e=t),(I!==0||e<t)&&(A=A.subarray(I,e)),V(i).toString(A))}function XI(A,i,I,e,t){return I===void 0?t=\\\"utf8\\\":e===void 0&&typeof I==\\\"string\\\"?(t=I,I=void 0):t===void 0&&typeof e==\\\"string\\\"&&(t=e,e=void 0),V(t).write(A,i,I,e)}function qI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat64(I,i,!0),I+8}function jI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setFloat32(I,i,!0),I+4}function WI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setUint32(I,i,!0),I+4}function zI(A,i,I){return I===void 0&&(I=0),new DataView(A.buffer,A.byteOffset,A.byteLength).setInt32(I,i,!0),I+4}function ZI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat64(i,!0)}function vI(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getFloat32(i,!0)}function $I(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getUint32(i,!0)}function Ai(A,i){return i===void 0&&(i=0),new DataView(A.buffer,A.byteOffset,A.byteLength).getInt32(i,!0)}FA.exports=W={isBuffer:DA,isEncoding:FI,alloc:KI,allocUnsafe:pI,allocUnsafeSlow:bI,byteLength:xI,compare:HI,concat:dI,copy:mI,equals:VI,fill:LI,from:j,includes:PI,indexOf:SA,lastIndexOf:NI,swap16:OI,swap32:JI,swap64:RI,toBuffer:TI,toString:_I,write:XI,writeDoubleLE:qI,writeFloatLE:jI,writeUInt32LE:WI,writeInt32LE:zI,readDoubleLE:ZI,readFloatLE:vI,readUInt32LE:$I,readInt32LE:Ai}});var bA=l((xi,pA)=>{var Ii=(A,i)=>function(){return i||(0,A[Object.keys(A)[0]])((i={exports:{}}).exports,i),i.exports},ii=(()=>{for(var A=new Uint8Array(128),i=0;i<64;i++)A[i<26?i+65:i<52?i+71:i<62?i-4:i*4-205]=i;return I=>{for(var e=I.length,t=new Uint8Array((e-(I[e-1]==\\\"=\\\")-(I[e-2]==\\\"=\\\"))*3/4|0),n=0,g=0;n<e;){var o=A[I.charCodeAt(n++)],r=A[I.charCodeAt(n++)],E=A[I.charCodeAt(n++)],Q=A[I.charCodeAt(n++)];t[g++]=o<<2|r>>4,t[g++]=r<<4|E>>2,t[g++]=E<<6|Q}return t}})(),ei=Ii({\\\"wasm-binary:./blake2b.wat\\\"(A,i){i.exports=ii(\\\"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\\\")}}),ti=ei(),ni=WebAssembly.compile(ti);pA.exports=async A=>(await WebAssembly.instantiate(await ni,A)).exports});var MA=l((mi,c)=>{var a=gA(),gi=KA(),U=null,xA=typeof WebAssembly!=\\\"undefined\\\"&&bA()().then(A=>{U=A}),D=64,P=[];c.exports=y;var HA=c.exports.BYTES_MIN=16,dA=c.exports.BYTES_MAX=64,Hi=c.exports.BYTES=32,mA=c.exports.KEYBYTES_MIN=16,VA=c.exports.KEYBYTES_MAX=64,di=c.exports.KEYBYTES=32,LA=c.exports.SALTBYTES=16,YA=c.exports.PERSONALBYTES=16;function y(A,i,I,e,t){if(!(this instanceof y))return new y(A,i,I,e,t);if(!U)throw new Error(\\\"WASM not loaded. Wait for Blake2b.ready(cb)\\\");A||(A=32),t!==!0&&(a(A>=HA,\\\"digestLength must be at least \\\"+HA+\\\", was given \\\"+A),a(A<=dA,\\\"digestLength must be at most \\\"+dA+\\\", was given \\\"+A),i!=null&&(a(i instanceof Uint8Array,\\\"key must be Uint8Array or Buffer\\\"),a(i.length>=mA,\\\"key must be at least \\\"+mA+\\\", was given \\\"+i.length),a(i.length<=VA,\\\"key must be at least \\\"+VA+\\\", was given \\\"+i.length)),I!=null&&(a(I instanceof Uint8Array,\\\"salt must be Uint8Array or Buffer\\\"),a(I.length===LA,\\\"salt must be exactly \\\"+LA+\\\", was given \\\"+I.length)),e!=null&&(a(e instanceof Uint8Array,\\\"personal must be Uint8Array or Buffer\\\"),a(e.length===YA,\\\"personal must be exactly \\\"+YA+\\\", was given \\\"+e.length))),P.length||(P.push(D),D+=216),this.digestLength=A,this.finalized=!1,this.pointer=P.pop(),this._memory=new Uint8Array(U.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=i?i.length:0,this._memory[2]=1,this._memory[3]=1,I&&this._memory.set(I,32),e&&this._memory.set(e,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),U.blake2b_init(this.pointer,this.digestLength),i&&(this.update(i),this._memory.fill(0,D,D+i.length),this._memory[this.pointer+200]=128)}y.prototype._realloc=function(A){U.memory.grow(Math.max(0,Math.ceil(Math.abs(A-this._memory.length)/65536))),this._memory=new Uint8Array(U.memory.buffer)};y.prototype.update=function(A){return a(this.finalized===!1,\\\"Hash instance finalized\\\"),a(A instanceof Uint8Array,\\\"input must be Uint8Array or Buffer\\\"),D+A.length>this._memory.length&&this._realloc(D+A.length),this._memory.set(A,D),U.blake2b_update(this.pointer,D,D+A.length),this};y.prototype.digest=function(A){if(a(this.finalized===!1,\\\"Hash instance finalized\\\"),this.finalized=!0,P.push(this.pointer),U.blake2b_final(this.pointer),!A||A===\\\"binary\\\")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof A==\\\"string\\\")return gi.toString(this._memory,A,this.pointer+128,this.pointer+128+this.digestLength);a(A instanceof Uint8Array&&A.length>=this.digestLength,\\\"input must be Uint8Array or Buffer\\\");for(var i=0;i<this.digestLength;i++)A[i]=this._memory[this.pointer+128+i];return A};y.prototype.final=y.prototype.digest;y.WASM=U;y.SUPPORTED=typeof WebAssembly!=\\\"undefined\\\";y.ready=function(A){return A||(A=Ci),xA?xA.then(()=>A(),A):A(new Error(\\\"WebAssembly not supported\\\"))};y.prototype.ready=y.ready;y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};y.prototype.setPartialHash=function(A){this._memory.set(A,this.pointer)};function Ci(){}});var z=l((Vi,GA)=>{var oi=\\\"Input must be an string, Buffer or Uint8Array\\\";function hi(A){let i;if(A instanceof Uint8Array)i=A;else if(typeof A==\\\"string\\\")i=new TextEncoder().encode(A);else throw new Error(oi);return i}function ri(A){return Array.prototype.map.call(A,function(i){return(i<16?\\\"0\\\":\\\"\\\")+i.toString(16)}).join(\\\"\\\")}function N(A){return(4294967296+A).toString(16).substring(1)}function Ei(A,i,I){let e=`\\n`+A+\\\" = \\\";for(let t=0;t<i.length;t+=2){if(I===32)e+=N(i[t]).toUpperCase(),e+=\\\" \\\",e+=N(i[t+1]).toUpperCase();else if(I===64)e+=N(i[t+1]).toUpperCase(),e+=N(i[t]).toUpperCase();else throw new Error(\\\"Invalid size \\\"+I);t%6===4?e+=`\\n`+new Array(A.length+4).join(\\\" \\\"):t<i.length-2&&(e+=\\\" \\\")}console.log(e)}function Qi(A,i,I){let e=new Date().getTime(),t=new Uint8Array(i);for(let g=0;g<i;g++)t[g]=g%256;let n=new Date().getTime();console.log(\\\"Generated random input in \\\"+(n-e)+\\\"ms\\\"),e=n;for(let g=0;g<I;g++){let o=A(t),r=new Date().getTime(),E=r-e;e=r,console.log(\\\"Hashed in \\\"+E+\\\"ms: \\\"+o.substring(0,20)+\\\"...\\\"),console.log(Math.round(i/(1<<20)/(E/1e3)*100)/100+\\\" MB PER SECOND\\\")}}GA.exports={normalizeInput:hi,toHex:ri,debugPrint:Ei,testSpeed:Qi}});var XA=l((Li,_A)=>{var J=z();function O(A,i,I){let e=A[i]+A[I],t=A[i+1]+A[I+1];e>=4294967296&&t++,A[i]=e,A[i+1]=t}function kA(A,i,I,e){let t=A[i]+I;I<0&&(t+=4294967296);let n=A[i+1]+e;t>=4294967296&&n++,A[i]=t,A[i+1]=n}function PA(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function S(A,i,I,e,t,n){let g=L[t],o=L[t+1],r=L[n],E=L[n+1];O(C,A,i),kA(C,A,g,o);let Q=C[e]^C[A],w=C[e+1]^C[A+1];C[e]=w,C[e+1]=Q,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=Q>>>24^w<<8,C[i+1]=w>>>24^Q<<8,O(C,A,i),kA(C,A,r,E),Q=C[e]^C[A],w=C[e+1]^C[A+1],C[e]=Q>>>16^w<<16,C[e+1]=w>>>16^Q<<16,O(C,I,e),Q=C[i]^C[I],w=C[i+1]^C[I+1],C[i]=w>>>31^Q<<1,C[i+1]=Q>>>31^w<<1}var NA=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),fi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],B=new Uint8Array(fi.map(function(A){return A*2})),C=new Uint32Array(32),L=new Uint32Array(32);function OA(A,i){let I=0;for(I=0;I<16;I++)C[I]=A.h[I],C[I+16]=NA[I];for(C[24]=C[24]^A.t,C[25]=C[25]^A.t/4294967296,i&&(C[28]=~C[28],C[29]=~C[29]),I=0;I<32;I++)L[I]=PA(A.b,4*I);for(I=0;I<12;I++)S(0,8,16,24,B[I*16+0],B[I*16+1]),S(2,10,18,26,B[I*16+2],B[I*16+3]),S(4,12,20,28,B[I*16+4],B[I*16+5]),S(6,14,22,30,B[I*16+6],B[I*16+7]),S(0,10,20,30,B[I*16+8],B[I*16+9]),S(2,12,22,24,B[I*16+10],B[I*16+11]),S(4,14,16,26,B[I*16+12],B[I*16+13]),S(6,8,18,28,B[I*16+14],B[I*16+15]);for(I=0;I<16;I++)A.h[I]=A.h[I]^C[I]^C[I+16]}var F=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function JA(A,i,I,e){if(A===0||A>64)throw new Error(\\\"Illegal output length, expected 0 < length <= 64\\\");if(i&&i.length>64)throw new Error(\\\"Illegal key, expected Uint8Array with 0 < length <= 64\\\");if(I&&I.length!==16)throw new Error(\\\"Illegal salt, expected Uint8Array with length is 16\\\");if(e&&e.length!==16)throw new Error(\\\"Illegal personal, expected Uint8Array with length is 16\\\");let t={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:A};F.fill(0),F[0]=A,i&&(F[1]=i.length),F[2]=1,F[3]=1,I&&F.set(I,32),e&&F.set(e,48);for(let n=0;n<16;n++)t.h[n]=NA[n]^PA(F,n*4);return i&&(Z(t,i),t.c=128),t}function Z(A,i){for(let I=0;I<i.length;I++)A.c===128&&(A.t+=A.c,OA(A,!1),A.c=0),A.b[A.c++]=i[I]}function RA(A){for(A.t+=A.c;A.c<128;)A.b[A.c++]=0;OA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3);return i}function TA(A,i,I,e,t){I=I||64,A=J.normalizeInput(A),e&&(e=J.normalizeInput(e)),t&&(t=J.normalizeInput(t));let n=JA(I,i,e,t);return Z(n,A),RA(n)}function Bi(A,i,I,e,t){let n=TA(A,i,I,e,t);return J.toHex(n)}_A.exports={blake2b:TA,blake2bHex:Bi,blake2bInit:JA,blake2bUpdate:Z,blake2bFinal:RA}});var AI=l((Yi,$A)=>{var qA=z();function si(A,i){return A[i]^A[i+1]<<8^A[i+2]<<16^A[i+3]<<24}function K(A,i,I,e,t,n){h[A]=h[A]+h[i]+t,h[e]=R(h[e]^h[A],16),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],12),h[A]=h[A]+h[i]+n,h[e]=R(h[e]^h[A],8),h[I]=h[I]+h[e],h[i]=R(h[i]^h[I],7)}function R(A,i){return A>>>i^A<<32-i}var jA=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),h=new Uint32Array(16),f=new Uint32Array(16);function WA(A,i){let I=0;for(I=0;I<8;I++)h[I]=A.h[I],h[I+8]=jA[I];for(h[12]^=A.t,h[13]^=A.t/4294967296,i&&(h[14]=~h[14]),I=0;I<16;I++)f[I]=si(A.b,4*I);for(I=0;I<10;I++)K(0,4,8,12,f[s[I*16+0]],f[s[I*16+1]]),K(1,5,9,13,f[s[I*16+2]],f[s[I*16+3]]),K(2,6,10,14,f[s[I*16+4]],f[s[I*16+5]]),K(3,7,11,15,f[s[I*16+6]],f[s[I*16+7]]),K(0,5,10,15,f[s[I*16+8]],f[s[I*16+9]]),K(1,6,11,12,f[s[I*16+10]],f[s[I*16+11]]),K(2,7,8,13,f[s[I*16+12]],f[s[I*16+13]]),K(3,4,9,14,f[s[I*16+14]],f[s[I*16+15]]);for(I=0;I<8;I++)A.h[I]^=h[I]^h[I+8]}function zA(A,i){if(!(A>0&&A<=32))throw new Error(\\\"Incorrect output length, should be in [1, 32]\\\");let I=i?i.length:0;if(i&&!(I>0&&I<=32))throw new Error(\\\"Incorrect key length, should be in [1, 32]\\\");let e={h:new Uint32Array(jA),b:new Uint8Array(64),c:0,t:0,outlen:A};return e.h[0]^=16842752^I<<8^A,I>0&&(v(e,i),e.c=64),e}function v(A,i){for(let I=0;I<i.length;I++)A.c===64&&(A.t+=A.c,WA(A,!1),A.c=0),A.b[A.c++]=i[I]}function ZA(A){for(A.t+=A.c;A.c<64;)A.b[A.c++]=0;WA(A,!0);let i=new Uint8Array(A.outlen);for(let I=0;I<A.outlen;I++)i[I]=A.h[I>>2]>>8*(I&3)&255;return i}function vA(A,i,I){I=I||32,A=qA.normalizeInput(A);let e=zA(I,i);return v(e,A),ZA(e)}function yi(A,i,I){let e=vA(A,i,I);return qA.toHex(e)}$A.exports={blake2s:vA,blake2sHex:yi,blake2sInit:zA,blake2sUpdate:v,blake2sFinal:ZA}});var iI=l((Mi,II)=>{var Y=XA(),M=AI();II.exports={blake2b:Y.blake2b,blake2bHex:Y.blake2bHex,blake2bInit:Y.blake2bInit,blake2bUpdate:Y.blake2bUpdate,blake2bFinal:Y.blake2bFinal,blake2s:M.blake2s,blake2sHex:M.blake2sHex,blake2sInit:M.blake2sInit,blake2sUpdate:M.blake2sUpdate,blake2sFinal:M.blake2sFinal}});var x=eA(MA(),1),m=eA(iI(),1);function d(A,i,I,e){return(0,m.blake2bInit)(A,i)}d.prototype.update=function(A){return(0,m.blake2bUpdate)(this,A),this};d.prototype.digest=function(A){var i=A||new Uint8Array(this.outlen);return(0,m.blake2bFinal)(this,i),i};d.prototype.final=d.prototype.digest;d.ready=function(A){x.ready(function(){A()})};function li(A,i,I,e){return new d(A,i)}function $(A){x.ready(function(){A()})}var AA=!1,T=li;x.ready(function(A){A||(AA=!0,T=x.default)});var tI=T,nI=!1,u=null,eI=null,IA=!1;$?$(()=>{IA=AA,console.debug(\\\"[privatecaptcha][worker] Hasher loaded. wasm=\\\"+IA),tI=T,nI=!0,u&&self.postMessage({command:\\\"init\\\"})}):console.warn(\\\"[privatecaptcha][worker] Blake2b ready() is not defined\\\");function wi(A,i){return(A[i]|A[i+1]<<8|A[i+2]<<16|A[i+3]<<24)>>>0}function ci(A){return Math.pow(2,Math.floor((255.999-A)/8))>>>0}function ui(A,i,I){let e=u.length;I&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${A} puzzleID=${i} length=${e}`),u[e-8]=i;let t=new Uint8Array(32);for(let n=0;n<256;n++){u[e-1-3]=n;for(let g=0;g<256;g++){u[e-1-2]=g;for(let o=0;o<256;o++){u[e-1-1]=g;for(let r=0;r<256;r++){u[e-1-0]=r,t.fill(0),tI(t.length).update(u).digest(t);let E=wi(t,0);if(E<=A)return I&&console.debug(`[privatecaptcha][worker] found solution. prefix=${E} threshold=${A}`),u.subarray(e-8)}}}}return new Uint8Array(0)}self.onmessage=A=>{let{command:i,argument:I}=A.data;switch(i){case\\\"init\\\":let{id:e,buffer:t}=I;eI=e,u=t,nI&&self.postMessage({command:\\\"init\\\"});break;case\\\"solve\\\":let{difficulty:n,puzzleIndex:g,debug:o}=I,r=ci(n),E=ui(r,g,o);self.postMessage({command:i,argument:{id:eI,solution:E,wasm:IA}});break;default:break}};\\n\");\n}\n", "import { encode } from 'base64-arraybuffer';\nimport PuzzleWorker from './puzzle.worker.js';\n\nconst METADATA_VERSION = 1;\n\nexport class WorkersPool {\n constructor(callbacks = {}, debug = false) {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._workers = [];\n this._debug = debug;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n\n this._callbacks = Object.assign({\n workersReady: () => 0,\n workerError: () => 0,\n workStarted: () => 0,\n workCompleted: () => 0,\n progress: () => 0,\n }, callbacks);\n }\n\n init(puzzle, autoStart) {\n if (!puzzle) { return; }\n if (puzzle.isZero()) {\n if (this._debug) { console.debug('[privatecaptcha][pool] skipping initializing workers'); }\n setTimeout(() => this._callbacks.workersReady(autoStart), 0);\n return;\n }\n\n const workersCount = 4;\n let readyWorkers = 0;\n const workers = [];\n const pool = this;\n const puzzleID = puzzle.ID;\n const puzzleData = puzzle.puzzleBuffer;\n\n for (let i = 0; i < workersCount; i++) {\n const worker = new PuzzleWorker();\n\n worker.onerror = (e) => this._callbacks.workerError(e);\n worker.onmessage = function(event) {\n if (!event.data) { return; }\n const command = event.data.command;\n switch (command) {\n case \"init\":\n readyWorkers++;\n if (readyWorkers === workersCount) {\n pool._callbacks.workersReady(autoStart);\n }\n break;\n case \"solve\":\n const { id, solution, wasm } = event.data.argument;\n pool.onSolutionFound(id, solution, wasm);\n break;\n case \"error\":\n if (event.data.error) {\n pool._callbacks.workerError(event.data.error);\n }\n break;\n default:\n break;\n };\n };\n workers.push(worker);\n }\n\n this._workers = workers;\n\n if (this._debug) { console.debug(`[privatecaptcha][pool] initializing workers. count=${this._workers.length}`); }\n for (let i = 0; i < this._workers.length; i++) {\n this._workers[i].postMessage({\n command: \"init\",\n argument: {\n id: puzzleID,\n buffer: puzzleData,\n },\n });\n };\n }\n\n solve(puzzle) {\n if (!puzzle) { return; }\n\n if (this._debug) { console.debug('[privatecaptcha][pool] starting solving'); }\n this._solutions = [];\n this._solutionsCount = puzzle.solutionsCount;\n this._puzzleID = puzzle.ID;\n this._timeStarted = Date.now();\n this._timeFinished = null;\n\n const skipSolving = puzzle.isZero() || (puzzle.solutionsCount === 0);\n let stubSolution = null;\n\n for (let i = 0; i < puzzle.solutionsCount; i++) {\n if (!skipSolving) {\n this._workers[i % this._workers.length].postMessage({\n command: \"solve\",\n argument: {\n difficulty: puzzle.difficulty,\n puzzleIndex: i,\n debug: this._debug,\n },\n });\n } else {\n if (!stubSolution) { stubSolution = new Uint8Array(8); }\n this._solutions.push(stubSolution);\n }\n }\n\n this._callbacks.workStarted();\n\n if (skipSolving) {\n setTimeout(() => this.onWorkCompleted(), 0);\n }\n }\n\n stop() {\n const count = this._workers.length;\n for (let i = 0; i < count; i++) {\n this._workers[i].terminate();\n }\n this._workers = [];\n if (this._debug) { console.debug('[privatecaptcha][pool] terminated the workers. count=' + count); }\n }\n\n reset() {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n }\n\n onSolutionFound(id, solution, wasm) {\n if (this._debug) { console.debug('[privatecaptcha][pool] solution found. length=' + solution.length); }\n if (id != this._puzzleID) {\n console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${id} expected=${this._puzzleID}`);\n return;\n }\n this._solutions.push(solution);\n\n if (wasm) { this._anyWasm = true; }\n\n const count = this._solutions.length;\n\n this._callbacks.progress(count * 100.0 / this._solutionsCount);\n\n if (count == this._solutionsCount) {\n this.onWorkCompleted();\n }\n }\n\n onWorkCompleted() {\n this._timeFinished = Date.now();\n this._callbacks.workCompleted();\n }\n\n serializeSolutions(errorCode) {\n if (this._debug) { console.debug('[privatecaptcha][pool] serializing solutions. count=' + this._solutions.length); }\n const solutionsLength = this._solutions.reduce((total, arr) => total + arr.length, 0);\n\n const metadataArray = this.writeMetadata(errorCode);\n const metadataSize = metadataArray.length;\n\n const resultArray = new Uint8Array(metadataSize + solutionsLength);\n let offset = 0;\n\n resultArray.set(metadataArray, offset);\n offset += metadataArray.length;\n\n for (let i = 0; i < this._solutions.length; i++) {\n resultArray.set(this._solutions[i], offset);\n offset += this._solutions[i].length;\n }\n\n return encode(resultArray);\n }\n\n writeMetadata(errorCode) {\n const metadataSize = 1 + 1 + 1 + 4;\n const binaryData = new Uint8Array(metadataSize);\n let currentIndex = 0;\n\n binaryData[currentIndex++] = METADATA_VERSION & 0xFF;\n binaryData[currentIndex++] = errorCode & 0xFF;\n\n const wasmFlag = this._anyWasm ? 1 : 0;\n binaryData[currentIndex++] = wasmFlag & 0xFF;\n\n const elapsedMillis = this.elapsedMillis();\n // Little-Endian\n binaryData[currentIndex++] = elapsedMillis & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 8) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 16) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 24) & 0xFF;\n\n return binaryData;\n }\n\n elapsedMillis() {\n if (this._timeStarted && this._timeFinished) {\n return this._timeFinished - this._timeStarted;\n }\n\n return 0;\n }\n}\n", "'use strict';\n\nexport const SafeHTMLElement = typeof HTMLElement !== 'undefined' ? HTMLElement : Object;\n", "'use strict';\n\nimport { SafeHTMLElement } from \"./utils.js\";\n\nexport class ProgressRing extends SafeHTMLElement {\n constructor() {\n super();\n\n this._circumference = 0;\n\n // create shadow dom root\n this._root = this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n // NOTE: stroke is sized with regards to {size} variable below\n // not to the scaled (external) size of SVG (yes, it's a bit confusing)\n const stroke = this.getAttribute('stroke');\n const size = 100;\n const radius = size / 2;\n const normalizedRadius = radius - stroke / 2;\n this._circumference = normalizedRadius * 2 * Math.PI;\n\n this._root.innerHTML = `\n <svg preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 ${size} ${size}\">\n <circle\n id=\"pie\"\n style=\"stroke-dasharray: 0 ${this._circumference}\"\n stroke-width=\"${normalizedRadius}\"\n fill=\"transparent\"\n r=\"${normalizedRadius / 2}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"track\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"progress\"\n stroke-dasharray=\"${this._circumference} ${this._circumference}\"\n style=\"stroke-dashoffset: ${this._circumference}\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n </svg>\n\n <style>\n svg {\n width: 2.25em;\n height: 2.25em;\n }\n #pie {\n stroke: var(--pie-color);\n transition: stroke-dasharray 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #progress {\n stroke: var(--accent-color);\n transition: stroke-dashoffset 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #track {\n stroke: var(--gray-color);\n }\n </style>\n `;\n }\n\n setProgress(percent) {\n const progress = (percent / 100 * this._circumference)\n const offset = this._circumference - progress;\n const circle = this._root.getElementById('progress');\n circle.style.strokeDashoffset = offset;\n\n const pie = this._root.getElementById('pie');\n pie.style.strokeDasharray = progress / 2 + ' ' + this._circumference;\n }\n\n static get observedAttributes() {\n return ['progress'];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) return;\n\n if (name === 'progress') {\n this.setProgress(newValue);\n }\n }\n}\n", "@layer base,theme,custom;@layer base{:host,*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0 solid}:host{--extra-spacing: 0px;--label-spacing: .625rem;--border-radius: .125rem;--warn-color: #A70B0B;--accent-color: #009400;min-width:0;font-size:1rem;display:inline-block;max-width:100%;border-radius:var(--border-radius)}:host(.hidden){display:none}:host(.floating){display:block;position:absolute;left:0;top:0;transform:translateY(-100%);z-index:1000}@media(min-width:30em){:host{min-width:20em}}}@layer theme{:host([theme=\"light\"]){--dark-color: #070113;--gray-color: #E0E0E0;--pie-color: #D8E9E9;--background-color: #fff;--checkbox-background-color: #FFF;--checkbox-hover-color: #EBF4F4}:host([theme=\"dark\"]){--dark-color: #EBF4F4;--gray-color: #656C7B;--pie-color: #376262;--background-color: #041616;--checkbox-background-color: #223C3C;--checkbox-hover-color: #1C3232}:host{--border: 1px solid var(--gray-color)}}.pc-captcha-widget{display:flex;align-items:center;flex-direction:row;padding:.75em 1em;border:var(--border);border-radius:var(--border-radius);background-color:var(--background-color);box-sizing:border-box;width:100%;height:100%}.pc-interactive-area{display:flex;flex:0 1 auto;align-items:center;position:relative;min-width:0}.pc-interactive-area label{padding-left:var(--label-spacing);color:var(--dark-color);flex:0 1 auto;min-width:1em;white-space:normal}.pc-interactive-area input[type=checkbox]{font-size:1em;width:2em;height:2em;margin:0 0 0 calc(.125em + var(--extra-spacing));appearance:none;background-color:var(--checkbox-background-color);border:.125em solid var(--dark-color);border-radius:.25em;cursor:pointer;flex-shrink:0}.pc-interactive-area input[type=checkbox]+label{padding:0 0 0 calc(.125em + var(--extra-spacing) + var(--label-spacing))}@keyframes colorChange{0%,to{border-color:var(--dark-color)}50%{border-color:var(--gray-color)}}.pc-interactive-area input[type=checkbox].loading{animation:colorChange 2s infinite;animation-timing-function:ease-in-out;background-color:var(--checkbox-hover-color);cursor:default}.pc-interactive-area input[type=checkbox].ready{background-color:var(--checkbox-background-color);border-color:var(--dark-color);cursor:pointer}.pc-interactive-area input[type=checkbox].invalid{background-color:var(--checkbox-hover-color);border-color:var(--gray-color);cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover{background-color:var(--checkbox-hover-color);border-color:var(--accent-color)}.pc-interactive-area input[type=checkbox].invalid:hover+label{cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover+label{cursor:pointer}@keyframes dots-1{0%{opacity:0}25%{opacity:1}}@keyframes dots-2{0%{opacity:0}50%{opacity:1}}@keyframes dots-3{0%{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{0%{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{0%{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{0%{opacity:0}75%{opacity:1}}.pc-interactive-area .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.pc-interactive-area .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.pc-interactive-area .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}#pc-progress{display:flex;justify-content:center;margin:0 0 0 var(--extra-spacing);flex-shrink:0}#pc-progress+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}.pc-spacer{flex-basis:0;flex-shrink:1;flex-grow:1;width:4em;min-width:0}.pc-info{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;margin-right:calc(.125em + var(--extra-spacing));color:var(--dark-color)}.pc-info svg{width:auto;height:3.125em;max-width:100%;max-height:100%}a.pc-link{margin-top:5px;text-decoration:none;color:currentcolor;text-align:center;font-size:.55em;text-transform:uppercase;font-weight:700;line-height:1.1em}a.pc-link:hover{text-decoration:underline}@keyframes checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0px}}svg.verified{margin:0 0 0 var(--extra-spacing);flex-shrink:0;width:2.25em;height:2.25em}svg.verified+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}svg.verified polyline{animation:checkmark .35s ease-in-out .1s backwards;stroke:#f2f2f2}svg.verified circle{fill:var(--accent-color)}#pc-debug{font-size:.75em;color:var(--gray-color);position:absolute;top:100%;left:calc(2em + 1em + 2*.125em + 2*var(--extra-spacing) + var(--label-spacing));cursor:default}#pc-debug.warn{color:var(--warn-color)}\n", "'use strict;'\n\nexport const CLICK_TO_VERIFY = 'click_to_verify';\nexport const VERIFYING = 'verifying';\nexport const SUCCESS = 'success';\nexport const UNAVAILABLE = 'unavailable';\nexport const INCOMPLETE = 'incomplete';\nexport const ERROR = 'error';\nexport const TESTING = 'testing';\n\nexport const STRINGS = {\n 'en': {\n [CLICK_TO_VERIFY]: 'Click to verify',\n [VERIFYING]: 'Verifying',\n [SUCCESS]: 'Verified',\n [UNAVAILABLE]: 'Not available',\n [INCOMPLETE]: 'incomplete',\n [ERROR]: 'error',\n [TESTING]: 'testing',\n },\n 'de': {\n [CLICK_TO_VERIFY]: 'Zum Best\u00E4tigen klicken',\n [VERIFYING]: 'Wird \u00FCberpr\u00FCft',\n [SUCCESS]: 'Verifiziert',\n [UNAVAILABLE]: 'Nicht verf\u00FCgbar',\n [INCOMPLETE]: 'unvollst\u00E4ndig',\n [ERROR]: 'fehler',\n [TESTING]: 'testmodus',\n },\n 'es': {\n [CLICK_TO_VERIFY]: 'Haz clic para verificar',\n [VERIFYING]: 'Verificando',\n [SUCCESS]: 'Verificado',\n [UNAVAILABLE]: 'No disponible',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'error',\n [TESTING]: 'prueba',\n },\n 'fr': {\n [CLICK_TO_VERIFY]: 'Cliquez pour v\u00E9rifier',\n [VERIFYING]: 'V\u00E9rification en cours',\n [SUCCESS]: 'V\u00E9rifi\u00E9',\n [UNAVAILABLE]: 'Non disponible',\n [INCOMPLETE]: 'incomplet',\n [ERROR]: 'erreur',\n [TESTING]: 'test',\n },\n 'it': {\n [CLICK_TO_VERIFY]: 'Clicca per verificare',\n [VERIFYING]: 'Verifica in corso',\n [SUCCESS]: 'Verificato',\n [UNAVAILABLE]: 'Non disponibile',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'errore',\n [TESTING]: 'test',\n },\n 'nl': {\n [CLICK_TO_VERIFY]: 'Klik om te verifi\u00EBren',\n [VERIFYING]: 'Bezig met verifi\u00EBren',\n [SUCCESS]: 'Geverifieerd',\n [UNAVAILABLE]: 'Niet beschikbaar',\n [INCOMPLETE]: 'onvolledig',\n [ERROR]: 'fout',\n [TESTING]: 'testen',\n },\n 'sv': {\n [CLICK_TO_VERIFY]: 'Klicka f\u00F6r att verifiera',\n [VERIFYING]: 'Verifierar',\n [SUCCESS]: 'Verifierad',\n [UNAVAILABLE]: 'Inte tillg\u00E4nglig',\n [INCOMPLETE]: 'ofullst\u00E4ndig',\n [ERROR]: 'fel',\n [TESTING]: 'test',\n },\n 'no': {\n [CLICK_TO_VERIFY]: 'Klikk for \u00E5 bekrefte',\n [VERIFYING]: 'Bekrefter',\n [SUCCESS]: 'Bekreftet',\n [UNAVAILABLE]: 'Ikke tilgjengelig',\n [INCOMPLETE]: 'ufullstendig',\n [ERROR]: 'feil',\n [TESTING]: 'test',\n },\n 'pl': {\n [CLICK_TO_VERIFY]: 'Kliknij, aby zweryfikowa\u0107',\n [VERIFYING]: 'Weryfikowanie',\n [SUCCESS]: 'Zweryfikowano',\n [UNAVAILABLE]: 'Niedost\u0119pne',\n [INCOMPLETE]: 'niekompletne',\n [ERROR]: 'b\u0142\u0105d',\n [TESTING]: 'test',\n },\n 'fi': {\n [CLICK_TO_VERIFY]: 'Napsauta vahvistaaksesi',\n [VERIFYING]: 'Vahvistetaan',\n [SUCCESS]: 'Vahvistettu',\n [UNAVAILABLE]: 'Ei saatavilla',\n [INCOMPLETE]: 'ep\u00E4t\u00E4ydellinen',\n [ERROR]: 'virhe',\n [TESTING]: 'testi',\n },\n 'et': {\n [CLICK_TO_VERIFY]: 'Kl\u00F5psa kinnitamiseks',\n [VERIFYING]: 'Kinnitamine',\n [SUCCESS]: 'Kinnitatud',\n [UNAVAILABLE]: 'Pole saadaval',\n [INCOMPLETE]: 'puudulik',\n [ERROR]: 'viga',\n [TESTING]: 'test',\n }\n};\n", "'use strict';\n\nimport { ProgressRing } from './progress.js';\nimport { SafeHTMLElement } from \"./utils.js\";\nimport styles from \"./styles.css\" with { type: 'css' };\nimport * as i18n from './strings.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('progress-ring')) {\n window.customElements.define('progress-ring', ProgressRing);\n}\n\nexport const STATE_EMPTY = 'empty';\nexport const STATE_ERROR = 'error';\nexport const STATE_LOADING = 'loading';\nexport const STATE_READY = 'ready';\nexport const STATE_IN_PROGRESS = 'inprogress';\nexport const STATE_VERIFIED = 'verified';\nexport const STATE_INVALID = 'invalid';\n\nexport const DISPLAY_POPUP = 'popup';\nconst DISPLAY_HIDDEN = 'hidden';\nexport const DISPLAY_WIDGET = 'widget';\n\nconst CHECKBOX_ID = 'pc-checkbox';\nconst PROGRESS_ID = 'pc-progress';\nconst DEBUG_ID = 'pc-debug';\nconst DEBUG_ERROR_CLASS = 'warn';\n\nconst privateCaptchaSVG = `<svg viewBox=\"0 0 39.4 41.99\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pc-logo\" preserveAspectRatio=\"xMidYMid meet\">\n<path d=\"M0 0v30.62l4.29 2.48V4.85h30.83v23.29l-15.41 8.9-6.83-3.94v-4.95l6.83 3.94 11.12-6.42V9.91H8.58v25.66l11.12 6.42 19.7-11.37V0Zm12.87 14.86h13.66v8.32l-6.83 3.94-6.83-3.94z\" fill=\"currentColor\"/>\n</svg>`;\n\nconst verifiedSVG = `<svg class=\"verified\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 154 154\">\n<g fill=\"none\"><circle cx=\"77\" cy=\"77\" r=\"76\"></circle>\n<polyline class=\"st0\" stroke-width=\"12\" points=\"43.5,77.8 63.7,97.9 112.2,49.4\" style=\"stroke-dasharray:100px, 100px; stroke-dashoffset: 200px;\"/></g>\n</svg>`;\n\nfunction htmlToElement(html) {\n const template = document.createElement('template');\n template.innerHTML = html.trim();\n return template.content.firstChild;\n}\n\nfunction checkbox(cls) {\n const el = document.createElement('input');\n el.type = 'checkbox';\n el.id = CHECKBOX_ID;\n el.className = cls;\n el.required = true;\n return el;\n}\n\nfunction label(text, forElement) {\n const el = document.createElement('label');\n el.htmlFor = forElement;\n el.textContent = text;\n return el;\n}\n\nfunction progressRing() {\n const el = document.createElement('progress-ring');\n el.id = PROGRESS_ID;\n el.setAttribute('stroke', '12');\n el.setAttribute('progress', '0');\n return el;\n}\n\nfunction progressLabel(text) {\n const el = label(text, PROGRESS_ID);\n const dots = document.createElement('span');\n dots.className = 'dots';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('span');\n dot.textContent = '.';\n dots.appendChild(dot);\n }\n el.appendChild(dots);\n return el;\n}\n\nfunction debugSpan(text, isError) {\n const el = document.createElement('span');\n el.id = DEBUG_ID;\n if (isError) { el.className = DEBUG_ERROR_CLASS; }\n el.textContent = text;\n return el;\n}\n\nfunction infoSection() {\n const info = document.createElement('div');\n info.className = 'pc-info';\n info.appendChild(htmlToElement(privateCaptchaSVG));\n const link = document.createElement('a');\n link.href = 'https://privatecaptcha.com';\n link.className = 'pc-link';\n link.rel = 'noopener nofollow';\n link.target = '_blank';\n link.appendChild(document.createTextNode('Private'));\n link.appendChild(document.createElement('br'));\n link.appendChild(document.createTextNode('Captcha'));\n info.appendChild(link);\n return info;\n}\n\n/**\n * @param {number} code\n * @param {Object<string, string>} strings\n * @returns {string} error message\n */\nfunction errorDescription(code, strings) {\n switch (code) {\n case errors.ERROR_NO_ERROR:\n return '';\n case errors.ERROR_NOT_CONFIGURED:\n return strings[i18n.INCOMPLETE];\n case errors.ERROR_ZERO_PUZZLE:\n return strings[i18n.TESTING];\n default:\n return strings[i18n.ERROR];\n }\n}\n\nexport class CaptchaElement extends SafeHTMLElement {\n constructor() {\n super();\n\n this._state = '';\n this._root = this.attachShadow({ mode: 'open' });\n\n this._debug = false;\n this._error = null;\n this._displayMode = DISPLAY_HIDDEN;\n this._lang = 'en';\n\n // Add CSS\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(styles);\n this._root.adoptedStyleSheets = [sheet];\n this._overridesSheet = null;\n }\n\n connectedCallback() {\n this._debug = this.getAttribute('debug');\n this._error = null;\n this._displayMode = this.getAttribute('display-mode');\n this._lang = this.getAttribute('lang');\n if (!(this._lang in i18n.STRINGS)) {\n console.warn(`[privatecaptcha][progress] Localization not found. lang=${this._lang}`);\n this._lang = 'en';\n }\n\n // add CSS overrides\n const extraStyles = this.getAttribute('extra-styles');\n this.updateStyles(extraStyles);\n\n // init\n const canShow = (this._displayMode == DISPLAY_WIDGET);\n this.setState(STATE_EMPTY, canShow);\n }\n\n /**\n * @param {string} state\n * @param {boolean} canShow\n */\n setState(state, canShow) {\n if (state == this._state) {\n console.debug('[privatecaptcha][progress] already in this state: ' + state);\n if (DISPLAY_POPUP === this._displayMode) {\n this._syncHostClass(canShow);\n }\n return;\n }\n\n if (this._debug) { console.debug(`[privatecaptcha][progress] change state. old=${this._state} new=${state}`); }\n\n const activeArea = document.createElement('div');\n activeArea.className = 'pc-interactive-area';\n let bindCheckEvent = false;\n let showPopupIfNeeded = false;\n const strings = i18n.STRINGS[this._lang];\n\n switch (state) {\n case STATE_EMPTY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox(''));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_LOADING:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('loading'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_READY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('ready'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_IN_PROGRESS:\n activeArea.appendChild(progressRing());\n activeArea.appendChild(progressLabel(strings[i18n.VERIFYING]));\n showPopupIfNeeded = canShow;\n break;\n case STATE_VERIFIED:\n activeArea.appendChild(htmlToElement(verifiedSVG));\n activeArea.appendChild(label(strings[i18n.SUCCESS], PROGRESS_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_INVALID:\n activeArea.appendChild(checkbox('invalid'));\n activeArea.appendChild(label(strings[i18n.UNAVAILABLE], CHECKBOX_ID));\n break;\n default:\n console.error(`[privatecaptcha][progress] unknown state: ${state}`);\n break;\n }\n\n if (this._debug || this._error) {\n const text = this._error ? errorDescription(this._error, strings) : `[${state}]`;\n activeArea.appendChild(debugSpan(text, this._error));\n }\n\n this._syncHostClass(showPopupIfNeeded);\n\n this._state = state;\n\n const widget = document.createElement('div');\n widget.className = 'pc-captcha-widget';\n widget.appendChild(activeArea);\n const spacer = document.createElement('div');\n spacer.className = 'pc-spacer';\n widget.appendChild(spacer);\n widget.appendChild(infoSection());\n\n this._root.replaceChildren(widget);\n\n if (bindCheckEvent) {\n const checkboxEl = this._root.getElementById(CHECKBOX_ID);\n if (checkboxEl) {\n checkboxEl.addEventListener('change', this.onCheckboxClicked.bind(this));\n } else {\n console.warn('[privatecaptcha][progress] checkbox not found in the Shadow DOM');\n }\n }\n }\n\n _syncHostClass(showPopupIfNeeded) {\n let hostClass = '';\n switch (this._displayMode) {\n case DISPLAY_HIDDEN:\n hostClass = 'hidden';\n break;\n case DISPLAY_POPUP:\n hostClass = showPopupIfNeeded ? 'floating' : 'hidden';\n break;\n case DISPLAY_WIDGET:\n break;\n }\n\n this.classList.remove('hidden', 'floating');\n if (hostClass) { this.classList.add(hostClass); }\n }\n\n /**\n * @param {Event} event\n */\n onCheckboxClicked(event) {\n event.preventDefault();\n if (this._debug) {\n console.debug(\"[privatecaptcha][progress] checkbox was clicked\");\n }\n if (event.target.checked) {\n const checkEvent = new CustomEvent(\"privatecaptcha:checked\", {\n bubbles: true,\n composed: true\n });\n\n this.dispatchEvent(checkEvent);\n } else {\n console.warn('[privatecaptcha][progress] checkbox was unchecked');\n }\n }\n\n /**\n * @param {number} percent\n */\n setProgress(percent) {\n if (STATE_IN_PROGRESS == this._state) {\n const progressBar = this._root.getElementById(PROGRESS_ID);\n if (progressBar) {\n progressBar.setProgress(percent);\n } else {\n console.warn('[privatecaptcha][progress] progress element not found');\n }\n } else {\n if (this._debug) {\n console.debug(`[privatecaptcha][progress] skipping updating progress when not in progress. state=${this._state}`);\n }\n }\n }\n\n /**\n * @param {number} value\n */\n setError(value) {\n this._error = value;\n }\n\n /**\n * @param {string} text\n * @param {boolean} error\n */\n setDebugText(text, error) {\n const debugElement = this._root.getElementById(DEBUG_ID);\n if (debugElement) {\n let debugText = '';\n if (this._error) {\n const strings = i18n.STRINGS[this._lang];\n debugText = errorDescription(this._error, strings);\n } else {\n debugText = `[${text}]`;\n }\n debugElement.textContent = debugText;\n if (error || this._error) {\n debugElement.classList.add(DEBUG_ERROR_CLASS);\n } else {\n debugElement.classList.remove(DEBUG_ERROR_CLASS);\n }\n }\n }\n\n static get observedAttributes() {\n return ['state', 'progress', 'extra-styles'];\n }\n\n updateStyles(newStyles) {\n const baseSheets = this._root.adoptedStyleSheets.filter(\n sheet => sheet !== this._overridesSheet\n );\n\n if (newStyles) {\n const cssText = `@layer custom { :host { ${newStyles} } }`;\n if (!this._overridesSheet) {\n this._overridesSheet = new CSSStyleSheet();\n }\n this._overridesSheet.replaceSync(cssText);\n this._root.adoptedStyleSheets = [...baseSheets, this._overridesSheet];\n } else {\n this._overridesSheet = null;\n this._root.adoptedStyleSheets = baseSheets;\n }\n }\n\n /**\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) { return; }\n\n switch (name) {\n case 'progress':\n const progressValue = newValue !== null ? parseFloat(newValue) : NaN;\n if (!Number.isNaN(progressValue)) {\n this.setProgress(progressValue);\n }\n break;\n case 'extra-styles':\n this.updateStyles(newValue);\n break;\n };\n }\n}\n", "'use strict';\n\nimport { getPuzzle, Puzzle } from './puzzle.js'\nimport { WorkersPool } from './workerspool.js'\nimport { CaptchaElement, STATE_EMPTY, STATE_ERROR, STATE_READY, STATE_IN_PROGRESS, STATE_VERIFIED, STATE_LOADING, STATE_INVALID, DISPLAY_POPUP, DISPLAY_WIDGET } from './html.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('private-captcha')) {\n window.customElements.define('private-captcha', CaptchaElement);\n}\n\nconst PUZZLE_ENDPOINT_URL = 'https://api.privatecaptcha.com/puzzle';\nconst PUZZLE_EU_ENDPOINT_URL = 'https://api.eu.privatecaptcha.com/puzzle';\nexport const RECAPTCHA_COMPAT = 'recaptcha';\n\n\n/**\n * @param {HTMLElement} element\n * @returns {HTMLFormElement | null}\n */\nfunction findParentFormElement(element) {\n while (element && element.tagName !== 'FORM') {\n element = element.parentElement;\n }\n return element;\n}\n\nexport class CaptchaWidget {\n /**\n * @param {HTMLElement} element\n * @param {Object} options\n */\n constructor(element, options = {}) {\n this._element = element;\n this._puzzle = null;\n this._expiryTimeout = null;\n this._state = STATE_EMPTY;\n this._lastProgress = null;\n this._solution = null;\n this._userStarted = false; // aka 'user started while we were initializing'\n this._apiTriggered = false; // aka execute() for programmatic triggering\n this._options = {};\n this._errorCode = errors.ERROR_NO_ERROR;\n\n this.setOptions(options);\n\n this._workersPool = new WorkersPool({\n workersReady: this.onWorkersReady.bind(this),\n workerError: this.onWorkerError.bind(this),\n workStarted: this.onWorkStarted.bind(this),\n workCompleted: this.onWorkCompleted.bind(this),\n progress: this.onWorkProgress.bind(this),\n }, this._options.debug);\n\n const form = findParentFormElement(this._element);\n if (form) {\n // NOTE: this does not work on Safari by (Apple) design if we click a button\n // \"passive\" - cannot use preventDefault()\n form.addEventListener('focusin', this.onFocusIn.bind(this), { passive: true });\n this._element.replaceChildren(this._createCaptchaElement());\n this._element.addEventListener('privatecaptcha:checked', this.onChecked.bind(this));\n\n if (this._options.storeVariable) {\n this._element[this._options.storeVariable] = this;\n }\n\n if (DISPLAY_POPUP === this._options.displayMode) {\n const anchor = form.querySelector(\".private-captcha-anchor\");\n if (anchor) {\n anchor.style.position = \"relative\";\n } else {\n console.warn('[privatecaptcha] cannot find anchor for popup');\n }\n }\n\n this.checkConfigured();\n } else {\n console.warn('[privatecaptcha] cannot find form element');\n }\n }\n\n _createCaptchaElement() {\n const captchaEl = document.createElement('private-captcha');\n\n captchaEl.setAttribute('lang', this._options.lang);\n captchaEl.setAttribute('theme', this._options.theme);\n captchaEl.setAttribute('extra-styles', this._options.styles);\n\n if (this._options.debug) {\n captchaEl.setAttribute('debug', 'true');\n }\n\n captchaEl.setAttribute('display-mode', this._options.displayMode);\n\n return captchaEl;\n }\n\n /**\n * @param {Object} options\n */\n setOptions(options) {\n const euOnly = this._element.dataset[\"eu\"] || null;\n const defaultEndpoint = euOnly ? PUZZLE_EU_ENDPOINT_URL : PUZZLE_ENDPOINT_URL;\n\n let defaultField = \"private-captcha-solution\";\n if (options.hasOwnProperty('compat') && options.compat === RECAPTCHA_COMPAT) {\n defaultField = \"g-recaptcha-response\";\n }\n\n let sitekey = \"\";\n if (options.hasOwnProperty('sitekey')) {\n sitekey = options.sitekey;\n }\n\n this._options = Object.assign({\n startMode: this._element.dataset[\"startMode\"] || \"auto\",\n debug: this._element.dataset[\"debug\"],\n fieldName: this._element.dataset[\"solutionField\"] || defaultField,\n puzzleEndpoint: this._element.dataset[\"puzzleEndpoint\"] || defaultEndpoint,\n sitekey: sitekey || this._element.dataset[\"sitekey\"] || \"\",\n displayMode: this._element.dataset[\"displayMode\"] || \"widget\",\n lang: this._element.dataset[\"lang\"] || \"auto\",\n theme: this._element.dataset[\"theme\"] || \"light\",\n styles: this._element.dataset[\"styles\"] || \"\",\n storeVariable: this._element.dataset[\"storeVariable\"] || null,\n }, options);\n\n if ('auto' === this._options.lang) {\n let lang = '';\n if (typeof document !== 'undefined' && document.documentElement) {\n lang = document.documentElement.lang;\n }\n if (!lang && typeof navigator !== 'undefined') {\n lang = navigator.language || navigator.userLanguage || '';\n }\n if (typeof lang === 'string' && lang.length >= 2) {\n this._options.lang = lang.split('-')[0].toLowerCase();\n }\n }\n }\n\n /**\n * Fetches puzzle from the server and sets up workers.\n * @param {boolean} autoStart\n */\n async init(autoStart) {\n this.trace(`init() was called. state=${this._state}`);\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n\n const sitekey = this.checkConfigured();\n if (!sitekey) { return; }\n\n if ((STATE_EMPTY !== this._state) && (STATE_ERROR !== this._state)) {\n console.warn(`[privatecaptcha] captcha has already been initialized. state=${this._state}`);\n return;\n }\n\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n const startWorkers = ('auto' === this._options.startMode) || autoStart;\n\n try {\n this.setState(STATE_LOADING);\n this.setProgressState(STATE_LOADING);\n this.trace(`fetching puzzle. sitekey=${sitekey}`);\n const puzzleData = await getPuzzle(this._options.puzzleEndpoint, sitekey);\n this._puzzle = new Puzzle(puzzleData);\n if (this._puzzle && this._puzzle.isZero()) { this._errorCode = errors.ERROR_ZERO_PUZZLE; }\n const expirationMillis = this._puzzle.expirationMillis();\n this.trace(`parsed puzzle buffer. isZero=${this._puzzle.isZero()} ttl=${expirationMillis / 1000}`);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (expirationMillis) { this._expiryTimeout = setTimeout(() => this.expire(), expirationMillis); }\n this._workersPool.init(this._puzzle, startWorkers);\n this.signalInit();\n } catch (e) {\n console.error('[privatecaptcha]', e);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n this._errorCode = errors.ERROR_FETCH_PUZZLE;\n this.setState(STATE_ERROR);\n this.setProgressState((this._userStarted || this._apiTriggered) ? STATE_VERIFIED : STATE_EMPTY);\n if (this._userStarted || this._apiTriggered) {\n this.saveSolutions();\n this.signalErrored();\n }\n }\n }\n\n /**\n * Ensures that we have a sitekey available (defined or passed through options)\n * @returns {string | null}\n */\n checkConfigured() {\n const sitekey = this._options.sitekey || this._element.dataset[\"sitekey\"];\n if (!sitekey) {\n console.error(\"[privatecaptcha] sitekey not set on captcha element\");\n this._errorCode = errors.ERROR_NOT_CONFIGURED;\n this.setState(STATE_INVALID);\n this.setProgressState(STATE_INVALID);\n return null;\n }\n\n return sitekey;\n }\n\n start() {\n if (STATE_READY !== this._state) {\n console.warn(`[privatecaptcha] solving has already been started. state=${this._state}`);\n return;\n }\n\n this.trace('starting solving captcha');\n\n try {\n this.setState(STATE_IN_PROGRESS);\n this._workersPool.solve(this._puzzle);\n } catch (e) {\n console.error('[privatecaptcha]', e);\n }\n }\n\n dispatchEvent(eventName, detail = {}) {\n const event = new CustomEvent(`privatecaptcha:${eventName}`, {\n bubbles: false,\n detail: { widget: this, element: this._element, ...detail }\n });\n this._element.dispatchEvent(event);\n }\n\n signalInit() {\n this.dispatchEvent(\"init\");\n\n const callback = this._element.dataset['initCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in init callback:', e);\n }\n }\n }\n\n signalStarted() {\n this.dispatchEvent(\"start\");\n\n const callback = this._element.dataset['startedCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in started callback:', e);\n }\n }\n }\n\n signalFinished() {\n this.dispatchEvent(\"finish\");\n\n const callback = this._element.dataset['finishedCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in finished callback:', e);\n }\n }\n }\n\n signalErrored() {\n this.dispatchEvent(\"error\");\n\n const callback = this._element.dataset['erroredCallback'];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in errored callback:', e);\n }\n }\n }\n\n ensureNoSolutionField() {\n const solutionField = this._element.querySelector(`input[name=\"${this._options.fieldName}\"]`);\n if (solutionField) {\n try {\n this._element.removeChild(solutionField);\n } catch (e) {\n console.warn('[privatecaptcha]', e);\n }\n }\n }\n\n /**\n * Resets widget to a state when `start()` or `execute()` can be called again\n * @param {Object} options\n */\n reset(options = {}) {\n this.trace('reset captcha');\n\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n this.setState(STATE_EMPTY);\n this.setProgressState(STATE_EMPTY);\n this.ensureNoSolutionField();\n this._userStarted = false;\n this._apiTriggered = false;\n this.setOptions(options);\n }\n\n updateStyles() {\n const newStyles = this._element.dataset[\"styles\"] || \"\";\n if (newStyles !== this._options.styles) {\n this._options.styles = newStyles;\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setAttribute('extra-styles', newStyles);\n }\n }\n }\n\n expire() {\n this.trace('expire captcha');\n\n // we immediately call init so reset() will be called there for workers pool\n if (this._workersPool) { this._workersPool.stop(); }\n\n this.setState(STATE_EMPTY);\n this.setProgressState(STATE_EMPTY);\n this.ensureNoSolutionField();\n this.init(this._userStarted);\n }\n\n /**\n * @returns {string} value of the puzzle solution that needs to be sent for verification\n */\n solution() {\n return this._solution;\n }\n\n /**\n * @param {FocusEvent} event\n */\n onFocusIn(event) {\n this.trace('onFocusIn event handler');\n\n if (STATE_EMPTY !== this._state) {\n this.trace(`skipping focusin event with non-empty state. state=${this._state}`)\n return;\n }\n\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement && (event.target == pcElement)) {\n this.trace('skipping focusin event on captcha element')\n return;\n }\n\n this.init(false /*start*/);\n }\n\n /**\n * A programmatic way of starting solving the puzzle (as opposed to user input way)\n * @returns {Promise<never>} promise intentionally does not resolve so that the form can be submitted via the callbacks\n */\n execute() {\n if (this._apiTriggered && (STATE_ERROR !== this._state)) {\n this.trace(`skipping duplicate execute event handler`);\n return new Promise(() => { });\n }\n\n this.trace(`execute event handler. state=${this._state}`);\n this._apiTriggered = true;\n\n // show spinner when in auto mode\n let progressState = ('auto' === this._options.startMode) ? STATE_IN_PROGRESS : this._state;\n this._triggerSolving(progressState);\n\n return new Promise(() => { });\n }\n\n onChecked(event) {\n if (event) {\n event.stopPropagation();\n }\n\n if (this._userStarted && (STATE_ERROR !== this._state)) {\n this.trace('skipping duplicate onChecked handler')\n return;\n }\n\n this.trace(`onChecked event handler. state=${this._state}`);\n this._userStarted = true;\n\n // always show spinner when user clicked\n this._triggerSolving(STATE_IN_PROGRESS);\n }\n\n _triggerSolving(progressState) {\n let finished = false;\n\n switch (this._state) {\n case STATE_READY:\n // NOTE: in case of short-circuit (zero/test puzzle), start() can call all callbacks before exit\n this.start();\n break;\n case STATE_EMPTY:\n case STATE_ERROR:\n const autoStart = this._userStarted || this._apiTriggered;\n this.init(autoStart);\n break;\n case STATE_LOADING:\n // this will be handled in onWorkersReady()\n break;\n case STATE_IN_PROGRESS:\n setTimeout(() => this.setProgress(this._lastProgress), 500);\n break;\n case STATE_VERIFIED:\n // happens when we finished verification fully in the background, still should animate \"the end\"\n progressState = STATE_VERIFIED;\n finished = true;\n break;\n default:\n console.warn(`[privatecaptcha] triggerSolving: unexpected state. state=${this._state}`);\n return;\n }\n\n this.setProgressState(progressState);\n if (finished) {\n this.saveSolutions();\n this.signalFinished();\n }\n }\n\n /**\n * @param {boolean} autoStart\n */\n onWorkersReady(autoStart) {\n this.trace(`workers are ready. autostart=${autoStart}`);\n\n this.setState(STATE_READY);\n // if user started we always show \"in progress\"\n if (!this._userStarted && !(this._apiTriggered && autoStart)) {\n this.setProgressState(STATE_READY);\n }\n\n if (autoStart || this._userStarted) {\n this.start();\n }\n }\n\n /**\n * @param {Error} error\n */\n onWorkerError(error) {\n console.error('[privatecaptcha] error in worker:', error)\n this._errorCode = errors.ERROR_SOLVE_PUZZLE;\n }\n\n onWorkStarted() {\n this.signalStarted();\n }\n\n onWorkCompleted() {\n this.trace('[privatecaptcha] work completed');\n\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] solving has not been started. state=${this._state}`);\n return;\n }\n\n this.setState(STATE_VERIFIED);\n if (this._userStarted || this._apiTriggered) {\n this.setProgressState(STATE_VERIFIED);\n }\n\n if (this._userStarted || this._apiTriggered) {\n this.saveSolutions();\n\n // give time for checkbox animation to complete\n setTimeout(() => this.signalFinished(), 500);\n }\n }\n\n /**\n * @param {number} percent\n */\n onWorkProgress(percent) {\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] skipping progress update. state=${this._state}`);\n return;\n }\n\n this.trace(`progress changed. percent=${percent}`);\n this.setProgress(percent);\n }\n\n saveSolutions() {\n const solutions = this._workersPool.serializeSolutions(this._errorCode);\n const payload = `${solutions}.${this._puzzle ? this._puzzle.rawData : ''}`;\n\n this.ensureNoSolutionField();\n this._element.insertAdjacentHTML('beforeend', `<input name=\"${this._options.fieldName}\" type=\"hidden\" value=\"${payload}\">`);\n\n this._solution = payload;\n\n this.trace(`saved solutions. field=${this._options.fieldName} payload=${payload}`);\n }\n\n /**\n * Updates the \"UI\" state of the widget.\n * @param {string} state\n */\n setProgressState(state) {\n // NOTE: hidden display mode is taken care of inside setState() even when (_userStarted == true)\n const canShow = this._userStarted ||\n (DISPLAY_WIDGET === this._options.displayMode) ||\n (this._apiTriggered && (DISPLAY_POPUP === this._options.displayMode));\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setError(this._errorCode);\n pcElement.setState(state, canShow);\n }\n else {\n console.error('[privatecaptcha] component not found when changing state');\n }\n }\n\n /**\n * Updates the \"internal\" (actual) state.\n * @param {string} state\n */\n setState(state) {\n this.trace(`change state. old=${this._state} new=${state}`);\n this._state = state;\n\n if (this._options.debug) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setDebugText(state, (STATE_ERROR == state));\n }\n }\n }\n\n /**\n * @param {number} progress\n */\n setProgress(progress) {\n this._lastProgress = progress;\n if ((STATE_IN_PROGRESS === this._state) || (STATE_VERIFIED === this._state)) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) { pcElement.setProgress(progress); }\n else { console.error('[privatecaptcha] component not found when updating progress'); }\n }\n }\n\n /**\n * @param {string} str\n */\n trace(str) {\n if (this._options.debug) {\n console.debug('[privatecaptcha]', str)\n }\n }\n}\n"],
5
+ "mappings": "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,UACVC,EAAc,cACdC,EAAa,aACbC,EAAQ,QACRC,EAAU,UAEVC,EAAU,CACnB,GAAM,CACF,CAACP,CAAe,EAAG,kBACnB,CAACC,CAAS,EAAG,YACb,CAACC,CAAO,EAAG,WACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,SACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,4BACnB,CAACC,CAAS,EAAG,uBACb,CAACC,CAAO,EAAG,cACX,CAACC,CAAW,EAAG,qBACf,CAACC,CAAU,EAAG,mBACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,WACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,0BACnB,CAACC,CAAS,EAAG,cACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,QACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,2BACb,CAACC,CAAO,EAAG,gBACX,CAACC,CAAW,EAAG,iBACf,CAACC,CAAU,EAAG,YACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,MACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,wBACnB,CAACC,CAAS,EAAG,oBACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,kBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,MACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,0BACb,CAACC,CAAO,EAAG,eACX,CAACC,CAAW,EAAG,mBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,QACf,EACA,GAAM,CACF,CAACN,CAAe,EAAG,8BACnB,CAACC,CAAS,EAAG,aACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,sBACf,CAACC,CAAU,EAAG,kBACd,CAACC,CAAK,EAAG,MACT,CA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",
6
6
  "names": ["chars", "lookup", "i", "encode", "arraybuffer", "bytes", "len", "base64", "decode", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "PUZZLE_BUFFER_LENGTH", "ACCEPTABLE_CLIENT_ERRORS", "getPuzzle", "endpoint", "sitekey", "response", "fetchWithBackoff", "json", "err", "wait", "delay", "resolve", "url", "options", "maxAttempts", "initialDelay", "maxDelay", "attempt", "readUInt32LE", "binaryData", "offset", "readUInt64LE", "Puzzle", "rawData", "parts", "buffer", "data", "decode", "userDataSize", "sourceBuffer", "enlargedBuffer", "inlineWorker", "scriptText", "blob", "url", "worker", "Worker", "inlineWorker", "METADATA_VERSION", "WorkersPool", "callbacks", "debug", "puzzle", "autoStart", "workersCount", "readyWorkers", "workers", "pool", "puzzleID", "puzzleData", "i", "worker", "Worker", "e", "event", "id", "solution", "wasm", "skipSolving", "stubSolution", "count", "errorCode", "solutionsLength", "total", "arr", "metadataArray", "metadataSize", "resultArray", "offset", "encode", "binaryData", "currentIndex", "wasmFlag", "elapsedMillis", "SafeHTMLElement", "ProgressRing", "SafeHTMLElement", "stroke", "size", "radius", "normalizedRadius", "percent", "progress", "offset", "circle", "pie", "name", "oldValue", "newValue", "styles_default", "CLICK_TO_VERIFY", "VERIFYING", "SUCCESS", "UNAVAILABLE", "INCOMPLETE", "ERROR", "TESTING", "STRINGS", "ProgressRing", "STATE_EMPTY", "STATE_ERROR", "STATE_LOADING", "STATE_READY", "STATE_IN_PROGRESS", "STATE_VERIFIED", "STATE_INVALID", "DISPLAY_POPUP", "DISPLAY_HIDDEN", "DISPLAY_WIDGET", "CHECKBOX_ID", "PROGRESS_ID", "DEBUG_ID", "DEBUG_ERROR_CLASS", "privateCaptchaSVG", "verifiedSVG", "htmlToElement", "html", "template", "checkbox", "cls", "el", "label", "text", "forElement", "progressRing", "progressLabel", "dots", "dot", "debugSpan", "isError", "infoSection", "info", "link", "errorDescription", "code", "strings", "INCOMPLETE", "TESTING", "ERROR", "CaptchaElement", "SafeHTMLElement", "sheet", "styles_default", "STRINGS", "extraStyles", "canShow", "state", "activeArea", "bindCheckEvent", "showPopupIfNeeded", "CLICK_TO_VERIFY", "VERIFYING", "SUCCESS", "UNAVAILABLE", "widget", "spacer", "checkboxEl", "hostClass", "event", "checkEvent", "percent", "progressBar", "value", "error", "debugElement", "debugText", "newStyles", "baseSheets", "cssText", "name", "oldValue", "newValue", "progressValue", "CaptchaElement", "PUZZLE_ENDPOINT_URL", "PUZZLE_EU_ENDPOINT_URL", "RECAPTCHA_COMPAT", "findParentFormElement", "element", "CaptchaWidget", "options", "STATE_EMPTY", "WorkersPool", "form", "DISPLAY_POPUP", "anchor", "captchaEl", "defaultEndpoint", "defaultField", "sitekey", "lang", "autoStart", "STATE_ERROR", "startWorkers", "STATE_LOADING", "puzzleData", "getPuzzle", "Puzzle", "expirationMillis", "e", "STATE_VERIFIED", "STATE_INVALID", "STATE_READY", "STATE_IN_PROGRESS", "eventName", "detail", "event", "callback", "solutionField", "newStyles", "pcElement", "progressState", "finished", "error", "percent", "payload", "state", "canShow", "DISPLAY_WIDGET", "progress", "str"]
7
7
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/PrivateCaptcha/PrivateCaptcha.git"
6
6
  },
7
- "version": "0.0.19",
7
+ "version": "0.0.20",
8
8
  "main": "index.js",
9
9
  "type": "module",
10
10
  "private": false,