skapi-js 2.0.0 → 2.0.1

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.
@@ -203,8 +203,8 @@
203
203
  limitations under the License.
204
204
 
205
205
  */
206
- var kc=Object.create;var et=Object.defineProperty;var bi=Object.getOwnPropertyDescriptor;var Dc=Object.getOwnPropertyNames;var Nc=Object.getPrototypeOf,Oc=Object.prototype.hasOwnProperty;var Fc=(t,e,r)=>e in t?et(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Ve=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var tt=(t,e)=>()=>(t&&(e=t(t=0)),e);var ie=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),zt=(t,e)=>{for(var r in e)et(t,r,{get:e[r],enumerable:true});},wi=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Dc(e))!Oc.call(t,i)&&i!==r&&et(t,i,{get:()=>e[i],enumerable:!(n=bi(e,i))||n.enumerable});return t};var rt=(t,e,r)=>(r=t!=null?kc(Nc(t)):{},wi(!t||!t.__esModule?et(r,"default",{value:t,enumerable:true}):r,t)),nt=t=>wi(et({},"__esModule",{value:true}),t),P=(t,e,r,n)=>{for(var i=bi(e,r),s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(o(e,r,i))||i);return i&&et(e,r,i),i};var Re=(t,e,r)=>Fc(t,typeof e!="symbol"?e+"":e,r);var vi=ie(Xt=>{Xt.byteLength=qc;Xt.toByteArray=Bc;Xt.fromByteArray=jc;var Te=[],de=[],Mc=typeof Uint8Array<"u"?Uint8Array:Array,Gr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(We=0,Ai=Gr.length;We<Ai;++We)Te[We]=Gr[We],de[Gr.charCodeAt(We)]=We;var We,Ai;de[45]=62;de[95]=63;function Si(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return [r,n]}function qc(t){var e=Si(t),r=e[0],n=e[1];return (r+n)*3/4-n}function Vc(t,e,r){return (e+r)*3/4-r}function Bc(t){var e,r=Si(t),n=r[0],i=r[1],s=new Mc(Vc(t,n,i)),o=0,a=i>0?n-4:n,l;for(l=0;l<a;l+=4)e=de[t.charCodeAt(l)]<<18|de[t.charCodeAt(l+1)]<<12|de[t.charCodeAt(l+2)]<<6|de[t.charCodeAt(l+3)],s[o++]=e>>16&255,s[o++]=e>>8&255,s[o++]=e&255;return i===2&&(e=de[t.charCodeAt(l)]<<2|de[t.charCodeAt(l+1)]>>4,s[o++]=e&255),i===1&&(e=de[t.charCodeAt(l)]<<10|de[t.charCodeAt(l+1)]<<4|de[t.charCodeAt(l+2)]>>2,s[o++]=e>>8&255,s[o++]=e&255),s}function $c(t){return Te[t>>18&63]+Te[t>>12&63]+Te[t>>6&63]+Te[t&63]}function Kc(t,e,r){for(var n,i=[],s=e;s<r;s+=3)n=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(t[s+2]&255),i.push($c(n));return i.join("")}function jc(t){for(var e,r=t.length,n=r%3,i=[],s=16383,o=0,a=r-n;o<a;o+=s)i.push(Kc(t,o,o+s>a?a:o+s));return n===1?(e=t[r-1],i.push(Te[e>>2]+Te[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(Te[e>>10]+Te[e>>4&63]+Te[e<<2&63]+"=")),i.join("")}});var Ri=ie(Jr=>{Jr.read=function(t,e,r,n,i){var s,o,a=i*8-n-1,l=(1<<a)-1,c=l>>1,u=-7,f=r?i-1:0,d=r?-1:1,p=t[e+f];for(f+=d,s=p&(1<<-u)-1,p>>=-u,u+=a;u>0;s=s*256+t[e+f],f+=d,u-=8);for(o=s&(1<<-u)-1,s>>=-u,u+=n;u>0;o=o*256+t[e+f],f+=d,u-=8);if(s===0)s=1-c;else {if(s===l)return o?NaN:(p?-1:1)*(1/0);o=o+Math.pow(2,n),s=s-c;}return (p?-1:1)*o*Math.pow(2,s-n)};Jr.write=function(t,e,r,n,i,s){var o,a,l,c=s*8-i-1,u=(1<<c)-1,f=u>>1,d=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:s-1,g=n?1:-1,m=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=u?(a=0,o=u):o+f>=1?(a=(e*l-1)*Math.pow(2,i),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=a&255,p+=g,a/=256,i-=8);for(o=o<<i|a,c+=i;c>0;t[r+p]=o&255,p+=g,o/=256,c-=8);t[r+p-g]|=m*128;};});var Ii=ie((Ff,Ti)=>{var Hc={}.toString;Ti.exports=Array.isArray||function(t){return Hc.call(t)=="[object Array]"};});var ir=ie(st=>{var Yr=vi(),it=Ri(),xi=Ii();st.Buffer=E;st.SlowBuffer=Qc;st.INSPECT_MAX_BYTES=50;E.TYPED_ARRAY_SUPPORT=globalThis.TYPED_ARRAY_SUPPORT!==void 0?globalThis.TYPED_ARRAY_SUPPORT:Wc();st.kMaxLength=Zt();function Wc(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},t.foo()===42&&typeof t.subarray=="function"&&t.subarray(1,1).byteLength===0}catch{return false}}function Zt(){return E.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Ne(t,e){if(Zt()<e)throw new RangeError("Invalid typed array length");return E.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=E.prototype):(t===null&&(t=new E(e)),t.length=e),t}function E(t,e,r){if(!E.TYPED_ARRAY_SUPPORT&&!(this instanceof E))return new E(t,e,r);if(typeof t=="number"){if(typeof e=="string")throw new Error("If encoding is specified then the first argument must be a string");return Qr(this,t)}return Ci(this,t,e,r)}E.poolSize=8192;E._augment=function(t){return t.__proto__=E.prototype,t};function Ci(t,e,r,n){if(typeof e=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer?Yc(t,e,r,n):typeof e=="string"?Jc(t,e,r):zc(t,e)}E.from=function(t,e,r){return Ci(null,t,e,r)};E.TYPED_ARRAY_SUPPORT&&(E.prototype.__proto__=Uint8Array.prototype,E.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&E[Symbol.species]===E&&Object.defineProperty(E,Symbol.species,{value:null,configurable:true}));function ki(t){if(typeof t!="number")throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function Gc(t,e,r,n){return ki(e),e<=0?Ne(t,e):r!==void 0?typeof n=="string"?Ne(t,e).fill(r,n):Ne(t,e).fill(r):Ne(t,e)}E.alloc=function(t,e,r){return Gc(null,t,e,r)};function Qr(t,e){if(ki(e),t=Ne(t,e<0?0:Xr(e)|0),!E.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}E.allocUnsafe=function(t){return Qr(null,t)};E.allocUnsafeSlow=function(t){return Qr(null,t)};function Jc(t,e,r){if((typeof r!="string"||r==="")&&(r="utf8"),!E.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=Di(e,r)|0;t=Ne(t,n);var i=t.write(e,r);return i!==n&&(t=t.slice(0,i)),t}function zr(t,e){var r=e.length<0?0:Xr(e.length)|0;t=Ne(t,r);for(var n=0;n<r;n+=1)t[n]=e[n]&255;return t}function Yc(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError("'offset' is out of bounds");if(e.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");return r===void 0&&n===void 0?e=new Uint8Array(e):n===void 0?e=new Uint8Array(e,r):e=new Uint8Array(e,r,n),E.TYPED_ARRAY_SUPPORT?(t=e,t.__proto__=E.prototype):t=zr(t,e),t}function zc(t,e){if(E.isBuffer(e)){var r=Xr(e.length)|0;return t=Ne(t,r),t.length===0||e.copy(t,0,0,r),t}if(e){if(typeof ArrayBuffer<"u"&&e.buffer instanceof ArrayBuffer||"length"in e)return typeof e.length!="number"||ml(e.length)?Ne(t,0):zr(t,e);if(e.type==="Buffer"&&xi(e.data))return zr(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Xr(t){if(t>=Zt())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Zt().toString(16)+" bytes");return t|0}function Qc(t){return +t!=t&&(t=0),E.alloc(+t)}E.isBuffer=function(e){return !!(e!=null&&e._isBuffer)};E.compare=function(e,r){if(!E.isBuffer(e)||!E.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(e===r)return 0;for(var n=e.length,i=r.length,s=0,o=Math.min(n,i);s<o;++s)if(e[s]!==r[s]){n=e[s],i=r[s];break}return n<i?-1:i<n?1:0};E.isEncoding=function(e){switch(String(e).toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "latin1":case "binary":case "base64":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return true;default:return false}};E.concat=function(e,r){if(!xi(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return E.alloc(0);var n;if(r===void 0)for(r=0,n=0;n<e.length;++n)r+=e[n].length;var i=E.allocUnsafe(r),s=0;for(n=0;n<e.length;++n){var o=e[n];if(!E.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,s),s+=o.length;}return i};function Di(t,e){if(E.isBuffer(t))return t.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;typeof t!="string"&&(t=""+t);var r=t.length;if(r===0)return 0;for(var n=false;;)switch(e){case "ascii":case "latin1":case "binary":return r;case "utf8":case "utf-8":case void 0:return er(t).length;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return r*2;case "hex":return r>>>1;case "base64":return Vi(t).length;default:if(n)return er(t).length;e=(""+e).toLowerCase(),n=true;}}E.byteLength=Di;function Xc(t,e,r){var n=false;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return "";for(t||(t="utf8");;)switch(t){case "hex":return cl(this,e,r);case "utf8":case "utf-8":return Fi(this,e,r);case "ascii":return ol(this,e,r);case "latin1":case "binary":return al(this,e,r);case "base64":return il(this,e,r);case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return ll(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=true;}}E.prototype._isBuffer=true;function Ge(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}E.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<e;r+=2)Ge(this,r,r+1);return this};E.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<e;r+=4)Ge(this,r,r+3),Ge(this,r+1,r+2);return this};E.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<e;r+=8)Ge(this,r,r+7),Ge(this,r+1,r+6),Ge(this,r+2,r+5),Ge(this,r+3,r+4);return this};E.prototype.toString=function(){var e=this.length|0;return e===0?"":arguments.length===0?Fi(this,0,e):Xc.apply(this,arguments)};E.prototype.equals=function(e){if(!E.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?true:E.compare(this,e)===0};E.prototype.inspect=function(){var e="",r=st.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),"<Buffer "+e+">"};E.prototype.compare=function(e,r,n,i,s){if(!E.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),s===void 0&&(s=this.length),r<0||n>e.length||i<0||s>this.length)throw new RangeError("out of range index");if(i>=s&&r>=n)return 0;if(i>=s)return -1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,s>>>=0,this===e)return 0;for(var o=s-i,a=n-r,l=Math.min(o,a),c=this.slice(i,s),u=e.slice(r,n),f=0;f<l;++f)if(c[f]!==u[f]){o=c[f],a=u[f];break}return o<a?-1:a<o?1:0};function Ni(t,e,r,n,i){if(t.length===0)return -1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return -1;r=t.length-1;}else if(r<0)if(i)r=0;else return -1;if(typeof e=="string"&&(e=E.from(e,n)),E.isBuffer(e))return e.length===0?-1:Pi(t,e,r,n,i);if(typeof e=="number")return e=e&255,E.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Pi(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Pi(t,e,r,n,i){var s=1,o=t.length,a=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(t.length<2||e.length<2)return -1;s=2,o/=2,a/=2,r/=2;}function l(p,g){return s===1?p[g]:p.readUInt16BE(g*s)}var c;if(i){var u=-1;for(c=r;c<o;c++)if(l(t,c)===l(e,u===-1?0:c-u)){if(u===-1&&(u=c),c-u+1===a)return u*s}else u!==-1&&(c-=c-u),u=-1;}else for(r+a>o&&(r=o-a),c=r;c>=0;c--){for(var f=true,d=0;d<a;d++)if(l(t,c+d)!==l(e,d)){f=false;break}if(f)return c}return -1}E.prototype.includes=function(e,r,n){return this.indexOf(e,r,n)!==-1};E.prototype.indexOf=function(e,r,n){return Ni(this,e,r,n,true)};E.prototype.lastIndexOf=function(e,r,n){return Ni(this,e,r,n,false)};function Zc(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var s=e.length;if(s%2!==0)throw new TypeError("Invalid hex string");n>s/2&&(n=s/2);for(var o=0;o<n;++o){var a=parseInt(e.substr(o*2,2),16);if(isNaN(a))return o;t[r+o]=a;}return o}function el(t,e,r,n){return nr(er(e,t.length-r),t,r,n)}function Oi(t,e,r,n){return nr(pl(e),t,r,n)}function tl(t,e,r,n){return Oi(t,e,r,n)}function rl(t,e,r,n){return nr(Vi(e),t,r,n)}function nl(t,e,r,n){return nr(gl(e,t.length-r),t,r,n)}E.prototype.write=function(e,r,n,i){if(r===void 0)i="utf8",n=this.length,r=0;else if(n===void 0&&typeof r=="string")i=r,n=this.length,r=0;else if(isFinite(r))r=r|0,isFinite(n)?(n=n|0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var s=this.length-r;if((n===void 0||n>s)&&(n=s),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=false;;)switch(i){case "hex":return Zc(this,e,r,n);case "utf8":case "utf-8":return el(this,e,r,n);case "ascii":return Oi(this,e,r,n);case "latin1":case "binary":return tl(this,e,r,n);case "base64":return rl(this,e,r,n);case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return nl(this,e,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=true;}};E.prototype.toJSON=function(){return {type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function il(t,e,r){return e===0&&r===t.length?Yr.fromByteArray(t):Yr.fromByteArray(t.slice(e,r))}function Fi(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var s=t[i],o=null,a=s>239?4:s>223?3:s>191?2:1;if(i+a<=r){var l,c,u,f;switch(a){case 1:s<128&&(o=s);break;case 2:l=t[i+1],(l&192)===128&&(f=(s&31)<<6|l&63,f>127&&(o=f));break;case 3:l=t[i+1],c=t[i+2],(l&192)===128&&(c&192)===128&&(f=(s&15)<<12|(l&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=t[i+1],c=t[i+2],u=t[i+3],(l&192)===128&&(c&192)===128&&(u&192)===128&&(f=(s&15)<<18|(l&63)<<12|(c&63)<<6|u&63,f>65535&&f<1114112&&(o=f));}}o===null?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=a;}return sl(n)}var Ui=4096;function sl(t){var e=t.length;if(e<=Ui)return String.fromCharCode.apply(String,t);for(var r="",n=0;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=Ui));return r}function ol(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]&127);return n}function al(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function cl(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i="",s=e;s<r;++s)i+=hl(t[s]);return i}function ll(t,e,r){for(var n=t.slice(e,r),i="",s=0;s<n.length;s+=2)i+=String.fromCharCode(n[s]+n[s+1]*256);return i}E.prototype.slice=function(e,r){var n=this.length;e=~~e,r=r===void 0?n:~~r,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r<e&&(r=e);var i;if(E.TYPED_ARRAY_SUPPORT)i=this.subarray(e,r),i.__proto__=E.prototype;else {var s=r-e;i=new E(s,void 0);for(var o=0;o<s;++o)i[o]=this[o+e];}return i};function Y(t,e,r){if(t%1!==0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}E.prototype.readUIntLE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=this[e],s=1,o=0;++o<r&&(s*=256);)i+=this[e+o]*s;return i};E.prototype.readUIntBE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=this[e+--r],s=1;r>0&&(s*=256);)i+=this[e+--r]*s;return i};E.prototype.readUInt8=function(e,r){return r||Y(e,1,this.length),this[e]};E.prototype.readUInt16LE=function(e,r){return r||Y(e,2,this.length),this[e]|this[e+1]<<8};E.prototype.readUInt16BE=function(e,r){return r||Y(e,2,this.length),this[e]<<8|this[e+1]};E.prototype.readUInt32LE=function(e,r){return r||Y(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};E.prototype.readUInt32BE=function(e,r){return r||Y(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};E.prototype.readIntLE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=this[e],s=1,o=0;++o<r&&(s*=256);)i+=this[e+o]*s;return s*=128,i>=s&&(i-=Math.pow(2,8*r)),i};E.prototype.readIntBE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=r,s=1,o=this[e+--i];i>0&&(s*=256);)o+=this[e+--i]*s;return s*=128,o>=s&&(o-=Math.pow(2,8*r)),o};E.prototype.readInt8=function(e,r){return r||Y(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};E.prototype.readInt16LE=function(e,r){r||Y(e,2,this.length);var n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n};E.prototype.readInt16BE=function(e,r){r||Y(e,2,this.length);var n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:n};E.prototype.readInt32LE=function(e,r){return r||Y(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};E.prototype.readInt32BE=function(e,r){return r||Y(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};E.prototype.readFloatLE=function(e,r){return r||Y(e,4,this.length),it.read(this,e,true,23,4)};E.prototype.readFloatBE=function(e,r){return r||Y(e,4,this.length),it.read(this,e,false,23,4)};E.prototype.readDoubleLE=function(e,r){return r||Y(e,8,this.length),it.read(this,e,true,52,8)};E.prototype.readDoubleBE=function(e,r){return r||Y(e,8,this.length),it.read(this,e,false,52,8)};function se(t,e,r,n,i,s){if(!E.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<s)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}E.prototype.writeUIntLE=function(e,r,n,i){if(e=+e,r=r|0,n=n|0,!i){var s=Math.pow(2,8*n)-1;se(this,e,r,n,s,0);}var o=1,a=0;for(this[r]=e&255;++a<n&&(o*=256);)this[r+a]=e/o&255;return r+n};E.prototype.writeUIntBE=function(e,r,n,i){if(e=+e,r=r|0,n=n|0,!i){var s=Math.pow(2,8*n)-1;se(this,e,r,n,s,0);}var o=n-1,a=1;for(this[r+o]=e&255;--o>=0&&(a*=256);)this[r+o]=e/a&255;return r+n};E.prototype.writeUInt8=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,1,255,0),E.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=e&255,r+1};function tr(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,s=Math.min(t.length-r,2);i<s;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>(n?i:1-i)*8;}E.prototype.writeUInt16LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,65535,0),E.TYPED_ARRAY_SUPPORT?(this[r]=e&255,this[r+1]=e>>>8):tr(this,e,r,true),r+2};E.prototype.writeUInt16BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,65535,0),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=e&255):tr(this,e,r,false),r+2};function rr(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,s=Math.min(t.length-r,4);i<s;++i)t[r+i]=e>>>(n?i:3-i)*8&255;}E.prototype.writeUInt32LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,4294967295,0),E.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255):rr(this,e,r,true),r+4};E.prototype.writeUInt32BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,4294967295,0),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255):rr(this,e,r,false),r+4};E.prototype.writeIntLE=function(e,r,n,i){if(e=+e,r=r|0,!i){var s=Math.pow(2,8*n-1);se(this,e,r,n,s-1,-s);}var o=0,a=1,l=0;for(this[r]=e&255;++o<n&&(a*=256);)e<0&&l===0&&this[r+o-1]!==0&&(l=1),this[r+o]=(e/a>>0)-l&255;return r+n};E.prototype.writeIntBE=function(e,r,n,i){if(e=+e,r=r|0,!i){var s=Math.pow(2,8*n-1);se(this,e,r,n,s-1,-s);}var o=n-1,a=1,l=0;for(this[r+o]=e&255;--o>=0&&(a*=256);)e<0&&l===0&&this[r+o+1]!==0&&(l=1),this[r+o]=(e/a>>0)-l&255;return r+n};E.prototype.writeInt8=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,1,127,-128),E.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=e&255,r+1};E.prototype.writeInt16LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,32767,-32768),E.TYPED_ARRAY_SUPPORT?(this[r]=e&255,this[r+1]=e>>>8):tr(this,e,r,true),r+2};E.prototype.writeInt16BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,32767,-32768),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=e&255):tr(this,e,r,false),r+2};E.prototype.writeInt32LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,2147483647,-2147483648),E.TYPED_ARRAY_SUPPORT?(this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):rr(this,e,r,true),r+4};E.prototype.writeInt32BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255):rr(this,e,r,false),r+4};function Li(t,e,r,n,i,s){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Mi(t,e,r,n,i){return i||Li(t,e,r,4),it.write(t,e,r,n,23,4),r+4}E.prototype.writeFloatLE=function(e,r,n){return Mi(this,e,r,true,n)};E.prototype.writeFloatBE=function(e,r,n){return Mi(this,e,r,false,n)};function qi(t,e,r,n,i){return i||Li(t,e,r,8),it.write(t,e,r,n,52,8),r+8}E.prototype.writeDoubleLE=function(e,r,n){return qi(this,e,r,true,n)};E.prototype.writeDoubleBE=function(e,r,n){return qi(this,e,r,false,n)};E.prototype.copy=function(e,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i<n&&(i=n),i===n||e.length===0||this.length===0)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r<i-n&&(i=e.length-r+n);var s=i-n,o;if(this===e&&n<r&&r<i)for(o=s-1;o>=0;--o)e[o+r]=this[o+n];else if(s<1e3||!E.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+r]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+s),r);return s};E.prototype.fill=function(e,r,n,i){if(typeof e=="string"){if(typeof r=="string"?(i=r,r=0,n=this.length):typeof n=="string"&&(i=n,n=this.length),e.length===1){var s=e.charCodeAt(0);s<256&&(e=s);}if(i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(typeof i=="string"&&!E.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else typeof e=="number"&&(e=e&255);if(r<0||this.length<r||this.length<n)throw new RangeError("Out of range index");if(n<=r)return this;r=r>>>0,n=n===void 0?this.length:n>>>0,e||(e=0);var o;if(typeof e=="number")for(o=r;o<n;++o)this[o]=e;else {var a=E.isBuffer(e)?e:er(new E(e,i).toString()),l=a.length;for(o=0;o<n-r;++o)this[o+r]=a[o%l];}return this};var ul=/[^+\/0-9A-Za-z-_]/g;function dl(t){if(t=fl(t).replace(ul,""),t.length<2)return "";for(;t.length%4!==0;)t=t+"=";return t}function fl(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function hl(t){return t<16?"0"+t.toString(16):t.toString(16)}function er(t,e){e=e||1/0;for(var r,n=t.length,i=null,s=[],o=0;o<n;++o){if(r=t.charCodeAt(o),r>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+1===n){(e-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&s.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536;}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;s.push(r);}else if(r<2048){if((e-=2)<0)break;s.push(r>>6|192,r&63|128);}else if(r<65536){if((e-=3)<0)break;s.push(r>>12|224,r>>6&63|128,r&63|128);}else if(r<1114112){if((e-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128);}else throw new Error("Invalid code point")}return s}function pl(t){for(var e=[],r=0;r<t.length;++r)e.push(t.charCodeAt(r)&255);return e}function gl(t,e){for(var r,n,i,s=[],o=0;o<t.length&&!((e-=2)<0);++o)r=t.charCodeAt(o),n=r>>8,i=r%256,s.push(i),s.push(n);return s}function Vi(t){return Yr.toByteArray(dl(t))}function nr(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function ml(t){return t!==t}});var Bi={};zt(Bi,{default:()=>_l});var yl,_l,$i=tt(()=>{yl={},_l=yl;});var sn={};zt(sn,{__assign:()=>rn,__asyncDelegator:()=>kl,__asyncGenerator:()=>Cl,__asyncValues:()=>Dl,__await:()=>vt,__awaiter:()=>Rl,__classPrivateFieldGet:()=>Ll,__classPrivateFieldSet:()=>Ml,__createBinding:()=>Il,__decorate:()=>Al,__exportStar:()=>Pl,__extends:()=>wl,__generator:()=>Tl,__importDefault:()=>Fl,__importStar:()=>Ol,__makeTemplateObject:()=>Nl,__metadata:()=>vl,__param:()=>Sl,__read:()=>Ki,__rest:()=>El,__spread:()=>Ul,__spreadArrays:()=>xl,__values:()=>nn});function wl(t,e){tn(t,e);function r(){this.constructor=t;}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r);}function El(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r}function Al(t,e,r,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(t,e,r,n);else for(var a=t.length-1;a>=0;a--)(o=t[a])&&(s=(i<3?o(s):i>3?o(e,r,s):o(e,r))||s);return i>3&&s&&Object.defineProperty(e,r,s),s}function Sl(t,e){return function(r,n){e(r,n,t);}}function vl(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function Rl(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s);})}return new(r||(r=Promise))(function(s,o){function a(u){try{c(n.next(u));}catch(f){o(f);}}function l(u){try{c(n.throw(u));}catch(f){o(f);}}function c(u){u.done?s(u.value):i(u.value).then(a,l);}c((n=n.apply(t,e||[])).next());})}function Tl(t,e){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(u){return l([c,u])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){r.label=c[1];break}if(c[0]===6&&r.label<s[1]){r.label=s[1],s=c;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(c);break}s[2]&&r.ops.pop(),r.trys.pop();continue}c=e.call(t,r);}catch(u){c=[6,u],i=0;}finally{n=s=0;}if(c[0]&5)throw c[1];return {value:c[0]?c[1]:void 0,done:true}}}function Il(t,e,r,n){n===void 0&&(n=r),t[n]=e[r];}function Pl(t,e){for(var r in t)r!=="default"&&!e.hasOwnProperty(r)&&(e[r]=t[r]);}function nn(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return {next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ki(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value);}catch(a){o={error:a};}finally{try{i&&!i.done&&(r=n.return)&&r.call(n);}finally{if(o)throw o.error}}return s}function Ul(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(Ki(arguments[e]));return t}function xl(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var n=Array(t),i=0,e=0;e<r;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,i++)n[i]=s[o];return n}function vt(t){return this instanceof vt?(this.v=t,this):new vt(t)}function Cl(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,s=[];return i={},o("next"),o("throw"),o("return"),i[Symbol.asyncIterator]=function(){return this},i;function o(d){n[d]&&(i[d]=function(p){return new Promise(function(g,m){s.push([d,p,g,m])>1||a(d,p);})});}function a(d,p){try{l(n[d](p));}catch(g){f(s[0][3],g);}}function l(d){d.value instanceof vt?Promise.resolve(d.value.v).then(c,u):f(s[0][2],d);}function c(d){a("next",d);}function u(d){a("throw",d);}function f(d,p){d(p),s.shift(),s.length&&a(s[0][0],s[0][1]);}}function kl(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,s){e[i]=t[i]?function(o){return (r=!r)?{value:vt(t[i](o)),done:i==="return"}:s?s(o):o}:s;}}function Dl(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof nn=="function"?nn(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(s){r[s]=t[s]&&function(o){return new Promise(function(a,l){o=t[s](o),i(a,l,o.done,o.value);})};}function i(s,o,a,l){Promise.resolve(l).then(function(c){s({value:c,done:a});},o);}}function Nl(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Ol(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Fl(t){return t&&t.__esModule?t:{default:t}}function Ll(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function Ml(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var tn,rn,on=tt(()=>{tn=function(t,e){return tn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n;}||function(r,n){for(var i in n)n.hasOwnProperty(i)&&(r[i]=n[i]);},tn(t,e)};rn=function(){return rn=Object.assign||function(e){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s]);}return e},rn.apply(this,arguments)};});var an=ie(he=>{Object.defineProperty(he,"__esModule",{value:true});he.MAX_HASHABLE_LENGTH=he.INIT=he.KEY=he.DIGEST_LENGTH=he.BLOCK_SIZE=void 0;he.BLOCK_SIZE=64;he.DIGEST_LENGTH=32;he.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);he.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];he.MAX_HASHABLE_LENGTH=Math.pow(2,53)-1;});var ji=ie(sr=>{Object.defineProperty(sr,"__esModule",{value:true});sr.RawSha256=void 0;var pe=an(),ql=(function(){function t(){this.state=Int32Array.from(pe.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=false;}return t.prototype.update=function(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");var r=0,n=e.byteLength;if(this.bytesHashed+=n,this.bytesHashed*8>pe.MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;n>0;)this.buffer[this.bufferLength++]=e[r++],n--,this.bufferLength===pe.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0);},t.prototype.digest=function(){if(!this.finished){var e=this.bytesHashed*8,r=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=this.bufferLength;if(r.setUint8(this.bufferLength++,128),n%pe.BLOCK_SIZE>=pe.BLOCK_SIZE-8){for(var i=this.bufferLength;i<pe.BLOCK_SIZE;i++)r.setUint8(i,0);this.hashBuffer(),this.bufferLength=0;}for(var i=this.bufferLength;i<pe.BLOCK_SIZE-8;i++)r.setUint8(i,0);r.setUint32(pe.BLOCK_SIZE-8,Math.floor(e/4294967296),true),r.setUint32(pe.BLOCK_SIZE-4,e),this.hashBuffer(),this.finished=true;}for(var s=new Uint8Array(pe.DIGEST_LENGTH),i=0;i<8;i++)s[i*4]=this.state[i]>>>24&255,s[i*4+1]=this.state[i]>>>16&255,s[i*4+2]=this.state[i]>>>8&255,s[i*4+3]=this.state[i]>>>0&255;return s},t.prototype.hashBuffer=function(){for(var e=this,r=e.buffer,n=e.state,i=n[0],s=n[1],o=n[2],a=n[3],l=n[4],c=n[5],u=n[6],f=n[7],d=0;d<pe.BLOCK_SIZE;d++){if(d<16)this.temp[d]=(r[d*4]&255)<<24|(r[d*4+1]&255)<<16|(r[d*4+2]&255)<<8|r[d*4+3]&255;else {var p=this.temp[d-2],g=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10;p=this.temp[d-15];var m=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3;this.temp[d]=(g+this.temp[d-7]|0)+(m+this.temp[d-16]|0);}var y=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&c^~l&u)|0)+(f+(pe.KEY[d]+this.temp[d]|0)|0)|0,b=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&s^i&o^s&o)|0;f=u,u=c,c=l,l=a+y|0,a=o,o=s,s=i,i=y+b|0;}n[0]+=i,n[1]+=s,n[2]+=o,n[3]+=a,n[4]+=l,n[5]+=c,n[6]+=u,n[7]+=f;},t})();sr.RawSha256=ql;});var Hi,Wi,Gi=tt(()=>{Hi=t=>{let e=[];for(let r=0,n=t.length;r<n;r++){let i=t.charCodeAt(r);if(i<128)e.push(i);else if(i<2048)e.push(i>>6|192,i&63|128);else if(r+1<t.length&&(i&64512)===55296&&(t.charCodeAt(r+1)&64512)===56320){let s=65536+((i&1023)<<10)+(t.charCodeAt(++r)&1023);e.push(s>>18|240,s>>12&63|128,s>>6&63|128,s&63|128);}else e.push(i>>12|224,i>>6&63|128,i&63|128);}return Uint8Array.from(e)},Wi=t=>{let e="";for(let r=0,n=t.length;r<n;r++){let i=t[r];if(i<128)e+=String.fromCharCode(i);else if(192<=i&&i<224){let s=t[++r];e+=String.fromCharCode((i&31)<<6|s&63);}else if(240<=i&&i<365){let o="%"+[i,t[++r],t[++r],t[++r]].map(a=>a.toString(16)).join("%");e+=decodeURIComponent(o);}else e+=String.fromCharCode((i&15)<<12|(t[++r]&63)<<6|t[++r]&63);}return e};});function Ji(t){return new TextEncoder().encode(t)}function Yi(t){return new TextDecoder("utf-8").decode(t)}var zi=tt(()=>{});var Qi={};zt(Qi,{fromUtf8:()=>Vl,toUtf8:()=>Bl});var Vl,Bl,Xi=tt(()=>{Gi();zi();Vl=t=>typeof TextEncoder=="function"?Ji(t):Hi(t),Bl=t=>typeof TextDecoder=="function"?Yi(t):Wi(t);});var Zi=ie(or=>{Object.defineProperty(or,"__esModule",{value:true});or.convertToBuffer=void 0;var $l=(Xi(),nt(Qi)),Kl=typeof Buffer<"u"&&Buffer.from?function(t){return Buffer.from(t,"utf8")}:$l.fromUtf8;function jl(t){return t instanceof Uint8Array?t:typeof t=="string"?Kl(t):ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(t)}or.convertToBuffer=jl;});var es=ie(ar=>{Object.defineProperty(ar,"__esModule",{value:true});ar.isEmptyData=void 0;function Hl(t){return typeof t=="string"?t.length===0:t.byteLength===0}ar.isEmptyData=Hl;});var ts=ie(cr=>{Object.defineProperty(cr,"__esModule",{value:true});cr.numToUint8=void 0;function Wl(t){return new Uint8Array([(t&4278190080)>>24,(t&16711680)>>16,(t&65280)>>8,t&255])}cr.numToUint8=Wl;});var rs=ie(lr=>{Object.defineProperty(lr,"__esModule",{value:true});lr.uint32ArrayFrom=void 0;function Gl(t){if(!Array.from){for(var e=new Uint32Array(t.length),r=0;r<t.length;)e[r]=t[r];return e}return Uint32Array.from(t)}lr.uint32ArrayFrom=Gl;});var ns=ie(Ie=>{Object.defineProperty(Ie,"__esModule",{value:true});Ie.uint32ArrayFrom=Ie.numToUint8=Ie.isEmptyData=Ie.convertToBuffer=void 0;var Jl=Zi();Object.defineProperty(Ie,"convertToBuffer",{enumerable:true,get:function(){return Jl.convertToBuffer}});var Yl=es();Object.defineProperty(Ie,"isEmptyData",{enumerable:true,get:function(){return Yl.isEmptyData}});var zl=ts();Object.defineProperty(Ie,"numToUint8",{enumerable:true,get:function(){return zl.numToUint8}});var Ql=rs();Object.defineProperty(Ie,"uint32ArrayFrom",{enumerable:true,get:function(){return Ql.uint32ArrayFrom}});});var ss=ie(dr=>{Object.defineProperty(dr,"__esModule",{value:true});dr.Sha256=void 0;var is=(on(),nt(sn)),ur=an(),cn=ji(),ln=ns(),Xl=(function(){function t(e){if(this.hash=new cn.RawSha256,e){this.outer=new cn.RawSha256;var r=Zl(e),n=new Uint8Array(ur.BLOCK_SIZE);n.set(r);for(var i=0;i<ur.BLOCK_SIZE;i++)r[i]^=54,n[i]^=92;this.hash.update(r),this.outer.update(n);for(var i=0;i<r.byteLength;i++)r[i]=0;}}return t.prototype.update=function(e){if(!((0, ln.isEmptyData)(e)||this.error))try{this.hash.update((0,ln.convertToBuffer)(e));}catch(r){this.error=r;}},t.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},t.prototype.digest=function(){return (0, is.__awaiter)(this,void 0,void 0,function(){return (0, is.__generator)(this,function(e){return [2,this.digestSync()]})})},t})();dr.Sha256=Xl;function Zl(t){var e=(0, ln.convertToBuffer)(t);if(e.byteLength>ur.BLOCK_SIZE){var r=new cn.RawSha256;r.update(e),e=r.digest();}var n=new Uint8Array(ur.BLOCK_SIZE);return n.set(e),n}});var dn=ie(un=>{Object.defineProperty(un,"__esModule",{value:true});var eu=(on(),nt(sn));(0, eu.__exportStar)(ss(),un);});var wn={};zt(wn,{default:()=>Ju});function Ju(t,e){return e=e||{},new Promise(function(r,n){var i=new XMLHttpRequest,s=[],o=[],a={},l=function(){return {ok:(i.status/100|0)==2,statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:l,headers:{keys:function(){return s},entries:function(){return o},get:function(u){return a[u.toLowerCase()]},has:function(u){return u.toLowerCase()in a}}}};for(var c in i.open(e.method||"get",t,true),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(u,f,d){s.push(f=f.toLowerCase()),o.push([f,d]),a[f]=a[f]?a[f]+","+d:d;}),r(l());},i.onerror=n,i.withCredentials=e.credentials=="include",e.headers)i.setRequestHeader(c,e.headers[c]);i.send(e.body||null);})}var En=tt(()=>{});var ps=ie((Uh,hs)=>{hs.exports=self.fetch||(self.fetch=(En(),nt(wn)).default||(En(),nt(wn)));});function Ei(t){let r=(typeof globalThis<"u"?globalThis:void 0)?.process;if(r&&typeof r.getBuiltinModule=="function")try{return r.getBuiltinModule(t)}catch{}try{if(typeof Ve=="function")return Ve(t)}catch{}return null}var $r,Kr,jr=()=>$r!==void 0?$r:$r=Ei("fs"),Hr=()=>Kr!==void 0?Kr:Kr=Ei("path"),De=typeof globalThis<"u"?globalThis:void 0,Qt=De?.window;function Lc(t){if(Buffer)return Buffer.from(t).toString("base64");let e="",r=new Uint8Array(t),n=32768;for(let i=0;i<r.length;i+=n){let s=r.subarray(i,i+n);e+=String.fromCharCode.apply(null,Array.from(s));}if(typeof btoa=="function")return btoa(e);throw new Error("No base64 encoder available in this environment.")}if(Qt)Qt.global=Qt,Qt.global._runningInNodeJS=false;else if(De&&(De.global=De,typeof De.window>"u")){class t{constructor(){this.result=null;this.error=null;this.onload=null;this.onloadend=null;this.onerror=null;}readAsDataURL(n){n.arrayBuffer().then(i=>{let s=Lc(i),o=n.type||"application/octet-stream";this.result=`data:${o};base64,${s}`,this.onload&&this.onload({target:this}),this.onloadend&&this.onloadend({target:this});}).catch(i=>{this.error=i,this.onerror&&this.onerror({target:this});});}readAsArrayBuffer(n){n.arrayBuffer().then(i=>{this.result=i,this.onload&&this.onload({target:this}),this.onloadend&&this.onloadend({target:this});}).catch(i=>{this.error=i,this.onerror&&this.onerror({target:this});});}readAsText(n,i="utf-8"){n.text().then(s=>{this.result=s,this.onload&&this.onload({target:this}),this.onloadend&&this.onloadend({target:this});}).catch(s=>{this.error=s,this.onerror&&this.onerror({target:this});});}}De.FileReader=t;class e{constructor(){this.status=0;this.statusText="";this.readyState=0;this.responseText="";this.response=null;this.responseType="";this.responseURL="";this.timeout=0;this.withCredentials=false;this.onload=null;this.onerror=null;this.onabort=null;this.ontimeout=null;this.onprogress=null;this.onreadystatechange=null;this.upload={onprogress:null};this._method="GET";this._url="";this._headers={};this._aborted=false;}open(n,i){this._method=n,this._url=i,this.readyState=1;}setRequestHeader(n,i){this._headers[n]=i;}getResponseHeader(n){return null}abort(){this._aborted=true,this.onabort&&this.onabort({});}send(n){if(this._aborted)return;let i={method:this._method,headers:this._headers};n&&this._method!=="GET"&&this._method!=="HEAD"&&(i.body=n),fetch(this._url,i).then(async s=>{if(!this._aborted){if(this.status=s.status,this.statusText=s.statusText,this.responseURL=s.url,this.readyState=4,this.responseType==="blob")this.response=await s.blob();else if(this.responseType==="json")try{this.response=await s.json();}catch{this.response=null;}else this.responseType==="arraybuffer"?this.response=await s.arrayBuffer():(this.responseText=await s.text(),this.response=this.responseText);this.onload&&this.onload({});}}).catch(s=>{this._aborted||this.onerror&&this.onerror(s);});}}De.XMLHttpRequest=e,De.window={_runningInNodeJS:true,alert:r=>console.error("[Alert]",r),sessionStorage:{getItem:r=>null,setItem:(r,n)=>{},removeItem:r=>{}},localStorage:{getItem:r=>{let n=jr(),i=Hr();if(!n||!i)return null;try{let s=i.resolve(process.cwd(),"states","localStorage",`${r}.skapi`);return n.existsSync(s)?n.readFileSync(s,"utf8"):null}catch{return null}},setItem:(r,n)=>{let i=jr(),s=Hr();if(!(!i||!s))try{let o=s.resolve(process.cwd(),"states","localStorage");i.existsSync(o)||i.mkdirSync(o,{recursive:!0});let a=s.resolve(o,`${r}.skapi`);i.writeFileSync(a,n,"utf8");}catch{}},removeItem:r=>{let n=jr(),i=Hr();if(!(!n||!i))try{let s=i.resolve(process.cwd(),"states","localStorage",`${r}.skapi`);n.existsSync(s)&&n.unlinkSync(s);}catch{}}},location:{href:"",origin:"",hostname:"",protocol:"",replace:r=>{}},navigator:{userAgent:`nodejs/${De?.process?.versions?.node||"unknown"}`,mediaDevices:{getUserMedia:async r=>{throw new Error("getUserMedia is not supported in Node.js environment.")}}},addEventListener:()=>{},removeEventListener:()=>{}};}var Wr=(function(){function t(r){var n=r||{},i=n.ValidationData,s=n.Username,o=n.Password,a=n.AuthParameters,l=n.ClientMetadata;this.validationData=i||{},this.authParameters=a||{},this.clientMetadata=l||{},this.username=s,this.password=o;}var e=t.prototype;return e.getUsername=function(){return this.username},e.getPassword=function(){return this.password},e.getValidationData=function(){return this.validationData},e.getAuthParameters=function(){return this.authParameters},e.getClientMetadata=function(){return this.clientMetadata},t})();var Oe=rt(ir());var fe;typeof window<"u"&&window.crypto&&(fe=window.crypto);!fe&&typeof window<"u"&&window.msCrypto&&(fe=window.msCrypto);!fe&&typeof globalThis<"u"&&globalThis.crypto&&(fe=globalThis.crypto);if(!fe&&typeof Ve=="function")try{fe=($i(),nt(Bi));}catch{}function Zr(){if(fe){if(typeof fe.getRandomValues=="function")try{return fe.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof fe.randomBytes=="function")try{return fe.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")}function bl(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i++){var s=e[i>>>2]>>>24-i%4*8&255;n.push((s>>>4).toString(16)),n.push((s&15).toString(16));}return n.join("")}var en=(function(){function t(r,n){r=this.words=r||[],n!=null?this.sigBytes=n:this.sigBytes=r.length*4;}var e=t.prototype;return e.random=function(n){for(var i=[],s=0;s<n;s+=4)i.push(Zr());return new t(i,n)},e.toString=function(){return bl(this)},t})();var hr=rt(dn());var W=D;function D(t,e){t!=null&&this.fromString(t,e);}function te(){return new D(null)}var Be,tu=0xdeadbeefcafe,os=(tu&16777215)==15715070;function ru(t,e,r,n,i,s){for(;--s>=0;){var o=e*this[t++]+r[n]+i;i=Math.floor(o/67108864),r[n++]=o&67108863;}return i}function nu(t,e,r,n,i,s){for(var o=e&32767,a=e>>15;--s>=0;){var l=this[t]&32767,c=this[t++]>>15,u=a*l+c*o;l=o*l+((u&32767)<<15)+r[n]+(i&1073741823),i=(l>>>30)+(u>>>15)+a*c+(i>>>30),r[n++]=l&1073741823;}return i}function iu(t,e,r,n,i,s){for(var o=e&16383,a=e>>14;--s>=0;){var l=this[t]&16383,c=this[t++]>>14,u=a*l+c*o;l=o*l+((u&16383)<<14)+r[n]+i,i=(l>>28)+(u>>14)+a*c,r[n++]=l&268435455;}return i}var as=typeof navigator<"u";as&&os&&navigator.appName=="Microsoft Internet Explorer"?(D.prototype.am=nu,Be=30):as&&os&&navigator.appName!="Netscape"?(D.prototype.am=ru,Be=26):(D.prototype.am=iu,Be=28);D.prototype.DB=Be;D.prototype.DM=(1<<Be)-1;D.prototype.DV=1<<Be;var fn=52;D.prototype.FV=Math.pow(2,fn);D.prototype.F1=fn-Be;D.prototype.F2=2*Be-fn;var su="0123456789abcdefghijklmnopqrstuvwxyz",fr=new Array,ot,ge;ot=48;for(ge=0;ge<=9;++ge)fr[ot++]=ge;ot=97;for(ge=10;ge<36;++ge)fr[ot++]=ge;ot=65;for(ge=10;ge<36;++ge)fr[ot++]=ge;function cs(t){return su.charAt(t)}function ou(t,e){var r=fr[t.charCodeAt(e)];return r??-1}function au(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s;}function cu(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0;}function hn(t){var e=te();return e.fromInt(t),e}function lu(t,e){var r;if(e==16)r=4;else if(e==8)r=3;else if(e==2)r=1;else if(e==32)r=5;else if(e==4)r=2;else throw new Error("Only radix 2, 4, 8, 16, 32 are supported");this.t=0,this.s=0;for(var n=t.length,i=false,s=0;--n>=0;){var o=ou(t,n);if(o<0){t.charAt(n)=="-"&&(i=true);continue}i=false,s==0?this[this.t++]=o:s+r>this.DB?(this[this.t-1]|=(o&(1<<this.DB-s)-1)<<s,this[this.t++]=o>>this.DB-s):this[this.t-1]|=o<<s,s+=r,s>=this.DB&&(s-=this.DB);}this.clamp(),i&&D.ZERO.subTo(this,this);}function uu(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t;}function du(t){if(this.s<0)return "-"+this.negate().toString(t);var e;if(t==16)e=4;else if(t==8)e=3;else if(t==2)e=1;else if(t==32)e=5;else if(t==4)e=2;else throw new Error("Only radix 2, 4, 8, 16, 32 are supported");var r=(1<<e)-1,n,i=false,s="",o=this.t,a=this.DB-o*this.DB%e;if(o-- >0)for(a<this.DB&&(n=this[o]>>a)>0&&(i=true,s=cs(n));o>=0;)a<e?(n=(this[o]&(1<<a)-1)<<e-a,n|=this[--o]>>(a+=this.DB-e)):(n=this[o]>>(a-=e)&r,a<=0&&(a+=this.DB,--o)),n>0&&(i=true),i&&(s+=cs(n));return i?s:"0"}function fu(){var t=te();return D.ZERO.subTo(this,t),t}function hu(){return this.s<0?this.negate():this}function pu(t){var e=this.s-t.s;if(e!=0)return e;var r=this.t;if(e=r-t.t,e!=0)return this.s<0?-e:e;for(;--r>=0;)if((e=this[r]-t[r])!=0)return e;return 0}function pn(t){var e=1,r;return (r=t>>>16)!=0&&(t=r,e+=16),(r=t>>8)!=0&&(t=r,e+=8),(r=t>>4)!=0&&(t=r,e+=4),(r=t>>2)!=0&&(t=r,e+=2),(r=t>>1)!=0&&(t=r,e+=1),e}function gu(){return this.t<=0?0:this.DB*(this.t-1)+pn(this[this.t-1]^this.s&this.DM)}function mu(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s;}function yu(t,e){for(var r=t;r<this.t;++r)e[r-t]=this[r];e.t=Math.max(this.t-t,0),e.s=this.s;}function _u(t,e){var r=t%this.DB,n=this.DB-r,i=(1<<n)-1,s=Math.floor(t/this.DB),o=this.s<<r&this.DM,a;for(a=this.t-1;a>=0;--a)e[a+s+1]=this[a]>>n|o,o=(this[a]&i)<<r;for(a=s-1;a>=0;--a)e[a]=0;e[s]=o,e.t=this.t+s+1,e.s=this.s,e.clamp();}function bu(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t){e.t=0;return}var n=t%this.DB,i=this.DB-n,s=(1<<n)-1;e[0]=this[r]>>n;for(var o=r+1;o<this.t;++o)e[o-r-1]|=(this[o]&s)<<i,e[o-r]=this[o]>>n;n>0&&(e[this.t-r-1]|=(this.s&s)<<i),e.t=this.t-r,e.clamp();}function wu(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]-t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n-=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s;}else {for(n+=this.s;r<t.t;)n-=t[r],e[r++]=n&this.DM,n>>=this.DB;n-=t.s;}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp();}function Eu(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i<n.t;++i)e[i+r.t]=r.am(0,n[i],e,i,0,r.t);e.s=0,e.clamp(),this.s!=t.s&&D.ZERO.subTo(e,e);}function Au(t){for(var e=this.abs(),r=t.t=2*e.t;--r>=0;)t[r]=0;for(r=0;r<e.t-1;++r){var n=e.am(r,e[r],t,2*r,0,1);(t[r+e.t]+=e.am(r+1,2*e[r],t,2*r+1,n,e.t-r-1))>=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1);}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp();}function Su(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t<n.t){e?.fromInt(0),r!=null&&this.copyTo(r);return}r==null&&(r=te());var s=te(),o=this.s,a=t.s,l=this.DB-pn(n[n.t-1]);l>0?(n.lShiftTo(l,s),i.lShiftTo(l,r)):(n.copyTo(s),i.copyTo(r));var c=s.t,u=s[c-1];if(u!=0){var f=u*(1<<this.F1)+(c>1?s[c-2]>>this.F2:0),d=this.FV/f,p=(1<<this.F1)/f,g=1<<this.F2,m=r.t,y=m-c,b=e??te();for(s.dlShiftTo(y,b),r.compareTo(b)>=0&&(r[r.t++]=1,r.subTo(b,r)),D.ONE.dlShiftTo(c,b),b.subTo(s,s);s.t<c;)s[s.t++]=0;for(;--y>=0;){var _=r[--m]==u?this.DM:Math.floor(r[m]*d+(r[m-1]+g)*p);if((r[m]+=s.am(0,_,r,y,0,c))<_)for(s.dlShiftTo(y,b),r.subTo(b,r);r[m]<--_;)r.subTo(b,r);}e!=null&&(r.drShiftTo(c,e),o!=a&&D.ZERO.subTo(e,e)),r.t=c,r.clamp(),l>0&&r.rShiftTo(l,r),o<0&&D.ZERO.subTo(r,r);}}}function vu(t){var e=te();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(D.ZERO)>0&&t.subTo(e,e),e}function Ru(){if(this.t<1)return 0;var t=this[0];if((t&1)==0)return 0;var e=t&3;return e=e*(2-(t&15)*e)&15,e=e*(2-(t&255)*e)&255,e=e*(2-((t&65535)*e&65535))&65535,e=e*(2-t*e%this.DV)%this.DV,e>0?this.DV-e:-e}function Tu(t){return this.compareTo(t)==0}function Iu(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]+t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n+=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s;}else {for(n+=this.s;r<t.t;)n+=t[r],e[r++]=n&this.DM,n>>=this.DB;n+=t.s;}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp();}function Pu(t){var e=te();return this.addTo(t,e),e}function Uu(t){var e=te();return this.subTo(t,e),e}function xu(t){var e=te();return this.multiplyTo(t,e),e}function Cu(t){var e=te();return this.divRemTo(t,e,null),e}function at(t){this.m=t,this.mp=t.invDigit(),this.mpl=this.mp&32767,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t;}function ku(t){var e=te();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(D.ZERO)>0&&this.m.subTo(e,e),e}function Du(t){var e=te();return t.copyTo(e),this.reduce(e),e}function Nu(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var r=t[e]&32767,n=r*this.mpl+((r*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(r=e+this.m.t,t[r]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++;}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t);}function Ou(t,e){t.squareTo(e),this.reduce(e);}function Fu(t,e,r){t.multiplyTo(e,r),this.reduce(r);}at.prototype.convert=ku;at.prototype.revert=Du;at.prototype.reduce=Nu;at.prototype.mulTo=Fu;at.prototype.sqrTo=Ou;function Lu(t,e,r){var n=t.bitLength(),i,s=hn(1),o=new at(e);if(n<=0)return s;n<18?i=1:n<48?i=3:n<144?i=4:n<768?i=5:i=6;var a=new Array,l=3,c=i-1,u=(1<<i)-1;if(a[1]=o.convert(this),i>1){var f=te();for(o.sqrTo(a[1],f);l<=u;)a[l]=te(),o.mulTo(f,a[l-2],a[l]),l+=2;}var d=t.t-1,p,g=true,m=te(),y;for(n=pn(t[d])-1;d>=0;){for(n>=c?p=t[d]>>n-c&u:(p=(t[d]&(1<<n+1)-1)<<c-n,d>0&&(p|=t[d-1]>>this.DB+n-c)),l=i;(p&1)==0;)p>>=1,--l;if((n-=l)<0&&(n+=this.DB,--d),g)a[p].copyTo(s),g=false;else {for(;l>1;)o.sqrTo(s,m),o.sqrTo(m,s),l-=2;l>0?o.sqrTo(s,m):(y=s,s=m,m=y),o.mulTo(m,a[p],s);}for(;d>=0&&(t[d]&1<<n)==0;)o.sqrTo(s,m),y=s,s=m,m=y,--n<0&&(n=this.DB-1,--d);}var b=o.revert(s);return r(null,b),b}D.prototype.copyTo=au;D.prototype.fromInt=cu;D.prototype.fromString=lu;D.prototype.clamp=uu;D.prototype.dlShiftTo=mu;D.prototype.drShiftTo=yu;D.prototype.lShiftTo=_u;D.prototype.rShiftTo=bu;D.prototype.subTo=wu;D.prototype.multiplyTo=Eu;D.prototype.squareTo=Au;D.prototype.divRemTo=Su;D.prototype.invDigit=Ru;D.prototype.addTo=Iu;D.prototype.toString=du;D.prototype.negate=fu;D.prototype.abs=hu;D.prototype.compareTo=pu;D.prototype.bitLength=gu;D.prototype.mod=vu;D.prototype.equals=Tu;D.prototype.add=Pu;D.prototype.subtract=Uu;D.prototype.multiply=xu;D.prototype.divide=Cu;D.prototype.modPow=Lu;D.ZERO=hn(0);D.ONE=hn(1);function gn(t){return Oe.Buffer.from(new en().random(t).toString(),"hex")}var Mu=/^[89a-f]/i,qu="FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF",Vu="userAttributes.",$e=(function(){function t(r){this.N=new W(qu,16),this.g=new W("2",16),this.k=new W(this.hexHash(""+this.padHex(this.N)+this.padHex(this.g)),16),this.smallAValue=this.generateRandomSmallA(),this.getLargeAValue(function(){}),this.infoBits=Oe.Buffer.from("Caldera Derived Key","utf8"),this.poolName=r;}var e=t.prototype;return e.getSmallAValue=function(){return this.smallAValue},e.getLargeAValue=function(n){var i=this;this.largeAValue?n(null,this.largeAValue):this.calculateA(this.smallAValue,function(s,o){s&&n(s,null),i.largeAValue=o,n(null,i.largeAValue);});},e.generateRandomSmallA=function(){var n=gn(128).toString("hex"),i=new W(n,16);return i},e.generateRandomString=function(){return gn(40).toString("base64")},e.getRandomPassword=function(){return this.randomPassword},e.getSaltDevices=function(){return this.SaltToHashDevices},e.getVerifierDevices=function(){return this.verifierDevices},e.generateHashDevice=function(n,i,s){var o=this;this.randomPassword=this.generateRandomString();var a=""+n+i+":"+this.randomPassword,l=this.hash(a),c=gn(16).toString("hex");this.SaltToHashDevices=this.padHex(new W(c,16)),this.g.modPow(new W(this.hexHash(this.SaltToHashDevices+l),16),this.N,function(u,f){u&&s(u,null),o.verifierDevices=o.padHex(f),s(null,null);});},e.calculateA=function(n,i){var s=this;this.g.modPow(n,this.N,function(o,a){o&&i(o,null),a.mod(s.N).equals(W.ZERO)&&i(new Error("Illegal paramater. A mod N cannot be 0."),null),i(null,a);});},e.calculateU=function(n,i){this.UHexHash=this.hexHash(this.padHex(n)+this.padHex(i));var s=new W(this.UHexHash,16);return s},e.hash=function(n){var i=new hr.Sha256;i.update(n);var s=i.digestSync(),o=Oe.Buffer.from(s).toString("hex");return new Array(64-o.length).join("0")+o},e.hexHash=function(n){return this.hash(Oe.Buffer.from(n,"hex"))},e.computehkdf=function(n,i){var s=Oe.Buffer.concat([this.infoBits,Oe.Buffer.from("","utf8")]),o=new hr.Sha256(i);o.update(n);var a=o.digestSync(),l=new hr.Sha256(a);l.update(s);var c=l.digestSync(),u=c,f=u.slice(0,16);return f},e.getPasswordAuthenticationKey=function(n,i,s,o,a){var l=this;if(s.mod(this.N).equals(W.ZERO))throw new Error("B cannot be zero.");if(this.UValue=this.calculateU(this.largeAValue,s),this.UValue.equals(W.ZERO))throw new Error("U cannot be zero.");var c=""+this.poolName+n+":"+i,u=this.hash(c),f=new W(this.hexHash(this.padHex(o)+u),16);this.calculateS(f,s,function(d,p){d&&a(d,null);var g=l.computehkdf(Oe.Buffer.from(l.padHex(p),"hex"),Oe.Buffer.from(l.padHex(l.UValue),"hex"));a(null,g);});},e.calculateS=function(n,i,s){var o=this;this.g.modPow(n,this.N,function(a,l){a&&s(a,null);var c=i.subtract(o.k.multiply(l));c.modPow(o.smallAValue.add(o.UValue.multiply(n)),o.N,function(u,f){u&&s(u,null),s(null,f.mod(o.N));});});},e.getNewPasswordRequiredChallengeUserAttributePrefix=function(){return Vu},e.padHex=function(n){if(!(n instanceof W))throw new Error("Not a BigInteger");var i=n.compareTo(W.ZERO)<0,s=n.abs().toString(16);if(s=s.length%2!==0?"0"+s:s,s=Mu.test(s)?"00"+s:s,i){var o=s.split("").map(function(l){var c=~parseInt(l,16)&15;return "0123456789ABCDEF".charAt(c)}).join(""),a=new W(o,16).add(W.ONE);s=a.toString(16),s.toUpperCase().startsWith("FF8")&&(s=s.substring(2));}return s},t})();var ls=rt(ir());var pr=(function(){function t(r){this.jwtToken=r||"",this.payload=this.decodePayload();}var e=t.prototype;return e.getJwtToken=function(){return this.jwtToken},e.getExpiration=function(){return this.payload.exp},e.getIssuedAt=function(){return this.payload.iat},e.decodePayload=function(){var n=this.jwtToken.split(".")[1];try{return JSON.parse(ls.Buffer.from(n,"base64").toString("utf8"))}catch{return {}}},t})();function Bu(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,mn(t,e);}function mn(t,e){return mn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},mn(t,e)}var ct=(function(t){function e(r){var n=r===void 0?{}:r,i=n.AccessToken;return t.call(this,i||"")||this}return Bu(e,t),e})(pr);function $u(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,yn(t,e);}function yn(t,e){return yn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},yn(t,e)}var lt=(function(t){function e(r){var n=r===void 0?{}:r,i=n.IdToken;return t.call(this,i||"")||this}return $u(e,t),e})(pr);var ut=(function(){function t(r){var n=r===void 0?{}:r,i=n.RefreshToken;this.token=i||"";}var e=t.prototype;return e.getToken=function(){return this.token},t})();var z=rt(ir()),bn=rt(dn());var us="5.0.4";var Ku="aws-amplify/"+us,_n={userAgent:Ku,isReactNative:typeof navigator<"u"&&navigator.product==="ReactNative"},ds=function(){return _n.userAgent};var dt=(function(){function t(r){var n=r===void 0?{}:r,i=n.IdToken,s=n.RefreshToken,o=n.AccessToken,a=n.ClockDrift;if(o==null||i==null)throw new Error("Id token and Access Token must be present.");this.idToken=i,this.refreshToken=s,this.accessToken=o,this.clockDrift=a===void 0?this.calculateClockDrift():a;}var e=t.prototype;return e.getIdToken=function(){return this.idToken},e.getRefreshToken=function(){return this.refreshToken},e.getAccessToken=function(){return this.accessToken},e.getClockDrift=function(){return this.clockDrift},e.calculateClockDrift=function(){var n=Math.floor(new Date/1e3),i=Math.min(this.accessToken.getIssuedAt(),this.idToken.getIssuedAt());return n-i},e.isValid=function(){var n=Math.floor(new Date/1e3),i=n-this.clockDrift;return i<this.accessToken.getExpiration()&&i<this.idToken.getExpiration()},t})();var ju=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Hu=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],gr=(function(){function t(){}var e=t.prototype;return e.getNowString=function(){var n=new Date,i=Hu[n.getUTCDay()],s=ju[n.getUTCMonth()],o=n.getUTCDate(),a=n.getUTCHours();a<10&&(a="0"+a);var l=n.getUTCMinutes();l<10&&(l="0"+l);var c=n.getUTCSeconds();c<10&&(c="0"+c);var u=n.getUTCFullYear(),f=i+" "+s+" "+o+" "+a+":"+l+":"+c+" UTC "+u;return f},t})();var Pe=(function(){function t(r){var n=r===void 0?{}:r,i=n.Name,s=n.Value;this.Name=i||"",this.Value=s||"";}var e=t.prototype;return e.getValue=function(){return this.Value},e.setValue=function(n){return this.Value=n,this},e.getName=function(){return this.Name},e.setName=function(n){return this.Name=n,this},e.toString=function(){return JSON.stringify(this)},e.toJSON=function(){return {Name:this.Name,Value:this.Value}},t})();var Je={},Wu=(function(){function t(){}return t.setItem=function(r,n){return Je[r]=n,Je[r]},t.getItem=function(r){return Object.prototype.hasOwnProperty.call(Je,r)?Je[r]:void 0},t.removeItem=function(r){return delete Je[r]},t.clear=function(){return Je={},Je},t})(),mr=(function(){function t(){try{this.storageWindow=window.localStorage,this.storageWindow.setItem("aws.cognito.test-ls",1),this.storageWindow.removeItem("aws.cognito.test-ls");}catch{this.storageWindow=Wu;}}var e=t.prototype;return e.getStorage=function(){return this.storageWindow},t})();var Gu=typeof navigator<"u",fs=Gu?_n.isReactNative?"react-native":navigator.userAgent:"nodejs",Fe=(function(){function t(r){if(r==null||r.Username==null||r.Pool==null)throw new Error("Username and Pool information are required.");this.username=r.Username||"",this.pool=r.Pool,this.Session=null,this.client=r.Pool.client,this.signInUserSession=null,this.authenticationFlowType="USER_SRP_AUTH",this.storage=r.Storage||new mr().getStorage(),this.keyPrefix="CognitoIdentityServiceProvider."+this.pool.getClientId(),this.userDataKey=this.keyPrefix+"."+this.username+".userData";}var e=t.prototype;return e.setSignInUserSession=function(n){this.clearCachedUserData(),this.signInUserSession=n,this.cacheTokens();},e.getSignInUserSession=function(){return this.signInUserSession},e.getUsername=function(){return this.username},e.getAuthenticationFlowType=function(){return this.authenticationFlowType},e.setAuthenticationFlowType=function(n){this.authenticationFlowType=n;},e.initiateAuth=function(n,i){var s=this,o=n.getAuthParameters();o.USERNAME=this.username;var a=Object.keys(n.getValidationData()).length!==0?n.getValidationData():n.getClientMetadata(),l={AuthFlow:"CUSTOM_AUTH",ClientId:this.pool.getClientId(),AuthParameters:o,ClientMetadata:a};this.getUserContextData()&&(l.UserContextData=this.getUserContextData()),this.client.request("InitiateAuth",l,function(c,u){if(c)return i.onFailure(c);var f=u.ChallengeName,d=u.ChallengeParameters;return f==="CUSTOM_CHALLENGE"?(s.Session=u.Session,i.customChallenge(d)):(s.signInUserSession=s.getCognitoUserSession(u.AuthenticationResult),s.cacheTokens(),i.onSuccess(s.signInUserSession))});},e.authenticateUser=function(n,i){return this.authenticationFlowType==="USER_PASSWORD_AUTH"?this.authenticateUserPlainUsernamePassword(n,i):this.authenticationFlowType==="USER_SRP_AUTH"||this.authenticationFlowType==="CUSTOM_AUTH"?this.authenticateUserDefaultAuth(n,i):i.onFailure(new Error("Authentication flow type is invalid."))},e.authenticateUserDefaultAuth=function(n,i){var s=this,o=new $e(this.pool.getUserPoolName()),a=new gr,l,c,u={};this.deviceKey!=null&&(u.DEVICE_KEY=this.deviceKey),u.USERNAME=this.username,o.getLargeAValue(function(f,d){f&&i.onFailure(f),u.SRP_A=d.toString(16),s.authenticationFlowType==="CUSTOM_AUTH"&&(u.CHALLENGE_NAME="SRP_A");var p=Object.keys(n.getValidationData()).length!==0?n.getValidationData():n.getClientMetadata(),g={AuthFlow:s.authenticationFlowType,ClientId:s.pool.getClientId(),AuthParameters:u,ClientMetadata:p};s.getUserContextData(s.username)&&(g.UserContextData=s.getUserContextData(s.username)),s.client.request("InitiateAuth",g,function(m,y){if(m)return i.onFailure(m);var b=y.ChallengeParameters;s.username=b.USER_ID_FOR_SRP,s.userDataKey=s.keyPrefix+"."+s.username+".userData",l=new W(b.SRP_B,16),c=new W(b.SALT,16),s.getCachedDeviceKeyAndPassword(),o.getPasswordAuthenticationKey(s.username,n.getPassword(),l,c,function(_,A){_&&i.onFailure(_);var S=a.getNowString(),R=z.Buffer.concat([z.Buffer.from(s.pool.getUserPoolName(),"utf8"),z.Buffer.from(s.username,"utf8"),z.Buffer.from(b.SECRET_BLOCK,"base64"),z.Buffer.from(S,"utf8")]),N=new bn.Sha256(A);N.update(R);var F=N.digestSync(),C=z.Buffer.from(F).toString("base64"),x={};x.USERNAME=s.username,x.PASSWORD_CLAIM_SECRET_BLOCK=b.SECRET_BLOCK,x.TIMESTAMP=S,x.PASSWORD_CLAIM_SIGNATURE=C,s.deviceKey!=null&&(x.DEVICE_KEY=s.deviceKey);var O=function(J,ve){return s.client.request("RespondToAuthChallenge",J,function($,ne){return $&&$.code==="ResourceNotFoundException"&&$.message.toLowerCase().indexOf("device")!==-1?(x.DEVICE_KEY=null,s.deviceKey=null,s.randomPassword=null,s.deviceGroupKey=null,s.clearCachedDeviceKeyAndPassword(),O(J,ve)):ve($,ne)})},L={ChallengeName:"PASSWORD_VERIFIER",ClientId:s.pool.getClientId(),ChallengeResponses:x,Session:y.Session,ClientMetadata:p};s.getUserContextData()&&(L.UserContextData=s.getUserContextData()),O(L,function(M,J){return M?i.onFailure(M):s.authenticateUserInternal(J,o,i)});});});});},e.authenticateUserPlainUsernamePassword=function(n,i){var s=this,o={};if(o.USERNAME=this.username,o.PASSWORD=n.getPassword(),!o.PASSWORD){i.onFailure(new Error("PASSWORD parameter is required"));return}var a=new $e(this.pool.getUserPoolName());this.getCachedDeviceKeyAndPassword(),this.deviceKey!=null&&(o.DEVICE_KEY=this.deviceKey);var l=Object.keys(n.getValidationData()).length!==0?n.getValidationData():n.getClientMetadata(),c={AuthFlow:"USER_PASSWORD_AUTH",ClientId:this.pool.getClientId(),AuthParameters:o,ClientMetadata:l};this.getUserContextData(this.username)&&(c.UserContextData=this.getUserContextData(this.username)),this.client.request("InitiateAuth",c,function(u,f){return u?i.onFailure(u):s.authenticateUserInternal(f,a,i)});},e.authenticateUserInternal=function(n,i,s){var o=this,a=n.ChallengeName,l=n.ChallengeParameters;if(a==="SMS_MFA")return this.Session=n.Session,s.mfaRequired(a,l);if(a==="SELECT_MFA_TYPE")return this.Session=n.Session,s.selectMFAType(a,l);if(a==="MFA_SETUP")return this.Session=n.Session,s.mfaSetup(a,l);if(a==="SOFTWARE_TOKEN_MFA")return this.Session=n.Session,s.totpRequired(a,l);if(a==="CUSTOM_CHALLENGE")return this.Session=n.Session,s.customChallenge(l);if(a==="NEW_PASSWORD_REQUIRED"){this.Session=n.Session;var c=null,u=null,f=[],d=i.getNewPasswordRequiredChallengeUserAttributePrefix();if(l&&(c=JSON.parse(n.ChallengeParameters.userAttributes),u=JSON.parse(n.ChallengeParameters.requiredAttributes)),u)for(var p=0;p<u.length;p++)f[p]=u[p].substr(d.length);return s.newPasswordRequired(c,f)}if(a==="DEVICE_SRP_AUTH"){this.Session=n.Session,this.getDeviceResponse(s);return}this.signInUserSession=this.getCognitoUserSession(n.AuthenticationResult),this.challengeName=a,this.cacheTokens();var g=n.AuthenticationResult.NewDeviceMetadata;if(g==null)return s.onSuccess(this.signInUserSession);i.generateHashDevice(n.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey,n.AuthenticationResult.NewDeviceMetadata.DeviceKey,function(m){if(m)return s.onFailure(m);var y={Salt:z.Buffer.from(i.getSaltDevices(),"hex").toString("base64"),PasswordVerifier:z.Buffer.from(i.getVerifierDevices(),"hex").toString("base64")};o.verifierDevices=y.PasswordVerifier,o.deviceGroupKey=g.DeviceGroupKey,o.randomPassword=i.getRandomPassword(),o.client.request("ConfirmDevice",{DeviceKey:g.DeviceKey,AccessToken:o.signInUserSession.getAccessToken().getJwtToken(),DeviceSecretVerifierConfig:y,DeviceName:fs},function(b,_){return b?s.onFailure(b):(o.deviceKey=n.AuthenticationResult.NewDeviceMetadata.DeviceKey,o.cacheDeviceKeyAndPassword(),_.UserConfirmationNecessary===true?s.onSuccess(o.signInUserSession,_.UserConfirmationNecessary):s.onSuccess(o.signInUserSession))});});},e.completeNewPasswordChallenge=function(n,i,s,o){var a=this;if(!n)return s.onFailure(new Error("New password is required."));var l=new $e(this.pool.getUserPoolName()),c=l.getNewPasswordRequiredChallengeUserAttributePrefix(),u={};i&&Object.keys(i).forEach(function(d){u[c+d]=i[d];}),u.NEW_PASSWORD=n,u.USERNAME=this.username;var f={ChallengeName:"NEW_PASSWORD_REQUIRED",ClientId:this.pool.getClientId(),ChallengeResponses:u,Session:this.Session,ClientMetadata:o};this.getUserContextData()&&(f.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",f,function(d,p){return d?s.onFailure(d):a.authenticateUserInternal(p,l,s)});},e.getDeviceResponse=function(n,i){var s=this,o=new $e(this.deviceGroupKey),a=new gr,l={};l.USERNAME=this.username,l.DEVICE_KEY=this.deviceKey,o.getLargeAValue(function(c,u){c&&n.onFailure(c),l.SRP_A=u.toString(16);var f={ChallengeName:"DEVICE_SRP_AUTH",ClientId:s.pool.getClientId(),ChallengeResponses:l,ClientMetadata:i,Session:s.Session};s.getUserContextData()&&(f.UserContextData=s.getUserContextData()),s.client.request("RespondToAuthChallenge",f,function(d,p){if(d)return n.onFailure(d);var g=p.ChallengeParameters,m=new W(g.SRP_B,16),y=new W(g.SALT,16);o.getPasswordAuthenticationKey(s.deviceKey,s.randomPassword,m,y,function(b,_){if(b)return n.onFailure(b);var A=a.getNowString(),S=z.Buffer.concat([z.Buffer.from(s.deviceGroupKey,"utf8"),z.Buffer.from(s.deviceKey,"utf8"),z.Buffer.from(g.SECRET_BLOCK,"base64"),z.Buffer.from(A,"utf8")]),R=new bn.Sha256(_);R.update(S);var N=R.digestSync(),F=z.Buffer.from(N).toString("base64"),C={};C.USERNAME=s.username,C.PASSWORD_CLAIM_SECRET_BLOCK=g.SECRET_BLOCK,C.TIMESTAMP=A,C.PASSWORD_CLAIM_SIGNATURE=F,C.DEVICE_KEY=s.deviceKey;var x={ChallengeName:"DEVICE_PASSWORD_VERIFIER",ClientId:s.pool.getClientId(),ChallengeResponses:C,Session:p.Session};s.getUserContextData()&&(x.UserContextData=s.getUserContextData()),s.client.request("RespondToAuthChallenge",x,function(O,L){return O?n.onFailure(O):(s.signInUserSession=s.getCognitoUserSession(L.AuthenticationResult),s.cacheTokens(),n.onSuccess(s.signInUserSession))});});});});},e.confirmRegistration=function(n,i,s,o){var a={ClientId:this.pool.getClientId(),ConfirmationCode:n,Username:this.username,ForceAliasCreation:i,ClientMetadata:o};this.getUserContextData()&&(a.UserContextData=this.getUserContextData()),this.client.request("ConfirmSignUp",a,function(l){return l?s(l,null):s(null,"SUCCESS")});},e.sendCustomChallengeAnswer=function(n,i,s){var o=this,a={};a.USERNAME=this.username,a.ANSWER=n;var l=new $e(this.pool.getUserPoolName());this.getCachedDeviceKeyAndPassword(),this.deviceKey!=null&&(a.DEVICE_KEY=this.deviceKey);var c={ChallengeName:"CUSTOM_CHALLENGE",ChallengeResponses:a,ClientId:this.pool.getClientId(),Session:this.Session,ClientMetadata:s};this.getUserContextData()&&(c.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",c,function(u,f){return u?i.onFailure(u):o.authenticateUserInternal(f,l,i)});},e.sendMFACode=function(n,i,s,o){var a=this,l={};l.USERNAME=this.username,l.SMS_MFA_CODE=n;var c=s||"SMS_MFA";c==="SOFTWARE_TOKEN_MFA"&&(l.SOFTWARE_TOKEN_MFA_CODE=n),this.deviceKey!=null&&(l.DEVICE_KEY=this.deviceKey);var u={ChallengeName:c,ChallengeResponses:l,ClientId:this.pool.getClientId(),Session:this.Session,ClientMetadata:o};this.getUserContextData()&&(u.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",u,function(f,d){if(f)return i.onFailure(f);var p=d.ChallengeName;if(p==="DEVICE_SRP_AUTH"){a.getDeviceResponse(i);return}if(a.signInUserSession=a.getCognitoUserSession(d.AuthenticationResult),a.cacheTokens(),d.AuthenticationResult.NewDeviceMetadata==null)return i.onSuccess(a.signInUserSession);var g=new $e(a.pool.getUserPoolName());g.generateHashDevice(d.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey,d.AuthenticationResult.NewDeviceMetadata.DeviceKey,function(m){if(m)return i.onFailure(m);var y={Salt:z.Buffer.from(g.getSaltDevices(),"hex").toString("base64"),PasswordVerifier:z.Buffer.from(g.getVerifierDevices(),"hex").toString("base64")};a.verifierDevices=y.PasswordVerifier,a.deviceGroupKey=d.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey,a.randomPassword=g.getRandomPassword(),a.client.request("ConfirmDevice",{DeviceKey:d.AuthenticationResult.NewDeviceMetadata.DeviceKey,AccessToken:a.signInUserSession.getAccessToken().getJwtToken(),DeviceSecretVerifierConfig:y,DeviceName:fs},function(b,_){return b?i.onFailure(b):(a.deviceKey=d.AuthenticationResult.NewDeviceMetadata.DeviceKey,a.cacheDeviceKeyAndPassword(),_.UserConfirmationNecessary===true?i.onSuccess(a.signInUserSession,_.UserConfirmationNecessary):i.onSuccess(a.signInUserSession))});});});},e.changePassword=function(n,i,s,o){if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return s(new Error("User is not authenticated"),null);this.client.request("ChangePassword",{PreviousPassword:n,ProposedPassword:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),ClientMetadata:o},function(a){return a?s(a,null):s(null,"SUCCESS")});},e.enableMFA=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n(new Error("User is not authenticated"),null);var i=[],s={DeliveryMedium:"SMS",AttributeName:"phone_number"};i.push(s),this.client.request("SetUserSettings",{MFAOptions:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?n(o,null):n(null,"SUCCESS")});},e.setUserMfaPreference=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return s(new Error("User is not authenticated"),null);this.client.request("SetUserMFAPreference",{SMSMfaSettings:n,SoftwareTokenMfaSettings:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?s(o,null):s(null,"SUCCESS")});},e.disableMFA=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n(new Error("User is not authenticated"),null);var i=[];this.client.request("SetUserSettings",{MFAOptions:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(s){return s?n(s,null):n(null,"SUCCESS")});},e.deleteUser=function(n,i){var s=this;if(this.signInUserSession==null||!this.signInUserSession.isValid())return n(new Error("User is not authenticated"),null);this.client.request("DeleteUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),ClientMetadata:i},function(o){return o?n(o,null):(s.clearCachedUser(),n(null,"SUCCESS"))});},e.updateAttributes=function(n,i,s){var o=this;if(this.signInUserSession==null||!this.signInUserSession.isValid())return i(new Error("User is not authenticated"),null);this.client.request("UpdateUserAttributes",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),UserAttributes:n,ClientMetadata:s},function(a,l){return a?i(a,null):o.getUserData(function(){return i(null,"SUCCESS",l)},{bypassCache:true})});},e.getUserAttributes=function(n){if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return n(new Error("User is not authenticated"),null);this.client.request("GetUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(i,s){if(i)return n(i,null);for(var o=[],a=0;a<s.UserAttributes.length;a++){var l={Name:s.UserAttributes[a].Name,Value:s.UserAttributes[a].Value},c=new Pe(l);o.push(c);}return n(null,o)});},e.getMFAOptions=function(n){if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return n(new Error("User is not authenticated"),null);this.client.request("GetUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(i,s){return i?n(i,null):n(null,s.MFAOptions)});},e.createGetUserRequest=function(){return this.client.promisifyRequest("GetUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()})},e.refreshSessionIfPossible=function(n){var i=this;return n===void 0&&(n={}),new Promise(function(s){var o=i.signInUserSession.getRefreshToken();o&&o.getToken()?i.refreshSession(o,s,n.clientMetadata):s();})},e.getUserData=function(n,i){var s=this;if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return this.clearCachedUserData(),n(new Error("User is not authenticated"),null);var o=this.getUserDataFromCache();if(!o){this.fetchUserData().then(function(a){n(null,a);}).catch(n);return}if(this.isFetchUserDataAndTokenRequired(i)){this.fetchUserData().then(function(a){return s.refreshSessionIfPossible(i).then(function(){return a})}).then(function(a){return n(null,a)}).catch(n);return}try{n(null,JSON.parse(o));return}catch(a){this.clearCachedUserData(),n(a,null);return}},e.getUserDataFromCache=function(){var n=this.storage.getItem(this.userDataKey);return n},e.isFetchUserDataAndTokenRequired=function(n){var i=n||{},s=i.bypassCache,o=s===void 0?false:s;return o},e.fetchUserData=function(){var n=this;return this.createGetUserRequest().then(function(i){return n.cacheUserData(i),i})},e.deleteAttributes=function(n,i){var s=this;if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return i(new Error("User is not authenticated"),null);this.client.request("DeleteUserAttributes",{UserAttributeNames:n,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?i(o,null):s.getUserData(function(){return i(null,"SUCCESS")},{bypassCache:true})});},e.resendConfirmationCode=function(n,i){var s={ClientId:this.pool.getClientId(),Username:this.username,ClientMetadata:i};this.client.request("ResendConfirmationCode",s,function(o,a){return o?n(o,null):n(null,a)});},e.getSession=function(n,i){if(i===void 0&&(i={}),this.username==null)return n(new Error("Username is null. Cannot retrieve a new session"),null);if(this.signInUserSession!=null&&this.signInUserSession.isValid())return n(null,this.signInUserSession);var s="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,o=s+".idToken",a=s+".accessToken",l=s+".refreshToken",c=s+".clockDrift";if(this.storage.getItem(o)){var u=new lt({IdToken:this.storage.getItem(o)}),f=new ct({AccessToken:this.storage.getItem(a)}),d=new ut({RefreshToken:this.storage.getItem(l)}),p=parseInt(this.storage.getItem(c),0)||0,g={IdToken:u,AccessToken:f,RefreshToken:d,ClockDrift:p},m=new dt(g);if(m.isValid())return this.signInUserSession=m,n(null,this.signInUserSession);if(!d.getToken())return n(new Error("Cannot retrieve a new session. Please authenticate."),null);this.refreshSession(d,n,i.clientMetadata);}else n(new Error("Local storage is missing an ID Token, Please authenticate"),null);},e.refreshSession=function(n,i,s){var o=this,a=this.pool.wrapRefreshSessionCallback?this.pool.wrapRefreshSessionCallback(i):i,l={};l.REFRESH_TOKEN=n.getToken();var c="CognitoIdentityServiceProvider."+this.pool.getClientId(),u=c+".LastAuthUser";if(this.storage.getItem(u)){this.username=this.storage.getItem(u);var f=c+"."+this.username+".deviceKey";this.deviceKey=this.storage.getItem(f),l.DEVICE_KEY=this.deviceKey;}var d={ClientId:this.pool.getClientId(),AuthFlow:"REFRESH_TOKEN_AUTH",AuthParameters:l,ClientMetadata:s};this.getUserContextData()&&(d.UserContextData=this.getUserContextData()),this.client.requestWithRetry("InitiateAuth",d,function(p,g){if(p)return p.code==="NotAuthorizedException"&&o.clearCachedUser(),a(p,null);if(g){var m=g.AuthenticationResult;return Object.prototype.hasOwnProperty.call(m,"RefreshToken")||(m.RefreshToken=n.getToken()),o.signInUserSession=o.getCognitoUserSession(m),o.cacheTokens(),a(null,o.signInUserSession)}});},e.cacheTokens=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId(),i=n+"."+this.username+".idToken",s=n+"."+this.username+".accessToken",o=n+"."+this.username+".refreshToken",a=n+"."+this.username+".clockDrift",l=n+".LastAuthUser";this.storage.setItem(i,this.signInUserSession.getIdToken().getJwtToken()),this.storage.setItem(s,this.signInUserSession.getAccessToken().getJwtToken()),this.storage.setItem(o,this.signInUserSession.getRefreshToken().getToken()),this.storage.setItem(a,""+this.signInUserSession.getClockDrift()),this.storage.setItem(l,this.username);},e.cacheUserData=function(n){this.storage.setItem(this.userDataKey,JSON.stringify(n));},e.clearCachedUserData=function(){this.storage.removeItem(this.userDataKey);},e.clearCachedUser=function(){this.clearCachedTokens(),this.clearCachedUserData();},e.cacheDeviceKeyAndPassword=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,i=n+".deviceKey",s=n+".randomPasswordKey",o=n+".deviceGroupKey";this.storage.setItem(i,this.deviceKey),this.storage.setItem(s,this.randomPassword),this.storage.setItem(o,this.deviceGroupKey);},e.getCachedDeviceKeyAndPassword=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,i=n+".deviceKey",s=n+".randomPasswordKey",o=n+".deviceGroupKey";this.storage.getItem(i)&&(this.deviceKey=this.storage.getItem(i),this.randomPassword=this.storage.getItem(s),this.deviceGroupKey=this.storage.getItem(o));},e.clearCachedDeviceKeyAndPassword=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,i=n+".deviceKey",s=n+".randomPasswordKey",o=n+".deviceGroupKey";this.storage.removeItem(i),this.storage.removeItem(s),this.storage.removeItem(o);},e.clearCachedTokens=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId(),i=n+"."+this.username+".idToken",s=n+"."+this.username+".accessToken",o=n+"."+this.username+".refreshToken",a=n+".LastAuthUser",l=n+"."+this.username+".clockDrift";this.storage.removeItem(i),this.storage.removeItem(s),this.storage.removeItem(o),this.storage.removeItem(a),this.storage.removeItem(l);},e.getCognitoUserSession=function(n){var i=new lt(n),s=new ct(n),o=new ut(n),a={IdToken:i,AccessToken:s,RefreshToken:o};return new dt(a)},e.forgotPassword=function(n,i){var s={ClientId:this.pool.getClientId(),Username:this.username,ClientMetadata:i};this.getUserContextData()&&(s.UserContextData=this.getUserContextData()),this.client.request("ForgotPassword",s,function(o,a){return o?n.onFailure(o):typeof n.inputVerificationCode=="function"?n.inputVerificationCode(a):n.onSuccess(a)});},e.confirmPassword=function(n,i,s,o){var a={ClientId:this.pool.getClientId(),Username:this.username,ConfirmationCode:n,Password:i,ClientMetadata:o};this.getUserContextData()&&(a.UserContextData=this.getUserContextData()),this.client.request("ConfirmForgotPassword",a,function(l){return l?s.onFailure(l):s.onSuccess("SUCCESS")});},e.getAttributeVerificationCode=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return i.onFailure(new Error("User is not authenticated"));this.client.request("GetUserAttributeVerificationCode",{AttributeName:n,AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),ClientMetadata:s},function(o,a){return o?i.onFailure(o):typeof i.inputVerificationCode=="function"?i.inputVerificationCode(a):i.onSuccess("SUCCESS")});},e.verifyAttribute=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return s.onFailure(new Error("User is not authenticated"));this.client.request("VerifyUserAttribute",{AttributeName:n,Code:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?s.onFailure(o):s.onSuccess("SUCCESS")});},e.getDevice=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("GetDevice",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:this.deviceKey},function(i,s){return i?n.onFailure(i):n.onSuccess(s)});},e.forgetSpecificDevice=function(n,i){if(this.signInUserSession==null||!this.signInUserSession.isValid())return i.onFailure(new Error("User is not authenticated"));this.client.request("ForgetDevice",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:n},function(s){return s?i.onFailure(s):i.onSuccess("SUCCESS")});},e.forgetDevice=function(n){var i=this;this.forgetSpecificDevice(this.deviceKey,{onFailure:n.onFailure,onSuccess:function(o){return i.deviceKey=null,i.deviceGroupKey=null,i.randomPassword=null,i.clearCachedDeviceKeyAndPassword(),n.onSuccess(o)}});},e.setDeviceStatusRemembered=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("UpdateDeviceStatus",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:this.deviceKey,DeviceRememberedStatus:"remembered"},function(i){return i?n.onFailure(i):n.onSuccess("SUCCESS")});},e.setDeviceStatusNotRemembered=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("UpdateDeviceStatus",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:this.deviceKey,DeviceRememberedStatus:"not_remembered"},function(i){return i?n.onFailure(i):n.onSuccess("SUCCESS")});},e.listDevices=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return s.onFailure(new Error("User is not authenticated"));var o={AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),Limit:n};i&&(o.PaginationToken=i),this.client.request("ListDevices",o,function(a,l){return a?s.onFailure(a):s.onSuccess(l)});},e.globalSignOut=function(n){var i=this;if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("GlobalSignOut",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(s){return s?n.onFailure(s):(i.clearCachedUser(),n.onSuccess("SUCCESS"))});},e.signOut=function(n){var i=this;if(!n||typeof n!="function"){this.cleanClientData();return}this.getSession(function(s,o){if(s)return n(s);i.revokeTokens(function(a){i.cleanClientData(),n(a);});});},e.revokeTokens=function(n){if(n===void 0&&(n=function(){}),typeof n!="function")throw new Error("Invalid revokeTokenCallback. It should be a function.");if(!this.signInUserSession){var s=new Error("User is not authenticated");return n(s)}if(!this.signInUserSession.getAccessToken()){var o=new Error("No Access token available");return n(o)}var a=this.signInUserSession.getRefreshToken().getToken(),l=this.signInUserSession.getAccessToken();if(this.isSessionRevocable(l)&&a)return this.revokeToken({token:a,callback:n});n();},e.isSessionRevocable=function(n){if(n&&typeof n.decodePayload=="function")try{var i=n.decodePayload(),s=i.origin_jti;return !!s}catch{}return false},e.cleanClientData=function(){this.signInUserSession=null,this.clearCachedUser();},e.revokeToken=function(n){var i=n.token,s=n.callback;this.client.requestWithRetry("RevokeToken",{Token:i,ClientId:this.pool.getClientId()},function(o){if(o)return s(o);s();});},e.sendMFASelectionAnswer=function(n,i){var s=this,o={};o.USERNAME=this.username,o.ANSWER=n;var a={ChallengeName:"SELECT_MFA_TYPE",ChallengeResponses:o,ClientId:this.pool.getClientId(),Session:this.Session};this.getUserContextData()&&(a.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",a,function(l,c){if(l)return i.onFailure(l);if(s.Session=c.Session,n==="SMS_MFA")return i.mfaRequired(c.ChallengeName,c.ChallengeParameters);if(n==="SOFTWARE_TOKEN_MFA")return i.totpRequired(c.ChallengeName,c.ChallengeParameters)});},e.getUserContextData=function(){var n=this.pool;return n.getUserContextData(this.username)},e.associateSoftwareToken=function(n){var i=this;this.signInUserSession!=null&&this.signInUserSession.isValid()?this.client.request("AssociateSoftwareToken",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(s,o){return s?n.onFailure(s):n.associateSecretCode(o.SecretCode)}):this.client.request("AssociateSoftwareToken",{Session:this.Session},function(s,o){return s?n.onFailure(s):(i.Session=o.Session,n.associateSecretCode(o.SecretCode))});},e.verifySoftwareToken=function(n,i,s){var o=this;this.signInUserSession!=null&&this.signInUserSession.isValid()?this.client.request("VerifySoftwareToken",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),UserCode:n,FriendlyDeviceName:i},function(a,l){return a?s.onFailure(a):s.onSuccess(l)}):this.client.request("VerifySoftwareToken",{Session:this.Session,UserCode:n,FriendlyDeviceName:i},function(a,l){if(a)return s.onFailure(a);o.Session=l.Session;var c={};c.USERNAME=o.username;var u={ChallengeName:"MFA_SETUP",ClientId:o.pool.getClientId(),ChallengeResponses:c,Session:o.Session};o.getUserContextData()&&(u.UserContextData=o.getUserContextData()),o.client.request("RespondToAuthChallenge",u,function(f,d){return f?s.onFailure(f):(o.signInUserSession=o.getCognitoUserSession(d.AuthenticationResult),o.cacheTokens(),s.onSuccess(o.signInUserSession))});});},t})();rt(ps());function ft(){}ft.prototype.userAgent=ds();var gs=function(e){var r=ft.category?" "+ft.category:"",n=ft.framework?" framework/"+ft.framework:"",i=""+ft.prototype.userAgent+r+n;return i};function Yu(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,Rt(t,e);}function An(t){var e=typeof Map=="function"?new Map:void 0;return An=function(n){if(n===null||!Qu(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(e!==void 0){if(e.has(n))return e.get(n);e.set(n,i);}function i(){return zu(n,arguments,Sn(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:false,writable:true,configurable:true}}),Rt(i,n)},An(t)}function zu(t,e,r){if(ms())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var i=new(t.bind.apply(t,n));return r&&Rt(i,r.prototype),i}function ms(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch{}return (ms=function(){return !!t})()}function Qu(t){try{return Function.toString.call(t).indexOf("[native code]")!==-1}catch{return typeof t=="function"}}function Rt(t,e){return Rt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Rt(t,e)}function Sn(t){return Sn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Sn(t)}var Xu=(function(t){function e(r,n,i,s){var o;return o=t.call(this,r)||this,o.code=n,o.name=i,o.statusCode=s,o}return Yu(e,t),e})(An(Error)),ys=(function(){function t(r,n,i){this.endpoint=n||"https://cognito-idp."+r+".amazonaws.com/";var s=i||{},o=s.credentials;this.fetchOptions=o?{credentials:o}:{};}var e=t.prototype;return e.promisifyRequest=function(n,i){var s=this;return new Promise(function(o,a){s.request(n,i,function(l,c){l?a(new Xu(l.message,l.code,l.name,l.statusCode)):o(c);});})},e.requestWithRetry=function(n,i,s){var o=this,a=5*1e3;rd(function(l){return new Promise(function(c,u){o.request(n,l,function(f,d){f?u(f):c(d);});})},[i],a).then(function(l){return s(null,l)}).catch(function(l){return s(l)});},e.request=function(n,i,s){var o={"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityProviderService."+n,"X-Amz-User-Agent":gs(),"Cache-Control":"no-store"},a=Object.assign({},this.fetchOptions,{headers:o,method:"POST",mode:"cors",body:JSON.stringify(i)}),l;fetch(this.endpoint,a).then(function(u){return l=u,u},function(u){throw u instanceof TypeError?new Error("Network error"):u}).then(function(u){return u.json().catch(function(){return {}})}).then(function(u){if(l.ok)return s(null,u);var f=(u.__type||u.code).split("#").pop(),d=new Error(u.message||u.Message||null);return d.name=f,d.code=f,s(d)}).catch(function(u){if(l&&l.headers&&l.headers.get("x-amzn-errortype"))try{var f=l.headers.get("x-amzn-errortype").split(":")[0],d=new Error(l.status?l.status.toString():null);return d.code=f,d.name=f,d.statusCode=l.status,s(d)}catch{return s(u)}else u instanceof Error&&u.message==="Network error"&&(u.code="NetworkError");return s(u)});},t})();var yr={debug:function(){}};var Zu=function(e){var r="nonRetryable";return e&&e[r]};function _s(t,e,r,n){if(n===void 0&&(n=1),typeof t!="function")throw Error("functionToRetry must be a function");return yr.debug(t.name+" attempt #"+n+" with args: "+JSON.stringify(e)),t.apply(void 0,e).catch(function(i){if(yr.debug("error on "+t.name,i),Zu(i))throw yr.debug(t.name+" non retryable error",i),i;var s=r(n,e,i);if(yr.debug(t.name+" retrying in "+s+" ms"),s!==false)return new Promise(function(o){return setTimeout(o,s)}).then(function(){return _s(t,e,r,n+1)});throw i})}function ed(t){var e=100,r=100;return function(n){var i=Math.pow(2,n)*e+r*Math.random();return i>t?false:i}}function rd(t,e,r){return _s(t,e,ed(r))}var nd=55,vn=(function(){function t(r,n){var i=r||{},s=i.UserPoolId,o=i.ClientId,a=i.endpoint,l=i.fetchOptions,c=i.AdvancedSecurityDataCollectionFlag;if(!s||!o)throw new Error("Both UserPoolId and ClientId are required.");if(s.length>nd||!/^[\w-]+_[0-9a-zA-Z]+$/.test(s))throw new Error("Invalid UserPoolId format.");var u=s.split("_")[0];this.userPoolId=s,this.clientId=o,this.client=new ys(u,a,l),this.advancedSecurityDataCollectionFlag=c!==false,this.storage=r.Storage||new mr().getStorage(),n&&(this.wrapRefreshSessionCallback=n);}var e=t.prototype;return e.getUserPoolId=function(){return this.userPoolId},e.getUserPoolName=function(){return this.getUserPoolId().split("_")[1]},e.getClientId=function(){return this.clientId},e.signUp=function(n,i,s,o,a,l){var c=this,u={ClientId:this.clientId,Username:n,Password:i,UserAttributes:s,ValidationData:o,ClientMetadata:l};this.getUserContextData(n)&&(u.UserContextData=this.getUserContextData(n)),this.client.request("SignUp",u,function(f,d){if(f)return a(f,null);var p={Username:n,Pool:c,Storage:c.storage},g={user:new Fe(p),userConfirmed:d.UserConfirmed,userSub:d.UserSub,codeDeliveryDetails:d.CodeDeliveryDetails};return a(null,g)});},e.getCurrentUser=function(){var n="CognitoIdentityServiceProvider."+this.clientId+".LastAuthUser",i=this.storage.getItem(n);if(i){var s={Username:i,Pool:this,Storage:this.storage};return new Fe(s)}return null},e.getUserContextData=function(n){if(!(typeof AmazonCognitoAdvancedSecurityData>"u")){var i=AmazonCognitoAdvancedSecurityData;if(this.advancedSecurityDataCollectionFlag){var s=i.getData(n,this.userPoolId,this.clientId);if(s){var o={EncodedData:s};return o}}return {}}},t})();function _r(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)n!=="__proto__"&&(t[n]=r[n]);}return t}var id={read:function(t){return t[0]==='"'&&(t=t.slice(1,-1)),t.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(t){return encodeURIComponent(t).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function Rn(t,e){function r(i,s,o){if(!(typeof document>"u")){o=_r({},e,o),typeof o.expires=="number"&&(o.expires=new Date(Date.now()+o.expires*864e5)),o.expires&&(o.expires=o.expires.toUTCString()),i=encodeURIComponent(i).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var a="";for(var l in o)o[l]&&(a+="; "+l,o[l]!==true&&(a+="="+o[l].split(";")[0]));return document.cookie=i+"="+t.write(s,i)+a}}function n(i){if(!(typeof document>"u"||arguments.length&&!i)){for(var s=document.cookie?document.cookie.split("; "):[],o={},a=0;a<s.length;a++){var l=s[a].split("="),c=l.slice(1).join("=");try{var u=decodeURIComponent(l[0]);if(u in o||(o[u]=t.read(c,u)),i===u)break}catch{}}return i?o[i]:o}}return Object.create({set:r,get:n,remove:function(i,s){r(i,"",_r({},s,{expires:-1}));},withAttributes:function(i){return Rn(this.converter,_r({},this.attributes,i))},withConverter:function(i){return Rn(_r({},this.converter,i),this.attributes)}},{attributes:{value:Object.freeze(e)},converter:{value:Object.freeze(t)}})}Rn(id,{path:"/"});var h=class extends Error{constructor(e,r){if(Array.isArray(e)&&e.length<=2){let n=e[1];if(e.length>2)for(let i=2;i<e.length&&typeof e[i]=="string";i++)n+=e[i];super((n||"Something went wrong.").trim()),this.name=r?.name||"SKAPI",this.code=r?.code||e[0]||"ERROR",r?.cause&&(this.cause=r.cause);}else super((e?.message||(typeof e=="string"?e:"Something went wrong.")).trim()),typeof e=="string"?(this.name=r?.name||"SKAPI",this.code=r?.code||"ERROR",r?.cause&&(this.cause=r.cause)):e instanceof Error?(this.cause=e,this.name=e.name,e.hasOwnProperty("code")&&(this.code=e.code)):typeof e=="object"&&e?.code&&e?.message&&(this.name=r?.name||"SKAPI",this.code=r?.code||"ERROR",this.cause=e?.cause);}};var Le="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tn=BigInt(Le.length),od=2*1024*1024,ad=["aud","cognito:username","event_id","exp","iat","iss","jti","origin_jti","secret_key","token_use"],bs={auth_time:"log",sub:"user_id"},cd=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l"],vs=["us31","us72","ap51","ap22","ap41","eu71","ap21","us32","us71","af51","ap31","ap43","ap23","ap42","ca01","eu01","eu72","eu51","eu73","eu11","me51","sa31"],ws=typeof TextEncoder<"u"?new TextEncoder:null;function ld(){if(typeof globalThis<"u")return globalThis.Buffer}function G(t){if(ws)return ws.encode(t);let e=unescape(encodeURIComponent(t)),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function In(t){if(t instanceof Uint8Array)return t;if(typeof t=="string")return G(t);if(typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof ArrayBuffer<"u"&&ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(Array.isArray(t))return Uint8Array.from(t);let e=ld();if(e)return new Uint8Array(e.from(t));throw new Error("No byte conversion available in this environment.")}var v=class v{static hash(e){typeof e!="string"&&(console.warn("coercing non-string value to empty string"),e="");let r=v.sb(e),n=1732584193,i=-271733879,s=-1732584194,o=271733878,a,l,c,u;for(let f=0;f<r.length;f+=16)a=n,l=i,c=s,u=o,n=v.ff(n,i,s,o,r[f],7,-680876936),o=v.ff(o,n,i,s,r[f+1],12,-389564586),s=v.ff(s,o,n,i,r[f+2],17,606105819),i=v.ff(i,s,o,n,r[f+3],22,-1044525330),n=v.ff(n,i,s,o,r[f+4],7,-176418897),o=v.ff(o,n,i,s,r[f+5],12,1200080426),s=v.ff(s,o,n,i,r[f+6],17,-1473231341),i=v.ff(i,s,o,n,r[f+7],22,-45705983),n=v.ff(n,i,s,o,r[f+8],7,1770035416),o=v.ff(o,n,i,s,r[f+9],12,-1958414417),s=v.ff(s,o,n,i,r[f+10],17,-42063),i=v.ff(i,s,o,n,r[f+11],22,-1990404162),n=v.ff(n,i,s,o,r[f+12],7,1804603682),o=v.ff(o,n,i,s,r[f+13],12,-40341101),s=v.ff(s,o,n,i,r[f+14],17,-1502002290),i=v.ff(i,s,o,n,r[f+15],22,1236535329),n=v.gg(n,i,s,o,r[f+1],5,-165796510),o=v.gg(o,n,i,s,r[f+6],9,-1069501632),s=v.gg(s,o,n,i,r[f+11],14,643717713),i=v.gg(i,s,o,n,r[f],20,-373897302),n=v.gg(n,i,s,o,r[f+5],5,-701558691),o=v.gg(o,n,i,s,r[f+10],9,38016083),s=v.gg(s,o,n,i,r[f+15],14,-660478335),i=v.gg(i,s,o,n,r[f+4],20,-405537848),n=v.gg(n,i,s,o,r[f+9],5,568446438),o=v.gg(o,n,i,s,r[f+14],9,-1019803690),s=v.gg(s,o,n,i,r[f+3],14,-187363961),i=v.gg(i,s,o,n,r[f+8],20,1163531501),n=v.gg(n,i,s,o,r[f+13],5,-1444681467),o=v.gg(o,n,i,s,r[f+2],9,-51403784),s=v.gg(s,o,n,i,r[f+7],14,1735328473),i=v.gg(i,s,o,n,r[f+12],20,-1926607734),n=v.hh(n,i,s,o,r[f+5],4,-378558),o=v.hh(o,n,i,s,r[f+8],11,-2022574463),s=v.hh(s,o,n,i,r[f+11],16,1839030562),i=v.hh(i,s,o,n,r[f+14],23,-35309556),n=v.hh(n,i,s,o,r[f+1],4,-1530992060),o=v.hh(o,n,i,s,r[f+4],11,1272893353),s=v.hh(s,o,n,i,r[f+7],16,-155497632),i=v.hh(i,s,o,n,r[f+10],23,-1094730640),n=v.hh(n,i,s,o,r[f+13],4,681279174),o=v.hh(o,n,i,s,r[f],11,-358537222),s=v.hh(s,o,n,i,r[f+3],16,-722521979),i=v.hh(i,s,o,n,r[f+6],23,76029189),n=v.hh(n,i,s,o,r[f+9],4,-640364487),o=v.hh(o,n,i,s,r[f+12],11,-421815835),s=v.hh(s,o,n,i,r[f+15],16,530742520),i=v.hh(i,s,o,n,r[f+2],23,-995338651),n=v.ii(n,i,s,o,r[f],6,-198630844),o=v.ii(o,n,i,s,r[f+7],10,1126891415),s=v.ii(s,o,n,i,r[f+14],15,-1416354905),i=v.ii(i,s,o,n,r[f+5],21,-57434055),n=v.ii(n,i,s,o,r[f+12],6,1700485571),o=v.ii(o,n,i,s,r[f+3],10,-1894986606),s=v.ii(s,o,n,i,r[f+10],15,-1051523),i=v.ii(i,s,o,n,r[f+1],21,-2054922799),n=v.ii(n,i,s,o,r[f+8],6,1873313359),o=v.ii(o,n,i,s,r[f+15],10,-30611744),s=v.ii(s,o,n,i,r[f+6],15,-1560198380),i=v.ii(i,s,o,n,r[f+13],21,1309151649),n=v.ii(n,i,s,o,r[f+4],6,-145523070),o=v.ii(o,n,i,s,r[f+11],10,-1120210379),s=v.ii(s,o,n,i,r[f+2],15,718787259),i=v.ii(i,s,o,n,r[f+9],21,-343485551),n=v.ad(n,a),i=v.ad(i,l),s=v.ad(s,c),o=v.ad(o,u);return v.rh(n)+v.rh(i)+v.rh(s)+v.rh(o)}static rh(e){let r="";for(let n=0;n<=3;n++)r+=v.alphabet.charAt(e>>n*8+4&15)+v.alphabet.charAt(e>>n*8&15);return r}static ad(e,r){let n=(e&65535)+(r&65535);return (e>>16)+(r>>16)+(n>>16)<<16|n&65535}static rl(e,r){return e<<r|e>>>32-r}static cm(e,r,n,i,s,o){return v.ad(v.rl(v.ad(v.ad(r,e),v.ad(i,o)),s),n)}static ff(e,r,n,i,s,o,a){return v.cm(r&n|~r&i,e,r,s,o,a)}static gg(e,r,n,i,s,o,a){return v.cm(r&i|n&~i,e,r,s,o,a)}static hh(e,r,n,i,s,o,a){return v.cm(r^n^i,e,r,s,o,a)}static ii(e,r,n,i,s,o,a){return v.cm(n^(r|~i),e,r,s,o,a)}static sb(e){let r,n=(e.length+8>>6)+1,i=new Array(n*16);for(r=0;r<n*16;r++)i[r]=0;for(r=0;r<e.length;r++)i[r>>2]|=e.charCodeAt(r)<<r%4*8;return i[r>>2]|=128<<r%4*8,i[n*16-2]=e.length*8,i}};v.alphabet="0123456789abcdef";var X=v;function Rs(t){if(t===0)return Le[0];let e="";for(;t>0;)e=Le[t%62]+e,t=Math.floor(t/62);return e}function me(t){return t.split("").reverse().reduce((e,r,n)=>e+Le.indexOf(r)*62**n,0)}function Ye(t=6){let e="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=r.length,i=0;for(;i<t;)e+=r.charAt(Math.floor(Math.random()*n)),i+=1;return e}function Pn(){return typeof window>"u"||!!window?._runningInNodeJS}function oe(){return !Pn()&&typeof document<"u"&&typeof document.createElement=="function"}function br(t){let e;try{e=JSON.stringify(t);}catch{throw new h("Invalid data type.",{code:"INVALID_REQUEST"})}if(new Blob([e]).size>od)throw new h("Data should not exceed 2MB",{code:"INVALID_REQUEST"})}function Es(t){return t===""||t==="on"||t==="true"}function As(t){return t==="false"}function Ss(t,e,r){e.name&&r(t,e.name,e.value);}var wr=oe(),ud=typeof SubmitEvent<"u",dd=typeof HTMLFormElement<"u";function j(t,e,r){let n={},i=[];function s(l,c,u){if(e?.ignoreEmpty&&u==="")return;if(e?.nullIfEmpty&&u===""&&(u=null),typeof r=="function"){let p=r(c,u);p!==void 0&&(u=p);}let f=c.split("[").map(p=>{let g=p.replace("]",""),m=Number(g);return !isNaN(m)&&!g.includes(".")?g=m:(g[0]==='"'&&g[g.length-1]==='"'||g[0]==="'"&&g[g.length-1]==="'")&&(g=g.replace(/"/g,"").replace(/'/g,"")),g}),d=l;if(typeof f[0]=="number")throw new h("Form key cannot start with an array index.",{code:"INVALID_REQUEST"});for(let p=0;p<f.length;p++){let g=f[p];p<f.length-1?(d[g]===void 0&&(typeof f[p+1]=="number"?d[g]=[]:d[g]={}),d=d[g]):d[g]===void 0?d[g]=u:Array.isArray(d[g])?d[g].push(u):d[g]=[d[g],u];}}function o(l,c,u){if(u instanceof File)l.push({name:c,file:u});else if(u instanceof FileList&&u&&u.length>0)for(let f=0;f<=u.length-1;f++){let d=u.item(f);d&&l.push({name:c,file:d});}}let a=l=>{l.name&&(l.type==="number"?l.value&&s(n,l.name,Number(l.value)):l.type==="checkbox"||l.type==="radio"?l.checked?l.type==="checkbox"&&l.value===""||Es(l.value)?s(n,l.name,true):As(l.value)?s(n,l.name,false):l.value&&s(n,l.name,l.value):l.type==="checkbox"&&(Es(l.value)?s(n,l.name,false):As(l.value)&&s(n,l.name,true)):l.type==="file"?l.files&&l.files.length>0&&o(i,l.name,l.files):s(n,l.name,l.value));};if(wr&&(t instanceof HTMLInputElement||t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement))return a(t),br(n),{data:n,files:i};if(wr&&t instanceof FormData){for(let l of t.entries()){let c=l[0],u=l[1];if(u instanceof File||u instanceof FileList)o(i,c,u);else if(u instanceof Blob){let f=u;if(f.type==="application/json")try{let d=JSON.parse(f.text());s(n,c,d);}catch{s(n,c,f);}}else s(n,c,u);}return br(n),{data:n,files:i}}if(wr&&ud&&t instanceof SubmitEvent&&(t=t.target),wr&&dd&&t instanceof HTMLFormElement){let l=t.querySelectorAll("input"),c=t.querySelectorAll("select"),u=t.querySelectorAll("textarea");for(let f=0;f<c.length;f++)Ss(n,c[f],s);for(let f=0;f<u.length;f++)Ss(n,u[f],s);for(let f=0;f<l.length;f++)a(l[f]);return br(n),{data:n,files:i}}return br(t),{data:t,files:i}}function Tt(t){let e={};for(let r in t){let n=t[r];if(!ad.includes(r))if(bs[r])e[bs[r]]=n;else if(r.includes("custom:"))e[r.replace("custom:","")]=n;else if(r==="address"){let i=n;if(i&&typeof i=="object"&&Object.keys(i).length){if(i?.formatted)try{e[r]=JSON.parse(i.formatted);}catch{e[r]=i.formatted;}}else e[r]=i;}else e[r]=n;}for(let r of ["address_public","birthdate_public","email_public","gender_public","phone_number_public","access_group"])r.includes("_public")?e.hasOwnProperty(r.split("_")[0])?e[r]=e.hasOwnProperty(r)?!!Number(e[r]):false:delete e[r]:e[r]=e.hasOwnProperty(r)?Number(e[r]):0;for(let r of ["email","phone_number"])e.hasOwnProperty(r)?e[r+"_verified"]=e[r+"_verified"]===true:delete e[r+"_verified"];return e}function Un(t){if(t=bd(t),t.split("-").length===7){let e=t.split("-"),r,n;try{r=vs[me(e[1][0])],n=e.slice(2).join("-");}catch{throw new Error("INVALID_PARAMETER: Service ID is invalid: "+t)}if(!r)throw new Error("INVALID_PARAMETER: Service ID is invalid: "+t);return {service:r+e[0]+e[1].slice(1),owner:n}}return {service:t,owner:""}}function xn(t,e){let r=vs.indexOf(t.slice(0,4)),n=cd[r],s=`${t.slice(4,-4)}-${n}${t.slice(-4)}-${e}`;return _d(s)}function fd(t){let e=0n;for(let r of t){let n=Le.indexOf(r);if(n<0)throw new Error(`INVALID_PARAMETER: Invalid base62 character: ${r}`);e=e*Tn+BigInt(n);}return e}function hd(t,e=1){if(t<0n)throw new Error("INVALID_PARAMETER: Negative values are not supported.");if(t===0n)return "0".repeat(Math.max(1,e));let r="",n=t;for(;n>0n;){let i=Number(n%Tn);r=Le[i]+r,n/=Tn;}return r.length<e&&(r="0".repeat(e-r.length)+r),r}function pd(t){if(t===0n)return Uint8Array.from([0]);let e=[],r=t;for(;r>0n;)e.push(Number(r&0xffn)),r>>=8n;return e.reverse(),Uint8Array.from(e)}function gd(t){let e=0n;for(let r of t)e=(e<<8n)+BigInt(r);return e}function md(t){let e=String(t).replace(/-/g,"");if(!/^[0-9a-fA-F]{32}$/.test(e))throw new Error("INVALID_PARAMETER: Invalid UUID format.");let r=new Uint8Array(16);for(let n=0;n<16;n++)r[n]=parseInt(e.slice(n*2,n*2+2),16);return r}function yd(t){let e=Array.from(In(t),r=>r.toString(16).padStart(2,"0")).join("");return [e.slice(0,8),e.slice(8,12),e.slice(12,16),e.slice(16,20),e.slice(20)].join("-")}function _d(t){let e=String(t);if(e.split("-").length===2)return e;let r=e.match(/^([0-9A-Za-z]+)-([0-9A-Za-z]+)-([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/);if(!r)throw new Error("INVALID_PARAMETER: Input must match <base62>-<base62>-<uuid>.");let[,n,i,s]=r;if(n.length<2)throw new Error("INVALID_PARAMETER: The first part must contain at least 2 characters.");if(i.length>=Le.length)throw new Error("INVALID_PARAMETER: The middle section is too long to encode.");let o=n.slice(0,2),a=n.slice(2),l=i+o,c=Le[i.length]+a+l,u=md(s),f=hd(gd(u));return `${c}-${f}`}function bd(t){let e=String(t);if(e.split("-").length!==2)return e;let r=e.split("-");if(r.length!==2||!r[0]||!r[1])throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let[n,i]=r,s=Le.indexOf(n[0]);if(s<0)throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let o=n.slice(1),a=s+2;if(o.length<a)throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let l=o.slice(0,o.length-a),c=o.slice(o.length-a),u=c.slice(s),f=c.slice(0,s),d=u+l;if(!/^[0-9A-Za-z]+$/.test(d)||!/^[0-9A-Za-z]+$/.test(f))throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let p=fd(i),g=pd(p);if(g.length>16)throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let m=new Uint8Array(16);m.set(g,16-g.length);let y=yd(m);return `${d}-${f}-${y}`}function It(t){if(typeof TextDecoder<"u")return new TextDecoder().decode(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return decodeURIComponent(escape(e))}function Cn(...t){let e=0;for(let i of t)e+=i.length;let r=new Uint8Array(e),n=0;for(let i of t)r.set(i,n),n+=i.length;return r}function Pt(t,e,r=[],n=null){let i=["string","number","boolean","object","array","function","null","undefined"];function s(g){return g!==null&&typeof g=="object"&&!Array.isArray(g)}function o(g){return s(g)}function a(g){return Array.isArray(g)}function l(g){return typeof g=="string"&&i.indexOf(g)!==-1}function c(g){return Array.isArray(g)?"array":g===null?"null":typeof g}function u(g){try{return JSON.stringify(g)}catch{return String(g)}}function f(g){if(l(g))return `Type<${g}>`;if(typeof g=="function")return "custom validator";try{return JSON.stringify(g,(m,y)=>typeof y=="function"?"custom validator":y)}catch{return String(g)}}function d(g,m){return m==="array"?Array.isArray(g):m==="object"?s(g):m==="null"?g===null:m==="undefined"?typeof g>"u":typeof g===m}function p(g){return n===null?g:`${n}[${g}]`}if(typeof e>"u")throw new Error('Argument "struct" is required.');if(typeof e=="function")return e(t);if(o(e)){if(!s(t))throw new Error(`Data schema does not match:
207
- `+JSON.stringify(t,null,2));for(let g of Object.keys(e)){let m=p(g);if(Object.prototype.hasOwnProperty.call(t,g))t[g]=Pt(t[g],e[g],r,m);else {if(r.indexOf(m)!==-1)throw new Error(`Key "${m}" is required.`);let y=e[g];a(y)&&y.length>1&&typeof y[y.length-1]=="function"&&(t[g]=y[y.length-1]());}}return t}if(a(e)){let g=false;if(e.length===1&&!a(e[0])&&!o(e[0])){let m=e[0];if(!Array.isArray(t))throw new Error(`Type <${c(t)}> is invalid in "${n}". Expected a list.`);for(let y=0;y<t.length;y++){let b=t[y];if(l(m)){if(!d(b,m))throw new Error(`Type <${c(b)}> is invalid in "${n}". Expected a list of Type <${m}>.`)}else if(typeof m=="function")t[y]=m(b);else if(b!==m)throw new Error(`Value ${u(b)} is invalid in "${n}". Expected a list of ${u(m)}.`)}g=true;}else if(Array.isArray(t)&&e.every(y=>!a(y)&&y!=="array")){for(let y=0;y<t.length;y++){let b=false,_="";for(let A of e)try{t[y]=Pt(t[y],A,r,n),b=!0;break}catch(S){typeof A=="function"&&(_=S?.message||String(S));}if(!b&&_)throw new Error(_);if(!b){let A=e.map(f).join(", ");throw new Error(`${u(t[y])} is invalid in "${n}". allowed types or values are: ${A}.`)}}g=true;}else {let y="";for(let b of e)try{t=Pt(t,b,r,n),g=!0;break}catch(_){typeof b=="function"&&(y=_?.message||String(_));}if(!g&&y)throw new Error(y)}if(!g){let m=e.map(f).join(", ");throw new Error(`${u(t)} is invalid in "${n}". allowed types or values are: ${m}.`)}return t}if(l(e)&&d(t,e)||t===e)return t;throw new Error(`${u(t)} is invalid in "${n}". allowed type or value is: ${f(e)}.`)}function wd(t,e="User ID"){let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;if(t){if(typeof t!="string")throw new h(`${e} should be type: string.`,{code:"INVALID_PARAMETER"});if(!t.match(r))throw new h(`${e} is invalid.`,{code:"INVALID_PARAMETER"})}else throw new h(`${e} is empty.`,{code:"INVALID_PARAMETER"});return t}function Ed(t){if(t&&(typeof t!="string"||t.charAt(0)!=="+"||isNaN(Number(t.substring(1)))))throw new h('"phone_number" is invalid. The format should be "+00123456789". Type: string.',{code:"INVALID_PARAMETER"});return t||""}function Ad(t){if(t){if(typeof t!="string")throw new h('"birthdate" is invalid. The format should be "yyyy-mm-dd". Type: string.',{code:"INVALID_PARAMETER"});{let e=new RegExp(/([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/);if(t.length!==10||t.split("-").length!==3||!e.test(t))throw new h('"birthdate" is invalid. The format should be "yyyy-mm-dd". Type: string.',{code:"INVALID_PARAMETER"})}}return t||""}function Sd(t){if(t){if(typeof t!="string")throw new h('"password" should be type: string.',{code:"INVALID_PARAMETER"});if(t.length<6)throw new h('"password" should be at least 6 characters.',{code:"INVALID_PARAMETER"});if(t.length>60)throw new h('"password" can be up to 60 characters max.',{code:"INVALID_PARAMETER"})}else throw new h('"password" is required.',{code:"INVALID_PARAMETER"});return t}function vd(t,e="email"){if(t){if(typeof t!="string")throw new h(`"${e}"should be type: string.`,{code:"INVALID_PARAMETER"});if(t.length<5)throw new h(`"${e}" should be at least 5 characters.`,{code:"INVALID_PARAMETER"});if(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(t)&&(t=t.trim(),t.split("@")[1].split(".").length>=2))return t.toLowerCase()}else throw new h(`"${e}" is required.`,{code:"INVALID_PARAMETER"});throw new h(`"${t}" is an invalid email.`,{code:"INVALID_PARAMETER"})}function Rd(t){let e=typeof window<"u",r=(()=>{let i=e&&window.location.origin||null;return i&&i.slice(-1)==="/"&&(i=i.slice(0,-1)),i})(),n=i=>{if(typeof i=="string"){if(i==="*")return "*";{let s=i.trim();if(s[0]==="/"&&r){if(r.slice(0,5)==="file:")throw new h(`"${i}" is an invalid url. Relative URL does not work on local file system. Use full URL string.`,{code:"INVALID_PARAMETER"});s=r+s;}else if(s[0]==="."&&r){if(r.slice(0,5)==="file:")throw new h(`"${i}" is an invalid url. Relative URL does not work on local file system. Use full URL string.`,{code:"INVALID_PARAMETER"});let a=e?window.location.href.split("?")[0]:"";a.slice(-1)!=="/"&&(a+="/"),s=a+s.slice(1);}let o;try{o=new URL(s);}catch{throw new h(`"${i}" is an invalid url.`,{code:"INVALID_PARAMETER"})}if(o.protocol)return o.href}}throw new h(`"${i}" is an invalid url.`,{code:"INVALID_PARAMETER"})};return Array.isArray(t)?t.map(i=>n(i)):n(t)}function Td(t,e,r=[],n){let i=j(t,n),s=i.data;e.service="string",e.owner="string";let o={};for(let a in e)if(s&&typeof s=="object"&&!Array.isArray(s)&&s.hasOwnProperty(a))if(typeof s[a]=="function")o[a]=s[a];else try{o[a]=JSON.parse(JSON.stringify(s[a]));}catch{o[a]=s[a];}n?.precall&&n.precall({data:o,files:i?.files||[]});try{return Pt(o,e,r)}catch(a){throw new h(a.message,{code:"INVALID_PARAMETER"})}}var w={UserId:wd,PhoneNumber:Ed,Birthdate:Ad,Password:Sd,Email:vd,Url:Rd,Params:Td};var ae="skapi.enc.v1",Ps=6e5,Ut=12,Er=null,ht=null;function Us(){return new h("Encryption requires Web Crypto, which needs a secure context (https, or localhost) in the browser, or Node 18 or newer. A page served over plain http has crypto.getRandomValues but crypto.subtle is undefined.",{code:"NOT_SUPPORTED"})}function xs(){if(ht)return ht;let t=typeof globalThis<"u"?globalThis:void 0;if(t?.crypto?.subtle&&typeof t.crypto.getRandomValues=="function")return ht=t.crypto,ht;try{let e=typeof globalThis<"u"?globalThis:void 0,r=null;if(e?.process&&typeof e.process.getBuiltinModule=="function"&&(r=e.process.getBuiltinModule("crypto")),!r&&typeof Ve=="function"&&(r=Ve("crypto")),r?.webcrypto?.subtle)return ht=r.webcrypto,ht}catch{}throw Us()}function ye(){if(Er)return Er;let t=xs();if(!t.subtle)throw Us();return Er=t.subtle,Er}function Dn(){try{return ye(),!0}catch{return false}}function ce(t){let e=xs(),r=new Uint8Array(t),n=65536;for(let i=0;i<t;i+=n)e.getRandomValues(r.subarray(i,Math.min(i+n,t)));return r}function B(t){let e=In(t),r;if(typeof Buffer<"u"&&typeof Buffer.from=="function")r=Buffer.from(e).toString("base64");else if(typeof btoa=="function"){let n="";for(let s=0;s<e.length;s+=32768)n+=String.fromCharCode.apply(null,Array.from(e.subarray(s,s+32768)));r=btoa(n);}else throw new h("No base64 encoder available in this environment.",{code:"NOT_SUPPORTED"});return r.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function K(t){if(typeof t!="string")throw new h("Expected a base64url string.",{code:"INVALID_PARAMETER"});let e=t.replace(/-/g,"+").replace(/_/g,"/"),r=e.length%4;if(r===2)e+="==";else if(r===3)e+="=";else if(r===1)throw new h("Malformed base64url string.",{code:"INVALID_PARAMETER"});if(typeof Buffer<"u"&&typeof Buffer.from=="function"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}if(typeof atob=="function"){let n=atob(e),i=new Uint8Array(n.length);for(let s=0;s<n.length;s++)i[s]=n.charCodeAt(s);return i}throw new h("No base64 decoder available in this environment.",{code:"NOT_SUPPORTED"})}async function Ar(t){let e=await ye().digest("SHA-256",t);return new Uint8Array(e)}async function kt(t,e,r,n){let i=ye(),s=await i.importKey("raw",t,"HKDF",false,["deriveBits"]),o=await i.deriveBits({name:"HKDF",hash:"SHA-256",salt:e,info:r},s,n*8);return new Uint8Array(o)}async function gt(t,e,r,n){let i=ye(),s=G(t.normalize("NFC")),o=await i.importKey("raw",s,"PBKDF2",false,["deriveBits"]),a=new Uint8Array(await i.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:"SHA-256"},o,256)),l=await kt(a,e,n,32);V(a),V(s);let c=await be(l);return V(l),c}async function be(t){return ye().importKey("raw",t,{name:"AES-GCM"},false,["encrypt","decrypt"])}async function Cs(){let t=ce(32),e=await be(t);return {bytes:t,key:e}}async function _e(t,e,r){let n=ce(Ut),i=await ye().encrypt({name:"AES-GCM",iv:n,additionalData:r,tagLength:128},t,e);return {iv:n,ct:new Uint8Array(i)}}async function we(t,e,r,n){let i=await ye().decrypt({name:"AES-GCM",iv:e,additionalData:n,tagLength:128},t,r);return new Uint8Array(i)}var Sr={name:"ECDH",namedCurve:"P-256"};async function ks(){let t=ye(),e=await t.generateKey(Sr,true,["deriveBits"]),r=new Uint8Array(await t.exportKey("raw",e.publicKey)),n=new Uint8Array(await t.exportKey("pkcs8",e.privateKey)),i=await Nn(n);return {pubRaw:r,pkcs8:n,priv:i}}async function Nn(t){return ye().importKey("pkcs8",t,Sr,false,["deriveBits"])}async function Ds(t){if(t.length!==65||t[0]!==4)throw new h("Malformed public key: expected a 65 byte uncompressed P-256 point.",{code:"INVALID_PARAMETER"});return ye().importKey("raw",t,Sr,false,[])}async function On(t){return B(await Ar(t))}async function Ns(t,e,r,n){let i=ye(),s=await Ds(t),o=await i.generateKey(Sr,true,["deriveBits"]),a=new Uint8Array(await i.deriveBits({name:"ECDH",public:s},o.privateKey,256)),l=await kt(a,new Uint8Array(32),r,32);V(a);let c=await be(l);V(l);let{iv:u,ct:f}=await _e(c,e,n);return {epk:new Uint8Array(await i.exportKey("raw",o.publicKey)),iv:u,ct:f}}async function Os(t,e,r,n,i,s){let o=ye(),a=await Ds(e),l=new Uint8Array(await o.deriveBits({name:"ECDH",public:a},t,256)),c=await kt(l,new Uint8Array(32),i,32);V(l);let u=await be(c);return V(c),we(u,r,n,s)}function V(t){t&&t.length&&t.fill(0);}function Id(t,e){if(t.length!==e.length)return false;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}function Fn(t){return G(JSON.stringify(t))}function Dt(t,e,r){return Cn(t,new Uint8Array([0]),G(e),new Uint8Array([0]),G(r))}var ze="0123456789ABCDEFGHJKMNPQRSTVWXYZ",xt=16,Ts=26,Is=28;function Fs(t){let e=2166136261;for(let r=0;r<t.length;r++)e^=t[r],e=e*16777619>>>0;return e&1023}function Ls(t){if(t.length!==xt)throw new h(`A recovery code needs exactly ${xt} bytes.`,{code:"INVALID_PARAMETER"});let e="",r=0,n=0;for(let s=0;s<t.length;s++)for(r=r<<8|t[s],n+=8;n>=5;)n-=5,e+=ze[r>>n&31];n>0&&(e+=ze[r<<5-n&31]);let i=Fs(t);return e+=ze[i>>5&31]+ze[i&31],(e.match(/.{1,4}/g)||[]).join("-")}function Ms(t){if(typeof t!="string")throw new h("Recovery code should be a string.",{code:"INVALID_PARAMETER"});let e=t.toUpperCase().replace(/[\s\-_]/g,"").replace(/O/g,"0").replace(/[IL]/g,"1");if(e.length!==Is)throw new h(`That does not look like a recovery code: expected ${Is} characters, got ${e.length}.`,{code:"ENCRYPTION_BAD_RECOVERY_CODE"});let r=e.slice(0,Ts),n=e.slice(Ts),i=0,s=0,o=[];for(let c=0;c<r.length;c++){let u=ze.indexOf(r[c]);if(u<0)throw new h(`That does not look like a recovery code: "${r[c]}" is not a valid character.`,{code:"ENCRYPTION_BAD_RECOVERY_CODE"});i=i<<5|u,s+=5,s>=8&&(s-=8,o.push(i>>s&255));}let a=new Uint8Array(o.slice(0,xt)),l=Fs(a);if(n!==ze[l>>5&31]+ze[l&31])throw new h("That recovery code has a typo in it: the check characters do not match.",{code:"ENCRYPTION_BAD_RECOVERY_CODE"});return a}async function Ln(t,e,r){let n=await kt(t,e,r,32),i=await be(n);return V(n),i}var kn=[83,75,69,78,67,70],qs=2,Ct=56,Vs=16,Pd=4*1024*1024;function Mn(t){if(!t||t.length<Ct)return false;for(let e=0;e<kn.length;e++)if(t[e]!==kn[e])return false;return true}function Qe(t,e,r){t[e]=r>>>24&255,t[e+1]=r>>>16&255,t[e+2]=r>>>8&255,t[e+3]=r&255;}function pt(t,e){return (t[e]<<24>>>0)+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3]}function Ud(t,e,r){let n=Math.floor(r/4294967296);Qe(t,e,n),Qe(t,e+4,r>>>0);}function xd(t,e){return pt(t,e)*4294967296+pt(t,e+4)}async function Bs(t,e,r,n,i,s){let o=G(`${ae}|binfile|${r}|${n}|${i}|${s}`),a=await kt(t,e,o,32),l=await be(a);return V(a),l}async function $s(t){return (await Ar(Cn(G(`${ae}|dekid`),t))).subarray(0,8)}function Ks(t,e,r){return Fn([`${ae}|binchunk`,B(t),e,r])}function Cd(t,e,r,n,i,s){let o=new Uint8Array(Ct+s.length);return o.set(kn,0),o[6]=qs,o[7]=s.length?1:0,Qe(o,8,t),Qe(o,12,e),o.set(r,16),Ud(o,32,n),o.set(i,40),Qe(o,48,s.length),Qe(o,52,0),s.length&&o.set(s,Ct),o}async function js(t,e,r,n,i=Pd){let s=ce(Vs),o=await Bs(t,s,r.service,r.owner,r.recordOwner,r.recordId),a=await $s(t),l=n?G(JSON.stringify(n)):new Uint8Array(0);if(l.length>4096)throw new h("Encrypted file metadata is too large.",{code:"INVALID_PARAMETER"});let c=e.length===0?1:Math.ceil(e.length/i),u=Cd(i,c,s,e.length,a,l),f=await Ar(u),d=[],p=u.length;for(let y=0;y<c;y++){let b=e.subarray(y*i,Math.min((y+1)*i,e.length)),_=await _e(o,b,Ks(f,y,c));d.push(_),p+=4+_.iv.length+_.ct.length;}let g=new Uint8Array(p);g.set(u,0);let m=u.length;for(let y of d)Qe(g,m,y.iv.length+y.ct.length),m+=4,g.set(y.iv,m),m+=y.iv.length,g.set(y.ct,m),m+=y.ct.length;return g}function kd(t){if(!Mn(t))throw new h("This file is not an encrypted skapi file.",{code:"INVALID_PARAMETER"});let e=pt(t,48),r=Ct+e;if(t.length<r)throw new h("Encrypted file header is truncated.",{code:"INVALID_REQUEST"});let n=null;return e&&(n=JSON.parse(It(t.subarray(Ct,r)))),{version:t[6],chunkBytes:pt(t,8),count:pt(t,12),fileId:t.subarray(16,16+Vs),plainLen:xd(t,32),dekId:t.subarray(40,48),meta:n,headerLen:r}}async function Hs(t,e,r){let n=kd(e);if(n.version!==qs)throw new h(`This file was encrypted by a different version of the SDK (container v${n.version}).`,{code:"NOT_SUPPORTED"});if(!n.count||!n.chunkBytes)throw new h("Encrypted file header is malformed.",{code:"INVALID_PARAMETER"});let i=await $s(t);if(!Id(i,n.dekId))throw new h("This file was encrypted under a previous data key for this record, so it can no longer be opened. It was most likely left behind by an interrupted access change.",{code:"ENCRYPTION_FILE_STALE_KEY"});let s=await Bs(t,n.fileId,r.service,r.owner,r.recordOwner,r.recordId),o=await Ar(e.subarray(0,n.headerLen)),a=[],l=n.headerLen,c=0;for(let d=0;d<n.count;d++){if(l+4>e.length)throw new h("Encrypted file is truncated.",{code:"INVALID_REQUEST"});let p=pt(e,l);if(l+=4,p<Ut+16||l+p>e.length)throw new h("Encrypted file is truncated.",{code:"INVALID_REQUEST"});let g=await we(s,e.subarray(l,l+Ut),e.subarray(l+Ut,l+p),Ks(o,d,n.count));l+=p,a.push(g),c+=g.length;}let u=new Uint8Array(c),f=0;for(let d of a)u.set(d,f),f+=d.length;return {bytes:u,meta:n.meta}}var Dd="__skapi__keyring",Nt="__skapi_enc__",Gs=1,Nd="skapi-enc",je="keys",Vn=new WeakMap;function Js(t){if(!t)return null;if(t===true&&(t={}),typeof t!="object")throw new h('"options.encryption" should be a boolean or an object.',{code:"INVALID_PARAMETER"});let e=typeof t.iterations=="number"?t.iterations:Ps;if(e<1e5)throw new h('"encryption.iterations" must be at least 100000.',{code:"INVALID_PARAMETER"});let r=t.trustPolicy==="strict"?"strict":"tofu";return {enabled:true,iterations:e,trustPolicy:r,persistDevice:t.persistDevice!==false,minPasswordLength:typeof t.minPasswordLength=="number"?t.minPasswordLength:0,withheld:t.withheld==="sentinel"?"sentinel":"null",recovery:t.recovery==="none"?"none":"code",table:typeof t.table=="string"&&t.table?t.table:Dd}}function q(){return Vn.get(this)||null}function Ys(t){if(!t){Vn.delete(this);return}Vn.set(this,{cfg:t,status:"locked",reason:"NO_SESSION_KEY",user_id:"",scope:"",mk:null,ikPriv:null,pubRaw:null,fpr:"",keyringRecordId:"",pins:{},dek:new Map,roll:new Set,passthrough:new Map,rawRead:false,ready:null,unlocking:false,pendingRecoveryCode:"",peerPub:new Map,peerInflight:new Map});}function Bn(){let t=q.call(this);if(t){t.user_id&&Xn.call(this,t).catch(()=>{}),t.ready=null,t.unlocking=false,t.pendingRecoveryCode="";for(let[,e]of t.dek)V(e.bytes);t.dek.clear(),t.roll.clear(),t.passthrough.clear(),t.peerPub.clear(),t.peerInflight.clear(),t.pins={},t.mk=null,t.ikPriv=null,t.pubRaw=null,t.fpr="",t.keyringRecordId="",t.user_id="",t.status="locked",t.reason="NO_SESSION_KEY";}}function zs(){let t=q.call(this);return t?{status:t.status,reason:t.status==="unlocked"?void 0:t.reason,user_id:t.user_id||void 0,fingerprint:t.fpr||void 0}:{status:"disabled"}}function Qs(t,e){return typeof e=="string"&&e===t.cfg.table}function mt(){return `${this.service}/${this.owner}`}function $n(t,e,r,n){let[i,s]=t.split("/");return Fn([ae,i,s,e,r,n])}function Xs(t,e,r,n,i){let[s,o]=t.split("/");return G(`${ae}|dekwrap|${s}|${o}|${e}|${r}|${n}|${i}`)}function Kn(t){return t.anch==="uid"?t.uid:t.anch==="rid"?t.rid:""}function Rr(t){return !!t&&typeof t=="object"&&!Array.isArray(t)&&typeof t[Nt]=="number"&&typeof t.ct=="string"&&typeof t.iv=="string"&&typeof t.own=="string"&&typeof t.anch=="string"&&!!t.k&&typeof t.k=="object"&&!Array.isArray(t.k)}var Zs="__skapi_no_access__";function le(t,e,r){if(t.withheld!=="sentinel")return null;let n={[Zs]:true,reason:e};return r&&(n.recipients=r),Object.freeze(n)}function jn(t){return !!t&&typeof t=="object"&&t[Zs]===true}var Od=256*1024,Lt="__skenc_ct__",eo="payload.bin",Fd=`/${Lt}/${eo}`;function Hn(t,e){return t===Lt&&e===eo}async function Ld(t,e,r){let n=e?.table,i=typeof n=="string"?n:n?.name;if(n&&(typeof n=="string"||n.access_group!==void 0))return {group:typeof n=="string"?0:Ws(n.access_group),table:i,record:null};if(!r)return {group:n?.access_group!==void 0?Ws(n.access_group):0,table:i,record:null};let s=t.dek.get(r);if(s)return {group:s.access_group,table:i,record:null};let o=await Ke.call(this,r);if(!o)throw new h(`Record "${r}" not found.`,{code:"NOT_EXISTS"});return {group:o.table.access_group,table:o.table.name,record:o}}function Md(t){return this.getFile(t,{dataType:"blob"})}async function Ke(t){let e=/^[a-zA-Z0-9]+$/.test(t)?{record_id:t}:{unique_id:t};return (await this.getRecords(e,{limit:1}))?.list?.[0]||null}function Ws(t){return t==="private"||t==="*"||t==="**"?"private":t==="public"?0:t==="authorized"?1:t==="admin"?99:typeof t=="number"?t:0}function qn(t,e,r){let n=this.user?.user_id;if(!(!t||!t.user_id||!n||t.user_id===n))throw new h(`Record "${e}" belongs to another user (${t.user_id}), so ${r} would either seal it under the wrong key or strand its contents. Encryption only operates on records you own, no matter what access level you hold.`,{code:"ENCRYPTION_NOT_RECORD_OWNER"})}async function Wn(t,e,r){let n=q.call(this);if(!n)return {send:t,plain:t,encrypted:false,omit:false};let i=e?.record_id||"",s=i,o=e?.unique_id||"";if(i&&n.passthrough.has(i)){let $=n.passthrough.get(i);return n.passthrough.delete(i),{send:$,plain:t,encrypted:true,omit:false}}let{group:a,table:l,record:c}=await Ld.call(this,n,e,s);if(a!=="private"){let $=true;if(!r&&i){let ee=c||await Ke.call(this,i);if(ee&&ee.encrypted){if(qn.call(this,ee,i,"making it non-private"),ee.encrypted.status==="failed")throw new h(`Cannot make record "${i}" non-private: its current contents could not be decrypted (${ee.encrypted.reason}), so they cannot be written back in the clear. Unlock encryption, or supply the record's data with the access group change.`,{code:"ENCRYPTION_LOCKED"});let St=!!ee.bin&&Object.keys(ee.bin).some(Yt=>(ee.bin[Yt]||[]).some(_i=>_i&&_i.encrypted));if(!St&&s){let Yt=n.dek.get(s);Yt&&(V(Yt.bytes),n.dek.delete(s));}return {send:ee.data,plain:ee.data,encrypted:false,omit:false,files:St?"decrypt":void 0}}}let ne=c;i&&!ne&&(ne=await Ke.call(this,i).catch(()=>null)),ne&&ne.encrypted&&qn.call(this,ne,i,"making it non-private");let yi=!!ne&&!!ne.bin&&Object.keys(ne.bin).some(ee=>(ne.bin[ee]||[]).some(St=>St&&St.encrypted));if(yi&&($=false),$&&s){let ee=n.dek.get(s);ee&&(V(ee.bytes),n.dek.delete(s));}return {send:t,plain:t,encrypted:false,omit:!r,files:yi?"decrypt":void 0}}if(Qs(n,l))return {send:t,plain:t,encrypted:false,omit:false};if(n.ready&&!n.unlocking)try{await n.ready;}catch{}if(!r)return {send:t,plain:t,encrypted:false,omit:true};if(jn.call(this,t))throw new h("This record's data could not be decrypted by this session, so it cannot be written back. Writing it would replace the record with the placeholder.",{code:"ENCRYPTION_CANNOT_REWRITE_WITHHELD"});if(n.status!=="unlocked"||!n.mk)throw new h("Encryption is enabled but locked, so this private record cannot be written. Call unlockEncryption({ password }) first, or the user must log in with their password.",{code:"ENCRYPTION_LOCKED"});if(t&&typeof t=="object"&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,Nt))throw new h(`"${Nt}" is a reserved key in record data.`,{code:"INVALID_PARAMETER"});if(e?.service&&e.service!==this.service||e?.owner&&e.owner!==this.owner)throw new h("Encrypted records cannot be written to another project. The encryption key is derived per project, so a record written under one service and read under another could never be decrypted. Construct a separate Skapi instance for that project.",{code:"INVALID_REQUEST"});let u=this.user?.user_id;if(!u)throw new h("User login is required to write an encrypted record.",{code:"INVALID_REQUEST"});let f=mt.call(this),d=false;if(i&&n.roll.has(i)){d=true,n.roll.delete(i);let $=n.dek.get(i);n.dek.delete(i),$&&V($.bytes);}let p=c;i&&!p&&!n.dek.has(i)&&(p=await Ke.call(this,i).catch(()=>null)),p&&qn.call(this,p,i,"making it private");let g=!!p&&!p.encrypted&&!!p.bin&&Object.keys(p.bin).some($=>(p.bin[$]||[]).some(ne=>ne&&!ne.encrypted)),m=null;if(i&&!d&&(m=n.dek.get(i)||null,!m)){let $=p||c||await Ke.call(this,i);if($&&(s=$.record_id||i,m=n.dek.get(s)||null,!o&&$.unique_id&&(o=$.unique_id),!m&&$.encrypted?.status==="failed"))throw new h(`Cannot update encrypted record "${i}": its current contents could not be decrypted (${$.encrypted.reason}), so its existing key wraps cannot be preserved. Updating anyway would revoke everyone it is shared with.`,{code:"ENCRYPTION_LOCKED"})}s===i&&m&&m.rid&&(s=m.rid),!o&&m&&m.anch==="uid"&&m.uid&&(o=m.uid);let y,b,_;if(m){if(m.own&&m.own!==u)throw new h(`Record "${i}" belongs to another user (${m.own}). Encryption only operates on records you own.`,{code:"ENCRYPTION_NOT_RECORD_OWNER"});y=m.bytes,b=m.key,_=Object.assign({},m.recipients);}else {let $=await Cs();y=$.bytes,b=$.key,_={};}let A=o?"uid":s?"rid":"new",S=A==="uid"?o:A==="rid"?s:"",R=$n(f,u,A,S),N=Dt(R,u,"mk"),F=await _e(n.mk,y,N);_[u]={t:"mk",iv:B(F.iv),ct:B(F.ct)},m&&(m.anch!==A||Kn(m)!==S)&&(_=await qd.call(this,n,y,_,f,u,A,S,R));let C=G(JSON.stringify(t===void 0?null:t)),x=await _e(b,C,R);V(C);let O={[Nt]:Gs,enc:"A256GCM",kw:"ECDH-ES+A256GCM",anch:A,uid:o,rid:s,own:u,iv:B(x.iv),ct:B(x.ct),k:_},L,M,J=O.ct;s&&J.length>Od&&(L=K(J),O.ct="",O.ct_ref=Fd,m&&m.ctRef&&(M=m.ctRef));let ve=JSON.stringify(O).length;if(ve>2*1024*1024)throw new h(`Encrypted record data is too large: once encrypted and base64 encoded it becomes ${ve} bytes, over the ${2*1024*1024} byte limit. Encryption costs about 33% plus roughly 230 bytes per additional recipient.`,{code:"ENCRYPTED_DATA_TOO_LARGE"});return s&&n.dek.set(s,{bytes:y,key:b,recipients:_,anch:A,uid:o,rid:s,own:u,access_group:"private"}),{send:O,plain:t,encrypted:true,omit:false,spill:L,retireCt:M,dek:{bytes:y,key:b,recipients:_,anch:A,uid:o,rid:s,own:u,access_group:"private"},files:g?"encrypt":void 0}}function to(t,e){let r=q.call(this);!r||!e||!t||r.dek.has(t)||r.dek.set(t,Object.assign({},e,{rid:t}));}async function qd(t,e,r,n,i,s,o,a){let l=Object.keys(r).filter(f=>f!==i);if(!l.length)return r;let c=await Zn.call(this,l),u={[i]:r[i]};for(let f of l){let d=c[f];d&&(u[f]=await ro.call(this,e,d,n,o,i,f,a));}return u}async function ro(t,e,r,n,i,s,o){let a=Xs(r,n,i,s,e.fpr),l=Dt(o,s,e.fpr),c=await Ns(e.pubRaw,t,a,l);return {t:"ecdh",epk:B(c.epk),iv:B(c.iv),ct:B(c.ct),fpr:e.fpr}}async function no(t,e){if(!Rr(t))return {value:t};if(e.access_group!=="private")return {value:t};let r=q.call(this);if(!r)return {value:null,flag:{status:"failed",reason:"ENCRYPTION_DISABLED"}};if(r.rawRead)return {value:t};if(Qs(r,e.table_name))return {value:t};if(t[Nt]!==Gs)return {value:le(r.cfg,"UNSUPPORTED_VERSION"),flag:{status:"failed",reason:"UNSUPPORTED_VERSION"}};if(r.ready&&!r.unlocking)try{await r.ready;}catch{}if(t.own!==e.user_id)return {value:le(r.cfg,"BINDING_MISMATCH"),flag:{status:"failed",reason:"BINDING_MISMATCH"}};if(t.uid&&e.unique_id&&t.uid!==e.unique_id)return {value:le(r.cfg,"BINDING_MISMATCH"),flag:{status:"failed",reason:"BINDING_MISMATCH"}};if(t.rid&&e.record_id&&t.rid!==e.record_id)return {value:le(r.cfg,"BINDING_MISMATCH"),flag:{status:"failed",reason:"BINDING_MISMATCH"}};let n=this.user?.user_id,i=n?t.k[n]:null;if(!i)return {value:le(r.cfg,"NOT_A_RECIPIENT",Object.keys(t.k)),flag:{status:"failed",reason:"NOT_A_RECIPIENT",recipients:Object.keys(t.k)}};if(r.status!=="unlocked"||!r.mk)return {value:le(r.cfg,"NO_SESSION_KEY"),flag:{status:"failed",reason:"NO_SESSION_KEY"}};let s=mt.call(this),o=Kn(t),a=$n(s,t.own,t.anch,o),l;try{if(i.t==="mk")l=await we(r.mk,K(i.iv),K(i.ct),Dt(a,n,"mk"));else if(i.t==="ecdh"){if(!r.ikPriv)return {value:le(r.cfg,"NO_SESSION_KEY"),flag:{status:"failed",reason:"NO_SESSION_KEY"}};l=await Os(r.ikPriv,K(i.epk),K(i.iv),K(i.ct),Xs(s,o,t.own,n,i.fpr),Dt(a,n,i.fpr));}else return {value:le(r.cfg,"UNSUPPORTED_VERSION"),flag:{status:"failed",reason:"UNSUPPORTED_VERSION"}}}catch{return {value:le(r.cfg,"BAD_KEY"),flag:{status:"failed",reason:"BAD_KEY"}}}let c;try{if(t.ct_ref){if(!e.ctUrl)return V(l),{value:le(r.cfg,"DATA_UNAVAILABLE"),flag:{status:"failed",reason:"DATA_UNAVAILABLE"}};let p=await Md.call(this,e.ctUrl);c=new Uint8Array(await p.arrayBuffer());}else c=K(t.ct);}catch{return V(l),{value:le(r.cfg,"DATA_UNAVAILABLE"),flag:{status:"failed",reason:"DATA_UNAVAILABLE"}}}let u,f;try{f=await be(l),u=await we(f,K(t.iv),c,a);}catch{return V(l),{value:le(r.cfg,"CORRUPT"),flag:{status:"failed",reason:"CORRUPT"}}}let d;try{d=JSON.parse(It(u));}catch{return V(u),V(l),{value:le(r.cfg,"CORRUPT"),flag:{status:"failed",reason:"CORRUPT"}}}if(V(u),e.record_id){let p=r.dek.get(e.record_id);p?(p.bytes=l,p.key=f,p.recipients=t.k,p.anch=t.anch,p.uid=t.uid,p.own=t.own,p.access_group="private",p.ctRef=t.ct_ref||""):r.dek.set(e.record_id,{bytes:l,key:f,recipients:t.k,anch:t.anch,uid:t.uid,rid:e.record_id,own:t.own,access_group:"private",ctRef:t.ct_ref||""});}else V(l);return {value:d,flag:{status:"encrypted",recipients:Object.keys(t.k)}}}function Ot(t,e){let[r,n]=t.split("/");return G(`${ae}|kek|${r}|${n}|${e}`)}function Ft(t,e,r,n){let[i,s]=t.split("/");return G(`${ae}|mk|${i}|${s}|${e}|PBKDF2-SHA256|${r}|${n}`)}function io(t,e){let[r,n]=t.split("/");return G(`${ae}|recovery|${r}|${n}|${e}`)}function so(t,e,r){let[n,i]=t.split("/");return G(`${ae}|rk|${n}|${i}|${e}|HKDF-SHA256|${r}`)}function oo(t,e){let[r,n]=t.split("/");return G(`${ae}|self|${r}|${n}|${e}`)}function ao(t,e){let[r,n]=t.split("/");return G(`${ae}|ik|${r}|${n}|${e}`)}async function Tr(t){let r=((await this.getRecords({table:{name:t.cfg.table,access_group:"private"},index:{name:"$user_id",value:this.user.user_id,condition:"="}},{limit:2}))?.list||[]).filter(n=>n.user_id===this.user.user_id);return r.length?(r.sort((n,i)=>n.uploaded-i.uploaded),r[0]):null}async function Gn(t,e,r){let n=ce(xt),i=Ls(n),s=ce(16),o=B(s),a=await Ln(n,s,io(t,e)),l=await _e(a,r,so(t,e,o));return V(n),{code:i,wrap:{id:B(ce(6)),p:"recovery",kdf:{a:"HKDF-SHA256",s:o},iv:B(l.iv),ct:B(l.ct),created:Date.now()}}}async function Vd(t,e,r,n){let i=Ms(n),s=(r||[]).filter(o=>o.p==="recovery");s.sort((o,a)=>(a.created||0)-(o.created||0));for(let o of s)try{let a=await Ln(i,K(o.kdf.s),io(t,e)),l=await we(a,K(o.iv),K(o.ct),so(t,e,o.kdf.s));return V(i),l}catch{}return V(i),null}async function Bd(t,e,r,n,i){let s=ce(16),o=B(s),a=await gt(n,s,t.cfg.iterations,Ot(e,r)),l=await _e(a,i,Ft(e,r,t.cfg.iterations,o));return {id:B(ce(6)),p:"password",kdf:{a:"PBKDF2-SHA256",it:t.cfg.iterations,s:o},iv:B(l.iv),ct:B(l.ct),created:Date.now()}}async function $d(t,e){let r=this.user.user_id,n=t.scope,i=ce(16),s=B(i),o=await gt(e,i,t.cfg.iterations,Ot(n,r)),a=ce(32),l=await _e(o,a,Ft(n,r,t.cfg.iterations,s)),c=await be(a),u=await ks(),f=await _e(c,u.pkcs8,ao(n,r));V(u.pkcs8);let d=null;t.cfg.recovery==="code"&&(d=await Gn(n,r,a));let p=await _e(c,a,oo(n,r));V(a);let g=await On(u.pubRaw),m=Date.now(),y=[{id:B(ce(6)),p:"password",kdf:{a:"PBKDF2-SHA256",it:t.cfg.iterations,s},iv:B(l.iv),ct:B(l.ct),created:m}];d&&y.push(d.wrap);let b={v:1,alg:"ECDH-P-256",user_id:r,wraps:y,ik:{iv:B(f.iv),ct:B(f.ct)},self:{iv:B(p.iv),ct:B(p.ct)},pub:B(u.pubRaw),fpr:g,pins:null,created:m,updated:m};await this.postRecord({v:1,alg:"ECDH-P-256",user_id:r,pub:B(u.pubRaw),fpr:g,created:m},{table:{name:t.cfg.table,access_group:"authorized"},index:{name:"pubkey",value:r}});let _=await this.postRecord(b,{table:{name:t.cfg.table,access_group:"private"}}),A=await Tr.call(this,t);if(A&&A.record_id!==_.record_id){await co.call(this,t,A,e);return}t.mk=c,t.ikPriv=u.priv,t.pubRaw=u.pubRaw,t.fpr=g,t.keyringRecordId=_.record_id,d&&(t.pendingRecoveryCode=d.code),t.user_id=r,t.pins={},t.status="unlocked",t.reason="";}async function co(t,e,r){let n=this.user.user_id,i=t.scope,s=e.data;if(e.user_id!==n||s&&s.user_id&&s.user_id!==n)throw new h("The encryption keyring does not belong to this user.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let a=(Array.isArray(s?.wraps)?s.wraps:[]).filter(u=>u.p==="password");if(!a.length)throw new h("The keyring has no password wrap.",{code:"ENCRYPTION_KEYRING_CORRUPT"});a.sort((u,f)=>(f.created||0)-(u.created||0));let l=null;for(let u of a)try{let f=K(u.kdf.s),d=await gt(r,f,u.kdf.it,Ot(i,n));l=await we(d,K(u.iv),K(u.ct),Ft(i,n,u.kdf.it,u.kdf.s));break}catch{}if(!l)throw new h("Incorrect password: the encryption keyring could not be opened.",{code:"ENCRYPTION_BAD_PASSWORD"});let c=await be(l);V(l),await Jn.call(this,t,e,c);}async function Jn(t,e,r){let n=this.user.user_id,i=e.data,s=await we(r,K(i.ik.iv),K(i.ik.ct),ao(t.scope,n)),o=await Nn(s);V(s);let a={};if(i.pins&&typeof i.pins=="object"&&i.pins.ct)try{let l=await we(r,K(i.pins.iv),K(i.pins.ct),G(`${ae}|pins|${t.scope}|${n}`));a=JSON.parse(It(l)),V(l);}catch{a={};}t.mk=r,t.ikPriv=o,t.pubRaw=K(i.pub),t.fpr=i.fpr,t.keyringRecordId=e.record_id,t.user_id=n,t.pins=a,t.status="unlocked",t.reason="";}async function Ir(t){let e=q.call(this);if(!e||!this.user?.user_id)return;if(!Dn()){e.status="locked",e.reason="NO_WEB_CRYPTO";return}if(this.user?.is_openid){e.status="locked",e.reason="OPENID_UNSUPPORTED";return}if(e.cfg.minPasswordLength&&t.length<e.cfg.minPasswordLength){e.status="locked",e.reason="WEAK_PASSWORD";return}e.scope=mt.call(this);let r=await Tr.call(this,e);r?await co.call(this,e,r,t):await $d.call(this,e,t),e.cfg.persistDevice&&await po.call(this,e).catch(()=>{});}async function lo(t){await this.__connection;let e=q.call(this);if(!e)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});if(!this.user?.user_id)throw new h("User login is required.",{code:"INVALID_REQUEST"});if(!t?.password||typeof t.password!="string")throw new h('"password" is required.',{code:"INVALID_PARAMETER"});if(await Ir.call(this,t.password),e.status!=="unlocked")throw new h(`Encryption could not be unlocked: ${e.reason}`,{code:"ENCRYPTION_LOCKED"});return {status:e.status}}async function uo(t){let e=q.call(this);return e?(t?.forgetDevice&&await Xn.call(this,e).catch(()=>{}),Bn.call(this),this.__cached_requests={},{status:e.status}):{status:"disabled"}}async function fo(t,e){let r=q.call(this);if(!r)return;if(r.status!=="unlocked"||!r.mk)throw new h("Encryption must be unlocked before changing the password, or the encryption keyring would be left wrapped under a password that no longer exists. Call unlockEncryption({ password }) first.",{code:"ENCRYPTION_LOCKED"});let i=(await this.getRecords({record_id:r.keyringRecordId},{limit:1}))?.list?.[0];if(!i)throw new h("The encryption keyring could not be read, so the password change was stopped before it could strand it.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let s=this.user.user_id,o=i.data,a=(o.wraps||[]).filter(m=>m.p==="password");a.sort((m,y)=>(y.created||0)-(m.created||0));let l=null;for(let m of a)try{let y=await gt(t,K(m.kdf.s),m.kdf.it,Ot(r.scope,s));l=await we(y,K(m.iv),K(m.ct),Ft(r.scope,s,m.kdf.it,m.kdf.s));break}catch{}if(!l)throw new h("Incorrect current password: the encryption keyring was not re-wrapped.",{code:"ENCRYPTION_BAD_PASSWORD"});let c=ce(16),u=B(c),f=await gt(e,c,r.cfg.iterations,Ot(r.scope,s)),d=await _e(f,l,Ft(r.scope,s,r.cfg.iterations,u));V(l);let p=Date.now(),g=(o.wraps||[]).concat([{id:B(ce(6)),p:"password",kdf:{a:"PBKDF2-SHA256",it:r.cfg.iterations,s:u},iv:B(d.iv),ct:B(d.ct),created:p}]);await this.postRecord(Object.assign({},o,{wraps:g,updated:p}),{record_id:r.keyringRecordId});}async function ho(){let t=q.call(this);if(!t||t.status!=="unlocked"||!t.keyringRecordId)return;let r=(await this.getRecords({record_id:t.keyringRecordId},{limit:1}))?.list?.[0];if(!r)return;let n=r.data,i=(n.wraps||[]).filter(o=>o.p==="password").sort((o,a)=>(a.created||0)-(o.created||0)),s=(n.wraps||[]).filter(o=>o.p!=="password");i.length<=1||await this.postRecord(Object.assign({},n,{wraps:[i[0]].concat(s),updated:Date.now()}),{record_id:t.keyringRecordId});}function Yn(){return typeof indexedDB<"u"&&!!indexedDB}function zn(){return new Promise((t,e)=>{let r=indexedDB.open(Nd,1);r.onupgradeneeded=()=>{let n=r.result;n.objectStoreNames.contains(je)||n.createObjectStore(je);},r.onsuccess=()=>t(r.result),r.onerror=()=>e(r.error);})}function Qn(t){return `${t.scope}#${this.user?.user_id}`}async function po(t){if(!Yn()||!t.mk)return;let e=await zn();await new Promise((r,n)=>{let i=e.transaction(je,"readwrite");i.objectStore(je).put({mk:t.mk,keyringRecordId:t.keyringRecordId,saved:Date.now()},Qn.call(this,t)),i.oncomplete=()=>r(),i.onerror=()=>n(i.error);}),e.close();}async function Kd(t){if(!Yn())return null;let e=await zn(),r=await new Promise((n,i)=>{let o=e.transaction(je,"readonly").objectStore(je).get(Qn.call(this,t));o.onsuccess=()=>n(o.result||null),o.onerror=()=>i(o.error);});return e.close(),r&&r.mk?r:null}async function Xn(t){if(!Yn())return;let e=await zn();await new Promise((r,n)=>{let i=e.transaction(je,"readwrite");i.objectStore(je).delete(Qn.call(this,t)),i.oncomplete=()=>r(),i.onerror=()=>n(i.error);}),e.close();}function go(){let t=q.call(this);!t||t.ready||(t.unlocking=true,t.ready=jd.bind(this)().catch(()=>false).then(()=>{t.unlocking=false;}));}async function jd(){let t=q.call(this);if(!t||!this.user?.user_id||!t.cfg.persistDevice||!Dn())return false;t.scope=mt.call(this);try{let e=await Kd.call(this,t);if(!e)return !1;let r=await Tr.call(this,t);return r?(await Jn.call(this,t,r,e.mk),!0):(await Xn.call(this,t).catch(()=>{}),!1)}catch{return t.status="locked",t.reason="NO_SESSION_KEY",false}}async function Zn(t){let e=q.call(this);if(!e)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});let r={},n=[],i=false;for(let s of t){let o=e.peerPub.get(s);o?r[s]=o:n.push(s);}return await Promise.all(n.map(async s=>{let o=e.peerInflight.get(s);o||(o=(async()=>{let c=((await this.getRecords({table:{name:e.cfg.table,access_group:"authorized"},index:{name:"$user_id",value:s,condition:"="}},{limit:10}))?.list||[]).filter(p=>p.user_id===s&&p.data?.pub);if(!c.length)return null;c.sort((p,g)=>g.uploaded-p.uploaded);let u=K(c[0].data.pub),f=await On(u),d=e.pins[s];if(d&&d!==f)throw new h(`The public key for user "${s}" has changed since it was first seen. This is expected if they reset their account, and is what a key substitution attack also looks like. Verify the new fingerprint out of band, then call pinPeerKey({ user_id, fingerprint }).`,{code:"ENCRYPTION_PEER_KEY_CHANGED"});if(!d){if(e.cfg.trustPolicy==="strict")throw new h(`No pinned key for user "${s}" and trustPolicy is "strict". Pin it first with pinPeerKey().`,{code:"ENCRYPTION_PEER_NOT_PINNED"});e.pins[s]=f,i=true;}return {pubRaw:u,fpr:f}})().finally(()=>e.peerInflight.delete(s)),e.peerInflight.set(s,o));let a=await o;a&&e.peerPub.set(s,a),r[s]=a;})),i&&await bo.call(this,e).catch(()=>{}),r}async function mo(t,e){let r=mt.call(this),n=t.dek.get(e);if(n)return {entry:n,scope:r};let i=await Ke.call(this,e);if(!i)throw new h(`Record "${e}" not found.`,{code:"NOT_EXISTS"});if(i.encrypted?.status==="failed"&&i.encrypted.reason==="DATA_UNAVAILABLE")throw new h(`Cannot change sharing on record "${e}": its data could not be read, so whether it is encrypted is unknown. Retry once the record reads normally.`,{code:"ENCRYPTION_DATA_UNAVAILABLE"});if(!i.encrypted)return null;if(i.user_id!==this.user?.user_id)throw new h("Only the record owner can share or revoke an encrypted record, because adding or removing a key wrap means writing the record.",{code:"ENCRYPTION_GRANT_REQUIRES_OWNER"});let s=t.dek.get(i.record_id)||t.dek.get(e);if(!s)throw new h(`Cannot change sharing on record "${e}": its data could not be decrypted`+(i.encrypted.reason?` (${i.encrypted.reason})`:"")+".",{code:"ENCRYPTION_LOCKED"});return {entry:s,scope:r}}async function ei(t,e){let r=q.call(this);if(!r)return;let n=await mo.call(this,r,t);if(!n)return;let{entry:i,scope:s}=n,o=this.user.user_id;if(i.own!==o)throw new h("Only the record owner can share an encrypted record, because adding a key wrap means writing the record.",{code:"ENCRYPTION_GRANT_REQUIRES_OWNER"});let a=await Zn.call(this,e),l=e.filter(d=>!a[d]);if(l.length)throw new h(`These users have no encryption key yet, so they cannot be given access: ${l.join(", ")}. A user's key is created the first time they log in with encryption enabled.`,{code:"ENCRYPTION_RECIPIENT_HAS_NO_KEY"});let c=Kn(i),u=$n(s,i.own,i.anch,c),f=Object.assign({},i.recipients);for(let d of e)d!==o&&(f[d]=await ro.call(this,i.bytes,a[d],s,c,i.own,d,u));await Wd.call(this,r,t,i,f);}async function yo(t,e){let r=q.call(this);if(!r)return;let n=await mo.call(this,r,t);if(!n)return;let{entry:i}=n,s=this.user.user_id;if(i.own!==s)throw new h("Only the record owner can revoke access to an encrypted record.",{code:"ENCRYPTION_GRANT_REQUIRES_OWNER"});let o=Object.keys(i.recipients).filter(c=>c===s?true:e?!e.includes(c):false).filter(c=>c!==s),a=await Ke.call(this,t);if(!a)throw new h(`Record "${t}" not found.`,{code:"NOT_EXISTS"});Hd(a,t);let l={};if(o.length){l=await Zn.call(this,o);let c=o.filter(u=>!l[u]);if(c.length)throw new h(`Cannot revoke on record "${t}": these users keep access but their encryption keys could not be read, so re-sharing after the key roll would fail and lock them out: ${c.join(", ")}.`,{code:"ENCRYPTION_RECIPIENT_HAS_NO_KEY"})}r.roll.add(a.record_id||t),await this.postRecord(a.data,{record_id:a.record_id||t,table:{name:a.table.name,access_group:"private"}}),o.length&&await ei.call(this,a.record_id||t,o);}function Hd(t,e){if(t?.encrypted?.status==="failed")throw new h(`Cannot change sharing on record "${e}": its current data could not be read (${t.encrypted.reason}), so re-writing the record would destroy it.`,{code:"ENCRYPTION_DATA_UNAVAILABLE"})}async function Wd(t,e,r,n){let i=await Gd.call(this,e);if(!i)throw new h(`Cannot change sharing on record "${e}": its stored envelope could not be read.`,{code:"ENCRYPTION_DATA_UNAVAILABLE"});r.recipients=n,t.dek.set(e,r);let s=Object.assign({},i,{k:n});t.passthrough.set(e,s),await this.postRecord(void 0,{record_id:e});}async function Gd(t){let e=q.call(this);if(!e)return null;e.rawRead=true;let r;try{r=(await this.getRecords({record_id:t},{limit:1}))?.list?.[0];}finally{e.rawRead=false;}return r&&Rr(r.data)?r.data:null}async function _o(t){let e=q.call(this);if(!e||e.status!=="unlocked")throw new h("Encryption is locked.",{code:"ENCRYPTION_LOCKED"});e.pins[t.user_id]=t.fingerprint,e.peerPub.delete(t.user_id),await bo.call(this,e);}async function bo(t){if(!t.mk||!t.keyringRecordId)return;let r=(await this.getRecords({record_id:t.keyringRecordId},{limit:1}))?.list?.[0];if(!r)return;let n=await _e(t.mk,G(JSON.stringify(t.pins)),G(`${ae}|pins|${t.scope}|${t.user_id}`));await this.postRecord(Object.assign({},r.data,{pins:{iv:B(n.iv),ct:B(n.ct)},updated:Date.now()}),{record_id:t.keyringRecordId});}function wo(){let t=q.call(this);if(!t||!t.pendingRecoveryCode)return null;let e=t.pendingRecoveryCode;return t.pendingRecoveryCode="",e}async function Eo(t){await this.__connection;let e=q.call(this);if(!e)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});if(!this.user?.user_id)throw new h("User login is required. Reset the password and log in first, then use the recovery code.",{code:"INVALID_REQUEST"});if(!t?.code||typeof t.code!="string")throw new h('"code" is required.',{code:"INVALID_PARAMETER"});e.scope=mt.call(this);let r=this.user.user_id,n=await Tr.call(this,e);if(!n)throw new h("This account has no encryption keyring, so there is nothing to recover.",{code:"NOT_EXISTS"});let i=await Vd(e.scope,r,n.data?.wraps||[],t.code);if(!i)throw new h("That recovery code did not open the keyring. Check it against the copy you saved when encryption was set up.",{code:"ENCRYPTION_BAD_RECOVERY_CODE"});let s=await be(i);await Jn.call(this,e,n,s);let o=false,a=null,l=(n.data?.wraps||[]).slice();if(t.password&&(l=l.filter(c=>c.p!=="password"),l.push(await Bd(e,e.scope,r,t.password,i)),o=true),e.cfg.recovery==="code"){let c=await Gn(e.scope,r,i);l=l.filter(u=>u.p!=="recovery"),l.push(c.wrap),a=c.code;}return V(i),await this.postRecord(Object.assign({},n.data,{wraps:l,updated:Date.now()}),{record_id:n.record_id}),e.cfg.persistDevice&&await po.call(this,e).catch(()=>{}),{status:e.status,repaired:o,recoveryCode:a}}async function Ao(){await this.__connection;let t=q.call(this);if(!t)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});if(t.status!=="unlocked"||!t.mk)throw new h("Encryption must be unlocked to issue a recovery code. Only someone who can already decrypt can create one.",{code:"ENCRYPTION_LOCKED"});if(t.cfg.recovery!=="code")throw new h('Recovery codes are disabled for this instance ("recovery" is "none").',{code:"INVALID_REQUEST"});let r=(await this.getRecords({record_id:t.keyringRecordId},{limit:1}))?.list?.[0];if(!r)throw new h("The encryption keyring could not be read.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let n=r.data?.self;if(!n||!n.ct)throw new h("This keyring predates recovery-code rotation and cannot issue a new code. Use unlockWithRecoveryCode() with the existing code, which issues a replacement.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let i=await we(t.mk,K(n.iv),K(n.ct),oo(t.scope,t.user_id)),s=await Gn(t.scope,t.user_id,i);V(i);let o=(r.data.wraps||[]).filter(a=>a.p!=="recovery").concat([s.wrap]);return await this.postRecord(Object.assign({},r.data,{wraps:o,updated:Date.now()}),{record_id:t.keyringRecordId}),{recoveryCode:s.code}}var vr="__skenc__",So="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";function Jd(t){if(t===0)return "0";let e="";for(;t>0;)e=So[t%62]+e,t=Math.floor(t/62);return e}function Yd(t){let e=0;for(let r of t){let n=So.indexOf(r);if(n<0)return NaN;e=e*62+n;}return e}function Pr(t){if(typeof t!="string")return null;let e=t.lastIndexOf(vr);if(e<0)return null;let r=Yd(t.slice(e+vr.length));return Number.isFinite(r)?{key:t.slice(0,e),plainSize:r}:null}function ti(t){try{let e=String(t).split("?")[0].split("/").slice(3);if(e.length<12||e[4]!=="records"||e[7]!=="bin")return null;let r=Pr(e[10]);return r?{recordId:e[5],recordOwner:e[3],filename:e[e.length-1],plainSize:r.plainSize}:null}catch{return null}}function vo(t,e){return {service:this.service,owner:this.owner,recordOwner:e,recordId:t}}async function Ro(t,e,r){let n=q.call(this);if(!n||!t)return {key:e,file:r,encrypted:false};let i=n.dek.get(t);if(!i)return {key:e,file:r,encrypted:false};if(Pr(e))throw new h(`"${vr}" is reserved in an upload form key.`,{code:"INVALID_PARAMETER"});if(e===Lt)return {key:e,file:r,encrypted:false};let s=new Uint8Array(await r.arrayBuffer()),o={n:r.name,t:r.type||"",lm:r.lastModified||0},a=await js(i.bytes,s,vo.call(this,t,i.own),o);return V(s),{key:`${e}${vr}${Jd(r.size)}`,file:new File([a],r.name,{type:"application/octet-stream"}),encrypted:true}}async function To(t,e){let r=q.call(this),n=ti(t);if(!r||!n)return e;let i=r.dek.get(n.recordId);if(!i)throw new h(`Cannot open this file: the data key for record "${n.recordId}" is not available. Read the record first, and make sure encryption is unlocked.`,{code:"ENCRYPTION_LOCKED"});let s=new Uint8Array(await e.arrayBuffer());if(!Mn(s))throw new h("This file is marked as encrypted but its contents are not an encrypted container.",{code:"ENCRYPTION_FILE_CORRUPT"});let o=await Hs(i.bytes,s,vo.call(this,n.recordId,n.recordOwner)),a=o.meta&&o.meta.t||"application/octet-stream";return new Blob([o.bytes],{type:a})}function zd(t){let e=[];for(let r in t?.bin||{})for(let n of t.bin[r]||[])n&&n.encrypted&&e.push({formKey:r,url:n.url,filename:n.filename});return e}function Qd(t){let e=[];for(let r in t?.bin||{})for(let n of t.bin[r]||[])n&&!n.encrypted&&e.push({formKey:r,url:n.url,filename:n.filename});return e}async function ri(t,e,r){let n=q.call(this);if(!n)return [];let i=await Ke.call(this,t);if(!i)return [];let s=e==="decrypt"?zd(i):Qd(i);if(!s.length)return [];let o=[],a=new FormData,l=false;for(let c of s){let u=i.bin[c.formKey].find(d=>d.url===c.url);if(!u||typeof u.getFile!="function")continue;let f=await u.getFile("blob");f&&(a.append(c.formKey,new File([f],c.filename,{type:f.type||"application/octet-stream"})),o.push(c.url),l=true);}if(!l)return [];if(e==="decrypt"){let c=n.dek.get(t);c&&(V(c.bytes),n.dek.delete(t));}return await this.uploadFiles(a,{record_id:t,progress:r}),o}var H=null;function ni(t){let e={tkid:"ticket_id",cond:"condition",stmp:"timestamp",actn:"action",cnt:"count",ttl:"time_to_live",plch:"placeholder",hash:"hash",desc:"description",pmc:"limit_per_user"},r={};for(let n in t)if(n==="tkid"){let i=t[n].split("#");if(i.length===1){r.ticket_id=i[0];continue}r.ticket_id=i[1],r.consume_id=i[2],r.user_id=i[3];let s=i[2].slice(-4);if(r.is_test=s===":CHK",!t.stmp){let o=i[2].slice(0,-4);/^[0-9]+$/.test(o)?r.timestamp=parseInt(o,10):r.timestamp=me(i[2].slice(0,-4));}}else e[n]?r[e[n]]=t[n]:r[n]=t[n];return r}async function Po(t){if(!t.ticket_id)throw new h("Ticket ID is required.",{code:"INVALID_PARAMETER"});if(!t.method)throw new h('Method is required. Should be either "GET" or "POST"',{code:"INVALID_PARAMETER"});let e=t.ticket_id;await this.__connection;let r=await I.bind(this)(`https://${this.service.slice(0,4)}.${this.customApiDomain}/auth/consume/${this.service}/${this.owner}/${e}`,t?.data||{},{method:t.method,auth:!!t?.auth});return ni(r)}async function Uo(t,e){await this.__connection;let r=await I.bind(this)("ticket",Object.assign({exec:"list"},t||{}),{auth:true,fetchOptions:e});return r.list=r.list.map(ni),r}async function xo(t,e){await this.__connection;let r=await I.bind(this)("ticket",Object.assign({exec:"consumed"},t||{}),{auth:true,fetchOptions:e});return r.list=r.list.map(ni),r}async function Co(t){return I.bind(this)("register-ticket",Object.assign({exec:"reg"},t),{auth:true})}async function ko(t){return I.bind(this)("register-ticket",Object.assign({exec:"unreg"},t),{auth:true})}var Xd=3600;async function yt(){if(await this.__connection,this.session){let t=Math.floor(Date.now()/1e3),r=this.session.getIdToken().getExpiration();if(r<t+Xd){this.log("request:requesting new token",null);try{await re.bind(this)().getSession({refreshToken:!0}),this.log("request:received new tokens",{exp:this.session?.idToken?.payload?.exp,currentTime:t,expiresIn:r-t,token:this.session?.accessToken?.jwtToken,refreshToken:this.session?.refreshToken?.token});}catch(n){throw this.log("request:new token error",n),new h("User login is required.",{code:"INVALID_REQUEST"})}}else this.log("request:tokens",{exp:this.session.idToken.payload.exp,currentTime:t,expiresIn:r-t,token:this.session.accessToken.jwtToken,refreshToken:this.session.refreshToken.token});return this.session?.idToken?.jwtToken}else throw this.log("request:no session",null),Me.bind(this)(),new h("User login is required.",{code:"INVALID_REQUEST"})}function Io(t,e){return new Promise((r,n)=>{e.refreshSession(t.getRefreshToken(),(i,s)=>{this.log("getSession:refreshSessionCallback",{refreshErr:i,refreshedSession:s}),i?(Me.bind(this)(),n(i)):s.isValid()?r(s):(Me.bind(this)(),n(new h("Invalid session.",{code:"INVALID_REQUEST"})));});})}function re(){if(!this.userPool)throw new h("User pool is missing",{code:"INVALID_REQUEST"});let t=()=>{let s=H.getSignInUserSession().getIdToken().payload||null,o=Tt(s);return this.log("normalized user attribute",o),this.__user=o,o},e=async s=>new Promise((o,a)=>{this.log("getSession:option",s);let{refreshToken:l=false,skipUserUpdateEventTrigger:c=false}=s||{};if(l&&c&&(c=false),H=this.userPool.getCurrentUser(),!H){this.log("getSession:cognitoUser",H),Me.bind(this)(),a(null);return}let u=f=>{let d=f.getIdToken().payload;if(this.log("getSession:respond:sessionAttribute",d),d["custom:service"]!==this.service)throw this.log("getSession:respond","invalid service, signing out"),Me.bind(this)(),new h("Invalid session.",{code:"INVALID_REQUEST"});return this.session=f,t(),c||this._runOnUserUpdateListeners(this.user),this.session};H.getSession((f,d)=>{if(this.log("getSession:getSessionCallback",{err:f,session:d}),!d){Me.bind(this)(),a(new h("Current session does not exist.",{code:"INVALID_REQUEST"}));return}if(f){Io.bind(this)(d,H).then(b=>o(u(b))).catch(a);return}let p=Math.floor(Date.now()/1e3),g=d.getIdToken(),m=g.getExpiration(),y=m<p;if(this.log("getSession:currentTime",p),this.log("getSession:idTokenExp",m),this.log("getSession:isExpired",y),this.log("getSession:existingBearerToken",this.bearerToken),this.bearerToken=g.getJwtToken(),y||l||!d.isValid())Io.bind(this)(d,H).then(b=>o(u(b))).catch(a);else try{o(u(d));}catch(b){a(b);}});}),r=(s,o)=>{let a=o||s.includes(this.service+"-")?s:this.service+"-"+X.hash(s);return {cognitoUser:new Fe({Username:a,Pool:this.userPool}),cognitoUsername:a}};return {getSession:e,authenticateUser:(s,o,a=false,l=false)=>new Promise((c,u)=>{this.__request_signup_confirmation=null,this.__disabledAccount=null;let f=r(s,a),d=f.cognitoUsername,p=new Wr({Username:d,Password:o});f.cognitoUser.authenticateUser(p,{newPasswordRequired:(g,m)=>{this.__disabledAccount=null,this.__request_signup_confirmation=d,g["custom:signup_ticket"]==="PASS"||g["custom:signup_ticket"]==="MEMBER"||g["custom:signup_ticket"]==="OIDPASS"?f.cognitoUser.completeNewPasswordChallenge(o,{},{onSuccess:y=>{H=f.cognitoUser,e().then(async b=>{if(q.call(this))try{await Ir.bind(this)(o);}catch(_){this.log("encryption:ensureKeyring:failed",_);}c(this.user);});},onFailure:y=>{u(new h(y.message||"Failed to authenticate user.",{code:y.code}));}}):u(new h("User's signup confirmation is required.",{code:"SIGNUP_CONFIRMATION_NEEDED"}));},onSuccess:g=>e({skipUserUpdateEventTrigger:true}).then(async m=>{if(this.__disabledAccount=null,q.call(this))try{await Ir.bind(this)(o);}catch(y){this.log("encryption:ensureKeyring:failed",y);}this._runOnLoginListeners(this.user),this._runOnUserUpdateListeners(this.user),c(this.user);}),onFailure:g=>{let m=[],{parsed:y,code:b}=Ur(g),_=typeof g?.message=="string"?g.message:"";if(b==="NotAuthorizedException"?_.includes("User is disabled.")?(this.__disabledAccount=d,m=["This account is disabled.","USER_IS_DISABLED"]):l?m=["The account already exists.","ACCOUNT_EXISTS"]:m=["Incorrect username or password.","INCORRECT_USERNAME_OR_PASSWORD"]:b==="UserNotFoundException"?m=["Incorrect username or password.","INCORRECT_USERNAME_OR_PASSWORD"]:b==="UserNotConfirmedException"?(this.__request_signup_confirmation=d,m=["User's signup confirmation is required.","SIGNUP_CONFIRMATION_NEEDED"]):(b==="TooManyRequestsException"||b==="LimitExceededException")&&(m=["Too many attempts. Please try again later.","REQUEST_EXCEED"]),y.code==="SIGNUP_CONFIRMATION_NEEDED"&&(this.__request_signup_confirmation=d),m.length){let A=m[1],S=m[0];u(new h(S,{code:A,cause:g}));}else u(y);}});}),createCognitoUser:r,signup:(s,o,a)=>new Promise((l,c)=>{this.userPool.signUp(s,o,a,null,(u,f)=>{if(u){let{parsed:d,code:p}=Ur(u),g=[];p==="UsernameExistsException"?g=["The account already exists.","EXISTS"]:p==="InvalidPasswordException"?g=["Invalid password. Password must be at least 6 characters.","INVALID_PARAMETER"]:p==="InvalidParameterException"?g=[d.message||"Invalid parameter.","INVALID_PARAMETER"]:p==="TooManyRequestsException"||p==="LimitExceededException"?g=["Too many attempts. Please try again later.","REQUEST_EXCEED"]:p==="CodeDeliveryFailureException"?g=["Failed to deliver verification code.","CODE_DELIVERY_FAILURE"]:p==="UserLambdaValidationException"&&(g=[d.message||"Signup validation failed.","INVALID_REQUEST"]),g.length?c(new h(g[0],{code:g[1],cause:u})):c(d);return}l(f);});})}}function Ur(t){let e=typeof t?.code=="string"&&t.code.trim()?t.code.trim():"ERROR",n=((typeof t?.message=="string"?t.message:typeof t=="string"?t:"An error occurred.")||"An error occurred.").trim();n||(n="An error occurred.");let i=n.match(/#([A-Za-z0-9_]+)\s*:\s*([\s\S]+)/),s=i?.[1]?.trim()||e,o=i?.[2]?.trim()||n;return {parsed:new h(o,{code:s,cause:t}),code:e}}async function Do(t){await this.__authConnection;let e=t?.refreshToken||false;if(!e)return this.user;try{return await re.bind(this)().getSession(Object.assign({skipUserUpdateEventTrigger:!e,refreshToken:e},t)),this.user}catch{return null}}async function No(t){await this.__connection,t=w.Params(t,{token:"string",id:"string",merge:o=>{if(o===void 0)return false;if(typeof o=="string")return [o];if(Array.isArray(o)){for(let a of o)if(typeof a!="string")throw new h('"merge" array items should be type: <string>.',{code:"INVALID_PARAMETER"})}if(typeof o!="boolean"&&!Array.isArray(o))throw new h('"merge" should be type: <boolean | string[]>.',{code:"INVALID_PARAMETER"});return o},template:o=>{if(typeof o!="object"||o===null)throw new h('"template" should be type: <object>.',{code:"INVALID_PARAMETER"});if(o.welcome!==void 0&&(typeof o.welcome!="string"||!o.welcome))throw new h('"template.welcome" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});return o}});let e={token:t.token,id:t.id,merge:t.merge};t.template?.welcome&&(e.template_welcome=t.template.welcome);let r=await I.bind(this)("openid-logger",e),n=r.logger.split("#"),i=this.service+"-"+n[0],s=n[1];return {userProfile:await re.bind(this)().authenticateUser(i,s,true,true),openid:r.openid}}function Zd(t){let e=typeof globalThis<"u"?globalThis:void 0;if(e?.Buffer)return e.Buffer.from(t,"base64").toString("utf8");if(typeof atob=="function"){let r=atob(t),n=new Uint8Array(r.length);for(let i=0;i<r.length;i++)n[i]=r.charCodeAt(i);return typeof TextDecoder<"u"?new TextDecoder().decode(n):r}throw new Error("No base64 decoder available in this environment")}function ef(t){let e=t.split(".");if(e.length!==3)throw new Error("Invalid JWT format");let n=e[1].replace(/-/g,"+").replace(/_/g,"/"),i=Zd(n);return JSON.parse(i)}async function Oo(t){await this.__authConnection,this.log("loginWithToken:params",t),t=w.Params(t,{idToken:"string",accessToken:"string",refreshToken:"string"},["idToken"]);let e=ef(t.idToken);if(this.log("loginWithToken:idTokenPayload",e),e["custom:service"]!==this.service)throw new h("Token does not belong to this service.",{code:"INVALID_REQUEST"});let r=Math.floor(Date.now()/1e3);if(e.exp&&e.exp<r)throw new h("Token has expired.",{code:"INVALID_REQUEST"});if(this.__user=Tt(e),this.session=null,t.accessToken&&t.refreshToken)try{if(this.session=new dt({IdToken:new lt({IdToken:t.idToken}),AccessToken:new ct({AccessToken:t.accessToken}),RefreshToken:new ut({RefreshToken:t.refreshToken})}),this.log("loginWithToken:session",this.session),this.log("loginWithToken:CognitoUser",Fe),this.log("loginWithToken:userPool",this.userPool),Fe&&this.userPool){this.log("loginWithToken:cognito:username",e["cognito:username"]);let n={Username:e["cognito:username"],Pool:this.userPool};this.log("loginWithToken:cognitoUserParams",n),H=new Fe(n),H.setSignInUserSession(this.session),this.log("loginWithToken:cognitoUserRestored",{cognitoUserType:typeof H,cognitoUserKeys:Object.keys(H||{}),cognitoUser:H});}}catch(n){this.log("loginWithToken:err",n);try{this.log("loginWithToken:err:stringified",JSON.stringify(n));}catch{this.log("loginWithToken:err:stringifyFail",String(n));}try{let i=Object.keys(n||{}),s=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(n||{}):[],o=Object.getOwnPropertyDescriptors?Object.getOwnPropertyDescriptors(n||{}):{};this.log("loginWithToken:createSessionError:allKeys",{keys:i,symbols:s,descriptors:o});}catch(i){this.log("loginWithToken:createSessionError:allKeysFail",String(i));}}return this._runOnLoginListeners(this.user),this._runOnUserUpdateListeners(this.user),this.user}async function Z(){return await this.__connection,this.__user?.service===this.service?this.__user?.owner===this.host:(await Mt.bind(this)(),false)}async function Me(t=false){let e=null;H&&(t?e=new Promise((n,i)=>{H.globalSignOut({onSuccess:s=>{this.log("globalSignOut:success",s),n(s);},onFailure:s=>{this.log("globalSignOut:error",s),i(s);}});}):H.signOut()),Bn.bind(this)();let r={session:null,__startKeyHistory:{},__cached_requests:{},__user:null};e&&(e=await e);for(let n in r)this[n]=r[n];return this._runOnUserUpdateListeners(null),this._runOnLoginListeners(null),e}async function Mt(t){await this.__connection;let{data:e}=j(t);return await Me.bind(this)(e?.global),"SUCCESS: The user has been logged out."}async function Fo(){if(!this.__request_signup_confirmation)throw new h("Least one login attempt is required.",{code:"INVALID_REQUEST"});return await I.bind(this)("confirm-signup",{username:this.__request_signup_confirmation})}async function Lo(t=false){if(typeof t=="string")t=w.Url(t);else if(typeof t!="boolean")throw new h("Argument should be type: <boolean | string>.",{code:"INVALID_REQUEST"});if(!this.__disabledAccount)throw new h("Least one signin attempt of disabled account is required.",{code:"INVALID_REQUEST"});return await I.bind(this)("recover-account",{username:this.__disabledAccount,redirect:t}),"SUCCESS: Recovery e-mail has been sent."}async function ii(t){let e=w.Params(t,{username:"string",email:"string",password:"string"},["password"]);if(await this.__authConnection,e.email)try{w.Email(e.email);}catch{e.username=e.email,delete e.email;}if(!e.username&&!e.email)throw new h('Least one of "username" or "email" is required.',{code:"INVALID_PARAMETER"});return await re.bind(this)().authenticateUser(e.username||e.email,e.password)}async function Mo(t,e){await this.__authConnection;let r={username:"string",password:c=>w.Password(c),email:c=>w.Email(c),name:"string",address:c=>{if(!c)return "";if(typeof c=="string")return c;if(typeof c=="object")return JSON.stringify(c)},gender:"string",birthdate:c=>c?w.Birthdate(c):"",phone_number:c=>c?w.PhoneNumber(c):"",email_public:["boolean",()=>false],address_public:["boolean",()=>false],gender_public:["boolean",()=>false],birthdate_public:["boolean",()=>false],phone_number_public:["boolean",()=>false],access_group:"number",misc:"string",picture:c=>c?w.Url(c):"",profile:c=>c?w.Url(c):"",family_name:"string",given_name:"string",middle_name:"string",nickname:"string",website:c=>c?w.Url(c):""},n=w.Params(t||{},r,["email","password"]);await Mt.bind(this)(),e=w.Params(e||{},{email_subscription:c=>{if(typeof c!="boolean")throw new h('"option.email_subscription" should be type: <boolean>.',{code:"INVALID_PARAMETER"});if(!e?.signup_confirmation)throw new h('"option.signup_confirmation" is required for email subscription.',{code:"INVALID_PARAMETER"});return c},signup_confirmation:c=>{let u=c;if(typeof c=="string")u=w.Url(c);else if(typeof c=="boolean")u=c;else throw new h('"option.signup_confirmation" should be type: <string | boolean>.',{code:"INVALID_PARAMETER"});if(u&&!n.email)throw new h('"email" is required for signup confirmation.',{code:"INVALID_PARAMETER"});return u},login:c=>{if(typeof c=="boolean"){if(e.signup_confirmation&&c)throw new h('"login" is not allowed when "option.signup_confirmation" is true.',{code:"INVALID_PARAMETER"});return c}throw new h('"option.login" should be type: boolean.',{code:"INVALID_PARAMETER"})},template:c=>{if(typeof c!="object"||c===null)throw new h('"option.template" should be type: <object>.',{code:"INVALID_PARAMETER"});if(c.signup_confirmation!==void 0){if(typeof c.signup_confirmation!="string"||!c.signup_confirmation)throw new h('"option.template.signup_confirmation" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});if(!e?.signup_confirmation)throw new h('"option.signup_confirmation" is required when "option.template.signup_confirmation" is set.',{code:"INVALID_PARAMETER"})}if(c.welcome!==void 0&&(typeof c.welcome!="string"||!c.welcome))throw new h('"option.template.welcome" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});return c}});let i=e?.login||false;if(n.signup_confirmation=e?.signup_confirmation||false,n.email_subscription=e?.email_subscription||false,n.email_public&&!n.signup_confirmation)throw new h('"option.signup_confirmation" should be true if "email_public" is set to true.',{code:"INVALID_PARAMETER"});n.service=this.service,n.owner=this.owner;let s=re.bind(this)().createCognitoUser(n.username||n.email);for(let c of ["email_public","address_public","gender_public","birthdate_public","phone_number_public"])n[c]=n[c]?"1":"0";n.access_group&&(n.access_group=n.access_group.toString());let o=(await I.bind(this)("signupkey",{username:s.cognitoUsername,signup_confirmation:typeof n.signup_confirmation=="boolean"?JSON.stringify(n.signup_confirmation):n.signup_confirmation,email_subscription:n.email_subscription,template_confirmation:e?.template?.signup_confirmation||"",template_welcome:e?.template?.welcome||""})).split(":"),a=o.slice(1).join(":"),l=[new Pe({Name:"custom:signup",Value:o[0]}),new Pe({Name:"locale",Value:a.split("#")[1]}),new Pe({Name:"custom:signup_ticket",Value:a})];for(let c in r){let u=["email_public","address_public","gender_public","birthdate_public","phone_number_public","misc","service","owner"];n[c]!==""&&(c==="username"||c==="password"||c==="access_group"||(u.includes(c)?l.push(new Pe({Name:"custom:"+c,Value:n[c]})):l.push(new Pe({Name:c,Value:n[c]}))));}return await re.bind(this)().signup(s.cognitoUsername,n.password,l),n.signup_confirmation?(H=s.cognitoUser,this.__request_signup_confirmation=s.cognitoUsername,"SUCCESS: The account has been created. User's signup confirmation is required."):i?ii.bind(this)({email:n.username||n.email,password:n.password}):"SUCCESS: The account has been created."}async function qo(){await this.__connection;let t=await I.bind(this)("remove-account",{disable:this.__user.user_id},{auth:true});return await Mt.bind(this)(),t}async function Vo(t){await this.__connection;let e=w.Params(t,{email:i=>w.Email(i),code:["number","string"],new_password:i=>w.Password(i)},["email","code","new_password"]),r=e.code,n=e.new_password;return typeof r=="number"&&(r=r.toString()),new Promise(async(i,s)=>{re.bind(this)().createCognitoUser(e.email).cognitoUser.confirmPassword(r,n,{onSuccess:a=>{i("SUCCESS: New password has been set.");},onFailure:a=>{s(new h(a?.message||"Failed to reset password.",{code:a?.code||"ERROR",cause:a}));}});})}async function Bo(t,e,r){await this.__connection;let n;if(!H)throw new h("The user has to be logged in.",{code:"INVALID_REQUEST"});if(t==="email"||t==="phone_number"){if(!this.__user.hasOwnProperty(t))throw new h(`No ${t==="email"?"e-mail":"phone number"} to verify`,{code:"INVALID_REQUEST"});if(this.__user?.[`${t}_verified`])return `SUCCESS: "${t}" is verified.`;n=(e?w.Params(e,{code:"string"}):{}).code||"";}else return;let i,s=r?.template?.verification;if(s!==void 0){if(typeof s!="string"||!s)throw new h('"template.verification" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});i={template_verification:s};}return new Promise((o,a)=>{let l={onSuccess:c=>{n?re.bind(this)().getSession({refreshToken:true}).then(()=>{this.__user&&(this.__user[t+"_verified"]=true),o(`SUCCESS: "${t}" is verified.`);}).catch(u=>{a(u);}):o("SUCCESS: Verification code has been sent.");},onFailure:c=>{a(new h(c.message||"Failed to request verification code.",{code:c?.code}));}};n?H?.verifyAttribute(t,n,l):(l.inputVerificationCode=null,H?.getAttributeVerificationCode(t,l,i));})}function $o(t,e){return Bo.bind(this)("phone_number",t,e)}function Ko(t,e){return Bo.bind(this)("email",t,e)}async function jo(t,e){await this.__connection;let r=w.Params(t,{email:s=>w.Email(s)},["email"]),n,i=e?.template?.verification;if(i!==void 0){if(typeof i!="string"||!i)throw new h('"template.verification" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});n={template_verification:i};}return new Promise(async(s,o)=>{re.bind(this)().createCognitoUser(r.email).cognitoUser.forgotPassword({onSuccess:l=>{s("SUCCESS: Verification code has been sent.");},onFailure:l=>{let{parsed:c,code:u}=Ur(l),f={UserNotFoundException:"NOT_EXISTS",InvalidParameterException:"INVALID_PARAMETER",NotAuthorizedException:"INVALID_REQUEST",LimitExceededException:"REQUEST_EXCEED",TooManyRequestsException:"REQUEST_EXCEED",CodeDeliveryFailureException:"CODE_DELIVERY_FAILURE"}[u]||c.code||u||"ERROR";o(new h(c.message,{code:f,cause:l}));}},n);})}async function Ho(t){if(await this.__connection,!this.session)throw new h("User login is required.",{code:"INVALID_REQUEST"});let e=w.Params(t,{current_password:"string",new_password:"string"});if(!e?.current_password)throw new h('"current_password" is required to change password.',{code:"INVALID_PARAMETER"});if(!e?.new_password)throw new h('"new_password" is required to change password.',{code:"INVALID_PARAMETER"});return w.Password(e.current_password),w.Password(e.new_password),q.call(this)&&await fo.bind(this)(e.current_password,e.new_password),new Promise((r,n)=>{H.changePassword(e.current_password,e.new_password,(i,s)=>{if(i){if(i?.code==="InvalidParameterException")n(new h("Invalid password parameter.",{code:"INVALID_PARAMETER"}));else if(i?.code==="NotAuthorizedException")n(new h("Incorrect password.",{code:"INVALID_REQUEST"}));else if(i?.code==="TooManyRequestsException"||i?.code==="LimitExceededException")n(new h("Too many attempts. Please try again later.",{code:"REQUEST_EXCEED"}));else {let{parsed:o}=Ur(i);n(o);}return}q.call(this)&&ho.bind(this)().catch(o=>this.log("encryption:prune:failed",o)),r("SUCCESS: Password has been changed.");});})}async function Wo(t){if(await this.__connection,!this.session)throw new h("User login is required.",{code:"INVALID_REQUEST"});let e=w.Params(t||{},{user_id:i=>w.UserId(i),email:i=>w.Email(i),address:i=>{if(!i)return "";if(typeof i=="string")return i;if(typeof i=="object")return JSON.stringify(i)},name:"string",gender:"string",birthdate:i=>i?w.Birthdate(i):"",phone_number:i=>i?w.PhoneNumber(i):"",email_public:"boolean",phone_number_public:"boolean",address_public:"boolean",gender_public:"boolean",birthdate_public:"boolean",misc:"string",picture:i=>i?w.Url(i):"",profile:i=>i?w.Url(i):"",family_name:"string",given_name:"string",middle_name:"string",nickname:"string",website:i=>i?w.Url(i):""});if(e&&typeof e=="object"&&!Object.keys(e).length)return this.user;e.email&&(e.preferred_username=this.service+"-"+X.hash(e.email));let r=[["email_public","email_verified","User's e-mail should be verified to set"],["phone_number_public","phone_number_verified","User's phone number should be verified to set"]];if(this.__user){for(let i of r)if(e[i[0]]&&!this.__user[i[1]])throw new h(`${i[2]} "${i[0]}" to true.`,{code:"INVALID_REQUEST"})}let n=[];for(let i in e){if(e[i]===this.user[i]){n.push(i);continue}if(["email_public","phone_number_public","address_public","gender_public","birthdate_public","misc"].includes(i)){let o=e[i];typeof o=="boolean"&&(o=o?"1":"0"),e["custom:"+i]=o,n.push(i);}}for(let i of n)delete e[i];if(e.user_id)if(e.user_id===this.user.user_id)delete e.user_id;else return I.bind(this)("admin-edit-profile",{attributes:e},{auth:true});if(e&&typeof e=="object"&&Object.keys(e).length){let i=[];for(let s in e)i.push(new Pe({Name:s,Value:e[s]}));return await new Promise((s,o)=>{H?.updateAttributes(i,(a,l)=>{a&&o([a?.code||a?.name,a?.message||"Failed to update user settings."]),s(l);});}),await re.bind(this)().getSession({refreshToken:true}),this.user}return this.user}async function Go(t,e){t=j(t).data,t||(t={searchFor:"timestamp",condition:">",value:0},e||(e={}),e.ascending=false),await this.__connection;let r={user_id:i=>Array.isArray(i)?i.map(s=>w.UserId(s)):w.UserId(i),email:"string",phone_number:"string",locale:i=>{if(typeof i!="string"||typeof i=="string"&&i.length>5)throw new h('Value of "locale" should be a country code.',{code:"INVALID_PARAMETER"});return i},name:"string",address:"string",gender:"string",birthdate:i=>w.Birthdate(i),subscribers:"number",timestamp:"number",access_group:"number",approved:"string"},n=["searchFor","value"];if(t=w.Params(t,{searchFor:["user_id","name","email","phone_number","address","gender","birthdate","locale","subscribers","timestamp","access_group","approved"],condition:[">",">=","=","<","<=","gt","gte","eq","lt","lte",()=>"="],value:i=>{let s=r[t.searchFor];if(typeof s=="function")return s(i);if(typeof i!==s)throw new h(`Value does not match the type of "${t.searchFor}" index.`,{code:"INVALID_PARAMETER"});return i},range:i=>{let s=r[t.searchFor];if(typeof s=="function")return s(i);if(typeof i!==s)throw new h(`Range does not match the type of "${t.searchFor}" index.`,{code:"INVALID_PARAMETER"});return i}},n),t?.condition&&t?.condition!=="="&&t.hasOwnProperty("range"))throw new h("Conditions does not apply on range search.",{code:"INVALID_PARAMETER"});if(t.searchFor==="user_id"&&(t.condition!=="="||t.range))throw new h(`Conditions are not allowed on "${t.searchFor}"`,{code:"INVALID_PARAMETER"});if(typeof t?.value=="string"&&!t?.value)throw new h("Value should not be an empty string.",{code:"INVALID_PARAMETER"});if(typeof t?.searchFor=="string"&&!t?.searchFor)throw new h('"searchFor" should not be an empty string.',{code:"INVALID_PARAMETER"});return I.bind(this)("get-users",t,{auth:true,fetchOptions:e})}async function Jo(t){await this.__connection;let e=await I.bind(this)("last-verified-email",t,{auth:true});return e.includes("SUCCESS")?(await re.bind(this)().getSession({refreshToken:true}),this.user):e}async function Yo(t){return await this.__connection,t=w.Params(t,{username:w.Email,redirect:w.Url},["username"]),await I.bind(this)("request-username-change",t,{auth:true})}var tf="1.2.1",rf=class{constructor(t){Re(this,"version",tf);Re(this,"items",[]);Re(this,"nextJobId",1);Re(this,"breakWhenError",false);Re(this,"batchSize",1);Re(this,"onProgress");Re(this,"activeCount",0);Re(this,"currentCycleCompleted",[]);Re(this,"stopProcessing",false);if(this.breakWhenError=!!t?.breakWhenError,this.batchSize=t?.batchSize??1,typeof this.batchSize!="number"||this.batchSize<1)throw new Error("batchSize must be at least 1");if(t?.onProgress)if(typeof t.onProgress=="function")this.onProgress=t.onProgress;else throw new Error("onProgress must be a function")}get batchToProcess(){return Math.ceil(this.items.length/this.batchSize)}add(t){let e=Array.isArray(t)?t:[t],r=[];for(let n of e){if(typeof n!="function")throw new Error("Each job must be a function that returns a Promise");let i=String(this.nextJobId++);this.items.push({id:i,job:n}),r.push(i);}return this.processNext(),r}setBatchSize(t){if(typeof t!="number"||t<1)throw new Error("batchSize must be at least 1");this.batchSize=t;}remove(t){let e=String(t),r=this.items.findIndex(n=>n.id===e);return r===-1?false:(this.items.splice(r,1),true)}processNext(){if(this.stopProcessing||this.items.length===0||this.activeCount>0)return;let t=this.items.splice(0,this.batchSize);this.activeCount=t.length,this.currentCycleCompleted=new Array(t.length),t.forEach((e,r)=>{Promise.resolve().then(()=>e.job()).then(n=>(this.finalizeJob(r,n,false),n)).catch(n=>(this.finalizeJob(r,n,true),n));});}finalizeJob(t,e,r){if(this.currentCycleCompleted[t]=e,this.activeCount-=1,r&&this.breakWhenError&&(this.stopProcessing=true,this.items=[]),this.activeCount!==0)return;let n=this.currentCycleCompleted.slice();this.currentCycleCompleted=[],this.onProgress&&this.onProgress({batchToProcess:this.batchToProcess,itemsToProcess:this.items.length,completed:n}),this.processNext();}terminate(){this.items=[];}},qt=rf;var _t=null,Qo=typeof SubmitEvent<"u",nf=typeof HTMLFormElement<"u",Bt=oe(),si=0;function Xo(t){if(!t)return null;let e=Number(t);if(Number.isFinite(e))return Math.max(0,e*1e3);let r=Date.parse(t);return Number.isNaN(r)?null:Math.max(0,r-Date.now())}function oi(t,e){return e>0?t/e*100:0}var zo=t=>{let{auth:e,type:r,endpoints:n,stable:i}=t,s=n[0],o=n[1];if(si++,r==="admin"){let a=Object.entries(s).filter(([l,c])=>l.includes(e?"_private":"_public")&&l!=="get_users_private"&&l!=="service_public"&&typeof c=="string").map(([,l])=>l);if(!a.length)throw new h("No available admin gateways.",{code:"INVALID_REQUEST"});return a[si%a.length]}if(r==="record"){let a=Object.entries(o).filter(([l,c])=>l.includes(e?"record_private":"record_public")&&typeof c=="string").map(([,l])=>l);if(!a.length)throw new h("No available record gateways.",{code:"INVALID_REQUEST"});return i?a[0]:a[si%a.length]}throw new h("Invalid gateway type.",{code:"INVALID_REQUEST"})};async function sf(t,e,r){let n=await Promise.all([this.admin_endpoint,this.record_endpoint]),i=n[0],s=n[1],o=t.split("?"),a=o.length>1?"?"+o[1]:"";switch(t=o[0],t){case "get-users":return i.get_users_private+t+a;case "service":return i.service_public+t+a;case "get-newsletters":case "get-public-newsletters":case "subscribe-newsletter":case "subscribe-public-newsletter":case "signupkey":case "admin-newsletter-request":case "admin-signup":case "confirm-signup":case "openid-logger":case "block-account":case "admin-edit-profile":case "remove-account":case "post-secure":case "recover-account":case "mock":case "grant-access":case "last-verified-email":case "ticket":case "register-ticket":case "get-newsletter-subscription":case "request-username-change":case "send-inquiry":case "register-newsletter-group":case "newsletter-group-endpoint":case "invitation-list":case "csr":case "csr-poll":case "csr-cancel":case "csr-finalize":return zo.bind(this)({auth:e,type:"admin",endpoints:n})+t+a;case "post-record":return (e?s.post_private:s.post_public)+t+a;case "get-records":return (e?s.get_private:s.get_public)+t+a;case "del-files":case "del-records":return s.del_private+t+a;case "store-subscription":case "get-vapid-public-key":case "push-notification":case "delete-subscription":case "subscription":case "get-subscription":case "get-table":case "get-tag":case "get-uniqueid":case "get-index":case "get-signed-url":case "extract-file-text":case "grid-query":case "grant-private-access":case "request-private-access-key":case "get-ws-group":case "check-schema":case "get-feed":case "castspell":case "dopamine":case "getspell":return zo.bind(this)({auth:e,type:"record",endpoints:n,stable:r})+t+a;default:return w.Url(t)+a}}var Vt={};function Zo(){_t&&(_t.terminate(),_t=null);}async function I(t,e=null,r,n){this.log("request",{url:t,data:e,options:r,_etc:n||{}}),r=r||{};let{auth:i=false,method:s="post",bypassAwaitConnection:o=false}=r;s=s.toUpperCase();let a=null,l=e?.service||this.service,c=e?.owner||this.owner,u=null,f=await sf.bind(this)(t,!!i,!!r.stableGateway);if(!o&&(a=await this.__connection,!a))throw new h("Invalid connection. The service could have been disabled, or has a restricted CORS.",{code:"INVALID_REQUEST"});let d=r?.tokenHeaders?.idToken===true;(i||d)&&(u=await yt.bind(this)());let p={},{fetchMore:g=false,progress:m}=r?.fetchOptions||{};if(r?.fetchOptions&&Object.keys(r.fetchOptions).length){for(let x of ["limit","startKey","ascending"])if(r.fetchOptions.hasOwnProperty(x)){if(x==="startKey"&&r.fetchOptions[x]===null)continue;p[x]=r.fetchOptions[x];}p=w.Params(p,{limit:x=>{if(typeof x!="number")throw new h("Fetch limit should be a number.",{code:"INVALID_REQUEST"});if(x>1e3)throw new h("Fetch limit should be below 1000.",{code:"INVALID_REQUEST"});return x},startKey:x=>x,ascending:"boolean"});}let y=n?.ignoreService?{}:{service:l,owner:c};Object.assign(y,p),e=j(e).data,e?e&&typeof e=="object"&&(e=Object.assign(y,e)):e=y;let b=`${s}:${i?"auth":"public"}:${t}`,_=(()=>{if(e&&typeof e=="object"&&Object.keys(e).length&&!(Bt&&e instanceof FormData)){let x=function(O){return typeof O=="object"&&O!==null?Object.keys(O).sort().reduce((L,M)=>(typeof O[M]=="object"&&O[M]!==null?L[M]=x(O[M]):L[M]=O[M],L),{}):O};return X.hash(b+"/"+JSON.stringify(x(e)))}return X.hash(b+"/"+l)})(),{requestKey:A,requestKeyWithStartKey:S}=of.bind(this)({params:e,url:t,fetchMore:g,hashedParams:_});if(!A||A&&typeof A=="object")return A;if(this.log("requestKey",S),typeof S=="string"&&Vt[S]instanceof Promise)return this.log("request:returning pending",S),Vt[S];let R={Accept:"*/*"};if(Object.prototype.hasOwnProperty.call(r,"contentType")&&r.contentType!==void 0){let x=r.contentType===null?"application/x-www-form-urlencoded":r.contentType;x&&(R["Content-Type"]=x);}else R["Content-Type"]="application/json";if(u&&(R.Authorization=u),r?.tokenHeaders){let x=(M,J)=>typeof M=="string"?M:M===true?J:null,O=x(r.tokenHeaders.accessToken,this.session?.accessToken?.jwtToken||null),L=x(r.tokenHeaders.idToken,this.bearerToken||this.session?.idToken?.jwtToken||u||null);O&&(R["X-Access-Token"]=O),L&&(R["X-Id-Token"]=L);}let F={public_identifier:this.__public_identifier,service:l,owner:c};R["Content-Meta"]=JSON.stringify(F),r.revalidate&&(R["Cache-Control"]="no-cache",R.Pragma="no-cache");let C={headers:R};if(r?.responseType&&(C.responseType=r.responseType),s==="GET"){if(e){let x=[];if(Bt&&e instanceof FormData?x=Array.from(e.entries()).map(([O,L])=>{let M=typeof L=="string"?L:L.name;return encodeURIComponent(O)+"="+encodeURIComponent(M)}):x=Object.keys(e).map(O=>{let L=e[O];return typeof L!="string"&&(L=JSON.stringify(L)),encodeURIComponent(O)+"="+encodeURIComponent(L)}),x.length){let O=f.includes("?")?f.endsWith("?")||f.endsWith("&")?"":"&":"?";f+=O+x.join("&");}}C.body=null;}else if(Bt&&e instanceof FormData)C.body=e;else if(R["Content-Type"]==="application/x-www-form-urlencoded"&&e&&typeof e=="object"){let x=new URLSearchParams;for(let O of Object.keys(e)){let L=e[O];x.append(O,typeof L=="string"?L:JSON.stringify(L));}C.body=x.toString();}else typeof e=="string"?C.body=e:C.body=e?JSON.stringify(e):null;if(C.method=s,_t===null){let x={batchSize:this.requestBatchSize,breakWhenError:false,onProgress:O=>{this.onBatchProcess.forEach(L=>L(O));}};_t=new qt(x);}return this.log("request-opt",C),new Promise((x,O)=>{_t.add([async()=>{let L=ea.bind(this)(f,C,m);Vt[S]=L;try{let M=cf.bind(this)({hashedParam:A,requestKeyWithStartKey:S,url:t,fetched:await L});return delete Vt[S],this.log("request:end",M),x(M),M}catch(M){throw delete Vt[S],this.log("request:err",M),O(M),M}}]);})}function of(t){let{params:e={},url:r,fetchMore:n=false,hashedParams:i}=t||{};if(e.startKey){if(!(typeof e.startKey=="object"&&Object.keys(e.startKey).length)&&e.startKey!=="start"&&e.startKey!=="end")throw new h(`"${e.startKey}" is invalid startKey key.`,{code:"INVALID_PARAMETER"});e.startKey==="start"&&(n=false,delete e.startKey);}if(!n){if(this.__cached_requests?.[r]?.[i]&&delete this.__cached_requests[r][i],this.__startKeyHistory?.[r]?.[i]){if(Array.isArray(this.__startKeyHistory[r][i])&&this.__startKeyHistory[r][i].length)for(let l of this.__startKeyHistory[r][i]){let c=i+X.hash(l);this.__cached_requests?.[r]&&this.__cached_requests?.[r]?.[c]&&delete this.__cached_requests[r][c];}delete this.__startKeyHistory[r][i];}return {requestKeyWithStartKey:i,requestKey:i}}if(!Array.isArray(this.__startKeyHistory?.[r]?.[i]))return {requestKeyWithStartKey:i,requestKey:i};let s=this.__startKeyHistory[r][i],o=s[s.length-1],a=i;if(o){if(o==="end")return {requestKey:{list:[],startKey:"end",endOfList:true,startKeyHistory:s},requestKeyWithStartKey:a};a+=X.hash(o),e.startKey=JSON.parse(o);}return this.__cached_requests?.[r]?.[a]?{requestKey:this.__cached_requests[r][a],requestKeyWithStartKey:a}:{requestKeyWithStartKey:a,requestKey:i}}function af(t){let e=r=>r&&typeof r=="object"&&r.encrypted?Object.assign({},r,{data:null}):r;return Array.isArray(t)?t.map(e):t&&typeof t=="object"?Array.isArray(t.list)?Object.assign({},t,{list:t.list.map(e)}):e(t):t}function ea(t,e,r){return new Promise((n,i)=>{let s=new XMLHttpRequest;s.open(e.method||"GET",t);for(var o in e.headers||{})s.setRequestHeader(o,e.headers[o]);e.responseType&&(s.responseType=e.responseType),s.onload=()=>{if(s.status<400)if(e.responseType=="json"||e.responseType=="blob")n(s.response);else {let a=s.responseText;try{a=JSON.parse(a);}catch{}n(a);}else if(s.status===429){let a=s.getResponseHeader("Retry-After"),l=Xo(a);l!==null?setTimeout(()=>{ea(t,e,r).then(n,i);},l):i("Too many requests");}else {let a=s.status,l=["INVALID_CORS","INVALID_REQUEST","SERVICE_DISABLED","INVALID_PARAMETER","ERROR","EXISTS","NOT_EXISTS"],c=e.responseType=="blob"?s.response:s.responseText;try{c=JSON.parse(c);}catch{}if(typeof c=="string"){let u=c.split(":"),f=u.splice(0,1)[0].trim(),d=u.join(":").trim();i(new h(d||c,{code:l.includes(f)?f:"ERROR"}));}else if(typeof c=="object"&&c?.message){let u=c?.code||(a?a.toString():null)||"ERROR",f=c.message,d=c?.cause;typeof f=="string"&&(f=f.trim()),i(new h(f,{cause:d,code:u}));}else i(c);}},s.onerror=()=>i("Network error"),s.onabort=()=>i("Aborted"),s.ontimeout=()=>i("Timeout"),typeof r=="function"&&(s.onprogress=a=>{r({status:"download",progress:oi(a.loaded,a.total),loaded:a.loaded,total:a.total,abort:()=>s.abort()});},s.upload&&(s.upload.onprogress=a=>{r({status:"upload",progress:oi(a.loaded,a.total),loaded:a.loaded,total:a.total,abort:()=>s.abort()});})),s.send(e.body);})}function cf(t){let{hashedParam:e,requestKeyWithStartKey:r,url:n,fetched:i}=t;if(!i?.startKey)return i;this.__startKeyHistory.hasOwnProperty(n)||(this.__startKeyHistory[n]={}),this.__startKeyHistory[n].hasOwnProperty(e)||(this.__startKeyHistory[n][e]=[]);let s=i.startKey==="end"?"end":JSON.stringify(i.startKey);return this.__startKeyHistory[n][e].includes(s)||this.__startKeyHistory[n][e].push(s),this.__cached_requests?.[n]||(this.__cached_requests[n]={}),this.__cached_requests[n][r]=i,Object.assign({startKeyHistory:this.__startKeyHistory[n][e]},i)}async function $t(t,e){await this.__connection;let{record_id:r,service:n=this.service,progress:i}=e;if(!r)throw new h('"record_id" is required.',{code:"INVALID_PARAMETER"});if(Qo&&t instanceof SubmitEvent&&(t=t.target),nf&&t instanceof HTMLFormElement&&(t=new FormData(t)),!Bt||!(t instanceof FormData))throw new h('"fileList" should be a FormData or HTMLFormElement.',{code:"INVALID_PARAMETER"});let o={reserved_key:Ye(),service:n,request:"post"};e?.record_id&&(o.id=e.record_id);let a,l=(p,g,m)=>new Promise((y,b)=>{a=new XMLHttpRequest,a.open("POST",p),a.onload=()=>{let _=a.responseText;try{_=JSON.parse(_);}catch{}if(a.status>=200&&a.status<300)y(_);else if(a.status===429){let A=a.getResponseHeader("Retry-After"),S=Xo(A);S!==null?setTimeout(()=>{l(p,g,m).then(y,b);},S):b("Too many requests");}else b(_);},a.onerror=()=>b("Network error"),a.onabort=()=>b("Aborted"),a.ontimeout=()=>b("Timeout"),a.upload&&typeof m=="function"&&(a.upload.onprogress=m),a.send(g);});function c(p){let g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(p===0)return g[0];let m="";for(;p>0;)m=g[p%62]+m,p=Math.floor(p/62);return m}let u=[],f=[],d=[];for(let[p,g]of t.entries()){if(!(g instanceof File))continue;let m=await Ro.bind(this)(r,p,g),y=m.file,b=m.key,_=Object.assign({key:b+"/"+y.name,sizeKey:c(y.size),contentType:y.type||null},o),{fields:A=null,url:S,cdn:R}=await I.bind(this)("get-signed-url",_,{auth:!!this.__user});d.push(R);let N=new FormData;for(let F in A)N.append(F,A[F]);N.append("file",y);try{await l(S,N,typeof i=="function"?F=>i({status:"upload",progress:oi(F.loaded,F.total),currentFile:g,completed:u,failed:f,loaded:F.loaded,total:F.total,abort:()=>a.abort()}):null),u.push(g);}catch{f.push(g);}}return {completed:u,failed:f,bin_endpoints:d}}var xr={};function U(t){let{preventMultipleCalls:e=false}=t||{};return function(r,n,i){let s=i.value;i.value=function(...o){let a=o[0],l=true,c=null,u="",f={},d=false;if(Qo&&a instanceof SubmitEvent){a.preventDefault();let b=window.location.href;c=a.target;let _=new URL(c.action);u=_.href;let A=u?u.match(/(?<=\{).*?(?=\})/g):"";if(A)for(let S of A){if(!S)continue;let R=c.querySelector(`[name="${S}"]`);if(R)if(R.type==="file")for(let N=0;N<=R.files.length-1;N++)R.files[N]&&(f[S]||(f[S]=[]),f[S].push(new Promise((F,C)=>{let x=new FileReader;x.onload=function(){F(x.result);},x.readAsDataURL(R.files[N]),x.onerror=C;})));else u=u.replace(`{${S}}`,R.value);}c.getAttribute("action")===null?l=false:d=_.href===b;}let p=async b=>{if(u)for(let _ in f)f[_].length&&(u=u.replace(`{${_}}`,(await Promise.all(f[_])).join(",")));if(c&&l){let _=q.call(this)?af(b):b;window.sessionStorage.setItem(`${this.service}:${X.hash(u)}`,JSON.stringify(_)),d?window.location.replace(u):window.location.href=u;}return b},g,m=b=>{throw b instanceof h?b.name=n+"()":b=b instanceof Error?b:new h(b,{name:n+"()"}),b},y=async()=>{try{if(g=s.bind(this)(...o),g instanceof Promise){let b=await g;return p(b)}return p(g)}catch(b){throw m(b)}};if(e){let b=`${n}:${this?.__public_identifier||""}:${this?.service||""}:${this?.owner||""}`;return xr?.[b]||(xr[b]=y().finally(()=>{delete xr[b];})),xr[b]}return y()};}}async function ta(){await this.__connection;let t=`${this.service}:${X.hash(window.location.href.split("?")[0])}`,e=window.sessionStorage.getItem(t);if(window.sessionStorage.removeItem(t),e!==null){try{e=JSON.parse(e);}catch{}return e}return null}var lf=256,uf=256,df=256,ra=256,ff="\u{10FFFF}",hf=/[\u0000-\u001F\u007F]|\u{10FFFF}/u,pf={"/":"%2F","!":"%21","*":"%2A","#":"%23"},gf={"%2F":"/","%21":"!","%2A":"*","%23":"#"};function mf(t){return t.replace(/%/g,"%25").replace(/[\/!*#]/g,r=>pf[r]||r)}function Ee(t){return typeof t!="string"?t:t.replace(/%(2F|21|2A|23)/gi,r=>{let n=r.toUpperCase();return gf[n]||r}).replace(/%25/gi,"%")}function Ue(t,e,r={}){let{allowEmpty:n=false,maxLength:i,blockKeyDelimiters:s=false,disallowLeadingDollar:o=false,onlyAlphanumeric:a=false}=r;if(typeof t!="string")throw new h(`"${e}" should be type: <string>.`,{code:"INVALID_PARAMETER"});if(a&&/[^a-zA-Z0-9]/.test(t))throw new h(`"${e}" should only contain alphanumeric characters.`,{code:"INVALID_PARAMETER"});if(!n&&t.length===0)throw new h(`"${e}" is required.`,{code:"INVALID_PARAMETER"});if(i&&t.length>i)throw new h(`"${e}" should be <= ${i} characters.`,{code:"INVALID_PARAMETER"});if(hf.test(t)||t.includes(ff))throw new h(`"${e}" cannot include control characters or unsupported sentinel characters.`,{code:"INVALID_PARAMETER"});if(s&&(t=mf(t),i&&t.length>i))throw new h(`"${e}" should be <= ${i} characters. "/", "!", "*", "#" and "%" count as 3 characters each.`,{code:"INVALID_PARAMETER"});if(o&&t.startsWith("$"))throw new h(`"${e}" cannot start with "$".`,{code:"INVALID_PARAMETER"});return t}function bt(t,e="table.name",r={}){return Ue(t,e,{allowEmpty:r.allowEmpty===true,maxLength:lf,blockKeyDelimiters:true})}function kr(t,e="tag",r={}){return Ue(t,e,{allowEmpty:r.allowEmpty===true,maxLength:uf,blockKeyDelimiters:true})}function Kt(t,e="index.name",r={}){return Ue(t,e,{allowEmpty:r.allowEmpty===true,maxLength:df,blockKeyDelimiters:true,disallowLeadingDollar:true})}function na(t,e="index.value"){return Ue(t,e,{allowEmpty:true,maxLength:ra})}function ai(t){return typeof t=="string"&&t.slice(-1)==="."}function ci(t,e){return Ue(t,e,{allowEmpty:true,maxLength:ra,blockKeyDelimiters:true})}function ia(t){if(!t.record_id&&!t.unique_id)return null;let e={};return t?.service&&(e.service=t.service),t?.owner&&(e.owner=t.owner),t?.record_id?e.record_id=Ue(t.record_id,"record_id",{allowEmpty:false,onlyAlphanumeric:true}):t?.unique_id&&(e.unique_id=t.unique_id),e}function li(t){if(t===void 0)return 0;if(typeof t=="number"){if(t>99||t<0)throw new h('"table.access_group" value should be within a range of 0 ~ 99.',{code:"INVALID_REQUEST"})}else if(typeof t=="string"){if(t={"*":"private",private:"private",public:0,authorized:1,admin:99}[t],t===void 0)throw new h('"table.access_group" is invalid.',{code:"INVALID_PARAMETER"})}else throw new h('"table.access_group" should be type: <number | string>.',{code:"INVALID_PARAMETER"});if(!this.__user&&t)throw new h("Unsigned users have no access to records with access group.",{code:"INVALID_REQUEST"});return t}var Cr=4503599627370496;function Dr(t){if(typeof t=="number"){if(t>Cr||t<-Cr)throw new h(`Number value should be within range -${Cr} ~ +${Cr}`,{code:"INVALID_PARAMETER"});return t}if(typeof t=="boolean")return t;if(typeof t=="string")return na(t,"index.value");throw new h('"index.value" should be type: <number | boolean | string>.',{code:"INVALID_PARAMETER"})}function sa(t,e){if(!e.index||!("value"in e.index))throw new h('"index.value" is required.',{code:"INVALID_PARAMETER"});if(e.index.name==="$record_id")throw new h(`Cannot do "index.range" on ${e.index.name}`,{code:"INVALID_PARAMETER"});if(typeof e.index.value!=typeof t)throw new h('"index.range" type should match the type of "index.value".',{code:"INVALID_PARAMETER"});return typeof t=="string"?ai(e.index.name)?ci(t,"index.range"):na(t,"index.range"):t}var Nr={},yf=10080*60,_f=3600,oa=2;function bf(t,e){if(!e)return String(oa);let r=Math.max(60,t-300)*1e3;return "g"+oa+"w"+Math.floor(Date.now()/r)}function wf(t){if(!this.user?.user_id)return false;let e=t[6]==="**"?"**":parseInt(t[6]),r=this.user?.access_group??-1;return !(this.user.user_id!==t[3]&&(e==="**"||r<e))}function Ef(t){if(typeof t=="string"){if(t.startsWith("!J%"))try{return JSON.parse(t.substring(3))}catch{return t}return t==="!D%{}"?{}:t==="!L%[]"?[]:t}if(t&&typeof t=="object"&&!Array.isArray(t)&&typeof t.__json__=="string"&&Object.keys(t).length===1)try{return JSON.parse(t.__json__)}catch{}return t}async function aa(t){return typeof t=="string"?t:t&&typeof t.text=="function"?await t.text():await new Promise((e,r)=>{try{let n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>r(n.error||new Error("Failed to read blob")),n.readAsText(t);}catch(n){r(n);}})}async function Ze(t,e,r=false,n=false,i=false){let s={user_id:"",record_id:"",updated:0,uploaded:0,readonly:false,table:{name:"",access_group:0,subscription:{is_subscription_record:false,upload_to_feed:false,notify_subscribers:false,feed_referencing_records:false,notify_referencing_records:false}},referenced_count:0,source:{referencing_limit:null,prevent_multiple_referencing:false,can_remove_referencing_records:false,only_granted_can_reference:false},ip:"",bin:{}},o=false,a=[],l=null;function c(d){let p=d=="**"?"private":parseInt(d);return p=p==0?"public":p==1?"authorized":p==99?"admin":p,p}let u={ip:d=>{let p=d.split("#"),g=p[0];p.length>1&&(s.unique_id=p.slice(1).join("#")),g.slice(-1)==="R"?(s.readonly=true,g=g.slice(0,-1)):s.readonly=false,/^\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}$/.test(g)&&(g=g.split("-").join("."),o=true),s.ip=g;},rec:d=>{if(!d)return;s.record_id=d;let p=d.substring(0,d.length-9),g=me(p);s.uploaded=g;},usr:d=>{s.user_id=d;},tbl:d=>{if(d&&!s.table.name){let p=d.split("/");s.table.name=Ee(p[0]),s.table.access_group=c(p[2]),p?.[3]&&(s.table.subscription.is_subscription_record=true);}},usr_tbl:d=>{let p=d.split("/");s.user_id||(s.user_id=p[0]),s.table.name||(s.table.name=Ee(p[1]),s.table.access_group=c(p[3]),p?.[4]&&(s.table.subscription.is_subscription_record=true));},idx:d=>{if(!d)return;let p=d.split("!"),g=Ee(p.splice(0,1)[0]),m=Af("!"+p.join("!"));s.index={name:g,value:m};},ref:d=>{d&&(s.reference=d.split("/")[0]);},tags:d=>{s.tags=Array.isArray(d)?d.map(p=>Ee(p)):d;},upd:d=>{s.updated=d;},acpt_mrf:d=>{s.source.prevent_multiple_referencing=!d;},ref_limt:d=>{s.source.referencing_limit=d;},rfd:d=>{s.referenced_count=d;},bin:async d=>{let p={},g=s?.reference||null;if(Array.isArray(d)){let m=await Promise.all(d.map(async y=>{try{let b=y.split("/").slice(3).join("/"),_=b.split("/");if(_.length<12)return null;let A=_[_.length-1],S=_[10];if(S==="__data__"&&A==="__json__.json")return {isDataFile:!0,rawUrl:y};if(Hn(S,A))return {isDataFile:!0,rawUrl:y};let R=Pr(S),N=_[9],F=_[8],C=c(_[6]),x=y,O=C!=="public"&&wf.call(this,_)?{expires:_f,browserCache:yf}:null;if(C!=="public"&&!i)try{x=await Xe.bind(this)(y,{dataType:"endpoint",_ref:g});}catch(M){console.error("Error getting signed url for private file:",M),x=y;}let L={access_group:C,filename:A,url:x,path:b,size:R?R.plainSize:me(N),uploaded:me(F),getFile:(M,J)=>{let ve={dataType:M||"download",progress:J,_ref:g},$=()=>Xe.bind(this)(x,Object.assign({},ve,{_update:L}));return O?Xe.bind(this)(y,Object.assign({},ve,O)).catch(()=>$()):$()}};return R&&(L.encrypted=!0,L.stored_size=me(N)),{pathKey:R?R.key:S,obj:L}}catch{return null}}));for(let y of m)if(y&&!y.isDataFile){if(p[y.pathKey]){p[y.pathKey].push(y.obj);continue}p[y.pathKey]=[y.obj];}}s.bin=p;},prv_acs:d=>{for(let p in d)["notify_subscribers","upload_to_feed","feed_referencing_records","notify_referencing_records"].includes(p)?s.table.subscription[p]=d[p]:p==="referencing_index_restrictions"&&Array.isArray(d[p])?s.source[p]=d[p].map(m=>m&&typeof m=="object"&&typeof m.name=="string"?Object.assign({},m,{name:Ee(m.name)}):m):s.source[p]=d[p];},data:async d=>{let p={access_group:s.table.access_group,table_name:s.table.name,user_id:s.user_id,record_id:s.record_id,unique_id:s.unique_id,ctUrl:l},g=()=>{q.call(this)&&(s.encrypted={status:"failed",reason:"DATA_UNAVAILABLE"});},m=async b=>{if(n||!q.call(this)&&!Rr(b))return b;let _=await no.bind(this)(b,p);return _.flag&&(s.encrypted=_.flag),_.value},y=Ef(d);if(y!==d){s.data=await m(y);return}if(d&&typeof d=="object"&&!Array.isArray(d)&&typeof d.__data__=="string"&&Object.keys(d).length===1&&d.__data__.endsWith("/__data__/__json__.json")){let b=d.__data__,_=a.find(A=>A.endsWith(b))||null;if(!_&&!r&&g(),_){if(r){s.data=d;return}try{let A=await Xe.bind(this)(_,{dataType:"blob",_ref:s.reference||null}),S=await aa(A);s.data=await m(JSON.parse(S));}catch(A){console.error("Failed to fetch offloaded record data:",A),s.data=null,g();}return}}s.data=await m(d);}};if(t.record_id)return t;if(Array.isArray(t.bin))for(let d of t.bin)try{if(typeof d!="string")continue;let p=d.split("/").slice(3);p.length>=12&&p[10]==="__data__"&&p[p.length-1]==="__json__.json"&&a.push(d),p.length>=12&&Hn(p[10],p[p.length-1])&&(l=d);}catch{}let f=[];for(let d in u)if(t.hasOwnProperty(d)){let p=u[d](t[d]);p instanceof Promise&&f.push(p);}return o&&(s.user_id="anonymous:"+s.user_id),await Promise.all(f),s}function Af(t){let e=t.substring(3);switch(t.substring(0,3)){case "!S%":return e;case "!N%":let n=e.split("."),i=Number(n[0])-4503599627370496;return n.length===1?i:parseFloat(i.toString()+"."+n[1]);case "!B%":return e==="1";case "!L%":case "!D%":try{return JSON.parse(e)}catch{throw new h("Value parse error.",{code:"PARSE_ERROR"})}default:return t}}async function ca(t){let{endpoints:e}=t;if(typeof e=="string"&&(e=[e]),!Array.isArray(e))throw new h('"endpoints" should be type: array | string.',{code:"INVALID_PARAMETER"});let r=await I.bind(this)("del-files",{endpoints:e,storage:"records"},{auth:true,method:"post"}),n=[];for(let i in r)n.push(Ze.bind(this)(r[i]));return Promise.all(n)}async function Xe(t,e){if(typeof t!="string")throw new h('"url" should be type: string.',{code:"INVALID_PARAMETER"});let r=t,n=t.split("?"),i=n.shift()||"",s=n.length?"?"+n.join("?"):"",o=w.Url(i);t=o+s;let a=false,l=o.split("/"),u=l[2].split("."),f=null;u.length===3&&u[1]==="skapi"&&(f=u[0],a=true);let d=l.slice(3),p=false;if(!a&&(d[0]==="auth"||d[0]==="publ"))try{w.UserId(d[2]),w.UserId(d[3]),p=d[0]=="auth",a=!0;}catch{throw new h("Invalid file url.",{code:"INVALID_PARAMETER"})}let g=f?null:d[1];if(e=w.Params(e,{expires:["number",()=>0],browserCache:["number",()=>0],refresh:["boolean",()=>false],dataType:["base64","blob","endpoint","text","info",()=>"download"],progress:["function","undefined",null],_ref:[null,"string"],_update:A=>A}),e?.dataType==="info")return {url:t,filename:d[d.length-1],fileKey:d[d.length-2],access_group:d[6]==="**"?"private":d[6]==="01"?"authorized":d[6]==="00"?"public":parseInt(d[6]),uploader:d[3],record_id:d[4]==="records"?d[5]:"N/A",filesize:me(d[9]),uploaded:me(d[8])};let m=t.split("/").slice(-1)[0],y=e.expires;if(y){if(!a)throw new h("Expires option can only be used on skapi cdn endpoints.",{code:"INVALID_PARAMETER"});if(y<0)throw new h('"config.expires" should be > 0. (seconds)',{code:"INVALID_PARAMETER"});let A={request:f?"get-host":"get",id:f||d[5],key:r.split("?")[0],expires:y};g&&(A.service=g);let S=e.browserCache,R={auth:true};if(S){if(S<0)throw new h('"config.browserCache" should be > 0. (seconds)',{code:"INVALID_PARAMETER"});R.method="get",R.stableGateway=true,A.browser_cache=S;let N=this.session?.idToken?.payload?.sub||this.user?.user_id;N&&(A.uid=N),A.nocache=bf(y,e.refresh);}t=(await I.bind(this)("get-signed-url",A,R)).url;}else if(p){let A=Math.floor(Date.now()/1e3);if(!this.bearerToken&&(!this.session?.idToken?.payload?.exp||this.session.idToken.payload.exp<A)){this.log("getFile:requesting new token",null);try{await re.bind(this)().getSession({refreshToken:!0}),this.log("getFile:received new tokens",{exp:this.session?.idToken?.payload?.exp,currTime:A,expiresIn:this.session?.idToken?.payload?.exp-A,token:this.session?.accessToken?.jwtToken,refreshToken:this.session?.refreshToken?.token});}catch(F){throw this.log("getFile:new token error",F),new h("User login is required.",{code:"INVALID_REQUEST"})}}let S=this.bearerToken||this.session?.idToken?.jwtToken;if(!S||!this.user?.user_id)throw new h("User login is required.",{code:"INVALID_REQUEST"});t+=`${t.includes("?")?"&":"?"}t=${encodeURIComponent(S)}`;let R=d[6]==="**"?"**":parseInt(d[6]),N=this.user?.access_group??-1;if(this.user.user_id!==d[3]&&(R==="**"||N<R)){let F=d[5];if(this.__private_access_key[F]&&typeof this.__private_access_key[F]=="string")t+=`&p=${encodeURIComponent(this.__private_access_key[F])}`;else if(this.owner!==this.host)try{let C=await this.requestPrivateRecordAccessKey({record_id:F,reference_id:e?._ref});t+=`&p=${encodeURIComponent(C)}`;}catch{}}}if((q.call(this)?ti(t):null)&&e?.dataType!=="endpoint"&&e?.dataType!=="info"){let A=await I.bind(this)(t,null,{method:"get",contentType:null,responseType:"blob",fetchOptions:{progress:e?.progress}},{ignoreService:true}),S=await To.bind(this)(t,A);if(e?.dataType==="blob")return S;if(e?.dataType==="text")return await aa(S);if(e?.dataType==="base64")return await new Promise((F,C)=>{let x=new FileReader;x.onloadend=()=>F(x.result),x.onerror=()=>C(x.error),x.readAsDataURL(S);});let R=URL.createObjectURL(S),N=document.createElement("a");return N.href=R,document.body.appendChild(N),N.setAttribute("download",m),N.click(),document.body.removeChild(N),setTimeout(()=>URL.revokeObjectURL(R),6e4),null}if(e?.dataType==="endpoint")return e._update&&(e._update.url=t),t;if(e?.dataType==="download"){let A=document.createElement("a");return A.href=t,document.body.appendChild(A),A.setAttribute("download",m),A.target="_blank",A.click(),document.body.removeChild(A),null}return new Promise(async(A,S)=>{try{let R=await I.bind(this)(t,null,{method:"get",contentType:null,responseType:e?.dataType==="text"?"text":"blob",fetchOptions:{progress:e?.progress}},{ignoreService:!0});if(e?.dataType==="base64"){let N=new FileReader;N.onloadend=()=>A(N.result),N.readAsDataURL(R);}else A(R);}catch(R){if(e?.browserCache&&!e?.refresh)try{A(await Xe.bind(this)(r,Object.assign({},e,{refresh:!0})));return}catch(N){S(N);return}S(R);}})}function Or(t,e){return `${t||this.service}/${e||this.owner}`}function ui(t,e){let r=this.__my_unique_ids[t];return r?r[e]:void 0}function la(t,e,r){this.__my_unique_ids[t]||(this.__my_unique_ids[t]={}),this.__my_unique_ids[t][e]=r;}function Sf(t,e){this.__my_unique_ids[t]&&delete this.__my_unique_ids[t][e];}function ua(t,e){return !e||e.table===void 0?t:Object.assign({},t,{table:e.table})}async function jt(t){if(await this.__connection,!this.__user&&this.connection?.opt?.require_login===true)throw new h(`This project requires users to sign in before reading its database, so "${t}" is not available to a signed-out visitor.`,{code:"REQUIRE_LOGIN"})}async function da(t,e=false){t=j(t,{ignoreEmpty:true}).data||{};let r=Or.bind(this)(t?.service,t?.owner),n="",i=ia(t);if(i){if(t=i,n=t.record_id||t.unique_id,typeof n=="string"){typeof this.__private_access_key?.[n]=="string"&&(t.private_key=this.__private_access_key?.[n]||void 0);let s=ui.bind(this)(r,n);s&&(e?Sf.bind(this)(r,n):t.record_id=s);}}else {let s=await Z.bind(this)(),o=t?.reference,a=false;typeof o=="object"&&Object.keys(o).length&&(o?.record_id||o?.unique_id?(n=o.record_id||o.unique_id,n&&typeof this.__private_access_key?.[n]=="string"&&(t.private_key=this.__private_access_key?.[n]||void 0),t.reference=n):o?.user_id&&(a=o.user_id===this.user?.user_id,t.reference=o.user_id)),typeof t?.table=="string"&&(t.table={name:t.table,access_group:0}),t.index&&t.index.hasOwnProperty("range")&&t.index.hasOwnProperty("condition")&&delete t.index.range;let l=c=>({table:{name:u=>bt(u,"table.name"),access_group:li.bind(this),subscription:u=>w.UserId(u,'User ID in "subscription"')},reference:"string",index:{name:["$updated","$uploaded","$referenced_count","$user_id",u=>Kt(u,"index.name")],value:u=>{let f={$updated:"number",$uploaded:"number",$referenced_count:"number",$user_id:w.UserId};if(f.hasOwnProperty(c.index.name)){let d=f[c.index.name];if(typeof d=="function")return d(u);if(d!==typeof u)throw new h(`"index.value" should be type: ${d}.`,{code:"INVALID_PARAMETER"});return u}return typeof u=="string"&&!u?"":typeof u=="string"&&ai(c.index.name)?ci(u,"index.value"):Dr(u)},condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq"],range:u=>sa(u,c)},tag:u=>{if(u==null)return u;if(typeof u=="string")return kr(u,"tag");throw new h('"tag" should be type: string.',{code:"INVALID_PARAMETER"})},private_key:"string"});t=w.Params(t||{},l(t),a||s?[]:["table"],{ignoreEmpty:true});}return {query:t,is_reference_fetch:n}}async function fa(t,e){await this.__connection,await jt.call(this,"getRecords");let r=await da.bind(this)(t),n=r.is_reference_fetch,i=await I.bind(this)("get-records",r.query,{fetchOptions:e,auth:!!this.__user,method:this.__user?"post":"get"});n&&i?.reference_private_key&&typeof i.reference_private_key=="string"&&(this.__private_access_key[n]=i.reference_private_key);let s=[];for(let o in i.list)s.push(Ze.bind(this)(i.list[o]));return i.list=await Promise.all(s),i}function ha(t){let e="",r=[],n=Or.bind(this)(t?.service,t?.owner),i=w.Params(t||{},{record_id:o=>{let a=typeof o=="string"?ui.bind(this)(n,o):void 0;return a||Ue(o,"record_id",{allowEmpty:false})},unique_id:["string",null],readonly:"boolean",table:{name:o=>bt(o,"table.name"),subscription:[null,{is_subscription_record:"boolean",upload_to_feed:"boolean",notify_subscribers:"boolean",feed_referencing_records:"boolean",notify_referencing_records:"boolean"}],access_group:li.bind(this)},source:{referencing_limit:o=>{if(o===null)return null;if(typeof o=="number"){if(0>o)throw new h('"reference_limit" should be >= 0',{code:"INVALID_PARAMETER"});if(o>4503599627370546)throw new h('"reference_limit" should be <= 4503599627370546',{code:"INVALID_PARAMETER"});return o}throw new h('"reference_limit" should be type: <number | null>',{code:"INVALID_PARAMETER"})},prevent_multiple_referencing:"boolean",can_remove_referencing_records:"boolean",only_granted_can_reference:"boolean",allow_granted_to_grant_others:"boolean",referencing_index_restrictions:o=>{if(o===void 0)return;if(!o||Array.isArray(o)&&!o.length)return null;let a={name:c=>Kt(c,'"name" in "index_restrictions"'),value:c=>Dr(c),condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne",()=>null],range:c=>{if(c!==null&&typeof o.value!=typeof c)throw new h('Index restriction "range" type should match the type of "value".',{code:"INVALID_PARAMETER"});if(!o.hasOwnProperty("value"))throw new h('Index restriction "value" is required.',{code:"INVALID_PARAMETER"});return c}};Array.isArray(o)||(o=[o]);let l=o.map(c=>w.Params(c,a,["name"]));if(l.length)for(let c of l)c.condition&&c.hasOwnProperty("range")&&delete c.range;return l}},reference:o=>{if(o===null)return {record_id:null};if(o){if(typeof o=="string"){e=o;let a=ui.bind(this)(n,o);return a||o}if(typeof o!="object")throw new h('"reference" should be type: <string | object>.',{code:"INVALID_PARAMETER"});return w.Params(o,{unique_id:"string",record_id:a=>a==null?a:(e=a,typeof this.__private_access_key?.[a]=="string"&&(t.reference_private_key=this.__private_access_key[a]||void 0),Ue(a,"reference.record_id",{allowEmpty:false,onlyAlphanumeric:true}))})}},index:[null,{name:o=>Kt(o,"index.name"),value:o=>Dr(o)}],tags:o=>{if(o==null)return o;if(typeof o=="string"&&(o=o.split(",").map(a=>a.trim())),!Array.isArray(o))throw new h('"tag" should be type: <string | string[]>.',{code:"INVALID_PARAMETER"});return o.map(a=>kr(a,"tag"))},remove_bin:o=>{if(!o)return null;let a=[];if(Array.isArray(o))for(let l of o)if(typeof l=="string")a.push(l.split("?")[0]);else if(l.url&&l.size&&l.filename){let u=l.url.split("/").slice(0,3).join("/")+"/"+l.path;a.push(u);}else throw new h('"remove_bin" should be type: <string[] | BinaryFile[] | null>',{code:"INVALID_PARAMETER"});else throw new h('"remove_bin" should be type: <string[] | BinaryFile[] | null>',{code:"INVALID_PARAMETER"});return a},progress:"function",data:o=>o},[],{precall:o=>{let a=o?.data||{};if(!a?.record_id&&!a.table)throw new h('"table.name" is required.',{code:"INVALID_PARAMETER"});typeof a.table=="string"&&(a.table={name:a.table},a?.record_id||(a.table.access_group=0)),o.files&&(r=o.files);}}),s=t.progress||null;if(delete i.progress,!this.__user){let o=!!(i.table?.subscription?.is_subscription_record||i.table?.subscription?.upload_to_feed||i.table?.subscription?.notify_subscribers||i.table?.subscription?.feed_referencing_records||i.table?.subscription?.notify_referencing_records);if(i.record_id)throw new h("Public users cannot update existing records.",{code:"INVALID_REQUEST"});if(i.table.access_group!=="public"&&i.table.access_group!==0)throw new h("Public users can only post records to public tables.",{code:"INVALID_REQUEST"});if(o)throw new h("Public users cannot post subscription records.",{code:"INVALID_REQUEST"});if(i.remove_bin)throw new h("Public users cannot remove files from records.",{code:"INVALID_REQUEST"});if(i.unique_id)throw new h("Public users cannot set unique_id for records.",{code:"INVALID_REQUEST"})}return {config:i,progress:s,is_reference_post:e,files:r}}async function pa(t){if(await this.__connection,!Array.isArray(t)||!t.length)throw new h('"params" should be a non-empty array.',{code:"INVALID_PARAMETER"});let e=[],r,n,i=null,s={},a={_is_bulk_:await Promise.all(t.map(async(p,g)=>{if(!p||typeof p!="object"||Array.isArray(p))throw new h(`"params[${g}]" should be type: <object>.`,{code:"INVALID_PARAMETER"});let m=ha.bind(this)(p),y=m.config;if(q.call(this)){let b=Object.prototype.hasOwnProperty.call(y,"data"),_=await Wn.bind(this)(y.data,ua(p,y),b);_.encrypted&&(y.data=_.send,s[g]=_.plain);}if(m.is_reference_post&&e.push(m.is_reference_post),typeof y.progress=="function"&&i===null&&(i=y.progress),y.service!==void 0){if(r===void 0)r=y.service;else if(r!==y.service)throw new h('All bulk params should share the same "service" value.',{code:"INVALID_PARAMETER"})}if(y.owner!==void 0){if(n===void 0)n=y.owner;else if(n!==y.owner)throw new h('All bulk params should share the same "owner" value.',{code:"INVALID_PARAMETER"})}return delete y.progress,delete y.service,delete y.owner,y})),service:"",owner:""};r!==void 0&&(a.service=r),n!==void 0&&(a.owner=n);let l={auth:!!this.__user,method:"post"},c={};Object.keys(c).length&&Object.assign(l,{fetchOptions:c});let u=await I.bind(this)("post-record",a,l),f=await Promise.all(u.map((p,g)=>Ze.bind(this)(p,"called from postRecord",false,s.hasOwnProperty(g))));for(let p=0;p<f.length;p++)s.hasOwnProperty(p)&&f[p]&&!f[p].error&&(f[p].data=s[p],f[p].encrypted={status:"encrypted"});let d=Or.bind(this)(r,n);for(let p=0;p<u.length;p++){let g=u[p],m=f[p];if(g&&typeof g=="object"&&g.error&&m&&!m.record_id&&(m.error=g.error),typeof g?.reference_private_key=="string")for(let y of e)this.__private_access_key[y]=g.reference_private_key;m?.unique_id&&la.bind(this)(d,m.unique_id,m.record_id);}return f}async function di(t,e,r){if(await this.__connection,!e)throw new h('"config" argument is required.',{code:"INVALID_PARAMETER"});let n=ha.bind(this)(e),i=n.config,s=n.progress,o=n.is_reference_post,a={auth:!!this.__user,method:"post"},l=[],c=j(t);r&&Array.isArray(r)&&r.length&&(l=l.concat(r)),c.files&&Array.isArray(c.files)&&c.files.length&&(l=l.concat(c.files));let u=e?.data!==void 0?e.data:c.data,f=u!==void 0,d=await Wn.bind(this)(u,ua(e,i),f),p=null;p=Object.assign({},i),delete p.data,d.omit||(p.data=d.send);let g={};if(typeof s=="function"&&(g.progress=s),Object.keys(g).length&&Object.assign(a,{fetchOptions:g}),d.files==="decrypt"&&e?.record_id){let _=await ri.bind(this)(e.record_id,"decrypt",s);if(_.length){let A=p.remove_bin;p.remove_bin=Array.isArray(A)?A.concat(_):_;}}if(d.spill&&e?.record_id){let _=new FormData;if(_.append(Lt,new File([d.spill],"payload.bin",{type:"application/octet-stream"})),await $t.bind(this)(_,{record_id:e.record_id}),d.retireCt){let A=p.remove_bin,S=[d.retireCt];p.remove_bin=Array.isArray(A)?A.concat(S):S;}}let m=await I.bind(this)("post-record",p,a);if(d.encrypted&&m?.rec&&to.bind(this)(m.rec,d.dek),d.files==="encrypt"&&m?.rec)try{let _=await ri.bind(this)(m.rec,"encrypt",s);_.length&&await di.bind(this)(void 0,{record_id:m.rec,remove_bin:_});}catch(_){console.error("Failed to encrypt existing attachments after making the record private:",_);}if(oe()&&l.length){let _=new FormData;for(let R of l)_.append(R.name,R.file,R.file.name);let A={record_id:m.rec,progress:s};i.hasOwnProperty("service")&&(A.service=i.service);let{bin_endpoints:S}=await $t.bind(this)(_,A);m.bin?m.bin.push(...S):m.bin=S;}o&&typeof m?.reference_private_key=="string"&&(this.__private_access_key[o]=m.reference_private_key);let y=!!m&&m.data&&typeof m.data=="object"&&!Array.isArray(m.data)&&typeof m.data.__data__=="string"&&m.data.__data__.endsWith("/__data__/__json__.json"),b=await Ze.bind(this)(m,"called from postRecord",true,d.encrypted);if(y&&(b.data=c.data),d.encrypted&&(b.data=d.plain,b.encrypted={status:"encrypted",recipients:Object.keys(d.send.k||{})}),b.unique_id){let _=Or.bind(this)(i?.service,i?.owner);la.bind(this)(_,b.unique_id,b.record_id),oe()&&(this.__uniqueIdsPersistTimer!==null&&clearTimeout(this.__uniqueIdsPersistTimer),this.__uniqueIdsPersistTimer=setTimeout(()=>{this.__uniqueIdsPersistTimer=null;try{window.sessionStorage.setItem(`${_}:uniqueids`,JSON.stringify(this.__my_unique_ids[_]||{}));}catch{}},500));}return b}async function ga(t,e){await jt.call(this,"getTables");let r=await I.bind(this)("get-table",w.Params(t||{},{table:i=>bt(i,"table",{allowEmpty:true}),condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}),Object.assign({auth:!!this.__user},{fetchOptions:e})),n={cnt_rec:"number_of_records",tbl:"table",srvc:"service",grp_:"number_of_records_in_access_group_"};if(Array.isArray(r?.list))for(let i of r.list){for(let s in n){if(s==="grp_"){for(let o in i)if(o.startsWith("grp_")){let a=o.substring(4);a==="pv"?a="private":a==="00"?a="public":a==="01"?a="authorized":a==="99"&&(a="admin"),i[`number_of_records_in_access_group_${a}`]=i[o],delete i[o];}}i.hasOwnProperty(s)&&(i[n[s]]=i[s],delete i[s]);}typeof i.table=="string"&&(i.table=Ee(i.table));}return r}async function ma(t,e){if(await jt.call(this,"getIndexes"),!t?.table)throw new h('"table" is required.',{code:"INVALID_PARAMETER"});let r=w.Params(t||{},{table:s=>bt(s,"table",{allowEmpty:true}),index:s=>Kt(s,"index.name"),order:{by:["average_number","total_number","number_count","average_bool","total_bool","bool_count","string_count","index_name","number_of_records"],value:s=>{if(t?.order?.by==="index_name"&&typeof s=="string")return Ue(s,"order.value",{allowEmpty:true,maxLength:256,blockKeyDelimiters:true});if(typeof s!="string"&&typeof s!="number"&&typeof s!="boolean")throw new h('"order.value" should be type: <string | number | boolean>.',{code:"INVALID_PARAMETER"});return s},condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}},["table"]);if(r.hasOwnProperty("order")){if(!r.order?.by)throw new h('"order.by" is required.',{code:"INVALID_PARAMETER"});if(r.order.hasOwnProperty("condition")&&!r.order.hasOwnProperty("value"))throw new h('"value" is required for "condition".',{code:"INVALID_PARAMETER"});if(r.hasOwnProperty("index")&&r.index.substring(r.index.length-1)!==".")throw new h('"index" should be a parent index name of the compound index when using "order.by"',{code:"INVALID_PARAMETER"})}let n=await I.bind(this)("get-index",r,Object.assign({auth:!!this.__user},{fetchOptions:e})),i={cnt_bool:"boolean_count",cnt_numb:"number_count",totl_numb:"total_number",totl_bool:"total_bool",avrg_numb:"average_number",avrg_bool:"average_bool",cnt_str:"string_count"};return Array.isArray(n?.list)&&(n.list=n.list.map(s=>{let o=s.idx.split("/"),a={table:Ee(o[1]),index:Ee(o[2]),number_of_records:s.cnt_rec};for(let l in i)Object.prototype.hasOwnProperty.call(s,l)&&(a[i[l]]=s[l]);return a})),n}async function ya(t,e){await jt.call(this,"getTags");let r=await I.bind(this)("get-tag",w.Params(t||{},{table:n=>bt(n,"table",{allowEmpty:true}),tag:n=>kr(n,"tag",{allowEmpty:true}),condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}),Object.assign({auth:!!this.__user},{fetchOptions:e}));return Array.isArray(r?.list)&&(r.list=r.list.map(n=>{let i=n.tag.split("/");return {table:Ee(i[1]),tag:Ee(i[0]),number_of_records:n.cnt_rec}})),r}async function _a(t,e){await jt.call(this,"getUniqueId");let r=await I.bind(this)("get-uniqueid",w.Params(t||{},{unique_id:"string",condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}),Object.assign({auth:!!this.__user},{fetchOptions:e}));if(Array.isArray(r?.list))for(let n in r.list){let i=r.list[n];r.list[n]={unique_id:i.unq,record_id:i.rec};}return r}async function ba(t,e){await this.__connection;let r=await da.bind(this)(t,true),n=r.is_reference_fetch,i=await I.bind(this)("del-records",r.query,{auth:true,fetchOptions:e});return n&&typeof i?.reference_private_key=="string"&&(this.__private_access_key[n]=i.reference_private_key),Array.isArray(i?.list)&&(i.list=await Promise.all(i.list.map(async s=>{if(!s||typeof s!="object")return s;try{return await Ze.bind(this)(s,"called from deleteRecords",!0,!1,!0)}catch{return s}}))),i?.message||i}async function wa(t){if(q.call(this)){let e=typeof t.user_id=="string"?[t.user_id]:t.user_id;Array.isArray(e)&&e.length&&await ei.bind(this)(t.record_id,e);}return va.bind(this)({record_id:t.record_id,user_id:t.user_id,execute:"add"})}async function Ea(t){let e=await va.bind(this)({record_id:t.record_id,user_id:t.user_id||null,execute:"remove"});if(q.call(this)){let r=typeof t.user_id=="string"?[t.user_id]:t.user_id;await yo.bind(this)(t.record_id,Array.isArray(r)&&r.length?r:null);}return e}async function Aa(t,e){let r={record_id:t.record_id||void 0,user_id:t.user_id||void 0,execute:"list"};if(!r.record_id&&!r.user_id)throw new h("Either record_id or user_id must be provided.",{code:"INVALID_PARAMETER"});if(r.user_id)if(typeof r.user_id=="string")w.UserId(r.user_id),r.user_id=[r.user_id];else if(Array.isArray(r.user_id))for(let s of r.user_id)w.UserId(s);else throw new h("user_id should be type: <string | string[]>",{code:"INVALID_PARAMETER"});let n=s=>(s.rec_usr?(s.record_id=s.rec_usr.split("/")[0],s.user_id=s.rec_usr.split("/")[1]):s.usr_rec&&(s.user_id=s.usr_rec.split("/")[0],s.record_id=s.usr_rec.split("/")[1]),s),i=await I.bind(this)("grant-private-access",r,{auth:true,fetchOptions:e});return i.list=i.list.map(n),i}function Sa(t){let e=t.record_id,r=t.reference_id||void 0;if(!e)throw new h("Record ID is required.",{code:"INVALID_PARAMETER"});if(typeof e!="string")throw new h("Record ID should be type: <string | string[]>",{code:"INVALID_PARAMETER"});if(r&&typeof r!="string")throw new h("Reference ID should be type: <string>",{code:"INVALID_PARAMETER"});if(typeof this.__private_access_key[e]=="string")return Promise.resolve(this.__private_access_key[e]);if(Nr[e])return Nr[e];let n=I.bind(this)("request-private-access-key",{record_id:e,reference_id:r},{auth:true}).then(i=>{let s=typeof i=="string"?i:i?.private_key;if(typeof s!="string")throw new h("Invalid private access key response.",{code:"ERROR"});return this.__private_access_key[e]=s,s}).finally(()=>{delete Nr[e];});return Nr[e]=n,n}function va(t){t.execute;let r=w.Params(t,{record_id:"string",user_id:n=>{if(!n)throw new h("User ID is required.",{code:"INVALID_PARAMETER"});let i=n;if(typeof i=="string"&&(i=[i]),i.length>100)throw new h("Cannot process more than 100 users at once.",{code:"INVALID_REQUEST"});for(let s of i)w.UserId(s,'User ID in "user_id"');return i},execute:["add","remove"]},["execute","record_id","user_id"]);return r.user_id||(r.user_id=null),I.bind(this)("grant-private-access",r,{auth:true})}var k={},Q={},Ae={},Ce={},xe={},Fr={},Lr={};function Ra(t,e,r){t[e]||(t[e]=[]),t[e].push(r);}async function Mr(t,e,r){let n=[];if(t[e]){for(let i of t[e])if(i){let s=r(i);s instanceof Promise&&(s=await s),n.push(s);}delete t[e];}return n}async function hi(t,e){if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});let r=await this.__socket;async function n(i,s,o){this.log("answerSdpOffer from",s),await k[s].setRemoteDescription(new RTCSessionDescription(i));let a=await k[s].createAnswer();await k[s].setLocalDescription(a),o.send(JSON.stringify({action:"rtc",uid:s,content:{sdpanswer:a},token:this.session.accessToken.jwtToken}));}k?.[e]?t?(await Mr(Lr,e,i=>n.bind(this)(i,e,r)),await n.bind(this)(t,e,r)):await Mr(Lr,e,i=>n.bind(this)(i,e,r)):t&&Ra(Lr,e,t);}async function pi(t,e){if(this.log("receiveIceCandidate",t),k?.[e]&&k[e]?.remoteDescription&&k[e]?.remoteDescription?.type){if(!t)return Mr(Fr,e,r=>k[e].addIceCandidate(r));await Mr(Fr,e,r=>k[e].addIceCandidate(r)),await k[e].addIceCandidate(t);}else Ra(Fr,e,t);}async function Se(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebRTC is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});w.Params(t,{cid:s=>{if(typeof s!="string")throw new h('"cid" should be type: <string>.',{code:"INVALID_PARAMETER"});if(s&&s.slice(0,4)!=="cid:")throw new h('"cid" should be a valid connection id.',{code:"INVALID_PARAMETER"});return s},close:"boolean"});let e=await this.__socket,{cid:r,close_all:n=false}=t||{};if(!n&&!r)throw new h('"cid" is required.',{code:"INVALID_PARAMETER"});let i=s=>{if(!s)throw new h('"cid" is required.',{code:"INVALID_PARAMETER"});if(delete Lr[s],delete Fr[s],Q[s]&&Object.values(Q[s]).forEach(o=>{o.readyState!=="closed"&&o.close();}),delete Q[s],k?.[s]){k[s].connectionState!=="closed"&&(k[s].close(),e.send(JSON.stringify({action:"rtc",uid:s,content:{hungup:this.user.user_id},token:this.session.accessToken.jwtToken})));let o={type:"connectionstatechange",target:k[s],timestamp:new Date().toISOString(),state:k[s].connectionState,iceState:k[s].iceConnectionState,signalingState:k[s].signalingState};xe[s]&&xe[s](o),this.log("closeRTC",o);}delete xe[s],delete Ce[s],delete Ae[s],delete k[s];};if(n)for(let s in k)i(s);else i(r);this.log("Cleaning up media stream..."),this.__mediaStream&&(this.__mediaStream.getTracks().forEach(s=>{s.stop();}),this.__mediaStream=null);}async function Ta(t){if(t instanceof MediaStream)return t;if(!t.video&&!t.audio){let e=new MediaStream,r=document.createElement("canvas");r.width=1,r.height=1;let i=r.captureStream().getVideoTracks()[0];return e.addTrack(i),e}return window.navigator.mediaDevices.getUserMedia(t)}async function Ia(t,e){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebRTC is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(typeof e!="function")throw new h("Callback is required.",{code:"INVALID_PARAMETER"});if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});t=w.Params(t,{cid:o=>{if(typeof o!="string")throw new h('"cid" should be type: <string>.',{code:"INVALID_PARAMETER"});if(o&&o.slice(0,4)!=="cid:")throw new h('"cid" should be a valid connection id.',{code:"INVALID_PARAMETER"});return o},ice:["string",()=>"stun:stun.skapi.com:3468"],media:o=>o,channels:["text-chat","file-transfer","video-chat","voice-chat","gaming",{ordered:"boolean",maxPacketLifeTime:"number",maxRetransmits:"number",protocol:"string"},()=>[{ordered:true,maxPacketLifeTime:10,protocol:"default"}]]},["cid"]);let{cid:r,ice:n}=t;if(!(t?.media instanceof MediaStream)&&(t?.media?.video||t?.media?.audio)&&window.location.hostname!=="localhost"&&window.location.protocol!=="https:")throw new h("Media stream is only supported on either localhost or https.",{code:"INVALID_REQUEST"});let i=this.__socket?await this.__socket:this.__socket;if(!i)throw new h("No realtime connection. Execute connectRealtime() before this method.",{code:"INVALID_REQUEST"});if(i.readyState!==1)throw new h("Realtime connection is not ready.",{code:"INVALID_REQUEST"});let s={iceServers:[{urls:n}]};k?.[r]||(k[r]=new RTCPeerConnection(s)),t?.media&&(this.__mediaStream=await Ta(t.media),this.__mediaStream.getTracks().forEach(o=>{k[r].addTrack(o,this.__mediaStream);})),xe[r]=e,Q[r]||(Q[r]={});for(let o=0;o<t.channels.length;o++){let a=t.channels[o];if(typeof a=="string")switch(a){case "text-chat":a={ordered:true,maxRetransmits:10,protocol:"text-chat"};break;case "file-transfer":a={ordered:false,maxPacketLifeTime:3e3,protocol:"file-transfer"};break;case "video-chat":a={ordered:true,maxRetransmits:10,protocol:"video-chat"};break;case "voice-chat":a={ordered:true,maxRetransmits:10,protocol:"voice-chat"};break;case "gaming":a={ordered:false,maxPacketLifeTime:100,protocol:"gaming"};break;default:a={ordered:true,maxRetransmits:10,protocol:"default"};break}let l=a.protocol||"default";if(Object.keys(Q[r]).includes(l))throw new h(`Data channel with the protocol "${l}" already exists.`,{code:"INVALID_REQUEST"});let c=k[r].createDataChannel(l,a);Q[r][l]=c;}for(let o in Q[r]){let a=Q[r][o];xa.bind(this)(r,a);}return Ua.bind(this)(r,["onnegotiationneeded"]),await fi.bind(this)(r),{hangup:()=>Ae[r]&&Ae[r](false),connection:new Promise(o=>{Ae[r]=(a=>{if(this.log("receiver picked up the call",r),!a)return Se.bind(this)({cid:r}),null;k[r].onnegotiationneeded=()=>{this.log("onnegotiationneeded",`sending offer to "${r}".`),fi.bind(this)(r),xe[r]&&xe[r]({type:"negotiationneeded",target:k[r],timestamp:new Date().toISOString(),signalingState:k[r].signalingState,connectionState:k[r].iceConnectionState,gatheringState:k[r].iceGatheringState});},o({target:k[r],channels:Q[r],hangup:()=>Se.bind(this)({cid:r}),media:this.__mediaStream});}).bind(this);})}}function Pa(t){return async(e,r)=>{e=e||{},e=j(e).data;let n=t.sender_cid,i=await this.__socket;if(!Ce[n])return null;if(typeof r!="function")throw new h("Callback is required.",{code:"INVALID_PARAMETER"});if(!(e?.media instanceof MediaStream)&&(e?.media?.video||e?.media?.audio)&&window.location.hostname!=="localhost"&&window.location.protocol!=="https:")throw new h("Media stream is only supported on either localhost or https.",{code:"INVALID_REQUEST"});let{ice:s="stun:stun.skapi.com:3468"}=e;return k?.[n]||(k[n]=new RTCPeerConnection({iceServers:[{urls:s}]})),e?.media&&(this.__mediaStream=await Ta(e.media),this.__mediaStream.getTracks().forEach(o=>{k[n].addTrack(o,this.__mediaStream);})),delete Ce[n],xe[n]=r,Q[n]||(Q[n]={}),k[n].ondatachannel=o=>{this.log("ondatachannel",`received data channel "${o.channel.label}".`);let a=o.channel;Q[n][a.label]=a,xa.bind(this)(n,a);},Ua.bind(this)(n,["onnegotiationneeded"]),await hi.bind(this)(null,n),await pi.bind(this)(null,n),i.send(JSON.stringify({action:"rtc",uid:n,content:{pickup:this.user.user_id},token:this.session.accessToken.jwtToken})),{target:k[n],channels:Q[n],hangup:()=>Se.bind(this)({cid:n}),media:this.__mediaStream}}}async function fi(t){if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});this.log("sendOffer",t);let e=await this.__socket,r=await k[t].createOffer();await k[t].setLocalDescription(r);let n=k[t].localDescription;this.log("rtcSdpOffer to",n),e.send(JSON.stringify({action:"rtc",uid:t,content:{sdpoffer:n},token:this.session.accessToken.jwtToken}));}async function vf(t,e){if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});this.log("sendIceCandidate to",e);let r=await this.__socket;if(!t.candidate){this.log("candidate-end","all ice candidates have been sent");return}let n=xe[e]||(()=>{}),i=t.candidate;this.log("ice gathering state set to",k[e].iceGatheringState),n({type:"icecandidate",target:k[e],timestamp:new Date().toISOString(),candidate:t.candidate.candidate,sdpMid:t.candidate.sdpMid,sdpMLineIndex:t.candidate.sdpMLineIndex,usernameFragment:t.candidate.usernameFragment,protocol:t.candidate.protocol,gatheringState:k[e].iceGatheringState,connectionState:k[e].iceConnectionState}),r.send(JSON.stringify({action:"rtc",uid:e,content:{candidate:i},token:this.session.accessToken.jwtToken}));}function Ua(t,e){let r=new Set(e),n=xe[t]||(o=>{}),i=k[t],s={ontrack:o=>{n({type:"track",target:i,timeStamp:o.timeStamp,streams:o.streams,track:o.track});},onicecandidate:o=>{vf.bind(this)(o,t),o.candidate?n({type:"icecandidate",target:i,timestamp:new Date().toISOString(),candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment,protocol:o.candidate.protocol,gatheringState:i.iceGatheringState,connectionState:i.iceConnectionState}):n({type:"icecandidateend",target:i,timestamp:new Date().toISOString()});},onicecandidateerror:o=>{n({type:"icecandidateerror",target:i,timestamp:new Date().toISOString(),errorCode:o.errorCode,errorText:o.errorText,url:o.url,hostCandidate:o.hostCandidate,gatheringState:i.iceGatheringState,connectionState:i.iceConnectionState});},oniceconnectionstatechange:()=>{n({type:"iceconnectionstatechange",target:i,timestamp:new Date().toISOString(),state:i.iceConnectionState,gatheringState:i.iceGatheringState,signalingState:i.signalingState});},onicegatheringstatechange:()=>{n({type:"icegatheringstatechange",target:i,timestamp:new Date().toISOString(),state:i.iceGatheringState,connectionState:i.iceConnectionState,signalingState:i.signalingState});},onsignalingstatechange:()=>{n({type:"signalingstatechange",target:i,timestamp:new Date().toISOString(),state:i.signalingState,connectionState:i.iceConnectionState,gatheringState:i.iceGatheringState});},onnegotiationneeded:()=>{fi.bind(this)(t),n({type:"negotiationneeded",target:i,timestamp:new Date().toISOString(),signalingState:i.signalingState,connectionState:i.iceConnectionState,gatheringState:i.iceGatheringState});},onconnectionstatechange:()=>{n({type:"connectionstatechange",target:i,timestamp:new Date().toISOString(),state:i.connectionState,iceState:i.iceConnectionState,signalingState:i.signalingState});let o=i.connectionState;(o==="disconnected"||o==="failed"||o==="closed")&&Se.bind(this)({cid:t});}};for(let[o,a]of Object.entries(s))r.has(o)||(i[o]=a);}function xa(t,e,r){let n=new Set(r),i=xe[t]||(o=>{}),s={onmessage:o=>{let a={type:o.type,target:e,timeStamp:o.timeStamp,data:o.data,lastEventId:o.lastEventId,origin:o.origin,readyState:e.readyState,bufferedAmount:e.bufferedAmount};this.log(`${e.label}: message`,o.data),i(a);},onerror:o=>{let a={type:o.type,target:e,timeStamp:o.timeStamp,error:o.error.message,errorCode:o.error.errorDetail,readyState:e.readyState,label:e.label};this.log(`${e.label}: error`,o.error.message),i(a);},onclose:o=>{let a={type:o.type,target:e,timeStamp:o.timeStamp,readyState:e.readyState,label:e.label,id:e.id};this.log(`${e.label}: closed`,null),i(a),Q[t]&&(delete Q[t][e.label],Object.keys(Q[t]).length===0&&Se.bind(this)({cid:t}));},onbufferedamountlow:o=>{let a={target:e,bufferedAmount:e.bufferedAmount,bufferedAmountLowThreshold:e.bufferedAmountLowThreshold,type:o.type,timeStamp:o.timeStamp};this.log(`${e.label}: bufferedamountlow`,e.bufferedAmount),i(a);},onopen:o=>{this.log("dataChannel",`data channel: "${e.label}" is open and ready to send messages.`);let a={type:o.type,target:e,timeStamp:o.timeStamp,readyState:e.readyState,label:e.label,id:e.id,ordered:e.ordered,maxRetransmits:e.maxRetransmits,protocol:e.protocol};i(a);}};for(let[o,a]of Object.entries(s))n.has(o)||(e[o]=a);}var qe;function Ca(){return qe}var He=null,Ht=true,wt=0;async function Rf(){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(await this.getProfile(),!this.session)throw new h("No access.",{code:"INVALID_REQUEST"});let t=await this.record_endpoint;return new WebSocket(t.websocket_private+"?token="+this.session.accessToken.jwtToken)}var gi=null;async function qr(){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});Ht=true;let t=this.__socket?await this.__socket:this.__socket;Se.bind(this)({close_all:true}),qe&&At.bind(this)({group:null}),wt=0,He&&(He.terminate(),He=null);try{t&&t.close();}catch{}return window.removeEventListener("visibilitychange",gi),this.__socket=null,null}async function Et(t,e=50,r){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(typeof t!="function")throw new h("Callback must be a function.",{code:"INVALID_REQUEST"});if(r==="reconnect"){if(this.__socket instanceof Promise){let i=await this.__socket;if(i.readyState!==WebSocket.CLOSED&&i.readyState!==WebSocket.CLOSING)return this.__socket}}else if(Ht&&(gi=()=>{!document.hidden&&!Ht&&Et.bind(this)(t,0,"reconnect");},this.__socket instanceof Promise))return this.__socket;He&&(He.terminate(),He=null);let n={value:null};return this.__socket=new Promise(async(i,s)=>{let o=a=>{this.__socket===n.value&&(this.__socket=null),s(a);};try{await yt.bind(this)();}catch(a){o(a);return}setTimeout(async()=>{try{let a=await Rf.bind(this)();a.onopen=()=>{Ht=!1,wt=0,r!=="reconnect"&&window.addEventListener("visibilitychange",gi),this.log("realtime onopen","Connected to WebSocket server."),t({type:"success",message:"Connected to WebSocket server."}),qe&&a.send(JSON.stringify({action:"joinRoom",rid:qe,token:this.session.accessToken.jwtToken}));let l=`
206
+ var Dc=Object.create;var et=Object.defineProperty;var bi=Object.getOwnPropertyDescriptor;var Nc=Object.getOwnPropertyNames;var Oc=Object.getPrototypeOf,Fc=Object.prototype.hasOwnProperty;var Lc=(t,e,r)=>e in t?et(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Ve=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var tt=(t,e)=>()=>(t&&(e=t(t=0)),e);var ie=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),zt=(t,e)=>{for(var r in e)et(t,r,{get:e[r],enumerable:true});},wi=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Nc(e))!Fc.call(t,i)&&i!==r&&et(t,i,{get:()=>e[i],enumerable:!(n=bi(e,i))||n.enumerable});return t};var rt=(t,e,r)=>(r=t!=null?Dc(Oc(t)):{},wi(!t||!t.__esModule?et(r,"default",{value:t,enumerable:true}):r,t)),nt=t=>wi(et({},"__esModule",{value:true}),t),P=(t,e,r,n)=>{for(var i=bi(e,r),s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(o(e,r,i))||i);return i&&et(e,r,i),i};var Re=(t,e,r)=>Lc(t,typeof e!="symbol"?e+"":e,r);var vi=ie(Xt=>{Xt.byteLength=Vc;Xt.toByteArray=$c;Xt.fromByteArray=Hc;var Te=[],de=[],qc=typeof Uint8Array<"u"?Uint8Array:Array,Gr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(We=0,Ai=Gr.length;We<Ai;++We)Te[We]=Gr[We],de[Gr.charCodeAt(We)]=We;var We,Ai;de[45]=62;de[95]=63;function Si(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return [r,n]}function Vc(t){var e=Si(t),r=e[0],n=e[1];return (r+n)*3/4-n}function Bc(t,e,r){return (e+r)*3/4-r}function $c(t){var e,r=Si(t),n=r[0],i=r[1],s=new qc(Bc(t,n,i)),o=0,a=i>0?n-4:n,l;for(l=0;l<a;l+=4)e=de[t.charCodeAt(l)]<<18|de[t.charCodeAt(l+1)]<<12|de[t.charCodeAt(l+2)]<<6|de[t.charCodeAt(l+3)],s[o++]=e>>16&255,s[o++]=e>>8&255,s[o++]=e&255;return i===2&&(e=de[t.charCodeAt(l)]<<2|de[t.charCodeAt(l+1)]>>4,s[o++]=e&255),i===1&&(e=de[t.charCodeAt(l)]<<10|de[t.charCodeAt(l+1)]<<4|de[t.charCodeAt(l+2)]>>2,s[o++]=e>>8&255,s[o++]=e&255),s}function Kc(t){return Te[t>>18&63]+Te[t>>12&63]+Te[t>>6&63]+Te[t&63]}function jc(t,e,r){for(var n,i=[],s=e;s<r;s+=3)n=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(t[s+2]&255),i.push(Kc(n));return i.join("")}function Hc(t){for(var e,r=t.length,n=r%3,i=[],s=16383,o=0,a=r-n;o<a;o+=s)i.push(jc(t,o,o+s>a?a:o+s));return n===1?(e=t[r-1],i.push(Te[e>>2]+Te[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(Te[e>>10]+Te[e>>4&63]+Te[e<<2&63]+"=")),i.join("")}});var Ri=ie(Jr=>{Jr.read=function(t,e,r,n,i){var s,o,a=i*8-n-1,l=(1<<a)-1,c=l>>1,u=-7,f=r?i-1:0,d=r?-1:1,p=t[e+f];for(f+=d,s=p&(1<<-u)-1,p>>=-u,u+=a;u>0;s=s*256+t[e+f],f+=d,u-=8);for(o=s&(1<<-u)-1,s>>=-u,u+=n;u>0;o=o*256+t[e+f],f+=d,u-=8);if(s===0)s=1-c;else {if(s===l)return o?NaN:(p?-1:1)*(1/0);o=o+Math.pow(2,n),s=s-c;}return (p?-1:1)*o*Math.pow(2,s-n)};Jr.write=function(t,e,r,n,i,s){var o,a,l,c=s*8-i-1,u=(1<<c)-1,f=u>>1,d=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:s-1,g=n?1:-1,m=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=u?(a=0,o=u):o+f>=1?(a=(e*l-1)*Math.pow(2,i),o=o+f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+p]=a&255,p+=g,a/=256,i-=8);for(o=o<<i|a,c+=i;c>0;t[r+p]=o&255,p+=g,o/=256,c-=8);t[r+p-g]|=m*128;};});var Ii=ie((Ff,Ti)=>{var Wc={}.toString;Ti.exports=Array.isArray||function(t){return Wc.call(t)=="[object Array]"};});var ir=ie(st=>{var Yr=vi(),it=Ri(),xi=Ii();st.Buffer=E;st.SlowBuffer=Xc;st.INSPECT_MAX_BYTES=50;E.TYPED_ARRAY_SUPPORT=globalThis.TYPED_ARRAY_SUPPORT!==void 0?globalThis.TYPED_ARRAY_SUPPORT:Gc();st.kMaxLength=Zt();function Gc(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},t.foo()===42&&typeof t.subarray=="function"&&t.subarray(1,1).byteLength===0}catch{return false}}function Zt(){return E.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Ne(t,e){if(Zt()<e)throw new RangeError("Invalid typed array length");return E.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=E.prototype):(t===null&&(t=new E(e)),t.length=e),t}function E(t,e,r){if(!E.TYPED_ARRAY_SUPPORT&&!(this instanceof E))return new E(t,e,r);if(typeof t=="number"){if(typeof e=="string")throw new Error("If encoding is specified then the first argument must be a string");return Qr(this,t)}return Ci(this,t,e,r)}E.poolSize=8192;E._augment=function(t){return t.__proto__=E.prototype,t};function Ci(t,e,r,n){if(typeof e=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer?zc(t,e,r,n):typeof e=="string"?Yc(t,e,r):Qc(t,e)}E.from=function(t,e,r){return Ci(null,t,e,r)};E.TYPED_ARRAY_SUPPORT&&(E.prototype.__proto__=Uint8Array.prototype,E.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&E[Symbol.species]===E&&Object.defineProperty(E,Symbol.species,{value:null,configurable:true}));function ki(t){if(typeof t!="number")throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function Jc(t,e,r,n){return ki(e),e<=0?Ne(t,e):r!==void 0?typeof n=="string"?Ne(t,e).fill(r,n):Ne(t,e).fill(r):Ne(t,e)}E.alloc=function(t,e,r){return Jc(null,t,e,r)};function Qr(t,e){if(ki(e),t=Ne(t,e<0?0:Xr(e)|0),!E.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}E.allocUnsafe=function(t){return Qr(null,t)};E.allocUnsafeSlow=function(t){return Qr(null,t)};function Yc(t,e,r){if((typeof r!="string"||r==="")&&(r="utf8"),!E.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=Di(e,r)|0;t=Ne(t,n);var i=t.write(e,r);return i!==n&&(t=t.slice(0,i)),t}function zr(t,e){var r=e.length<0?0:Xr(e.length)|0;t=Ne(t,r);for(var n=0;n<r;n+=1)t[n]=e[n]&255;return t}function zc(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError("'offset' is out of bounds");if(e.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");return r===void 0&&n===void 0?e=new Uint8Array(e):n===void 0?e=new Uint8Array(e,r):e=new Uint8Array(e,r,n),E.TYPED_ARRAY_SUPPORT?(t=e,t.__proto__=E.prototype):t=zr(t,e),t}function Qc(t,e){if(E.isBuffer(e)){var r=Xr(e.length)|0;return t=Ne(t,r),t.length===0||e.copy(t,0,0,r),t}if(e){if(typeof ArrayBuffer<"u"&&e.buffer instanceof ArrayBuffer||"length"in e)return typeof e.length!="number"||yl(e.length)?Ne(t,0):zr(t,e);if(e.type==="Buffer"&&xi(e.data))return zr(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Xr(t){if(t>=Zt())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Zt().toString(16)+" bytes");return t|0}function Xc(t){return +t!=t&&(t=0),E.alloc(+t)}E.isBuffer=function(e){return !!(e!=null&&e._isBuffer)};E.compare=function(e,r){if(!E.isBuffer(e)||!E.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(e===r)return 0;for(var n=e.length,i=r.length,s=0,o=Math.min(n,i);s<o;++s)if(e[s]!==r[s]){n=e[s],i=r[s];break}return n<i?-1:i<n?1:0};E.isEncoding=function(e){switch(String(e).toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "latin1":case "binary":case "base64":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return true;default:return false}};E.concat=function(e,r){if(!xi(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return E.alloc(0);var n;if(r===void 0)for(r=0,n=0;n<e.length;++n)r+=e[n].length;var i=E.allocUnsafe(r),s=0;for(n=0;n<e.length;++n){var o=e[n];if(!E.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,s),s+=o.length;}return i};function Di(t,e){if(E.isBuffer(t))return t.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;typeof t!="string"&&(t=""+t);var r=t.length;if(r===0)return 0;for(var n=false;;)switch(e){case "ascii":case "latin1":case "binary":return r;case "utf8":case "utf-8":case void 0:return er(t).length;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return r*2;case "hex":return r>>>1;case "base64":return Vi(t).length;default:if(n)return er(t).length;e=(""+e).toLowerCase(),n=true;}}E.byteLength=Di;function Zc(t,e,r){var n=false;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return "";for(t||(t="utf8");;)switch(t){case "hex":return ll(this,e,r);case "utf8":case "utf-8":return Fi(this,e,r);case "ascii":return al(this,e,r);case "latin1":case "binary":return cl(this,e,r);case "base64":return sl(this,e,r);case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return ul(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=true;}}E.prototype._isBuffer=true;function Ge(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}E.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<e;r+=2)Ge(this,r,r+1);return this};E.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<e;r+=4)Ge(this,r,r+3),Ge(this,r+1,r+2);return this};E.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<e;r+=8)Ge(this,r,r+7),Ge(this,r+1,r+6),Ge(this,r+2,r+5),Ge(this,r+3,r+4);return this};E.prototype.toString=function(){var e=this.length|0;return e===0?"":arguments.length===0?Fi(this,0,e):Zc.apply(this,arguments)};E.prototype.equals=function(e){if(!E.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?true:E.compare(this,e)===0};E.prototype.inspect=function(){var e="",r=st.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),"<Buffer "+e+">"};E.prototype.compare=function(e,r,n,i,s){if(!E.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),s===void 0&&(s=this.length),r<0||n>e.length||i<0||s>this.length)throw new RangeError("out of range index");if(i>=s&&r>=n)return 0;if(i>=s)return -1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,s>>>=0,this===e)return 0;for(var o=s-i,a=n-r,l=Math.min(o,a),c=this.slice(i,s),u=e.slice(r,n),f=0;f<l;++f)if(c[f]!==u[f]){o=c[f],a=u[f];break}return o<a?-1:a<o?1:0};function Ni(t,e,r,n,i){if(t.length===0)return -1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return -1;r=t.length-1;}else if(r<0)if(i)r=0;else return -1;if(typeof e=="string"&&(e=E.from(e,n)),E.isBuffer(e))return e.length===0?-1:Pi(t,e,r,n,i);if(typeof e=="number")return e=e&255,E.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Pi(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Pi(t,e,r,n,i){var s=1,o=t.length,a=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(t.length<2||e.length<2)return -1;s=2,o/=2,a/=2,r/=2;}function l(p,g){return s===1?p[g]:p.readUInt16BE(g*s)}var c;if(i){var u=-1;for(c=r;c<o;c++)if(l(t,c)===l(e,u===-1?0:c-u)){if(u===-1&&(u=c),c-u+1===a)return u*s}else u!==-1&&(c-=c-u),u=-1;}else for(r+a>o&&(r=o-a),c=r;c>=0;c--){for(var f=true,d=0;d<a;d++)if(l(t,c+d)!==l(e,d)){f=false;break}if(f)return c}return -1}E.prototype.includes=function(e,r,n){return this.indexOf(e,r,n)!==-1};E.prototype.indexOf=function(e,r,n){return Ni(this,e,r,n,true)};E.prototype.lastIndexOf=function(e,r,n){return Ni(this,e,r,n,false)};function el(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var s=e.length;if(s%2!==0)throw new TypeError("Invalid hex string");n>s/2&&(n=s/2);for(var o=0;o<n;++o){var a=parseInt(e.substr(o*2,2),16);if(isNaN(a))return o;t[r+o]=a;}return o}function tl(t,e,r,n){return nr(er(e,t.length-r),t,r,n)}function Oi(t,e,r,n){return nr(gl(e),t,r,n)}function rl(t,e,r,n){return Oi(t,e,r,n)}function nl(t,e,r,n){return nr(Vi(e),t,r,n)}function il(t,e,r,n){return nr(ml(e,t.length-r),t,r,n)}E.prototype.write=function(e,r,n,i){if(r===void 0)i="utf8",n=this.length,r=0;else if(n===void 0&&typeof r=="string")i=r,n=this.length,r=0;else if(isFinite(r))r=r|0,isFinite(n)?(n=n|0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var s=this.length-r;if((n===void 0||n>s)&&(n=s),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=false;;)switch(i){case "hex":return el(this,e,r,n);case "utf8":case "utf-8":return tl(this,e,r,n);case "ascii":return Oi(this,e,r,n);case "latin1":case "binary":return rl(this,e,r,n);case "base64":return nl(this,e,r,n);case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return il(this,e,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=true;}};E.prototype.toJSON=function(){return {type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function sl(t,e,r){return e===0&&r===t.length?Yr.fromByteArray(t):Yr.fromByteArray(t.slice(e,r))}function Fi(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var s=t[i],o=null,a=s>239?4:s>223?3:s>191?2:1;if(i+a<=r){var l,c,u,f;switch(a){case 1:s<128&&(o=s);break;case 2:l=t[i+1],(l&192)===128&&(f=(s&31)<<6|l&63,f>127&&(o=f));break;case 3:l=t[i+1],c=t[i+2],(l&192)===128&&(c&192)===128&&(f=(s&15)<<12|(l&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=t[i+1],c=t[i+2],u=t[i+3],(l&192)===128&&(c&192)===128&&(u&192)===128&&(f=(s&15)<<18|(l&63)<<12|(c&63)<<6|u&63,f>65535&&f<1114112&&(o=f));}}o===null?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=a;}return ol(n)}var Ui=4096;function ol(t){var e=t.length;if(e<=Ui)return String.fromCharCode.apply(String,t);for(var r="",n=0;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=Ui));return r}function al(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]&127);return n}function cl(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function ll(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i="",s=e;s<r;++s)i+=pl(t[s]);return i}function ul(t,e,r){for(var n=t.slice(e,r),i="",s=0;s<n.length;s+=2)i+=String.fromCharCode(n[s]+n[s+1]*256);return i}E.prototype.slice=function(e,r){var n=this.length;e=~~e,r=r===void 0?n:~~r,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r<e&&(r=e);var i;if(E.TYPED_ARRAY_SUPPORT)i=this.subarray(e,r),i.__proto__=E.prototype;else {var s=r-e;i=new E(s,void 0);for(var o=0;o<s;++o)i[o]=this[o+e];}return i};function Y(t,e,r){if(t%1!==0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}E.prototype.readUIntLE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=this[e],s=1,o=0;++o<r&&(s*=256);)i+=this[e+o]*s;return i};E.prototype.readUIntBE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=this[e+--r],s=1;r>0&&(s*=256);)i+=this[e+--r]*s;return i};E.prototype.readUInt8=function(e,r){return r||Y(e,1,this.length),this[e]};E.prototype.readUInt16LE=function(e,r){return r||Y(e,2,this.length),this[e]|this[e+1]<<8};E.prototype.readUInt16BE=function(e,r){return r||Y(e,2,this.length),this[e]<<8|this[e+1]};E.prototype.readUInt32LE=function(e,r){return r||Y(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};E.prototype.readUInt32BE=function(e,r){return r||Y(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};E.prototype.readIntLE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=this[e],s=1,o=0;++o<r&&(s*=256);)i+=this[e+o]*s;return s*=128,i>=s&&(i-=Math.pow(2,8*r)),i};E.prototype.readIntBE=function(e,r,n){e=e|0,r=r|0,n||Y(e,r,this.length);for(var i=r,s=1,o=this[e+--i];i>0&&(s*=256);)o+=this[e+--i]*s;return s*=128,o>=s&&(o-=Math.pow(2,8*r)),o};E.prototype.readInt8=function(e,r){return r||Y(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};E.prototype.readInt16LE=function(e,r){r||Y(e,2,this.length);var n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n};E.prototype.readInt16BE=function(e,r){r||Y(e,2,this.length);var n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:n};E.prototype.readInt32LE=function(e,r){return r||Y(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};E.prototype.readInt32BE=function(e,r){return r||Y(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};E.prototype.readFloatLE=function(e,r){return r||Y(e,4,this.length),it.read(this,e,true,23,4)};E.prototype.readFloatBE=function(e,r){return r||Y(e,4,this.length),it.read(this,e,false,23,4)};E.prototype.readDoubleLE=function(e,r){return r||Y(e,8,this.length),it.read(this,e,true,52,8)};E.prototype.readDoubleBE=function(e,r){return r||Y(e,8,this.length),it.read(this,e,false,52,8)};function se(t,e,r,n,i,s){if(!E.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<s)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}E.prototype.writeUIntLE=function(e,r,n,i){if(e=+e,r=r|0,n=n|0,!i){var s=Math.pow(2,8*n)-1;se(this,e,r,n,s,0);}var o=1,a=0;for(this[r]=e&255;++a<n&&(o*=256);)this[r+a]=e/o&255;return r+n};E.prototype.writeUIntBE=function(e,r,n,i){if(e=+e,r=r|0,n=n|0,!i){var s=Math.pow(2,8*n)-1;se(this,e,r,n,s,0);}var o=n-1,a=1;for(this[r+o]=e&255;--o>=0&&(a*=256);)this[r+o]=e/a&255;return r+n};E.prototype.writeUInt8=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,1,255,0),E.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=e&255,r+1};function tr(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,s=Math.min(t.length-r,2);i<s;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>(n?i:1-i)*8;}E.prototype.writeUInt16LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,65535,0),E.TYPED_ARRAY_SUPPORT?(this[r]=e&255,this[r+1]=e>>>8):tr(this,e,r,true),r+2};E.prototype.writeUInt16BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,65535,0),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=e&255):tr(this,e,r,false),r+2};function rr(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,s=Math.min(t.length-r,4);i<s;++i)t[r+i]=e>>>(n?i:3-i)*8&255;}E.prototype.writeUInt32LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,4294967295,0),E.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255):rr(this,e,r,true),r+4};E.prototype.writeUInt32BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,4294967295,0),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255):rr(this,e,r,false),r+4};E.prototype.writeIntLE=function(e,r,n,i){if(e=+e,r=r|0,!i){var s=Math.pow(2,8*n-1);se(this,e,r,n,s-1,-s);}var o=0,a=1,l=0;for(this[r]=e&255;++o<n&&(a*=256);)e<0&&l===0&&this[r+o-1]!==0&&(l=1),this[r+o]=(e/a>>0)-l&255;return r+n};E.prototype.writeIntBE=function(e,r,n,i){if(e=+e,r=r|0,!i){var s=Math.pow(2,8*n-1);se(this,e,r,n,s-1,-s);}var o=n-1,a=1,l=0;for(this[r+o]=e&255;--o>=0&&(a*=256);)e<0&&l===0&&this[r+o+1]!==0&&(l=1),this[r+o]=(e/a>>0)-l&255;return r+n};E.prototype.writeInt8=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,1,127,-128),E.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=e&255,r+1};E.prototype.writeInt16LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,32767,-32768),E.TYPED_ARRAY_SUPPORT?(this[r]=e&255,this[r+1]=e>>>8):tr(this,e,r,true),r+2};E.prototype.writeInt16BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,2,32767,-32768),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=e&255):tr(this,e,r,false),r+2};E.prototype.writeInt32LE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,2147483647,-2147483648),E.TYPED_ARRAY_SUPPORT?(this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):rr(this,e,r,true),r+4};E.prototype.writeInt32BE=function(e,r,n){return e=+e,r=r|0,n||se(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),E.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255):rr(this,e,r,false),r+4};function Li(t,e,r,n,i,s){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Mi(t,e,r,n,i){return i||Li(t,e,r,4),it.write(t,e,r,n,23,4),r+4}E.prototype.writeFloatLE=function(e,r,n){return Mi(this,e,r,true,n)};E.prototype.writeFloatBE=function(e,r,n){return Mi(this,e,r,false,n)};function qi(t,e,r,n,i){return i||Li(t,e,r,8),it.write(t,e,r,n,52,8),r+8}E.prototype.writeDoubleLE=function(e,r,n){return qi(this,e,r,true,n)};E.prototype.writeDoubleBE=function(e,r,n){return qi(this,e,r,false,n)};E.prototype.copy=function(e,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i<n&&(i=n),i===n||e.length===0||this.length===0)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r<i-n&&(i=e.length-r+n);var s=i-n,o;if(this===e&&n<r&&r<i)for(o=s-1;o>=0;--o)e[o+r]=this[o+n];else if(s<1e3||!E.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+r]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+s),r);return s};E.prototype.fill=function(e,r,n,i){if(typeof e=="string"){if(typeof r=="string"?(i=r,r=0,n=this.length):typeof n=="string"&&(i=n,n=this.length),e.length===1){var s=e.charCodeAt(0);s<256&&(e=s);}if(i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(typeof i=="string"&&!E.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else typeof e=="number"&&(e=e&255);if(r<0||this.length<r||this.length<n)throw new RangeError("Out of range index");if(n<=r)return this;r=r>>>0,n=n===void 0?this.length:n>>>0,e||(e=0);var o;if(typeof e=="number")for(o=r;o<n;++o)this[o]=e;else {var a=E.isBuffer(e)?e:er(new E(e,i).toString()),l=a.length;for(o=0;o<n-r;++o)this[o+r]=a[o%l];}return this};var dl=/[^+\/0-9A-Za-z-_]/g;function fl(t){if(t=hl(t).replace(dl,""),t.length<2)return "";for(;t.length%4!==0;)t=t+"=";return t}function hl(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function pl(t){return t<16?"0"+t.toString(16):t.toString(16)}function er(t,e){e=e||1/0;for(var r,n=t.length,i=null,s=[],o=0;o<n;++o){if(r=t.charCodeAt(o),r>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+1===n){(e-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&s.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536;}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;s.push(r);}else if(r<2048){if((e-=2)<0)break;s.push(r>>6|192,r&63|128);}else if(r<65536){if((e-=3)<0)break;s.push(r>>12|224,r>>6&63|128,r&63|128);}else if(r<1114112){if((e-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128);}else throw new Error("Invalid code point")}return s}function gl(t){for(var e=[],r=0;r<t.length;++r)e.push(t.charCodeAt(r)&255);return e}function ml(t,e){for(var r,n,i,s=[],o=0;o<t.length&&!((e-=2)<0);++o)r=t.charCodeAt(o),n=r>>8,i=r%256,s.push(i),s.push(n);return s}function Vi(t){return Yr.toByteArray(fl(t))}function nr(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function yl(t){return t!==t}});var Bi={};zt(Bi,{default:()=>bl});var _l,bl,$i=tt(()=>{_l={},bl=_l;});var sn={};zt(sn,{__assign:()=>rn,__asyncDelegator:()=>Dl,__asyncGenerator:()=>kl,__asyncValues:()=>Nl,__await:()=>vt,__awaiter:()=>Tl,__classPrivateFieldGet:()=>Ml,__classPrivateFieldSet:()=>ql,__createBinding:()=>Pl,__decorate:()=>Sl,__exportStar:()=>Ul,__extends:()=>El,__generator:()=>Il,__importDefault:()=>Ll,__importStar:()=>Fl,__makeTemplateObject:()=>Ol,__metadata:()=>Rl,__param:()=>vl,__read:()=>Ki,__rest:()=>Al,__spread:()=>xl,__spreadArrays:()=>Cl,__values:()=>nn});function El(t,e){tn(t,e);function r(){this.constructor=t;}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r);}function Al(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r}function Sl(t,e,r,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(t,e,r,n);else for(var a=t.length-1;a>=0;a--)(o=t[a])&&(s=(i<3?o(s):i>3?o(e,r,s):o(e,r))||s);return i>3&&s&&Object.defineProperty(e,r,s),s}function vl(t,e){return function(r,n){e(r,n,t);}}function Rl(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function Tl(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s);})}return new(r||(r=Promise))(function(s,o){function a(u){try{c(n.next(u));}catch(f){o(f);}}function l(u){try{c(n.throw(u));}catch(f){o(f);}}function c(u){u.done?s(u.value):i(u.value).then(a,l);}c((n=n.apply(t,e||[])).next());})}function Il(t,e){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(u){return l([c,u])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,i=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){r.label=c[1];break}if(c[0]===6&&r.label<s[1]){r.label=s[1],s=c;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(c);break}s[2]&&r.ops.pop(),r.trys.pop();continue}c=e.call(t,r);}catch(u){c=[6,u],i=0;}finally{n=s=0;}if(c[0]&5)throw c[1];return {value:c[0]?c[1]:void 0,done:true}}}function Pl(t,e,r,n){n===void 0&&(n=r),t[n]=e[r];}function Ul(t,e){for(var r in t)r!=="default"&&!e.hasOwnProperty(r)&&(e[r]=t[r]);}function nn(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return {next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ki(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value);}catch(a){o={error:a};}finally{try{i&&!i.done&&(r=n.return)&&r.call(n);}finally{if(o)throw o.error}}return s}function xl(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(Ki(arguments[e]));return t}function Cl(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var n=Array(t),i=0,e=0;e<r;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,i++)n[i]=s[o];return n}function vt(t){return this instanceof vt?(this.v=t,this):new vt(t)}function kl(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,s=[];return i={},o("next"),o("throw"),o("return"),i[Symbol.asyncIterator]=function(){return this},i;function o(d){n[d]&&(i[d]=function(p){return new Promise(function(g,m){s.push([d,p,g,m])>1||a(d,p);})});}function a(d,p){try{l(n[d](p));}catch(g){f(s[0][3],g);}}function l(d){d.value instanceof vt?Promise.resolve(d.value.v).then(c,u):f(s[0][2],d);}function c(d){a("next",d);}function u(d){a("throw",d);}function f(d,p){d(p),s.shift(),s.length&&a(s[0][0],s[0][1]);}}function Dl(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,s){e[i]=t[i]?function(o){return (r=!r)?{value:vt(t[i](o)),done:i==="return"}:s?s(o):o}:s;}}function Nl(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof nn=="function"?nn(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(s){r[s]=t[s]&&function(o){return new Promise(function(a,l){o=t[s](o),i(a,l,o.done,o.value);})};}function i(s,o,a,l){Promise.resolve(l).then(function(c){s({value:c,done:a});},o);}}function Ol(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Fl(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Ll(t){return t&&t.__esModule?t:{default:t}}function Ml(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function ql(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var tn,rn,on=tt(()=>{tn=function(t,e){return tn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n;}||function(r,n){for(var i in n)n.hasOwnProperty(i)&&(r[i]=n[i]);},tn(t,e)};rn=function(){return rn=Object.assign||function(e){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s]);}return e},rn.apply(this,arguments)};});var an=ie(he=>{Object.defineProperty(he,"__esModule",{value:true});he.MAX_HASHABLE_LENGTH=he.INIT=he.KEY=he.DIGEST_LENGTH=he.BLOCK_SIZE=void 0;he.BLOCK_SIZE=64;he.DIGEST_LENGTH=32;he.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);he.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];he.MAX_HASHABLE_LENGTH=Math.pow(2,53)-1;});var ji=ie(sr=>{Object.defineProperty(sr,"__esModule",{value:true});sr.RawSha256=void 0;var pe=an(),Vl=(function(){function t(){this.state=Int32Array.from(pe.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=false;}return t.prototype.update=function(e){if(this.finished)throw new Error("Attempted to update an already finished hash.");var r=0,n=e.byteLength;if(this.bytesHashed+=n,this.bytesHashed*8>pe.MAX_HASHABLE_LENGTH)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;n>0;)this.buffer[this.bufferLength++]=e[r++],n--,this.bufferLength===pe.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0);},t.prototype.digest=function(){if(!this.finished){var e=this.bytesHashed*8,r=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=this.bufferLength;if(r.setUint8(this.bufferLength++,128),n%pe.BLOCK_SIZE>=pe.BLOCK_SIZE-8){for(var i=this.bufferLength;i<pe.BLOCK_SIZE;i++)r.setUint8(i,0);this.hashBuffer(),this.bufferLength=0;}for(var i=this.bufferLength;i<pe.BLOCK_SIZE-8;i++)r.setUint8(i,0);r.setUint32(pe.BLOCK_SIZE-8,Math.floor(e/4294967296),true),r.setUint32(pe.BLOCK_SIZE-4,e),this.hashBuffer(),this.finished=true;}for(var s=new Uint8Array(pe.DIGEST_LENGTH),i=0;i<8;i++)s[i*4]=this.state[i]>>>24&255,s[i*4+1]=this.state[i]>>>16&255,s[i*4+2]=this.state[i]>>>8&255,s[i*4+3]=this.state[i]>>>0&255;return s},t.prototype.hashBuffer=function(){for(var e=this,r=e.buffer,n=e.state,i=n[0],s=n[1],o=n[2],a=n[3],l=n[4],c=n[5],u=n[6],f=n[7],d=0;d<pe.BLOCK_SIZE;d++){if(d<16)this.temp[d]=(r[d*4]&255)<<24|(r[d*4+1]&255)<<16|(r[d*4+2]&255)<<8|r[d*4+3]&255;else {var p=this.temp[d-2],g=(p>>>17|p<<15)^(p>>>19|p<<13)^p>>>10;p=this.temp[d-15];var m=(p>>>7|p<<25)^(p>>>18|p<<14)^p>>>3;this.temp[d]=(g+this.temp[d-7]|0)+(m+this.temp[d-16]|0);}var y=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&c^~l&u)|0)+(f+(pe.KEY[d]+this.temp[d]|0)|0)|0,b=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&s^i&o^s&o)|0;f=u,u=c,c=l,l=a+y|0,a=o,o=s,s=i,i=y+b|0;}n[0]+=i,n[1]+=s,n[2]+=o,n[3]+=a,n[4]+=l,n[5]+=c,n[6]+=u,n[7]+=f;},t})();sr.RawSha256=Vl;});var Hi,Wi,Gi=tt(()=>{Hi=t=>{let e=[];for(let r=0,n=t.length;r<n;r++){let i=t.charCodeAt(r);if(i<128)e.push(i);else if(i<2048)e.push(i>>6|192,i&63|128);else if(r+1<t.length&&(i&64512)===55296&&(t.charCodeAt(r+1)&64512)===56320){let s=65536+((i&1023)<<10)+(t.charCodeAt(++r)&1023);e.push(s>>18|240,s>>12&63|128,s>>6&63|128,s&63|128);}else e.push(i>>12|224,i>>6&63|128,i&63|128);}return Uint8Array.from(e)},Wi=t=>{let e="";for(let r=0,n=t.length;r<n;r++){let i=t[r];if(i<128)e+=String.fromCharCode(i);else if(192<=i&&i<224){let s=t[++r];e+=String.fromCharCode((i&31)<<6|s&63);}else if(240<=i&&i<365){let o="%"+[i,t[++r],t[++r],t[++r]].map(a=>a.toString(16)).join("%");e+=decodeURIComponent(o);}else e+=String.fromCharCode((i&15)<<12|(t[++r]&63)<<6|t[++r]&63);}return e};});function Ji(t){return new TextEncoder().encode(t)}function Yi(t){return new TextDecoder("utf-8").decode(t)}var zi=tt(()=>{});var Qi={};zt(Qi,{fromUtf8:()=>Bl,toUtf8:()=>$l});var Bl,$l,Xi=tt(()=>{Gi();zi();Bl=t=>typeof TextEncoder=="function"?Ji(t):Hi(t),$l=t=>typeof TextDecoder=="function"?Yi(t):Wi(t);});var Zi=ie(or=>{Object.defineProperty(or,"__esModule",{value:true});or.convertToBuffer=void 0;var Kl=(Xi(),nt(Qi)),jl=typeof Buffer<"u"&&Buffer.from?function(t){return Buffer.from(t,"utf8")}:Kl.fromUtf8;function Hl(t){return t instanceof Uint8Array?t:typeof t=="string"?jl(t):ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(t)}or.convertToBuffer=Hl;});var es=ie(ar=>{Object.defineProperty(ar,"__esModule",{value:true});ar.isEmptyData=void 0;function Wl(t){return typeof t=="string"?t.length===0:t.byteLength===0}ar.isEmptyData=Wl;});var ts=ie(cr=>{Object.defineProperty(cr,"__esModule",{value:true});cr.numToUint8=void 0;function Gl(t){return new Uint8Array([(t&4278190080)>>24,(t&16711680)>>16,(t&65280)>>8,t&255])}cr.numToUint8=Gl;});var rs=ie(lr=>{Object.defineProperty(lr,"__esModule",{value:true});lr.uint32ArrayFrom=void 0;function Jl(t){if(!Array.from){for(var e=new Uint32Array(t.length),r=0;r<t.length;)e[r]=t[r];return e}return Uint32Array.from(t)}lr.uint32ArrayFrom=Jl;});var ns=ie(Ie=>{Object.defineProperty(Ie,"__esModule",{value:true});Ie.uint32ArrayFrom=Ie.numToUint8=Ie.isEmptyData=Ie.convertToBuffer=void 0;var Yl=Zi();Object.defineProperty(Ie,"convertToBuffer",{enumerable:true,get:function(){return Yl.convertToBuffer}});var zl=es();Object.defineProperty(Ie,"isEmptyData",{enumerable:true,get:function(){return zl.isEmptyData}});var Ql=ts();Object.defineProperty(Ie,"numToUint8",{enumerable:true,get:function(){return Ql.numToUint8}});var Xl=rs();Object.defineProperty(Ie,"uint32ArrayFrom",{enumerable:true,get:function(){return Xl.uint32ArrayFrom}});});var ss=ie(dr=>{Object.defineProperty(dr,"__esModule",{value:true});dr.Sha256=void 0;var is=(on(),nt(sn)),ur=an(),cn=ji(),ln=ns(),Zl=(function(){function t(e){if(this.hash=new cn.RawSha256,e){this.outer=new cn.RawSha256;var r=eu(e),n=new Uint8Array(ur.BLOCK_SIZE);n.set(r);for(var i=0;i<ur.BLOCK_SIZE;i++)r[i]^=54,n[i]^=92;this.hash.update(r),this.outer.update(n);for(var i=0;i<r.byteLength;i++)r[i]=0;}}return t.prototype.update=function(e){if(!((0, ln.isEmptyData)(e)||this.error))try{this.hash.update((0,ln.convertToBuffer)(e));}catch(r){this.error=r;}},t.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},t.prototype.digest=function(){return (0, is.__awaiter)(this,void 0,void 0,function(){return (0, is.__generator)(this,function(e){return [2,this.digestSync()]})})},t})();dr.Sha256=Zl;function eu(t){var e=(0, ln.convertToBuffer)(t);if(e.byteLength>ur.BLOCK_SIZE){var r=new cn.RawSha256;r.update(e),e=r.digest();}var n=new Uint8Array(ur.BLOCK_SIZE);return n.set(e),n}});var dn=ie(un=>{Object.defineProperty(un,"__esModule",{value:true});var tu=(on(),nt(sn));(0, tu.__exportStar)(ss(),un);});var wn={};zt(wn,{default:()=>Yu});function Yu(t,e){return e=e||{},new Promise(function(r,n){var i=new XMLHttpRequest,s=[],o=[],a={},l=function(){return {ok:(i.status/100|0)==2,statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:l,headers:{keys:function(){return s},entries:function(){return o},get:function(u){return a[u.toLowerCase()]},has:function(u){return u.toLowerCase()in a}}}};for(var c in i.open(e.method||"get",t,true),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(u,f,d){s.push(f=f.toLowerCase()),o.push([f,d]),a[f]=a[f]?a[f]+","+d:d;}),r(l());},i.onerror=n,i.withCredentials=e.credentials=="include",e.headers)i.setRequestHeader(c,e.headers[c]);i.send(e.body||null);})}var En=tt(()=>{});var ps=ie((Uh,hs)=>{hs.exports=self.fetch||(self.fetch=(En(),nt(wn)).default||(En(),nt(wn)));});function Ei(t){let r=(typeof globalThis<"u"?globalThis:void 0)?.process;if(r&&typeof r.getBuiltinModule=="function")try{return r.getBuiltinModule(t)}catch{}try{if(typeof Ve=="function")return Ve(t)}catch{}return null}var $r,Kr,jr=()=>$r!==void 0?$r:$r=Ei("fs"),Hr=()=>Kr!==void 0?Kr:Kr=Ei("path"),De=typeof globalThis<"u"?globalThis:void 0,Qt=De?.window;function Mc(t){if(Buffer)return Buffer.from(t).toString("base64");let e="",r=new Uint8Array(t),n=32768;for(let i=0;i<r.length;i+=n){let s=r.subarray(i,i+n);e+=String.fromCharCode.apply(null,Array.from(s));}if(typeof btoa=="function")return btoa(e);throw new Error("No base64 encoder available in this environment.")}if(Qt)Qt.global=Qt,Qt.global._runningInNodeJS=false;else if(De&&(De.global=De,typeof De.window>"u")){class t{constructor(){this.result=null;this.error=null;this.onload=null;this.onloadend=null;this.onerror=null;}readAsDataURL(n){n.arrayBuffer().then(i=>{let s=Mc(i),o=n.type||"application/octet-stream";this.result=`data:${o};base64,${s}`,this.onload&&this.onload({target:this}),this.onloadend&&this.onloadend({target:this});}).catch(i=>{this.error=i,this.onerror&&this.onerror({target:this});});}readAsArrayBuffer(n){n.arrayBuffer().then(i=>{this.result=i,this.onload&&this.onload({target:this}),this.onloadend&&this.onloadend({target:this});}).catch(i=>{this.error=i,this.onerror&&this.onerror({target:this});});}readAsText(n,i="utf-8"){n.text().then(s=>{this.result=s,this.onload&&this.onload({target:this}),this.onloadend&&this.onloadend({target:this});}).catch(s=>{this.error=s,this.onerror&&this.onerror({target:this});});}}De.FileReader=t;class e{constructor(){this.status=0;this.statusText="";this.readyState=0;this.responseText="";this.response=null;this.responseType="";this.responseURL="";this.timeout=0;this.withCredentials=false;this.onload=null;this.onerror=null;this.onabort=null;this.ontimeout=null;this.onprogress=null;this.onreadystatechange=null;this.upload={onprogress:null};this._method="GET";this._url="";this._headers={};this._aborted=false;}open(n,i){this._method=n,this._url=i,this.readyState=1;}setRequestHeader(n,i){this._headers[n]=i;}getResponseHeader(n){return null}abort(){this._aborted=true,this.onabort&&this.onabort({});}send(n){if(this._aborted)return;let i={method:this._method,headers:this._headers};n&&this._method!=="GET"&&this._method!=="HEAD"&&(i.body=n),fetch(this._url,i).then(async s=>{if(!this._aborted){if(this.status=s.status,this.statusText=s.statusText,this.responseURL=s.url,this.readyState=4,this.responseType==="blob")this.response=await s.blob();else if(this.responseType==="json")try{this.response=await s.json();}catch{this.response=null;}else this.responseType==="arraybuffer"?this.response=await s.arrayBuffer():(this.responseText=await s.text(),this.response=this.responseText);this.onload&&this.onload({});}}).catch(s=>{this._aborted||this.onerror&&this.onerror(s);});}}De.XMLHttpRequest=e,De.window={_runningInNodeJS:true,alert:r=>console.error("[Alert]",r),sessionStorage:{getItem:r=>null,setItem:(r,n)=>{},removeItem:r=>{}},localStorage:{getItem:r=>{let n=jr(),i=Hr();if(!n||!i)return null;try{let s=i.resolve(process.cwd(),"states","localStorage",`${r}.skapi`);return n.existsSync(s)?n.readFileSync(s,"utf8"):null}catch{return null}},setItem:(r,n)=>{let i=jr(),s=Hr();if(!(!i||!s))try{let o=s.resolve(process.cwd(),"states","localStorage");i.existsSync(o)||i.mkdirSync(o,{recursive:!0});let a=s.resolve(o,`${r}.skapi`);i.writeFileSync(a,n,"utf8");}catch{}},removeItem:r=>{let n=jr(),i=Hr();if(!(!n||!i))try{let s=i.resolve(process.cwd(),"states","localStorage",`${r}.skapi`);n.existsSync(s)&&n.unlinkSync(s);}catch{}}},location:{href:"",origin:"",hostname:"",protocol:"",replace:r=>{}},navigator:{userAgent:`nodejs/${De?.process?.versions?.node||"unknown"}`,mediaDevices:{getUserMedia:async r=>{throw new Error("getUserMedia is not supported in Node.js environment.")}}},addEventListener:()=>{},removeEventListener:()=>{}};}var Wr=(function(){function t(r){var n=r||{},i=n.ValidationData,s=n.Username,o=n.Password,a=n.AuthParameters,l=n.ClientMetadata;this.validationData=i||{},this.authParameters=a||{},this.clientMetadata=l||{},this.username=s,this.password=o;}var e=t.prototype;return e.getUsername=function(){return this.username},e.getPassword=function(){return this.password},e.getValidationData=function(){return this.validationData},e.getAuthParameters=function(){return this.authParameters},e.getClientMetadata=function(){return this.clientMetadata},t})();var Oe=rt(ir());var fe;typeof window<"u"&&window.crypto&&(fe=window.crypto);!fe&&typeof window<"u"&&window.msCrypto&&(fe=window.msCrypto);!fe&&typeof globalThis<"u"&&globalThis.crypto&&(fe=globalThis.crypto);if(!fe&&typeof Ve=="function")try{fe=($i(),nt(Bi));}catch{}function Zr(){if(fe){if(typeof fe.getRandomValues=="function")try{return fe.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof fe.randomBytes=="function")try{return fe.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")}function wl(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i++){var s=e[i>>>2]>>>24-i%4*8&255;n.push((s>>>4).toString(16)),n.push((s&15).toString(16));}return n.join("")}var en=(function(){function t(r,n){r=this.words=r||[],n!=null?this.sigBytes=n:this.sigBytes=r.length*4;}var e=t.prototype;return e.random=function(n){for(var i=[],s=0;s<n;s+=4)i.push(Zr());return new t(i,n)},e.toString=function(){return wl(this)},t})();var hr=rt(dn());var W=D;function D(t,e){t!=null&&this.fromString(t,e);}function te(){return new D(null)}var Be,ru=0xdeadbeefcafe,os=(ru&16777215)==15715070;function nu(t,e,r,n,i,s){for(;--s>=0;){var o=e*this[t++]+r[n]+i;i=Math.floor(o/67108864),r[n++]=o&67108863;}return i}function iu(t,e,r,n,i,s){for(var o=e&32767,a=e>>15;--s>=0;){var l=this[t]&32767,c=this[t++]>>15,u=a*l+c*o;l=o*l+((u&32767)<<15)+r[n]+(i&1073741823),i=(l>>>30)+(u>>>15)+a*c+(i>>>30),r[n++]=l&1073741823;}return i}function su(t,e,r,n,i,s){for(var o=e&16383,a=e>>14;--s>=0;){var l=this[t]&16383,c=this[t++]>>14,u=a*l+c*o;l=o*l+((u&16383)<<14)+r[n]+i,i=(l>>28)+(u>>14)+a*c,r[n++]=l&268435455;}return i}var as=typeof navigator<"u";as&&os&&navigator.appName=="Microsoft Internet Explorer"?(D.prototype.am=iu,Be=30):as&&os&&navigator.appName!="Netscape"?(D.prototype.am=nu,Be=26):(D.prototype.am=su,Be=28);D.prototype.DB=Be;D.prototype.DM=(1<<Be)-1;D.prototype.DV=1<<Be;var fn=52;D.prototype.FV=Math.pow(2,fn);D.prototype.F1=fn-Be;D.prototype.F2=2*Be-fn;var ou="0123456789abcdefghijklmnopqrstuvwxyz",fr=new Array,ot,ge;ot=48;for(ge=0;ge<=9;++ge)fr[ot++]=ge;ot=97;for(ge=10;ge<36;++ge)fr[ot++]=ge;ot=65;for(ge=10;ge<36;++ge)fr[ot++]=ge;function cs(t){return ou.charAt(t)}function au(t,e){var r=fr[t.charCodeAt(e)];return r??-1}function cu(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s;}function lu(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0;}function hn(t){var e=te();return e.fromInt(t),e}function uu(t,e){var r;if(e==16)r=4;else if(e==8)r=3;else if(e==2)r=1;else if(e==32)r=5;else if(e==4)r=2;else throw new Error("Only radix 2, 4, 8, 16, 32 are supported");this.t=0,this.s=0;for(var n=t.length,i=false,s=0;--n>=0;){var o=au(t,n);if(o<0){t.charAt(n)=="-"&&(i=true);continue}i=false,s==0?this[this.t++]=o:s+r>this.DB?(this[this.t-1]|=(o&(1<<this.DB-s)-1)<<s,this[this.t++]=o>>this.DB-s):this[this.t-1]|=o<<s,s+=r,s>=this.DB&&(s-=this.DB);}this.clamp(),i&&D.ZERO.subTo(this,this);}function du(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t;}function fu(t){if(this.s<0)return "-"+this.negate().toString(t);var e;if(t==16)e=4;else if(t==8)e=3;else if(t==2)e=1;else if(t==32)e=5;else if(t==4)e=2;else throw new Error("Only radix 2, 4, 8, 16, 32 are supported");var r=(1<<e)-1,n,i=false,s="",o=this.t,a=this.DB-o*this.DB%e;if(o-- >0)for(a<this.DB&&(n=this[o]>>a)>0&&(i=true,s=cs(n));o>=0;)a<e?(n=(this[o]&(1<<a)-1)<<e-a,n|=this[--o]>>(a+=this.DB-e)):(n=this[o]>>(a-=e)&r,a<=0&&(a+=this.DB,--o)),n>0&&(i=true),i&&(s+=cs(n));return i?s:"0"}function hu(){var t=te();return D.ZERO.subTo(this,t),t}function pu(){return this.s<0?this.negate():this}function gu(t){var e=this.s-t.s;if(e!=0)return e;var r=this.t;if(e=r-t.t,e!=0)return this.s<0?-e:e;for(;--r>=0;)if((e=this[r]-t[r])!=0)return e;return 0}function pn(t){var e=1,r;return (r=t>>>16)!=0&&(t=r,e+=16),(r=t>>8)!=0&&(t=r,e+=8),(r=t>>4)!=0&&(t=r,e+=4),(r=t>>2)!=0&&(t=r,e+=2),(r=t>>1)!=0&&(t=r,e+=1),e}function mu(){return this.t<=0?0:this.DB*(this.t-1)+pn(this[this.t-1]^this.s&this.DM)}function yu(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s;}function _u(t,e){for(var r=t;r<this.t;++r)e[r-t]=this[r];e.t=Math.max(this.t-t,0),e.s=this.s;}function bu(t,e){var r=t%this.DB,n=this.DB-r,i=(1<<n)-1,s=Math.floor(t/this.DB),o=this.s<<r&this.DM,a;for(a=this.t-1;a>=0;--a)e[a+s+1]=this[a]>>n|o,o=(this[a]&i)<<r;for(a=s-1;a>=0;--a)e[a]=0;e[s]=o,e.t=this.t+s+1,e.s=this.s,e.clamp();}function wu(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t){e.t=0;return}var n=t%this.DB,i=this.DB-n,s=(1<<n)-1;e[0]=this[r]>>n;for(var o=r+1;o<this.t;++o)e[o-r-1]|=(this[o]&s)<<i,e[o-r]=this[o]>>n;n>0&&(e[this.t-r-1]|=(this.s&s)<<i),e.t=this.t-r,e.clamp();}function Eu(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]-t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n-=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s;}else {for(n+=this.s;r<t.t;)n-=t[r],e[r++]=n&this.DM,n>>=this.DB;n-=t.s;}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp();}function Au(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i<n.t;++i)e[i+r.t]=r.am(0,n[i],e,i,0,r.t);e.s=0,e.clamp(),this.s!=t.s&&D.ZERO.subTo(e,e);}function Su(t){for(var e=this.abs(),r=t.t=2*e.t;--r>=0;)t[r]=0;for(r=0;r<e.t-1;++r){var n=e.am(r,e[r],t,2*r,0,1);(t[r+e.t]+=e.am(r+1,2*e[r],t,2*r+1,n,e.t-r-1))>=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1);}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp();}function vu(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t<n.t){e?.fromInt(0),r!=null&&this.copyTo(r);return}r==null&&(r=te());var s=te(),o=this.s,a=t.s,l=this.DB-pn(n[n.t-1]);l>0?(n.lShiftTo(l,s),i.lShiftTo(l,r)):(n.copyTo(s),i.copyTo(r));var c=s.t,u=s[c-1];if(u!=0){var f=u*(1<<this.F1)+(c>1?s[c-2]>>this.F2:0),d=this.FV/f,p=(1<<this.F1)/f,g=1<<this.F2,m=r.t,y=m-c,b=e??te();for(s.dlShiftTo(y,b),r.compareTo(b)>=0&&(r[r.t++]=1,r.subTo(b,r)),D.ONE.dlShiftTo(c,b),b.subTo(s,s);s.t<c;)s[s.t++]=0;for(;--y>=0;){var _=r[--m]==u?this.DM:Math.floor(r[m]*d+(r[m-1]+g)*p);if((r[m]+=s.am(0,_,r,y,0,c))<_)for(s.dlShiftTo(y,b),r.subTo(b,r);r[m]<--_;)r.subTo(b,r);}e!=null&&(r.drShiftTo(c,e),o!=a&&D.ZERO.subTo(e,e)),r.t=c,r.clamp(),l>0&&r.rShiftTo(l,r),o<0&&D.ZERO.subTo(r,r);}}}function Ru(t){var e=te();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(D.ZERO)>0&&t.subTo(e,e),e}function Tu(){if(this.t<1)return 0;var t=this[0];if((t&1)==0)return 0;var e=t&3;return e=e*(2-(t&15)*e)&15,e=e*(2-(t&255)*e)&255,e=e*(2-((t&65535)*e&65535))&65535,e=e*(2-t*e%this.DV)%this.DV,e>0?this.DV-e:-e}function Iu(t){return this.compareTo(t)==0}function Pu(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]+t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n+=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s;}else {for(n+=this.s;r<t.t;)n+=t[r],e[r++]=n&this.DM,n>>=this.DB;n+=t.s;}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp();}function Uu(t){var e=te();return this.addTo(t,e),e}function xu(t){var e=te();return this.subTo(t,e),e}function Cu(t){var e=te();return this.multiplyTo(t,e),e}function ku(t){var e=te();return this.divRemTo(t,e,null),e}function at(t){this.m=t,this.mp=t.invDigit(),this.mpl=this.mp&32767,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t;}function Du(t){var e=te();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(D.ZERO)>0&&this.m.subTo(e,e),e}function Nu(t){var e=te();return t.copyTo(e),this.reduce(e),e}function Ou(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var r=t[e]&32767,n=r*this.mpl+((r*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(r=e+this.m.t,t[r]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++;}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t);}function Fu(t,e){t.squareTo(e),this.reduce(e);}function Lu(t,e,r){t.multiplyTo(e,r),this.reduce(r);}at.prototype.convert=Du;at.prototype.revert=Nu;at.prototype.reduce=Ou;at.prototype.mulTo=Lu;at.prototype.sqrTo=Fu;function Mu(t,e,r){var n=t.bitLength(),i,s=hn(1),o=new at(e);if(n<=0)return s;n<18?i=1:n<48?i=3:n<144?i=4:n<768?i=5:i=6;var a=new Array,l=3,c=i-1,u=(1<<i)-1;if(a[1]=o.convert(this),i>1){var f=te();for(o.sqrTo(a[1],f);l<=u;)a[l]=te(),o.mulTo(f,a[l-2],a[l]),l+=2;}var d=t.t-1,p,g=true,m=te(),y;for(n=pn(t[d])-1;d>=0;){for(n>=c?p=t[d]>>n-c&u:(p=(t[d]&(1<<n+1)-1)<<c-n,d>0&&(p|=t[d-1]>>this.DB+n-c)),l=i;(p&1)==0;)p>>=1,--l;if((n-=l)<0&&(n+=this.DB,--d),g)a[p].copyTo(s),g=false;else {for(;l>1;)o.sqrTo(s,m),o.sqrTo(m,s),l-=2;l>0?o.sqrTo(s,m):(y=s,s=m,m=y),o.mulTo(m,a[p],s);}for(;d>=0&&(t[d]&1<<n)==0;)o.sqrTo(s,m),y=s,s=m,m=y,--n<0&&(n=this.DB-1,--d);}var b=o.revert(s);return r(null,b),b}D.prototype.copyTo=cu;D.prototype.fromInt=lu;D.prototype.fromString=uu;D.prototype.clamp=du;D.prototype.dlShiftTo=yu;D.prototype.drShiftTo=_u;D.prototype.lShiftTo=bu;D.prototype.rShiftTo=wu;D.prototype.subTo=Eu;D.prototype.multiplyTo=Au;D.prototype.squareTo=Su;D.prototype.divRemTo=vu;D.prototype.invDigit=Tu;D.prototype.addTo=Pu;D.prototype.toString=fu;D.prototype.negate=hu;D.prototype.abs=pu;D.prototype.compareTo=gu;D.prototype.bitLength=mu;D.prototype.mod=Ru;D.prototype.equals=Iu;D.prototype.add=Uu;D.prototype.subtract=xu;D.prototype.multiply=Cu;D.prototype.divide=ku;D.prototype.modPow=Mu;D.ZERO=hn(0);D.ONE=hn(1);function gn(t){return Oe.Buffer.from(new en().random(t).toString(),"hex")}var qu=/^[89a-f]/i,Vu="FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF",Bu="userAttributes.",$e=(function(){function t(r){this.N=new W(Vu,16),this.g=new W("2",16),this.k=new W(this.hexHash(""+this.padHex(this.N)+this.padHex(this.g)),16),this.smallAValue=this.generateRandomSmallA(),this.getLargeAValue(function(){}),this.infoBits=Oe.Buffer.from("Caldera Derived Key","utf8"),this.poolName=r;}var e=t.prototype;return e.getSmallAValue=function(){return this.smallAValue},e.getLargeAValue=function(n){var i=this;this.largeAValue?n(null,this.largeAValue):this.calculateA(this.smallAValue,function(s,o){s&&n(s,null),i.largeAValue=o,n(null,i.largeAValue);});},e.generateRandomSmallA=function(){var n=gn(128).toString("hex"),i=new W(n,16);return i},e.generateRandomString=function(){return gn(40).toString("base64")},e.getRandomPassword=function(){return this.randomPassword},e.getSaltDevices=function(){return this.SaltToHashDevices},e.getVerifierDevices=function(){return this.verifierDevices},e.generateHashDevice=function(n,i,s){var o=this;this.randomPassword=this.generateRandomString();var a=""+n+i+":"+this.randomPassword,l=this.hash(a),c=gn(16).toString("hex");this.SaltToHashDevices=this.padHex(new W(c,16)),this.g.modPow(new W(this.hexHash(this.SaltToHashDevices+l),16),this.N,function(u,f){u&&s(u,null),o.verifierDevices=o.padHex(f),s(null,null);});},e.calculateA=function(n,i){var s=this;this.g.modPow(n,this.N,function(o,a){o&&i(o,null),a.mod(s.N).equals(W.ZERO)&&i(new Error("Illegal paramater. A mod N cannot be 0."),null),i(null,a);});},e.calculateU=function(n,i){this.UHexHash=this.hexHash(this.padHex(n)+this.padHex(i));var s=new W(this.UHexHash,16);return s},e.hash=function(n){var i=new hr.Sha256;i.update(n);var s=i.digestSync(),o=Oe.Buffer.from(s).toString("hex");return new Array(64-o.length).join("0")+o},e.hexHash=function(n){return this.hash(Oe.Buffer.from(n,"hex"))},e.computehkdf=function(n,i){var s=Oe.Buffer.concat([this.infoBits,Oe.Buffer.from("","utf8")]),o=new hr.Sha256(i);o.update(n);var a=o.digestSync(),l=new hr.Sha256(a);l.update(s);var c=l.digestSync(),u=c,f=u.slice(0,16);return f},e.getPasswordAuthenticationKey=function(n,i,s,o,a){var l=this;if(s.mod(this.N).equals(W.ZERO))throw new Error("B cannot be zero.");if(this.UValue=this.calculateU(this.largeAValue,s),this.UValue.equals(W.ZERO))throw new Error("U cannot be zero.");var c=""+this.poolName+n+":"+i,u=this.hash(c),f=new W(this.hexHash(this.padHex(o)+u),16);this.calculateS(f,s,function(d,p){d&&a(d,null);var g=l.computehkdf(Oe.Buffer.from(l.padHex(p),"hex"),Oe.Buffer.from(l.padHex(l.UValue),"hex"));a(null,g);});},e.calculateS=function(n,i,s){var o=this;this.g.modPow(n,this.N,function(a,l){a&&s(a,null);var c=i.subtract(o.k.multiply(l));c.modPow(o.smallAValue.add(o.UValue.multiply(n)),o.N,function(u,f){u&&s(u,null),s(null,f.mod(o.N));});});},e.getNewPasswordRequiredChallengeUserAttributePrefix=function(){return Bu},e.padHex=function(n){if(!(n instanceof W))throw new Error("Not a BigInteger");var i=n.compareTo(W.ZERO)<0,s=n.abs().toString(16);if(s=s.length%2!==0?"0"+s:s,s=qu.test(s)?"00"+s:s,i){var o=s.split("").map(function(l){var c=~parseInt(l,16)&15;return "0123456789ABCDEF".charAt(c)}).join(""),a=new W(o,16).add(W.ONE);s=a.toString(16),s.toUpperCase().startsWith("FF8")&&(s=s.substring(2));}return s},t})();var ls=rt(ir());var pr=(function(){function t(r){this.jwtToken=r||"",this.payload=this.decodePayload();}var e=t.prototype;return e.getJwtToken=function(){return this.jwtToken},e.getExpiration=function(){return this.payload.exp},e.getIssuedAt=function(){return this.payload.iat},e.decodePayload=function(){var n=this.jwtToken.split(".")[1];try{return JSON.parse(ls.Buffer.from(n,"base64").toString("utf8"))}catch{return {}}},t})();function $u(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,mn(t,e);}function mn(t,e){return mn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},mn(t,e)}var ct=(function(t){function e(r){var n=r===void 0?{}:r,i=n.AccessToken;return t.call(this,i||"")||this}return $u(e,t),e})(pr);function Ku(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,yn(t,e);}function yn(t,e){return yn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},yn(t,e)}var lt=(function(t){function e(r){var n=r===void 0?{}:r,i=n.IdToken;return t.call(this,i||"")||this}return Ku(e,t),e})(pr);var ut=(function(){function t(r){var n=r===void 0?{}:r,i=n.RefreshToken;this.token=i||"";}var e=t.prototype;return e.getToken=function(){return this.token},t})();var z=rt(ir()),bn=rt(dn());var us="5.0.4";var ju="aws-amplify/"+us,_n={userAgent:ju,isReactNative:typeof navigator<"u"&&navigator.product==="ReactNative"},ds=function(){return _n.userAgent};var dt=(function(){function t(r){var n=r===void 0?{}:r,i=n.IdToken,s=n.RefreshToken,o=n.AccessToken,a=n.ClockDrift;if(o==null||i==null)throw new Error("Id token and Access Token must be present.");this.idToken=i,this.refreshToken=s,this.accessToken=o,this.clockDrift=a===void 0?this.calculateClockDrift():a;}var e=t.prototype;return e.getIdToken=function(){return this.idToken},e.getRefreshToken=function(){return this.refreshToken},e.getAccessToken=function(){return this.accessToken},e.getClockDrift=function(){return this.clockDrift},e.calculateClockDrift=function(){var n=Math.floor(new Date/1e3),i=Math.min(this.accessToken.getIssuedAt(),this.idToken.getIssuedAt());return n-i},e.isValid=function(){var n=Math.floor(new Date/1e3),i=n-this.clockDrift;return i<this.accessToken.getExpiration()&&i<this.idToken.getExpiration()},t})();var Hu=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Wu=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],gr=(function(){function t(){}var e=t.prototype;return e.getNowString=function(){var n=new Date,i=Wu[n.getUTCDay()],s=Hu[n.getUTCMonth()],o=n.getUTCDate(),a=n.getUTCHours();a<10&&(a="0"+a);var l=n.getUTCMinutes();l<10&&(l="0"+l);var c=n.getUTCSeconds();c<10&&(c="0"+c);var u=n.getUTCFullYear(),f=i+" "+s+" "+o+" "+a+":"+l+":"+c+" UTC "+u;return f},t})();var Pe=(function(){function t(r){var n=r===void 0?{}:r,i=n.Name,s=n.Value;this.Name=i||"",this.Value=s||"";}var e=t.prototype;return e.getValue=function(){return this.Value},e.setValue=function(n){return this.Value=n,this},e.getName=function(){return this.Name},e.setName=function(n){return this.Name=n,this},e.toString=function(){return JSON.stringify(this)},e.toJSON=function(){return {Name:this.Name,Value:this.Value}},t})();var Je={},Gu=(function(){function t(){}return t.setItem=function(r,n){return Je[r]=n,Je[r]},t.getItem=function(r){return Object.prototype.hasOwnProperty.call(Je,r)?Je[r]:void 0},t.removeItem=function(r){return delete Je[r]},t.clear=function(){return Je={},Je},t})(),mr=(function(){function t(){try{this.storageWindow=window.localStorage,this.storageWindow.setItem("aws.cognito.test-ls",1),this.storageWindow.removeItem("aws.cognito.test-ls");}catch{this.storageWindow=Gu;}}var e=t.prototype;return e.getStorage=function(){return this.storageWindow},t})();var Ju=typeof navigator<"u",fs=Ju?_n.isReactNative?"react-native":navigator.userAgent:"nodejs",Fe=(function(){function t(r){if(r==null||r.Username==null||r.Pool==null)throw new Error("Username and Pool information are required.");this.username=r.Username||"",this.pool=r.Pool,this.Session=null,this.client=r.Pool.client,this.signInUserSession=null,this.authenticationFlowType="USER_SRP_AUTH",this.storage=r.Storage||new mr().getStorage(),this.keyPrefix="CognitoIdentityServiceProvider."+this.pool.getClientId(),this.userDataKey=this.keyPrefix+"."+this.username+".userData";}var e=t.prototype;return e.setSignInUserSession=function(n){this.clearCachedUserData(),this.signInUserSession=n,this.cacheTokens();},e.getSignInUserSession=function(){return this.signInUserSession},e.getUsername=function(){return this.username},e.getAuthenticationFlowType=function(){return this.authenticationFlowType},e.setAuthenticationFlowType=function(n){this.authenticationFlowType=n;},e.initiateAuth=function(n,i){var s=this,o=n.getAuthParameters();o.USERNAME=this.username;var a=Object.keys(n.getValidationData()).length!==0?n.getValidationData():n.getClientMetadata(),l={AuthFlow:"CUSTOM_AUTH",ClientId:this.pool.getClientId(),AuthParameters:o,ClientMetadata:a};this.getUserContextData()&&(l.UserContextData=this.getUserContextData()),this.client.request("InitiateAuth",l,function(c,u){if(c)return i.onFailure(c);var f=u.ChallengeName,d=u.ChallengeParameters;return f==="CUSTOM_CHALLENGE"?(s.Session=u.Session,i.customChallenge(d)):(s.signInUserSession=s.getCognitoUserSession(u.AuthenticationResult),s.cacheTokens(),i.onSuccess(s.signInUserSession))});},e.authenticateUser=function(n,i){return this.authenticationFlowType==="USER_PASSWORD_AUTH"?this.authenticateUserPlainUsernamePassword(n,i):this.authenticationFlowType==="USER_SRP_AUTH"||this.authenticationFlowType==="CUSTOM_AUTH"?this.authenticateUserDefaultAuth(n,i):i.onFailure(new Error("Authentication flow type is invalid."))},e.authenticateUserDefaultAuth=function(n,i){var s=this,o=new $e(this.pool.getUserPoolName()),a=new gr,l,c,u={};this.deviceKey!=null&&(u.DEVICE_KEY=this.deviceKey),u.USERNAME=this.username,o.getLargeAValue(function(f,d){f&&i.onFailure(f),u.SRP_A=d.toString(16),s.authenticationFlowType==="CUSTOM_AUTH"&&(u.CHALLENGE_NAME="SRP_A");var p=Object.keys(n.getValidationData()).length!==0?n.getValidationData():n.getClientMetadata(),g={AuthFlow:s.authenticationFlowType,ClientId:s.pool.getClientId(),AuthParameters:u,ClientMetadata:p};s.getUserContextData(s.username)&&(g.UserContextData=s.getUserContextData(s.username)),s.client.request("InitiateAuth",g,function(m,y){if(m)return i.onFailure(m);var b=y.ChallengeParameters;s.username=b.USER_ID_FOR_SRP,s.userDataKey=s.keyPrefix+"."+s.username+".userData",l=new W(b.SRP_B,16),c=new W(b.SALT,16),s.getCachedDeviceKeyAndPassword(),o.getPasswordAuthenticationKey(s.username,n.getPassword(),l,c,function(_,A){_&&i.onFailure(_);var S=a.getNowString(),R=z.Buffer.concat([z.Buffer.from(s.pool.getUserPoolName(),"utf8"),z.Buffer.from(s.username,"utf8"),z.Buffer.from(b.SECRET_BLOCK,"base64"),z.Buffer.from(S,"utf8")]),N=new bn.Sha256(A);N.update(R);var F=N.digestSync(),C=z.Buffer.from(F).toString("base64"),x={};x.USERNAME=s.username,x.PASSWORD_CLAIM_SECRET_BLOCK=b.SECRET_BLOCK,x.TIMESTAMP=S,x.PASSWORD_CLAIM_SIGNATURE=C,s.deviceKey!=null&&(x.DEVICE_KEY=s.deviceKey);var O=function(J,ve){return s.client.request("RespondToAuthChallenge",J,function($,ne){return $&&$.code==="ResourceNotFoundException"&&$.message.toLowerCase().indexOf("device")!==-1?(x.DEVICE_KEY=null,s.deviceKey=null,s.randomPassword=null,s.deviceGroupKey=null,s.clearCachedDeviceKeyAndPassword(),O(J,ve)):ve($,ne)})},L={ChallengeName:"PASSWORD_VERIFIER",ClientId:s.pool.getClientId(),ChallengeResponses:x,Session:y.Session,ClientMetadata:p};s.getUserContextData()&&(L.UserContextData=s.getUserContextData()),O(L,function(M,J){return M?i.onFailure(M):s.authenticateUserInternal(J,o,i)});});});});},e.authenticateUserPlainUsernamePassword=function(n,i){var s=this,o={};if(o.USERNAME=this.username,o.PASSWORD=n.getPassword(),!o.PASSWORD){i.onFailure(new Error("PASSWORD parameter is required"));return}var a=new $e(this.pool.getUserPoolName());this.getCachedDeviceKeyAndPassword(),this.deviceKey!=null&&(o.DEVICE_KEY=this.deviceKey);var l=Object.keys(n.getValidationData()).length!==0?n.getValidationData():n.getClientMetadata(),c={AuthFlow:"USER_PASSWORD_AUTH",ClientId:this.pool.getClientId(),AuthParameters:o,ClientMetadata:l};this.getUserContextData(this.username)&&(c.UserContextData=this.getUserContextData(this.username)),this.client.request("InitiateAuth",c,function(u,f){return u?i.onFailure(u):s.authenticateUserInternal(f,a,i)});},e.authenticateUserInternal=function(n,i,s){var o=this,a=n.ChallengeName,l=n.ChallengeParameters;if(a==="SMS_MFA")return this.Session=n.Session,s.mfaRequired(a,l);if(a==="SELECT_MFA_TYPE")return this.Session=n.Session,s.selectMFAType(a,l);if(a==="MFA_SETUP")return this.Session=n.Session,s.mfaSetup(a,l);if(a==="SOFTWARE_TOKEN_MFA")return this.Session=n.Session,s.totpRequired(a,l);if(a==="CUSTOM_CHALLENGE")return this.Session=n.Session,s.customChallenge(l);if(a==="NEW_PASSWORD_REQUIRED"){this.Session=n.Session;var c=null,u=null,f=[],d=i.getNewPasswordRequiredChallengeUserAttributePrefix();if(l&&(c=JSON.parse(n.ChallengeParameters.userAttributes),u=JSON.parse(n.ChallengeParameters.requiredAttributes)),u)for(var p=0;p<u.length;p++)f[p]=u[p].substr(d.length);return s.newPasswordRequired(c,f)}if(a==="DEVICE_SRP_AUTH"){this.Session=n.Session,this.getDeviceResponse(s);return}this.signInUserSession=this.getCognitoUserSession(n.AuthenticationResult),this.challengeName=a,this.cacheTokens();var g=n.AuthenticationResult.NewDeviceMetadata;if(g==null)return s.onSuccess(this.signInUserSession);i.generateHashDevice(n.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey,n.AuthenticationResult.NewDeviceMetadata.DeviceKey,function(m){if(m)return s.onFailure(m);var y={Salt:z.Buffer.from(i.getSaltDevices(),"hex").toString("base64"),PasswordVerifier:z.Buffer.from(i.getVerifierDevices(),"hex").toString("base64")};o.verifierDevices=y.PasswordVerifier,o.deviceGroupKey=g.DeviceGroupKey,o.randomPassword=i.getRandomPassword(),o.client.request("ConfirmDevice",{DeviceKey:g.DeviceKey,AccessToken:o.signInUserSession.getAccessToken().getJwtToken(),DeviceSecretVerifierConfig:y,DeviceName:fs},function(b,_){return b?s.onFailure(b):(o.deviceKey=n.AuthenticationResult.NewDeviceMetadata.DeviceKey,o.cacheDeviceKeyAndPassword(),_.UserConfirmationNecessary===true?s.onSuccess(o.signInUserSession,_.UserConfirmationNecessary):s.onSuccess(o.signInUserSession))});});},e.completeNewPasswordChallenge=function(n,i,s,o){var a=this;if(!n)return s.onFailure(new Error("New password is required."));var l=new $e(this.pool.getUserPoolName()),c=l.getNewPasswordRequiredChallengeUserAttributePrefix(),u={};i&&Object.keys(i).forEach(function(d){u[c+d]=i[d];}),u.NEW_PASSWORD=n,u.USERNAME=this.username;var f={ChallengeName:"NEW_PASSWORD_REQUIRED",ClientId:this.pool.getClientId(),ChallengeResponses:u,Session:this.Session,ClientMetadata:o};this.getUserContextData()&&(f.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",f,function(d,p){return d?s.onFailure(d):a.authenticateUserInternal(p,l,s)});},e.getDeviceResponse=function(n,i){var s=this,o=new $e(this.deviceGroupKey),a=new gr,l={};l.USERNAME=this.username,l.DEVICE_KEY=this.deviceKey,o.getLargeAValue(function(c,u){c&&n.onFailure(c),l.SRP_A=u.toString(16);var f={ChallengeName:"DEVICE_SRP_AUTH",ClientId:s.pool.getClientId(),ChallengeResponses:l,ClientMetadata:i,Session:s.Session};s.getUserContextData()&&(f.UserContextData=s.getUserContextData()),s.client.request("RespondToAuthChallenge",f,function(d,p){if(d)return n.onFailure(d);var g=p.ChallengeParameters,m=new W(g.SRP_B,16),y=new W(g.SALT,16);o.getPasswordAuthenticationKey(s.deviceKey,s.randomPassword,m,y,function(b,_){if(b)return n.onFailure(b);var A=a.getNowString(),S=z.Buffer.concat([z.Buffer.from(s.deviceGroupKey,"utf8"),z.Buffer.from(s.deviceKey,"utf8"),z.Buffer.from(g.SECRET_BLOCK,"base64"),z.Buffer.from(A,"utf8")]),R=new bn.Sha256(_);R.update(S);var N=R.digestSync(),F=z.Buffer.from(N).toString("base64"),C={};C.USERNAME=s.username,C.PASSWORD_CLAIM_SECRET_BLOCK=g.SECRET_BLOCK,C.TIMESTAMP=A,C.PASSWORD_CLAIM_SIGNATURE=F,C.DEVICE_KEY=s.deviceKey;var x={ChallengeName:"DEVICE_PASSWORD_VERIFIER",ClientId:s.pool.getClientId(),ChallengeResponses:C,Session:p.Session};s.getUserContextData()&&(x.UserContextData=s.getUserContextData()),s.client.request("RespondToAuthChallenge",x,function(O,L){return O?n.onFailure(O):(s.signInUserSession=s.getCognitoUserSession(L.AuthenticationResult),s.cacheTokens(),n.onSuccess(s.signInUserSession))});});});});},e.confirmRegistration=function(n,i,s,o){var a={ClientId:this.pool.getClientId(),ConfirmationCode:n,Username:this.username,ForceAliasCreation:i,ClientMetadata:o};this.getUserContextData()&&(a.UserContextData=this.getUserContextData()),this.client.request("ConfirmSignUp",a,function(l){return l?s(l,null):s(null,"SUCCESS")});},e.sendCustomChallengeAnswer=function(n,i,s){var o=this,a={};a.USERNAME=this.username,a.ANSWER=n;var l=new $e(this.pool.getUserPoolName());this.getCachedDeviceKeyAndPassword(),this.deviceKey!=null&&(a.DEVICE_KEY=this.deviceKey);var c={ChallengeName:"CUSTOM_CHALLENGE",ChallengeResponses:a,ClientId:this.pool.getClientId(),Session:this.Session,ClientMetadata:s};this.getUserContextData()&&(c.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",c,function(u,f){return u?i.onFailure(u):o.authenticateUserInternal(f,l,i)});},e.sendMFACode=function(n,i,s,o){var a=this,l={};l.USERNAME=this.username,l.SMS_MFA_CODE=n;var c=s||"SMS_MFA";c==="SOFTWARE_TOKEN_MFA"&&(l.SOFTWARE_TOKEN_MFA_CODE=n),this.deviceKey!=null&&(l.DEVICE_KEY=this.deviceKey);var u={ChallengeName:c,ChallengeResponses:l,ClientId:this.pool.getClientId(),Session:this.Session,ClientMetadata:o};this.getUserContextData()&&(u.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",u,function(f,d){if(f)return i.onFailure(f);var p=d.ChallengeName;if(p==="DEVICE_SRP_AUTH"){a.getDeviceResponse(i);return}if(a.signInUserSession=a.getCognitoUserSession(d.AuthenticationResult),a.cacheTokens(),d.AuthenticationResult.NewDeviceMetadata==null)return i.onSuccess(a.signInUserSession);var g=new $e(a.pool.getUserPoolName());g.generateHashDevice(d.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey,d.AuthenticationResult.NewDeviceMetadata.DeviceKey,function(m){if(m)return i.onFailure(m);var y={Salt:z.Buffer.from(g.getSaltDevices(),"hex").toString("base64"),PasswordVerifier:z.Buffer.from(g.getVerifierDevices(),"hex").toString("base64")};a.verifierDevices=y.PasswordVerifier,a.deviceGroupKey=d.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey,a.randomPassword=g.getRandomPassword(),a.client.request("ConfirmDevice",{DeviceKey:d.AuthenticationResult.NewDeviceMetadata.DeviceKey,AccessToken:a.signInUserSession.getAccessToken().getJwtToken(),DeviceSecretVerifierConfig:y,DeviceName:fs},function(b,_){return b?i.onFailure(b):(a.deviceKey=d.AuthenticationResult.NewDeviceMetadata.DeviceKey,a.cacheDeviceKeyAndPassword(),_.UserConfirmationNecessary===true?i.onSuccess(a.signInUserSession,_.UserConfirmationNecessary):i.onSuccess(a.signInUserSession))});});});},e.changePassword=function(n,i,s,o){if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return s(new Error("User is not authenticated"),null);this.client.request("ChangePassword",{PreviousPassword:n,ProposedPassword:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),ClientMetadata:o},function(a){return a?s(a,null):s(null,"SUCCESS")});},e.enableMFA=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n(new Error("User is not authenticated"),null);var i=[],s={DeliveryMedium:"SMS",AttributeName:"phone_number"};i.push(s),this.client.request("SetUserSettings",{MFAOptions:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?n(o,null):n(null,"SUCCESS")});},e.setUserMfaPreference=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return s(new Error("User is not authenticated"),null);this.client.request("SetUserMFAPreference",{SMSMfaSettings:n,SoftwareTokenMfaSettings:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?s(o,null):s(null,"SUCCESS")});},e.disableMFA=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n(new Error("User is not authenticated"),null);var i=[];this.client.request("SetUserSettings",{MFAOptions:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(s){return s?n(s,null):n(null,"SUCCESS")});},e.deleteUser=function(n,i){var s=this;if(this.signInUserSession==null||!this.signInUserSession.isValid())return n(new Error("User is not authenticated"),null);this.client.request("DeleteUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),ClientMetadata:i},function(o){return o?n(o,null):(s.clearCachedUser(),n(null,"SUCCESS"))});},e.updateAttributes=function(n,i,s){var o=this;if(this.signInUserSession==null||!this.signInUserSession.isValid())return i(new Error("User is not authenticated"),null);this.client.request("UpdateUserAttributes",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),UserAttributes:n,ClientMetadata:s},function(a,l){return a?i(a,null):o.getUserData(function(){return i(null,"SUCCESS",l)},{bypassCache:true})});},e.getUserAttributes=function(n){if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return n(new Error("User is not authenticated"),null);this.client.request("GetUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(i,s){if(i)return n(i,null);for(var o=[],a=0;a<s.UserAttributes.length;a++){var l={Name:s.UserAttributes[a].Name,Value:s.UserAttributes[a].Value},c=new Pe(l);o.push(c);}return n(null,o)});},e.getMFAOptions=function(n){if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return n(new Error("User is not authenticated"),null);this.client.request("GetUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(i,s){return i?n(i,null):n(null,s.MFAOptions)});},e.createGetUserRequest=function(){return this.client.promisifyRequest("GetUser",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()})},e.refreshSessionIfPossible=function(n){var i=this;return n===void 0&&(n={}),new Promise(function(s){var o=i.signInUserSession.getRefreshToken();o&&o.getToken()?i.refreshSession(o,s,n.clientMetadata):s();})},e.getUserData=function(n,i){var s=this;if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return this.clearCachedUserData(),n(new Error("User is not authenticated"),null);var o=this.getUserDataFromCache();if(!o){this.fetchUserData().then(function(a){n(null,a);}).catch(n);return}if(this.isFetchUserDataAndTokenRequired(i)){this.fetchUserData().then(function(a){return s.refreshSessionIfPossible(i).then(function(){return a})}).then(function(a){return n(null,a)}).catch(n);return}try{n(null,JSON.parse(o));return}catch(a){this.clearCachedUserData(),n(a,null);return}},e.getUserDataFromCache=function(){var n=this.storage.getItem(this.userDataKey);return n},e.isFetchUserDataAndTokenRequired=function(n){var i=n||{},s=i.bypassCache,o=s===void 0?false:s;return o},e.fetchUserData=function(){var n=this;return this.createGetUserRequest().then(function(i){return n.cacheUserData(i),i})},e.deleteAttributes=function(n,i){var s=this;if(!(this.signInUserSession!=null&&this.signInUserSession.isValid()))return i(new Error("User is not authenticated"),null);this.client.request("DeleteUserAttributes",{UserAttributeNames:n,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?i(o,null):s.getUserData(function(){return i(null,"SUCCESS")},{bypassCache:true})});},e.resendConfirmationCode=function(n,i){var s={ClientId:this.pool.getClientId(),Username:this.username,ClientMetadata:i};this.client.request("ResendConfirmationCode",s,function(o,a){return o?n(o,null):n(null,a)});},e.getSession=function(n,i){if(i===void 0&&(i={}),this.username==null)return n(new Error("Username is null. Cannot retrieve a new session"),null);if(this.signInUserSession!=null&&this.signInUserSession.isValid())return n(null,this.signInUserSession);var s="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,o=s+".idToken",a=s+".accessToken",l=s+".refreshToken",c=s+".clockDrift";if(this.storage.getItem(o)){var u=new lt({IdToken:this.storage.getItem(o)}),f=new ct({AccessToken:this.storage.getItem(a)}),d=new ut({RefreshToken:this.storage.getItem(l)}),p=parseInt(this.storage.getItem(c),0)||0,g={IdToken:u,AccessToken:f,RefreshToken:d,ClockDrift:p},m=new dt(g);if(m.isValid())return this.signInUserSession=m,n(null,this.signInUserSession);if(!d.getToken())return n(new Error("Cannot retrieve a new session. Please authenticate."),null);this.refreshSession(d,n,i.clientMetadata);}else n(new Error("Local storage is missing an ID Token, Please authenticate"),null);},e.refreshSession=function(n,i,s){var o=this,a=this.pool.wrapRefreshSessionCallback?this.pool.wrapRefreshSessionCallback(i):i,l={};l.REFRESH_TOKEN=n.getToken();var c="CognitoIdentityServiceProvider."+this.pool.getClientId(),u=c+".LastAuthUser";if(this.storage.getItem(u)){this.username=this.storage.getItem(u);var f=c+"."+this.username+".deviceKey";this.deviceKey=this.storage.getItem(f),l.DEVICE_KEY=this.deviceKey;}var d={ClientId:this.pool.getClientId(),AuthFlow:"REFRESH_TOKEN_AUTH",AuthParameters:l,ClientMetadata:s};this.getUserContextData()&&(d.UserContextData=this.getUserContextData()),this.client.requestWithRetry("InitiateAuth",d,function(p,g){if(p)return p.code==="NotAuthorizedException"&&o.clearCachedUser(),a(p,null);if(g){var m=g.AuthenticationResult;return Object.prototype.hasOwnProperty.call(m,"RefreshToken")||(m.RefreshToken=n.getToken()),o.signInUserSession=o.getCognitoUserSession(m),o.cacheTokens(),a(null,o.signInUserSession)}});},e.cacheTokens=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId(),i=n+"."+this.username+".idToken",s=n+"."+this.username+".accessToken",o=n+"."+this.username+".refreshToken",a=n+"."+this.username+".clockDrift",l=n+".LastAuthUser";this.storage.setItem(i,this.signInUserSession.getIdToken().getJwtToken()),this.storage.setItem(s,this.signInUserSession.getAccessToken().getJwtToken()),this.storage.setItem(o,this.signInUserSession.getRefreshToken().getToken()),this.storage.setItem(a,""+this.signInUserSession.getClockDrift()),this.storage.setItem(l,this.username);},e.cacheUserData=function(n){this.storage.setItem(this.userDataKey,JSON.stringify(n));},e.clearCachedUserData=function(){this.storage.removeItem(this.userDataKey);},e.clearCachedUser=function(){this.clearCachedTokens(),this.clearCachedUserData();},e.cacheDeviceKeyAndPassword=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,i=n+".deviceKey",s=n+".randomPasswordKey",o=n+".deviceGroupKey";this.storage.setItem(i,this.deviceKey),this.storage.setItem(s,this.randomPassword),this.storage.setItem(o,this.deviceGroupKey);},e.getCachedDeviceKeyAndPassword=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,i=n+".deviceKey",s=n+".randomPasswordKey",o=n+".deviceGroupKey";this.storage.getItem(i)&&(this.deviceKey=this.storage.getItem(i),this.randomPassword=this.storage.getItem(s),this.deviceGroupKey=this.storage.getItem(o));},e.clearCachedDeviceKeyAndPassword=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId()+"."+this.username,i=n+".deviceKey",s=n+".randomPasswordKey",o=n+".deviceGroupKey";this.storage.removeItem(i),this.storage.removeItem(s),this.storage.removeItem(o);},e.clearCachedTokens=function(){var n="CognitoIdentityServiceProvider."+this.pool.getClientId(),i=n+"."+this.username+".idToken",s=n+"."+this.username+".accessToken",o=n+"."+this.username+".refreshToken",a=n+".LastAuthUser",l=n+"."+this.username+".clockDrift";this.storage.removeItem(i),this.storage.removeItem(s),this.storage.removeItem(o),this.storage.removeItem(a),this.storage.removeItem(l);},e.getCognitoUserSession=function(n){var i=new lt(n),s=new ct(n),o=new ut(n),a={IdToken:i,AccessToken:s,RefreshToken:o};return new dt(a)},e.forgotPassword=function(n,i){var s={ClientId:this.pool.getClientId(),Username:this.username,ClientMetadata:i};this.getUserContextData()&&(s.UserContextData=this.getUserContextData()),this.client.request("ForgotPassword",s,function(o,a){return o?n.onFailure(o):typeof n.inputVerificationCode=="function"?n.inputVerificationCode(a):n.onSuccess(a)});},e.confirmPassword=function(n,i,s,o){var a={ClientId:this.pool.getClientId(),Username:this.username,ConfirmationCode:n,Password:i,ClientMetadata:o};this.getUserContextData()&&(a.UserContextData=this.getUserContextData()),this.client.request("ConfirmForgotPassword",a,function(l){return l?s.onFailure(l):s.onSuccess("SUCCESS")});},e.getAttributeVerificationCode=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return i.onFailure(new Error("User is not authenticated"));this.client.request("GetUserAttributeVerificationCode",{AttributeName:n,AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),ClientMetadata:s},function(o,a){return o?i.onFailure(o):typeof i.inputVerificationCode=="function"?i.inputVerificationCode(a):i.onSuccess("SUCCESS")});},e.verifyAttribute=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return s.onFailure(new Error("User is not authenticated"));this.client.request("VerifyUserAttribute",{AttributeName:n,Code:i,AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(o){return o?s.onFailure(o):s.onSuccess("SUCCESS")});},e.getDevice=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("GetDevice",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:this.deviceKey},function(i,s){return i?n.onFailure(i):n.onSuccess(s)});},e.forgetSpecificDevice=function(n,i){if(this.signInUserSession==null||!this.signInUserSession.isValid())return i.onFailure(new Error("User is not authenticated"));this.client.request("ForgetDevice",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:n},function(s){return s?i.onFailure(s):i.onSuccess("SUCCESS")});},e.forgetDevice=function(n){var i=this;this.forgetSpecificDevice(this.deviceKey,{onFailure:n.onFailure,onSuccess:function(o){return i.deviceKey=null,i.deviceGroupKey=null,i.randomPassword=null,i.clearCachedDeviceKeyAndPassword(),n.onSuccess(o)}});},e.setDeviceStatusRemembered=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("UpdateDeviceStatus",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:this.deviceKey,DeviceRememberedStatus:"remembered"},function(i){return i?n.onFailure(i):n.onSuccess("SUCCESS")});},e.setDeviceStatusNotRemembered=function(n){if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("UpdateDeviceStatus",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),DeviceKey:this.deviceKey,DeviceRememberedStatus:"not_remembered"},function(i){return i?n.onFailure(i):n.onSuccess("SUCCESS")});},e.listDevices=function(n,i,s){if(this.signInUserSession==null||!this.signInUserSession.isValid())return s.onFailure(new Error("User is not authenticated"));var o={AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),Limit:n};i&&(o.PaginationToken=i),this.client.request("ListDevices",o,function(a,l){return a?s.onFailure(a):s.onSuccess(l)});},e.globalSignOut=function(n){var i=this;if(this.signInUserSession==null||!this.signInUserSession.isValid())return n.onFailure(new Error("User is not authenticated"));this.client.request("GlobalSignOut",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(s){return s?n.onFailure(s):(i.clearCachedUser(),n.onSuccess("SUCCESS"))});},e.signOut=function(n){var i=this;if(!n||typeof n!="function"){this.cleanClientData();return}this.getSession(function(s,o){if(s)return n(s);i.revokeTokens(function(a){i.cleanClientData(),n(a);});});},e.revokeTokens=function(n){if(n===void 0&&(n=function(){}),typeof n!="function")throw new Error("Invalid revokeTokenCallback. It should be a function.");if(!this.signInUserSession){var s=new Error("User is not authenticated");return n(s)}if(!this.signInUserSession.getAccessToken()){var o=new Error("No Access token available");return n(o)}var a=this.signInUserSession.getRefreshToken().getToken(),l=this.signInUserSession.getAccessToken();if(this.isSessionRevocable(l)&&a)return this.revokeToken({token:a,callback:n});n();},e.isSessionRevocable=function(n){if(n&&typeof n.decodePayload=="function")try{var i=n.decodePayload(),s=i.origin_jti;return !!s}catch{}return false},e.cleanClientData=function(){this.signInUserSession=null,this.clearCachedUser();},e.revokeToken=function(n){var i=n.token,s=n.callback;this.client.requestWithRetry("RevokeToken",{Token:i,ClientId:this.pool.getClientId()},function(o){if(o)return s(o);s();});},e.sendMFASelectionAnswer=function(n,i){var s=this,o={};o.USERNAME=this.username,o.ANSWER=n;var a={ChallengeName:"SELECT_MFA_TYPE",ChallengeResponses:o,ClientId:this.pool.getClientId(),Session:this.Session};this.getUserContextData()&&(a.UserContextData=this.getUserContextData()),this.client.request("RespondToAuthChallenge",a,function(l,c){if(l)return i.onFailure(l);if(s.Session=c.Session,n==="SMS_MFA")return i.mfaRequired(c.ChallengeName,c.ChallengeParameters);if(n==="SOFTWARE_TOKEN_MFA")return i.totpRequired(c.ChallengeName,c.ChallengeParameters)});},e.getUserContextData=function(){var n=this.pool;return n.getUserContextData(this.username)},e.associateSoftwareToken=function(n){var i=this;this.signInUserSession!=null&&this.signInUserSession.isValid()?this.client.request("AssociateSoftwareToken",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken()},function(s,o){return s?n.onFailure(s):n.associateSecretCode(o.SecretCode)}):this.client.request("AssociateSoftwareToken",{Session:this.Session},function(s,o){return s?n.onFailure(s):(i.Session=o.Session,n.associateSecretCode(o.SecretCode))});},e.verifySoftwareToken=function(n,i,s){var o=this;this.signInUserSession!=null&&this.signInUserSession.isValid()?this.client.request("VerifySoftwareToken",{AccessToken:this.signInUserSession.getAccessToken().getJwtToken(),UserCode:n,FriendlyDeviceName:i},function(a,l){return a?s.onFailure(a):s.onSuccess(l)}):this.client.request("VerifySoftwareToken",{Session:this.Session,UserCode:n,FriendlyDeviceName:i},function(a,l){if(a)return s.onFailure(a);o.Session=l.Session;var c={};c.USERNAME=o.username;var u={ChallengeName:"MFA_SETUP",ClientId:o.pool.getClientId(),ChallengeResponses:c,Session:o.Session};o.getUserContextData()&&(u.UserContextData=o.getUserContextData()),o.client.request("RespondToAuthChallenge",u,function(f,d){return f?s.onFailure(f):(o.signInUserSession=o.getCognitoUserSession(d.AuthenticationResult),o.cacheTokens(),s.onSuccess(o.signInUserSession))});});},t})();rt(ps());function ft(){}ft.prototype.userAgent=ds();var gs=function(e){var r=ft.category?" "+ft.category:"",n=ft.framework?" framework/"+ft.framework:"",i=""+ft.prototype.userAgent+r+n;return i};function zu(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,Rt(t,e);}function An(t){var e=typeof Map=="function"?new Map:void 0;return An=function(n){if(n===null||!Xu(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(e!==void 0){if(e.has(n))return e.get(n);e.set(n,i);}function i(){return Qu(n,arguments,Sn(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:false,writable:true,configurable:true}}),Rt(i,n)},An(t)}function Qu(t,e,r){if(ms())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var i=new(t.bind.apply(t,n));return r&&Rt(i,r.prototype),i}function ms(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch{}return (ms=function(){return !!t})()}function Xu(t){try{return Function.toString.call(t).indexOf("[native code]")!==-1}catch{return typeof t=="function"}}function Rt(t,e){return Rt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Rt(t,e)}function Sn(t){return Sn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Sn(t)}var Zu=(function(t){function e(r,n,i,s){var o;return o=t.call(this,r)||this,o.code=n,o.name=i,o.statusCode=s,o}return zu(e,t),e})(An(Error)),ys=(function(){function t(r,n,i){this.endpoint=n||"https://cognito-idp."+r+".amazonaws.com/";var s=i||{},o=s.credentials;this.fetchOptions=o?{credentials:o}:{};}var e=t.prototype;return e.promisifyRequest=function(n,i){var s=this;return new Promise(function(o,a){s.request(n,i,function(l,c){l?a(new Zu(l.message,l.code,l.name,l.statusCode)):o(c);});})},e.requestWithRetry=function(n,i,s){var o=this,a=5*1e3;nd(function(l){return new Promise(function(c,u){o.request(n,l,function(f,d){f?u(f):c(d);});})},[i],a).then(function(l){return s(null,l)}).catch(function(l){return s(l)});},e.request=function(n,i,s){var o={"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":"AWSCognitoIdentityProviderService."+n,"X-Amz-User-Agent":gs(),"Cache-Control":"no-store"},a=Object.assign({},this.fetchOptions,{headers:o,method:"POST",mode:"cors",body:JSON.stringify(i)}),l;fetch(this.endpoint,a).then(function(u){return l=u,u},function(u){throw u instanceof TypeError?new Error("Network error"):u}).then(function(u){return u.json().catch(function(){return {}})}).then(function(u){if(l.ok)return s(null,u);var f=(u.__type||u.code).split("#").pop(),d=new Error(u.message||u.Message||null);return d.name=f,d.code=f,s(d)}).catch(function(u){if(l&&l.headers&&l.headers.get("x-amzn-errortype"))try{var f=l.headers.get("x-amzn-errortype").split(":")[0],d=new Error(l.status?l.status.toString():null);return d.code=f,d.name=f,d.statusCode=l.status,s(d)}catch{return s(u)}else u instanceof Error&&u.message==="Network error"&&(u.code="NetworkError");return s(u)});},t})();var yr={debug:function(){}};var ed=function(e){var r="nonRetryable";return e&&e[r]};function _s(t,e,r,n){if(n===void 0&&(n=1),typeof t!="function")throw Error("functionToRetry must be a function");return yr.debug(t.name+" attempt #"+n+" with args: "+JSON.stringify(e)),t.apply(void 0,e).catch(function(i){if(yr.debug("error on "+t.name,i),ed(i))throw yr.debug(t.name+" non retryable error",i),i;var s=r(n,e,i);if(yr.debug(t.name+" retrying in "+s+" ms"),s!==false)return new Promise(function(o){return setTimeout(o,s)}).then(function(){return _s(t,e,r,n+1)});throw i})}function td(t){var e=100,r=100;return function(n){var i=Math.pow(2,n)*e+r*Math.random();return i>t?false:i}}function nd(t,e,r){return _s(t,e,td(r))}var id=55,vn=(function(){function t(r,n){var i=r||{},s=i.UserPoolId,o=i.ClientId,a=i.endpoint,l=i.fetchOptions,c=i.AdvancedSecurityDataCollectionFlag;if(!s||!o)throw new Error("Both UserPoolId and ClientId are required.");if(s.length>id||!/^[\w-]+_[0-9a-zA-Z]+$/.test(s))throw new Error("Invalid UserPoolId format.");var u=s.split("_")[0];this.userPoolId=s,this.clientId=o,this.client=new ys(u,a,l),this.advancedSecurityDataCollectionFlag=c!==false,this.storage=r.Storage||new mr().getStorage(),n&&(this.wrapRefreshSessionCallback=n);}var e=t.prototype;return e.getUserPoolId=function(){return this.userPoolId},e.getUserPoolName=function(){return this.getUserPoolId().split("_")[1]},e.getClientId=function(){return this.clientId},e.signUp=function(n,i,s,o,a,l){var c=this,u={ClientId:this.clientId,Username:n,Password:i,UserAttributes:s,ValidationData:o,ClientMetadata:l};this.getUserContextData(n)&&(u.UserContextData=this.getUserContextData(n)),this.client.request("SignUp",u,function(f,d){if(f)return a(f,null);var p={Username:n,Pool:c,Storage:c.storage},g={user:new Fe(p),userConfirmed:d.UserConfirmed,userSub:d.UserSub,codeDeliveryDetails:d.CodeDeliveryDetails};return a(null,g)});},e.getCurrentUser=function(){var n="CognitoIdentityServiceProvider."+this.clientId+".LastAuthUser",i=this.storage.getItem(n);if(i){var s={Username:i,Pool:this,Storage:this.storage};return new Fe(s)}return null},e.getUserContextData=function(n){if(!(typeof AmazonCognitoAdvancedSecurityData>"u")){var i=AmazonCognitoAdvancedSecurityData;if(this.advancedSecurityDataCollectionFlag){var s=i.getData(n,this.userPoolId,this.clientId);if(s){var o={EncodedData:s};return o}}return {}}},t})();function _r(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)n!=="__proto__"&&(t[n]=r[n]);}return t}var sd={read:function(t){return t[0]==='"'&&(t=t.slice(1,-1)),t.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(t){return encodeURIComponent(t).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function Rn(t,e){function r(i,s,o){if(!(typeof document>"u")){o=_r({},e,o),typeof o.expires=="number"&&(o.expires=new Date(Date.now()+o.expires*864e5)),o.expires&&(o.expires=o.expires.toUTCString()),i=encodeURIComponent(i).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var a="";for(var l in o)o[l]&&(a+="; "+l,o[l]!==true&&(a+="="+o[l].split(";")[0]));return document.cookie=i+"="+t.write(s,i)+a}}function n(i){if(!(typeof document>"u"||arguments.length&&!i)){for(var s=document.cookie?document.cookie.split("; "):[],o={},a=0;a<s.length;a++){var l=s[a].split("="),c=l.slice(1).join("=");try{var u=decodeURIComponent(l[0]);if(u in o||(o[u]=t.read(c,u)),i===u)break}catch{}}return i?o[i]:o}}return Object.create({set:r,get:n,remove:function(i,s){r(i,"",_r({},s,{expires:-1}));},withAttributes:function(i){return Rn(this.converter,_r({},this.attributes,i))},withConverter:function(i){return Rn(_r({},this.converter,i),this.attributes)}},{attributes:{value:Object.freeze(e)},converter:{value:Object.freeze(t)}})}Rn(sd,{path:"/"});var h=class extends Error{constructor(e,r){if(Array.isArray(e)&&e.length<=2){let n=e[1];if(e.length>2)for(let i=2;i<e.length&&typeof e[i]=="string";i++)n+=e[i];super((n||"Something went wrong.").trim()),this.name=r?.name||"SKAPI",this.code=r?.code||e[0]||"ERROR",r?.cause&&(this.cause=r.cause);}else super((e?.message||(typeof e=="string"?e:"Something went wrong.")).trim()),typeof e=="string"?(this.name=r?.name||"SKAPI",this.code=r?.code||"ERROR",r?.cause&&(this.cause=r.cause)):e instanceof Error?(this.cause=e,this.name=e.name,e.hasOwnProperty("code")&&(this.code=e.code)):typeof e=="object"&&e?.code&&e?.message&&(this.name=r?.name||"SKAPI",this.code=r?.code||"ERROR",this.cause=e?.cause);}};var Le="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tn=BigInt(Le.length),ad=2*1024*1024,cd=["aud","cognito:username","event_id","exp","iat","iss","jti","origin_jti","secret_key","token_use"],bs={auth_time:"log",sub:"user_id"},vs=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l"],Rs=["us31","us72","ap51","ap22","ap41","eu71","ap21","us32","us71","af51","ap31","ap43","ap23","ap42","ca01","eu01","eu72","eu51","eu73","eu11","me51","sa31"],ws=typeof TextEncoder<"u"?new TextEncoder:null;function ld(){if(typeof globalThis<"u")return globalThis.Buffer}function G(t){if(ws)return ws.encode(t);let e=unescape(encodeURIComponent(t)),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function In(t){if(t instanceof Uint8Array)return t;if(typeof t=="string")return G(t);if(typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof ArrayBuffer<"u"&&ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(Array.isArray(t))return Uint8Array.from(t);let e=ld();if(e)return new Uint8Array(e.from(t));throw new Error("No byte conversion available in this environment.")}var v=class v{static hash(e){typeof e!="string"&&(console.warn("coercing non-string value to empty string"),e="");let r=v.sb(e),n=1732584193,i=-271733879,s=-1732584194,o=271733878,a,l,c,u;for(let f=0;f<r.length;f+=16)a=n,l=i,c=s,u=o,n=v.ff(n,i,s,o,r[f],7,-680876936),o=v.ff(o,n,i,s,r[f+1],12,-389564586),s=v.ff(s,o,n,i,r[f+2],17,606105819),i=v.ff(i,s,o,n,r[f+3],22,-1044525330),n=v.ff(n,i,s,o,r[f+4],7,-176418897),o=v.ff(o,n,i,s,r[f+5],12,1200080426),s=v.ff(s,o,n,i,r[f+6],17,-1473231341),i=v.ff(i,s,o,n,r[f+7],22,-45705983),n=v.ff(n,i,s,o,r[f+8],7,1770035416),o=v.ff(o,n,i,s,r[f+9],12,-1958414417),s=v.ff(s,o,n,i,r[f+10],17,-42063),i=v.ff(i,s,o,n,r[f+11],22,-1990404162),n=v.ff(n,i,s,o,r[f+12],7,1804603682),o=v.ff(o,n,i,s,r[f+13],12,-40341101),s=v.ff(s,o,n,i,r[f+14],17,-1502002290),i=v.ff(i,s,o,n,r[f+15],22,1236535329),n=v.gg(n,i,s,o,r[f+1],5,-165796510),o=v.gg(o,n,i,s,r[f+6],9,-1069501632),s=v.gg(s,o,n,i,r[f+11],14,643717713),i=v.gg(i,s,o,n,r[f],20,-373897302),n=v.gg(n,i,s,o,r[f+5],5,-701558691),o=v.gg(o,n,i,s,r[f+10],9,38016083),s=v.gg(s,o,n,i,r[f+15],14,-660478335),i=v.gg(i,s,o,n,r[f+4],20,-405537848),n=v.gg(n,i,s,o,r[f+9],5,568446438),o=v.gg(o,n,i,s,r[f+14],9,-1019803690),s=v.gg(s,o,n,i,r[f+3],14,-187363961),i=v.gg(i,s,o,n,r[f+8],20,1163531501),n=v.gg(n,i,s,o,r[f+13],5,-1444681467),o=v.gg(o,n,i,s,r[f+2],9,-51403784),s=v.gg(s,o,n,i,r[f+7],14,1735328473),i=v.gg(i,s,o,n,r[f+12],20,-1926607734),n=v.hh(n,i,s,o,r[f+5],4,-378558),o=v.hh(o,n,i,s,r[f+8],11,-2022574463),s=v.hh(s,o,n,i,r[f+11],16,1839030562),i=v.hh(i,s,o,n,r[f+14],23,-35309556),n=v.hh(n,i,s,o,r[f+1],4,-1530992060),o=v.hh(o,n,i,s,r[f+4],11,1272893353),s=v.hh(s,o,n,i,r[f+7],16,-155497632),i=v.hh(i,s,o,n,r[f+10],23,-1094730640),n=v.hh(n,i,s,o,r[f+13],4,681279174),o=v.hh(o,n,i,s,r[f],11,-358537222),s=v.hh(s,o,n,i,r[f+3],16,-722521979),i=v.hh(i,s,o,n,r[f+6],23,76029189),n=v.hh(n,i,s,o,r[f+9],4,-640364487),o=v.hh(o,n,i,s,r[f+12],11,-421815835),s=v.hh(s,o,n,i,r[f+15],16,530742520),i=v.hh(i,s,o,n,r[f+2],23,-995338651),n=v.ii(n,i,s,o,r[f],6,-198630844),o=v.ii(o,n,i,s,r[f+7],10,1126891415),s=v.ii(s,o,n,i,r[f+14],15,-1416354905),i=v.ii(i,s,o,n,r[f+5],21,-57434055),n=v.ii(n,i,s,o,r[f+12],6,1700485571),o=v.ii(o,n,i,s,r[f+3],10,-1894986606),s=v.ii(s,o,n,i,r[f+10],15,-1051523),i=v.ii(i,s,o,n,r[f+1],21,-2054922799),n=v.ii(n,i,s,o,r[f+8],6,1873313359),o=v.ii(o,n,i,s,r[f+15],10,-30611744),s=v.ii(s,o,n,i,r[f+6],15,-1560198380),i=v.ii(i,s,o,n,r[f+13],21,1309151649),n=v.ii(n,i,s,o,r[f+4],6,-145523070),o=v.ii(o,n,i,s,r[f+11],10,-1120210379),s=v.ii(s,o,n,i,r[f+2],15,718787259),i=v.ii(i,s,o,n,r[f+9],21,-343485551),n=v.ad(n,a),i=v.ad(i,l),s=v.ad(s,c),o=v.ad(o,u);return v.rh(n)+v.rh(i)+v.rh(s)+v.rh(o)}static rh(e){let r="";for(let n=0;n<=3;n++)r+=v.alphabet.charAt(e>>n*8+4&15)+v.alphabet.charAt(e>>n*8&15);return r}static ad(e,r){let n=(e&65535)+(r&65535);return (e>>16)+(r>>16)+(n>>16)<<16|n&65535}static rl(e,r){return e<<r|e>>>32-r}static cm(e,r,n,i,s,o){return v.ad(v.rl(v.ad(v.ad(r,e),v.ad(i,o)),s),n)}static ff(e,r,n,i,s,o,a){return v.cm(r&n|~r&i,e,r,s,o,a)}static gg(e,r,n,i,s,o,a){return v.cm(r&i|n&~i,e,r,s,o,a)}static hh(e,r,n,i,s,o,a){return v.cm(r^n^i,e,r,s,o,a)}static ii(e,r,n,i,s,o,a){return v.cm(n^(r|~i),e,r,s,o,a)}static sb(e){let r,n=(e.length+8>>6)+1,i=new Array(n*16);for(r=0;r<n*16;r++)i[r]=0;for(r=0;r<e.length;r++)i[r>>2]|=e.charCodeAt(r)<<r%4*8;return i[r>>2]|=128<<r%4*8,i[n*16-2]=e.length*8,i}};v.alphabet="0123456789abcdef";var X=v;function Ts(t){if(t===0)return Le[0];let e="";for(;t>0;)e=Le[t%62]+e,t=Math.floor(t/62);return e}function _e(t){return t.split("").reverse().reduce((e,r,n)=>e+Le.indexOf(r)*62**n,0)}function Ye(t=6){let e="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=r.length,i=0;for(;i<t;)e+=r.charAt(Math.floor(Math.random()*n)),i+=1;return e}function Pn(){return typeof window>"u"||!!window?._runningInNodeJS}function oe(){return !Pn()&&typeof document<"u"&&typeof document.createElement=="function"}function br(t){let e;try{e=JSON.stringify(t);}catch{throw new h("Invalid data type.",{code:"INVALID_REQUEST"})}if(new Blob([e]).size>ad)throw new h("Data should not exceed 2MB",{code:"INVALID_REQUEST"})}function Es(t){return t===""||t==="on"||t==="true"}function As(t){return t==="false"}function Ss(t,e,r){e.name&&r(t,e.name,e.value);}var wr=oe(),ud=typeof SubmitEvent<"u",dd=typeof HTMLFormElement<"u";function j(t,e,r){let n={},i=[];function s(l,c,u){if(e?.ignoreEmpty&&u==="")return;if(e?.nullIfEmpty&&u===""&&(u=null),typeof r=="function"){let p=r(c,u);p!==void 0&&(u=p);}let f=c.split("[").map(p=>{let g=p.replace("]",""),m=Number(g);return !isNaN(m)&&!g.includes(".")?g=m:(g[0]==='"'&&g[g.length-1]==='"'||g[0]==="'"&&g[g.length-1]==="'")&&(g=g.replace(/"/g,"").replace(/'/g,"")),g}),d=l;if(typeof f[0]=="number")throw new h("Form key cannot start with an array index.",{code:"INVALID_REQUEST"});for(let p=0;p<f.length;p++){let g=f[p];p<f.length-1?(d[g]===void 0&&(typeof f[p+1]=="number"?d[g]=[]:d[g]={}),d=d[g]):d[g]===void 0?d[g]=u:Array.isArray(d[g])?d[g].push(u):d[g]=[d[g],u];}}function o(l,c,u){if(u instanceof File)l.push({name:c,file:u});else if(u instanceof FileList&&u&&u.length>0)for(let f=0;f<=u.length-1;f++){let d=u.item(f);d&&l.push({name:c,file:d});}}let a=l=>{l.name&&(l.type==="number"?l.value&&s(n,l.name,Number(l.value)):l.type==="checkbox"||l.type==="radio"?l.checked?l.type==="checkbox"&&l.value===""||Es(l.value)?s(n,l.name,true):As(l.value)?s(n,l.name,false):l.value&&s(n,l.name,l.value):l.type==="checkbox"&&(Es(l.value)?s(n,l.name,false):As(l.value)&&s(n,l.name,true)):l.type==="file"?l.files&&l.files.length>0&&o(i,l.name,l.files):s(n,l.name,l.value));};if(wr&&(t instanceof HTMLInputElement||t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement))return a(t),br(n),{data:n,files:i};if(wr&&t instanceof FormData){for(let l of t.entries()){let c=l[0],u=l[1];if(u instanceof File||u instanceof FileList)o(i,c,u);else if(u instanceof Blob){let f=u;if(f.type==="application/json")try{let d=JSON.parse(f.text());s(n,c,d);}catch{s(n,c,f);}}else s(n,c,u);}return br(n),{data:n,files:i}}if(wr&&ud&&t instanceof SubmitEvent&&(t=t.target),wr&&dd&&t instanceof HTMLFormElement){let l=t.querySelectorAll("input"),c=t.querySelectorAll("select"),u=t.querySelectorAll("textarea");for(let f=0;f<c.length;f++)Ss(n,c[f],s);for(let f=0;f<u.length;f++)Ss(n,u[f],s);for(let f=0;f<l.length;f++)a(l[f]);return br(n),{data:n,files:i}}return br(t),{data:t,files:i}}function Tt(t){let e={};for(let r in t){let n=t[r];if(!cd.includes(r))if(bs[r])e[bs[r]]=n;else if(r.includes("custom:"))e[r.replace("custom:","")]=n;else if(r==="address"){let i=n;if(i&&typeof i=="object"&&Object.keys(i).length){if(i?.formatted)try{e[r]=JSON.parse(i.formatted);}catch{e[r]=i.formatted;}}else e[r]=i;}else e[r]=n;}for(let r of ["address_public","birthdate_public","email_public","gender_public","phone_number_public","access_group"])r.includes("_public")?e.hasOwnProperty(r.split("_")[0])?e[r]=e.hasOwnProperty(r)?!!Number(e[r]):false:delete e[r]:e[r]=e.hasOwnProperty(r)?Number(e[r]):0;for(let r of ["email","phone_number"])e.hasOwnProperty(r)?e[r+"_verified"]=e[r+"_verified"]===true:delete e[r+"_verified"];return e}function Un(t){if(t=bd(t),t.split("-").length===7){let e=t.split("-"),r,n;try{r=Rs[vs.indexOf(e[1][0])],n=e.slice(2).join("-");}catch{throw new Error("INVALID_PARAMETER: Service ID is invalid: "+t)}if(!r)throw new Error("INVALID_PARAMETER: Service ID is invalid: "+t);return {service:r+e[0]+e[1].slice(1),owner:n}}return {service:t,owner:""}}function xn(t,e){let r=Rs.indexOf(t.slice(0,4)),n=vs[r],s=`${t.slice(4,-4)}-${n}${t.slice(-4)}-${e}`;return _d(s)}function fd(t){let e=0n;for(let r of t){let n=Le.indexOf(r);if(n<0)throw new Error(`INVALID_PARAMETER: Invalid base62 character: ${r}`);e=e*Tn+BigInt(n);}return e}function hd(t,e=1){if(t<0n)throw new Error("INVALID_PARAMETER: Negative values are not supported.");if(t===0n)return "0".repeat(Math.max(1,e));let r="",n=t;for(;n>0n;){let i=Number(n%Tn);r=Le[i]+r,n/=Tn;}return r.length<e&&(r="0".repeat(e-r.length)+r),r}function pd(t){if(t===0n)return Uint8Array.from([0]);let e=[],r=t;for(;r>0n;)e.push(Number(r&0xffn)),r>>=8n;return e.reverse(),Uint8Array.from(e)}function gd(t){let e=0n;for(let r of t)e=(e<<8n)+BigInt(r);return e}function md(t){let e=String(t).replace(/-/g,"");if(!/^[0-9a-fA-F]{32}$/.test(e))throw new Error("INVALID_PARAMETER: Invalid UUID format.");let r=new Uint8Array(16);for(let n=0;n<16;n++)r[n]=parseInt(e.slice(n*2,n*2+2),16);return r}function yd(t){let e=Array.from(In(t),r=>r.toString(16).padStart(2,"0")).join("");return [e.slice(0,8),e.slice(8,12),e.slice(12,16),e.slice(16,20),e.slice(20)].join("-")}function _d(t){let e=String(t);if(e.split("-").length===2)return e;let r=e.match(/^([0-9A-Za-z]+)-([0-9A-Za-z]+)-([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/);if(!r)throw new Error("INVALID_PARAMETER: Input must match <base62>-<base62>-<uuid>.");let[,n,i,s]=r;if(n.length<2)throw new Error("INVALID_PARAMETER: The first part must contain at least 2 characters.");if(i.length>=Le.length)throw new Error("INVALID_PARAMETER: The middle section is too long to encode.");let o=n.slice(0,2),a=n.slice(2),l=i+o,c=Le[i.length]+a+l,u=md(s),f=hd(gd(u));return `${c}-${f}`}function bd(t){let e=String(t);if(e.split("-").length!==2)return e;let r=e.split("-");if(r.length!==2||!r[0]||!r[1])throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let[n,i]=r,s=Le.indexOf(n[0]);if(s<0)throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let o=n.slice(1),a=s+2;if(o.length<a)throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let l=o.slice(0,o.length-a),c=o.slice(o.length-a),u=c.slice(s),f=c.slice(0,s),d=u+l;if(!/^[0-9A-Za-z]+$/.test(d)||!/^[0-9A-Za-z]+$/.test(f))throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let p=fd(i),g=pd(p);if(g.length>16)throw new Error("INVALID_PARAMETER: Corrupt compressed token: "+e);let m=new Uint8Array(16);m.set(g,16-g.length);let y=yd(m);return `${d}-${f}-${y}`}function It(t){if(typeof TextDecoder<"u")return new TextDecoder().decode(t);let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return decodeURIComponent(escape(e))}function Cn(...t){let e=0;for(let i of t)e+=i.length;let r=new Uint8Array(e),n=0;for(let i of t)r.set(i,n),n+=i.length;return r}function Pt(t,e,r=[],n=null){let i=["string","number","boolean","object","array","function","null","undefined"];function s(g){return g!==null&&typeof g=="object"&&!Array.isArray(g)}function o(g){return s(g)}function a(g){return Array.isArray(g)}function l(g){return typeof g=="string"&&i.indexOf(g)!==-1}function c(g){return Array.isArray(g)?"array":g===null?"null":typeof g}function u(g){try{return JSON.stringify(g)}catch{return String(g)}}function f(g){if(l(g))return `Type<${g}>`;if(typeof g=="function")return "custom validator";try{return JSON.stringify(g,(m,y)=>typeof y=="function"?"custom validator":y)}catch{return String(g)}}function d(g,m){return m==="array"?Array.isArray(g):m==="object"?s(g):m==="null"?g===null:m==="undefined"?typeof g>"u":typeof g===m}function p(g){return n===null?g:`${n}[${g}]`}if(typeof e>"u")throw new Error('Argument "struct" is required.');if(typeof e=="function")return e(t);if(o(e)){if(!s(t))throw new Error(`Data schema does not match:
207
+ `+JSON.stringify(t,null,2));for(let g of Object.keys(e)){let m=p(g);if(Object.prototype.hasOwnProperty.call(t,g))t[g]=Pt(t[g],e[g],r,m);else {if(r.indexOf(m)!==-1)throw new Error(`Key "${m}" is required.`);let y=e[g];a(y)&&y.length>1&&typeof y[y.length-1]=="function"&&(t[g]=y[y.length-1]());}}return t}if(a(e)){let g=false;if(e.length===1&&!a(e[0])&&!o(e[0])){let m=e[0];if(!Array.isArray(t))throw new Error(`Type <${c(t)}> is invalid in "${n}". Expected a list.`);for(let y=0;y<t.length;y++){let b=t[y];if(l(m)){if(!d(b,m))throw new Error(`Type <${c(b)}> is invalid in "${n}". Expected a list of Type <${m}>.`)}else if(typeof m=="function")t[y]=m(b);else if(b!==m)throw new Error(`Value ${u(b)} is invalid in "${n}". Expected a list of ${u(m)}.`)}g=true;}else if(Array.isArray(t)&&e.every(y=>!a(y)&&y!=="array")){for(let y=0;y<t.length;y++){let b=false,_="";for(let A of e)try{t[y]=Pt(t[y],A,r,n),b=!0;break}catch(S){typeof A=="function"&&(_=S?.message||String(S));}if(!b&&_)throw new Error(_);if(!b){let A=e.map(f).join(", ");throw new Error(`${u(t[y])} is invalid in "${n}". allowed types or values are: ${A}.`)}}g=true;}else {let y="";for(let b of e)try{t=Pt(t,b,r,n),g=!0;break}catch(_){typeof b=="function"&&(y=_?.message||String(_));}if(!g&&y)throw new Error(y)}if(!g){let m=e.map(f).join(", ");throw new Error(`${u(t)} is invalid in "${n}". allowed types or values are: ${m}.`)}return t}if(l(e)&&d(t,e)||t===e)return t;throw new Error(`${u(t)} is invalid in "${n}". allowed type or value is: ${f(e)}.`)}function wd(t,e="User ID"){let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;if(t){if(typeof t!="string")throw new h(`${e} should be type: string.`,{code:"INVALID_PARAMETER"});if(!t.match(r))throw new h(`${e} is invalid.`,{code:"INVALID_PARAMETER"})}else throw new h(`${e} is empty.`,{code:"INVALID_PARAMETER"});return t}function Ed(t){if(t&&(typeof t!="string"||t.charAt(0)!=="+"||isNaN(Number(t.substring(1)))))throw new h('"phone_number" is invalid. The format should be "+00123456789". Type: string.',{code:"INVALID_PARAMETER"});return t||""}function Ad(t){if(t){if(typeof t!="string")throw new h('"birthdate" is invalid. The format should be "yyyy-mm-dd". Type: string.',{code:"INVALID_PARAMETER"});{let e=new RegExp(/([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/);if(t.length!==10||t.split("-").length!==3||!e.test(t))throw new h('"birthdate" is invalid. The format should be "yyyy-mm-dd". Type: string.',{code:"INVALID_PARAMETER"})}}return t||""}function Sd(t){if(t){if(typeof t!="string")throw new h('"password" should be type: string.',{code:"INVALID_PARAMETER"});if(t.length<6)throw new h('"password" should be at least 6 characters.',{code:"INVALID_PARAMETER"});if(t.length>60)throw new h('"password" can be up to 60 characters max.',{code:"INVALID_PARAMETER"})}else throw new h('"password" is required.',{code:"INVALID_PARAMETER"});return t}function vd(t,e="email"){if(t){if(typeof t!="string")throw new h(`"${e}"should be type: string.`,{code:"INVALID_PARAMETER"});if(t.length<5)throw new h(`"${e}" should be at least 5 characters.`,{code:"INVALID_PARAMETER"});if(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(t)&&(t=t.trim(),t.split("@")[1].split(".").length>=2))return t.toLowerCase()}else throw new h(`"${e}" is required.`,{code:"INVALID_PARAMETER"});throw new h(`"${t}" is an invalid email.`,{code:"INVALID_PARAMETER"})}function Rd(t){let e=typeof window<"u",r=(()=>{let i=e&&window.location.origin||null;return i&&i.slice(-1)==="/"&&(i=i.slice(0,-1)),i})(),n=i=>{if(typeof i=="string"){if(i==="*")return "*";{let s=i.trim();if(s[0]==="/"&&r){if(r.slice(0,5)==="file:")throw new h(`"${i}" is an invalid url. Relative URL does not work on local file system. Use full URL string.`,{code:"INVALID_PARAMETER"});s=r+s;}else if(s[0]==="."&&r){if(r.slice(0,5)==="file:")throw new h(`"${i}" is an invalid url. Relative URL does not work on local file system. Use full URL string.`,{code:"INVALID_PARAMETER"});let a=e?window.location.href.split("?")[0]:"";a.slice(-1)!=="/"&&(a+="/"),s=a+s.slice(1);}let o;try{o=new URL(s);}catch{throw new h(`"${i}" is an invalid url.`,{code:"INVALID_PARAMETER"})}if(o.protocol)return o.href}}throw new h(`"${i}" is an invalid url.`,{code:"INVALID_PARAMETER"})};return Array.isArray(t)?t.map(i=>n(i)):n(t)}function Td(t,e,r=[],n){let i=j(t,n),s=i.data;e.service="string",e.owner="string";let o={};for(let a in e)if(s&&typeof s=="object"&&!Array.isArray(s)&&s.hasOwnProperty(a))if(typeof s[a]=="function")o[a]=s[a];else try{o[a]=JSON.parse(JSON.stringify(s[a]));}catch{o[a]=s[a];}n?.precall&&n.precall({data:o,files:i?.files||[]});try{return Pt(o,e,r)}catch(a){throw new h(a.message,{code:"INVALID_PARAMETER"})}}var w={UserId:wd,PhoneNumber:Ed,Birthdate:Ad,Password:Sd,Email:vd,Url:Rd,Params:Td};var ae="skapi.enc.v1",Us=6e5,Ut=12,Er=null,ht=null;function xs(){return new h("Encryption requires Web Crypto, which needs a secure context (https, or localhost) in the browser, or Node 18 or newer. A page served over plain http has crypto.getRandomValues but crypto.subtle is undefined.",{code:"NOT_SUPPORTED"})}function Cs(){if(ht)return ht;let t=typeof globalThis<"u"?globalThis:void 0;if(t?.crypto?.subtle&&typeof t.crypto.getRandomValues=="function")return ht=t.crypto,ht;try{let e=typeof globalThis<"u"?globalThis:void 0,r=null;if(e?.process&&typeof e.process.getBuiltinModule=="function"&&(r=e.process.getBuiltinModule("crypto")),!r&&typeof Ve=="function"&&(r=Ve("crypto")),r?.webcrypto?.subtle)return ht=r.webcrypto,ht}catch{}throw xs()}function me(){if(Er)return Er;let t=Cs();if(!t.subtle)throw xs();return Er=t.subtle,Er}function Dn(){try{return me(),!0}catch{return false}}function ce(t){let e=Cs(),r=new Uint8Array(t),n=65536;for(let i=0;i<t;i+=n)e.getRandomValues(r.subarray(i,Math.min(i+n,t)));return r}function B(t){let e=In(t),r;if(typeof Buffer<"u"&&typeof Buffer.from=="function")r=Buffer.from(e).toString("base64");else if(typeof btoa=="function"){let n="";for(let s=0;s<e.length;s+=32768)n+=String.fromCharCode.apply(null,Array.from(e.subarray(s,s+32768)));r=btoa(n);}else throw new h("No base64 encoder available in this environment.",{code:"NOT_SUPPORTED"});return r.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function K(t){if(typeof t!="string")throw new h("Expected a base64url string.",{code:"INVALID_PARAMETER"});let e=t.replace(/-/g,"+").replace(/_/g,"/"),r=e.length%4;if(r===2)e+="==";else if(r===3)e+="=";else if(r===1)throw new h("Malformed base64url string.",{code:"INVALID_PARAMETER"});if(typeof Buffer<"u"&&typeof Buffer.from=="function"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}if(typeof atob=="function"){let n=atob(e),i=new Uint8Array(n.length);for(let s=0;s<n.length;s++)i[s]=n.charCodeAt(s);return i}throw new h("No base64 decoder available in this environment.",{code:"NOT_SUPPORTED"})}async function Ar(t){let e=await me().digest("SHA-256",t);return new Uint8Array(e)}async function kt(t,e,r,n){let i=me(),s=await i.importKey("raw",t,"HKDF",false,["deriveBits"]),o=await i.deriveBits({name:"HKDF",hash:"SHA-256",salt:e,info:r},s,n*8);return new Uint8Array(o)}async function gt(t,e,r,n){let i=me(),s=G(t.normalize("NFC")),o=await i.importKey("raw",s,"PBKDF2",false,["deriveBits"]),a=new Uint8Array(await i.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:"SHA-256"},o,256)),l=await kt(a,e,n,32);V(a),V(s);let c=await be(l);return V(l),c}async function be(t){return me().importKey("raw",t,{name:"AES-GCM"},false,["encrypt","decrypt"])}async function ks(){let t=ce(32),e=await be(t);return {bytes:t,key:e}}async function ye(t,e,r){let n=ce(Ut),i=await me().encrypt({name:"AES-GCM",iv:n,additionalData:r,tagLength:128},t,e);return {iv:n,ct:new Uint8Array(i)}}async function we(t,e,r,n){let i=await me().decrypt({name:"AES-GCM",iv:e,additionalData:n,tagLength:128},t,r);return new Uint8Array(i)}var Sr={name:"ECDH",namedCurve:"P-256"};async function Ds(){let t=me(),e=await t.generateKey(Sr,true,["deriveBits"]),r=new Uint8Array(await t.exportKey("raw",e.publicKey)),n=new Uint8Array(await t.exportKey("pkcs8",e.privateKey)),i=await Nn(n);return {pubRaw:r,pkcs8:n,priv:i}}async function Nn(t){return me().importKey("pkcs8",t,Sr,false,["deriveBits"])}async function Ns(t){if(t.length!==65||t[0]!==4)throw new h("Malformed public key: expected a 65 byte uncompressed P-256 point.",{code:"INVALID_PARAMETER"});return me().importKey("raw",t,Sr,false,[])}async function On(t){return B(await Ar(t))}async function Os(t,e,r,n){let i=me(),s=await Ns(t),o=await i.generateKey(Sr,true,["deriveBits"]),a=new Uint8Array(await i.deriveBits({name:"ECDH",public:s},o.privateKey,256)),l=await kt(a,new Uint8Array(32),r,32);V(a);let c=await be(l);V(l);let{iv:u,ct:f}=await ye(c,e,n);return {epk:new Uint8Array(await i.exportKey("raw",o.publicKey)),iv:u,ct:f}}async function Fs(t,e,r,n,i,s){let o=me(),a=await Ns(e),l=new Uint8Array(await o.deriveBits({name:"ECDH",public:a},t,256)),c=await kt(l,new Uint8Array(32),i,32);V(l);let u=await be(c);return V(c),we(u,r,n,s)}function V(t){t&&t.length&&t.fill(0);}function Id(t,e){if(t.length!==e.length)return false;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}function Fn(t){return G(JSON.stringify(t))}function Dt(t,e,r){return Cn(t,new Uint8Array([0]),G(e),new Uint8Array([0]),G(r))}var ze="0123456789ABCDEFGHJKMNPQRSTVWXYZ",xt=16,Is=26,Ps=28;function Ls(t){let e=2166136261;for(let r=0;r<t.length;r++)e^=t[r],e=e*16777619>>>0;return e&1023}function Ms(t){if(t.length!==xt)throw new h(`A recovery code needs exactly ${xt} bytes.`,{code:"INVALID_PARAMETER"});let e="",r=0,n=0;for(let s=0;s<t.length;s++)for(r=r<<8|t[s],n+=8;n>=5;)n-=5,e+=ze[r>>n&31];n>0&&(e+=ze[r<<5-n&31]);let i=Ls(t);return e+=ze[i>>5&31]+ze[i&31],(e.match(/.{1,4}/g)||[]).join("-")}function qs(t){if(typeof t!="string")throw new h("Recovery code should be a string.",{code:"INVALID_PARAMETER"});let e=t.toUpperCase().replace(/[\s\-_]/g,"").replace(/O/g,"0").replace(/[IL]/g,"1");if(e.length!==Ps)throw new h(`That does not look like a recovery code: expected ${Ps} characters, got ${e.length}.`,{code:"ENCRYPTION_BAD_RECOVERY_CODE"});let r=e.slice(0,Is),n=e.slice(Is),i=0,s=0,o=[];for(let c=0;c<r.length;c++){let u=ze.indexOf(r[c]);if(u<0)throw new h(`That does not look like a recovery code: "${r[c]}" is not a valid character.`,{code:"ENCRYPTION_BAD_RECOVERY_CODE"});i=i<<5|u,s+=5,s>=8&&(s-=8,o.push(i>>s&255));}let a=new Uint8Array(o.slice(0,xt)),l=Ls(a);if(n!==ze[l>>5&31]+ze[l&31])throw new h("That recovery code has a typo in it: the check characters do not match.",{code:"ENCRYPTION_BAD_RECOVERY_CODE"});return a}async function Ln(t,e,r){let n=await kt(t,e,r,32),i=await be(n);return V(n),i}var kn=[83,75,69,78,67,70],Vs=2,Ct=56,Bs=16,Pd=4*1024*1024;function Mn(t){if(!t||t.length<Ct)return false;for(let e=0;e<kn.length;e++)if(t[e]!==kn[e])return false;return true}function Qe(t,e,r){t[e]=r>>>24&255,t[e+1]=r>>>16&255,t[e+2]=r>>>8&255,t[e+3]=r&255;}function pt(t,e){return (t[e]<<24>>>0)+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3]}function Ud(t,e,r){let n=Math.floor(r/4294967296);Qe(t,e,n),Qe(t,e+4,r>>>0);}function xd(t,e){return pt(t,e)*4294967296+pt(t,e+4)}async function $s(t,e,r,n,i,s){let o=G(`${ae}|binfile|${r}|${n}|${i}|${s}`),a=await kt(t,e,o,32),l=await be(a);return V(a),l}async function Ks(t){return (await Ar(Cn(G(`${ae}|dekid`),t))).subarray(0,8)}function js(t,e,r){return Fn([`${ae}|binchunk`,B(t),e,r])}function Cd(t,e,r,n,i,s){let o=new Uint8Array(Ct+s.length);return o.set(kn,0),o[6]=Vs,o[7]=s.length?1:0,Qe(o,8,t),Qe(o,12,e),o.set(r,16),Ud(o,32,n),o.set(i,40),Qe(o,48,s.length),Qe(o,52,0),s.length&&o.set(s,Ct),o}async function Hs(t,e,r,n,i=Pd){let s=ce(Bs),o=await $s(t,s,r.service,r.owner,r.recordOwner,r.recordId),a=await Ks(t),l=n?G(JSON.stringify(n)):new Uint8Array(0);if(l.length>4096)throw new h("Encrypted file metadata is too large.",{code:"INVALID_PARAMETER"});let c=e.length===0?1:Math.ceil(e.length/i),u=Cd(i,c,s,e.length,a,l),f=await Ar(u),d=[],p=u.length;for(let y=0;y<c;y++){let b=e.subarray(y*i,Math.min((y+1)*i,e.length)),_=await ye(o,b,js(f,y,c));d.push(_),p+=4+_.iv.length+_.ct.length;}let g=new Uint8Array(p);g.set(u,0);let m=u.length;for(let y of d)Qe(g,m,y.iv.length+y.ct.length),m+=4,g.set(y.iv,m),m+=y.iv.length,g.set(y.ct,m),m+=y.ct.length;return g}function kd(t){if(!Mn(t))throw new h("This file is not an encrypted skapi file.",{code:"INVALID_PARAMETER"});let e=pt(t,48),r=Ct+e;if(t.length<r)throw new h("Encrypted file header is truncated.",{code:"INVALID_REQUEST"});let n=null;return e&&(n=JSON.parse(It(t.subarray(Ct,r)))),{version:t[6],chunkBytes:pt(t,8),count:pt(t,12),fileId:t.subarray(16,16+Bs),plainLen:xd(t,32),dekId:t.subarray(40,48),meta:n,headerLen:r}}async function Ws(t,e,r){let n=kd(e);if(n.version!==Vs)throw new h(`This file was encrypted by a different version of the SDK (container v${n.version}).`,{code:"NOT_SUPPORTED"});if(!n.count||!n.chunkBytes)throw new h("Encrypted file header is malformed.",{code:"INVALID_PARAMETER"});let i=await Ks(t);if(!Id(i,n.dekId))throw new h("This file was encrypted under a previous data key for this record, so it can no longer be opened. It was most likely left behind by an interrupted access change.",{code:"ENCRYPTION_FILE_STALE_KEY"});let s=await $s(t,n.fileId,r.service,r.owner,r.recordOwner,r.recordId),o=await Ar(e.subarray(0,n.headerLen)),a=[],l=n.headerLen,c=0;for(let d=0;d<n.count;d++){if(l+4>e.length)throw new h("Encrypted file is truncated.",{code:"INVALID_REQUEST"});let p=pt(e,l);if(l+=4,p<Ut+16||l+p>e.length)throw new h("Encrypted file is truncated.",{code:"INVALID_REQUEST"});let g=await we(s,e.subarray(l,l+Ut),e.subarray(l+Ut,l+p),js(o,d,n.count));l+=p,a.push(g),c+=g.length;}let u=new Uint8Array(c),f=0;for(let d of a)u.set(d,f),f+=d.length;return {bytes:u,meta:n.meta}}var Dd="__skapi__keyring",Nt="__skapi_enc__",Js=1,Nd="skapi-enc",je="keys",Vn=new WeakMap;function Ys(t){if(!t)return null;if(t===true&&(t={}),typeof t!="object")throw new h('"options.encryption" should be a boolean or an object.',{code:"INVALID_PARAMETER"});let e=typeof t.iterations=="number"?t.iterations:Us;if(e<1e5)throw new h('"encryption.iterations" must be at least 100000.',{code:"INVALID_PARAMETER"});let r=t.trustPolicy==="strict"?"strict":"tofu";return {enabled:true,iterations:e,trustPolicy:r,persistDevice:t.persistDevice!==false,minPasswordLength:typeof t.minPasswordLength=="number"?t.minPasswordLength:0,withheld:t.withheld==="sentinel"?"sentinel":"null",recovery:t.recovery==="none"?"none":"code",table:typeof t.table=="string"&&t.table?t.table:Dd}}function q(){return Vn.get(this)||null}function zs(t){if(!t){Vn.delete(this);return}Vn.set(this,{cfg:t,status:"locked",reason:"NO_SESSION_KEY",user_id:"",scope:"",mk:null,ikPriv:null,pubRaw:null,fpr:"",keyringRecordId:"",pins:{},dek:new Map,roll:new Set,passthrough:new Map,rawRead:false,ready:null,unlocking:false,pendingRecoveryCode:"",peerPub:new Map,peerInflight:new Map});}function Bn(){let t=q.call(this);if(t){t.user_id&&Xn.call(this,t).catch(()=>{}),t.ready=null,t.unlocking=false,t.pendingRecoveryCode="";for(let[,e]of t.dek)V(e.bytes);t.dek.clear(),t.roll.clear(),t.passthrough.clear(),t.peerPub.clear(),t.peerInflight.clear(),t.pins={},t.mk=null,t.ikPriv=null,t.pubRaw=null,t.fpr="",t.keyringRecordId="",t.user_id="",t.status="locked",t.reason="NO_SESSION_KEY";}}function Qs(){let t=q.call(this);return t?{status:t.status,reason:t.status==="unlocked"?void 0:t.reason,user_id:t.user_id||void 0,fingerprint:t.fpr||void 0}:{status:"disabled"}}function Xs(t,e){return typeof e=="string"&&e===t.cfg.table}function mt(){return `${this.service}/${this.owner}`}function $n(t,e,r,n){let[i,s]=t.split("/");return Fn([ae,i,s,e,r,n])}function Zs(t,e,r,n,i){let[s,o]=t.split("/");return G(`${ae}|dekwrap|${s}|${o}|${e}|${r}|${n}|${i}`)}function Kn(t){return t.anch==="uid"?t.uid:t.anch==="rid"?t.rid:""}function Rr(t){return !!t&&typeof t=="object"&&!Array.isArray(t)&&typeof t[Nt]=="number"&&typeof t.ct=="string"&&typeof t.iv=="string"&&typeof t.own=="string"&&typeof t.anch=="string"&&!!t.k&&typeof t.k=="object"&&!Array.isArray(t.k)}var eo="__skapi_no_access__";function le(t,e,r){if(t.withheld!=="sentinel")return null;let n={[eo]:true,reason:e};return r&&(n.recipients=r),Object.freeze(n)}function jn(t){return !!t&&typeof t=="object"&&t[eo]===true}var Od=256*1024,Lt="__skenc_ct__",to="payload.bin",Fd=`/${Lt}/${to}`;function Hn(t,e){return t===Lt&&e===to}async function Ld(t,e,r){let n=e?.table,i=typeof n=="string"?n:n?.name;if(n&&(typeof n=="string"||n.access_group!==void 0))return {group:typeof n=="string"?0:Gs(n.access_group),table:i,record:null};if(!r)return {group:n?.access_group!==void 0?Gs(n.access_group):0,table:i,record:null};let s=t.dek.get(r);if(s)return {group:s.access_group,table:i,record:null};let o=await Ke.call(this,r);if(!o)throw new h(`Record "${r}" not found.`,{code:"NOT_EXISTS"});return {group:o.table.access_group,table:o.table.name,record:o}}function Md(t){return this.getFile(t,{dataType:"blob"})}async function Ke(t){let e=/^[a-zA-Z0-9]+$/.test(t)?{record_id:t}:{unique_id:t};return (await this.getRecords(e,{limit:1}))?.list?.[0]||null}function Gs(t){return t==="private"||t==="*"||t==="**"?"private":t==="public"?0:t==="authorized"?1:t==="admin"?99:typeof t=="number"?t:0}function qn(t,e,r){let n=this.user?.user_id;if(!(!t||!t.user_id||!n||t.user_id===n))throw new h(`Record "${e}" belongs to another user (${t.user_id}), so ${r} would either seal it under the wrong key or strand its contents. Encryption only operates on records you own, no matter what access level you hold.`,{code:"ENCRYPTION_NOT_RECORD_OWNER"})}async function Wn(t,e,r){let n=q.call(this);if(!n)return {send:t,plain:t,encrypted:false,omit:false};let i=e?.record_id||"",s=i,o=e?.unique_id||"";if(i&&n.passthrough.has(i)){let $=n.passthrough.get(i);return n.passthrough.delete(i),{send:$,plain:t,encrypted:true,omit:false}}let{group:a,table:l,record:c}=await Ld.call(this,n,e,s);if(a!=="private"){let $=true;if(!r&&i){let ee=c||await Ke.call(this,i);if(ee&&ee.encrypted){if(qn.call(this,ee,i,"making it non-private"),ee.encrypted.status==="failed")throw new h(`Cannot make record "${i}" non-private: its current contents could not be decrypted (${ee.encrypted.reason}), so they cannot be written back in the clear. Unlock encryption, or supply the record's data with the access group change.`,{code:"ENCRYPTION_LOCKED"});let St=!!ee.bin&&Object.keys(ee.bin).some(Yt=>(ee.bin[Yt]||[]).some(_i=>_i&&_i.encrypted));if(!St&&s){let Yt=n.dek.get(s);Yt&&(V(Yt.bytes),n.dek.delete(s));}return {send:ee.data,plain:ee.data,encrypted:false,omit:false,files:St?"decrypt":void 0}}}let ne=c;i&&!ne&&(ne=await Ke.call(this,i).catch(()=>null)),ne&&ne.encrypted&&qn.call(this,ne,i,"making it non-private");let yi=!!ne&&!!ne.bin&&Object.keys(ne.bin).some(ee=>(ne.bin[ee]||[]).some(St=>St&&St.encrypted));if(yi&&($=false),$&&s){let ee=n.dek.get(s);ee&&(V(ee.bytes),n.dek.delete(s));}return {send:t,plain:t,encrypted:false,omit:!r,files:yi?"decrypt":void 0}}if(Xs(n,l))return {send:t,plain:t,encrypted:false,omit:false};if(n.ready&&!n.unlocking)try{await n.ready;}catch{}if(!r)return {send:t,plain:t,encrypted:false,omit:true};if(jn.call(this,t))throw new h("This record's data could not be decrypted by this session, so it cannot be written back. Writing it would replace the record with the placeholder.",{code:"ENCRYPTION_CANNOT_REWRITE_WITHHELD"});if(n.status!=="unlocked"||!n.mk)throw new h("Encryption is enabled but locked, so this private record cannot be written. Call unlockEncryption({ password }) first, or the user must log in with their password.",{code:"ENCRYPTION_LOCKED"});if(t&&typeof t=="object"&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,Nt))throw new h(`"${Nt}" is a reserved key in record data.`,{code:"INVALID_PARAMETER"});if(e?.service&&e.service!==this.service||e?.owner&&e.owner!==this.owner)throw new h("Encrypted records cannot be written to another project. The encryption key is derived per project, so a record written under one service and read under another could never be decrypted. Construct a separate Skapi instance for that project.",{code:"INVALID_REQUEST"});let u=this.user?.user_id;if(!u)throw new h("User login is required to write an encrypted record.",{code:"INVALID_REQUEST"});let f=mt.call(this),d=false;if(i&&n.roll.has(i)){d=true,n.roll.delete(i);let $=n.dek.get(i);n.dek.delete(i),$&&V($.bytes);}let p=c;i&&!p&&!n.dek.has(i)&&(p=await Ke.call(this,i).catch(()=>null)),p&&qn.call(this,p,i,"making it private");let g=!!p&&!p.encrypted&&!!p.bin&&Object.keys(p.bin).some($=>(p.bin[$]||[]).some(ne=>ne&&!ne.encrypted)),m=null;if(i&&!d&&(m=n.dek.get(i)||null,!m)){let $=p||c||await Ke.call(this,i);if($&&(s=$.record_id||i,m=n.dek.get(s)||null,!o&&$.unique_id&&(o=$.unique_id),!m&&$.encrypted?.status==="failed"))throw new h(`Cannot update encrypted record "${i}": its current contents could not be decrypted (${$.encrypted.reason}), so its existing key wraps cannot be preserved. Updating anyway would revoke everyone it is shared with.`,{code:"ENCRYPTION_LOCKED"})}s===i&&m&&m.rid&&(s=m.rid),!o&&m&&m.anch==="uid"&&m.uid&&(o=m.uid);let y,b,_;if(m){if(m.own&&m.own!==u)throw new h(`Record "${i}" belongs to another user (${m.own}). Encryption only operates on records you own.`,{code:"ENCRYPTION_NOT_RECORD_OWNER"});y=m.bytes,b=m.key,_=Object.assign({},m.recipients);}else {let $=await ks();y=$.bytes,b=$.key,_={};}let A=o?"uid":s?"rid":"new",S=A==="uid"?o:A==="rid"?s:"",R=$n(f,u,A,S),N=Dt(R,u,"mk"),F=await ye(n.mk,y,N);_[u]={t:"mk",iv:B(F.iv),ct:B(F.ct)},m&&(m.anch!==A||Kn(m)!==S)&&(_=await qd.call(this,n,y,_,f,u,A,S,R));let C=G(JSON.stringify(t===void 0?null:t)),x=await ye(b,C,R);V(C);let O={[Nt]:Js,enc:"A256GCM",kw:"ECDH-ES+A256GCM",anch:A,uid:o,rid:s,own:u,iv:B(x.iv),ct:B(x.ct),k:_},L,M,J=O.ct;s&&J.length>Od&&(L=K(J),O.ct="",O.ct_ref=Fd,m&&m.ctRef&&(M=m.ctRef));let ve=JSON.stringify(O).length;if(ve>2*1024*1024)throw new h(`Encrypted record data is too large: once encrypted and base64 encoded it becomes ${ve} bytes, over the ${2*1024*1024} byte limit. Encryption costs about 33% plus roughly 230 bytes per additional recipient.`,{code:"ENCRYPTED_DATA_TOO_LARGE"});return s&&n.dek.set(s,{bytes:y,key:b,recipients:_,anch:A,uid:o,rid:s,own:u,access_group:"private"}),{send:O,plain:t,encrypted:true,omit:false,spill:L,retireCt:M,dek:{bytes:y,key:b,recipients:_,anch:A,uid:o,rid:s,own:u,access_group:"private"},files:g?"encrypt":void 0}}function ro(t,e){let r=q.call(this);!r||!e||!t||r.dek.has(t)||r.dek.set(t,Object.assign({},e,{rid:t}));}async function qd(t,e,r,n,i,s,o,a){let l=Object.keys(r).filter(f=>f!==i);if(!l.length)return r;let c=await Zn.call(this,l),u={[i]:r[i]};for(let f of l){let d=c[f];d&&(u[f]=await no.call(this,e,d,n,o,i,f,a));}return u}async function no(t,e,r,n,i,s,o){let a=Zs(r,n,i,s,e.fpr),l=Dt(o,s,e.fpr),c=await Os(e.pubRaw,t,a,l);return {t:"ecdh",epk:B(c.epk),iv:B(c.iv),ct:B(c.ct),fpr:e.fpr}}async function io(t,e){if(!Rr(t))return {value:t};if(e.access_group!=="private")return {value:t};let r=q.call(this);if(!r)return {value:null,flag:{status:"failed",reason:"ENCRYPTION_DISABLED"}};if(r.rawRead)return {value:t};if(Xs(r,e.table_name))return {value:t};if(t[Nt]!==Js)return {value:le(r.cfg,"UNSUPPORTED_VERSION"),flag:{status:"failed",reason:"UNSUPPORTED_VERSION"}};if(r.ready&&!r.unlocking)try{await r.ready;}catch{}if(t.own!==e.user_id)return {value:le(r.cfg,"BINDING_MISMATCH"),flag:{status:"failed",reason:"BINDING_MISMATCH"}};if(t.uid&&e.unique_id&&t.uid!==e.unique_id)return {value:le(r.cfg,"BINDING_MISMATCH"),flag:{status:"failed",reason:"BINDING_MISMATCH"}};if(t.rid&&e.record_id&&t.rid!==e.record_id)return {value:le(r.cfg,"BINDING_MISMATCH"),flag:{status:"failed",reason:"BINDING_MISMATCH"}};let n=this.user?.user_id,i=n?t.k[n]:null;if(!i)return {value:le(r.cfg,"NOT_A_RECIPIENT",Object.keys(t.k)),flag:{status:"failed",reason:"NOT_A_RECIPIENT",recipients:Object.keys(t.k)}};if(r.status!=="unlocked"||!r.mk)return {value:le(r.cfg,"NO_SESSION_KEY"),flag:{status:"failed",reason:"NO_SESSION_KEY"}};let s=mt.call(this),o=Kn(t),a=$n(s,t.own,t.anch,o),l;try{if(i.t==="mk")l=await we(r.mk,K(i.iv),K(i.ct),Dt(a,n,"mk"));else if(i.t==="ecdh"){if(!r.ikPriv)return {value:le(r.cfg,"NO_SESSION_KEY"),flag:{status:"failed",reason:"NO_SESSION_KEY"}};l=await Fs(r.ikPriv,K(i.epk),K(i.iv),K(i.ct),Zs(s,o,t.own,n,i.fpr),Dt(a,n,i.fpr));}else return {value:le(r.cfg,"UNSUPPORTED_VERSION"),flag:{status:"failed",reason:"UNSUPPORTED_VERSION"}}}catch{return {value:le(r.cfg,"BAD_KEY"),flag:{status:"failed",reason:"BAD_KEY"}}}let c;try{if(t.ct_ref){if(!e.ctUrl)return V(l),{value:le(r.cfg,"DATA_UNAVAILABLE"),flag:{status:"failed",reason:"DATA_UNAVAILABLE"}};let p=await Md.call(this,e.ctUrl);c=new Uint8Array(await p.arrayBuffer());}else c=K(t.ct);}catch{return V(l),{value:le(r.cfg,"DATA_UNAVAILABLE"),flag:{status:"failed",reason:"DATA_UNAVAILABLE"}}}let u,f;try{f=await be(l),u=await we(f,K(t.iv),c,a);}catch{return V(l),{value:le(r.cfg,"CORRUPT"),flag:{status:"failed",reason:"CORRUPT"}}}let d;try{d=JSON.parse(It(u));}catch{return V(u),V(l),{value:le(r.cfg,"CORRUPT"),flag:{status:"failed",reason:"CORRUPT"}}}if(V(u),e.record_id){let p=r.dek.get(e.record_id);p?(p.bytes=l,p.key=f,p.recipients=t.k,p.anch=t.anch,p.uid=t.uid,p.own=t.own,p.access_group="private",p.ctRef=t.ct_ref||""):r.dek.set(e.record_id,{bytes:l,key:f,recipients:t.k,anch:t.anch,uid:t.uid,rid:e.record_id,own:t.own,access_group:"private",ctRef:t.ct_ref||""});}else V(l);return {value:d,flag:{status:"encrypted",recipients:Object.keys(t.k)}}}function Ot(t,e){let[r,n]=t.split("/");return G(`${ae}|kek|${r}|${n}|${e}`)}function Ft(t,e,r,n){let[i,s]=t.split("/");return G(`${ae}|mk|${i}|${s}|${e}|PBKDF2-SHA256|${r}|${n}`)}function so(t,e){let[r,n]=t.split("/");return G(`${ae}|recovery|${r}|${n}|${e}`)}function oo(t,e,r){let[n,i]=t.split("/");return G(`${ae}|rk|${n}|${i}|${e}|HKDF-SHA256|${r}`)}function ao(t,e){let[r,n]=t.split("/");return G(`${ae}|self|${r}|${n}|${e}`)}function co(t,e){let[r,n]=t.split("/");return G(`${ae}|ik|${r}|${n}|${e}`)}async function Tr(t){let r=((await this.getRecords({table:{name:t.cfg.table,access_group:"private"},index:{name:"$user_id",value:this.user.user_id,condition:"="}},{limit:2}))?.list||[]).filter(n=>n.user_id===this.user.user_id);return r.length?(r.sort((n,i)=>n.uploaded-i.uploaded),r[0]):null}async function Gn(t,e,r){let n=ce(xt),i=Ms(n),s=ce(16),o=B(s),a=await Ln(n,s,so(t,e)),l=await ye(a,r,oo(t,e,o));return V(n),{code:i,wrap:{id:B(ce(6)),p:"recovery",kdf:{a:"HKDF-SHA256",s:o},iv:B(l.iv),ct:B(l.ct),created:Date.now()}}}async function Vd(t,e,r,n){let i=qs(n),s=(r||[]).filter(o=>o.p==="recovery");s.sort((o,a)=>(a.created||0)-(o.created||0));for(let o of s)try{let a=await Ln(i,K(o.kdf.s),so(t,e)),l=await we(a,K(o.iv),K(o.ct),oo(t,e,o.kdf.s));return V(i),l}catch{}return V(i),null}async function Bd(t,e,r,n,i){let s=ce(16),o=B(s),a=await gt(n,s,t.cfg.iterations,Ot(e,r)),l=await ye(a,i,Ft(e,r,t.cfg.iterations,o));return {id:B(ce(6)),p:"password",kdf:{a:"PBKDF2-SHA256",it:t.cfg.iterations,s:o},iv:B(l.iv),ct:B(l.ct),created:Date.now()}}async function $d(t,e){let r=this.user.user_id,n=t.scope,i=ce(16),s=B(i),o=await gt(e,i,t.cfg.iterations,Ot(n,r)),a=ce(32),l=await ye(o,a,Ft(n,r,t.cfg.iterations,s)),c=await be(a),u=await Ds(),f=await ye(c,u.pkcs8,co(n,r));V(u.pkcs8);let d=null;t.cfg.recovery==="code"&&(d=await Gn(n,r,a));let p=await ye(c,a,ao(n,r));V(a);let g=await On(u.pubRaw),m=Date.now(),y=[{id:B(ce(6)),p:"password",kdf:{a:"PBKDF2-SHA256",it:t.cfg.iterations,s},iv:B(l.iv),ct:B(l.ct),created:m}];d&&y.push(d.wrap);let b={v:1,alg:"ECDH-P-256",user_id:r,wraps:y,ik:{iv:B(f.iv),ct:B(f.ct)},self:{iv:B(p.iv),ct:B(p.ct)},pub:B(u.pubRaw),fpr:g,pins:null,created:m,updated:m};await this.postRecord({v:1,alg:"ECDH-P-256",user_id:r,pub:B(u.pubRaw),fpr:g,created:m},{table:{name:t.cfg.table,access_group:"authorized"},index:{name:"pubkey",value:r}});let _=await this.postRecord(b,{table:{name:t.cfg.table,access_group:"private"}}),A=await Tr.call(this,t);if(A&&A.record_id!==_.record_id){await lo.call(this,t,A,e);return}t.mk=c,t.ikPriv=u.priv,t.pubRaw=u.pubRaw,t.fpr=g,t.keyringRecordId=_.record_id,d&&(t.pendingRecoveryCode=d.code),t.user_id=r,t.pins={},t.status="unlocked",t.reason="";}async function lo(t,e,r){let n=this.user.user_id,i=t.scope,s=e.data;if(e.user_id!==n||s&&s.user_id&&s.user_id!==n)throw new h("The encryption keyring does not belong to this user.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let a=(Array.isArray(s?.wraps)?s.wraps:[]).filter(u=>u.p==="password");if(!a.length)throw new h("The keyring has no password wrap.",{code:"ENCRYPTION_KEYRING_CORRUPT"});a.sort((u,f)=>(f.created||0)-(u.created||0));let l=null;for(let u of a)try{let f=K(u.kdf.s),d=await gt(r,f,u.kdf.it,Ot(i,n));l=await we(d,K(u.iv),K(u.ct),Ft(i,n,u.kdf.it,u.kdf.s));break}catch{}if(!l)throw new h("Incorrect password: the encryption keyring could not be opened.",{code:"ENCRYPTION_BAD_PASSWORD"});let c=await be(l);V(l),await Jn.call(this,t,e,c);}async function Jn(t,e,r){let n=this.user.user_id,i=e.data,s=await we(r,K(i.ik.iv),K(i.ik.ct),co(t.scope,n)),o=await Nn(s);V(s);let a={};if(i.pins&&typeof i.pins=="object"&&i.pins.ct)try{let l=await we(r,K(i.pins.iv),K(i.pins.ct),G(`${ae}|pins|${t.scope}|${n}`));a=JSON.parse(It(l)),V(l);}catch{a={};}t.mk=r,t.ikPriv=o,t.pubRaw=K(i.pub),t.fpr=i.fpr,t.keyringRecordId=e.record_id,t.user_id=n,t.pins=a,t.status="unlocked",t.reason="";}async function Ir(t){let e=q.call(this);if(!e||!this.user?.user_id)return;if(!Dn()){e.status="locked",e.reason="NO_WEB_CRYPTO";return}if(this.user?.is_openid){e.status="locked",e.reason="OPENID_UNSUPPORTED";return}if(e.cfg.minPasswordLength&&t.length<e.cfg.minPasswordLength){e.status="locked",e.reason="WEAK_PASSWORD";return}e.scope=mt.call(this);let r=await Tr.call(this,e);r?await lo.call(this,e,r,t):await $d.call(this,e,t),e.cfg.persistDevice&&await go.call(this,e).catch(()=>{});}async function uo(t){await this.__connection;let e=q.call(this);if(!e)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});if(!this.user?.user_id)throw new h("User login is required.",{code:"INVALID_REQUEST"});if(!t?.password||typeof t.password!="string")throw new h('"password" is required.',{code:"INVALID_PARAMETER"});if(await Ir.call(this,t.password),e.status!=="unlocked")throw new h(`Encryption could not be unlocked: ${e.reason}`,{code:"ENCRYPTION_LOCKED"});return {status:e.status}}async function fo(t){let e=q.call(this);return e?(t?.forgetDevice&&await Xn.call(this,e).catch(()=>{}),Bn.call(this),this.__cached_requests={},{status:e.status}):{status:"disabled"}}async function ho(t,e){let r=q.call(this);if(!r)return;if(r.status!=="unlocked"||!r.mk)throw new h("Encryption must be unlocked before changing the password, or the encryption keyring would be left wrapped under a password that no longer exists. Call unlockEncryption({ password }) first.",{code:"ENCRYPTION_LOCKED"});let i=(await this.getRecords({record_id:r.keyringRecordId},{limit:1}))?.list?.[0];if(!i)throw new h("The encryption keyring could not be read, so the password change was stopped before it could strand it.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let s=this.user.user_id,o=i.data,a=(o.wraps||[]).filter(m=>m.p==="password");a.sort((m,y)=>(y.created||0)-(m.created||0));let l=null;for(let m of a)try{let y=await gt(t,K(m.kdf.s),m.kdf.it,Ot(r.scope,s));l=await we(y,K(m.iv),K(m.ct),Ft(r.scope,s,m.kdf.it,m.kdf.s));break}catch{}if(!l)throw new h("Incorrect current password: the encryption keyring was not re-wrapped.",{code:"ENCRYPTION_BAD_PASSWORD"});let c=ce(16),u=B(c),f=await gt(e,c,r.cfg.iterations,Ot(r.scope,s)),d=await ye(f,l,Ft(r.scope,s,r.cfg.iterations,u));V(l);let p=Date.now(),g=(o.wraps||[]).concat([{id:B(ce(6)),p:"password",kdf:{a:"PBKDF2-SHA256",it:r.cfg.iterations,s:u},iv:B(d.iv),ct:B(d.ct),created:p}]);await this.postRecord(Object.assign({},o,{wraps:g,updated:p}),{record_id:r.keyringRecordId});}async function po(){let t=q.call(this);if(!t||t.status!=="unlocked"||!t.keyringRecordId)return;let r=(await this.getRecords({record_id:t.keyringRecordId},{limit:1}))?.list?.[0];if(!r)return;let n=r.data,i=(n.wraps||[]).filter(o=>o.p==="password").sort((o,a)=>(a.created||0)-(o.created||0)),s=(n.wraps||[]).filter(o=>o.p!=="password");i.length<=1||await this.postRecord(Object.assign({},n,{wraps:[i[0]].concat(s),updated:Date.now()}),{record_id:t.keyringRecordId});}function Yn(){return typeof indexedDB<"u"&&!!indexedDB}function zn(){return new Promise((t,e)=>{let r=indexedDB.open(Nd,1);r.onupgradeneeded=()=>{let n=r.result;n.objectStoreNames.contains(je)||n.createObjectStore(je);},r.onsuccess=()=>t(r.result),r.onerror=()=>e(r.error);})}function Qn(t){return `${t.scope}#${this.user?.user_id}`}async function go(t){if(!Yn()||!t.mk)return;let e=await zn();await new Promise((r,n)=>{let i=e.transaction(je,"readwrite");i.objectStore(je).put({mk:t.mk,keyringRecordId:t.keyringRecordId,saved:Date.now()},Qn.call(this,t)),i.oncomplete=()=>r(),i.onerror=()=>n(i.error);}),e.close();}async function Kd(t){if(!Yn())return null;let e=await zn(),r=await new Promise((n,i)=>{let o=e.transaction(je,"readonly").objectStore(je).get(Qn.call(this,t));o.onsuccess=()=>n(o.result||null),o.onerror=()=>i(o.error);});return e.close(),r&&r.mk?r:null}async function Xn(t){if(!Yn())return;let e=await zn();await new Promise((r,n)=>{let i=e.transaction(je,"readwrite");i.objectStore(je).delete(Qn.call(this,t)),i.oncomplete=()=>r(),i.onerror=()=>n(i.error);}),e.close();}function mo(){let t=q.call(this);!t||t.ready||(t.unlocking=true,t.ready=jd.bind(this)().catch(()=>false).then(()=>{t.unlocking=false;}));}async function jd(){let t=q.call(this);if(!t||!this.user?.user_id||!t.cfg.persistDevice||!Dn())return false;t.scope=mt.call(this);try{let e=await Kd.call(this,t);if(!e)return !1;let r=await Tr.call(this,t);return r?(await Jn.call(this,t,r,e.mk),!0):(await Xn.call(this,t).catch(()=>{}),!1)}catch{return t.status="locked",t.reason="NO_SESSION_KEY",false}}async function Zn(t){let e=q.call(this);if(!e)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});let r={},n=[],i=false;for(let s of t){let o=e.peerPub.get(s);o?r[s]=o:n.push(s);}return await Promise.all(n.map(async s=>{let o=e.peerInflight.get(s);o||(o=(async()=>{let c=((await this.getRecords({table:{name:e.cfg.table,access_group:"authorized"},index:{name:"$user_id",value:s,condition:"="}},{limit:10}))?.list||[]).filter(p=>p.user_id===s&&p.data?.pub);if(!c.length)return null;c.sort((p,g)=>g.uploaded-p.uploaded);let u=K(c[0].data.pub),f=await On(u),d=e.pins[s];if(d&&d!==f)throw new h(`The public key for user "${s}" has changed since it was first seen. This is expected if they reset their account, and is what a key substitution attack also looks like. Verify the new fingerprint out of band, then call pinPeerKey({ user_id, fingerprint }).`,{code:"ENCRYPTION_PEER_KEY_CHANGED"});if(!d){if(e.cfg.trustPolicy==="strict")throw new h(`No pinned key for user "${s}" and trustPolicy is "strict". Pin it first with pinPeerKey().`,{code:"ENCRYPTION_PEER_NOT_PINNED"});e.pins[s]=f,i=true;}return {pubRaw:u,fpr:f}})().finally(()=>e.peerInflight.delete(s)),e.peerInflight.set(s,o));let a=await o;a&&e.peerPub.set(s,a),r[s]=a;})),i&&await wo.call(this,e).catch(()=>{}),r}async function yo(t,e){let r=mt.call(this),n=t.dek.get(e);if(n)return {entry:n,scope:r};let i=await Ke.call(this,e);if(!i)throw new h(`Record "${e}" not found.`,{code:"NOT_EXISTS"});if(i.encrypted?.status==="failed"&&i.encrypted.reason==="DATA_UNAVAILABLE")throw new h(`Cannot change sharing on record "${e}": its data could not be read, so whether it is encrypted is unknown. Retry once the record reads normally.`,{code:"ENCRYPTION_DATA_UNAVAILABLE"});if(!i.encrypted)return null;if(i.user_id!==this.user?.user_id)throw new h("Only the record owner can share or revoke an encrypted record, because adding or removing a key wrap means writing the record.",{code:"ENCRYPTION_GRANT_REQUIRES_OWNER"});let s=t.dek.get(i.record_id)||t.dek.get(e);if(!s)throw new h(`Cannot change sharing on record "${e}": its data could not be decrypted`+(i.encrypted.reason?` (${i.encrypted.reason})`:"")+".",{code:"ENCRYPTION_LOCKED"});return {entry:s,scope:r}}async function ei(t,e){let r=q.call(this);if(!r)return;let n=await yo.call(this,r,t);if(!n)return;let{entry:i,scope:s}=n,o=this.user.user_id;if(i.own!==o)throw new h("Only the record owner can share an encrypted record, because adding a key wrap means writing the record.",{code:"ENCRYPTION_GRANT_REQUIRES_OWNER"});let a=await Zn.call(this,e),l=e.filter(d=>!a[d]);if(l.length)throw new h(`These users have no encryption key yet, so they cannot be given access: ${l.join(", ")}. A user's key is created the first time they log in with encryption enabled.`,{code:"ENCRYPTION_RECIPIENT_HAS_NO_KEY"});let c=Kn(i),u=$n(s,i.own,i.anch,c),f=Object.assign({},i.recipients);for(let d of e)d!==o&&(f[d]=await no.call(this,i.bytes,a[d],s,c,i.own,d,u));await Wd.call(this,r,t,i,f);}async function _o(t,e){let r=q.call(this);if(!r)return;let n=await yo.call(this,r,t);if(!n)return;let{entry:i}=n,s=this.user.user_id;if(i.own!==s)throw new h("Only the record owner can revoke access to an encrypted record.",{code:"ENCRYPTION_GRANT_REQUIRES_OWNER"});let o=Object.keys(i.recipients).filter(c=>c===s?true:e?!e.includes(c):false).filter(c=>c!==s),a=await Ke.call(this,t);if(!a)throw new h(`Record "${t}" not found.`,{code:"NOT_EXISTS"});Hd(a,t);let l={};if(o.length){l=await Zn.call(this,o);let c=o.filter(u=>!l[u]);if(c.length)throw new h(`Cannot revoke on record "${t}": these users keep access but their encryption keys could not be read, so re-sharing after the key roll would fail and lock them out: ${c.join(", ")}.`,{code:"ENCRYPTION_RECIPIENT_HAS_NO_KEY"})}r.roll.add(a.record_id||t),await this.postRecord(a.data,{record_id:a.record_id||t,table:{name:a.table.name,access_group:"private"}}),o.length&&await ei.call(this,a.record_id||t,o);}function Hd(t,e){if(t?.encrypted?.status==="failed")throw new h(`Cannot change sharing on record "${e}": its current data could not be read (${t.encrypted.reason}), so re-writing the record would destroy it.`,{code:"ENCRYPTION_DATA_UNAVAILABLE"})}async function Wd(t,e,r,n){let i=await Gd.call(this,e);if(!i)throw new h(`Cannot change sharing on record "${e}": its stored envelope could not be read.`,{code:"ENCRYPTION_DATA_UNAVAILABLE"});r.recipients=n,t.dek.set(e,r);let s=Object.assign({},i,{k:n});t.passthrough.set(e,s),await this.postRecord(void 0,{record_id:e});}async function Gd(t){let e=q.call(this);if(!e)return null;e.rawRead=true;let r;try{r=(await this.getRecords({record_id:t},{limit:1}))?.list?.[0];}finally{e.rawRead=false;}return r&&Rr(r.data)?r.data:null}async function bo(t){let e=q.call(this);if(!e||e.status!=="unlocked")throw new h("Encryption is locked.",{code:"ENCRYPTION_LOCKED"});e.pins[t.user_id]=t.fingerprint,e.peerPub.delete(t.user_id),await wo.call(this,e);}async function wo(t){if(!t.mk||!t.keyringRecordId)return;let r=(await this.getRecords({record_id:t.keyringRecordId},{limit:1}))?.list?.[0];if(!r)return;let n=await ye(t.mk,G(JSON.stringify(t.pins)),G(`${ae}|pins|${t.scope}|${t.user_id}`));await this.postRecord(Object.assign({},r.data,{pins:{iv:B(n.iv),ct:B(n.ct)},updated:Date.now()}),{record_id:t.keyringRecordId});}function Eo(){let t=q.call(this);if(!t||!t.pendingRecoveryCode)return null;let e=t.pendingRecoveryCode;return t.pendingRecoveryCode="",e}async function Ao(t){await this.__connection;let e=q.call(this);if(!e)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});if(!this.user?.user_id)throw new h("User login is required. Reset the password and log in first, then use the recovery code.",{code:"INVALID_REQUEST"});if(!t?.code||typeof t.code!="string")throw new h('"code" is required.',{code:"INVALID_PARAMETER"});e.scope=mt.call(this);let r=this.user.user_id,n=await Tr.call(this,e);if(!n)throw new h("This account has no encryption keyring, so there is nothing to recover.",{code:"NOT_EXISTS"});let i=await Vd(e.scope,r,n.data?.wraps||[],t.code);if(!i)throw new h("That recovery code did not open the keyring. Check it against the copy you saved when encryption was set up.",{code:"ENCRYPTION_BAD_RECOVERY_CODE"});let s=await be(i);await Jn.call(this,e,n,s);let o=false,a=null,l=(n.data?.wraps||[]).slice();if(t.password&&(l=l.filter(c=>c.p!=="password"),l.push(await Bd(e,e.scope,r,t.password,i)),o=true),e.cfg.recovery==="code"){let c=await Gn(e.scope,r,i);l=l.filter(u=>u.p!=="recovery"),l.push(c.wrap),a=c.code;}return V(i),await this.postRecord(Object.assign({},n.data,{wraps:l,updated:Date.now()}),{record_id:n.record_id}),e.cfg.persistDevice&&await go.call(this,e).catch(()=>{}),{status:e.status,repaired:o,recoveryCode:a}}async function So(){await this.__connection;let t=q.call(this);if(!t)throw new h("Encryption is not enabled for this instance.",{code:"INVALID_REQUEST"});if(t.status!=="unlocked"||!t.mk)throw new h("Encryption must be unlocked to issue a recovery code. Only someone who can already decrypt can create one.",{code:"ENCRYPTION_LOCKED"});if(t.cfg.recovery!=="code")throw new h('Recovery codes are disabled for this instance ("recovery" is "none").',{code:"INVALID_REQUEST"});let r=(await this.getRecords({record_id:t.keyringRecordId},{limit:1}))?.list?.[0];if(!r)throw new h("The encryption keyring could not be read.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let n=r.data?.self;if(!n||!n.ct)throw new h("This keyring predates recovery-code rotation and cannot issue a new code. Use unlockWithRecoveryCode() with the existing code, which issues a replacement.",{code:"ENCRYPTION_KEYRING_CORRUPT"});let i=await we(t.mk,K(n.iv),K(n.ct),ao(t.scope,t.user_id)),s=await Gn(t.scope,t.user_id,i);V(i);let o=(r.data.wraps||[]).filter(a=>a.p!=="recovery").concat([s.wrap]);return await this.postRecord(Object.assign({},r.data,{wraps:o,updated:Date.now()}),{record_id:t.keyringRecordId}),{recoveryCode:s.code}}var vr="__skenc__",vo="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";function Jd(t){if(t===0)return "0";let e="";for(;t>0;)e=vo[t%62]+e,t=Math.floor(t/62);return e}function Yd(t){let e=0;for(let r of t){let n=vo.indexOf(r);if(n<0)return NaN;e=e*62+n;}return e}function Pr(t){if(typeof t!="string")return null;let e=t.lastIndexOf(vr);if(e<0)return null;let r=Yd(t.slice(e+vr.length));return Number.isFinite(r)?{key:t.slice(0,e),plainSize:r}:null}function ti(t){try{let e=String(t).split("?")[0].split("/").slice(3);if(e.length<12||e[4]!=="records"||e[7]!=="bin")return null;let r=Pr(e[10]);return r?{recordId:e[5],recordOwner:e[3],filename:e[e.length-1],plainSize:r.plainSize}:null}catch{return null}}function Ro(t,e){return {service:this.service,owner:this.owner,recordOwner:e,recordId:t}}async function To(t,e,r){let n=q.call(this);if(!n||!t)return {key:e,file:r,encrypted:false};let i=n.dek.get(t);if(!i)return {key:e,file:r,encrypted:false};if(Pr(e))throw new h(`"${vr}" is reserved in an upload form key.`,{code:"INVALID_PARAMETER"});if(e===Lt)return {key:e,file:r,encrypted:false};let s=new Uint8Array(await r.arrayBuffer()),o={n:r.name,t:r.type||"",lm:r.lastModified||0},a=await Hs(i.bytes,s,Ro.call(this,t,i.own),o);return V(s),{key:`${e}${vr}${Jd(r.size)}`,file:new File([a],r.name,{type:"application/octet-stream"}),encrypted:true}}async function Io(t,e){let r=q.call(this),n=ti(t);if(!r||!n)return e;let i=r.dek.get(n.recordId);if(!i)throw new h(`Cannot open this file: the data key for record "${n.recordId}" is not available. Read the record first, and make sure encryption is unlocked.`,{code:"ENCRYPTION_LOCKED"});let s=new Uint8Array(await e.arrayBuffer());if(!Mn(s))throw new h("This file is marked as encrypted but its contents are not an encrypted container.",{code:"ENCRYPTION_FILE_CORRUPT"});let o=await Ws(i.bytes,s,Ro.call(this,n.recordId,n.recordOwner)),a=o.meta&&o.meta.t||"application/octet-stream";return new Blob([o.bytes],{type:a})}function zd(t){let e=[];for(let r in t?.bin||{})for(let n of t.bin[r]||[])n&&n.encrypted&&e.push({formKey:r,url:n.url,filename:n.filename});return e}function Qd(t){let e=[];for(let r in t?.bin||{})for(let n of t.bin[r]||[])n&&!n.encrypted&&e.push({formKey:r,url:n.url,filename:n.filename});return e}async function ri(t,e,r){let n=q.call(this);if(!n)return [];let i=await Ke.call(this,t);if(!i)return [];let s=e==="decrypt"?zd(i):Qd(i);if(!s.length)return [];let o=[],a=new FormData,l=false;for(let c of s){let u=i.bin[c.formKey].find(d=>d.url===c.url);if(!u||typeof u.getFile!="function")continue;let f=await u.getFile("blob");f&&(a.append(c.formKey,new File([f],c.filename,{type:f.type||"application/octet-stream"})),o.push(c.url),l=true);}if(!l)return [];if(e==="decrypt"){let c=n.dek.get(t);c&&(V(c.bytes),n.dek.delete(t));}return await this.uploadFiles(a,{record_id:t,progress:r}),o}var H=null;function ni(t){let e={tkid:"ticket_id",cond:"condition",stmp:"timestamp",actn:"action",cnt:"count",ttl:"time_to_live",plch:"placeholder",hash:"hash",desc:"description",pmc:"limit_per_user"},r={};for(let n in t)if(n==="tkid"){let i=t[n].split("#");if(i.length===1){r.ticket_id=i[0];continue}r.ticket_id=i[1],r.consume_id=i[2],r.user_id=i[3];let s=i[2].slice(-4);if(r.is_test=s===":CHK",!t.stmp){let o=i[2].slice(0,-4);/^[0-9]+$/.test(o)?r.timestamp=parseInt(o,10):r.timestamp=_e(i[2].slice(0,-4));}}else e[n]?r[e[n]]=t[n]:r[n]=t[n];return r}async function Uo(t){if(!t.ticket_id)throw new h("Ticket ID is required.",{code:"INVALID_PARAMETER"});if(!t.method)throw new h('Method is required. Should be either "GET" or "POST"',{code:"INVALID_PARAMETER"});let e=t.ticket_id;await this.__connection;let r=await I.bind(this)(`https://${this.service.slice(0,4)}.${this.customApiDomain}/auth/consume/${this.service}/${this.owner}/${e}`,t?.data||{},{method:t.method,auth:!!t?.auth});return ni(r)}async function xo(t,e){await this.__connection;let r=await I.bind(this)("ticket",Object.assign({exec:"list"},t||{}),{auth:true,fetchOptions:e});return r.list=r.list.map(ni),r}async function Co(t,e){await this.__connection;let r=await I.bind(this)("ticket",Object.assign({exec:"consumed"},t||{}),{auth:true,fetchOptions:e});return r.list=r.list.map(ni),r}async function ko(t){return I.bind(this)("register-ticket",Object.assign({exec:"reg"},t),{auth:true})}async function Do(t){return I.bind(this)("register-ticket",Object.assign({exec:"unreg"},t),{auth:true})}var Xd=3600;async function yt(){if(await this.__connection,this.session){let t=Math.floor(Date.now()/1e3),r=this.session.getIdToken().getExpiration();if(r<t+Xd){this.log("request:requesting new token",null);try{await re.bind(this)().getSession({refreshToken:!0}),this.log("request:received new tokens",{exp:this.session?.idToken?.payload?.exp,currentTime:t,expiresIn:r-t,token:this.session?.accessToken?.jwtToken,refreshToken:this.session?.refreshToken?.token});}catch(n){throw this.log("request:new token error",n),new h("User login is required.",{code:"INVALID_REQUEST"})}}else this.log("request:tokens",{exp:this.session.idToken.payload.exp,currentTime:t,expiresIn:r-t,token:this.session.accessToken.jwtToken,refreshToken:this.session.refreshToken.token});return this.session?.idToken?.jwtToken}else throw this.log("request:no session",null),Me.bind(this)(),new h("User login is required.",{code:"INVALID_REQUEST"})}function Po(t,e){return new Promise((r,n)=>{e.refreshSession(t.getRefreshToken(),(i,s)=>{this.log("getSession:refreshSessionCallback",{refreshErr:i,refreshedSession:s}),i?(Me.bind(this)(),n(i)):s.isValid()?r(s):(Me.bind(this)(),n(new h("Invalid session.",{code:"INVALID_REQUEST"})));});})}function re(){if(!this.userPool)throw new h("User pool is missing",{code:"INVALID_REQUEST"});let t=()=>{let s=H.getSignInUserSession().getIdToken().payload||null,o=Tt(s);return this.log("normalized user attribute",o),this.__user=o,o},e=async s=>new Promise((o,a)=>{this.log("getSession:option",s);let{refreshToken:l=false,skipUserUpdateEventTrigger:c=false}=s||{};if(l&&c&&(c=false),H=this.userPool.getCurrentUser(),!H){this.log("getSession:cognitoUser",H),Me.bind(this)(),a(null);return}let u=f=>{let d=f.getIdToken().payload;if(this.log("getSession:respond:sessionAttribute",d),d["custom:service"]!==this.service)throw this.log("getSession:respond","invalid service, signing out"),Me.bind(this)(),new h("Invalid session.",{code:"INVALID_REQUEST"});return this.session=f,t(),c||this._runOnUserUpdateListeners(this.user),this.session};H.getSession((f,d)=>{if(this.log("getSession:getSessionCallback",{err:f,session:d}),!d){Me.bind(this)(),a(new h("Current session does not exist.",{code:"INVALID_REQUEST"}));return}if(f){Po.bind(this)(d,H).then(b=>o(u(b))).catch(a);return}let p=Math.floor(Date.now()/1e3),g=d.getIdToken(),m=g.getExpiration(),y=m<p;if(this.log("getSession:currentTime",p),this.log("getSession:idTokenExp",m),this.log("getSession:isExpired",y),this.log("getSession:existingBearerToken",this.bearerToken),this.bearerToken=g.getJwtToken(),y||l||!d.isValid())Po.bind(this)(d,H).then(b=>o(u(b))).catch(a);else try{o(u(d));}catch(b){a(b);}});}),r=(s,o)=>{let a=o||s.includes(this.service+"-")?s:this.service+"-"+X.hash(s);return {cognitoUser:new Fe({Username:a,Pool:this.userPool}),cognitoUsername:a}};return {getSession:e,authenticateUser:(s,o,a=false,l=false)=>new Promise((c,u)=>{this.__request_signup_confirmation=null,this.__disabledAccount=null;let f=r(s,a),d=f.cognitoUsername,p=new Wr({Username:d,Password:o});f.cognitoUser.authenticateUser(p,{newPasswordRequired:(g,m)=>{this.__disabledAccount=null,this.__request_signup_confirmation=d,g["custom:signup_ticket"]==="PASS"||g["custom:signup_ticket"]==="MEMBER"||g["custom:signup_ticket"]==="OIDPASS"?f.cognitoUser.completeNewPasswordChallenge(o,{},{onSuccess:y=>{H=f.cognitoUser,e().then(async b=>{if(q.call(this))try{await Ir.bind(this)(o);}catch(_){this.log("encryption:ensureKeyring:failed",_);}c(this.user);});},onFailure:y=>{u(new h(y.message||"Failed to authenticate user.",{code:y.code}));}}):u(new h("User's signup confirmation is required.",{code:"SIGNUP_CONFIRMATION_NEEDED"}));},onSuccess:g=>e({skipUserUpdateEventTrigger:true}).then(async m=>{if(this.__disabledAccount=null,q.call(this))try{await Ir.bind(this)(o);}catch(y){this.log("encryption:ensureKeyring:failed",y);}this._runOnLoginListeners(this.user),this._runOnUserUpdateListeners(this.user),c(this.user);}),onFailure:g=>{let m=[],{parsed:y,code:b}=Ur(g),_=typeof g?.message=="string"?g.message:"";if(b==="NotAuthorizedException"?_.includes("User is disabled.")?(this.__disabledAccount=d,m=["This account is disabled.","USER_IS_DISABLED"]):l?m=["The account already exists.","ACCOUNT_EXISTS"]:m=["Incorrect username or password.","INCORRECT_USERNAME_OR_PASSWORD"]:b==="UserNotFoundException"?m=["Incorrect username or password.","INCORRECT_USERNAME_OR_PASSWORD"]:b==="UserNotConfirmedException"?(this.__request_signup_confirmation=d,m=["User's signup confirmation is required.","SIGNUP_CONFIRMATION_NEEDED"]):(b==="TooManyRequestsException"||b==="LimitExceededException")&&(m=["Too many attempts. Please try again later.","REQUEST_EXCEED"]),y.code==="SIGNUP_CONFIRMATION_NEEDED"&&(this.__request_signup_confirmation=d),m.length){let A=m[1],S=m[0];u(new h(S,{code:A,cause:g}));}else u(y);}});}),createCognitoUser:r,signup:(s,o,a)=>new Promise((l,c)=>{this.userPool.signUp(s,o,a,null,(u,f)=>{if(u){let{parsed:d,code:p}=Ur(u),g=[];p==="UsernameExistsException"?g=["The account already exists.","EXISTS"]:p==="InvalidPasswordException"?g=["Invalid password. Password must be at least 6 characters.","INVALID_PARAMETER"]:p==="InvalidParameterException"?g=[d.message||"Invalid parameter.","INVALID_PARAMETER"]:p==="TooManyRequestsException"||p==="LimitExceededException"?g=["Too many attempts. Please try again later.","REQUEST_EXCEED"]:p==="CodeDeliveryFailureException"?g=["Failed to deliver verification code.","CODE_DELIVERY_FAILURE"]:p==="UserLambdaValidationException"&&(g=[d.message||"Signup validation failed.","INVALID_REQUEST"]),g.length?c(new h(g[0],{code:g[1],cause:u})):c(d);return}l(f);});})}}function Ur(t){let e=typeof t?.code=="string"&&t.code.trim()?t.code.trim():"ERROR",n=((typeof t?.message=="string"?t.message:typeof t=="string"?t:"An error occurred.")||"An error occurred.").trim();n||(n="An error occurred.");let i=n.match(/#([A-Za-z0-9_]+)\s*:\s*([\s\S]+)/),s=i?.[1]?.trim()||e,o=i?.[2]?.trim()||n;return {parsed:new h(o,{code:s,cause:t}),code:e}}async function No(t){await this.__authConnection;let e=t?.refreshToken||false;if(!e)return this.user;try{return await re.bind(this)().getSession(Object.assign({skipUserUpdateEventTrigger:!e,refreshToken:e},t)),this.user}catch{return null}}async function Oo(t){await this.__connection,t=w.Params(t,{token:"string",id:"string",merge:o=>{if(o===void 0)return false;if(typeof o=="string")return [o];if(Array.isArray(o)){for(let a of o)if(typeof a!="string")throw new h('"merge" array items should be type: <string>.',{code:"INVALID_PARAMETER"})}if(typeof o!="boolean"&&!Array.isArray(o))throw new h('"merge" should be type: <boolean | string[]>.',{code:"INVALID_PARAMETER"});return o},template:o=>{if(typeof o!="object"||o===null)throw new h('"template" should be type: <object>.',{code:"INVALID_PARAMETER"});if(o.welcome!==void 0&&(typeof o.welcome!="string"||!o.welcome))throw new h('"template.welcome" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});return o}});let e={token:t.token,id:t.id,merge:t.merge};t.template?.welcome&&(e.template_welcome=t.template.welcome);let r=await I.bind(this)("openid-logger",e),n=r.logger.split("#"),i=this.service+"-"+n[0],s=n[1];return {userProfile:await re.bind(this)().authenticateUser(i,s,true,true),openid:r.openid}}function Zd(t){let e=typeof globalThis<"u"?globalThis:void 0;if(e?.Buffer)return e.Buffer.from(t,"base64").toString("utf8");if(typeof atob=="function"){let r=atob(t),n=new Uint8Array(r.length);for(let i=0;i<r.length;i++)n[i]=r.charCodeAt(i);return typeof TextDecoder<"u"?new TextDecoder().decode(n):r}throw new Error("No base64 decoder available in this environment")}function ef(t){let e=t.split(".");if(e.length!==3)throw new Error("Invalid JWT format");let n=e[1].replace(/-/g,"+").replace(/_/g,"/"),i=Zd(n);return JSON.parse(i)}async function Fo(t){await this.__authConnection,this.log("loginWithToken:params",t),t=w.Params(t,{idToken:"string",accessToken:"string",refreshToken:"string"},["idToken"]);let e=ef(t.idToken);if(this.log("loginWithToken:idTokenPayload",e),e["custom:service"]!==this.service)throw new h("Token does not belong to this service.",{code:"INVALID_REQUEST"});let r=Math.floor(Date.now()/1e3);if(e.exp&&e.exp<r)throw new h("Token has expired.",{code:"INVALID_REQUEST"});if(this.__user=Tt(e),this.session=null,t.accessToken&&t.refreshToken)try{if(this.session=new dt({IdToken:new lt({IdToken:t.idToken}),AccessToken:new ct({AccessToken:t.accessToken}),RefreshToken:new ut({RefreshToken:t.refreshToken})}),this.log("loginWithToken:session",this.session),this.log("loginWithToken:CognitoUser",Fe),this.log("loginWithToken:userPool",this.userPool),Fe&&this.userPool){this.log("loginWithToken:cognito:username",e["cognito:username"]);let n={Username:e["cognito:username"],Pool:this.userPool};this.log("loginWithToken:cognitoUserParams",n),H=new Fe(n),H.setSignInUserSession(this.session),this.log("loginWithToken:cognitoUserRestored",{cognitoUserType:typeof H,cognitoUserKeys:Object.keys(H||{}),cognitoUser:H});}}catch(n){this.log("loginWithToken:err",n);try{this.log("loginWithToken:err:stringified",JSON.stringify(n));}catch{this.log("loginWithToken:err:stringifyFail",String(n));}try{let i=Object.keys(n||{}),s=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(n||{}):[],o=Object.getOwnPropertyDescriptors?Object.getOwnPropertyDescriptors(n||{}):{};this.log("loginWithToken:createSessionError:allKeys",{keys:i,symbols:s,descriptors:o});}catch(i){this.log("loginWithToken:createSessionError:allKeysFail",String(i));}}return this._runOnLoginListeners(this.user),this._runOnUserUpdateListeners(this.user),this.user}async function Z(){return await this.__connection,this.__user?.service===this.service?this.__user?.owner===this.host:(await Mt.bind(this)(),false)}async function Me(t=false){let e=null;H&&(t?e=new Promise((n,i)=>{H.globalSignOut({onSuccess:s=>{this.log("globalSignOut:success",s),n(s);},onFailure:s=>{this.log("globalSignOut:error",s),i(s);}});}):H.signOut()),Bn.bind(this)();let r={session:null,__startKeyHistory:{},__cached_requests:{},__user:null};e&&(e=await e);for(let n in r)this[n]=r[n];return this._runOnUserUpdateListeners(null),this._runOnLoginListeners(null),e}async function Mt(t){await this.__connection;let{data:e}=j(t);return await Me.bind(this)(e?.global),"SUCCESS: The user has been logged out."}async function Lo(){if(!this.__request_signup_confirmation)throw new h("Least one login attempt is required.",{code:"INVALID_REQUEST"});return await I.bind(this)("confirm-signup",{username:this.__request_signup_confirmation})}async function Mo(t=false){if(typeof t=="string")t=w.Url(t);else if(typeof t!="boolean")throw new h("Argument should be type: <boolean | string>.",{code:"INVALID_REQUEST"});if(!this.__disabledAccount)throw new h("Least one signin attempt of disabled account is required.",{code:"INVALID_REQUEST"});return await I.bind(this)("recover-account",{username:this.__disabledAccount,redirect:t}),"SUCCESS: Recovery e-mail has been sent."}async function ii(t){let e=w.Params(t,{username:"string",email:"string",password:"string"},["password"]);if(await this.__authConnection,e.email)try{w.Email(e.email);}catch{e.username=e.email,delete e.email;}if(!e.username&&!e.email)throw new h('Least one of "username" or "email" is required.',{code:"INVALID_PARAMETER"});return await re.bind(this)().authenticateUser(e.username||e.email,e.password)}async function qo(t,e){await this.__authConnection;let r={username:"string",password:c=>w.Password(c),email:c=>w.Email(c),name:"string",address:c=>{if(!c)return "";if(typeof c=="string")return c;if(typeof c=="object")return JSON.stringify(c)},gender:"string",birthdate:c=>c?w.Birthdate(c):"",phone_number:c=>c?w.PhoneNumber(c):"",email_public:["boolean",()=>false],address_public:["boolean",()=>false],gender_public:["boolean",()=>false],birthdate_public:["boolean",()=>false],phone_number_public:["boolean",()=>false],access_group:"number",misc:"string",picture:c=>c?w.Url(c):"",profile:c=>c?w.Url(c):"",family_name:"string",given_name:"string",middle_name:"string",nickname:"string",website:c=>c?w.Url(c):""},n=w.Params(t||{},r,["email","password"]);await Mt.bind(this)(),e=w.Params(e||{},{email_subscription:c=>{if(typeof c!="boolean")throw new h('"option.email_subscription" should be type: <boolean>.',{code:"INVALID_PARAMETER"});if(!e?.signup_confirmation)throw new h('"option.signup_confirmation" is required for email subscription.',{code:"INVALID_PARAMETER"});return c},signup_confirmation:c=>{let u=c;if(typeof c=="string")u=w.Url(c);else if(typeof c=="boolean")u=c;else throw new h('"option.signup_confirmation" should be type: <string | boolean>.',{code:"INVALID_PARAMETER"});if(u&&!n.email)throw new h('"email" is required for signup confirmation.',{code:"INVALID_PARAMETER"});return u},login:c=>{if(typeof c=="boolean"){if(e.signup_confirmation&&c)throw new h('"login" is not allowed when "option.signup_confirmation" is true.',{code:"INVALID_PARAMETER"});return c}throw new h('"option.login" should be type: boolean.',{code:"INVALID_PARAMETER"})},template:c=>{if(typeof c!="object"||c===null)throw new h('"option.template" should be type: <object>.',{code:"INVALID_PARAMETER"});if(c.signup_confirmation!==void 0){if(typeof c.signup_confirmation!="string"||!c.signup_confirmation)throw new h('"option.template.signup_confirmation" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});if(!e?.signup_confirmation)throw new h('"option.signup_confirmation" is required when "option.template.signup_confirmation" is set.',{code:"INVALID_PARAMETER"})}if(c.welcome!==void 0&&(typeof c.welcome!="string"||!c.welcome))throw new h('"option.template.welcome" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});return c}});let i=e?.login||false;if(n.signup_confirmation=e?.signup_confirmation||false,n.email_subscription=e?.email_subscription||false,n.email_public&&!n.signup_confirmation)throw new h('"option.signup_confirmation" should be true if "email_public" is set to true.',{code:"INVALID_PARAMETER"});n.service=this.service,n.owner=this.owner;let s=re.bind(this)().createCognitoUser(n.username||n.email);for(let c of ["email_public","address_public","gender_public","birthdate_public","phone_number_public"])n[c]=n[c]?"1":"0";n.access_group&&(n.access_group=n.access_group.toString());let o=(await I.bind(this)("signupkey",{username:s.cognitoUsername,signup_confirmation:typeof n.signup_confirmation=="boolean"?JSON.stringify(n.signup_confirmation):n.signup_confirmation,email_subscription:n.email_subscription,template_confirmation:e?.template?.signup_confirmation||"",template_welcome:e?.template?.welcome||""})).split(":"),a=o.slice(1).join(":"),l=[new Pe({Name:"custom:signup",Value:o[0]}),new Pe({Name:"locale",Value:a.split("#")[1]}),new Pe({Name:"custom:signup_ticket",Value:a})];for(let c in r){let u=["email_public","address_public","gender_public","birthdate_public","phone_number_public","misc","service","owner"];n[c]!==""&&(c==="username"||c==="password"||c==="access_group"||(u.includes(c)?l.push(new Pe({Name:"custom:"+c,Value:n[c]})):l.push(new Pe({Name:c,Value:n[c]}))));}return await re.bind(this)().signup(s.cognitoUsername,n.password,l),n.signup_confirmation?(H=s.cognitoUser,this.__request_signup_confirmation=s.cognitoUsername,"SUCCESS: The account has been created. User's signup confirmation is required."):i?ii.bind(this)({email:n.username||n.email,password:n.password}):"SUCCESS: The account has been created."}async function Vo(){await this.__connection;let t=await I.bind(this)("remove-account",{disable:this.__user.user_id},{auth:true});return await Mt.bind(this)(),t}async function Bo(t){await this.__connection;let e=w.Params(t,{email:i=>w.Email(i),code:["number","string"],new_password:i=>w.Password(i)},["email","code","new_password"]),r=e.code,n=e.new_password;return typeof r=="number"&&(r=r.toString()),new Promise(async(i,s)=>{re.bind(this)().createCognitoUser(e.email).cognitoUser.confirmPassword(r,n,{onSuccess:a=>{i("SUCCESS: New password has been set.");},onFailure:a=>{s(new h(a?.message||"Failed to reset password.",{code:a?.code||"ERROR",cause:a}));}});})}async function $o(t,e,r){await this.__connection;let n;if(!H)throw new h("The user has to be logged in.",{code:"INVALID_REQUEST"});if(t==="email"||t==="phone_number"){if(!this.__user.hasOwnProperty(t))throw new h(`No ${t==="email"?"e-mail":"phone number"} to verify`,{code:"INVALID_REQUEST"});if(this.__user?.[`${t}_verified`])return `SUCCESS: "${t}" is verified.`;n=(e?w.Params(e,{code:"string"}):{}).code||"";}else return;let i,s=r?.template?.verification;if(s!==void 0){if(typeof s!="string"||!s)throw new h('"template.verification" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});i={template_verification:s};}return new Promise((o,a)=>{let l={onSuccess:c=>{n?re.bind(this)().getSession({refreshToken:true}).then(()=>{this.__user&&(this.__user[t+"_verified"]=true),o(`SUCCESS: "${t}" is verified.`);}).catch(u=>{a(u);}):o("SUCCESS: Verification code has been sent.");},onFailure:c=>{a(new h(c.message||"Failed to request verification code.",{code:c?.code}));}};n?H?.verifyAttribute(t,n,l):(l.inputVerificationCode=null,H?.getAttributeVerificationCode(t,l,i));})}function Ko(t,e){return $o.bind(this)("phone_number",t,e)}function jo(t,e){return $o.bind(this)("email",t,e)}async function Ho(t,e){await this.__connection;let r=w.Params(t,{email:s=>w.Email(s)},["email"]),n,i=e?.template?.verification;if(i!==void 0){if(typeof i!="string"||!i)throw new h('"template.verification" should be a non-empty <string> (template message_id).',{code:"INVALID_PARAMETER"});n={template_verification:i};}return new Promise(async(s,o)=>{re.bind(this)().createCognitoUser(r.email).cognitoUser.forgotPassword({onSuccess:l=>{s("SUCCESS: Verification code has been sent.");},onFailure:l=>{let{parsed:c,code:u}=Ur(l),f={UserNotFoundException:"NOT_EXISTS",InvalidParameterException:"INVALID_PARAMETER",NotAuthorizedException:"INVALID_REQUEST",LimitExceededException:"REQUEST_EXCEED",TooManyRequestsException:"REQUEST_EXCEED",CodeDeliveryFailureException:"CODE_DELIVERY_FAILURE"}[u]||c.code||u||"ERROR";o(new h(c.message,{code:f,cause:l}));}},n);})}async function Wo(t){if(await this.__connection,!this.session)throw new h("User login is required.",{code:"INVALID_REQUEST"});let e=w.Params(t,{current_password:"string",new_password:"string"});if(!e?.current_password)throw new h('"current_password" is required to change password.',{code:"INVALID_PARAMETER"});if(!e?.new_password)throw new h('"new_password" is required to change password.',{code:"INVALID_PARAMETER"});return w.Password(e.current_password),w.Password(e.new_password),q.call(this)&&await ho.bind(this)(e.current_password,e.new_password),new Promise((r,n)=>{H.changePassword(e.current_password,e.new_password,(i,s)=>{if(i){if(i?.code==="InvalidParameterException")n(new h("Invalid password parameter.",{code:"INVALID_PARAMETER"}));else if(i?.code==="NotAuthorizedException")n(new h("Incorrect password.",{code:"INVALID_REQUEST"}));else if(i?.code==="TooManyRequestsException"||i?.code==="LimitExceededException")n(new h("Too many attempts. Please try again later.",{code:"REQUEST_EXCEED"}));else {let{parsed:o}=Ur(i);n(o);}return}q.call(this)&&po.bind(this)().catch(o=>this.log("encryption:prune:failed",o)),r("SUCCESS: Password has been changed.");});})}async function Go(t){if(await this.__connection,!this.session)throw new h("User login is required.",{code:"INVALID_REQUEST"});let e=w.Params(t||{},{user_id:i=>w.UserId(i),email:i=>w.Email(i),address:i=>{if(!i)return "";if(typeof i=="string")return i;if(typeof i=="object")return JSON.stringify(i)},name:"string",gender:"string",birthdate:i=>i?w.Birthdate(i):"",phone_number:i=>i?w.PhoneNumber(i):"",email_public:"boolean",phone_number_public:"boolean",address_public:"boolean",gender_public:"boolean",birthdate_public:"boolean",misc:"string",picture:i=>i?w.Url(i):"",profile:i=>i?w.Url(i):"",family_name:"string",given_name:"string",middle_name:"string",nickname:"string",website:i=>i?w.Url(i):""});if(e&&typeof e=="object"&&!Object.keys(e).length)return this.user;e.email&&(e.preferred_username=this.service+"-"+X.hash(e.email));let r=[["email_public","email_verified","User's e-mail should be verified to set"],["phone_number_public","phone_number_verified","User's phone number should be verified to set"]];if(this.__user){for(let i of r)if(e[i[0]]&&!this.__user[i[1]])throw new h(`${i[2]} "${i[0]}" to true.`,{code:"INVALID_REQUEST"})}let n=[];for(let i in e){if(e[i]===this.user[i]){n.push(i);continue}if(["email_public","phone_number_public","address_public","gender_public","birthdate_public","misc"].includes(i)){let o=e[i];typeof o=="boolean"&&(o=o?"1":"0"),e["custom:"+i]=o,n.push(i);}}for(let i of n)delete e[i];if(e.user_id)if(e.user_id===this.user.user_id)delete e.user_id;else return I.bind(this)("admin-edit-profile",{attributes:e},{auth:true});if(e&&typeof e=="object"&&Object.keys(e).length){let i=[];for(let s in e)i.push(new Pe({Name:s,Value:e[s]}));return await new Promise((s,o)=>{H?.updateAttributes(i,(a,l)=>{a&&o([a?.code||a?.name,a?.message||"Failed to update user settings."]),s(l);});}),await re.bind(this)().getSession({refreshToken:true}),this.user}return this.user}async function Jo(t,e){t=j(t).data,t||(t={searchFor:"timestamp",condition:">",value:0},e||(e={}),e.ascending=false),await this.__connection;let r={user_id:i=>Array.isArray(i)?i.map(s=>w.UserId(s)):w.UserId(i),email:"string",phone_number:"string",locale:i=>{if(typeof i!="string"||typeof i=="string"&&i.length>5)throw new h('Value of "locale" should be a country code.',{code:"INVALID_PARAMETER"});return i},name:"string",address:"string",gender:"string",birthdate:i=>w.Birthdate(i),subscribers:"number",timestamp:"number",access_group:"number",approved:"string"},n=["searchFor","value"];if(t=w.Params(t,{searchFor:["user_id","name","email","phone_number","address","gender","birthdate","locale","subscribers","timestamp","access_group","approved"],condition:[">",">=","=","<","<=","gt","gte","eq","lt","lte",()=>"="],value:i=>{let s=r[t.searchFor];if(typeof s=="function")return s(i);if(typeof i!==s)throw new h(`Value does not match the type of "${t.searchFor}" index.`,{code:"INVALID_PARAMETER"});return i},range:i=>{let s=r[t.searchFor];if(typeof s=="function")return s(i);if(typeof i!==s)throw new h(`Range does not match the type of "${t.searchFor}" index.`,{code:"INVALID_PARAMETER"});return i}},n),t?.condition&&t?.condition!=="="&&t.hasOwnProperty("range"))throw new h("Conditions does not apply on range search.",{code:"INVALID_PARAMETER"});if(t.searchFor==="user_id"&&(t.condition!=="="||t.range))throw new h(`Conditions are not allowed on "${t.searchFor}"`,{code:"INVALID_PARAMETER"});if(typeof t?.value=="string"&&!t?.value)throw new h("Value should not be an empty string.",{code:"INVALID_PARAMETER"});if(typeof t?.searchFor=="string"&&!t?.searchFor)throw new h('"searchFor" should not be an empty string.',{code:"INVALID_PARAMETER"});return I.bind(this)("get-users",t,{auth:true,fetchOptions:e})}async function Yo(t){await this.__connection;let e=await I.bind(this)("last-verified-email",t,{auth:true});return e.includes("SUCCESS")?(await re.bind(this)().getSession({refreshToken:true}),this.user):e}async function zo(t){return await this.__connection,t=w.Params(t,{username:w.Email,redirect:w.Url},["username"]),await I.bind(this)("request-username-change",t,{auth:true})}var tf="1.2.1",rf=class{constructor(t){Re(this,"version",tf);Re(this,"items",[]);Re(this,"nextJobId",1);Re(this,"breakWhenError",false);Re(this,"batchSize",1);Re(this,"onProgress");Re(this,"activeCount",0);Re(this,"currentCycleCompleted",[]);Re(this,"stopProcessing",false);if(this.breakWhenError=!!t?.breakWhenError,this.batchSize=t?.batchSize??1,typeof this.batchSize!="number"||this.batchSize<1)throw new Error("batchSize must be at least 1");if(t?.onProgress)if(typeof t.onProgress=="function")this.onProgress=t.onProgress;else throw new Error("onProgress must be a function")}get batchToProcess(){return Math.ceil(this.items.length/this.batchSize)}add(t){let e=Array.isArray(t)?t:[t],r=[];for(let n of e){if(typeof n!="function")throw new Error("Each job must be a function that returns a Promise");let i=String(this.nextJobId++);this.items.push({id:i,job:n}),r.push(i);}return this.processNext(),r}setBatchSize(t){if(typeof t!="number"||t<1)throw new Error("batchSize must be at least 1");this.batchSize=t;}remove(t){let e=String(t),r=this.items.findIndex(n=>n.id===e);return r===-1?false:(this.items.splice(r,1),true)}processNext(){if(this.stopProcessing||this.items.length===0||this.activeCount>0)return;let t=this.items.splice(0,this.batchSize);this.activeCount=t.length,this.currentCycleCompleted=new Array(t.length),t.forEach((e,r)=>{Promise.resolve().then(()=>e.job()).then(n=>(this.finalizeJob(r,n,false),n)).catch(n=>(this.finalizeJob(r,n,true),n));});}finalizeJob(t,e,r){if(this.currentCycleCompleted[t]=e,this.activeCount-=1,r&&this.breakWhenError&&(this.stopProcessing=true,this.items=[]),this.activeCount!==0)return;let n=this.currentCycleCompleted.slice();this.currentCycleCompleted=[],this.onProgress&&this.onProgress({batchToProcess:this.batchToProcess,itemsToProcess:this.items.length,completed:n}),this.processNext();}terminate(){this.items=[];}},qt=rf;var _t=null,Xo=typeof SubmitEvent<"u",nf=typeof HTMLFormElement<"u",Bt=oe(),si=0;function Zo(t){if(!t)return null;let e=Number(t);if(Number.isFinite(e))return Math.max(0,e*1e3);let r=Date.parse(t);return Number.isNaN(r)?null:Math.max(0,r-Date.now())}function oi(t,e){return e>0?t/e*100:0}var Qo=t=>{let{auth:e,type:r,endpoints:n,stable:i}=t,s=n[0],o=n[1];if(si++,r==="admin"){let a=Object.entries(s).filter(([l,c])=>l.includes(e?"_private":"_public")&&l!=="get_users_private"&&l!=="service_public"&&typeof c=="string").map(([,l])=>l);if(!a.length)throw new h("No available admin gateways.",{code:"INVALID_REQUEST"});return a[si%a.length]}if(r==="record"){let a=Object.entries(o).filter(([l,c])=>l.includes(e?"record_private":"record_public")&&typeof c=="string").map(([,l])=>l);if(!a.length)throw new h("No available record gateways.",{code:"INVALID_REQUEST"});return i?a[0]:a[si%a.length]}throw new h("Invalid gateway type.",{code:"INVALID_REQUEST"})};async function sf(t,e,r){let n=await Promise.all([this.admin_endpoint,this.record_endpoint]),i=n[0],s=n[1],o=t.split("?"),a=o.length>1?"?"+o[1]:"";switch(t=o[0],t){case "get-users":return i.get_users_private+t+a;case "service":return i.service_public+t+a;case "get-newsletters":case "get-public-newsletters":case "subscribe-newsletter":case "subscribe-public-newsletter":case "signupkey":case "admin-newsletter-request":case "admin-signup":case "confirm-signup":case "openid-logger":case "block-account":case "admin-edit-profile":case "remove-account":case "post-secure":case "recover-account":case "mock":case "grant-access":case "last-verified-email":case "ticket":case "register-ticket":case "get-newsletter-subscription":case "request-username-change":case "send-inquiry":case "register-newsletter-group":case "newsletter-group-endpoint":case "invitation-list":case "csr":case "csr-poll":case "csr-cancel":case "csr-finalize":return Qo.bind(this)({auth:e,type:"admin",endpoints:n})+t+a;case "post-record":return (e?s.post_private:s.post_public)+t+a;case "get-records":return (e?s.get_private:s.get_public)+t+a;case "del-files":case "del-records":return s.del_private+t+a;case "store-subscription":case "get-vapid-public-key":case "push-notification":case "delete-subscription":case "subscription":case "get-subscription":case "get-table":case "get-tag":case "get-uniqueid":case "get-index":case "get-signed-url":case "extract-file-text":case "grid-query":case "grant-private-access":case "request-private-access-key":case "get-ws-group":case "check-schema":case "get-feed":case "castspell":case "dopamine":case "getspell":return Qo.bind(this)({auth:e,type:"record",endpoints:n,stable:r})+t+a;default:return w.Url(t)+a}}var Vt={};function ea(){_t&&(_t.terminate(),_t=null);}async function I(t,e=null,r,n){this.log("request",{url:t,data:e,options:r,_etc:n||{}}),r=r||{};let{auth:i=false,method:s="post",bypassAwaitConnection:o=false}=r;s=s.toUpperCase();let a=null,l=e?.service||this.service,c=e?.owner||this.owner,u=null,f=await sf.bind(this)(t,!!i,!!r.stableGateway);if(!o&&(a=await this.__connection,!a))throw new h("Invalid connection. The service could have been disabled, or has a restricted CORS.",{code:"INVALID_REQUEST"});let d=r?.tokenHeaders?.idToken===true;(i||d)&&(u=await yt.bind(this)());let p={},{fetchMore:g=false,progress:m}=r?.fetchOptions||{};if(r?.fetchOptions&&Object.keys(r.fetchOptions).length){for(let x of ["limit","startKey","ascending"])if(r.fetchOptions.hasOwnProperty(x)){if(x==="startKey"&&r.fetchOptions[x]===null)continue;p[x]=r.fetchOptions[x];}p=w.Params(p,{limit:x=>{if(typeof x!="number")throw new h("Fetch limit should be a number.",{code:"INVALID_REQUEST"});if(x>1e3)throw new h("Fetch limit should be below 1000.",{code:"INVALID_REQUEST"});return x},startKey:x=>x,ascending:"boolean"});}let y=n?.ignoreService?{}:{service:l,owner:c};Object.assign(y,p),e=j(e).data,e?e&&typeof e=="object"&&(e=Object.assign(y,e)):e=y;let b=`${s}:${i?"auth":"public"}:${t}`,_=(()=>{if(e&&typeof e=="object"&&Object.keys(e).length&&!(Bt&&e instanceof FormData)){let x=function(O){return typeof O=="object"&&O!==null?Object.keys(O).sort().reduce((L,M)=>(typeof O[M]=="object"&&O[M]!==null?L[M]=x(O[M]):L[M]=O[M],L),{}):O};return X.hash(b+"/"+JSON.stringify(x(e)))}return X.hash(b+"/"+l)})(),{requestKey:A,requestKeyWithStartKey:S}=of.bind(this)({params:e,url:t,fetchMore:g,hashedParams:_});if(!A||A&&typeof A=="object")return A;if(this.log("requestKey",S),typeof S=="string"&&Vt[S]instanceof Promise)return this.log("request:returning pending",S),Vt[S];let R={Accept:"*/*"};if(Object.prototype.hasOwnProperty.call(r,"contentType")&&r.contentType!==void 0){let x=r.contentType===null?"application/x-www-form-urlencoded":r.contentType;x&&(R["Content-Type"]=x);}else R["Content-Type"]="application/json";if(u&&(R.Authorization=u),r?.tokenHeaders){let x=(M,J)=>typeof M=="string"?M:M===true?J:null,O=x(r.tokenHeaders.accessToken,this.session?.accessToken?.jwtToken||null),L=x(r.tokenHeaders.idToken,this.bearerToken||this.session?.idToken?.jwtToken||u||null);O&&(R["X-Access-Token"]=O),L&&(R["X-Id-Token"]=L);}let F={public_identifier:this.__public_identifier,service:l,owner:c};R["Content-Meta"]=JSON.stringify(F),r.revalidate&&(R["Cache-Control"]="no-cache",R.Pragma="no-cache");let C={headers:R};if(r?.responseType&&(C.responseType=r.responseType),s==="GET"){if(e){let x=[];if(Bt&&e instanceof FormData?x=Array.from(e.entries()).map(([O,L])=>{let M=typeof L=="string"?L:L.name;return encodeURIComponent(O)+"="+encodeURIComponent(M)}):x=Object.keys(e).map(O=>{let L=e[O];return typeof L!="string"&&(L=JSON.stringify(L)),encodeURIComponent(O)+"="+encodeURIComponent(L)}),x.length){let O=f.includes("?")?f.endsWith("?")||f.endsWith("&")?"":"&":"?";f+=O+x.join("&");}}C.body=null;}else if(Bt&&e instanceof FormData)C.body=e;else if(R["Content-Type"]==="application/x-www-form-urlencoded"&&e&&typeof e=="object"){let x=new URLSearchParams;for(let O of Object.keys(e)){let L=e[O];x.append(O,typeof L=="string"?L:JSON.stringify(L));}C.body=x.toString();}else typeof e=="string"?C.body=e:C.body=e?JSON.stringify(e):null;if(C.method=s,_t===null){let x={batchSize:this.requestBatchSize,breakWhenError:false,onProgress:O=>{this.onBatchProcess.forEach(L=>L(O));}};_t=new qt(x);}return this.log("request-opt",C),new Promise((x,O)=>{_t.add([async()=>{let L=ta.bind(this)(f,C,m);Vt[S]=L;try{let M=cf.bind(this)({hashedParam:A,requestKeyWithStartKey:S,url:t,fetched:await L});return delete Vt[S],this.log("request:end",M),x(M),M}catch(M){throw delete Vt[S],this.log("request:err",M),O(M),M}}]);})}function of(t){let{params:e={},url:r,fetchMore:n=false,hashedParams:i}=t||{};if(e.startKey){if(!(typeof e.startKey=="object"&&Object.keys(e.startKey).length)&&e.startKey!=="start"&&e.startKey!=="end")throw new h(`"${e.startKey}" is invalid startKey key.`,{code:"INVALID_PARAMETER"});e.startKey==="start"&&(n=false,delete e.startKey);}if(!n){if(this.__cached_requests?.[r]?.[i]&&delete this.__cached_requests[r][i],this.__startKeyHistory?.[r]?.[i]){if(Array.isArray(this.__startKeyHistory[r][i])&&this.__startKeyHistory[r][i].length)for(let l of this.__startKeyHistory[r][i]){let c=i+X.hash(l);this.__cached_requests?.[r]&&this.__cached_requests?.[r]?.[c]&&delete this.__cached_requests[r][c];}delete this.__startKeyHistory[r][i];}return {requestKeyWithStartKey:i,requestKey:i}}if(!Array.isArray(this.__startKeyHistory?.[r]?.[i]))return {requestKeyWithStartKey:i,requestKey:i};let s=this.__startKeyHistory[r][i],o=s[s.length-1],a=i;if(o){if(o==="end")return {requestKey:{list:[],startKey:"end",endOfList:true,startKeyHistory:s},requestKeyWithStartKey:a};a+=X.hash(o),e.startKey=JSON.parse(o);}return this.__cached_requests?.[r]?.[a]?{requestKey:this.__cached_requests[r][a],requestKeyWithStartKey:a}:{requestKeyWithStartKey:a,requestKey:i}}function af(t){let e=r=>r&&typeof r=="object"&&r.encrypted?Object.assign({},r,{data:null}):r;return Array.isArray(t)?t.map(e):t&&typeof t=="object"?Array.isArray(t.list)?Object.assign({},t,{list:t.list.map(e)}):e(t):t}function ta(t,e,r){return new Promise((n,i)=>{let s=new XMLHttpRequest;s.open(e.method||"GET",t);for(var o in e.headers||{})s.setRequestHeader(o,e.headers[o]);e.responseType&&(s.responseType=e.responseType),s.onload=()=>{if(s.status<400)if(e.responseType=="json"||e.responseType=="blob")n(s.response);else {let a=s.responseText;try{a=JSON.parse(a);}catch{}n(a);}else if(s.status===429){let a=s.getResponseHeader("Retry-After"),l=Zo(a);l!==null?setTimeout(()=>{ta(t,e,r).then(n,i);},l):i("Too many requests");}else {let a=s.status,l=["INVALID_CORS","INVALID_REQUEST","SERVICE_DISABLED","INVALID_PARAMETER","ERROR","EXISTS","NOT_EXISTS"],c=e.responseType=="blob"?s.response:s.responseText;try{c=JSON.parse(c);}catch{}if(typeof c=="string"){let u=c.split(":"),f=u.splice(0,1)[0].trim(),d=u.join(":").trim();i(new h(d||c,{code:l.includes(f)?f:"ERROR"}));}else if(typeof c=="object"&&c?.message){let u=c?.code||(a?a.toString():null)||"ERROR",f=c.message,d=c?.cause;typeof f=="string"&&(f=f.trim()),i(new h(f,{cause:d,code:u}));}else i(c);}},s.onerror=()=>i("Network error"),s.onabort=()=>i("Aborted"),s.ontimeout=()=>i("Timeout"),typeof r=="function"&&(s.onprogress=a=>{r({status:"download",progress:oi(a.loaded,a.total),loaded:a.loaded,total:a.total,abort:()=>s.abort()});},s.upload&&(s.upload.onprogress=a=>{r({status:"upload",progress:oi(a.loaded,a.total),loaded:a.loaded,total:a.total,abort:()=>s.abort()});})),s.send(e.body);})}function cf(t){let{hashedParam:e,requestKeyWithStartKey:r,url:n,fetched:i}=t;if(!i?.startKey)return i;this.__startKeyHistory.hasOwnProperty(n)||(this.__startKeyHistory[n]={}),this.__startKeyHistory[n].hasOwnProperty(e)||(this.__startKeyHistory[n][e]=[]);let s=i.startKey==="end"?"end":JSON.stringify(i.startKey);return this.__startKeyHistory[n][e].includes(s)||this.__startKeyHistory[n][e].push(s),this.__cached_requests?.[n]||(this.__cached_requests[n]={}),this.__cached_requests[n][r]=i,Object.assign({startKeyHistory:this.__startKeyHistory[n][e]},i)}async function $t(t,e){await this.__connection;let{record_id:r,service:n=this.service,progress:i}=e;if(!r)throw new h('"record_id" is required.',{code:"INVALID_PARAMETER"});if(Xo&&t instanceof SubmitEvent&&(t=t.target),nf&&t instanceof HTMLFormElement&&(t=new FormData(t)),!Bt||!(t instanceof FormData))throw new h('"fileList" should be a FormData or HTMLFormElement.',{code:"INVALID_PARAMETER"});let o={reserved_key:Ye(),service:n,request:"post"};e?.record_id&&(o.id=e.record_id);let a,l=(p,g,m)=>new Promise((y,b)=>{a=new XMLHttpRequest,a.open("POST",p),a.onload=()=>{let _=a.responseText;try{_=JSON.parse(_);}catch{}if(a.status>=200&&a.status<300)y(_);else if(a.status===429){let A=a.getResponseHeader("Retry-After"),S=Zo(A);S!==null?setTimeout(()=>{l(p,g,m).then(y,b);},S):b("Too many requests");}else b(_);},a.onerror=()=>b("Network error"),a.onabort=()=>b("Aborted"),a.ontimeout=()=>b("Timeout"),a.upload&&typeof m=="function"&&(a.upload.onprogress=m),a.send(g);});function c(p){let g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";if(p===0)return g[0];let m="";for(;p>0;)m=g[p%62]+m,p=Math.floor(p/62);return m}let u=[],f=[],d=[];for(let[p,g]of t.entries()){if(!(g instanceof File))continue;let m=await To.bind(this)(r,p,g),y=m.file,b=m.key,_=Object.assign({key:b+"/"+y.name,sizeKey:c(y.size),contentType:y.type||null},o),{fields:A=null,url:S,cdn:R}=await I.bind(this)("get-signed-url",_,{auth:!!this.__user});d.push(R);let N=new FormData;for(let F in A)N.append(F,A[F]);N.append("file",y);try{await l(S,N,typeof i=="function"?F=>i({status:"upload",progress:oi(F.loaded,F.total),currentFile:g,completed:u,failed:f,loaded:F.loaded,total:F.total,abort:()=>a.abort()}):null),u.push(g);}catch{f.push(g);}}return {completed:u,failed:f,bin_endpoints:d}}var xr={};function U(t){let{preventMultipleCalls:e=false}=t||{};return function(r,n,i){let s=i.value;i.value=function(...o){let a=o[0],l=true,c=null,u="",f={},d=false;if(Xo&&a instanceof SubmitEvent){a.preventDefault();let b=window.location.href;c=a.target;let _=new URL(c.action);u=_.href;let A=u?u.match(/(?<=\{).*?(?=\})/g):"";if(A)for(let S of A){if(!S)continue;let R=c.querySelector(`[name="${S}"]`);if(R)if(R.type==="file")for(let N=0;N<=R.files.length-1;N++)R.files[N]&&(f[S]||(f[S]=[]),f[S].push(new Promise((F,C)=>{let x=new FileReader;x.onload=function(){F(x.result);},x.readAsDataURL(R.files[N]),x.onerror=C;})));else u=u.replace(`{${S}}`,R.value);}c.getAttribute("action")===null?l=false:d=_.href===b;}let p=async b=>{if(u)for(let _ in f)f[_].length&&(u=u.replace(`{${_}}`,(await Promise.all(f[_])).join(",")));if(c&&l){let _=q.call(this)?af(b):b;window.sessionStorage.setItem(`${this.service}:${X.hash(u)}`,JSON.stringify(_)),d?window.location.replace(u):window.location.href=u;}return b},g,m=b=>{throw b instanceof h?b.name=n+"()":b=b instanceof Error?b:new h(b,{name:n+"()"}),b},y=async()=>{try{if(g=s.bind(this)(...o),g instanceof Promise){let b=await g;return p(b)}return p(g)}catch(b){throw m(b)}};if(e){let b=`${n}:${this?.__public_identifier||""}:${this?.service||""}:${this?.owner||""}`;return xr?.[b]||(xr[b]=y().finally(()=>{delete xr[b];})),xr[b]}return y()};}}async function ra(){await this.__connection;let t=`${this.service}:${X.hash(window.location.href.split("?")[0])}`,e=window.sessionStorage.getItem(t);if(window.sessionStorage.removeItem(t),e!==null){try{e=JSON.parse(e);}catch{}return e}return null}var lf=256,uf=256,df=256,na=256,ff="\u{10FFFF}",hf=/[\u0000-\u001F\u007F]|\u{10FFFF}/u,pf={"/":"%2F","!":"%21","*":"%2A","#":"%23"},gf={"%2F":"/","%21":"!","%2A":"*","%23":"#"};function mf(t){return t.replace(/%/g,"%25").replace(/[\/!*#]/g,r=>pf[r]||r)}function Ee(t){return typeof t!="string"?t:t.replace(/%(2F|21|2A|23)/gi,r=>{let n=r.toUpperCase();return gf[n]||r}).replace(/%25/gi,"%")}function Ue(t,e,r={}){let{allowEmpty:n=false,maxLength:i,blockKeyDelimiters:s=false,disallowLeadingDollar:o=false,onlyAlphanumeric:a=false}=r;if(typeof t!="string")throw new h(`"${e}" should be type: <string>.`,{code:"INVALID_PARAMETER"});if(a&&/[^a-zA-Z0-9]/.test(t))throw new h(`"${e}" should only contain alphanumeric characters.`,{code:"INVALID_PARAMETER"});if(!n&&t.length===0)throw new h(`"${e}" is required.`,{code:"INVALID_PARAMETER"});if(i&&t.length>i)throw new h(`"${e}" should be <= ${i} characters.`,{code:"INVALID_PARAMETER"});if(hf.test(t)||t.includes(ff))throw new h(`"${e}" cannot include control characters or unsupported sentinel characters.`,{code:"INVALID_PARAMETER"});if(s&&(t=mf(t),i&&t.length>i))throw new h(`"${e}" should be <= ${i} characters. "/", "!", "*", "#" and "%" count as 3 characters each.`,{code:"INVALID_PARAMETER"});if(o&&t.startsWith("$"))throw new h(`"${e}" cannot start with "$".`,{code:"INVALID_PARAMETER"});return t}function bt(t,e="table.name",r={}){return Ue(t,e,{allowEmpty:r.allowEmpty===true,maxLength:lf,blockKeyDelimiters:true})}function kr(t,e="tag",r={}){return Ue(t,e,{allowEmpty:r.allowEmpty===true,maxLength:uf,blockKeyDelimiters:true})}function Kt(t,e="index.name",r={}){return Ue(t,e,{allowEmpty:r.allowEmpty===true,maxLength:df,blockKeyDelimiters:true,disallowLeadingDollar:true})}function ia(t,e="index.value"){return Ue(t,e,{allowEmpty:true,maxLength:na})}function ai(t){return typeof t=="string"&&t.slice(-1)==="."}function ci(t,e){return Ue(t,e,{allowEmpty:true,maxLength:na,blockKeyDelimiters:true})}function sa(t){if(!t.record_id&&!t.unique_id)return null;let e={};return t?.service&&(e.service=t.service),t?.owner&&(e.owner=t.owner),t?.record_id?e.record_id=Ue(t.record_id,"record_id",{allowEmpty:false,onlyAlphanumeric:true}):t?.unique_id&&(e.unique_id=t.unique_id),e}function li(t){if(t===void 0)return 0;if(typeof t=="number"){if(t>99||t<0)throw new h('"table.access_group" value should be within a range of 0 ~ 99.',{code:"INVALID_REQUEST"})}else if(typeof t=="string"){if(t={"*":"private",private:"private",public:0,authorized:1,admin:99}[t],t===void 0)throw new h('"table.access_group" is invalid.',{code:"INVALID_PARAMETER"})}else throw new h('"table.access_group" should be type: <number | string>.',{code:"INVALID_PARAMETER"});if(!this.__user&&t)throw new h("Unsigned users have no access to records with access group.",{code:"INVALID_REQUEST"});return t}var Cr=4503599627370496;function Dr(t){if(typeof t=="number"){if(t>Cr||t<-Cr)throw new h(`Number value should be within range -${Cr} ~ +${Cr}`,{code:"INVALID_PARAMETER"});return t}if(typeof t=="boolean")return t;if(typeof t=="string")return ia(t,"index.value");throw new h('"index.value" should be type: <number | boolean | string>.',{code:"INVALID_PARAMETER"})}function oa(t,e){if(!e.index||!("value"in e.index))throw new h('"index.value" is required.',{code:"INVALID_PARAMETER"});if(e.index.name==="$record_id")throw new h(`Cannot do "index.range" on ${e.index.name}`,{code:"INVALID_PARAMETER"});if(typeof e.index.value!=typeof t)throw new h('"index.range" type should match the type of "index.value".',{code:"INVALID_PARAMETER"});return typeof t=="string"?ai(e.index.name)?ci(t,"index.range"):ia(t,"index.range"):t}var Nr={},yf=10080*60,_f=3600,aa=2;function bf(t,e){if(!e)return String(aa);let r=Math.max(60,t-300)*1e3;return "g"+aa+"w"+Math.floor(Date.now()/r)}function wf(t){if(!this.user?.user_id)return false;let e=t[6]==="**"?"**":parseInt(t[6]),r=this.user?.access_group??-1;return !(this.user.user_id!==t[3]&&(e==="**"||r<e))}function Ef(t){if(typeof t=="string"){if(t.startsWith("!J%"))try{return JSON.parse(t.substring(3))}catch{return t}return t==="!D%{}"?{}:t==="!L%[]"?[]:t}if(t&&typeof t=="object"&&!Array.isArray(t)&&typeof t.__json__=="string"&&Object.keys(t).length===1)try{return JSON.parse(t.__json__)}catch{}return t}async function ca(t){return typeof t=="string"?t:t&&typeof t.text=="function"?await t.text():await new Promise((e,r)=>{try{let n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>r(n.error||new Error("Failed to read blob")),n.readAsText(t);}catch(n){r(n);}})}async function Ze(t,e,r=false,n=false,i=false){let s={user_id:"",record_id:"",updated:0,uploaded:0,readonly:false,table:{name:"",access_group:0,subscription:{is_subscription_record:false,upload_to_feed:false,notify_subscribers:false,feed_referencing_records:false,notify_referencing_records:false}},referenced_count:0,source:{referencing_limit:null,prevent_multiple_referencing:false,can_remove_referencing_records:false,only_granted_can_reference:false},ip:"",bin:{}},o=false,a=[],l=null;function c(d){let p=d=="**"?"private":parseInt(d);return p=p==0?"public":p==1?"authorized":p==99?"admin":p,p}let u={ip:d=>{let p=d.split("#"),g=p[0];p.length>1&&(s.unique_id=p.slice(1).join("#")),g.slice(-1)==="R"?(s.readonly=true,g=g.slice(0,-1)):s.readonly=false,/^\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}$/.test(g)&&(g=g.split("-").join("."),o=true),s.ip=g;},rec:d=>{if(!d)return;s.record_id=d;let p=d.substring(0,d.length-9),g=_e(p);s.uploaded=g;},usr:d=>{s.user_id=d;},tbl:d=>{if(d&&!s.table.name){let p=d.split("/");s.table.name=Ee(p[0]),s.table.access_group=c(p[2]),p?.[3]&&(s.table.subscription.is_subscription_record=true);}},usr_tbl:d=>{let p=d.split("/");s.user_id||(s.user_id=p[0]),s.table.name||(s.table.name=Ee(p[1]),s.table.access_group=c(p[3]),p?.[4]&&(s.table.subscription.is_subscription_record=true));},idx:d=>{if(!d)return;let p=d.split("!"),g=Ee(p.splice(0,1)[0]),m=Af("!"+p.join("!"));s.index={name:g,value:m};},ref:d=>{d&&(s.reference=d.split("/")[0]);},tags:d=>{s.tags=Array.isArray(d)?d.map(p=>Ee(p)):d;},upd:d=>{s.updated=d;},acpt_mrf:d=>{s.source.prevent_multiple_referencing=!d;},ref_limt:d=>{s.source.referencing_limit=d;},rfd:d=>{s.referenced_count=d;},bin:async d=>{let p={},g=s?.reference||null;if(Array.isArray(d)){let m=await Promise.all(d.map(async y=>{try{let b=y.split("/").slice(3).join("/"),_=b.split("/");if(_.length<12)return null;let A=_[_.length-1],S=_[10];if(S==="__data__"&&A==="__json__.json")return {isDataFile:!0,rawUrl:y};if(Hn(S,A))return {isDataFile:!0,rawUrl:y};let R=Pr(S),N=_[9],F=_[8],C=c(_[6]),x=y,O=C!=="public"&&wf.call(this,_)?{expires:_f,browserCache:yf}:null;if(C!=="public"&&!i)try{x=await Xe.bind(this)(y,{dataType:"endpoint",_ref:g});}catch(M){console.error("Error getting signed url for private file:",M),x=y;}let L={access_group:C,filename:A,url:x,path:b,size:R?R.plainSize:_e(N),uploaded:_e(F),getFile:(M,J)=>{let ve={dataType:M||"download",progress:J,_ref:g},$=()=>Xe.bind(this)(x,Object.assign({},ve,{_update:L}));return O?Xe.bind(this)(y,Object.assign({},ve,O)).catch(()=>$()):$()}};return R&&(L.encrypted=!0,L.stored_size=_e(N)),{pathKey:R?R.key:S,obj:L}}catch{return null}}));for(let y of m)if(y&&!y.isDataFile){if(p[y.pathKey]){p[y.pathKey].push(y.obj);continue}p[y.pathKey]=[y.obj];}}s.bin=p;},prv_acs:d=>{for(let p in d)["notify_subscribers","upload_to_feed","feed_referencing_records","notify_referencing_records"].includes(p)?s.table.subscription[p]=d[p]:p==="referencing_index_restrictions"&&Array.isArray(d[p])?s.source[p]=d[p].map(m=>m&&typeof m=="object"&&typeof m.name=="string"?Object.assign({},m,{name:Ee(m.name)}):m):s.source[p]=d[p];},data:async d=>{let p={access_group:s.table.access_group,table_name:s.table.name,user_id:s.user_id,record_id:s.record_id,unique_id:s.unique_id,ctUrl:l},g=()=>{q.call(this)&&(s.encrypted={status:"failed",reason:"DATA_UNAVAILABLE"});},m=async b=>{if(n||!q.call(this)&&!Rr(b))return b;let _=await io.bind(this)(b,p);return _.flag&&(s.encrypted=_.flag),_.value},y=Ef(d);if(y!==d){s.data=await m(y);return}if(d&&typeof d=="object"&&!Array.isArray(d)&&typeof d.__data__=="string"&&Object.keys(d).length===1&&d.__data__.endsWith("/__data__/__json__.json")){let b=d.__data__,_=a.find(A=>A.endsWith(b))||null;if(!_&&!r&&g(),_){if(r){s.data=d;return}try{let A=await Xe.bind(this)(_,{dataType:"blob",_ref:s.reference||null}),S=await ca(A);s.data=await m(JSON.parse(S));}catch(A){console.error("Failed to fetch offloaded record data:",A),s.data=null,g();}return}}s.data=await m(d);}};if(t.record_id)return t;if(Array.isArray(t.bin))for(let d of t.bin)try{if(typeof d!="string")continue;let p=d.split("/").slice(3);p.length>=12&&p[10]==="__data__"&&p[p.length-1]==="__json__.json"&&a.push(d),p.length>=12&&Hn(p[10],p[p.length-1])&&(l=d);}catch{}let f=[];for(let d in u)if(t.hasOwnProperty(d)){let p=u[d](t[d]);p instanceof Promise&&f.push(p);}return o&&(s.user_id="anonymous:"+s.user_id),await Promise.all(f),s}function Af(t){let e=t.substring(3);switch(t.substring(0,3)){case "!S%":return e;case "!N%":let n=e.split("."),i=Number(n[0])-4503599627370496;return n.length===1?i:parseFloat(i.toString()+"."+n[1]);case "!B%":return e==="1";case "!L%":case "!D%":try{return JSON.parse(e)}catch{throw new h("Value parse error.",{code:"PARSE_ERROR"})}default:return t}}async function la(t){let{endpoints:e}=t;if(typeof e=="string"&&(e=[e]),!Array.isArray(e))throw new h('"endpoints" should be type: array | string.',{code:"INVALID_PARAMETER"});let r=await I.bind(this)("del-files",{endpoints:e,storage:"records"},{auth:true,method:"post"}),n=[];for(let i in r)n.push(Ze.bind(this)(r[i]));return Promise.all(n)}async function Xe(t,e){if(typeof t!="string")throw new h('"url" should be type: string.',{code:"INVALID_PARAMETER"});let r=t,n=t.split("?"),i=n.shift()||"",s=n.length?"?"+n.join("?"):"",o=w.Url(i);t=o+s;let a=false,l=o.split("/"),u=l[2].split("."),f=null;u.length===3&&u[1]==="skapi"&&(f=u[0],a=true);let d=l.slice(3),p=false;if(!a&&(d[0]==="auth"||d[0]==="publ"))try{w.UserId(d[2]),w.UserId(d[3]),p=d[0]=="auth",a=!0;}catch{throw new h("Invalid file url.",{code:"INVALID_PARAMETER"})}let g=f?null:d[1];if(e=w.Params(e,{expires:["number",()=>0],browserCache:["number",()=>0],refresh:["boolean",()=>false],dataType:["base64","blob","endpoint","text","info",()=>"download"],progress:["function","undefined",null],_ref:[null,"string"],_update:A=>A}),e?.dataType==="info")return {url:t,filename:d[d.length-1],fileKey:d[d.length-2],access_group:d[6]==="**"?"private":d[6]==="01"?"authorized":d[6]==="00"?"public":parseInt(d[6]),uploader:d[3],record_id:d[4]==="records"?d[5]:"N/A",filesize:_e(d[9]),uploaded:_e(d[8])};let m=t.split("/").slice(-1)[0],y=e.expires;if(y){if(!a)throw new h("Expires option can only be used on skapi cdn endpoints.",{code:"INVALID_PARAMETER"});if(y<0)throw new h('"config.expires" should be > 0. (seconds)',{code:"INVALID_PARAMETER"});let A={request:f?"get-host":"get",id:f||d[5],key:r.split("?")[0],expires:y};g&&(A.service=g);let S=e.browserCache,R={auth:true};if(S){if(S<0)throw new h('"config.browserCache" should be > 0. (seconds)',{code:"INVALID_PARAMETER"});R.method="get",R.stableGateway=true,A.browser_cache=S;let N=this.session?.idToken?.payload?.sub||this.user?.user_id;N&&(A.uid=N),A.nocache=bf(y,e.refresh);}t=(await I.bind(this)("get-signed-url",A,R)).url;}else if(p){let A=Math.floor(Date.now()/1e3);if(!this.bearerToken&&(!this.session?.idToken?.payload?.exp||this.session.idToken.payload.exp<A)){this.log("getFile:requesting new token",null);try{await re.bind(this)().getSession({refreshToken:!0}),this.log("getFile:received new tokens",{exp:this.session?.idToken?.payload?.exp,currTime:A,expiresIn:this.session?.idToken?.payload?.exp-A,token:this.session?.accessToken?.jwtToken,refreshToken:this.session?.refreshToken?.token});}catch(F){throw this.log("getFile:new token error",F),new h("User login is required.",{code:"INVALID_REQUEST"})}}let S=this.bearerToken||this.session?.idToken?.jwtToken;if(!S||!this.user?.user_id)throw new h("User login is required.",{code:"INVALID_REQUEST"});t+=`${t.includes("?")?"&":"?"}t=${encodeURIComponent(S)}`;let R=d[6]==="**"?"**":parseInt(d[6]),N=this.user?.access_group??-1;if(this.user.user_id!==d[3]&&(R==="**"||N<R)){let F=d[5];if(this.__private_access_key[F]&&typeof this.__private_access_key[F]=="string")t+=`&p=${encodeURIComponent(this.__private_access_key[F])}`;else if(this.owner!==this.host)try{let C=await this.requestPrivateRecordAccessKey({record_id:F,reference_id:e?._ref});t+=`&p=${encodeURIComponent(C)}`;}catch{}}}if((q.call(this)?ti(t):null)&&e?.dataType!=="endpoint"&&e?.dataType!=="info"){let A=await I.bind(this)(t,null,{method:"get",contentType:null,responseType:"blob",fetchOptions:{progress:e?.progress}},{ignoreService:true}),S=await Io.bind(this)(t,A);if(e?.dataType==="blob")return S;if(e?.dataType==="text")return await ca(S);if(e?.dataType==="base64")return await new Promise((F,C)=>{let x=new FileReader;x.onloadend=()=>F(x.result),x.onerror=()=>C(x.error),x.readAsDataURL(S);});let R=URL.createObjectURL(S),N=document.createElement("a");return N.href=R,document.body.appendChild(N),N.setAttribute("download",m),N.click(),document.body.removeChild(N),setTimeout(()=>URL.revokeObjectURL(R),6e4),null}if(e?.dataType==="endpoint")return e._update&&(e._update.url=t),t;if(e?.dataType==="download"){let A=document.createElement("a");return A.href=t,document.body.appendChild(A),A.setAttribute("download",m),A.target="_blank",A.click(),document.body.removeChild(A),null}return new Promise(async(A,S)=>{try{let R=await I.bind(this)(t,null,{method:"get",contentType:null,responseType:e?.dataType==="text"?"text":"blob",fetchOptions:{progress:e?.progress}},{ignoreService:!0});if(e?.dataType==="base64"){let N=new FileReader;N.onloadend=()=>A(N.result),N.readAsDataURL(R);}else A(R);}catch(R){if(e?.browserCache&&!e?.refresh)try{A(await Xe.bind(this)(r,Object.assign({},e,{refresh:!0})));return}catch(N){S(N);return}S(R);}})}function Or(t,e){return `${t||this.service}/${e||this.owner}`}function ui(t,e){let r=this.__my_unique_ids[t];return r?r[e]:void 0}function ua(t,e,r){this.__my_unique_ids[t]||(this.__my_unique_ids[t]={}),this.__my_unique_ids[t][e]=r;}function Sf(t,e){this.__my_unique_ids[t]&&delete this.__my_unique_ids[t][e];}function da(t,e){return !e||e.table===void 0?t:Object.assign({},t,{table:e.table})}async function jt(t){if(await this.__connection,!this.__user&&this.connection?.opt?.require_login===true)throw new h(`This project requires users to sign in before reading its database, so "${t}" is not available to a signed-out visitor.`,{code:"REQUIRE_LOGIN"})}async function fa(t,e=false){t=j(t,{ignoreEmpty:true}).data||{};let r=Or.bind(this)(t?.service,t?.owner),n="",i=sa(t);if(i){if(t=i,n=t.record_id||t.unique_id,typeof n=="string"){typeof this.__private_access_key?.[n]=="string"&&(t.private_key=this.__private_access_key?.[n]||void 0);let s=ui.bind(this)(r,n);s&&(e?Sf.bind(this)(r,n):t.record_id=s);}}else {let s=await Z.bind(this)(),o=t?.reference,a=false;typeof o=="object"&&Object.keys(o).length&&(o?.record_id||o?.unique_id?(n=o.record_id||o.unique_id,n&&typeof this.__private_access_key?.[n]=="string"&&(t.private_key=this.__private_access_key?.[n]||void 0),t.reference=n):o?.user_id&&(a=o.user_id===this.user?.user_id,t.reference=o.user_id)),typeof t?.table=="string"&&(t.table={name:t.table,access_group:0}),t.index&&t.index.hasOwnProperty("range")&&t.index.hasOwnProperty("condition")&&delete t.index.range;let l=c=>({table:{name:u=>bt(u,"table.name"),access_group:li.bind(this),subscription:u=>w.UserId(u,'User ID in "subscription"')},reference:"string",index:{name:["$updated","$uploaded","$referenced_count","$user_id",u=>Kt(u,"index.name")],value:u=>{let f={$updated:"number",$uploaded:"number",$referenced_count:"number",$user_id:w.UserId};if(f.hasOwnProperty(c.index.name)){let d=f[c.index.name];if(typeof d=="function")return d(u);if(d!==typeof u)throw new h(`"index.value" should be type: ${d}.`,{code:"INVALID_PARAMETER"});return u}return typeof u=="string"&&!u?"":typeof u=="string"&&ai(c.index.name)?ci(u,"index.value"):Dr(u)},condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq"],range:u=>oa(u,c)},tag:u=>{if(u==null)return u;if(typeof u=="string")return kr(u,"tag");throw new h('"tag" should be type: string.',{code:"INVALID_PARAMETER"})},private_key:"string"});t=w.Params(t||{},l(t),a||s?[]:["table"],{ignoreEmpty:true});}return {query:t,is_reference_fetch:n}}async function ha(t,e){await this.__connection,await jt.call(this,"getRecords");let r=await fa.bind(this)(t),n=r.is_reference_fetch,i=await I.bind(this)("get-records",r.query,{fetchOptions:e,auth:!!this.__user,method:this.__user?"post":"get"});n&&i?.reference_private_key&&typeof i.reference_private_key=="string"&&(this.__private_access_key[n]=i.reference_private_key);let s=[];for(let o in i.list)s.push(Ze.bind(this)(i.list[o]));return i.list=await Promise.all(s),i}function pa(t){let e="",r=[],n=Or.bind(this)(t?.service,t?.owner),i=w.Params(t||{},{record_id:o=>{let a=typeof o=="string"?ui.bind(this)(n,o):void 0;return a||Ue(o,"record_id",{allowEmpty:false})},unique_id:["string",null],readonly:"boolean",table:{name:o=>bt(o,"table.name"),subscription:[null,{is_subscription_record:"boolean",upload_to_feed:"boolean",notify_subscribers:"boolean",feed_referencing_records:"boolean",notify_referencing_records:"boolean"}],access_group:li.bind(this)},source:{referencing_limit:o=>{if(o===null)return null;if(typeof o=="number"){if(0>o)throw new h('"reference_limit" should be >= 0',{code:"INVALID_PARAMETER"});if(o>4503599627370546)throw new h('"reference_limit" should be <= 4503599627370546',{code:"INVALID_PARAMETER"});return o}throw new h('"reference_limit" should be type: <number | null>',{code:"INVALID_PARAMETER"})},prevent_multiple_referencing:"boolean",can_remove_referencing_records:"boolean",only_granted_can_reference:"boolean",allow_granted_to_grant_others:"boolean",referencing_index_restrictions:o=>{if(o===void 0)return;if(!o||Array.isArray(o)&&!o.length)return null;let a={name:c=>Kt(c,'"name" in "index_restrictions"'),value:c=>Dr(c),condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne",()=>null],range:c=>{if(c!==null&&typeof o.value!=typeof c)throw new h('Index restriction "range" type should match the type of "value".',{code:"INVALID_PARAMETER"});if(!o.hasOwnProperty("value"))throw new h('Index restriction "value" is required.',{code:"INVALID_PARAMETER"});return c}};Array.isArray(o)||(o=[o]);let l=o.map(c=>w.Params(c,a,["name"]));if(l.length)for(let c of l)c.condition&&c.hasOwnProperty("range")&&delete c.range;return l}},reference:o=>{if(o===null)return {record_id:null};if(o){if(typeof o=="string"){e=o;let a=ui.bind(this)(n,o);return a||o}if(typeof o!="object")throw new h('"reference" should be type: <string | object>.',{code:"INVALID_PARAMETER"});return w.Params(o,{unique_id:"string",record_id:a=>a==null?a:(e=a,typeof this.__private_access_key?.[a]=="string"&&(t.reference_private_key=this.__private_access_key[a]||void 0),Ue(a,"reference.record_id",{allowEmpty:false,onlyAlphanumeric:true}))})}},index:[null,{name:o=>Kt(o,"index.name"),value:o=>Dr(o)}],tags:o=>{if(o==null)return o;if(typeof o=="string"&&(o=o.split(",").map(a=>a.trim())),!Array.isArray(o))throw new h('"tag" should be type: <string | string[]>.',{code:"INVALID_PARAMETER"});return o.map(a=>kr(a,"tag"))},remove_bin:o=>{if(!o)return null;let a=[];if(Array.isArray(o))for(let l of o)if(typeof l=="string")a.push(l.split("?")[0]);else if(l.url&&l.size&&l.filename){let u=l.url.split("/").slice(0,3).join("/")+"/"+l.path;a.push(u);}else throw new h('"remove_bin" should be type: <string[] | BinaryFile[] | null>',{code:"INVALID_PARAMETER"});else throw new h('"remove_bin" should be type: <string[] | BinaryFile[] | null>',{code:"INVALID_PARAMETER"});return a},progress:"function",data:o=>o},[],{precall:o=>{let a=o?.data||{};if(!a?.record_id&&!a.table)throw new h('"table.name" is required.',{code:"INVALID_PARAMETER"});typeof a.table=="string"&&(a.table={name:a.table},a?.record_id||(a.table.access_group=0)),o.files&&(r=o.files);}}),s=t.progress||null;if(delete i.progress,!this.__user){let o=!!(i.table?.subscription?.is_subscription_record||i.table?.subscription?.upload_to_feed||i.table?.subscription?.notify_subscribers||i.table?.subscription?.feed_referencing_records||i.table?.subscription?.notify_referencing_records);if(i.record_id)throw new h("Public users cannot update existing records.",{code:"INVALID_REQUEST"});if(i.table.access_group!=="public"&&i.table.access_group!==0)throw new h("Public users can only post records to public tables.",{code:"INVALID_REQUEST"});if(o)throw new h("Public users cannot post subscription records.",{code:"INVALID_REQUEST"});if(i.remove_bin)throw new h("Public users cannot remove files from records.",{code:"INVALID_REQUEST"});if(i.unique_id)throw new h("Public users cannot set unique_id for records.",{code:"INVALID_REQUEST"})}return {config:i,progress:s,is_reference_post:e,files:r}}async function ga(t){if(await this.__connection,!Array.isArray(t)||!t.length)throw new h('"params" should be a non-empty array.',{code:"INVALID_PARAMETER"});let e=[],r,n,i=null,s={},a={_is_bulk_:await Promise.all(t.map(async(p,g)=>{if(!p||typeof p!="object"||Array.isArray(p))throw new h(`"params[${g}]" should be type: <object>.`,{code:"INVALID_PARAMETER"});let m=pa.bind(this)(p),y=m.config;if(q.call(this)){let b=Object.prototype.hasOwnProperty.call(y,"data"),_=await Wn.bind(this)(y.data,da(p,y),b);_.encrypted&&(y.data=_.send,s[g]=_.plain);}if(m.is_reference_post&&e.push(m.is_reference_post),typeof y.progress=="function"&&i===null&&(i=y.progress),y.service!==void 0){if(r===void 0)r=y.service;else if(r!==y.service)throw new h('All bulk params should share the same "service" value.',{code:"INVALID_PARAMETER"})}if(y.owner!==void 0){if(n===void 0)n=y.owner;else if(n!==y.owner)throw new h('All bulk params should share the same "owner" value.',{code:"INVALID_PARAMETER"})}return delete y.progress,delete y.service,delete y.owner,y})),service:"",owner:""};r!==void 0&&(a.service=r),n!==void 0&&(a.owner=n);let l={auth:!!this.__user,method:"post"},c={};Object.keys(c).length&&Object.assign(l,{fetchOptions:c});let u=await I.bind(this)("post-record",a,l),f=await Promise.all(u.map((p,g)=>Ze.bind(this)(p,"called from postRecord",false,s.hasOwnProperty(g))));for(let p=0;p<f.length;p++)s.hasOwnProperty(p)&&f[p]&&!f[p].error&&(f[p].data=s[p],f[p].encrypted={status:"encrypted"});let d=Or.bind(this)(r,n);for(let p=0;p<u.length;p++){let g=u[p],m=f[p];if(g&&typeof g=="object"&&g.error&&m&&!m.record_id&&(m.error=g.error),typeof g?.reference_private_key=="string")for(let y of e)this.__private_access_key[y]=g.reference_private_key;m?.unique_id&&ua.bind(this)(d,m.unique_id,m.record_id);}return f}async function di(t,e,r){if(await this.__connection,!e)throw new h('"config" argument is required.',{code:"INVALID_PARAMETER"});let n=pa.bind(this)(e),i=n.config,s=n.progress,o=n.is_reference_post,a={auth:!!this.__user,method:"post"},l=[],c=j(t);r&&Array.isArray(r)&&r.length&&(l=l.concat(r)),c.files&&Array.isArray(c.files)&&c.files.length&&(l=l.concat(c.files));let u=e?.data!==void 0?e.data:c.data,f=u!==void 0,d=await Wn.bind(this)(u,da(e,i),f),p=null;p=Object.assign({},i),delete p.data,d.omit||(p.data=d.send);let g={};if(typeof s=="function"&&(g.progress=s),Object.keys(g).length&&Object.assign(a,{fetchOptions:g}),d.files==="decrypt"&&e?.record_id){let _=await ri.bind(this)(e.record_id,"decrypt",s);if(_.length){let A=p.remove_bin;p.remove_bin=Array.isArray(A)?A.concat(_):_;}}if(d.spill&&e?.record_id){let _=new FormData;if(_.append(Lt,new File([d.spill],"payload.bin",{type:"application/octet-stream"})),await $t.bind(this)(_,{record_id:e.record_id}),d.retireCt){let A=p.remove_bin,S=[d.retireCt];p.remove_bin=Array.isArray(A)?A.concat(S):S;}}let m=await I.bind(this)("post-record",p,a);if(d.encrypted&&m?.rec&&ro.bind(this)(m.rec,d.dek),d.files==="encrypt"&&m?.rec)try{let _=await ri.bind(this)(m.rec,"encrypt",s);_.length&&await di.bind(this)(void 0,{record_id:m.rec,remove_bin:_});}catch(_){console.error("Failed to encrypt existing attachments after making the record private:",_);}if(oe()&&l.length){let _=new FormData;for(let R of l)_.append(R.name,R.file,R.file.name);let A={record_id:m.rec,progress:s};i.hasOwnProperty("service")&&(A.service=i.service);let{bin_endpoints:S}=await $t.bind(this)(_,A);m.bin?m.bin.push(...S):m.bin=S;}o&&typeof m?.reference_private_key=="string"&&(this.__private_access_key[o]=m.reference_private_key);let y=!!m&&m.data&&typeof m.data=="object"&&!Array.isArray(m.data)&&typeof m.data.__data__=="string"&&m.data.__data__.endsWith("/__data__/__json__.json"),b=await Ze.bind(this)(m,"called from postRecord",true,d.encrypted);if(y&&(b.data=c.data),d.encrypted&&(b.data=d.plain,b.encrypted={status:"encrypted",recipients:Object.keys(d.send.k||{})}),b.unique_id){let _=Or.bind(this)(i?.service,i?.owner);ua.bind(this)(_,b.unique_id,b.record_id),oe()&&(this.__uniqueIdsPersistTimer!==null&&clearTimeout(this.__uniqueIdsPersistTimer),this.__uniqueIdsPersistTimer=setTimeout(()=>{this.__uniqueIdsPersistTimer=null;try{window.sessionStorage.setItem(`${_}:uniqueids`,JSON.stringify(this.__my_unique_ids[_]||{}));}catch{}},500));}return b}async function ma(t,e){await jt.call(this,"getTables");let r=await I.bind(this)("get-table",w.Params(t||{},{table:i=>bt(i,"table",{allowEmpty:true}),condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}),Object.assign({auth:!!this.__user},{fetchOptions:e})),n={cnt_rec:"number_of_records",tbl:"table",srvc:"service",grp_:"number_of_records_in_access_group_"};if(Array.isArray(r?.list))for(let i of r.list){for(let s in n){if(s==="grp_"){for(let o in i)if(o.startsWith("grp_")){let a=o.substring(4);a==="pv"?a="private":a==="00"?a="public":a==="01"?a="authorized":a==="99"&&(a="admin"),i[`number_of_records_in_access_group_${a}`]=i[o],delete i[o];}}i.hasOwnProperty(s)&&(i[n[s]]=i[s],delete i[s]);}typeof i.table=="string"&&(i.table=Ee(i.table));}return r}async function ya(t,e){if(await jt.call(this,"getIndexes"),!t?.table)throw new h('"table" is required.',{code:"INVALID_PARAMETER"});let r=w.Params(t||{},{table:s=>bt(s,"table",{allowEmpty:true}),index:s=>Kt(s,"index.name"),order:{by:["average_number","total_number","number_count","average_bool","total_bool","bool_count","string_count","index_name","number_of_records"],value:s=>{if(t?.order?.by==="index_name"&&typeof s=="string")return Ue(s,"order.value",{allowEmpty:true,maxLength:256,blockKeyDelimiters:true});if(typeof s!="string"&&typeof s!="number"&&typeof s!="boolean")throw new h('"order.value" should be type: <string | number | boolean>.',{code:"INVALID_PARAMETER"});return s},condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}},["table"]);if(r.hasOwnProperty("order")){if(!r.order?.by)throw new h('"order.by" is required.',{code:"INVALID_PARAMETER"});if(r.order.hasOwnProperty("condition")&&!r.order.hasOwnProperty("value"))throw new h('"value" is required for "condition".',{code:"INVALID_PARAMETER"});if(r.hasOwnProperty("index")&&r.index.substring(r.index.length-1)!==".")throw new h('"index" should be a parent index name of the compound index when using "order.by"',{code:"INVALID_PARAMETER"})}let n=await I.bind(this)("get-index",r,Object.assign({auth:!!this.__user},{fetchOptions:e})),i={cnt_bool:"boolean_count",cnt_numb:"number_count",totl_numb:"total_number",totl_bool:"total_bool",avrg_numb:"average_number",avrg_bool:"average_bool",cnt_str:"string_count"};return Array.isArray(n?.list)&&(n.list=n.list.map(s=>{let o=s.idx.split("/"),a={table:Ee(o[1]),index:Ee(o[2]),number_of_records:s.cnt_rec};for(let l in i)Object.prototype.hasOwnProperty.call(s,l)&&(a[i[l]]=s[l]);return a})),n}async function _a(t,e){await jt.call(this,"getTags");let r=await I.bind(this)("get-tag",w.Params(t||{},{table:n=>bt(n,"table",{allowEmpty:true}),tag:n=>kr(n,"tag",{allowEmpty:true}),condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}),Object.assign({auth:!!this.__user},{fetchOptions:e}));return Array.isArray(r?.list)&&(r.list=r.list.map(n=>{let i=n.tag.split("/");return {table:Ee(i[1]),tag:Ee(i[0]),number_of_records:n.cnt_rec}})),r}async function ba(t,e){await jt.call(this,"getUniqueId");let r=await I.bind(this)("get-uniqueid",w.Params(t||{},{unique_id:"string",condition:["gt","gte","lt","lte",">",">=","<","<=","=","eq","!=","ne"]}),Object.assign({auth:!!this.__user},{fetchOptions:e}));if(Array.isArray(r?.list))for(let n in r.list){let i=r.list[n];r.list[n]={unique_id:i.unq,record_id:i.rec};}return r}async function wa(t,e){await this.__connection;let r=await fa.bind(this)(t,true),n=r.is_reference_fetch,i=await I.bind(this)("del-records",r.query,{auth:true,fetchOptions:e});return n&&typeof i?.reference_private_key=="string"&&(this.__private_access_key[n]=i.reference_private_key),Array.isArray(i?.list)&&(i.list=await Promise.all(i.list.map(async s=>{if(!s||typeof s!="object")return s;try{return await Ze.bind(this)(s,"called from deleteRecords",!0,!1,!0)}catch{return s}}))),i?.message||i}async function Ea(t){if(q.call(this)){let e=typeof t.user_id=="string"?[t.user_id]:t.user_id;Array.isArray(e)&&e.length&&await ei.bind(this)(t.record_id,e);}return Ra.bind(this)({record_id:t.record_id,user_id:t.user_id,execute:"add"})}async function Aa(t){let e=await Ra.bind(this)({record_id:t.record_id,user_id:t.user_id||null,execute:"remove"});if(q.call(this)){let r=typeof t.user_id=="string"?[t.user_id]:t.user_id;await _o.bind(this)(t.record_id,Array.isArray(r)&&r.length?r:null);}return e}async function Sa(t,e){let r={record_id:t.record_id||void 0,user_id:t.user_id||void 0,execute:"list"};if(!r.record_id&&!r.user_id)throw new h("Either record_id or user_id must be provided.",{code:"INVALID_PARAMETER"});if(r.user_id)if(typeof r.user_id=="string")w.UserId(r.user_id),r.user_id=[r.user_id];else if(Array.isArray(r.user_id))for(let s of r.user_id)w.UserId(s);else throw new h("user_id should be type: <string | string[]>",{code:"INVALID_PARAMETER"});let n=s=>(s.rec_usr?(s.record_id=s.rec_usr.split("/")[0],s.user_id=s.rec_usr.split("/")[1]):s.usr_rec&&(s.user_id=s.usr_rec.split("/")[0],s.record_id=s.usr_rec.split("/")[1]),s),i=await I.bind(this)("grant-private-access",r,{auth:true,fetchOptions:e});return i.list=i.list.map(n),i}function va(t){let e=t.record_id,r=t.reference_id||void 0;if(!e)throw new h("Record ID is required.",{code:"INVALID_PARAMETER"});if(typeof e!="string")throw new h("Record ID should be type: <string | string[]>",{code:"INVALID_PARAMETER"});if(r&&typeof r!="string")throw new h("Reference ID should be type: <string>",{code:"INVALID_PARAMETER"});if(typeof this.__private_access_key[e]=="string")return Promise.resolve(this.__private_access_key[e]);if(Nr[e])return Nr[e];let n=I.bind(this)("request-private-access-key",{record_id:e,reference_id:r},{auth:true}).then(i=>{let s=typeof i=="string"?i:i?.private_key;if(typeof s!="string")throw new h("Invalid private access key response.",{code:"ERROR"});return this.__private_access_key[e]=s,s}).finally(()=>{delete Nr[e];});return Nr[e]=n,n}function Ra(t){t.execute;let r=w.Params(t,{record_id:"string",user_id:n=>{if(!n)throw new h("User ID is required.",{code:"INVALID_PARAMETER"});let i=n;if(typeof i=="string"&&(i=[i]),i.length>100)throw new h("Cannot process more than 100 users at once.",{code:"INVALID_REQUEST"});for(let s of i)w.UserId(s,'User ID in "user_id"');return i},execute:["add","remove"]},["execute","record_id","user_id"]);return r.user_id||(r.user_id=null),I.bind(this)("grant-private-access",r,{auth:true})}var k={},Q={},Ae={},Ce={},xe={},Fr={},Lr={};function Ta(t,e,r){t[e]||(t[e]=[]),t[e].push(r);}async function Mr(t,e,r){let n=[];if(t[e]){for(let i of t[e])if(i){let s=r(i);s instanceof Promise&&(s=await s),n.push(s);}delete t[e];}return n}async function hi(t,e){if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});let r=await this.__socket;async function n(i,s,o){this.log("answerSdpOffer from",s),await k[s].setRemoteDescription(new RTCSessionDescription(i));let a=await k[s].createAnswer();await k[s].setLocalDescription(a),o.send(JSON.stringify({action:"rtc",uid:s,content:{sdpanswer:a},token:this.session.accessToken.jwtToken}));}k?.[e]?t?(await Mr(Lr,e,i=>n.bind(this)(i,e,r)),await n.bind(this)(t,e,r)):await Mr(Lr,e,i=>n.bind(this)(i,e,r)):t&&Ta(Lr,e,t);}async function pi(t,e){if(this.log("receiveIceCandidate",t),k?.[e]&&k[e]?.remoteDescription&&k[e]?.remoteDescription?.type){if(!t)return Mr(Fr,e,r=>k[e].addIceCandidate(r));await Mr(Fr,e,r=>k[e].addIceCandidate(r)),await k[e].addIceCandidate(t);}else Ta(Fr,e,t);}async function Se(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebRTC is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});w.Params(t,{cid:s=>{if(typeof s!="string")throw new h('"cid" should be type: <string>.',{code:"INVALID_PARAMETER"});if(s&&s.slice(0,4)!=="cid:")throw new h('"cid" should be a valid connection id.',{code:"INVALID_PARAMETER"});return s},close:"boolean"});let e=await this.__socket,{cid:r,close_all:n=false}=t||{};if(!n&&!r)throw new h('"cid" is required.',{code:"INVALID_PARAMETER"});let i=s=>{if(!s)throw new h('"cid" is required.',{code:"INVALID_PARAMETER"});if(delete Lr[s],delete Fr[s],Q[s]&&Object.values(Q[s]).forEach(o=>{o.readyState!=="closed"&&o.close();}),delete Q[s],k?.[s]){k[s].connectionState!=="closed"&&(k[s].close(),e.send(JSON.stringify({action:"rtc",uid:s,content:{hungup:this.user.user_id},token:this.session.accessToken.jwtToken})));let o={type:"connectionstatechange",target:k[s],timestamp:new Date().toISOString(),state:k[s].connectionState,iceState:k[s].iceConnectionState,signalingState:k[s].signalingState};xe[s]&&xe[s](o),this.log("closeRTC",o);}delete xe[s],delete Ce[s],delete Ae[s],delete k[s];};if(n)for(let s in k)i(s);else i(r);this.log("Cleaning up media stream..."),this.__mediaStream&&(this.__mediaStream.getTracks().forEach(s=>{s.stop();}),this.__mediaStream=null);}async function Ia(t){if(t instanceof MediaStream)return t;if(!t.video&&!t.audio){let e=new MediaStream,r=document.createElement("canvas");r.width=1,r.height=1;let i=r.captureStream().getVideoTracks()[0];return e.addTrack(i),e}return window.navigator.mediaDevices.getUserMedia(t)}async function Pa(t,e){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebRTC is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(typeof e!="function")throw new h("Callback is required.",{code:"INVALID_PARAMETER"});if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});t=w.Params(t,{cid:o=>{if(typeof o!="string")throw new h('"cid" should be type: <string>.',{code:"INVALID_PARAMETER"});if(o&&o.slice(0,4)!=="cid:")throw new h('"cid" should be a valid connection id.',{code:"INVALID_PARAMETER"});return o},ice:["string",()=>"stun:stun.skapi.com:3468"],media:o=>o,channels:["text-chat","file-transfer","video-chat","voice-chat","gaming",{ordered:"boolean",maxPacketLifeTime:"number",maxRetransmits:"number",protocol:"string"},()=>[{ordered:true,maxPacketLifeTime:10,protocol:"default"}]]},["cid"]);let{cid:r,ice:n}=t;if(!(t?.media instanceof MediaStream)&&(t?.media?.video||t?.media?.audio)&&window.location.hostname!=="localhost"&&window.location.protocol!=="https:")throw new h("Media stream is only supported on either localhost or https.",{code:"INVALID_REQUEST"});let i=this.__socket?await this.__socket:this.__socket;if(!i)throw new h("No realtime connection. Execute connectRealtime() before this method.",{code:"INVALID_REQUEST"});if(i.readyState!==1)throw new h("Realtime connection is not ready.",{code:"INVALID_REQUEST"});let s={iceServers:[{urls:n}]};k?.[r]||(k[r]=new RTCPeerConnection(s)),t?.media&&(this.__mediaStream=await Ia(t.media),this.__mediaStream.getTracks().forEach(o=>{k[r].addTrack(o,this.__mediaStream);})),xe[r]=e,Q[r]||(Q[r]={});for(let o=0;o<t.channels.length;o++){let a=t.channels[o];if(typeof a=="string")switch(a){case "text-chat":a={ordered:true,maxRetransmits:10,protocol:"text-chat"};break;case "file-transfer":a={ordered:false,maxPacketLifeTime:3e3,protocol:"file-transfer"};break;case "video-chat":a={ordered:true,maxRetransmits:10,protocol:"video-chat"};break;case "voice-chat":a={ordered:true,maxRetransmits:10,protocol:"voice-chat"};break;case "gaming":a={ordered:false,maxPacketLifeTime:100,protocol:"gaming"};break;default:a={ordered:true,maxRetransmits:10,protocol:"default"};break}let l=a.protocol||"default";if(Object.keys(Q[r]).includes(l))throw new h(`Data channel with the protocol "${l}" already exists.`,{code:"INVALID_REQUEST"});let c=k[r].createDataChannel(l,a);Q[r][l]=c;}for(let o in Q[r]){let a=Q[r][o];Ca.bind(this)(r,a);}return xa.bind(this)(r,["onnegotiationneeded"]),await fi.bind(this)(r),{hangup:()=>Ae[r]&&Ae[r](false),connection:new Promise(o=>{Ae[r]=(a=>{if(this.log("receiver picked up the call",r),!a)return Se.bind(this)({cid:r}),null;k[r].onnegotiationneeded=()=>{this.log("onnegotiationneeded",`sending offer to "${r}".`),fi.bind(this)(r),xe[r]&&xe[r]({type:"negotiationneeded",target:k[r],timestamp:new Date().toISOString(),signalingState:k[r].signalingState,connectionState:k[r].iceConnectionState,gatheringState:k[r].iceGatheringState});},o({target:k[r],channels:Q[r],hangup:()=>Se.bind(this)({cid:r}),media:this.__mediaStream});}).bind(this);})}}function Ua(t){return async(e,r)=>{e=e||{},e=j(e).data;let n=t.sender_cid,i=await this.__socket;if(!Ce[n])return null;if(typeof r!="function")throw new h("Callback is required.",{code:"INVALID_PARAMETER"});if(!(e?.media instanceof MediaStream)&&(e?.media?.video||e?.media?.audio)&&window.location.hostname!=="localhost"&&window.location.protocol!=="https:")throw new h("Media stream is only supported on either localhost or https.",{code:"INVALID_REQUEST"});let{ice:s="stun:stun.skapi.com:3468"}=e;return k?.[n]||(k[n]=new RTCPeerConnection({iceServers:[{urls:s}]})),e?.media&&(this.__mediaStream=await Ia(e.media),this.__mediaStream.getTracks().forEach(o=>{k[n].addTrack(o,this.__mediaStream);})),delete Ce[n],xe[n]=r,Q[n]||(Q[n]={}),k[n].ondatachannel=o=>{this.log("ondatachannel",`received data channel "${o.channel.label}".`);let a=o.channel;Q[n][a.label]=a,Ca.bind(this)(n,a);},xa.bind(this)(n,["onnegotiationneeded"]),await hi.bind(this)(null,n),await pi.bind(this)(null,n),i.send(JSON.stringify({action:"rtc",uid:n,content:{pickup:this.user.user_id},token:this.session.accessToken.jwtToken})),{target:k[n],channels:Q[n],hangup:()=>Se.bind(this)({cid:n}),media:this.__mediaStream}}}async function fi(t){if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});this.log("sendOffer",t);let e=await this.__socket,r=await k[t].createOffer();await k[t].setLocalDescription(r);let n=k[t].localDescription;this.log("rtcSdpOffer to",n),e.send(JSON.stringify({action:"rtc",uid:t,content:{sdpoffer:n},token:this.session.accessToken.jwtToken}));}async function vf(t,e){if(!this?.session?.accessToken?.jwtToken)throw new h("Access token is required.",{code:"INVALID_PARAMETER"});this.log("sendIceCandidate to",e);let r=await this.__socket;if(!t.candidate){this.log("candidate-end","all ice candidates have been sent");return}let n=xe[e]||(()=>{}),i=t.candidate;this.log("ice gathering state set to",k[e].iceGatheringState),n({type:"icecandidate",target:k[e],timestamp:new Date().toISOString(),candidate:t.candidate.candidate,sdpMid:t.candidate.sdpMid,sdpMLineIndex:t.candidate.sdpMLineIndex,usernameFragment:t.candidate.usernameFragment,protocol:t.candidate.protocol,gatheringState:k[e].iceGatheringState,connectionState:k[e].iceConnectionState}),r.send(JSON.stringify({action:"rtc",uid:e,content:{candidate:i},token:this.session.accessToken.jwtToken}));}function xa(t,e){let r=new Set(e),n=xe[t]||(o=>{}),i=k[t],s={ontrack:o=>{n({type:"track",target:i,timeStamp:o.timeStamp,streams:o.streams,track:o.track});},onicecandidate:o=>{vf.bind(this)(o,t),o.candidate?n({type:"icecandidate",target:i,timestamp:new Date().toISOString(),candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment,protocol:o.candidate.protocol,gatheringState:i.iceGatheringState,connectionState:i.iceConnectionState}):n({type:"icecandidateend",target:i,timestamp:new Date().toISOString()});},onicecandidateerror:o=>{n({type:"icecandidateerror",target:i,timestamp:new Date().toISOString(),errorCode:o.errorCode,errorText:o.errorText,url:o.url,hostCandidate:o.hostCandidate,gatheringState:i.iceGatheringState,connectionState:i.iceConnectionState});},oniceconnectionstatechange:()=>{n({type:"iceconnectionstatechange",target:i,timestamp:new Date().toISOString(),state:i.iceConnectionState,gatheringState:i.iceGatheringState,signalingState:i.signalingState});},onicegatheringstatechange:()=>{n({type:"icegatheringstatechange",target:i,timestamp:new Date().toISOString(),state:i.iceGatheringState,connectionState:i.iceConnectionState,signalingState:i.signalingState});},onsignalingstatechange:()=>{n({type:"signalingstatechange",target:i,timestamp:new Date().toISOString(),state:i.signalingState,connectionState:i.iceConnectionState,gatheringState:i.iceGatheringState});},onnegotiationneeded:()=>{fi.bind(this)(t),n({type:"negotiationneeded",target:i,timestamp:new Date().toISOString(),signalingState:i.signalingState,connectionState:i.iceConnectionState,gatheringState:i.iceGatheringState});},onconnectionstatechange:()=>{n({type:"connectionstatechange",target:i,timestamp:new Date().toISOString(),state:i.connectionState,iceState:i.iceConnectionState,signalingState:i.signalingState});let o=i.connectionState;(o==="disconnected"||o==="failed"||o==="closed")&&Se.bind(this)({cid:t});}};for(let[o,a]of Object.entries(s))r.has(o)||(i[o]=a);}function Ca(t,e,r){let n=new Set(r),i=xe[t]||(o=>{}),s={onmessage:o=>{let a={type:o.type,target:e,timeStamp:o.timeStamp,data:o.data,lastEventId:o.lastEventId,origin:o.origin,readyState:e.readyState,bufferedAmount:e.bufferedAmount};this.log(`${e.label}: message`,o.data),i(a);},onerror:o=>{let a={type:o.type,target:e,timeStamp:o.timeStamp,error:o.error.message,errorCode:o.error.errorDetail,readyState:e.readyState,label:e.label};this.log(`${e.label}: error`,o.error.message),i(a);},onclose:o=>{let a={type:o.type,target:e,timeStamp:o.timeStamp,readyState:e.readyState,label:e.label,id:e.id};this.log(`${e.label}: closed`,null),i(a),Q[t]&&(delete Q[t][e.label],Object.keys(Q[t]).length===0&&Se.bind(this)({cid:t}));},onbufferedamountlow:o=>{let a={target:e,bufferedAmount:e.bufferedAmount,bufferedAmountLowThreshold:e.bufferedAmountLowThreshold,type:o.type,timeStamp:o.timeStamp};this.log(`${e.label}: bufferedamountlow`,e.bufferedAmount),i(a);},onopen:o=>{this.log("dataChannel",`data channel: "${e.label}" is open and ready to send messages.`);let a={type:o.type,target:e,timeStamp:o.timeStamp,readyState:e.readyState,label:e.label,id:e.id,ordered:e.ordered,maxRetransmits:e.maxRetransmits,protocol:e.protocol};i(a);}};for(let[o,a]of Object.entries(s))n.has(o)||(e[o]=a);}var qe;function ka(){return qe}var He=null,Ht=true,wt=0;async function Rf(){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(await this.getProfile(),!this.session)throw new h("No access.",{code:"INVALID_REQUEST"});let t=await this.record_endpoint;return new WebSocket(t.websocket_private+"?token="+this.session.accessToken.jwtToken)}var gi=null;async function qr(){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});Ht=true;let t=this.__socket?await this.__socket:this.__socket;Se.bind(this)({close_all:true}),qe&&At.bind(this)({group:null}),wt=0,He&&(He.terminate(),He=null);try{t&&t.close();}catch{}return window.removeEventListener("visibilitychange",gi),this.__socket=null,null}async function Et(t,e=50,r){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(typeof t!="function")throw new h("Callback must be a function.",{code:"INVALID_REQUEST"});if(r==="reconnect"){if(this.__socket instanceof Promise){let i=await this.__socket;if(i.readyState!==WebSocket.CLOSED&&i.readyState!==WebSocket.CLOSING)return this.__socket}}else if(Ht&&(gi=()=>{!document.hidden&&!Ht&&Et.bind(this)(t,0,"reconnect");},this.__socket instanceof Promise))return this.__socket;He&&(He.terminate(),He=null);let n={value:null};return this.__socket=new Promise(async(i,s)=>{let o=a=>{this.__socket===n.value&&(this.__socket=null),s(a);};try{await yt.bind(this)();}catch(a){o(a);return}setTimeout(async()=>{try{let a=await Rf.bind(this)();a.onopen=()=>{Ht=!1,wt=0,r!=="reconnect"&&window.addEventListener("visibilitychange",gi),this.log("realtime onopen","Connected to WebSocket server."),t({type:"success",message:"Connected to WebSocket server."}),qe&&a.send(JSON.stringify({action:"joinRoom",rid:qe,token:this.session.accessToken.jwtToken}));let l=`
208
208
  let interval = 15000; // Set interval time 15 seconds
209
209
 
210
210
  function runInterval() {
@@ -213,9 +213,9 @@ var kc=Object.create;var et=Object.defineProperty;var bi=Object.getOwnPropertyDe
213
213
  }
214
214
 
215
215
  runInterval(); // Start interval
216
- `,c=new Blob([l],{type:"application/javascript"});He=new Worker(URL.createObjectURL(c)),He.onmessage=u=>{a.readyState===1&&a.send(JSON.stringify({action:"keepAlive"}));},i(a);},a.onmessage=async l=>{let c="";try{c=JSON.parse(decodeURI(l.data)),this.log("socket onmessage",c);}catch{return}let u;switch(!0){case !!c?.["#message"]:u="message";break;case !!c?.["#private"]:u="private";break;case !!c?.["#notice"]:u="notice";break;case !!c?.["#rtc"]:u="rtc";break;case !!c?.["#error"]:u="error";break}if(!u)return;let f={type:u,message:c?.["#rtc"]||c?.["#message"]||c?.["#private"]||c?.["#notice"]||c?.["#error"]||null,sender:c?.["#user_id"]||null,sender_cid:c?.["#scid"]?"cid:"+c["#scid"]:null,sender_rid:c?.["#srid"]||null,code:c?.["#code"]||null};if(u==="notice")t(f);else if(u==="rtc"){if(f.sender!==this.user.user_id){let d=f.message;if(d.hungup){Ae[f.sender_cid]&&(Ae[f.sender_cid](!1),delete Ae[f.sender_cid]),Ce[f.sender_cid]&&delete Ce[f.sender_cid],k?.[f.sender_cid]&&Se.bind(this)({cid:f.sender_cid}),f.type="rtc:closed",t(f);return}if(d.candidate&&pi.bind(this)(d.candidate,f.sender_cid),d.sdpoffer&&(hi.bind(this)(d.sdpoffer,f.sender_cid),Ce[f.sender_cid]||(Ce[f.sender_cid]=f.sender_cid,delete f.message,f.connectRTC=Pa.bind(this)(f),f.type="rtc:incoming",f.hangup=(()=>{k[f.sender_cid]?Se.bind(this)({cid:f.sender_cid}):Ce[f.sender_cid]&&(delete Ce[f.sender_cid],a.send(JSON.stringify({action:"rtc",uid:f.sender_cid,content:{hungup:this.user.user_id},token:this.session.accessToken.jwtToken})));}).bind(this),t(f))),d.pickup&&Ae[f.sender_cid]&&(Ae[f.sender_cid](!0),delete Ae[f.sender_cid]),d.sdpanswer&&k[f.sender_cid])if(k[f.sender_cid].signalingState==="have-local-offer")await k[f.sender_cid].setRemoteDescription(new RTCSessionDescription(d.sdpanswer));else throw new h("Invalid signaling state.",{code:"INVALID_REQUEST"})}}else t(f);},a.onclose=()=>{Ht?(this.log("realtime onclose","WebSocket connection closed."),t({type:"close",message:"WebSocket connection closed."})):(this.log("realtime onclose","WebSocket unexpected close."),t({type:"error",message:"Skapi: WebSocket unexpected close."}),wt++,wt<3?(this.log("realtime onclose","Reconnecting to WebSocket server..."+wt),t({type:"reconnect",message:"Reconnecting to WebSocket server..."+wt}),Et.bind(this)(t,3e3,"reconnect")):(this.log("realtime onclose","Max reconnection attempts reached."),t({type:"error",message:"Skapi: Max reconnection attempts reached."})));},a.onerror=()=>{this.log("realtime onerror","WebSocket connection error."),t({type:"error",message:"Skapi: WebSocket connection error."});};}catch(a){o(a);}},e);}),n.value=this.__socket,this.__socket}async function ka(t,e,r){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});let n=this.__socket?await this.__socket:this.__socket;if(!n)throw new h("No realtime connection. Execute connectRealtime() before this method.",{code:"INVALID_REQUEST"});if(!e)throw new h("No recipient.",{code:"INVALID_REQUEST"});await yt.bind(this)(),t=j(t).data;let i="";if(r&&(r=w.Params(r,{config:{always:"boolean"},title:"string",body:"string"},["title","body"]),i=JSON.stringify({title:r.title,body:r.body}),new Blob([i]).size>3072))throw new h("Notification size exceeds 3kb.",{code:"INVALID_PARAMETER"});if(n.readyState===1){try{w.UserId(e),n.send(JSON.stringify({action:"sendMessage",uid:e,content:t,notification:i,notificationConfig:r?.config||{},token:`IdT:${this.service}:${this.owner}:`+(this.bearerToken||this.session?.idToken?.jwtToken||"null")}));}catch(s){if(this.log("postRealtime:err",{err:s}),qe!==e)throw new h(`User has not joined to the recipient group. Run joinRealtime({ group: "${e}" })`,{code:"INVALID_REQUEST"});n.send(JSON.stringify({action:"broadcast",rid:e,content:t,notification:i,notificationConfig:r?.config||{},token:`IdT:${this.service}:${this.owner}:`+(this.bearerToken||this.session?.idToken?.jwtToken||"null")}));}return {type:"success",message:"Message sent."}}throw new h("Realtime connection is not open. Try reconnecting with connectRealtime().",{code:"INVALID_REQUEST"})}async function At(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});let e=this.__socket?await this.__socket:this.__socket;if(!e)throw new h("No realtime connection. Execute connectRealtime() before this method.",{code:"INVALID_REQUEST"});await yt.bind(this)(),t=j(t,{nullIfEmpty:true}).data;let{group:r=null}=t;if(!r&&!qe)return {type:"success",message:"Left realtime message group."};if(r!==null&&typeof r!="string")throw new h('"group" must be a string | null.',{code:"INVALID_PARAMETER"});return e.readyState===1&&e.send(JSON.stringify({action:"joinRoom",rid:r,token:this.session.accessToken.jwtToken})),qe=r,{type:"success",message:r?`Joined realtime message group: "${r}".`:"Left realtime message group."}}async function Da(t,e){t=w.Params(t,{user_id:n=>w.UserId(n,'User ID in "user_id"'),group:["string",()=>{if(!qe)throw new h('No group has been joined. Otherwise "group" is required.',{code:"INVALID_REQUEST"});return qe}]});let r=await I.bind(this)("get-ws-group",t,{fetchOptions:e,auth:true,method:"post"});return r.list=r.list.map(n=>({user_id:n.uid.split("#")[1],cid:"cid:"+n.cid})),r}async function Na(t,e){if(await this.__connection,t||(t={searchFor:"group",value:" ",condition:">"}),t=w.Params(t,{searchFor:["group","number_of_users",()=>"group"],value:["string","number",()=>t?.searchFor&&t?.searchFor==="number_of_users"?0:" "],condition:[">",">=","=","<","<=","!=","gt","gte","eq","lt","lte","ne"],range:["string","number"]}),t.condition||(t.value===" "||!t.value?t.condition=">":t.condition="="),t.range&&t.condition&&delete t.condition,t.searchFor==="number_of_users"&&typeof t.value!="number")throw new h('"value" must be a number.',{code:"INVALID_PARAMETER"});if(t.searchFor==="group"&&typeof t.value!="string")throw new h('"value" must be a string.',{code:"INVALID_PARAMETER"});if(t.hasOwnProperty("range")&&typeof t.range!=typeof t.value)throw new h(`"range" must be a ${typeof t.value}.`,{code:"INVALID_PARAMETER"});let r=await I.bind(this)("get-ws-group",t,{fetchOptions:e,auth:true,method:"post"});return r.list=r.list.map(n=>({group:n.rid.split("#")[1],number_of_users:n.cnt})),r}var Oa=typeof FormData<"u",Fa=typeof HTMLFormElement<"u",La=typeof SubmitEvent<"u",ke={},Wt={},ue={};function Gt(t){return Object.freeze({id:t,status:"stopped"})}function Ma(t){return !!t&&typeof t=="object"&&t.status==="stopped"}var qa=3;function Va(t,e,r){let n=false,i=Array.isArray(t?.chunks)?t.chunks.slice():[];i.sort((s,o)=>(s?.seq||0)-(o?.seq||0));for(let s of i)if(!(!s||typeof s.seq!="number"||s.seq<=e.seq)&&(e.seq=s.seq,n=true,r&&typeof s.txt=="string"&&s.txt!==""))try{r(s.txt,s.seq,"poll");}catch(o){console.error(o);}return typeof t?.last_seq=="number"&&t.last_seq>e.seq&&(e.seq=t.last_seq,n=true),n}var Tf=2e3,Ba=5e3,If=2e3,Pf=5,Uf=1500,Vr=null;function $a(t,e,r){let n=new Map,i=false,s=false,o=0,a={socket:0,poll:0},l=(d,p,g)=>{if(t.seq=d,!(!e||typeof p!="string"||p===""))try{e(p,d,g);}catch(m){console.error(m);}},c=()=>{for(let d of Array.from(n.keys()))d<=t.seq&&n.delete(d);for(;;){let d=t.seq+1;if(!n.has(d))break;let p=n.get(d);n.delete(d),l(d,p.txt,p.via);}};return {cursor:t,open:()=>{i||s||(i=true,c());},fromPoll:d=>{if(s)return false;let p=t.seq,g=t.seq,m=Array.isArray(d?.chunks)?d.chunks:[];for(let b of m){if(!b||typeof b.seq!="number"||b.seq<=t.seq)continue;let _=!n.has(b.seq);_&&(a.poll++,r&&a.poll===1&&r("poll",b.seq)),n.set(b.seq,{txt:typeof b.txt=="string"?b.txt:"",via:_?"poll":n.get(b.seq).via}),b.seq>g&&(g=b.seq);}typeof d?.last_seq=="number"&&d.last_seq>g&&(g=d.last_seq);let y=Array.from(n.keys()).sort((b,_)=>b-_);for(let b of y){if(b<=t.seq){n.delete(b);continue}if(b>g)break;let _=n.get(b);n.delete(b),l(b,_.txt,_.via);}return g>t.seq&&(t.seq=g),c(),t.seq>p},fromSocket:(d,p)=>{s||typeof d!="number"||!Number.isFinite(d)||(o=Date.now(),!(d<=t.seq)&&(!n.has(d)&&n.size>=If||(n.has(d)||(a.socket++,r&&a.socket===1&&r("socket",d)),n.set(d,{txt:typeof p=="string"?p:"",via:n.has(d)?n.get(d).via:"socket"}),i&&c())));},warm:()=>o!==0&&Date.now()-o<Tf,stats:()=>({socket:a.socket,poll:a.poll}),close:()=>{s=true,n.clear();}}}function Ka(t){if(!this||!this.__network_logs)return {onTransport:void 0,done:()=>{}};let e=Date.now(),r=false;return {onTransport:(n,i)=>{console.log(`%cSKAPI: stream chunk arrived over ${n==="socket"?"WEBSOCKET":"POLL"}`,`color: ${n==="socket"?"green":"orange"};`,{id:t,first_seq:i,after_ms:Date.now()-e});},done:n=>{if(r||!n)return;r=true;let i=n.stats();console.log("%cSKAPI: stream transport","color: blue;",{id:t,over_websocket:i.socket,over_poll:i.poll,took_ms:Date.now()-e});}}}function ja(t,e){let r={stop:()=>{}};if(typeof window>"u"||window._runningInNodeJS||Vr)return r;let n={stopped:false,socket:null,opened:null,joined:false,attempts:0,unavailable:false};Vr=n;let i=c=>{if(n.stopped)return;let u=c?.data;if(typeof u!="string")return;let f=null;try{f=JSON.parse(u);}catch{try{f=JSON.parse(decodeURI(u));}catch{return}}let d=f?.["#message"];if(d==null)return;if(typeof d=="string")try{d=JSON.parse(d);}catch{return}if(typeof d!="object")return;let p=f?.["#srid"];if(typeof p=="string"&&p!==t)return;let g=d.seq;typeof g=="string"&&g!==""&&(g=Number(g)),e.fromSocket(g,d.txt);},s=()=>{if(n.socket){try{n.socket.removeEventListener("message",i);}catch{}try{n.socket.removeEventListener("close",a);}catch{}n.socket=null;}},o=async()=>{let c=n.opened,u=n.joined;if(n.opened=null,n.joined=false,s(),!(!u&&!c))try{let f=this.__socket?await this.__socket:null;if(c&&f===c){await qr.bind(this)();return}u&&f&&Ca()===room&&await At.bind(this)({group:null});}catch{}},a=()=>{n.stopped||(s(),!n.unavailable&&(n.attempts>=Pf||(n.attempts+=1,setTimeout(()=>{n.stopped||l();},Uf))));},l=async()=>{try{let c=this.__socket?await this.__socket:null;if(n.stopped){o();return}if(!c){if(!this.session){n.unavailable=!0,o();return}if(await Et.bind(this)(()=>{},0),c=this.__socket?await this.__socket:null,n.stopped){o();return}c&&!n.opened&&(n.opened=c);}if(!c||c.readyState!==1)return;if(c.addEventListener("message",i),c.addEventListener("close",a),n.socket=c,!n.joined&&(await At.bind(this)({group:t}),n.joined=!0,n.stopped)){o();return}}catch{}};return l(),{stop:()=>{n.stopped||(n.stopped=true,Vr===n&&(Vr=null),o());}}}function Ha(t){return t?.status==="running"||t?.status==="pending"}function xf(t){return !!t&&typeof t=="object"&&!Array.isArray(t)&&typeof t.status=="string"&&typeof t.id=="string"&&"in_queue"in t}function Wa(t,e,r,n){if(!t||typeof t!="string")throw new h('"requestId" should be type: <string>.',{code:"INVALID_PARAMETER"});if(t.includes("#"))return t;if(!e||typeof e!="string"||!r||typeof r!="string")throw new h('"url" and "method" are required to address a request by its short id.',{code:"INVALID_PARAMETER"});return w.Url(e),`[${r.toUpperCase()}]${e.toLowerCase()}#${n}:${t}`}function Ga({id:t,auth:e,service:r,owner:n,latency:i=1e3,queue:s,onResponse:o,onError:a,onStream:l,realtimeGroup:c}){if(typeof i!="number")throw new h('"latency" should be a number.',{code:"INVALID_PARAMETER"});if(i<0)throw new h('"latency" should be a non-negative number.',{code:"INVALID_PARAMETER"});s&&!ke?.[s]&&(ke[s]=new qt({breakWhenError:false,batchSize:1}));let u={stop:null,aborted:false,queue:s};ue[t]=u;let f=null,d=()=>{ue[t]===u&&delete ue[t];},p=()=>new Promise((m,y)=>{let b=false;if(u.aborted){d(),m(Gt(t));return}let _={seq:0},A=Ka.call(this,t),S=l&&c?$a(_,l,A.onTransport):null,R=S?ja.call(this,c,S):null,N=()=>{A.done(S),R&&R.stop(),S&&S.close();};f=N;let F=0,C=false,x=0,O=async()=>{if(!(b||C)&&!(S&&S.warm()&&Date.now()-F<Ba)){C=true;try{for(;;){let M={id:t,service:r,owner:n};l&&(M.since=_.seq),F=Date.now();let J=await I.bind(this)("csr-poll",M,{auth:e});if(b)return;let ve=S?S.fromPoll(J):l?Va(J,_,l):!1;S&&S.open();let $=Ha(J);if(J?.more&&ve){x=0;continue}if($){x=0;return}if(x=J?.more?x+1:0,J?.more&&x<qa)return;b=!0,o&&o(J),clearInterval(L),N(),d(),m(J);return}}catch(M){if(b)return;b=true,a&&a(M),clearInterval(L),N(),d(),y(M);}finally{C=false;}}},L=setInterval(O,i);S&&O(),u.stop=()=>{b||(b=true,clearInterval(L),N(),d(),m(Gt(t)));};}),g=()=>{let m=ue[t];m&&(m.stop?m.stop():(m.aborted=true,delete ue[t]));};if(s){let m=new Promise((y,b)=>{let _=false,A=ke[s].add([async()=>{try{let S=await p();return _||(_=!0,y(S)),S}catch(S){throw _||(_=true,b(S)),S}}])[0];Wt[t]=A,u.stop=()=>{if(!_){u.aborted=true,f&&f();try{ke[s]&&ke[s].remove(Wt[t]);}catch{}delete Wt[t],d(),_=true,y(Gt(t));}};});return Object.assign(m,{stop:g})}else return Object.assign(p(),{stop:g})}function Ja(t){let e=0,r=[];if(t?.id){if(t.url&&t.method){let n=t.service||this.service;r.push(`[${t.method.toUpperCase()}]${t.url.toLowerCase()}#${n}:${t.id}`);}r.push(t.id);}else if(t?.queue)for(let n in ue)ue[n]?.queue===t.queue&&r.push(n);else for(let n in ue)r.push(n);for(let n of r){let i=ue[n];i&&(i.stop?i.stop():(i.aborted=true,delete ue[n]),e+=1);}return e}function Ya(t,e){if(!t.queue)throw new h('"queue" is required.',{code:"INVALID_PARAMETER"});let r={service:t.service||this.service,owner:t.owner||this.owner,queue:t.queue+":"};return I.bind(this)("csr-poll",r,{auth:true})}async function za(t){let e=false;if(typeof t.poll=="number"&&t.poll<0)throw new h('"poll" should be a non-negative number.',{code:"INVALID_PARAMETER"});let r=t?.onResponse,n=t?.onError,i=t?.onStream,s=typeof t.poll=="number"?t.poll:t.poll?1e3:0;delete t.poll,(s||t.stream)&&!t.queue&&(t.queue=(this.__user?.user_id||"anonymous")+"-"+Ye());let o=c=>{for(let u in c)if(typeof c[u]=="string"&&c[u].includes("$CLIENT_SECRET")){e=true;break}};if(t=w.Params(t,{url:c=>{if(!c||typeof c!="string")throw new h('"url" should be type: <string>.',{code:"INVALID_PARAMETER"});return w.Url(c),c.includes("$CLIENT_SECRET")&&(e=true),c},clientSecretName:"string",method:c=>{if(c&&typeof c!="string")throw new h('"method" should be either "GET" or "POST" or "DELETE" or "PUT".',{code:"INVALID_PARAMETER"});let u=c.toLowerCase();if(u!=="get"&&u!=="post"&&u!=="delete"&&u!=="put")throw new h('"method" should be either "GET" or "POST" or "DELETE" or "PUT".',{code:"INVALID_PARAMETER"});return u},stream:c=>{if(c!=null&&typeof c!="boolean")throw new h('"stream" should be type: <boolean>.',{code:"INVALID_PARAMETER"});return !!c},realtime:c=>{if(c!=null&&typeof c!="boolean")throw new h('"realtime" should be type: <boolean>.',{code:"INVALID_PARAMETER"});return !!c},headers:c=>{if(c&&typeof c!="object")throw new h('"headers" should be type: <object>.',{code:"INVALID_PARAMETER"});return o(c),c},data:c=>{if(c&&typeof c!="object")throw new h('"data" should be type: <object>.',{code:"INVALID_PARAMETER"});return o(c),c},params:c=>{if(c&&typeof c!="object")throw new h('"params" should be type: <object>.',{code:"INVALID_PARAMETER"});return o(c),c},expires:"number",queue:"string"},["clientSecretName","method","url"]),t.realtime&&!t.stream)throw new h('"realtime" requires "stream": true.',{code:"INVALID_PARAMETER"});if(!e)throw new h(`At least one parameter value should include "$CLIENT_SECRET" in ${t.method.toLowerCase()==="post"?'"data"':'"params"'} or "headers".`,{code:"INVALID_PARAMETER"});await this.__connection;let a=!!this.__user,l=()=>I.bind(this)("csr",t,{auth:a,tokenHeaders:{accessToken:!!a}}).then(c=>{if(c.status==="running"||c.status==="pending"){let u=`[${t.method.toUpperCase()}]${t.url.toLowerCase()}`,f=t.service||this.service,d=t.owner||this.owner,p=`${u}#${f}:${c.id}`;Object.assign(c,{poll:g=>Ga.call(this,{id:p,auth:a,service:f,owner:d,latency:g?.latency||1e3,queue:t?.queue,onResponse:r,onError:n,onStream:g?.onStream||i,realtimeGroup:c?.realtime_group})});}return r?r(c):c}).catch(c=>{if(n)return n(c);throw c});if(t?.queue){let c="base:"+t.queue;return ke?.[c]||(ke[c]=new qt({breakWhenError:false,batchSize:1})),new Promise((u,f)=>{ke[c].add([async()=>{try{let d=await l();if(s>0){let p=d.poll({latency:s});return u(p),p}return u(d),d}catch(d){throw f(d),d}}]);})}else return l()}async function Qa(t,e){await this.__connection;let r=t.service||this.service,n=t.owner||this.owner;t=w.Params(t,{url:"string",method:["GET","POST","DELETE","PUT"],queue:"string",status:["pending","running","resolved","failed"],compact:"boolean",queue_exact:"boolean",queue_exclude:"string"},["url","method"]);let i=!!this.__user,s=`[${t.method.toUpperCase()}]${t.url.toLowerCase()}#${r}:`,o={id:s,queue:t?.queue,status:t?.status,service:r,owner:n};t?.compact&&(o.compact=true),t?.queue_exact&&(o.queue_exact=true),t?.queue_exclude&&(o.queue_exclude=t.queue_exclude),Object.keys(o).forEach(l=>{o[l]||delete o[l];}),o.queue&&(o.id_prefix=o.id,delete o.id);let a=await I.bind(this)("csr-poll",o,{auth:i,fetchOptions:e});return a.list=a.list.map(l=>{let c={id:l.id,status_code:l.rslv?.status_code||null,response_body:l.rslv?.body||l.rslv?.truncated||null,error:l?.err,created:l?.stmp,updated:l?.utmp,request_body:l?.reqbdy,expires:l?.expt,status:l.stts,queue_name:l?.qid,request_text:l?.reqtxt,response_text:l?.rslvtxt,response_complete_marker:l?.rslvmk!=null?!!l.rslvmk:void 0,compact:l?.cmpct?true:void 0};for(let u in c)c[u]===void 0&&delete c[u];return (c.status==="running"||c.status==="pending")&&(c.poll=u=>Ga.call(this,{id:s+c.id,auth:i,service:r,owner:n,latency:u?.latency||1e3,queue:l?.qid,onResponse:u?.onResponse,onError:u?.onError,onStream:u?.onStream})),c}),a}async function Xa(t){await this.__connection,t=w.Params(t,{url:"string",method:["GET","POST","DELETE","PUT"],id:"string",queue:"string"},["url","method","id"]);let e=t?.service||this.service,r=t?.owner||this.owner,n=!!this.__user,i=`[${t.method.toUpperCase()}]${t.url.toLowerCase()}#${e}`,s=t.id,o=`${i}:${s}`,a=t?.queue;return a&&ke?.[a]&&(ke[a].remove(Wt[o]),delete Wt[o]),I.bind(this)("csr-cancel",{id:o,service:e,owner:r},{auth:n})}function Za(t,e){let r=typeof e?.poll=="number"?e.poll:1e3;if(!Number.isFinite(r)||r<0)throw new h('"poll" should be a non-negative number.',{code:"INVALID_PARAMETER"});if(!t||typeof t!="string")throw new h('"requestId" should be type: <string>.',{code:"INVALID_PARAMETER"});if(e?.since!==void 0&&typeof e.since!="number")throw new h('"since" should be a number.',{code:"INVALID_PARAMETER"});if(e?.realtimeGroup!==void 0&&e.realtimeGroup!==null&&typeof e.realtimeGroup!="string")throw new h('"realtimeGroup" should be type: <string>.',{code:"INVALID_PARAMETER"});let n=typeof e?.since=="number"&&e.since>0?e.since:0,i=e?.onStream,s=e?.onResponse,o=e?.onError,a={stopped:false,fullId:t,resolve:null},l=null,c={stop:null,aborted:false},u=()=>{ue[a.fullId]===c&&delete ue[a.fullId];},f=()=>{a.stopped||(a.stopped=true,l&&l(),u(),a.resolve&&a.resolve(Gt(a.fullId)));};c.stop=f;let d=new Promise(async(p,g)=>{a.resolve=p;try{await this.__connection;let m=!!this.__user,y=e?.service||this.service,b=e?.owner||this.owner;if(a.fullId=Wa(t,e?.url,e?.method,y),a.stopped){p(Gt(a.fullId));return}ue[a.fullId]=c;let _={seq:n},A=0,S=Ka.call(this,a.fullId),R=i&&e?.realtimeGroup?$a(_,i,S.onTransport):null,N=R?ja.call(this,e.realtimeGroup,R):null,F=()=>{S.done(R),N&&N.stop(),R&&R.close();};for(l=F;;){let C=await I.bind(this)("csr-poll",{id:a.fullId,service:y,owner:b,since:_.seq},{auth:m});if(a.stopped)return;if(!xf(C)){F(),u(),s&&s(C),p(C);return}let x=R?R.fromPoll(C):Va(C,_,i);R&&R.open();let O=Ha(C);if(C.more&&x){A=0;continue}if(A=C.more?A+1:0,!O&&(!C.more||A>=qa)){F(),u(),s&&s(C),p(C);return}if(await new Promise(L=>setTimeout(L,R&&R.warm()?Math.max(r,Ba):r)),a.stopped)return}}catch(m){if(a.stopped)return;l&&l(),u(),o&&o(m),g(m);}});return Object.assign(d,{stop:f})}async function ec(t,e,r){await this.__connection;let n=r?.service||this.service,i=r?.owner||this.owner,s=!!this.__user,o=Wa(t,r?.url,r?.method,n);return I.bind(this)("csr-finalize",{id:o,data:e,service:n,owner:i},{auth:s})}async function tc(t){await this.__connection;let e={name:"string",email:r=>(w.Email(r),r),subject:"string",message:"string"};return t=w.Params(t,e,["name","email","subject","message"]),await I.bind(this)("send-inquiry",t),"SUCCESS: Inquiry has been sent."}async function rc(t,e){if(await this.__connection,Oa&&t instanceof FormData||Fa&&t instanceof HTMLFormElement||La&&t instanceof SubmitEvent){if(!e)throw new h("Url string as a second argument is required when form is passed.",{code:"INVALID_PARAMETER"});let n=j(t);t={url:e,data:n.data,sync:true};}let r={url:n=>w.Url(n),data:n=>n,sync:["boolean",()=>true]};if(Array.isArray(t))for(let n of t)n=w.Params(n,r);else t=w.Params(t,r);return I.bind(this)("post-secure",t,{auth:true})}async function nc(t,e){await this.__connection;let{auth:r=false,method:n="POST",bypassAwaitConnection:i=false,responseType:s,contentType:o,tokenHeaders:a,progress:l}=e||{};if(e=Object.assign({auth:r,method:n,bypassAwaitConnection:i,responseType:s,contentType:o,tokenHeaders:a},{fetchOptions:{progress:l}}),typeof t!="object"&&(o==="application/json"||o===void 0))throw new h('"data" should be type: <object>.',{code:"INVALID_PARAMETER"});return I.bind(this)("mock",t,e)}async function ic(t,e){if(await this.__connection,!e?.url||typeof e.url!="string")throw new h('"url" is required in the second argument.',{code:"INVALID_PARAMETER"});w.Url(e.url);let n=(await this.admin_endpoint)?.forward_request;if(!n)throw new h("forwardRequest is not available on this service region yet.",{code:"NOT_EXISTS"});let i=null,s=null,o=La&&t instanceof SubmitEvent?t.target:Fa&&t instanceof HTMLFormElement?t:null;o?i=new FormData(o):Oa&&t instanceof FormData?i=t:t!=null&&(i=JSON.stringify(t),s="application/json");let a={public_identifier:this.__public_identifier,service:this.service,owner:this.owner,forward:{url:e.url,method:e.method||"POST",headers:e.headers||{},apiKeyHeader:e.apiKeyHeader,apiKeyScheme:e.apiKeyScheme}},l=JSON.stringify(a).replace(/[\u007f-\uffff]/g,p=>"\\u"+p.charCodeAt(0).toString(16).padStart(4,"0"));if(l.length>4096)throw new h("Destination url and headers are too large for Content-Meta.",{code:"INVALID_PARAMETER"});let c=this.bearerToken||this.session?.idToken?.jwtToken||null;if(!c)throw new h("User login is required.",{code:"INVALID_REQUEST"});let u={"Content-Meta":l,Authorization:c};s&&(u["Content-Type"]=s);let f=await fetch(n,{method:"POST",headers:u,body:i,signal:e.signal});if(e.responseType==="response")return f;if(!f.ok){let p=await f.text();try{p=JSON.parse(p);}catch{}throw new h(p?.message||(typeof p=="string"?p:JSON.stringify(p)),{code:p?.code||"ERROR"})}if(e.onStream&&f.body){let p=f.body.getReader(),g=new TextDecoder,m="";for(;;){let{done:y,value:b}=await p.read();if(y)break;let _=g.decode(b,{stream:true});m+=_;try{e.onStream(_);}catch(A){console.error(A);}}return m}let d=await f.text();if(e.responseType==="text")return d;try{return JSON.parse(d)}catch{return d}}async function sc(t,e){await this.__connection,t=w.Params(t||{},{access_group:n=>{if(n==="authorized"&&(n=1),n==="public"&&(n=0),typeof n!="number")throw new h('"access_group" should be type number.',{code:"INVALID_PARAMETER"});if(n<0)throw new h('"access_group" should be zero or a positive number.',{code:"INVALID_PARAMETER"});if(n>this.__user.access_group)throw new h("User has no access.",{code:"INVALID_REQUEST"});return n}});let r=await I.bind(this)("get-feed",t,{auth:true,fetchOptions:e});for(let n in r.list)r.list[n]=await Ze.bind(this)(r.list[n]);return r}function Jt(t){if(t===this.__user.user_id)throw new h(`"user_id" cannot be the user's own ID.`,{code:"INVALID_PARAMETER"});return w.UserId(t,'"user_id"')}async function oc(t,e){if(t=j(t,{ignoreEmpty:true}).data,t=w.Params(t,{subscriber:n=>w.UserId(n,'User ID in "subscriber"'),subscription:Jt.bind(this),blocked:"boolean"}),!t.subscriber&&!t.subscription)throw new h('At least either "subscriber" or "subscription" should have a value.',{code:"INVALID_PARAMETER"});let r=await I.bind(this)("get-subscription",t,Object.assign({auth:true},{fetchOptions:e}));return r.list=r.list.map((n=>{let i={};if(n.sub){let s=n.sub.split("#");i.subscriber=s[2],i.subscription=s[0];}else i.subscriber=n.subscriber,i.subscription=n.subscription;return i.timestamp=n?.timestamp||n.stmp,i.blocked=n?.blocked||n.grp.substring(0,1)==="N",Object.assign(i,n.opt),i})),r}async function ac(t){await this.__connection,t=w.Params(t,{user_id:Jt.bind(this),get_feed:["boolean",()=>false],get_notified:["boolean",()=>false],get_email:n=>{if(n&&!this.__user.email||!this.__user.email_verified)throw new h("User has no verified email address.",{code:"INVALID_REQUEST"});return !!n}},["user_id"]);let e=await I.bind(this)("subscription",{subscribe:t.user_id,option:{get_feed:t.get_feed,get_notified:t.get_notified,get_email:t.get_email||false}},{auth:true}),r={};if(e.sub){let n=e.sub.split("#");r.subscriber=n[2],r.subscription=n[0];}else r.subscriber=e.subscriber,r.subscription=e.subscription;return r.timestamp=e?.timestamp||e.stmp,r.blocked=e?.blocked||e.grp.substring(0,1)==="N",Object.assign(r,e.opt),r}async function cc(t){await this.__connection;let{user_id:e}=w.Params(t,{user_id:Jt.bind(this)},["user_id"]);return await I.bind(this)("subscription",{unsubscribe:e},{auth:true})}async function lc(t){await this.__connection;let{user_id:e}=w.Params(t,{user_id:Jt.bind(this)},["user_id"]);return await I.bind(this)("subscription",{block:e},{auth:true})}async function uc(t){await this.__connection;let{user_id:e}=w.Params(t,{user_id:Jt.bind(this)},["user_id"]);return await I.bind(this)("subscription",{unblock:e},{auth:true})}async function dc(t,e){await this.__connection;let r=await Z.bind(this)();t=w.Params(t,{user_id:o=>{if(o!==this.__user.user_id&&!r)throw new h("No access.",{code:"INVALID_REQUEST"});return o},group:o=>{if(o==="public"&&(o=0),o==="authorized"&&(o=1),typeof o!="number")throw new h('"group" should be type number | "public" | "authorized".',{code:"INVALID_PARAMETER"});return o}});let n=await I.bind(this)("get-newsletter-subscription",t,{auth:true,fetchOptions:e||null}),i=n?.list||n,s=[];Array.isArray(i)||(i=[]);for(let o of i){let a=o.subt.split("#"),l=true;a[0].charAt(0)==="@"&&(l=false,a[0]=a[0].substring(1));let c=parseInt(a[0]);s.push({timestamp:o.stmp,group:c,subscribed_email:a[1],active:l});}return n?.list?(n.list=s,n):s}async function fc(t){await this.__connection;let e=w.Params(t||{},{email:r=>Array.isArray(r)&&r.length>0?r.length===1?w.Email(r[0]):r.map(n=>w.Email(n)):w.Email(r),group:["number","public","authorized","admin",r=>{if(typeof r!="string"||r.length>20||!/^[a-zA-Z0-9]+$/.test(r))throw new h('"group" should be an alphanumeric string without spaces and less than 20 characters.',{code:"INVALID_PARAMETER"});return r}],redirect:r=>w.Url(r)},this.__user?["group"]:["email","group"]);return I.bind(this)(`subscribe-${this.__user?"":"public-"}newsletter`,e,{auth:!!this.__user})}async function hc(t){await this.__connection,t=w.Params(t,{group:["number","public","authorized","admin"]},["group"]);let e=Object.assign({action:"unsubscribe"},t);return I.bind(this)("subscribe-newsletter",e,{auth:true})}async function pc(t,e){let r=await Z.bind(this)(),n={message_id:"string",timestamp:"number",read:"number",complaint:"number",subject:"string",bounced:"number"};t||(e=Object.assign({ascending:false},e||{})),t=j(t).data,t=t||{searchFor:"timestamp",value:Date.now(),condition:"<",group:"public"},t=w.Params(t,{searchFor:["message_id","timestamp","subject","complaint","read","bounced"],value:l=>{if(typeof l!==n[t.searchFor])throw new h(`"value" type does not match the type of "${t.searchFor}" index.`,{code:"INVALID_PARAMETER"});if(typeof l=="string"&&!l)throw new h('"value" should not be empty string.',{code:"INVALID_PARAMETER"});return l},range:l=>{if(!t.hasOwnProperty("value")||typeof l!=typeof t.value)throw new h('"range" should match type of "value".',{code:"INVALID_PARAMETER"});return l},condition:[">",">=","=","<","<=","gt","gte","eq","lt","lte",()=>"="],group:l=>{if(l==="public")return 0;if(!this.session)throw new h("User should be logged in.",{code:"INVALID_REQUEST"});if(l==="authorized")return 1;if(typeof l=="number"){if(!r&&l>parseInt(this.user?.access_group||this.session?.idToken?.payload?.access_group))throw new h("User has no access.",{code:"INVALID_REQUEST"});return l}throw new h('"group" should be type: number | "public" | "authorized".',{code:"INVALID_PARAMETER"})}},["searchFor","value","group"]);let i=t.group===0?"get-public-newsletters":"get-newsletters",s=await I.bind(this)(i,t,Object.assign({method:"get",auth:i==="get-public-newsletters"?!!this.__user:true},{fetchOptions:e})),o={message_id:"mid",timestamp:"stmp",complaint:"cmpl",read:"read",subject:"subj",bounced:"bnce",url:"url",delivered:"delv"},a={message_id:"",timestamp:0,complaint:0,read:0,subject:"",bounced:"",url:"",delivered:0};return s.list=s.list.map(l=>{let c={};for(let u in o)c[u]=l[o[u]]||a[u];return c.bounced=String(c.bounced),c}),s}async function gc(t){let e=w.Params(t,{user_id:n=>w.UserId(n,'"user_id"')},["user_id"]);if(e?.service&&e?.owner?e={service:e?.service,owner:e?.owner,block:e.user_id}:e={block:e.user_id},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("block-account",e,{auth:true})}async function mc(t){let e=w.Params(t,{user_id:n=>w.UserId(n,'"user_id"')},["user_id"]);if(e?.service&&e?.owner?e={service:e?.service,owner:e?.owner,unblock:e.user_id}:e={unblock:e.user_id},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("block-account",e,{auth:true})}async function yc(t){let e=w.Params(t,{user_id:n=>w.UserId(n,'"user_id"')},["user_id"]);if(e?.service&&e?.owner?e={service:e?.service,owner:e?.owner,delete:e.user_id}:e={delete:e.user_id},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("remove-account",e,{auth:true})}async function _c(t,e){let r={email:s=>w.Email(s),password:s=>w.Password(s),name:"string",username:"string",gender:"string",address:s=>{if(!s)return "";if(typeof s=="string")return s;if(typeof s=="object")return JSON.stringify(s)},birthdate:s=>w.Birthdate(s),phone_number:s=>w.PhoneNumber(s),picture:s=>{if(s)return w.Url(s)},profile:s=>{if(s)return w.Url(s)},website:s=>{if(s)return w.Url(s)},nickname:"string",misc:"string",email_public:["boolean",()=>false],gender_public:["boolean",()=>false],address_public:["boolean",()=>false],birthdate_public:["boolean",()=>false],phone_number_public:["boolean",()=>false],openid_id:"string",access_group:s=>{try{typeof s=="string"&&(s=s==="admin"?99:parseInt(s));}catch{throw new h('"access_group" is invalid. Should be type <number>.',{code:"INVALID_PARAMETER"})}if(typeof s!="number"||s<1||s>100)throw new h('"access_group" is invalid. Should be type <number> of range 1~99',{code:"INVALID_PARAMETER"});return s}},n=w.Params(t,r,["email"]);if(e=w.Params(e,{confirmation_url:s=>{let o=s;if(typeof s=="string")o=w.Url(s);else throw new h('"options.confirmation_url" should be type: <string>.',{code:"INVALID_PARAMETER"});if(o&&!n.email)throw new h('"email" is required for signup confirmation.',{code:"INVALID_PARAMETER"});return o},email_subscription:s=>{if(typeof s!="boolean")throw new h('"options.email_subscription" should be type: <boolean>.',{code:"INVALID_PARAMETER"});if(!e?.confirmation_url)throw new h('"options.confirmation_url" is required for email subscription.',{code:"INVALID_PARAMETER"});return s},template:s=>{if(typeof s!="object"||!s.url||!s.subject)throw new h('"options.template" should be type: <object> with "url" and "subject".',{code:"INVALID_PARAMETER"});return {url:w.Url(s.url),subject:s.subject}}}),n.signup_confirmation=e?.confirmation_url||true,n.email_subscription=e?.email_subscription||false,n.template=e?.template||{},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("admin-signup",n,{auth:true})}async function bc(t){let e={email:s=>w.Email(s),password:s=>w.Password(s),openid_id:"string",name:"string",username:"string",gender:"string",address:s=>{if(!s)return "";if(typeof s=="string")return s;if(typeof s=="object")return JSON.stringify(s)},birthdate:s=>w.Birthdate(s),phone_number:s=>w.PhoneNumber(s),picture:s=>s?w.Url(s):"",profile:s=>s?w.Url(s):"",website:s=>s?w.Url(s):"",nickname:"string",misc:"string",email_public:["boolean",()=>false],gender_public:["boolean",()=>false],address_public:["boolean",()=>false],birthdate_public:["boolean",()=>false],phone_number_public:["boolean",()=>false],access_group:s=>{try{typeof s=="string"&&(s=parseInt(s));}catch{throw new h('"access_group" is invalid. Should be type <number>.',{code:"INVALID_PARAMETER"})}if(typeof s!="number"||s<1||s>100)throw new h('"access_group" is invalid. Should be type <number> of range 1~99',{code:"INVALID_PARAMETER"});return s}},r=["email","password"],n=w.Params(t,e,r);if(!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("admin-signup",n,{auth:true})}async function wc(t){if(t=w.Params(t,{user_id:r=>w.UserId(r,'"user_id"'),access_group:r=>{try{typeof r=="string"&&(r=parseInt(r));}catch{throw new h('"access_group" is invalid. Should be type <number>.',{code:"INVALID_PARAMETER"})}if(typeof r=="number"&&r>0&&r<100)return r;throw new h('"access_group" is invalid. Should be type <number> of range 1~99',{code:"INVALID_PARAMETER"})}},["user_id","access_group"]),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("grant-access",t,{auth:true})}async function Ec(t,e){if(t=w.Params(t,{email:"string"}),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}let n=await I.bind(this)("invitation-list",Object.assign({mode:"search"},t),{fetchOptions:e,auth:true});return n.list=n.list.map(i=>Tt(i.user)),n}async function Ac(t){if(t=w.Params(t,{email:r=>w.Email(r)},["email"]),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("invitation-list",Object.assign({mode:"cancel"},t),{auth:true})}async function Sc(t){if(t=w.Params(t,{email:r=>w.Email(r)},["email"]),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("invitation-list",Object.assign({mode:"resend"},t),{auth:true})}async function vc(t){let e=w.Params(t,{user_id:o=>w.UserId(o,'"user_id"'),email:o=>w.Email(o),address:o=>{if(!o)return "";if(typeof o=="string")return o;if(typeof o=="object")return JSON.stringify(o)},name:"string",gender:"string",birthdate:o=>o?w.Birthdate(o):"",phone_number:o=>o?w.PhoneNumber(o):"",email_public:"boolean",phone_number_public:"boolean",address_public:"boolean",gender_public:"boolean",birthdate_public:"boolean",misc:"string",picture:o=>o?w.Url(o):"",profile:o=>o?w.Url(o):"",nickname:"string",website:o=>o?w.Url(o):""},["user_id"]),r=e.service,n=e.owner;if(delete e.service,delete e.owner,Object.keys(e).filter(o=>o!=="user_id"&&e[o]!==void 0).length===0)throw new h("At least one attribute to update is required.",{code:"INVALID_PARAMETER"});if(!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}e.email&&(e.preferred_username=(r||this.service)+"-"+X.hash(e.email));let s={attributes:e};return r&&n&&(s.service=r,s.owner=n),await I.bind(this)("admin-edit-profile",s,{auth:true})}async function Rc(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(await this.__connection,!t.endpoint)throw new h("Missing parameter: endpoint",{code:"INVALID_PARAMETER"});if(!t.keys||!t.keys.p256dh||!t.keys.auth)throw new h("Missing parameter: keys.p256dh or keys.auth",{code:"INVALID_PARAMETER"});return await I.bind(this)("store-subscription",{endpoint:t.endpoint,keys:t.keys},{auth:true}),"SUCCESS: Subscribed to receive notifications."}async function Tc(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(await this.__connection,!t.endpoint)throw new h("Missing parameter: endpoint",{code:"INVALID_PARAMETER"});if(!t.keys||!t.keys.p256dh||!t.keys.auth)throw new h("Missing parameter: keys.p256dh or keys.auth",{code:"INVALID_PARAMETER"});return await I.bind(this)("delete-subscription",{endpoint:t.endpoint,keys:t.keys},{auth:true}),"SUCCESS: Unsubscribed from notifications."}async function Ic(){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});return await this.__connection,{VAPIDPublicKey:await I.bind(this)("get-vapid-public-key",null,{auth:true})}}async function Pc(t,e){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});await this.__connection;let{title:r,body:n}=j(t||{},{nullIfEmpty:true}).data;if(!r)throw new h("Missing parameter: message title",{code:"INVALID_PARAMETER"});if(!n)throw new h("Missing parameter: message body",{code:"INVALID_PARAMETER"});let i={title:r,body:n};return e?(typeof e=="string"&&(e=[e]),i.user_ids=e):i.user_ids="all_users",await I.bind(this)("push-notification",i,{auth:true}),"SUCCESS: Notification sent."}async function Uc(t){await this.__connection,t=w.Params(t,{spell:"string",name:"string",magic:r=>r},["spell","name"]);await I.bind(this)("castspell",t);return `The spell "${t.spell}" has been cast.`}async function xc(t){return await this.__connection,t=w.Params(t||{},{search:["spell","name",()=>"spell"],value:"string"}),await I.bind(this)("getspell",t)}async function Cc(t){await this.__connection,t=w.Params(t,{message:"string",name:"string"},["message","name"]);let e=await I.bind(this)("dopamine",t,{auth:true}),r=e?.previous_message?.message,n=e?.previous_message?.name;if(oe())r&&n&&window.alert(`${n} said: ${r}`),window.location.href=e.video;else return r&&n?`${n} said: ${r}
216
+ `,c=new Blob([l],{type:"application/javascript"});He=new Worker(URL.createObjectURL(c)),He.onmessage=u=>{a.readyState===1&&a.send(JSON.stringify({action:"keepAlive"}));},i(a);},a.onmessage=async l=>{let c="";try{c=JSON.parse(decodeURI(l.data)),this.log("socket onmessage",c);}catch{return}let u;switch(!0){case !!c?.["#message"]:u="message";break;case !!c?.["#private"]:u="private";break;case !!c?.["#notice"]:u="notice";break;case !!c?.["#rtc"]:u="rtc";break;case !!c?.["#error"]:u="error";break}if(!u)return;let f={type:u,message:c?.["#rtc"]||c?.["#message"]||c?.["#private"]||c?.["#notice"]||c?.["#error"]||null,sender:c?.["#user_id"]||null,sender_cid:c?.["#scid"]?"cid:"+c["#scid"]:null,sender_rid:c?.["#srid"]||null,code:c?.["#code"]||null};if(u==="notice")t(f);else if(u==="rtc"){if(f.sender!==this.user.user_id){let d=f.message;if(d.hungup){Ae[f.sender_cid]&&(Ae[f.sender_cid](!1),delete Ae[f.sender_cid]),Ce[f.sender_cid]&&delete Ce[f.sender_cid],k?.[f.sender_cid]&&Se.bind(this)({cid:f.sender_cid}),f.type="rtc:closed",t(f);return}if(d.candidate&&pi.bind(this)(d.candidate,f.sender_cid),d.sdpoffer&&(hi.bind(this)(d.sdpoffer,f.sender_cid),Ce[f.sender_cid]||(Ce[f.sender_cid]=f.sender_cid,delete f.message,f.connectRTC=Ua.bind(this)(f),f.type="rtc:incoming",f.hangup=(()=>{k[f.sender_cid]?Se.bind(this)({cid:f.sender_cid}):Ce[f.sender_cid]&&(delete Ce[f.sender_cid],a.send(JSON.stringify({action:"rtc",uid:f.sender_cid,content:{hungup:this.user.user_id},token:this.session.accessToken.jwtToken})));}).bind(this),t(f))),d.pickup&&Ae[f.sender_cid]&&(Ae[f.sender_cid](!0),delete Ae[f.sender_cid]),d.sdpanswer&&k[f.sender_cid])if(k[f.sender_cid].signalingState==="have-local-offer")await k[f.sender_cid].setRemoteDescription(new RTCSessionDescription(d.sdpanswer));else throw new h("Invalid signaling state.",{code:"INVALID_REQUEST"})}}else t(f);},a.onclose=()=>{Ht?(this.log("realtime onclose","WebSocket connection closed."),t({type:"close",message:"WebSocket connection closed."})):(this.log("realtime onclose","WebSocket unexpected close."),t({type:"error",message:"Skapi: WebSocket unexpected close."}),wt++,wt<3?(this.log("realtime onclose","Reconnecting to WebSocket server..."+wt),t({type:"reconnect",message:"Reconnecting to WebSocket server..."+wt}),Et.bind(this)(t,3e3,"reconnect")):(this.log("realtime onclose","Max reconnection attempts reached."),t({type:"error",message:"Skapi: Max reconnection attempts reached."})));},a.onerror=()=>{this.log("realtime onerror","WebSocket connection error."),t({type:"error",message:"Skapi: WebSocket connection error."});};}catch(a){o(a);}},e);}),n.value=this.__socket,this.__socket}async function Da(t,e,r){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});let n=this.__socket?await this.__socket:this.__socket;if(!n)throw new h("No realtime connection. Execute connectRealtime() before this method.",{code:"INVALID_REQUEST"});if(!e)throw new h("No recipient.",{code:"INVALID_REQUEST"});await yt.bind(this)(),t=j(t).data;let i="";if(r&&(r=w.Params(r,{config:{always:"boolean"},title:"string",body:"string"},["title","body"]),i=JSON.stringify({title:r.title,body:r.body}),new Blob([i]).size>3072))throw new h("Notification size exceeds 3kb.",{code:"INVALID_PARAMETER"});if(n.readyState===1){try{w.UserId(e),n.send(JSON.stringify({action:"sendMessage",uid:e,content:t,notification:i,notificationConfig:r?.config||{},token:`IdT:${this.service}:${this.owner}:`+(this.bearerToken||this.session?.idToken?.jwtToken||"null")}));}catch(s){if(this.log("postRealtime:err",{err:s}),qe!==e)throw new h(`User has not joined to the recipient group. Run joinRealtime({ group: "${e}" })`,{code:"INVALID_REQUEST"});n.send(JSON.stringify({action:"broadcast",rid:e,content:t,notification:i,notificationConfig:r?.config||{},token:`IdT:${this.service}:${this.owner}:`+(this.bearerToken||this.session?.idToken?.jwtToken||"null")}));}return {type:"success",message:"Message sent."}}throw new h("Realtime connection is not open. Try reconnecting with connectRealtime().",{code:"INVALID_REQUEST"})}async function At(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("WebSocket is not supported in Node.js environment.",{code:"NOT_SUPPORTED"});let e=this.__socket?await this.__socket:this.__socket;if(!e)throw new h("No realtime connection. Execute connectRealtime() before this method.",{code:"INVALID_REQUEST"});await yt.bind(this)(),t=j(t,{nullIfEmpty:true}).data;let{group:r=null}=t;if(!r&&!qe)return {type:"success",message:"Left realtime message group."};if(r!==null&&typeof r!="string")throw new h('"group" must be a string | null.',{code:"INVALID_PARAMETER"});return e.readyState===1&&e.send(JSON.stringify({action:"joinRoom",rid:r,token:this.session.accessToken.jwtToken})),qe=r,{type:"success",message:r?`Joined realtime message group: "${r}".`:"Left realtime message group."}}async function Na(t,e){t=w.Params(t,{user_id:n=>w.UserId(n,'User ID in "user_id"'),group:["string",()=>{if(!qe)throw new h('No group has been joined. Otherwise "group" is required.',{code:"INVALID_REQUEST"});return qe}]});let r=await I.bind(this)("get-ws-group",t,{fetchOptions:e,auth:true,method:"post"});return r.list=r.list.map(n=>({user_id:n.uid.split("#")[1],cid:"cid:"+n.cid})),r}async function Oa(t,e){if(await this.__connection,t||(t={searchFor:"group",value:" ",condition:">"}),t=w.Params(t,{searchFor:["group","number_of_users",()=>"group"],value:["string","number",()=>t?.searchFor&&t?.searchFor==="number_of_users"?0:" "],condition:[">",">=","=","<","<=","!=","gt","gte","eq","lt","lte","ne"],range:["string","number"]}),t.condition||(t.value===" "||!t.value?t.condition=">":t.condition="="),t.range&&t.condition&&delete t.condition,t.searchFor==="number_of_users"&&typeof t.value!="number")throw new h('"value" must be a number.',{code:"INVALID_PARAMETER"});if(t.searchFor==="group"&&typeof t.value!="string")throw new h('"value" must be a string.',{code:"INVALID_PARAMETER"});if(t.hasOwnProperty("range")&&typeof t.range!=typeof t.value)throw new h(`"range" must be a ${typeof t.value}.`,{code:"INVALID_PARAMETER"});let r=await I.bind(this)("get-ws-group",t,{fetchOptions:e,auth:true,method:"post"});return r.list=r.list.map(n=>({group:n.rid.split("#")[1],number_of_users:n.cnt})),r}var Fa=typeof FormData<"u",La=typeof HTMLFormElement<"u",Ma=typeof SubmitEvent<"u",ke={},Wt={},ue={};function Gt(t){return Object.freeze({id:t,status:"stopped"})}function qa(t){return !!t&&typeof t=="object"&&t.status==="stopped"}var Va=3;function Ba(t,e,r){let n=false,i=Array.isArray(t?.chunks)?t.chunks.slice():[];i.sort((s,o)=>(s?.seq||0)-(o?.seq||0));for(let s of i)if(!(!s||typeof s.seq!="number"||s.seq<=e.seq)&&(e.seq=s.seq,n=true,r&&typeof s.txt=="string"&&s.txt!==""))try{r(s.txt,s.seq,"poll");}catch(o){console.error(o);}return typeof t?.last_seq=="number"&&t.last_seq>e.seq&&(e.seq=t.last_seq,n=true),n}var Tf=2e3,$a=5e3,If=2e3,Pf=5,Uf=1500,Vr=null;function Ka(t,e,r){let n=new Map,i=false,s=false,o=0,a={socket:0,poll:0},l=(d,p,g)=>{if(t.seq=d,!(!e||typeof p!="string"||p===""))try{e(p,d,g);}catch(m){console.error(m);}},c=()=>{for(let d of Array.from(n.keys()))d<=t.seq&&n.delete(d);for(;;){let d=t.seq+1;if(!n.has(d))break;let p=n.get(d);n.delete(d),l(d,p.txt,p.via);}};return {cursor:t,open:()=>{i||s||(i=true,c());},fromPoll:d=>{if(s)return false;let p=t.seq,g=t.seq,m=Array.isArray(d?.chunks)?d.chunks:[];for(let b of m){if(!b||typeof b.seq!="number"||b.seq<=t.seq)continue;let _=!n.has(b.seq);_&&(a.poll++,r&&a.poll===1&&r("poll",b.seq)),n.set(b.seq,{txt:typeof b.txt=="string"?b.txt:"",via:_?"poll":n.get(b.seq).via}),b.seq>g&&(g=b.seq);}typeof d?.last_seq=="number"&&d.last_seq>g&&(g=d.last_seq);let y=Array.from(n.keys()).sort((b,_)=>b-_);for(let b of y){if(b<=t.seq){n.delete(b);continue}if(b>g)break;let _=n.get(b);n.delete(b),l(b,_.txt,_.via);}return g>t.seq&&(t.seq=g),c(),t.seq>p},fromSocket:(d,p)=>{s||typeof d!="number"||!Number.isFinite(d)||(o=Date.now(),!(d<=t.seq)&&(!n.has(d)&&n.size>=If||(n.has(d)||(a.socket++,r&&a.socket===1&&r("socket",d)),n.set(d,{txt:typeof p=="string"?p:"",via:n.has(d)?n.get(d).via:"socket"}),i&&c())));},warm:()=>o!==0&&Date.now()-o<Tf,stats:()=>({socket:a.socket,poll:a.poll}),close:()=>{s=true,n.clear();}}}function ja(t){if(!this||!this.__network_logs)return {onTransport:void 0,done:()=>{}};let e=Date.now(),r=false;return {onTransport:(n,i)=>{console.log(`%cSKAPI: stream chunk arrived over ${n==="socket"?"WEBSOCKET":"POLL"}`,`color: ${n==="socket"?"green":"orange"};`,{id:t,first_seq:i,after_ms:Date.now()-e});},done:n=>{if(r||!n)return;r=true;let i=n.stats();console.log("%cSKAPI: stream transport","color: blue;",{id:t,over_websocket:i.socket,over_poll:i.poll,took_ms:Date.now()-e});}}}function Ha(t,e){let r={stop:()=>{}};if(typeof window>"u"||window._runningInNodeJS||Vr)return r;let n={stopped:false,socket:null,opened:null,joined:false,attempts:0,unavailable:false};Vr=n;let i=c=>{if(n.stopped)return;let u=c?.data;if(typeof u!="string")return;let f=null;try{f=JSON.parse(u);}catch{try{f=JSON.parse(decodeURI(u));}catch{return}}let d=f?.["#message"];if(d==null)return;if(typeof d=="string")try{d=JSON.parse(d);}catch{return}if(typeof d!="object")return;let p=f?.["#srid"];if(typeof p=="string"&&p!==t)return;let g=d.seq;typeof g=="string"&&g!==""&&(g=Number(g)),e.fromSocket(g,d.txt);},s=()=>{if(n.socket){try{n.socket.removeEventListener("message",i);}catch{}try{n.socket.removeEventListener("close",a);}catch{}n.socket=null;}},o=async()=>{let c=n.opened,u=n.joined;if(n.opened=null,n.joined=false,s(),!(!u&&!c))try{let f=this.__socket?await this.__socket:null;if(c&&f===c){await qr.bind(this)();return}u&&f&&ka()===room&&await At.bind(this)({group:null});}catch{}},a=()=>{n.stopped||(s(),!n.unavailable&&(n.attempts>=Pf||(n.attempts+=1,setTimeout(()=>{n.stopped||l();},Uf))));},l=async()=>{try{let c=this.__socket?await this.__socket:null;if(n.stopped){o();return}if(!c){if(!this.session){n.unavailable=!0,o();return}if(await Et.bind(this)(()=>{},0),c=this.__socket?await this.__socket:null,n.stopped){o();return}c&&!n.opened&&(n.opened=c);}if(!c||c.readyState!==1)return;if(c.addEventListener("message",i),c.addEventListener("close",a),n.socket=c,!n.joined&&(await At.bind(this)({group:t}),n.joined=!0,n.stopped)){o();return}}catch{}};return l(),{stop:()=>{n.stopped||(n.stopped=true,Vr===n&&(Vr=null),o());}}}function Wa(t){return t?.status==="running"||t?.status==="pending"}function xf(t){return !!t&&typeof t=="object"&&!Array.isArray(t)&&typeof t.status=="string"&&typeof t.id=="string"&&"in_queue"in t}function Ga(t,e,r,n){if(!t||typeof t!="string")throw new h('"requestId" should be type: <string>.',{code:"INVALID_PARAMETER"});if(t.includes("#"))return t;if(!e||typeof e!="string"||!r||typeof r!="string")throw new h('"url" and "method" are required to address a request by its short id.',{code:"INVALID_PARAMETER"});return w.Url(e),`[${r.toUpperCase()}]${e.toLowerCase()}#${n}:${t}`}function Ja({id:t,auth:e,service:r,owner:n,latency:i=1e3,queue:s,onResponse:o,onError:a,onStream:l,realtimeGroup:c}){if(typeof i!="number")throw new h('"latency" should be a number.',{code:"INVALID_PARAMETER"});if(i<0)throw new h('"latency" should be a non-negative number.',{code:"INVALID_PARAMETER"});s&&!ke?.[s]&&(ke[s]=new qt({breakWhenError:false,batchSize:1}));let u={stop:null,aborted:false,queue:s};ue[t]=u;let f=null,d=()=>{ue[t]===u&&delete ue[t];},p=()=>new Promise((m,y)=>{let b=false;if(u.aborted){d(),m(Gt(t));return}let _={seq:0},A=ja.call(this,t),S=l&&c?Ka(_,l,A.onTransport):null,R=S?Ha.call(this,c,S):null,N=()=>{A.done(S),R&&R.stop(),S&&S.close();};f=N;let F=0,C=false,x=0,O=async()=>{if(!(b||C)&&!(S&&S.warm()&&Date.now()-F<$a)){C=true;try{for(;;){let M={id:t,service:r,owner:n};l&&(M.since=_.seq),F=Date.now();let J=await I.bind(this)("csr-poll",M,{auth:e});if(b)return;let ve=S?S.fromPoll(J):l?Ba(J,_,l):!1;S&&S.open();let $=Wa(J);if(J?.more&&ve){x=0;continue}if($){x=0;return}if(x=J?.more?x+1:0,J?.more&&x<Va)return;b=!0,o&&o(J),clearInterval(L),N(),d(),m(J);return}}catch(M){if(b)return;b=true,a&&a(M),clearInterval(L),N(),d(),y(M);}finally{C=false;}}},L=setInterval(O,i);S&&O(),u.stop=()=>{b||(b=true,clearInterval(L),N(),d(),m(Gt(t)));};}),g=()=>{let m=ue[t];m&&(m.stop?m.stop():(m.aborted=true,delete ue[t]));};if(s){let m=new Promise((y,b)=>{let _=false,A=ke[s].add([async()=>{try{let S=await p();return _||(_=!0,y(S)),S}catch(S){throw _||(_=true,b(S)),S}}])[0];Wt[t]=A,u.stop=()=>{if(!_){u.aborted=true,f&&f();try{ke[s]&&ke[s].remove(Wt[t]);}catch{}delete Wt[t],d(),_=true,y(Gt(t));}};});return Object.assign(m,{stop:g})}else return Object.assign(p(),{stop:g})}function Ya(t){let e=0,r=[];if(t?.id){if(t.url&&t.method){let n=t.service||this.service;r.push(`[${t.method.toUpperCase()}]${t.url.toLowerCase()}#${n}:${t.id}`);}r.push(t.id);}else if(t?.queue)for(let n in ue)ue[n]?.queue===t.queue&&r.push(n);else for(let n in ue)r.push(n);for(let n of r){let i=ue[n];i&&(i.stop?i.stop():(i.aborted=true,delete ue[n]),e+=1);}return e}function za(t,e){if(!t.queue)throw new h('"queue" is required.',{code:"INVALID_PARAMETER"});let r={service:t.service||this.service,owner:t.owner||this.owner,queue:t.queue+":"};return I.bind(this)("csr-poll",r,{auth:true})}async function Qa(t){let e=false;if(typeof t.poll=="number"&&t.poll<0)throw new h('"poll" should be a non-negative number.',{code:"INVALID_PARAMETER"});let r=t?.onResponse,n=t?.onError,i=t?.onStream,s=typeof t.poll=="number"?t.poll:t.poll?1e3:0;delete t.poll,(s||t.stream)&&!t.queue&&(t.queue=(this.__user?.user_id||"anonymous")+"-"+Ye());let o=c=>{for(let u in c)if(typeof c[u]=="string"&&c[u].includes("$CLIENT_SECRET")){e=true;break}};if(t=w.Params(t,{url:c=>{if(!c||typeof c!="string")throw new h('"url" should be type: <string>.',{code:"INVALID_PARAMETER"});return w.Url(c),c.includes("$CLIENT_SECRET")&&(e=true),c},clientSecretName:"string",method:c=>{if(c&&typeof c!="string")throw new h('"method" should be either "GET" or "POST" or "DELETE" or "PUT".',{code:"INVALID_PARAMETER"});let u=c.toLowerCase();if(u!=="get"&&u!=="post"&&u!=="delete"&&u!=="put")throw new h('"method" should be either "GET" or "POST" or "DELETE" or "PUT".',{code:"INVALID_PARAMETER"});return u},stream:c=>{if(c!=null&&typeof c!="boolean")throw new h('"stream" should be type: <boolean>.',{code:"INVALID_PARAMETER"});return !!c},realtime:c=>{if(c!=null&&typeof c!="boolean")throw new h('"realtime" should be type: <boolean>.',{code:"INVALID_PARAMETER"});return !!c},headers:c=>{if(c&&typeof c!="object")throw new h('"headers" should be type: <object>.',{code:"INVALID_PARAMETER"});return o(c),c},data:c=>{if(c&&typeof c!="object")throw new h('"data" should be type: <object>.',{code:"INVALID_PARAMETER"});return o(c),c},params:c=>{if(c&&typeof c!="object")throw new h('"params" should be type: <object>.',{code:"INVALID_PARAMETER"});return o(c),c},expires:"number",queue:"string"},["clientSecretName","method","url"]),t.realtime&&!t.stream)throw new h('"realtime" requires "stream": true.',{code:"INVALID_PARAMETER"});if(!e)throw new h(`At least one parameter value should include "$CLIENT_SECRET" in ${t.method.toLowerCase()==="post"?'"data"':'"params"'} or "headers".`,{code:"INVALID_PARAMETER"});await this.__connection;let a=!!this.__user,l=()=>I.bind(this)("csr",t,{auth:a,tokenHeaders:{accessToken:!!a}}).then(c=>{if(c.status==="running"||c.status==="pending"){let u=`[${t.method.toUpperCase()}]${t.url.toLowerCase()}`,f=t.service||this.service,d=t.owner||this.owner,p=`${u}#${f}:${c.id}`;Object.assign(c,{poll:g=>Ja.call(this,{id:p,auth:a,service:f,owner:d,latency:g?.latency||1e3,queue:t?.queue,onResponse:r,onError:n,onStream:g?.onStream||i,realtimeGroup:c?.realtime_group})});}return r?r(c):c}).catch(c=>{if(n)return n(c);throw c});if(t?.queue){let c="base:"+t.queue;return ke?.[c]||(ke[c]=new qt({breakWhenError:false,batchSize:1})),new Promise((u,f)=>{ke[c].add([async()=>{try{let d=await l();if(s>0){let p=d.poll({latency:s});return u(p),p}return u(d),d}catch(d){throw f(d),d}}]);})}else return l()}async function Xa(t,e){await this.__connection;let r=t.service||this.service,n=t.owner||this.owner;t=w.Params(t,{url:"string",method:["GET","POST","DELETE","PUT"],queue:"string",status:["pending","running","resolved","failed"],compact:"boolean",queue_exact:"boolean",queue_exclude:"string"},["url","method"]);let i=!!this.__user,s=`[${t.method.toUpperCase()}]${t.url.toLowerCase()}#${r}:`,o={id:s,queue:t?.queue,status:t?.status,service:r,owner:n};t?.compact&&(o.compact=true),t?.queue_exact&&(o.queue_exact=true),t?.queue_exclude&&(o.queue_exclude=t.queue_exclude),Object.keys(o).forEach(l=>{o[l]||delete o[l];}),o.queue&&(o.id_prefix=o.id,delete o.id);let a=await I.bind(this)("csr-poll",o,{auth:i,fetchOptions:e});return a.list=a.list.map(l=>{let c={id:l.id,status_code:l.rslv?.status_code||null,response_body:l.rslv?.body||l.rslv?.truncated||null,error:l?.err,created:l?.stmp,updated:l?.utmp,request_body:l?.reqbdy,expires:l?.expt,status:l.stts,queue_name:l?.qid,request_text:l?.reqtxt,response_text:l?.rslvtxt,response_complete_marker:l?.rslvmk!=null?!!l.rslvmk:void 0,compact:l?.cmpct?true:void 0};for(let u in c)c[u]===void 0&&delete c[u];return (c.status==="running"||c.status==="pending")&&(c.poll=u=>Ja.call(this,{id:s+c.id,auth:i,service:r,owner:n,latency:u?.latency||1e3,queue:l?.qid,onResponse:u?.onResponse,onError:u?.onError,onStream:u?.onStream})),c}),a}async function Za(t){await this.__connection,t=w.Params(t,{url:"string",method:["GET","POST","DELETE","PUT"],id:"string",queue:"string"},["url","method","id"]);let e=t?.service||this.service,r=t?.owner||this.owner,n=!!this.__user,i=`[${t.method.toUpperCase()}]${t.url.toLowerCase()}#${e}`,s=t.id,o=`${i}:${s}`,a=t?.queue;return a&&ke?.[a]&&(ke[a].remove(Wt[o]),delete Wt[o]),I.bind(this)("csr-cancel",{id:o,service:e,owner:r},{auth:n})}function ec(t,e){let r=typeof e?.poll=="number"?e.poll:1e3;if(!Number.isFinite(r)||r<0)throw new h('"poll" should be a non-negative number.',{code:"INVALID_PARAMETER"});if(!t||typeof t!="string")throw new h('"requestId" should be type: <string>.',{code:"INVALID_PARAMETER"});if(e?.since!==void 0&&typeof e.since!="number")throw new h('"since" should be a number.',{code:"INVALID_PARAMETER"});if(e?.realtimeGroup!==void 0&&e.realtimeGroup!==null&&typeof e.realtimeGroup!="string")throw new h('"realtimeGroup" should be type: <string>.',{code:"INVALID_PARAMETER"});let n=typeof e?.since=="number"&&e.since>0?e.since:0,i=e?.onStream,s=e?.onResponse,o=e?.onError,a={stopped:false,fullId:t,resolve:null},l=null,c={stop:null,aborted:false},u=()=>{ue[a.fullId]===c&&delete ue[a.fullId];},f=()=>{a.stopped||(a.stopped=true,l&&l(),u(),a.resolve&&a.resolve(Gt(a.fullId)));};c.stop=f;let d=new Promise(async(p,g)=>{a.resolve=p;try{await this.__connection;let m=!!this.__user,y=e?.service||this.service,b=e?.owner||this.owner;if(a.fullId=Ga(t,e?.url,e?.method,y),a.stopped){p(Gt(a.fullId));return}ue[a.fullId]=c;let _={seq:n},A=0,S=ja.call(this,a.fullId),R=i&&e?.realtimeGroup?Ka(_,i,S.onTransport):null,N=R?Ha.call(this,e.realtimeGroup,R):null,F=()=>{S.done(R),N&&N.stop(),R&&R.close();};for(l=F;;){let C=await I.bind(this)("csr-poll",{id:a.fullId,service:y,owner:b,since:_.seq},{auth:m});if(a.stopped)return;if(!xf(C)){F(),u(),s&&s(C),p(C);return}let x=R?R.fromPoll(C):Ba(C,_,i);R&&R.open();let O=Wa(C);if(C.more&&x){A=0;continue}if(A=C.more?A+1:0,!O&&(!C.more||A>=Va)){F(),u(),s&&s(C),p(C);return}if(await new Promise(L=>setTimeout(L,R&&R.warm()?Math.max(r,$a):r)),a.stopped)return}}catch(m){if(a.stopped)return;l&&l(),u(),o&&o(m),g(m);}});return Object.assign(d,{stop:f})}async function tc(t,e,r){await this.__connection;let n=r?.service||this.service,i=r?.owner||this.owner,s=!!this.__user,o=Ga(t,r?.url,r?.method,n);return I.bind(this)("csr-finalize",{id:o,data:e,service:n,owner:i},{auth:s})}async function rc(t){await this.__connection;let e={name:"string",email:r=>(w.Email(r),r),subject:"string",message:"string"};return t=w.Params(t,e,["name","email","subject","message"]),await I.bind(this)("send-inquiry",t),"SUCCESS: Inquiry has been sent."}async function nc(t,e){if(await this.__connection,Fa&&t instanceof FormData||La&&t instanceof HTMLFormElement||Ma&&t instanceof SubmitEvent){if(!e)throw new h("Url string as a second argument is required when form is passed.",{code:"INVALID_PARAMETER"});let n=j(t);t={url:e,data:n.data,sync:true};}let r={url:n=>w.Url(n),data:n=>n,sync:["boolean",()=>true]};if(Array.isArray(t))for(let n of t)n=w.Params(n,r);else t=w.Params(t,r);return I.bind(this)("post-secure",t,{auth:true})}async function ic(t,e){await this.__connection;let{auth:r=false,method:n="POST",bypassAwaitConnection:i=false,responseType:s,contentType:o,tokenHeaders:a,progress:l}=e||{};if(e=Object.assign({auth:r,method:n,bypassAwaitConnection:i,responseType:s,contentType:o,tokenHeaders:a},{fetchOptions:{progress:l}}),typeof t!="object"&&(o==="application/json"||o===void 0))throw new h('"data" should be type: <object>.',{code:"INVALID_PARAMETER"});return I.bind(this)("mock",t,e)}async function sc(t,e){if(await this.__connection,!e?.url||typeof e.url!="string")throw new h('"url" is required in the second argument.',{code:"INVALID_PARAMETER"});w.Url(e.url);let n=(await this.admin_endpoint)?.forward_request;if(!n)throw new h("forwardRequest is not available on this service region yet.",{code:"NOT_EXISTS"});let i=null,s=null,o=Ma&&t instanceof SubmitEvent?t.target:La&&t instanceof HTMLFormElement?t:null;o?i=new FormData(o):Fa&&t instanceof FormData?i=t:t!=null&&(i=JSON.stringify(t),s="application/json");let a={public_identifier:this.__public_identifier,service:this.service,owner:this.owner,forward:{url:e.url,method:e.method||"POST",headers:e.headers||{},apiKeyHeader:e.apiKeyHeader,apiKeyScheme:e.apiKeyScheme}},l=JSON.stringify(a).replace(/[\u007f-\uffff]/g,p=>"\\u"+p.charCodeAt(0).toString(16).padStart(4,"0"));if(l.length>4096)throw new h("Destination url and headers are too large for Content-Meta.",{code:"INVALID_PARAMETER"});let c=this.bearerToken||this.session?.idToken?.jwtToken||null;if(!c)throw new h("User login is required.",{code:"INVALID_REQUEST"});let u={"Content-Meta":l,Authorization:c};s&&(u["Content-Type"]=s);let f=await fetch(n,{method:"POST",headers:u,body:i,signal:e.signal});if(e.responseType==="response")return f;if(!f.ok){let p=await f.text();try{p=JSON.parse(p);}catch{}throw new h(p?.message||(typeof p=="string"?p:JSON.stringify(p)),{code:p?.code||"ERROR"})}if(e.onStream&&f.body){let p=f.body.getReader(),g=new TextDecoder,m="";for(;;){let{done:y,value:b}=await p.read();if(y)break;let _=g.decode(b,{stream:true});m+=_;try{e.onStream(_);}catch(A){console.error(A);}}return m}let d=await f.text();if(e.responseType==="text")return d;try{return JSON.parse(d)}catch{return d}}async function oc(t,e){await this.__connection,t=w.Params(t||{},{access_group:n=>{if(n==="authorized"&&(n=1),n==="public"&&(n=0),typeof n!="number")throw new h('"access_group" should be type number.',{code:"INVALID_PARAMETER"});if(n<0)throw new h('"access_group" should be zero or a positive number.',{code:"INVALID_PARAMETER"});if(n>this.__user.access_group)throw new h("User has no access.",{code:"INVALID_REQUEST"});return n}});let r=await I.bind(this)("get-feed",t,{auth:true,fetchOptions:e});for(let n in r.list)r.list[n]=await Ze.bind(this)(r.list[n]);return r}function Jt(t){if(t===this.__user.user_id)throw new h(`"user_id" cannot be the user's own ID.`,{code:"INVALID_PARAMETER"});return w.UserId(t,'"user_id"')}async function ac(t,e){if(t=j(t,{ignoreEmpty:true}).data,t=w.Params(t,{subscriber:n=>w.UserId(n,'User ID in "subscriber"'),subscription:Jt.bind(this),blocked:"boolean"}),!t.subscriber&&!t.subscription)throw new h('At least either "subscriber" or "subscription" should have a value.',{code:"INVALID_PARAMETER"});let r=await I.bind(this)("get-subscription",t,Object.assign({auth:true},{fetchOptions:e}));return r.list=r.list.map((n=>{let i={};if(n.sub){let s=n.sub.split("#");i.subscriber=s[2],i.subscription=s[0];}else i.subscriber=n.subscriber,i.subscription=n.subscription;return i.timestamp=n?.timestamp||n.stmp,i.blocked=n?.blocked||n.grp.substring(0,1)==="N",Object.assign(i,n.opt),i})),r}async function cc(t){await this.__connection,t=w.Params(t,{user_id:Jt.bind(this),get_feed:["boolean",()=>false],get_notified:["boolean",()=>false],get_email:n=>{if(n&&!this.__user.email||!this.__user.email_verified)throw new h("User has no verified email address.",{code:"INVALID_REQUEST"});return !!n}},["user_id"]);let e=await I.bind(this)("subscription",{subscribe:t.user_id,option:{get_feed:t.get_feed,get_notified:t.get_notified,get_email:t.get_email||false}},{auth:true}),r={};if(e.sub){let n=e.sub.split("#");r.subscriber=n[2],r.subscription=n[0];}else r.subscriber=e.subscriber,r.subscription=e.subscription;return r.timestamp=e?.timestamp||e.stmp,r.blocked=e?.blocked||e.grp.substring(0,1)==="N",Object.assign(r,e.opt),r}async function lc(t){await this.__connection;let{user_id:e}=w.Params(t,{user_id:Jt.bind(this)},["user_id"]);return await I.bind(this)("subscription",{unsubscribe:e},{auth:true})}async function uc(t){await this.__connection;let{user_id:e}=w.Params(t,{user_id:Jt.bind(this)},["user_id"]);return await I.bind(this)("subscription",{block:e},{auth:true})}async function dc(t){await this.__connection;let{user_id:e}=w.Params(t,{user_id:Jt.bind(this)},["user_id"]);return await I.bind(this)("subscription",{unblock:e},{auth:true})}async function fc(t,e){await this.__connection;let r=await Z.bind(this)();t=w.Params(t,{user_id:o=>{if(o!==this.__user.user_id&&!r)throw new h("No access.",{code:"INVALID_REQUEST"});return o},group:o=>{if(o==="public"&&(o=0),o==="authorized"&&(o=1),typeof o!="number")throw new h('"group" should be type number | "public" | "authorized".',{code:"INVALID_PARAMETER"});return o}});let n=await I.bind(this)("get-newsletter-subscription",t,{auth:true,fetchOptions:e||null}),i=n?.list||n,s=[];Array.isArray(i)||(i=[]);for(let o of i){let a=o.subt.split("#"),l=true;a[0].charAt(0)==="@"&&(l=false,a[0]=a[0].substring(1));let c=parseInt(a[0]);s.push({timestamp:o.stmp,group:c,subscribed_email:a[1],active:l});}return n?.list?(n.list=s,n):s}async function hc(t){await this.__connection;let e=w.Params(t||{},{email:r=>Array.isArray(r)&&r.length>0?r.length===1?w.Email(r[0]):r.map(n=>w.Email(n)):w.Email(r),group:["number","public","authorized","admin",r=>{if(typeof r!="string"||r.length>20||!/^[a-zA-Z0-9]+$/.test(r))throw new h('"group" should be an alphanumeric string without spaces and less than 20 characters.',{code:"INVALID_PARAMETER"});return r}],redirect:r=>w.Url(r)},this.__user?["group"]:["email","group"]);return I.bind(this)(`subscribe-${this.__user?"":"public-"}newsletter`,e,{auth:!!this.__user})}async function pc(t){await this.__connection,t=w.Params(t,{group:["number","public","authorized","admin"]},["group"]);let e=Object.assign({action:"unsubscribe"},t);return I.bind(this)("subscribe-newsletter",e,{auth:true})}async function gc(t,e){let r=await Z.bind(this)(),n={message_id:"string",timestamp:"number",read:"number",complaint:"number",subject:"string",bounced:"number"};t||(e=Object.assign({ascending:false},e||{})),t=j(t).data,t=t||{searchFor:"timestamp",value:Date.now(),condition:"<",group:"public"},t=w.Params(t,{searchFor:["message_id","timestamp","subject","complaint","read","bounced"],value:l=>{if(typeof l!==n[t.searchFor])throw new h(`"value" type does not match the type of "${t.searchFor}" index.`,{code:"INVALID_PARAMETER"});if(typeof l=="string"&&!l)throw new h('"value" should not be empty string.',{code:"INVALID_PARAMETER"});return l},range:l=>{if(!t.hasOwnProperty("value")||typeof l!=typeof t.value)throw new h('"range" should match type of "value".',{code:"INVALID_PARAMETER"});return l},condition:[">",">=","=","<","<=","gt","gte","eq","lt","lte",()=>"="],group:l=>{if(l==="public")return 0;if(!this.session)throw new h("User should be logged in.",{code:"INVALID_REQUEST"});if(l==="authorized")return 1;if(typeof l=="number"){if(!r&&l>parseInt(this.user?.access_group||this.session?.idToken?.payload?.access_group))throw new h("User has no access.",{code:"INVALID_REQUEST"});return l}throw new h('"group" should be type: number | "public" | "authorized".',{code:"INVALID_PARAMETER"})}},["searchFor","value","group"]);let i=t.group===0?"get-public-newsletters":"get-newsletters",s=await I.bind(this)(i,t,Object.assign({method:"get",auth:i==="get-public-newsletters"?!!this.__user:true},{fetchOptions:e})),o={message_id:"mid",timestamp:"stmp",complaint:"cmpl",read:"read",subject:"subj",bounced:"bnce",url:"url",delivered:"delv"},a={message_id:"",timestamp:0,complaint:0,read:0,subject:"",bounced:"",url:"",delivered:0};return s.list=s.list.map(l=>{let c={};for(let u in o)c[u]=l[o[u]]||a[u];return c.bounced=String(c.bounced),c}),s}async function mc(t){let e=w.Params(t,{user_id:n=>w.UserId(n,'"user_id"')},["user_id"]);if(e?.service&&e?.owner?e={service:e?.service,owner:e?.owner,block:e.user_id}:e={block:e.user_id},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("block-account",e,{auth:true})}async function yc(t){let e=w.Params(t,{user_id:n=>w.UserId(n,'"user_id"')},["user_id"]);if(e?.service&&e?.owner?e={service:e?.service,owner:e?.owner,unblock:e.user_id}:e={unblock:e.user_id},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("block-account",e,{auth:true})}async function _c(t){let e=w.Params(t,{user_id:n=>w.UserId(n,'"user_id"')},["user_id"]);if(e?.service&&e?.owner?e={service:e?.service,owner:e?.owner,delete:e.user_id}:e={delete:e.user_id},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("remove-account",e,{auth:true})}async function bc(t,e){let r={email:s=>w.Email(s),password:s=>w.Password(s),name:"string",username:"string",gender:"string",address:s=>{if(!s)return "";if(typeof s=="string")return s;if(typeof s=="object")return JSON.stringify(s)},birthdate:s=>w.Birthdate(s),phone_number:s=>w.PhoneNumber(s),picture:s=>{if(s)return w.Url(s)},profile:s=>{if(s)return w.Url(s)},website:s=>{if(s)return w.Url(s)},nickname:"string",misc:"string",email_public:["boolean",()=>false],gender_public:["boolean",()=>false],address_public:["boolean",()=>false],birthdate_public:["boolean",()=>false],phone_number_public:["boolean",()=>false],openid_id:"string",access_group:s=>{try{typeof s=="string"&&(s=s==="admin"?99:parseInt(s));}catch{throw new h('"access_group" is invalid. Should be type <number>.',{code:"INVALID_PARAMETER"})}if(typeof s!="number"||s<1||s>100)throw new h('"access_group" is invalid. Should be type <number> of range 1~99',{code:"INVALID_PARAMETER"});return s}},n=w.Params(t,r,["email"]);if(e=w.Params(e,{confirmation_url:s=>{let o=s;if(typeof s=="string")o=w.Url(s);else throw new h('"options.confirmation_url" should be type: <string>.',{code:"INVALID_PARAMETER"});if(o&&!n.email)throw new h('"email" is required for signup confirmation.',{code:"INVALID_PARAMETER"});return o},email_subscription:s=>{if(typeof s!="boolean")throw new h('"options.email_subscription" should be type: <boolean>.',{code:"INVALID_PARAMETER"});if(!e?.confirmation_url)throw new h('"options.confirmation_url" is required for email subscription.',{code:"INVALID_PARAMETER"});return s},template:s=>{if(typeof s!="object"||!s.url||!s.subject)throw new h('"options.template" should be type: <object> with "url" and "subject".',{code:"INVALID_PARAMETER"});return {url:w.Url(s.url),subject:s.subject}}}),n.signup_confirmation=e?.confirmation_url||true,n.email_subscription=e?.email_subscription||false,n.template=e?.template||{},!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("admin-signup",n,{auth:true})}async function wc(t){let e={email:s=>w.Email(s),password:s=>w.Password(s),openid_id:"string",name:"string",username:"string",gender:"string",address:s=>{if(!s)return "";if(typeof s=="string")return s;if(typeof s=="object")return JSON.stringify(s)},birthdate:s=>w.Birthdate(s),phone_number:s=>w.PhoneNumber(s),picture:s=>s?w.Url(s):"",profile:s=>s?w.Url(s):"",website:s=>s?w.Url(s):"",nickname:"string",misc:"string",email_public:["boolean",()=>false],gender_public:["boolean",()=>false],address_public:["boolean",()=>false],birthdate_public:["boolean",()=>false],phone_number_public:["boolean",()=>false],access_group:s=>{try{typeof s=="string"&&(s=parseInt(s));}catch{throw new h('"access_group" is invalid. Should be type <number>.',{code:"INVALID_PARAMETER"})}if(typeof s!="number"||s<1||s>100)throw new h('"access_group" is invalid. Should be type <number> of range 1~99',{code:"INVALID_PARAMETER"});return s}},r=["email","password"],n=w.Params(t,e,r);if(!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("admin-signup",n,{auth:true})}async function Ec(t){if(t=w.Params(t,{user_id:r=>w.UserId(r,'"user_id"'),access_group:r=>{try{typeof r=="string"&&(r=parseInt(r));}catch{throw new h('"access_group" is invalid. Should be type <number>.',{code:"INVALID_PARAMETER"})}if(typeof r=="number"&&r>0&&r<100)return r;throw new h('"access_group" is invalid. Should be type <number> of range 1~99',{code:"INVALID_PARAMETER"})}},["user_id","access_group"]),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("grant-access",t,{auth:true})}async function Ac(t,e){if(t=w.Params(t,{email:"string"}),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}let n=await I.bind(this)("invitation-list",Object.assign({mode:"search"},t),{fetchOptions:e,auth:true});return n.list=n.list.map(i=>Tt(i.user)),n}async function Sc(t){if(t=w.Params(t,{email:r=>w.Email(r)},["email"]),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("invitation-list",Object.assign({mode:"cancel"},t),{auth:true})}async function vc(t){if(t=w.Params(t,{email:r=>w.Email(r)},["email"]),!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}return await I.bind(this)("invitation-list",Object.assign({mode:"resend"},t),{auth:true})}async function Rc(t){let e=w.Params(t,{user_id:o=>w.UserId(o,'"user_id"'),email:o=>w.Email(o),address:o=>{if(!o)return "";if(typeof o=="string")return o;if(typeof o=="object")return JSON.stringify(o)},name:"string",gender:"string",birthdate:o=>o?w.Birthdate(o):"",phone_number:o=>o?w.PhoneNumber(o):"",email_public:"boolean",phone_number_public:"boolean",address_public:"boolean",gender_public:"boolean",birthdate_public:"boolean",misc:"string",picture:o=>o?w.Url(o):"",profile:o=>o?w.Url(o):"",nickname:"string",website:o=>o?w.Url(o):""},["user_id"]),r=e.service,n=e.owner;if(delete e.service,delete e.owner,Object.keys(e).filter(o=>o!=="user_id"&&e[o]!==void 0).length===0)throw new h("At least one attribute to update is required.",{code:"INVALID_PARAMETER"});if(!await Z.bind(this)()){if(!this.__user)throw new h("User needs to login.",{code:"INVALID_REQUEST"});if(this.__user.access_group<90)throw new h("Invalid access.",{code:"INVALID_REQUEST"})}e.email&&(e.preferred_username=(r||this.service)+"-"+X.hash(e.email));let s={attributes:e};return r&&n&&(s.service=r,s.owner=n),await I.bind(this)("admin-edit-profile",s,{auth:true})}async function Tc(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(await this.__connection,!t.endpoint)throw new h("Missing parameter: endpoint",{code:"INVALID_PARAMETER"});if(!t.keys||!t.keys.p256dh||!t.keys.auth)throw new h("Missing parameter: keys.p256dh or keys.auth",{code:"INVALID_PARAMETER"});return await I.bind(this)("store-subscription",{endpoint:t.endpoint,keys:t.keys},{auth:true}),"SUCCESS: Subscribed to receive notifications."}async function Ic(t){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});if(await this.__connection,!t.endpoint)throw new h("Missing parameter: endpoint",{code:"INVALID_PARAMETER"});if(!t.keys||!t.keys.p256dh||!t.keys.auth)throw new h("Missing parameter: keys.p256dh or keys.auth",{code:"INVALID_PARAMETER"});return await I.bind(this)("delete-subscription",{endpoint:t.endpoint,keys:t.keys},{auth:true}),"SUCCESS: Unsubscribed from notifications."}async function Pc(){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});return await this.__connection,{VAPIDPublicKey:await I.bind(this)("get-vapid-public-key",null,{auth:true})}}async function Uc(t,e){if(typeof window>"u"||window._runningInNodeJS)throw new h("Push Notifications are not supported in Node.js environment.",{code:"NOT_SUPPORTED"});await this.__connection;let{title:r,body:n}=j(t||{},{nullIfEmpty:true}).data;if(!r)throw new h("Missing parameter: message title",{code:"INVALID_PARAMETER"});if(!n)throw new h("Missing parameter: message body",{code:"INVALID_PARAMETER"});let i={title:r,body:n};return e?(typeof e=="string"&&(e=[e]),i.user_ids=e):i.user_ids="all_users",await I.bind(this)("push-notification",i,{auth:true}),"SUCCESS: Notification sent."}async function xc(t){await this.__connection,t=w.Params(t,{spell:"string",name:"string",magic:r=>r},["spell","name"]);await I.bind(this)("castspell",t);return `The spell "${t.spell}" has been cast.`}async function Cc(t){return await this.__connection,t=w.Params(t||{},{search:["spell","name",()=>"spell"],value:"string"}),await I.bind(this)("getspell",t)}async function kc(t){await this.__connection,t=w.Params(t,{message:"string",name:"string"},["message","name"]);let e=await I.bind(this)("dopamine",t,{auth:true}),r=e?.previous_message?.message,n=e?.previous_message?.name;if(oe())r&&n&&window.alert(`${n} said: ${r}`),window.location.href=e.video;else return r&&n?`${n} said: ${r}
217
217
  Watch the video here: ${e.video}`:`Your message has been uploaded for future generations to receive.
218
- Watch the video here: ${e.video}`}var T=class{constructor(e,r,n,i){this.__version="2.0.0";this.project_id="";this.session=null;this.connection=null;this.__my_unique_ids={};this.__uniqueIdsPersistTimer=null;this.userPool=null;this.__socket=null;this.__mediaStream=null;this.host="skapi";this.hostDomain="skapi.com";this.target_cdn="d3e9syvbtso631";this.customApiDomain="skapi.dev";this.requestBatchSize=30;this.__disabledAccount=null;this.__cached_requests={};this.__startKeyHistory={};this.__request_signup_confirmation=null;this.__private_access_key={};this.__class_properties_has_been_cached=false;this.__user=null;this._userProfileListeners=[];this._onLoginListeners=[];this._onBatchProcessListeners=[];this.validate={userId(e){try{return w.UserId(e),!0}catch{return false}},url(e){try{return w.Url(e),!0}catch{return false}},phoneNumber(e){try{return w.PhoneNumber(e),!0}catch{return false}},birthdate(e){try{return w.Birthdate(e),!0}catch{return false}},email(e){try{return w.Email(e),!0}catch{return false}},params(e,r,n){return w.Params(e,r,n)}};this.util={MD5:X,generateRandom:Ye,toBase62:Rs,fromBase62:me,decodeProjectId:Un,formatServiceId:xn,extractFormData:j,terminatePendingRequests:Zo,request:(e,r,n)=>I.bind(this)(e,r,n,{ignoreService:true})};this.__network_logs=false;this.__endpoint_version="v2";this.__public_identifier="";this.bearerToken="";this.registerTicket=Co.bind(this);this.unregisterTicket=ko.bind(this);if(!e||typeof e!="string")throw this._alert("Service ID is required."),new h("Service ID is required.",{code:"INVALID_PARAMETER"});let s=e.trim().toLowerCase().replace(/^<|>$/g,"").replace(/[\s_\-.]+/g,"");if(s==="serviceid"||s==="projectid")throw this._alert(`Replace "${e}" with your actual Project ID.`),new h("Project ID is required.",{code:"INVALID_PARAMETER"});let o=e.split("-").length;if(o===2||o===7)try{let _=Un(e);n&&typeof n=="object"&&(i=n),r&&typeof r=="object"&&(n=r),r=_.owner,e=_.service;}catch{throw this._alert("Service ID is invalid."),new h("Service ID is invalid.",{code:"INVALID_PARAMETER"})}if(!r||typeof r!="string")throw this._alert("Owner ID is invalid."),new h("Owner ID is invalid.",{code:"INVALID_PARAMETER"});if(r!==this.host)try{w.UserId(r,'"owner"');}catch{throw this._alert("Owner ID is invalid."),new h("Owner ID is invalid.",{code:"INVALID_PARAMETER"})}this.service=e,this.owner=r;try{this.project_id=xn(e,r);}catch{this.project_id="";}let c=true,u=false,f=null;if(n&&(typeof n.refetchServiceInfo=="boolean"&&(u=n.refetchServiceInfo),typeof n.autoLogin=="boolean"&&(c=n.autoLogin),n.encryption&&(f=Js(n.encryption)),typeof n.requestBatchSize=="number")){if(n.requestBatchSize<1)throw new h('"requestBatchSize" must be greater than 0.',{code:"INVALID_PARAMETER"});this.requestBatchSize=n.requestBatchSize;}n?.eventListener&&typeof n.eventListener=="object"&&(n.eventListener?.onLogin&&typeof n.eventListener.onLogin=="function"&&(this.onLogin=n.eventListener.onLogin),n.eventListener?.onUserUpdate&&typeof n.eventListener.onUserUpdate=="function"&&(this.onUserUpdate=n.eventListener.onUserUpdate),n.eventListener?.onBatchProcess&&typeof n.eventListener.onBatchProcess=="function"&&(this.onBatchProcess=n.eventListener.onBatchProcess)),this.target_cdn=i?.target_cdn||this.target_cdn,this.hostDomain=i?.hostDomain||this.hostDomain,this.customApiDomain=i?.customApiDomain||this.customApiDomain,this.__network_logs=!!i?.network_logs;let d=`https://${this.target_cdn}.cloudfront.net`,p=e.substring(0,4);this.admin_endpoint=fetch(`${d}/${p}/admin-${this.__endpoint_version}.json`).then(_=>_.blob()).then(_=>new Promise((A,S)=>{let R=new FileReader;R.onloadend=()=>A(R.result),R.onerror=S,R.readAsDataURL(_);})).then(_=>{try{return typeof _=="string"?JSON.parse(atob(_.split(",")[1])):null}catch{throw new h("Service does not exist. Create your service from skapi.com",{code:"NOT_EXISTS"})}}),this.record_endpoint=fetch(`${d}/${p}/record-${this.__endpoint_version}.json`).then(_=>_.blob()).then(_=>new Promise((A,S)=>{let R=new FileReader;R.onloadend=()=>A(R.result),R.onerror=S,R.readAsDataURL(_);})).then(_=>{try{return typeof _=="string"?JSON.parse(atob(_.split(",")[1])):null}catch{throw new h("Service does not exist. Create your service from skapi.com",{code:"NOT_EXISTS"})}});let g=oe();if(g&&!window.sessionStorage)throw this._alert("This browser is not supported."),new Error("This browser is not supported.");let m=g?JSON.parse(window.sessionStorage.getItem(`${e}#${r}`)||"null"):null;if(this.log("constructor:restore",m),m?.connection){for(let _ in m)this[_]=m[_];m.__public_identifier||(this.__public_identifier=`${this.service}:${this.owner}:${Ye(16)}`);}Ys.bind(this)(f),this.__authConnection=(async()=>{let _=await this.admin_endpoint,A={UserPoolId:_.userpool_id,ClientId:_.userpool_client};Pn()&&(A.Storage=window.localStorage),this.userPool=new vn(A);try{this.user||await re.bind(this)().getSession({skipUserUpdateEventTrigger:!0}),this.user&&(!m?.connection&&!c?Me.bind(this)():(f&&go.bind(this)(),this._runOnLoginListeners(this.user),this._runOnUserUpdateListeners(this.user)));}catch{}})();let y=`${this.service}/${this.owner}`,b=g?window.sessionStorage.getItem(`${y}:uniqueids`):null;if(b)try{let _=JSON.parse(b);this.__my_unique_ids=_&&typeof _=="object"&&!Array.isArray(_)?{[y]:_}:{};}catch{this.__my_unique_ids={};}this.__connection=(async()=>{let _=null;await this.record_endpoint,m?.connection||(_=this._updateConnection({refresh:u}));let A=()=>{if(this.__class_properties_has_been_cached)return;let S=()=>{let R={},N=["__startKeyHistory","__disabledAccount","__cached_requests","__request_signup_confirmation","__public_identifier","connection"];if(this.connection){for(let F of N)R[F]=this[F];if(f&&(R.__cached_requests={},R.__startKeyHistory={}),g){let F=`${e}#${r}`;try{window.sessionStorage.setItem(F,JSON.stringify(R));}catch{try{let x=Object.assign({},R,{__cached_requests:{},__startKeyHistory:{}});window.sessionStorage.setItem(F,JSON.stringify(x));}catch{try{window.sessionStorage.removeItem(F);}catch{}}}}this.__class_properties_has_been_cached=true;}};return _ instanceof Promise?_.then(()=>S()):S()};return g&&(window.addEventListener("beforeunload",()=>{this.closeRealtime(),A();}),window.addEventListener("visibilitychange",()=>{A();})),await _,await this.__authConnection,this.connection})(),this.__connection.then(_=>{((_?.group||0)<3||this.__network_logs)&&this.version();}).catch(()=>{});}get user(){return this.__user&&Object.keys(this.__user).length?JSON.parse(JSON.stringify(this.__user)):null}set user(e){}get onLogin(){return this._onLoginListeners}set onLogin(e){typeof e=="function"&&this._onLoginListeners.push(e);}get onUserUpdate(){return this._userProfileListeners}set onUserUpdate(e){typeof e=="function"&&this._userProfileListeners.push(e);}_runOnUserUpdateListeners(e){for(let r of this._userProfileListeners)typeof r=="function"&&r(e);}_runOnLoginListeners(e){for(let r of this._onLoginListeners)typeof r=="function"&&r(e);}get onBatchProcess(){return this._onBatchProcessListeners}set onBatchProcess(e){typeof e=="function"&&this._onBatchProcessListeners.push(e);}_alert(e){oe()&&typeof window.alert=="function"&&window.alert(e);}async getConnectionInfo(e){e?.refresh&&(this.__connection instanceof Promise&&await this.__connection,this.__connection=this._updateConnection({refresh:true}));let n=await this.__connection,i=n?.user_agent||(oe()&&typeof window.navigator?.userAgent=="string"?window.navigator.userAgent:`skapi-node/${globalThis?.process?.versions?.node||"unknown"}`);return {project_id:this.project_id,user_ip:n.ip,user_agent:i,user_location:n.locale,service_name:n.service_name,version:this.__version,service_description:n?.service_description||"",ai_agent:n?.ai_agent||"",conf:n?.opt}}async _updateConnection(e){let r=e?.refresh||false;try{this.connection=await I.bind(this)("service",{service:this.service,owner:this.owner,refresh:r},{bypassAwaitConnection:!0,method:"get"});}catch(n){throw this.log("connection fail",n),this._alert("Service is not available: "+(n.message||n.toString())),this.connection=null,n}return this.connection}async version(){if(await this.__connection,oe()){let r=`Built with:
218
+ Watch the video here: ${e.video}`}var T=class{constructor(e,r,n,i){this.__version="2.0.1";this.project_id="";this.session=null;this.connection=null;this.__my_unique_ids={};this.__uniqueIdsPersistTimer=null;this.userPool=null;this.__socket=null;this.__mediaStream=null;this.host="skapi";this.hostDomain="skapi.com";this.target_cdn="d3e9syvbtso631";this.customApiDomain="skapi.dev";this.requestBatchSize=30;this.__disabledAccount=null;this.__cached_requests={};this.__startKeyHistory={};this.__request_signup_confirmation=null;this.__private_access_key={};this.__class_properties_has_been_cached=false;this.__user=null;this._userProfileListeners=[];this._onLoginListeners=[];this._onBatchProcessListeners=[];this.validate={userId(e){try{return w.UserId(e),!0}catch{return false}},url(e){try{return w.Url(e),!0}catch{return false}},phoneNumber(e){try{return w.PhoneNumber(e),!0}catch{return false}},birthdate(e){try{return w.Birthdate(e),!0}catch{return false}},email(e){try{return w.Email(e),!0}catch{return false}},params(e,r,n){return w.Params(e,r,n)}};this.util={MD5:X,generateRandom:Ye,toBase62:Ts,fromBase62:_e,decodeProjectId:Un,formatServiceId:xn,extractFormData:j,terminatePendingRequests:ea,request:(e,r,n)=>I.bind(this)(e,r,n,{ignoreService:true})};this.__network_logs=false;this.__endpoint_version="v2";this.__public_identifier="";this.bearerToken="";this.registerTicket=ko.bind(this);this.unregisterTicket=Do.bind(this);if(!e||typeof e!="string")throw this._alert("Service ID is required."),new h("Service ID is required.",{code:"INVALID_PARAMETER"});let s=e.trim().toLowerCase().replace(/^<|>$/g,"").replace(/[\s_\-.]+/g,"");if(s==="serviceid"||s==="projectid")throw this._alert(`Replace "${e}" with your actual Project ID.`),new h("Project ID is required.",{code:"INVALID_PARAMETER"});let o=e.split("-").length;if(o===2||o===7)try{let _=Un(e);n&&typeof n=="object"&&(i=n),r&&typeof r=="object"&&(n=r),r=_.owner,e=_.service;}catch{throw this._alert("Service ID is invalid."),new h("Service ID is invalid.",{code:"INVALID_PARAMETER"})}if(!r||typeof r!="string")throw this._alert("Owner ID is invalid."),new h("Owner ID is invalid.",{code:"INVALID_PARAMETER"});if(r!==this.host)try{w.UserId(r,'"owner"');}catch{throw this._alert("Owner ID is invalid."),new h("Owner ID is invalid.",{code:"INVALID_PARAMETER"})}this.service=e,this.owner=r;try{this.project_id=xn(e,r);}catch{this.project_id="";}let c=true,u=false,f=null;if(n&&(typeof n.refetchServiceInfo=="boolean"&&(u=n.refetchServiceInfo),typeof n.autoLogin=="boolean"&&(c=n.autoLogin),n.encryption&&(f=Ys(n.encryption)),typeof n.requestBatchSize=="number")){if(n.requestBatchSize<1)throw new h('"requestBatchSize" must be greater than 0.',{code:"INVALID_PARAMETER"});this.requestBatchSize=n.requestBatchSize;}n?.eventListener&&typeof n.eventListener=="object"&&(n.eventListener?.onLogin&&typeof n.eventListener.onLogin=="function"&&(this.onLogin=n.eventListener.onLogin),n.eventListener?.onUserUpdate&&typeof n.eventListener.onUserUpdate=="function"&&(this.onUserUpdate=n.eventListener.onUserUpdate),n.eventListener?.onBatchProcess&&typeof n.eventListener.onBatchProcess=="function"&&(this.onBatchProcess=n.eventListener.onBatchProcess)),this.target_cdn=i?.target_cdn||this.target_cdn,this.hostDomain=i?.hostDomain||this.hostDomain,this.customApiDomain=i?.customApiDomain||this.customApiDomain,this.__network_logs=!!i?.network_logs;let d=`https://${this.target_cdn}.cloudfront.net`,p=e.substring(0,4);this.admin_endpoint=fetch(`${d}/${p}/admin-${this.__endpoint_version}.json`).then(_=>_.blob()).then(_=>new Promise((A,S)=>{let R=new FileReader;R.onloadend=()=>A(R.result),R.onerror=S,R.readAsDataURL(_);})).then(_=>{try{return typeof _=="string"?JSON.parse(atob(_.split(",")[1])):null}catch{throw new h("Service does not exist. Create your service from skapi.com",{code:"NOT_EXISTS"})}}),this.record_endpoint=fetch(`${d}/${p}/record-${this.__endpoint_version}.json`).then(_=>_.blob()).then(_=>new Promise((A,S)=>{let R=new FileReader;R.onloadend=()=>A(R.result),R.onerror=S,R.readAsDataURL(_);})).then(_=>{try{return typeof _=="string"?JSON.parse(atob(_.split(",")[1])):null}catch{throw new h("Service does not exist. Create your service from skapi.com",{code:"NOT_EXISTS"})}});let g=oe();if(g&&!window.sessionStorage)throw this._alert("This browser is not supported."),new Error("This browser is not supported.");let m=g?JSON.parse(window.sessionStorage.getItem(`${e}#${r}`)||"null"):null;if(this.log("constructor:restore",m),m?.connection){for(let _ in m)this[_]=m[_];m.__public_identifier||(this.__public_identifier=`${this.service}:${this.owner}:${Ye(16)}`);}zs.bind(this)(f),this.__authConnection=(async()=>{let _=await this.admin_endpoint,A={UserPoolId:_.userpool_id,ClientId:_.userpool_client};Pn()&&(A.Storage=window.localStorage),this.userPool=new vn(A);try{this.user||await re.bind(this)().getSession({skipUserUpdateEventTrigger:!0}),this.user&&(!m?.connection&&!c?Me.bind(this)():(f&&mo.bind(this)(),this._runOnLoginListeners(this.user),this._runOnUserUpdateListeners(this.user)));}catch{}})();let y=`${this.service}/${this.owner}`,b=g?window.sessionStorage.getItem(`${y}:uniqueids`):null;if(b)try{let _=JSON.parse(b);this.__my_unique_ids=_&&typeof _=="object"&&!Array.isArray(_)?{[y]:_}:{};}catch{this.__my_unique_ids={};}this.__connection=(async()=>{let _=null;await this.record_endpoint,m?.connection||(_=this._updateConnection({refresh:u}));let A=()=>{if(this.__class_properties_has_been_cached)return;let S=()=>{let R={},N=["__startKeyHistory","__disabledAccount","__cached_requests","__request_signup_confirmation","__public_identifier","connection"];if(this.connection){for(let F of N)R[F]=this[F];if(f&&(R.__cached_requests={},R.__startKeyHistory={}),g){let F=`${e}#${r}`;try{window.sessionStorage.setItem(F,JSON.stringify(R));}catch{try{let x=Object.assign({},R,{__cached_requests:{},__startKeyHistory:{}});window.sessionStorage.setItem(F,JSON.stringify(x));}catch{try{window.sessionStorage.removeItem(F);}catch{}}}}this.__class_properties_has_been_cached=true;}};return _ instanceof Promise?_.then(()=>S()):S()};return g&&(window.addEventListener("beforeunload",()=>{this.closeRealtime(),A();}),window.addEventListener("visibilitychange",()=>{A();})),await _,await this.__authConnection,this.connection})(),this.__connection.then(_=>{((_?.group||0)<3||this.__network_logs)&&this.version();}).catch(()=>{});}get user(){return this.__user&&Object.keys(this.__user).length?JSON.parse(JSON.stringify(this.__user)):null}set user(e){}get onLogin(){return this._onLoginListeners}set onLogin(e){typeof e=="function"&&this._onLoginListeners.push(e);}get onUserUpdate(){return this._userProfileListeners}set onUserUpdate(e){typeof e=="function"&&this._userProfileListeners.push(e);}_runOnUserUpdateListeners(e){for(let r of this._userProfileListeners)typeof r=="function"&&r(e);}_runOnLoginListeners(e){for(let r of this._onLoginListeners)typeof r=="function"&&r(e);}get onBatchProcess(){return this._onBatchProcessListeners}set onBatchProcess(e){typeof e=="function"&&this._onBatchProcessListeners.push(e);}_alert(e){oe()&&typeof window.alert=="function"&&window.alert(e);}async getConnectionInfo(e){e?.refresh&&(this.__connection instanceof Promise&&await this.__connection,this.__connection=this._updateConnection({refresh:true}));let n=await this.__connection,i=n?.user_agent||(oe()&&typeof window.navigator?.userAgent=="string"?window.navigator.userAgent:`skapi-node/${globalThis?.process?.versions?.node||"unknown"}`);return {project_id:this.project_id,user_ip:n.ip,user_agent:i,user_location:n.locale,service_name:n.service_name,version:this.__version,service_description:n?.service_description||"",ai_agent:n?.ai_agent||"",conf:n?.opt}}async _updateConnection(e){let r=e?.refresh||false;try{this.connection=await I.bind(this)("service",{service:this.service,owner:this.owner,refresh:r},{bypassAwaitConnection:!0,method:"get"});}catch(n){throw this.log("connection fail",n),this._alert("Service is not available: "+(n.message||n.toString())),this.connection=null,n}return this.connection}async version(){if(await this.__connection,oe()){let r=`Built with:
219
219
  %c\r
220
220
  $$\\ $$\\ \r
221
221
  $$ | \\__|\r
@@ -230,7 +230,7 @@ $$$$$$$ |$$ | \\$$\\\\$$$$$$$ |$$$$$$$ |$$ |\r
230
230
  \\__| \r
231
231
  Version: ${this.__version}
232
232
 
233
- Full Documentation: https://docs.skapi.com/skapi.md`;console.log(r,"font-family: monospace; color:blue;"),this.connection.group===1&&console.log("%cSKAPI: THE SERVICE IS IN TRIAL MODE.","font-family: monospace; color:red;");}return this.__version}log(e,r){if(this.__network_logs){if(r!==null&&typeof r=="object")try{oe()?r=JSON.parse(JSON.stringify(r)):r=JSON.stringify(r,null,2);}catch{r=String(r);}else typeof r=="string"&&r.length>100&&(r=r.substring(0,100)+"...");console.log(`%c${e}:`,"color: blue;",r);}}getFeed(e,r){return sc.bind(this)(e,r)}closeRTC(e){return Se.bind(this)(e)}connectRTC(e,r){return Ia.bind(this)(e,r)}connectRealtime(e){return Et.bind(this)(e)}spellcast(e){return Uc.bind(this)(e)}getspell(e){return xc.bind(this)(e)}dopamine(e){return Cc.bind(this)(e)}getUniqueId(e,r){return _a.bind(this)(e,r)}resendInvitation(e){return Sc.bind(this)(e)}cancelInvitation(e){return Ac.bind(this)(e)}getInvitations(e,r){return Ec.bind(this)(e,r)}openIdLogin(e){return No.bind(this)(e)}loginWithToken(e){return Oo.bind(this)(e)}clientSecretRequest(e){return za.bind(this)(e)}clientSecretRequestHistory(e,r){return Qa.bind(this)(e,r)}clientSecretRequestStream(e,r){return Za.bind(this)(e,r)}clientSecretRequestFinalize(e,r,n){return ec.bind(this)(e,r,n)}cancelClientSecretRequest(e){return Xa.bind(this)(e)}stopClientSecretPolling(e){return Ja.bind(this)(e||{})}isPollStopped(e){return Ma(e)}clientSecretRequestQueueCount(e){return Ya.bind(this)(e)}consumeTicket(e){return Po.bind(this)(e)}getConsumedTickets(e,r){return xo.bind(this)(e,r)}getTickets(e,r){return Uo.bind(this)(e,r)}closeRealtime(){return qr.bind(this)()}getRealtimeUsers(e,r){return Da.bind(this)(e,r)}sendInquiry(e){return tc.bind(this)(e)}blockAccount(e){return gc.bind(this)(e)}unblockAccount(e){return mc.bind(this)(e)}deleteAccount(e){return yc.bind(this)(e)}inviteUser(e,r){return _c.bind(this)(e,r)}createAccount(e){return bc.bind(this)(e)}grantAccess(e){return wc.bind(this)(e)}updateUserAttributes(e){return vc.bind(this)(e)}getRealtimeGroups(e,r){return Na.bind(this)(e,r)}postRealtime(e,r,n){return ka.bind(this)(e,r,n)}joinRealtime(e){return At.bind(this)(e)}getProfile(e){return Do.bind(this)(e)}getFile(e,r){return Xe.bind(this)(e,r)}secureRequest(e,r){return rc.bind(this)(e,r)}forwardRequest(e,r){return ic.bind(this)(e,r)}getFormResponse(){return ta.bind(this)()}getRecords(e,r){return fa.bind(this)(e,r)}getTables(e,r){return ga.bind(this)(e,r)}getIndexes(e,r){return ma.bind(this)(e,r)}getTags(e,r){return ya.bind(this)(e,r)}deleteRecords(e,r){return ba.bind(this)(e,r)}resendSignupConfirmation(){return Fo.bind(this)()}recoverAccount(e=false){return Lo.bind(this)(e)}getUsers(e,r){return Go.bind(this)(e,r)}disableAccount(){return qo.bind(this)()}lastVerifiedEmail(e){return Jo.bind(this)(e)}unsubscribeNewsletter(e){return hc.bind(this)(e)}subscribeNotification(e,r){return Rc.bind(this)({endpoint:e,keys:r})}unsubscribeNotification(e,r){return Tc.bind(this)({endpoint:e,keys:r})}vapidPublicKey(){return Ic.bind(this)()}pushNotification(e,r){return Pc.bind(this)(e,r)}getNewsletters(e,r){return pc.bind(this)(e,r)}getNewsletterSubscription(e,r){return dc.bind(this)(e,r)}requestUsernameChange(e){return Yo.bind(this)(e)}getEncryptionStatus(){return zs.bind(this)()}isWithheld(e){return jn.call(this,e)}unlockEncryption(e){return lo.bind(this)(e)}lockEncryption(e){return uo.bind(this)(e)}takeRecoveryCode(){return wo.bind(this)()}unlockWithRecoveryCode(e){return Eo.bind(this)(e)}regenerateRecoveryCode(){return Ao.bind(this)()}pinPeerKey(e){return _o.bind(this)(e)}grantPrivateRecordAccess(e){return wa.bind(this)(e)}removePrivateRecordAccess(e){return Ea.bind(this)(e)}listPrivateRecordAccess(e,r){return Aa.bind(this)(e,r)}requestPrivateRecordAccessKey(e){return Sa.bind(this)(e)}deleteFiles(e){return ca.bind(this)(e)}uploadFiles(e,r){return $t.bind(this)(e,r)}mock(e,r){return nc.bind(this)(e,r)}login(e){return ii.bind(this)(e)}logout(e){return Mt.bind(this)(e)}signup(e,r){return Mo.bind(this)(e,r)}resetPassword(e){return Vo.bind(this)(e)}verifyEmail(e,r){return Ko.bind(this)(e,r)}verifyPhoneNumber(e,r){return $o.bind(this)(e,r)}forgotPassword(e,r){return jo.bind(this)(e,r)}changePassword(e){return Ho.bind(this)(e)}updateProfile(e){return Wo.bind(this)(e)}postRecord(e,r,n){return di.bind(this)(e,r,n)}getSubscriptions(e,r){return oc.bind(this)(e,r)}subscribe(e){return ac.bind(this)(e)}unsubscribe(e){return cc.bind(this)(e)}blockSubscriber(e){return lc.bind(this)(e)}unblockSubscriber(e){return uc.bind(this)(e)}subscribeNewsletter(e){return fc.bind(this)(e)}bulkPostRecords(e){return pa.bind(this)(e)}};P([U()],T.prototype,"getFeed"),P([U()],T.prototype,"closeRTC"),P([U()],T.prototype,"connectRTC"),P([U()],T.prototype,"spellcast"),P([U()],T.prototype,"getspell"),P([U()],T.prototype,"dopamine"),P([U()],T.prototype,"getUniqueId"),P([U()],T.prototype,"resendInvitation"),P([U()],T.prototype,"cancelInvitation"),P([U()],T.prototype,"getInvitations"),P([U()],T.prototype,"openIdLogin"),P([U()],T.prototype,"loginWithToken"),P([U()],T.prototype,"clientSecretRequest"),P([U()],T.prototype,"clientSecretRequestHistory"),P([U()],T.prototype,"cancelClientSecretRequest"),P([U()],T.prototype,"consumeTicket"),P([U()],T.prototype,"getConsumedTickets"),P([U()],T.prototype,"getTickets"),P([U()],T.prototype,"getRealtimeUsers"),P([U()],T.prototype,"sendInquiry"),P([U()],T.prototype,"blockAccount"),P([U()],T.prototype,"unblockAccount"),P([U()],T.prototype,"deleteAccount"),P([U()],T.prototype,"inviteUser"),P([U()],T.prototype,"createAccount"),P([U()],T.prototype,"grantAccess"),P([U()],T.prototype,"updateUserAttributes"),P([U()],T.prototype,"getRealtimeGroups"),P([U()],T.prototype,"postRealtime"),P([U()],T.prototype,"joinRealtime"),P([U()],T.prototype,"getProfile"),P([U()],T.prototype,"getFile"),P([U()],T.prototype,"secureRequest"),P([U()],T.prototype,"forwardRequest"),P([U()],T.prototype,"getFormResponse"),P([U()],T.prototype,"getRecords"),P([U()],T.prototype,"getTables"),P([U()],T.prototype,"getIndexes"),P([U()],T.prototype,"getTags"),P([U()],T.prototype,"deleteRecords"),P([U()],T.prototype,"resendSignupConfirmation"),P([U()],T.prototype,"recoverAccount"),P([U()],T.prototype,"getUsers"),P([U()],T.prototype,"disableAccount"),P([U()],T.prototype,"lastVerifiedEmail"),P([U()],T.prototype,"unsubscribeNewsletter"),P([U()],T.prototype,"subscribeNotification"),P([U()],T.prototype,"unsubscribeNotification"),P([U()],T.prototype,"vapidPublicKey"),P([U()],T.prototype,"pushNotification"),P([U()],T.prototype,"getNewsletters"),P([U()],T.prototype,"getNewsletterSubscription"),P([U()],T.prototype,"requestUsernameChange"),P([U()],T.prototype,"unlockEncryption"),P([U()],T.prototype,"unlockWithRecoveryCode"),P([U()],T.prototype,"grantPrivateRecordAccess"),P([U()],T.prototype,"removePrivateRecordAccess"),P([U()],T.prototype,"listPrivateRecordAccess"),P([U()],T.prototype,"requestPrivateRecordAccessKey"),P([U()],T.prototype,"deleteFiles"),P([U()],T.prototype,"uploadFiles"),P([U()],T.prototype,"mock"),P([U({preventMultipleCalls:true})],T.prototype,"login"),P([U()],T.prototype,"logout"),P([U({preventMultipleCalls:true})],T.prototype,"signup"),P([U({preventMultipleCalls:true})],T.prototype,"resetPassword"),P([U({preventMultipleCalls:true})],T.prototype,"verifyEmail"),P([U({preventMultipleCalls:true})],T.prototype,"verifyPhoneNumber"),P([U({preventMultipleCalls:true})],T.prototype,"forgotPassword"),P([U({preventMultipleCalls:true})],T.prototype,"changePassword"),P([U({preventMultipleCalls:true})],T.prototype,"updateProfile"),P([U()],T.prototype,"postRecord"),P([U()],T.prototype,"getSubscriptions"),P([U()],T.prototype,"subscribe"),P([U()],T.prototype,"unsubscribe"),P([U()],T.prototype,"blockSubscriber"),P([U()],T.prototype,"unblockSubscriber"),P([U()],T.prototype,"subscribeNewsletter");var mi={};var Br=typeof globalThis<"u"?globalThis:void 0;Br&&(Br.Skapi=T,Br.SkapiError=h,Br.SkapiTypes=mi);/*! Bundled license information:
233
+ Full Documentation: https://docs.skapi.com/skapi.md`;console.log(r,"font-family: monospace; color:blue;"),this.connection.group===1&&console.log("%cSKAPI: THE SERVICE IS IN TRIAL MODE.","font-family: monospace; color:red;");}return this.__version}log(e,r){if(this.__network_logs){if(r!==null&&typeof r=="object")try{oe()?r=JSON.parse(JSON.stringify(r)):r=JSON.stringify(r,null,2);}catch{r=String(r);}else typeof r=="string"&&r.length>100&&(r=r.substring(0,100)+"...");console.log(`%c${e}:`,"color: blue;",r);}}getFeed(e,r){return oc.bind(this)(e,r)}closeRTC(e){return Se.bind(this)(e)}connectRTC(e,r){return Pa.bind(this)(e,r)}connectRealtime(e){return Et.bind(this)(e)}spellcast(e){return xc.bind(this)(e)}getspell(e){return Cc.bind(this)(e)}dopamine(e){return kc.bind(this)(e)}getUniqueId(e,r){return ba.bind(this)(e,r)}resendInvitation(e){return vc.bind(this)(e)}cancelInvitation(e){return Sc.bind(this)(e)}getInvitations(e,r){return Ac.bind(this)(e,r)}openIdLogin(e){return Oo.bind(this)(e)}loginWithToken(e){return Fo.bind(this)(e)}clientSecretRequest(e){return Qa.bind(this)(e)}clientSecretRequestHistory(e,r){return Xa.bind(this)(e,r)}clientSecretRequestStream(e,r){return ec.bind(this)(e,r)}clientSecretRequestFinalize(e,r,n){return tc.bind(this)(e,r,n)}cancelClientSecretRequest(e){return Za.bind(this)(e)}stopClientSecretPolling(e){return Ya.bind(this)(e||{})}isPollStopped(e){return qa(e)}clientSecretRequestQueueCount(e){return za.bind(this)(e)}consumeTicket(e){return Uo.bind(this)(e)}getConsumedTickets(e,r){return Co.bind(this)(e,r)}getTickets(e,r){return xo.bind(this)(e,r)}closeRealtime(){return qr.bind(this)()}getRealtimeUsers(e,r){return Na.bind(this)(e,r)}sendInquiry(e){return rc.bind(this)(e)}blockAccount(e){return mc.bind(this)(e)}unblockAccount(e){return yc.bind(this)(e)}deleteAccount(e){return _c.bind(this)(e)}inviteUser(e,r){return bc.bind(this)(e,r)}createAccount(e){return wc.bind(this)(e)}grantAccess(e){return Ec.bind(this)(e)}updateUserAttributes(e){return Rc.bind(this)(e)}getRealtimeGroups(e,r){return Oa.bind(this)(e,r)}postRealtime(e,r,n){return Da.bind(this)(e,r,n)}joinRealtime(e){return At.bind(this)(e)}getProfile(e){return No.bind(this)(e)}getFile(e,r){return Xe.bind(this)(e,r)}secureRequest(e,r){return nc.bind(this)(e,r)}forwardRequest(e,r){return sc.bind(this)(e,r)}getFormResponse(){return ra.bind(this)()}getRecords(e,r){return ha.bind(this)(e,r)}getTables(e,r){return ma.bind(this)(e,r)}getIndexes(e,r){return ya.bind(this)(e,r)}getTags(e,r){return _a.bind(this)(e,r)}deleteRecords(e,r){return wa.bind(this)(e,r)}resendSignupConfirmation(){return Lo.bind(this)()}recoverAccount(e=false){return Mo.bind(this)(e)}getUsers(e,r){return Jo.bind(this)(e,r)}disableAccount(){return Vo.bind(this)()}lastVerifiedEmail(e){return Yo.bind(this)(e)}unsubscribeNewsletter(e){return pc.bind(this)(e)}subscribeNotification(e,r){return Tc.bind(this)({endpoint:e,keys:r})}unsubscribeNotification(e,r){return Ic.bind(this)({endpoint:e,keys:r})}vapidPublicKey(){return Pc.bind(this)()}pushNotification(e,r){return Uc.bind(this)(e,r)}getNewsletters(e,r){return gc.bind(this)(e,r)}getNewsletterSubscription(e,r){return fc.bind(this)(e,r)}requestUsernameChange(e){return zo.bind(this)(e)}getEncryptionStatus(){return Qs.bind(this)()}isWithheld(e){return jn.call(this,e)}unlockEncryption(e){return uo.bind(this)(e)}lockEncryption(e){return fo.bind(this)(e)}takeRecoveryCode(){return Eo.bind(this)()}unlockWithRecoveryCode(e){return Ao.bind(this)(e)}regenerateRecoveryCode(){return So.bind(this)()}pinPeerKey(e){return bo.bind(this)(e)}grantPrivateRecordAccess(e){return Ea.bind(this)(e)}removePrivateRecordAccess(e){return Aa.bind(this)(e)}listPrivateRecordAccess(e,r){return Sa.bind(this)(e,r)}requestPrivateRecordAccessKey(e){return va.bind(this)(e)}deleteFiles(e){return la.bind(this)(e)}uploadFiles(e,r){return $t.bind(this)(e,r)}mock(e,r){return ic.bind(this)(e,r)}login(e){return ii.bind(this)(e)}logout(e){return Mt.bind(this)(e)}signup(e,r){return qo.bind(this)(e,r)}resetPassword(e){return Bo.bind(this)(e)}verifyEmail(e,r){return jo.bind(this)(e,r)}verifyPhoneNumber(e,r){return Ko.bind(this)(e,r)}forgotPassword(e,r){return Ho.bind(this)(e,r)}changePassword(e){return Wo.bind(this)(e)}updateProfile(e){return Go.bind(this)(e)}postRecord(e,r,n){return di.bind(this)(e,r,n)}getSubscriptions(e,r){return ac.bind(this)(e,r)}subscribe(e){return cc.bind(this)(e)}unsubscribe(e){return lc.bind(this)(e)}blockSubscriber(e){return uc.bind(this)(e)}unblockSubscriber(e){return dc.bind(this)(e)}subscribeNewsletter(e){return hc.bind(this)(e)}bulkPostRecords(e){return ga.bind(this)(e)}};P([U()],T.prototype,"getFeed"),P([U()],T.prototype,"closeRTC"),P([U()],T.prototype,"connectRTC"),P([U()],T.prototype,"spellcast"),P([U()],T.prototype,"getspell"),P([U()],T.prototype,"dopamine"),P([U()],T.prototype,"getUniqueId"),P([U()],T.prototype,"resendInvitation"),P([U()],T.prototype,"cancelInvitation"),P([U()],T.prototype,"getInvitations"),P([U()],T.prototype,"openIdLogin"),P([U()],T.prototype,"loginWithToken"),P([U()],T.prototype,"clientSecretRequest"),P([U()],T.prototype,"clientSecretRequestHistory"),P([U()],T.prototype,"cancelClientSecretRequest"),P([U()],T.prototype,"consumeTicket"),P([U()],T.prototype,"getConsumedTickets"),P([U()],T.prototype,"getTickets"),P([U()],T.prototype,"getRealtimeUsers"),P([U()],T.prototype,"sendInquiry"),P([U()],T.prototype,"blockAccount"),P([U()],T.prototype,"unblockAccount"),P([U()],T.prototype,"deleteAccount"),P([U()],T.prototype,"inviteUser"),P([U()],T.prototype,"createAccount"),P([U()],T.prototype,"grantAccess"),P([U()],T.prototype,"updateUserAttributes"),P([U()],T.prototype,"getRealtimeGroups"),P([U()],T.prototype,"postRealtime"),P([U()],T.prototype,"joinRealtime"),P([U()],T.prototype,"getProfile"),P([U()],T.prototype,"getFile"),P([U()],T.prototype,"secureRequest"),P([U()],T.prototype,"forwardRequest"),P([U()],T.prototype,"getFormResponse"),P([U()],T.prototype,"getRecords"),P([U()],T.prototype,"getTables"),P([U()],T.prototype,"getIndexes"),P([U()],T.prototype,"getTags"),P([U()],T.prototype,"deleteRecords"),P([U()],T.prototype,"resendSignupConfirmation"),P([U()],T.prototype,"recoverAccount"),P([U()],T.prototype,"getUsers"),P([U()],T.prototype,"disableAccount"),P([U()],T.prototype,"lastVerifiedEmail"),P([U()],T.prototype,"unsubscribeNewsletter"),P([U()],T.prototype,"subscribeNotification"),P([U()],T.prototype,"unsubscribeNotification"),P([U()],T.prototype,"vapidPublicKey"),P([U()],T.prototype,"pushNotification"),P([U()],T.prototype,"getNewsletters"),P([U()],T.prototype,"getNewsletterSubscription"),P([U()],T.prototype,"requestUsernameChange"),P([U()],T.prototype,"unlockEncryption"),P([U()],T.prototype,"unlockWithRecoveryCode"),P([U()],T.prototype,"grantPrivateRecordAccess"),P([U()],T.prototype,"removePrivateRecordAccess"),P([U()],T.prototype,"listPrivateRecordAccess"),P([U()],T.prototype,"requestPrivateRecordAccessKey"),P([U()],T.prototype,"deleteFiles"),P([U()],T.prototype,"uploadFiles"),P([U()],T.prototype,"mock"),P([U({preventMultipleCalls:true})],T.prototype,"login"),P([U()],T.prototype,"logout"),P([U({preventMultipleCalls:true})],T.prototype,"signup"),P([U({preventMultipleCalls:true})],T.prototype,"resetPassword"),P([U({preventMultipleCalls:true})],T.prototype,"verifyEmail"),P([U({preventMultipleCalls:true})],T.prototype,"verifyPhoneNumber"),P([U({preventMultipleCalls:true})],T.prototype,"forgotPassword"),P([U({preventMultipleCalls:true})],T.prototype,"changePassword"),P([U({preventMultipleCalls:true})],T.prototype,"updateProfile"),P([U()],T.prototype,"postRecord"),P([U()],T.prototype,"getSubscriptions"),P([U()],T.prototype,"subscribe"),P([U()],T.prototype,"unsubscribe"),P([U()],T.prototype,"blockSubscriber"),P([U()],T.prototype,"unblockSubscriber"),P([U()],T.prototype,"subscribeNewsletter");var mi={};var Br=typeof globalThis<"u"?globalThis:void 0;Br&&(Br.Skapi=T,Br.SkapiError=h,Br.SkapiTypes=mi);/*! Bundled license information:
234
234
 
235
235
  ieee754/index.js:
236
236
  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)